summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-08-09 18:56:27 +0000
committerultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-08-09 18:56:27 +0000
commite35044d26d45bf7e9a4acc357be3738e3379f3e3 (patch)
tree5233ac4ef955794af13c8f928050a09f18fa3069
parentc10d6dd38c9fff3ea0ec335465b7f632d5b086db (diff)
downloadhercules-e35044d26d45bf7e9a4acc357be3738e3379f3e3.tar.gz
hercules-e35044d26d45bf7e9a4acc357be3738e3379f3e3.tar.bz2
hercules-e35044d26d45bf7e9a4acc357be3738e3379f3e3.tar.xz
hercules-e35044d26d45bf7e9a4acc357be3738e3379f3e3.zip
- stable -> trunk sync
- battle.c and pc.c formatting - fixed one badly defined npc shop format string - removed the "selling item for no buying price" warning when the item has a buying price of 20 (see topic:157465) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@10971 54d463be-8e91-2dee-dedb-b68131a5f0ec
-rw-r--r--runserver.bat81
-rw-r--r--src/common/mapindex.c2
-rw-r--r--src/common/mapindex.h1
-rw-r--r--src/map/battle.c704
-rw-r--r--src/map/map.c43
-rw-r--r--src/map/map.h2
-rw-r--r--src/map/npc.c21
-rw-r--r--src/map/pc.c320
-rw-r--r--src/map/script.c4
9 files changed, 546 insertions, 632 deletions
diff --git a/runserver.bat b/runserver.bat
index 8432a7f84..4fc66edc9 100644
--- a/runserver.bat
+++ b/runserver.bat
@@ -1,8 +1,75 @@
@echo off
-rem This is and auto-restart script for the eAthena Ragnarok Online Server Emulator.
-rem It will also keep the map server OPEN after it crashes to that errors may be
-rem more easily identified
-rem Writen by Jbain
-start cmd /k logserv.bat
-start cmd /k charserv.bat
-start cmd /k mapserv.bat
+
+rem ----- Configuration -----
+ rem Defines the server type (txt or sql).
+ set SERVER_TYPE=txt
+ rem Defines how long to wait before restarting (in seconds).
+ set SLEEP_TIME=15
+ rem Defines whether to run all servers in one window (yes or no).
+ set SINGLE_WINDOW=no
+rem ----- ------------- -----
+
+:L_Init
+ set this=%0
+ if %SERVER_TYPE% == txt set suffix=
+ if %SERVER_TYPE% == sql set suffix=_sql
+ if %SINGLE_WINDOW% == yes set wndswitch=/B
+
+:L_Main
+ set command=%1
+ if "%command%" == "" goto L_DefaultAction
+
+ if %command% == exec goto L_ExecServerExe
+ if %command% == start goto L_StartServerExe
+ if %command% == stop goto L_StopServerExe
+ if %command% == restart echo "TODO"
+ goto L_EOF
+
+:L_DefaultAction
+:L_StartServer
+ call %this% start login-server%suffix%.exe
+ call %this% start char-server%suffix%.exe
+ call %this% start map-server%suffix%.exe
+ goto L_EOF
+
+:L_StopServer
+ call %this% stop login-server%suffix%.exe
+ call %this% stop char-server%suffix%.exe
+ call %this% stop map-server%suffix%.exe
+ goto L_EOF
+
+:L_StartServerExe
+ set filename=%2
+ if "%filename%" == "" goto L_StartServer
+ if exist %filename% goto L_HaveExe
+ echo Cannot start '%filename%' because the file is missing!
+ goto L_EOF
+
+ :L_HaveExe
+ echo Starting %filename%...
+ start "%filename%" %wndswitch% %this% exec %filename%
+ goto L_EOF
+
+:L_StopServerExe
+ set filename=%2
+ if "%filename%" == "" goto L_StopServer
+ if exist %windir%\system32\taskkill.exe goto L_HaveTaskKill
+ echo The 'stop' command is not available on your system.
+ exit
+
+ :L_HaveTaskKill
+ rem CAUTION! This will kill all processes called %filename%.
+ echo Stopping '%filename%'...
+ taskkill /F /FI "WINDOWTITLE eq %filename% - %this% exec %filename%"
+ taskkill /F /IM "%filename%"
+ goto L_EOF
+
+:L_ExecServerExe
+ %filename%
+ echo .
+ echo .
+ echo Server exited, restarting in %SLEEP_TIME% seconds! Press CTRL+C to abort!
+ ping.exe -n %SLEEP_TIME% 127.0.0.1 > nul
+ goto L_ExecServerExe
+
+:L_EOF
diff --git a/src/common/mapindex.c b/src/common/mapindex.c
index a7f7aca5a..f169538f7 100644
--- a/src/common/mapindex.c
+++ b/src/common/mapindex.c
@@ -72,7 +72,7 @@ const char* mapindex_getmapname_ext(const char* string, char* output)
/// Adds a map to the specified index
/// Returns 1 if successful, 0 oherwise
-int mapindex_addmap(int index, const char* name)
+static int mapindex_addmap(int index, const char* name)
{
char map_name[MAP_NAME_LENGTH];
diff --git a/src/common/mapindex.h b/src/common/mapindex.h
index 0d2c0c46e..99e7de702 100644
--- a/src/common/mapindex.h
+++ b/src/common/mapindex.h
@@ -39,7 +39,6 @@ extern char mapindex_cfgfile[80];
const char* mapindex_getmapname(const char* string, char* output);
const char* mapindex_getmapname_ext(const char* string, char* output);
-int mapindex_addmap(int index, const char *name);
unsigned short mapindex_name2id(const char*);
const char* mapindex_id2name(unsigned short);
void mapindex_init(void);
diff --git a/src/map/battle.c b/src/map/battle.c
index 2b62f23b7..912aabd00 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -3318,367 +3318,365 @@ static const struct battle_data_short {
const char *str;
unsigned short *val;
} battle_data_short[] = { //List here battle_athena options which are type unsigned short!
- { "warp_point_debug", &battle_config.warp_point_debug },
- { "enable_critical", &battle_config.enable_critical },
- { "mob_critical_rate", &battle_config.mob_critical_rate },
- { "critical_rate", &battle_config.critical_rate },
- { "enable_baseatk", &battle_config.enable_baseatk },
- { "enable_perfect_flee", &battle_config.enable_perfect_flee },
- { "casting_rate", &battle_config.cast_rate },
- { "delay_rate", &battle_config.delay_rate },
- { "delay_dependon_dex", &battle_config.delay_dependon_dex },
- { "delay_dependon_agi", &battle_config.delay_dependon_agi },
- { "skill_delay_attack_enable", &battle_config.sdelay_attack_enable },
- { "left_cardfix_to_right", &battle_config.left_cardfix_to_right },
- { "skill_add_range", &battle_config.skill_add_range },
- { "skill_out_range_consume", &battle_config.skill_out_range_consume },
- { "skillrange_by_distance", &battle_config.skillrange_by_distance },
- { "skillrange_from_weapon", &battle_config.use_weapon_skill_range },
- { "player_damage_delay_rate", &battle_config.pc_damage_delay_rate },
- { "defunit_not_enemy", &battle_config.defnotenemy },
- { "gvg_traps_target_all", &battle_config.vs_traps_bctall },
- { "traps_setting", &battle_config.traps_setting },
- { "summon_flora_setting", &battle_config.summon_flora },
- { "clear_skills_on_death", &battle_config.clear_unit_ondeath },
- { "clear_skills_on_warp", &battle_config.clear_unit_onwarp },
- { "random_monster_checklv", &battle_config.random_monster_checklv },
- { "attribute_recover", &battle_config.attr_recover },
- { "item_auto_get", &battle_config.item_auto_get },
- { "drop_rate0item", &battle_config.drop_rate0item },
- { "pvp_exp", &battle_config.pvp_exp },
- { "gtb_sc_immunity", &battle_config.gtb_sc_immunity},
- { "guild_max_castles", &battle_config.guild_max_castles },
- { "emergency_call", &battle_config.emergency_call },
- { "guild_aura", &battle_config.guild_aura },
- { "death_penalty_type", &battle_config.death_penalty_type },
- { "death_penalty_base", &battle_config.death_penalty_base },
- { "death_penalty_job", &battle_config.death_penalty_job },
- { "restart_hp_rate", &battle_config.restart_hp_rate },
- { "restart_sp_rate", &battle_config.restart_sp_rate },
- { "mvp_hp_rate", &battle_config.mvp_hp_rate },
- { "monster_hp_rate", &battle_config.monster_hp_rate },
- { "monster_max_aspd", &battle_config.monster_max_aspd },
- { "view_range_rate", &battle_config.view_range_rate },
- { "chase_range_rate", &battle_config.chase_range_rate },
- { "atcommand_gm_only", &battle_config.atc_gmonly },
- { "atcommand_spawn_quantity_limit", &battle_config.atc_spawn_quantity_limit },
- { "atcommand_slave_clone_limit", &battle_config.atc_slave_clone_limit},
- { "partial_name_scan", &battle_config.partial_name_scan },
- { "gm_all_skill", &battle_config.gm_allskill },
- { "gm_all_equipment", &battle_config.gm_allequip },
- { "gm_skill_unconditional", &battle_config.gm_skilluncond },
- { "gm_join_chat", &battle_config.gm_join_chat },
- { "gm_kick_chat", &battle_config.gm_kick_chat },
- { "player_skillfree", &battle_config.skillfree },
- { "player_skillup_limit", &battle_config.skillup_limit },
- { "weapon_produce_rate", &battle_config.wp_rate },
- { "potion_produce_rate", &battle_config.pp_rate },
- { "monster_active_enable", &battle_config.monster_active_enable },
- { "monster_damage_delay_rate", &battle_config.monster_damage_delay_rate},
- { "monster_loot_type", &battle_config.monster_loot_type },
-// { "mob_skill_use", &battle_config.mob_skill_use }, //Deprecated
- { "mob_skill_rate", &battle_config.mob_skill_rate },
- { "mob_skill_delay", &battle_config.mob_skill_delay },
- { "mob_count_rate", &battle_config.mob_count_rate },
- { "mob_spawn_delay", &battle_config.mob_spawn_delay },
- { "no_spawn_on_player", &battle_config.no_spawn_on_player },
- { "force_random_spawn", &battle_config.force_random_spawn },
- { "plant_spawn_delay", &battle_config.plant_spawn_delay },
- { "boss_spawn_delay", &battle_config.boss_spawn_delay },
- { "slaves_inherit_mode", &battle_config.slaves_inherit_mode },
- { "slaves_inherit_speed", &battle_config.slaves_inherit_speed },
- { "summons_trigger_autospells", &battle_config.summons_trigger_autospells },
- { "pc_damage_walk_delay_rate", &battle_config.pc_walk_delay_rate },
- { "damage_walk_delay_rate", &battle_config.walk_delay_rate },
- { "multihit_delay", &battle_config.multihit_delay },
- { "quest_skill_learn", &battle_config.quest_skill_learn },
- { "quest_skill_reset", &battle_config.quest_skill_reset },
- { "basic_skill_check", &battle_config.basic_skill_check },
- { "guild_emperium_check", &battle_config.guild_emperium_check },
- { "guild_exp_limit", &battle_config.guild_exp_limit },
- { "player_invincible_time", &battle_config.pc_invincible_time },
- { "pet_catch_rate", &battle_config.pet_catch_rate },
- { "pet_rename", &battle_config.pet_rename },
- { "pet_friendly_rate", &battle_config.pet_friendly_rate },
- { "pet_hungry_delay_rate", &battle_config.pet_hungry_delay_rate },
- { "pet_hungry_friendly_decrease", &battle_config.pet_hungry_friendly_decrease},
- { "pet_status_support", &battle_config.pet_status_support },
- { "pet_attack_support", &battle_config.pet_attack_support },
- { "pet_damage_support", &battle_config.pet_damage_support },
- { "pet_support_min_friendly", &battle_config.pet_support_min_friendly },
- { "pet_support_rate", &battle_config.pet_support_rate },
- { "pet_attack_exp_to_master", &battle_config.pet_attack_exp_to_master },
- { "pet_attack_exp_rate", &battle_config.pet_attack_exp_rate },
- { "pet_lv_rate", &battle_config.pet_lv_rate }, //Skotlex
- { "pet_max_stats", &battle_config.pet_max_stats }, //Skotlex
- { "pet_max_atk1", &battle_config.pet_max_atk1 }, //Skotlex
- { "pet_max_atk2", &battle_config.pet_max_atk2 }, //Skotlex
- { "pet_disable_in_gvg", &battle_config.pet_no_gvg }, //Skotlex
- { "skill_min_damage", &battle_config.skill_min_damage },
- { "finger_offensive_type", &battle_config.finger_offensive_type },
- { "heal_exp", &battle_config.heal_exp },
- { "max_heal_lv", &battle_config.max_heal_lv },
- { "resurrection_exp", &battle_config.resurrection_exp },
- { "shop_exp", &battle_config.shop_exp },
- { "combo_delay_rate", &battle_config.combo_delay_rate },
- { "item_check", &battle_config.item_check },
- { "item_use_interval", &battle_config.item_use_interval },
- { "wedding_modifydisplay", &battle_config.wedding_modifydisplay },
- { "wedding_ignorepalette", &battle_config.wedding_ignorepalette }, //[Skotlex]
- { "xmas_ignorepalette", &battle_config.xmas_ignorepalette }, // [Valaris]
- { "natural_heal_weight_rate", &battle_config.natural_heal_weight_rate },
- { "arrow_decrement", &battle_config.arrow_decrement },
- { "max_aspd", &battle_config.max_aspd },
- { "max_walk_speed", &battle_config.max_walk_speed },
- { "max_lv", &battle_config.max_lv },
- { "aura_lv", &battle_config.aura_lv },
- { "max_parameter", &battle_config.max_parameter },
- { "max_baby_parameter", &battle_config.max_baby_parameter },
- { "max_def", &battle_config.max_def },
- { "over_def_bonus", &battle_config.over_def_bonus },
- { "skill_log", &battle_config.skill_log },
- { "battle_log", &battle_config.battle_log },
- { "save_log", &battle_config.save_log },
- { "error_log", &battle_config.error_log },
- { "etc_log", &battle_config.etc_log },
- { "save_clothcolor", &battle_config.save_clothcolor },
- { "undead_detect_type", &battle_config.undead_detect_type },
- { "auto_counter_type", &battle_config.auto_counter_type },
- { "min_hitrate", &battle_config.min_hitrate },
- { "max_hitrate", &battle_config.max_hitrate },
- { "agi_penalty_target", &battle_config.agi_penalty_target },
- { "agi_penalty_type", &battle_config.agi_penalty_type },
- { "agi_penalty_count", &battle_config.agi_penalty_count },
- { "agi_penalty_num", &battle_config.agi_penalty_num },
- { "agi_penalty_count_lv", &battle_config.agi_penalty_count_lv },
- { "vit_penalty_target", &battle_config.vit_penalty_target },
- { "vit_penalty_type", &battle_config.vit_penalty_type },
- { "vit_penalty_count", &battle_config.vit_penalty_count },
- { "vit_penalty_num", &battle_config.vit_penalty_num },
- { "vit_penalty_count_lv", &battle_config.vit_penalty_count_lv },
- { "weapon_defense_type", &battle_config.weapon_defense_type },
- { "magic_defense_type", &battle_config.magic_defense_type },
- { "skill_reiteration", &battle_config.skill_reiteration },
- { "skill_nofootset", &battle_config.skill_nofootset },
- { "player_cloak_check_type", &battle_config.pc_cloak_check_type },
- { "monster_cloak_check_type", &battle_config.monster_cloak_check_type },
- { "sense_type", &battle_config.estimation_type },
- { "gvg_short_attack_damage_rate", &battle_config.gvg_short_damage_rate },
- { "gvg_long_attack_damage_rate", &battle_config.gvg_long_damage_rate },
- { "gvg_weapon_attack_damage_rate", &battle_config.gvg_weapon_damage_rate },
- { "gvg_magic_attack_damage_rate", &battle_config.gvg_magic_damage_rate },
- { "gvg_misc_attack_damage_rate", &battle_config.gvg_misc_damage_rate },
- { "gvg_flee_penalty", &battle_config.gvg_flee_penalty },
- { "pk_short_attack_damage_rate", &battle_config.pk_short_damage_rate },
- { "pk_long_attack_damage_rate", &battle_config.pk_long_damage_rate },
- { "pk_weapon_attack_damage_rate", &battle_config.pk_weapon_damage_rate },
- { "pk_magic_attack_damage_rate", &battle_config.pk_magic_damage_rate },
- { "pk_misc_attack_damage_rate", &battle_config.pk_misc_damage_rate },
- { "mob_changetarget_byskill", &battle_config.mob_changetarget_byskill},
- { "attack_direction_change", &battle_config.attack_direction_change },
- { "land_skill_limit", &battle_config.land_skill_limit },
- { "party_skill_penalty", &battle_config.party_skill_penalty },
- { "monster_class_change_full_recover", &battle_config.monster_class_change_full_recover },
- { "produce_item_name_input", &battle_config.produce_item_name_input },
- { "display_skill_fail", &battle_config.display_skill_fail },
- { "chat_warpportal", &battle_config.chat_warpportal },
- { "mob_warp", &battle_config.mob_warp },
- { "dead_branch_active", &battle_config.dead_branch_active },
- { "show_steal_in_same_party", &battle_config.show_steal_in_same_party },
- { "party_hp_mode", &battle_config.party_hp_mode },
- { "show_party_share_picker", &battle_config.party_show_share_picker },
- { "party_update_interval", &battle_config.party_update_interval },
- { "party_item_share_type", &battle_config.party_share_type },
- { "attack_attr_none", &battle_config.attack_attr_none },
- { "gx_allhit", &battle_config.gx_allhit },
- { "gx_disptype", &battle_config.gx_disptype },
- { "devotion_level_difference", &battle_config.devotion_level_difference },
- { "player_skill_partner_check", &battle_config.player_skill_partner_check},
- { "hide_GM_session", &battle_config.hide_GM_session },
- { "invite_request_check", &battle_config.invite_request_check },
- { "skill_removetrap_type", &battle_config.skill_removetrap_type },
- { "disp_experience", &battle_config.disp_experience },
- { "disp_zeny", &battle_config.disp_zeny },
- { "castle_defense_rate", &battle_config.castle_defense_rate },
- { "hp_rate", &battle_config.hp_rate },
- { "sp_rate", &battle_config.sp_rate },
- { "gm_cant_drop_min_lv", &battle_config.gm_cant_drop_min_lv },
- { "gm_cant_drop_max_lv", &battle_config.gm_cant_drop_max_lv },
- { "disp_hpmeter", &battle_config.disp_hpmeter },
- { "bone_drop", &battle_config.bone_drop },
- { "buyer_name", &battle_config.buyer_name },
- { "skill_wall_check", &battle_config.skill_wall_check },
- { "cell_stack_limit", &battle_config.cell_stack_limit },
+ { "warp_point_debug", &battle_config.warp_point_debug },
+ { "enable_critical", &battle_config.enable_critical },
+ { "mob_critical_rate", &battle_config.mob_critical_rate },
+ { "critical_rate", &battle_config.critical_rate },
+ { "enable_baseatk", &battle_config.enable_baseatk },
+ { "enable_perfect_flee", &battle_config.enable_perfect_flee },
+ { "casting_rate", &battle_config.cast_rate },
+ { "delay_rate", &battle_config.delay_rate },
+ { "delay_dependon_dex", &battle_config.delay_dependon_dex },
+ { "delay_dependon_agi", &battle_config.delay_dependon_agi },
+ { "skill_delay_attack_enable", &battle_config.sdelay_attack_enable },
+ { "left_cardfix_to_right", &battle_config.left_cardfix_to_right },
+ { "skill_add_range", &battle_config.skill_add_range },
+ { "skill_out_range_consume", &battle_config.skill_out_range_consume },
+ { "skillrange_by_distance", &battle_config.skillrange_by_distance },
+ { "skillrange_from_weapon", &battle_config.use_weapon_skill_range },
+ { "player_damage_delay_rate", &battle_config.pc_damage_delay_rate },
+ { "defunit_not_enemy", &battle_config.defnotenemy },
+ { "gvg_traps_target_all", &battle_config.vs_traps_bctall },
+ { "traps_setting", &battle_config.traps_setting },
+ { "summon_flora_setting", &battle_config.summon_flora },
+ { "clear_skills_on_death", &battle_config.clear_unit_ondeath },
+ { "clear_skills_on_warp", &battle_config.clear_unit_onwarp },
+ { "random_monster_checklv", &battle_config.random_monster_checklv },
+ { "attribute_recover", &battle_config.attr_recover },
+ { "item_auto_get", &battle_config.item_auto_get },
+ { "drop_rate0item", &battle_config.drop_rate0item },
+ { "pvp_exp", &battle_config.pvp_exp },
+ { "gtb_sc_immunity", &battle_config.gtb_sc_immunity },
+ { "guild_max_castles", &battle_config.guild_max_castles },
+ { "emergency_call", &battle_config.emergency_call },
+ { "guild_aura", &battle_config.guild_aura },
+ { "death_penalty_type", &battle_config.death_penalty_type },
+ { "death_penalty_base", &battle_config.death_penalty_base },
+ { "death_penalty_job", &battle_config.death_penalty_job },
+ { "restart_hp_rate", &battle_config.restart_hp_rate },
+ { "restart_sp_rate", &battle_config.restart_sp_rate },
+ { "mvp_hp_rate", &battle_config.mvp_hp_rate },
+ { "monster_hp_rate", &battle_config.monster_hp_rate },
+ { "monster_max_aspd", &battle_config.monster_max_aspd },
+ { "view_range_rate", &battle_config.view_range_rate },
+ { "chase_range_rate", &battle_config.chase_range_rate },
+ { "atcommand_gm_only", &battle_config.atc_gmonly },
+ { "atcommand_spawn_quantity_limit", &battle_config.atc_spawn_quantity_limit },
+ { "atcommand_slave_clone_limit", &battle_config.atc_slave_clone_limit },
+ { "partial_name_scan", &battle_config.partial_name_scan },
+ { "gm_all_skill", &battle_config.gm_allskill },
+ { "gm_all_equipment", &battle_config.gm_allequip },
+ { "gm_skill_unconditional", &battle_config.gm_skilluncond },
+ { "gm_join_chat", &battle_config.gm_join_chat },
+ { "gm_kick_chat", &battle_config.gm_kick_chat },
+ { "player_skillfree", &battle_config.skillfree },
+ { "player_skillup_limit", &battle_config.skillup_limit },
+ { "weapon_produce_rate", &battle_config.wp_rate },
+ { "potion_produce_rate", &battle_config.pp_rate },
+ { "monster_active_enable", &battle_config.monster_active_enable },
+ { "monster_damage_delay_rate", &battle_config.monster_damage_delay_rate },
+ { "monster_loot_type", &battle_config.monster_loot_type },
+// { "mob_skill_use", &battle_config.mob_skill_use }, //Deprecated
+ { "mob_skill_rate", &battle_config.mob_skill_rate },
+ { "mob_skill_delay", &battle_config.mob_skill_delay },
+ { "mob_count_rate", &battle_config.mob_count_rate },
+ { "mob_spawn_delay", &battle_config.mob_spawn_delay },
+ { "no_spawn_on_player", &battle_config.no_spawn_on_player },
+ { "force_random_spawn", &battle_config.force_random_spawn },
+ { "plant_spawn_delay", &battle_config.plant_spawn_delay },
+ { "boss_spawn_delay", &battle_config.boss_spawn_delay },
+ { "slaves_inherit_mode", &battle_config.slaves_inherit_mode },
+ { "slaves_inherit_speed", &battle_config.slaves_inherit_speed },
+ { "summons_trigger_autospells", &battle_config.summons_trigger_autospells },
+ { "pc_damage_walk_delay_rate", &battle_config.pc_walk_delay_rate },
+ { "damage_walk_delay_rate", &battle_config.walk_delay_rate },
+ { "multihit_delay", &battle_config.multihit_delay },
+ { "quest_skill_learn", &battle_config.quest_skill_learn },
+ { "quest_skill_reset", &battle_config.quest_skill_reset },
+ { "basic_skill_check", &battle_config.basic_skill_check },
+ { "guild_emperium_check", &battle_config.guild_emperium_check },
+ { "guild_exp_limit", &battle_config.guild_exp_limit },
+ { "player_invincible_time", &battle_config.pc_invincible_time },
+ { "pet_catch_rate", &battle_config.pet_catch_rate },
+ { "pet_rename", &battle_config.pet_rename },
+ { "pet_friendly_rate", &battle_config.pet_friendly_rate },
+ { "pet_hungry_delay_rate", &battle_config.pet_hungry_delay_rate },
+ { "pet_hungry_friendly_decrease", &battle_config.pet_hungry_friendly_decrease },
+ { "pet_status_support", &battle_config.pet_status_support },
+ { "pet_attack_support", &battle_config.pet_attack_support },
+ { "pet_damage_support", &battle_config.pet_damage_support },
+ { "pet_support_min_friendly", &battle_config.pet_support_min_friendly },
+ { "pet_support_rate", &battle_config.pet_support_rate },
+ { "pet_attack_exp_to_master", &battle_config.pet_attack_exp_to_master },
+ { "pet_attack_exp_rate", &battle_config.pet_attack_exp_rate },
+ { "pet_lv_rate", &battle_config.pet_lv_rate }, //Skotlex
+ { "pet_max_stats", &battle_config.pet_max_stats }, //Skotlex
+ { "pet_max_atk1", &battle_config.pet_max_atk1 }, //Skotlex
+ { "pet_max_atk2", &battle_config.pet_max_atk2 }, //Skotlex
+ { "pet_disable_in_gvg", &battle_config.pet_no_gvg }, //Skotlex
+ { "skill_min_damage", &battle_config.skill_min_damage },
+ { "finger_offensive_type", &battle_config.finger_offensive_type },
+ { "heal_exp", &battle_config.heal_exp },
+ { "max_heal_lv", &battle_config.max_heal_lv },
+ { "resurrection_exp", &battle_config.resurrection_exp },
+ { "shop_exp", &battle_config.shop_exp },
+ { "combo_delay_rate", &battle_config.combo_delay_rate },
+ { "item_check", &battle_config.item_check },
+ { "item_use_interval", &battle_config.item_use_interval },
+ { "wedding_modifydisplay", &battle_config.wedding_modifydisplay },
+ { "wedding_ignorepalette", &battle_config.wedding_ignorepalette }, //[Skotlex]
+ { "xmas_ignorepalette", &battle_config.xmas_ignorepalette }, // [Valaris]
+ { "natural_heal_weight_rate", &battle_config.natural_heal_weight_rate },
+ { "arrow_decrement", &battle_config.arrow_decrement },
+ { "max_aspd", &battle_config.max_aspd },
+ { "max_walk_speed", &battle_config.max_walk_speed },
+ { "max_lv", &battle_config.max_lv },
+ { "aura_lv", &battle_config.aura_lv },
+ { "max_parameter", &battle_config.max_parameter },
+ { "max_baby_parameter", &battle_config.max_baby_parameter },
+ { "max_def", &battle_config.max_def },
+ { "over_def_bonus", &battle_config.over_def_bonus },
+ { "skill_log", &battle_config.skill_log },
+ { "battle_log", &battle_config.battle_log },
+ { "save_log", &battle_config.save_log },
+ { "error_log", &battle_config.error_log },
+ { "etc_log", &battle_config.etc_log },
+ { "save_clothcolor", &battle_config.save_clothcolor },
+ { "undead_detect_type", &battle_config.undead_detect_type },
+ { "auto_counter_type", &battle_config.auto_counter_type },
+ { "min_hitrate", &battle_config.min_hitrate },
+ { "max_hitrate", &battle_config.max_hitrate },
+ { "agi_penalty_target", &battle_config.agi_penalty_target },
+ { "agi_penalty_type", &battle_config.agi_penalty_type },
+ { "agi_penalty_count", &battle_config.agi_penalty_count },
+ { "agi_penalty_num", &battle_config.agi_penalty_num },
+ { "agi_penalty_count_lv", &battle_config.agi_penalty_count_lv },
+ { "vit_penalty_target", &battle_config.vit_penalty_target },
+ { "vit_penalty_type", &battle_config.vit_penalty_type },
+ { "vit_penalty_count", &battle_config.vit_penalty_count },
+ { "vit_penalty_num", &battle_config.vit_penalty_num },
+ { "vit_penalty_count_lv", &battle_config.vit_penalty_count_lv },
+ { "weapon_defense_type", &battle_config.weapon_defense_type },
+ { "magic_defense_type", &battle_config.magic_defense_type },
+ { "skill_reiteration", &battle_config.skill_reiteration },
+ { "skill_nofootset", &battle_config.skill_nofootset },
+ { "player_cloak_check_type", &battle_config.pc_cloak_check_type },
+ { "monster_cloak_check_type", &battle_config.monster_cloak_check_type },
+ { "sense_type", &battle_config.estimation_type },
+ { "gvg_short_attack_damage_rate", &battle_config.gvg_short_damage_rate },
+ { "gvg_long_attack_damage_rate", &battle_config.gvg_long_damage_rate },
+ { "gvg_weapon_attack_damage_rate", &battle_config.gvg_weapon_damage_rate },
+ { "gvg_magic_attack_damage_rate", &battle_config.gvg_magic_damage_rate },
+ { "gvg_misc_attack_damage_rate", &battle_config.gvg_misc_damage_rate },
+ { "gvg_flee_penalty", &battle_config.gvg_flee_penalty },
+ { "pk_short_attack_damage_rate", &battle_config.pk_short_damage_rate },
+ { "pk_long_attack_damage_rate", &battle_config.pk_long_damage_rate },
+ { "pk_weapon_attack_damage_rate", &battle_config.pk_weapon_damage_rate },
+ { "pk_magic_attack_damage_rate", &battle_config.pk_magic_damage_rate },
+ { "pk_misc_attack_damage_rate", &battle_config.pk_misc_damage_rate },
+ { "mob_changetarget_byskill", &battle_config.mob_changetarget_byskill },
+ { "attack_direction_change", &battle_config.attack_direction_change },
+ { "land_skill_limit", &battle_config.land_skill_limit },
+ { "party_skill_penalty", &battle_config.party_skill_penalty },
+ { "monster_class_change_full_recover", &battle_config.monster_class_change_full_recover},
+ { "produce_item_name_input", &battle_config.produce_item_name_input },
+ { "display_skill_fail", &battle_config.display_skill_fail },
+ { "chat_warpportal", &battle_config.chat_warpportal },
+ { "mob_warp", &battle_config.mob_warp },
+ { "dead_branch_active", &battle_config.dead_branch_active },
+ { "show_steal_in_same_party", &battle_config.show_steal_in_same_party },
+ { "party_hp_mode", &battle_config.party_hp_mode },
+ { "show_party_share_picker", &battle_config.party_show_share_picker },
+ { "party_update_interval", &battle_config.party_update_interval },
+ { "party_item_share_type", &battle_config.party_share_type },
+ { "attack_attr_none", &battle_config.attack_attr_none },
+ { "gx_allhit", &battle_config.gx_allhit },
+ { "gx_disptype", &battle_config.gx_disptype },
+ { "devotion_level_difference", &battle_config.devotion_level_difference },
+ { "player_skill_partner_check", &battle_config.player_skill_partner_check },
+ { "hide_GM_session", &battle_config.hide_GM_session },
+ { "invite_request_check", &battle_config.invite_request_check },
+ { "skill_removetrap_type", &battle_config.skill_removetrap_type },
+ { "disp_experience", &battle_config.disp_experience },
+ { "disp_zeny", &battle_config.disp_zeny },
+ { "castle_defense_rate", &battle_config.castle_defense_rate },
+ { "hp_rate", &battle_config.hp_rate },
+ { "sp_rate", &battle_config.sp_rate },
+ { "gm_cant_drop_min_lv", &battle_config.gm_cant_drop_min_lv },
+ { "gm_cant_drop_max_lv", &battle_config.gm_cant_drop_max_lv },
+ { "disp_hpmeter", &battle_config.disp_hpmeter },
+ { "bone_drop", &battle_config.bone_drop },
+ { "buyer_name", &battle_config.buyer_name },
+ { "skill_wall_check", &battle_config.skill_wall_check },
+ { "cell_stack_limit", &battle_config.cell_stack_limit },
// eAthena additions
- { "item_logarithmic_drops", &battle_config.logarithmic_drops },
- { "item_drop_common_min", &battle_config.item_drop_common_min }, // Added by TyrNemesis^
- { "item_drop_common_max", &battle_config.item_drop_common_max },
- { "item_drop_equip_min", &battle_config.item_drop_equip_min },
- { "item_drop_equip_max", &battle_config.item_drop_equip_max },
- { "item_drop_card_min", &battle_config.item_drop_card_min },
- { "item_drop_card_max", &battle_config.item_drop_card_max },
- { "item_drop_mvp_min", &battle_config.item_drop_mvp_min },
- { "item_drop_mvp_max", &battle_config.item_drop_mvp_max }, // End Addition
- { "item_drop_heal_min", &battle_config.item_drop_heal_min },
- { "item_drop_heal_max", &battle_config.item_drop_heal_max },
- { "item_drop_use_min", &battle_config.item_drop_use_min },
- { "item_drop_use_max", &battle_config.item_drop_use_max },
- { "item_drop_add_min", &battle_config.item_drop_adddrop_min },
- { "item_drop_add_max", &battle_config.item_drop_adddrop_max },
- { "item_drop_treasure_min", &battle_config.item_drop_treasure_min },
- { "item_drop_treasure_max", &battle_config.item_drop_treasure_max },
- { "prevent_logout", &battle_config.prevent_logout }, // Added by RoVeRT
- { "alchemist_summon_reward", &battle_config.alchemist_summon_reward }, // [Valaris]
- { "drops_by_luk", &battle_config.drops_by_luk }, // [Valaris]
- { "drops_by_luk2", &battle_config.drops_by_luk2 }, // [Skotlex]
- { "equip_natural_break_rate", &battle_config.equip_natural_break_rate },
- { "equip_self_break_rate", &battle_config.equip_self_break_rate },
- { "equip_skill_break_rate", &battle_config.equip_skill_break_rate },
- { "pk_mode", &battle_config.pk_mode }, // [Valaris]
- { "pk_level_range", &battle_config.pk_level_range },
- { "manner_system", &battle_config.manner_system }, // [Komurka]
- { "pet_equip_required", &battle_config.pet_equip_required }, // [Valaris]
- { "multi_level_up", &battle_config.multi_level_up }, // [Valaris]
- { "max_exp_gain_rate", &battle_config.max_exp_gain_rate }, // [Skotlex]
- { "backstab_bow_penalty", &battle_config.backstab_bow_penalty },
- { "night_at_start", &battle_config.night_at_start }, // added by [Yor]
- { "show_mob_info", &battle_config.show_mob_info }, // [Valaris]
- { "hack_info_GM_level", &battle_config.hack_info_GM_level }, // added by [Yor]
- { "any_warp_GM_min_level", &battle_config.any_warp_GM_min_level }, // added by [Yor]
- { "packet_ver_flag", &battle_config.packet_ver_flag }, // added by [Yor]
- { "min_hair_style", &battle_config.min_hair_style }, // added by [MouseJstr]
- { "max_hair_style", &battle_config.max_hair_style }, // added by [MouseJstr]
- { "min_hair_color", &battle_config.min_hair_color }, // added by [MouseJstr]
- { "max_hair_color", &battle_config.max_hair_color }, // added by [MouseJstr]
- { "min_cloth_color", &battle_config.min_cloth_color }, // added by [MouseJstr]
- { "max_cloth_color", &battle_config.max_cloth_color }, // added by [MouseJstr]
- { "pet_hair_style", &battle_config.pet_hair_style }, // added by [Skotlex]
- { "castrate_dex_scale", &battle_config.castrate_dex_scale }, // added by [MouseJstr]
- { "area_size", &battle_config.area_size }, // added by [MouseJstr]
- { "zeny_from_mobs", &battle_config.zeny_from_mobs}, // [Valaris]
- { "mobs_level_up", &battle_config.mobs_level_up}, // [Valaris]
- { "mobs_level_up_exp_rate", &battle_config.mobs_level_up_exp_rate}, // [Valaris]
- { "pk_min_level", &battle_config.pk_min_level}, // [celest]
- { "skill_steal_type", &battle_config.skill_steal_type}, // [celest]
- { "skill_steal_rate", &battle_config.skill_steal_rate}, // [celest]
- { "skill_steal_max_tries", &battle_config.skill_steal_max_tries}, // [Lupus]
- { "motd_type", &battle_config.motd_type}, // [celest]
- { "finding_ore_rate", &battle_config.finding_ore_rate}, // [celest]
- { "exp_calc_type", &battle_config.exp_calc_type}, // [celest]
- { "exp_bonus_attacker", &battle_config.exp_bonus_attacker}, // [Skotlex]
- { "exp_bonus_max_attacker", &battle_config.exp_bonus_max_attacker}, // [Skotlex]
- { "min_skill_delay_limit", &battle_config.min_skill_delay_limit}, // [celest]
- { "default_skill_delay", &battle_config.default_skill_delay}, // [Skotlex]
- { "no_skill_delay", &battle_config.no_skill_delay}, // [Skotlex]
- { "attack_walk_delay", &battle_config.attack_walk_delay }, // [Skotlex]
- { "require_glory_guild", &battle_config.require_glory_guild}, // [celest]
- { "idle_no_share", &battle_config.idle_no_share}, // [celest], for a feature by [MouseJstr]
- { "party_even_share_bonus", &battle_config.party_even_share_bonus},
- { "delay_battle_damage", &battle_config.delay_battle_damage}, // [celest]
- { "hide_woe_damage", &battle_config.hide_woe_damage}, // [Skotlex]
- { "display_version", &battle_config.display_version}, // [Ancyker], for a feature by...?
- { "who_display_aid", &battle_config.who_display_aid}, // [Ancyker], for a feature by...?
- { "display_hallucination", &battle_config.display_hallucination}, // [Skotlex]
- { "use_statpoint_table", &battle_config.use_statpoint_table}, // [Skotlex]
- { "ignore_items_gender", &battle_config.ignore_items_gender}, // [Lupus]
- { "copyskill_restrict", &battle_config.copyskill_restrict}, // [Aru]
- { "berserk_cancels_buffs", &battle_config.berserk_cancels_buffs}, // [Aru]
-
- { "debuff_on_logout", &battle_config.debuff_on_logout},
- { "monster_ai", &battle_config.mob_ai},
- { "hom_setting", &battle_config.hom_setting},
- { "dynamic_mobs", &battle_config.dynamic_mobs},
- { "mob_remove_damaged", &battle_config.mob_remove_damaged},
- { "show_hp_sp_drain", &battle_config.show_hp_sp_drain}, // [Skotlex]
- { "show_hp_sp_gain", &battle_config.show_hp_sp_gain}, // [Skotlex]
- { "mob_npc_event_type", &battle_config.mob_npc_event_type},
- { "mob_clear_delay", &battle_config.mob_clear_delay}, // [Valaris]
- { "character_size", &battle_config.character_size}, // [Lupus]
- { "mob_max_skilllvl", &battle_config.mob_max_skilllvl}, // [Lupus]
- { "retaliate_to_master", &battle_config.retaliate_to_master}, // [Skotlex]
- { "rare_drop_announce", &battle_config.rare_drop_announce}, // [Lupus]
- { "firewall_hits_on_undead", &battle_config.firewall_hits_on_undead}, // [Skotlex]
- { "title_lvl1", &battle_config.title_lvl1}, // [Lupus]
- { "title_lvl2", &battle_config.title_lvl2}, // [Lupus]
- { "title_lvl3", &battle_config.title_lvl3}, // [Lupus]
- { "title_lvl4", &battle_config.title_lvl4}, // [Lupus]
- { "title_lvl5", &battle_config.title_lvl5}, // [Lupus]
- { "title_lvl6", &battle_config.title_lvl6}, // [Lupus]
- { "title_lvl7", &battle_config.title_lvl7}, // [Lupus]
- { "title_lvl8", &battle_config.title_lvl8}, // [Lupus]
-
- { "duel_allow_pvp", &battle_config.duel_allow_pvp}, // [LuzZza]
- { "duel_allow_gvg", &battle_config.duel_allow_gvg}, // [LuzZza]
- { "duel_allow_teleport", &battle_config.duel_allow_teleport}, // [LuzZza]
- { "duel_autoleave_when_die", &battle_config.duel_autoleave_when_die}, //[LuzZza]
- { "duel_time_interval", &battle_config.duel_time_interval}, // [LuzZza]
- { "duel_only_on_same_map", &battle_config.duel_only_on_same_map}, // [Toms]
- { "skip_teleport_lv1_menu", &battle_config.skip_teleport_lv1_menu}, // [LuzZza]
- { "allow_skill_without_day", &battle_config.allow_skill_without_day}, // [Komurka]
- { "allow_es_magic_player", &battle_config.allow_es_magic_pc },
- { "skill_caster_check", &battle_config.skill_caster_check },
- { "status_cast_cancel", &battle_config.sc_castcancel },
- { "pc_status_def_rate", &battle_config.pc_sc_def_rate },
- { "mob_status_def_rate", &battle_config.mob_sc_def_rate },
- { "pc_luk_status_def", &battle_config.pc_luk_sc_def },
- { "mob_luk_status_def", &battle_config.mob_luk_sc_def },
- { "pc_max_status_def", &battle_config.pc_max_sc_def },
- { "mob_max_status_def", &battle_config.mob_max_sc_def },
- { "sg_miracle_skill_ratio", &battle_config.sg_miracle_skill_ratio },
- { "sg_angel_skill_ratio", &battle_config.sg_angel_skill_ratio },
- { "autospell_stacking", &battle_config.autospell_stacking },
- { "override_mob_names", &battle_config.override_mob_names },
- { "min_chat_delay", &battle_config.min_chat_delay },
- { "friend_auto_add", &battle_config.friend_auto_add },
- { "hom_rename", &battle_config.hom_rename },
- { "homunculus_show_growth", &battle_config.homunculus_show_growth }, //[orn]
- { "homunculus_friendly_rate", &battle_config.homunculus_friendly_rate },
- { "vending_tax", &battle_config.vending_tax },
+ { "item_logarithmic_drops", &battle_config.logarithmic_drops },
+ { "item_drop_common_min", &battle_config.item_drop_common_min }, // Added by TyrNemesis^
+ { "item_drop_common_max", &battle_config.item_drop_common_max },
+ { "item_drop_equip_min", &battle_config.item_drop_equip_min },
+ { "item_drop_equip_max", &battle_config.item_drop_equip_max },
+ { "item_drop_card_min", &battle_config.item_drop_card_min },
+ { "item_drop_card_max", &battle_config.item_drop_card_max },
+ { "item_drop_mvp_min", &battle_config.item_drop_mvp_min },
+ { "item_drop_mvp_max", &battle_config.item_drop_mvp_max }, // End Addition
+ { "item_drop_heal_min", &battle_config.item_drop_heal_min },
+ { "item_drop_heal_max", &battle_config.item_drop_heal_max },
+ { "item_drop_use_min", &battle_config.item_drop_use_min },
+ { "item_drop_use_max", &battle_config.item_drop_use_max },
+ { "item_drop_add_min", &battle_config.item_drop_adddrop_min },
+ { "item_drop_add_max", &battle_config.item_drop_adddrop_max },
+ { "item_drop_treasure_min", &battle_config.item_drop_treasure_min },
+ { "item_drop_treasure_max", &battle_config.item_drop_treasure_max },
+ { "prevent_logout", &battle_config.prevent_logout }, // Added by RoVeRT
+ { "alchemist_summon_reward", &battle_config.alchemist_summon_reward }, // [Valaris]
+ { "drops_by_luk", &battle_config.drops_by_luk }, // [Valaris]
+ { "drops_by_luk2", &battle_config.drops_by_luk2 }, // [Skotlex]
+ { "equip_natural_break_rate", &battle_config.equip_natural_break_rate },
+ { "equip_self_break_rate", &battle_config.equip_self_break_rate },
+ { "equip_skill_break_rate", &battle_config.equip_skill_break_rate },
+ { "pk_mode", &battle_config.pk_mode }, // [Valaris]
+ { "pk_level_range", &battle_config.pk_level_range },
+ { "manner_system", &battle_config.manner_system }, // [Komurka]
+ { "pet_equip_required", &battle_config.pet_equip_required }, // [Valaris]
+ { "multi_level_up", &battle_config.multi_level_up }, // [Valaris]
+ { "max_exp_gain_rate", &battle_config.max_exp_gain_rate }, // [Skotlex]
+ { "backstab_bow_penalty", &battle_config.backstab_bow_penalty },
+ { "night_at_start", &battle_config.night_at_start }, // added by [Yor]
+ { "show_mob_info", &battle_config.show_mob_info }, // [Valaris]
+ { "hack_info_GM_level", &battle_config.hack_info_GM_level }, // added by [Yor]
+ { "any_warp_GM_min_level", &battle_config.any_warp_GM_min_level }, // added by [Yor]
+ { "packet_ver_flag", &battle_config.packet_ver_flag }, // added by [Yor]
+ { "min_hair_style", &battle_config.min_hair_style }, // added by [MouseJstr]
+ { "max_hair_style", &battle_config.max_hair_style }, // added by [MouseJstr]
+ { "min_hair_color", &battle_config.min_hair_color }, // added by [MouseJstr]
+ { "max_hair_color", &battle_config.max_hair_color }, // added by [MouseJstr]
+ { "min_cloth_color", &battle_config.min_cloth_color }, // added by [MouseJstr]
+ { "max_cloth_color", &battle_config.max_cloth_color }, // added by [MouseJstr]
+ { "pet_hair_style", &battle_config.pet_hair_style }, // added by [Skotlex]
+ { "castrate_dex_scale", &battle_config.castrate_dex_scale }, // added by [MouseJstr]
+ { "area_size", &battle_config.area_size }, // added by [MouseJstr]
+ { "zeny_from_mobs", &battle_config.zeny_from_mobs }, // [Valaris]
+ { "mobs_level_up", &battle_config.mobs_level_up }, // [Valaris]
+ { "mobs_level_up_exp_rate", &battle_config.mobs_level_up_exp_rate }, // [Valaris]
+ { "pk_min_level", &battle_config.pk_min_level }, // [celest]
+ { "skill_steal_type", &battle_config.skill_steal_type }, // [celest]
+ { "skill_steal_rate", &battle_config.skill_steal_rate }, // [celest]
+ { "skill_steal_max_tries", &battle_config.skill_steal_max_tries }, // [Lupus]
+ { "motd_type", &battle_config.motd_type }, // [celest]
+ { "finding_ore_rate", &battle_config.finding_ore_rate }, // [celest]
+ { "exp_calc_type", &battle_config.exp_calc_type }, // [celest]
+ { "exp_bonus_attacker", &battle_config.exp_bonus_attacker }, // [Skotlex]
+ { "exp_bonus_max_attacker", &battle_config.exp_bonus_max_attacker }, // [Skotlex]
+ { "min_skill_delay_limit", &battle_config.min_skill_delay_limit }, // [celest]
+ { "default_skill_delay", &battle_config.default_skill_delay }, // [Skotlex]
+ { "no_skill_delay", &battle_config.no_skill_delay }, // [Skotlex]
+ { "attack_walk_delay", &battle_config.attack_walk_delay }, // [Skotlex]
+ { "require_glory_guild", &battle_config.require_glory_guild }, // [celest]
+ { "idle_no_share", &battle_config.idle_no_share }, // [celest], for a feature by [MouseJstr]
+ { "party_even_share_bonus", &battle_config.party_even_share_bonus },
+ { "delay_battle_damage", &battle_config.delay_battle_damage }, // [celest]
+ { "hide_woe_damage", &battle_config.hide_woe_damage }, // [Skotlex]
+ { "display_version", &battle_config.display_version }, // [Ancyker], for a feature by...?
+ { "who_display_aid", &battle_config.who_display_aid }, // [Ancyker], for a feature by...?
+ { "display_hallucination", &battle_config.display_hallucination }, // [Skotlex]
+ { "use_statpoint_table", &battle_config.use_statpoint_table }, // [Skotlex]
+ { "ignore_items_gender", &battle_config.ignore_items_gender }, // [Lupus]
+ { "copyskill_restrict", &battle_config.copyskill_restrict }, // [Aru]
+ { "berserk_cancels_buffs", &battle_config.berserk_cancels_buffs }, // [Aru]
+ { "debuff_on_logout", &battle_config.debuff_on_logout },
+ { "monster_ai", &battle_config.mob_ai },
+ { "hom_setting", &battle_config.hom_setting },
+ { "dynamic_mobs", &battle_config.dynamic_mobs },
+ { "mob_remove_damaged", &battle_config.mob_remove_damaged },
+ { "show_hp_sp_drain", &battle_config.show_hp_sp_drain }, // [Skotlex]
+ { "show_hp_sp_gain", &battle_config.show_hp_sp_gain }, // [Skotlex]
+ { "mob_npc_event_type", &battle_config.mob_npc_event_type },
+ { "mob_clear_delay", &battle_config.mob_clear_delay }, // [Valaris]
+ { "character_size", &battle_config.character_size }, // [Lupus]
+ { "mob_max_skilllvl", &battle_config.mob_max_skilllvl }, // [Lupus]
+ { "retaliate_to_master", &battle_config.retaliate_to_master }, // [Skotlex]
+ { "rare_drop_announce", &battle_config.rare_drop_announce }, // [Lupus]
+ { "firewall_hits_on_undead", &battle_config.firewall_hits_on_undead }, // [Skotlex]
+ { "title_lvl1", &battle_config.title_lvl1 }, // [Lupus]
+ { "title_lvl2", &battle_config.title_lvl2 }, // [Lupus]
+ { "title_lvl3", &battle_config.title_lvl3 }, // [Lupus]
+ { "title_lvl4", &battle_config.title_lvl4 }, // [Lupus]
+ { "title_lvl5", &battle_config.title_lvl5 }, // [Lupus]
+ { "title_lvl6", &battle_config.title_lvl6 }, // [Lupus]
+ { "title_lvl7", &battle_config.title_lvl7 }, // [Lupus]
+ { "title_lvl8", &battle_config.title_lvl8 }, // [Lupus]
+ { "duel_allow_pvp", &battle_config.duel_allow_pvp }, // [LuzZza]
+ { "duel_allow_gvg", &battle_config.duel_allow_gvg }, // [LuzZza]
+ { "duel_allow_teleport", &battle_config.duel_allow_teleport }, // [LuzZza]
+ { "duel_autoleave_when_die", &battle_config.duel_autoleave_when_die }, //[LuzZza]
+ { "duel_time_interval", &battle_config.duel_time_interval }, // [LuzZza]
+ { "duel_only_on_same_map", &battle_config.duel_only_on_same_map }, // [Toms]
+ { "skip_teleport_lv1_menu", &battle_config.skip_teleport_lv1_menu }, // [LuzZza]
+ { "allow_skill_without_day", &battle_config.allow_skill_without_day }, // [Komurka]
+ { "allow_es_magic_player", &battle_config.allow_es_magic_pc },
+ { "skill_caster_check", &battle_config.skill_caster_check },
+ { "status_cast_cancel", &battle_config.sc_castcancel },
+ { "pc_status_def_rate", &battle_config.pc_sc_def_rate },
+ { "mob_status_def_rate", &battle_config.mob_sc_def_rate },
+ { "pc_luk_status_def", &battle_config.pc_luk_sc_def },
+ { "mob_luk_status_def", &battle_config.mob_luk_sc_def },
+ { "pc_max_status_def", &battle_config.pc_max_sc_def },
+ { "mob_max_status_def", &battle_config.mob_max_sc_def },
+ { "sg_miracle_skill_ratio", &battle_config.sg_miracle_skill_ratio },
+ { "sg_angel_skill_ratio", &battle_config.sg_angel_skill_ratio },
+ { "autospell_stacking", &battle_config.autospell_stacking },
+ { "override_mob_names", &battle_config.override_mob_names },
+ { "min_chat_delay", &battle_config.min_chat_delay },
+ { "friend_auto_add", &battle_config.friend_auto_add },
+ { "hom_rename", &battle_config.hom_rename },
+ { "homunculus_show_growth", &battle_config.homunculus_show_growth }, //[orn]
+ { "homunculus_friendly_rate", &battle_config.homunculus_friendly_rate },
+ { "vending_tax", &battle_config.vending_tax },
};
static const struct battle_data_int {
const char *str;
int *val;
} battle_data_int[] = { //List here battle_athena options which are type int!
- { "flooritem_lifetime", &battle_config.flooritem_lifetime },
- { "item_first_get_time", &battle_config.item_first_get_time },
- { "item_second_get_time", &battle_config.item_second_get_time },
- { "item_third_get_time", &battle_config.item_third_get_time },
- { "mvp_item_first_get_time", &battle_config.mvp_item_first_get_time },
- { "mvp_item_second_get_time", &battle_config.mvp_item_second_get_time },
- { "mvp_item_third_get_time", &battle_config.mvp_item_third_get_time },
- { "base_exp_rate", &battle_config.base_exp_rate },
- { "job_exp_rate", &battle_config.job_exp_rate },
- { "zeny_penalty", &battle_config.zeny_penalty },
- { "mvp_exp_rate", &battle_config.mvp_exp_rate },
- { "natural_healhp_interval", &battle_config.natural_healhp_interval },
- { "natural_healsp_interval", &battle_config.natural_healsp_interval },
- { "natural_heal_skill_interval", &battle_config.natural_heal_skill_interval},
- { "max_hp", &battle_config.max_hp },
- { "max_sp", &battle_config.max_sp },
- { "max_cart_weight", &battle_config.max_cart_weight },
- { "gvg_eliminate_time", &battle_config.gvg_eliminate_time },
- { "vending_max_value", &battle_config.vending_max_value },
+ { "flooritem_lifetime", &battle_config.flooritem_lifetime },
+ { "item_first_get_time", &battle_config.item_first_get_time },
+ { "item_second_get_time", &battle_config.item_second_get_time },
+ { "item_third_get_time", &battle_config.item_third_get_time },
+ { "mvp_item_first_get_time", &battle_config.mvp_item_first_get_time },
+ { "mvp_item_second_get_time", &battle_config.mvp_item_second_get_time },
+ { "mvp_item_third_get_time", &battle_config.mvp_item_third_get_time },
+ { "base_exp_rate", &battle_config.base_exp_rate },
+ { "job_exp_rate", &battle_config.job_exp_rate },
+ { "zeny_penalty", &battle_config.zeny_penalty },
+ { "mvp_exp_rate", &battle_config.mvp_exp_rate },
+ { "natural_healhp_interval", &battle_config.natural_healhp_interval },
+ { "natural_healsp_interval", &battle_config.natural_healsp_interval },
+ { "natural_heal_skill_interval", &battle_config.natural_heal_skill_interval },
+ { "max_hp", &battle_config.max_hp },
+ { "max_sp", &battle_config.max_sp },
+ { "max_cart_weight", &battle_config.max_cart_weight },
+ { "gvg_eliminate_time", &battle_config.gvg_eliminate_time },
+ { "vending_max_value", &battle_config.vending_max_value },
// eAthena additions
- { "item_rate_mvp", &battle_config.item_rate_mvp },
- { "item_rate_common", &battle_config.item_rate_common }, // Added by RoVeRT
- { "item_rate_common_boss", &battle_config.item_rate_common_boss }, // [Reddozen]
- { "item_rate_equip", &battle_config.item_rate_equip },
- { "item_rate_equip_boss", &battle_config.item_rate_equip_boss }, // [Reddozen]
- { "item_rate_card", &battle_config.item_rate_card }, // End Addition
- { "item_rate_card_boss", &battle_config.item_rate_card_boss }, // [Reddozen]
- { "item_rate_heal", &battle_config.item_rate_heal }, // Added by Valaris
- { "item_rate_heal_boss", &battle_config.item_rate_heal_boss }, // [Reddozen]
- { "item_rate_use", &battle_config.item_rate_use }, // End
- { "item_rate_use_boss", &battle_config.item_rate_use_boss }, // [Reddozen]
- { "item_rate_adddrop", &battle_config.item_rate_adddrop }, // End
- { "item_rate_treasure", &battle_config.item_rate_treasure }, // End
- { "day_duration", &battle_config.day_duration }, // added by [Yor]
- { "night_duration", &battle_config.night_duration }, // added by [Yor]
- { "max_heal", &battle_config.max_heal },
- { "mob_remove_delay", &battle_config.mob_remove_delay },
- { "sg_miracle_skill_duration", &battle_config.sg_miracle_skill_duration },
- { "hvan_explosion_intimate", &battle_config.hvan_explosion_intimate }, //[orn]
+ { "item_rate_mvp", &battle_config.item_rate_mvp },
+ { "item_rate_common", &battle_config.item_rate_common }, // Added by RoVeRT
+ { "item_rate_common_boss", &battle_config.item_rate_common_boss }, // [Reddozen]
+ { "item_rate_equip", &battle_config.item_rate_equip },
+ { "item_rate_equip_boss", &battle_config.item_rate_equip_boss }, // [Reddozen]
+ { "item_rate_card", &battle_config.item_rate_card }, // End Addition
+ { "item_rate_card_boss", &battle_config.item_rate_card_boss }, // [Reddozen]
+ { "item_rate_heal", &battle_config.item_rate_heal }, // Added by Valaris
+ { "item_rate_heal_boss", &battle_config.item_rate_heal_boss }, // [Reddozen]
+ { "item_rate_use", &battle_config.item_rate_use }, // End
+ { "item_rate_use_boss", &battle_config.item_rate_use_boss }, // [Reddozen]
+ { "item_rate_adddrop", &battle_config.item_rate_adddrop }, // End
+ { "item_rate_treasure", &battle_config.item_rate_treasure }, // End
+ { "day_duration", &battle_config.day_duration }, // added by [Yor]
+ { "night_duration", &battle_config.night_duration }, // added by [Yor]
+ { "max_heal", &battle_config.max_heal },
+ { "mob_remove_delay", &battle_config.mob_remove_delay },
+ { "sg_miracle_skill_duration", &battle_config.sg_miracle_skill_duration },
+ { "hvan_explosion_intimate", &battle_config.hvan_explosion_intimate }, //[orn]
};
int battle_set_value(const char* w1, const char* w2)
diff --git a/src/map/map.c b/src/map/map.c
index bec53c20b..566915a3c 100644
--- a/src/map/map.c
+++ b/src/map/map.c
@@ -2470,8 +2470,7 @@ int map_addmap(char* mapname)
}
if (map_num >= MAX_MAP_PER_SERVER - 1) {
- ShowError("Could not add map '"
- CL_WHITE"%s"CL_RESET"', the limit of maps has been reached.\n",mapname);
+ ShowError("Could not add map '"CL_WHITE"%s"CL_RESET"', the limit of maps has been reached.\n",mapname);
return 1;
}
@@ -2487,7 +2486,7 @@ static void map_delmapid(int id)
map_num--;
}
-int map_delmap(char *mapname)
+int map_delmap(char* mapname)
{
int i;
@@ -2497,7 +2496,7 @@ int map_delmap(char *mapname)
}
for(i = 0; i < map_num; i++) {
- if (strcmp(map[i].name, mapname) == 0) {
+ if (strcmp(map[i].name, mapname) <= 0) {
map_delmapid(i);
return 1;
}
@@ -2507,45 +2506,28 @@ int map_delmap(char *mapname)
#define NO_WATER 1000000
-/* map_readwaterheight
+/*
* Reads from the .rsw for each map
- * Returns water height (or NO_WATER if file doesn't exist)
- * or other error is encountered.
- * This receives a map-name, and changes the extension to rsw if it isn't set already.
+ * Returns water height (or NO_WATER if file doesn't exist) or other error is encountered.
* Assumed path for file is data/mapname.rsw
* Credits to LittleWolf
*/
-int map_waterheight(char *mapname)
+int map_waterheight(char* mapname)
{
char fn[256];
char *rsw, *found;
- float whtemp;
- int wh;
//Look up for the rsw
- if(!strstr(mapname,"data\\"))
- sprintf(fn,"data\\%s.rsw", mapname);
- else
- strcpy(fn, mapname);
+ sprintf(fn,"data\\%s.rsw", mapname);
found = grfio_find_file(fn);
- if (!found)
- ; //Stick to the current fn
- else if(!strstr(found,"data\\"))
- sprintf(fn,"data\\%s.rsw", found);
- else
- strcpy(fn, found);
+ if (found) strcpy(fn, found);
- rsw = strstr(fn, ".");
- if (rsw && strstr(fn, ".rsw") == NULL)
- sprintf(rsw,".rsw");
// read & convert fn
- // again, might not need to be unsigned char
rsw = (char *) grfio_read (fn);
if (rsw)
{ //Load water height from file
- whtemp = *(float*)(rsw+166);
- wh = (int) whtemp;
+ int wh = (int) *(float*)(rsw+166);
aFree(rsw);
return wh;
}
@@ -2556,17 +2538,16 @@ int map_waterheight(char *mapname)
/*==================================
* .GAT format
*----------------------------------*/
-int map_readgat (struct map_data *m)
+int map_readgat (struct map_data* m)
{
char fn[256];
char *gat;
int wh,x,y,xs,ys;
struct gat_1cell {float high[4]; int type;} *p = NULL;
- sprintf(fn,"data\\%s.gat",m->name);
+ sprintf(fn, "data\\%s.gat", m->name);
// read & convert fn
- // again, might not need to be unsigned char
gat = (char *) grfio_read (fn);
if (gat == NULL)
return 0;
@@ -2619,7 +2600,7 @@ int map_readallmaps (void)
size_t size;
// show progress
- if(j != lasti || last_time != time(0))
+ if (j != lasti || last_time != time(0))
{
char progress[21] = " ";
char c = '-';
diff --git a/src/map/map.h b/src/map/map.h
index 745e2013c..84f9ed27e 100644
--- a/src/map/map.h
+++ b/src/map/map.h
@@ -1380,7 +1380,7 @@ unsigned int distance(int dx, int dy);
int cleanup_sub(struct block_list *bl, va_list ap);
void map_helpscreen(int flag); // [Valaris]
-int map_delmap(char *mapname);
+int map_delmap(char* mapname);
int map_addmobtolist(unsigned short m, struct spawn_data *spawn); // [Wizputer]
void map_spawnmobs(int); // [Wizputer]
diff --git a/src/map/npc.c b/src/map/npc.c
index 8c3a2f78e..f8b095b4f 100644
--- a/src/map/npc.c
+++ b/src/map/npc.c
@@ -1694,26 +1694,25 @@ static int npc_parse_shop(char* w1, char* w2, char* w3, char* w4)
#define MAX_SHOPITEM 100
char *p;
int x, y, dir, m, pos = 0;
- char mapname[MAP_NAME_LENGTH_EXT];
struct npc_data *nd;
if (strcmp(w1, "-") == 0) {
x = 0; y = 0; dir = 0; m = -1;
} else {
// 引数の個数チェック
- if (sscanf(w1, "%15[^,],%d,%d,%d", mapname, &x, &y, &dir) != 4 ||
- strchr(w4, ',') == NULL) {
+ char mapname[MAP_NAME_LENGTH_EXT];
+ if (sscanf(w1, "%15[^,],%d,%d,%d", mapname, &x, &y, &dir) < 4 || strchr(w4, ',') == NULL) {
ShowError("bad shop line : %s\n", w3);
return 1;
}
m = map_mapname2mapid(mapname);
}
- nd = (struct npc_data *) aCalloc (1, sizeof(struct npc_data) +
- sizeof(nd->u.shop_item[0]) * (MAX_SHOPITEM + 1));
+ nd = (struct npc_data *) aCalloc (1, sizeof(struct npc_data) + sizeof(nd->u.shop_item[0]) * (MAX_SHOPITEM + 1));
p = strchr(w4, ',');
- while (p && pos < MAX_SHOPITEM) {
+ while (p && pos < MAX_SHOPITEM)
+ {
int nameid, value;
struct item_data *id;
p++;
@@ -1722,12 +1721,7 @@ static int npc_parse_shop(char* w1, char* w2, char* w3, char* w4)
nd->u.shop_item[pos].nameid = nameid;
id = itemdb_search(nameid);
if (value < 0)
- {
- if (id->value_buy == 20)
- ShowWarning ("Selling item %s [%d] with no buying price (defaults to %d) at %s\n",
- id->name, id->nameid, id->value_buy, current_file);
value = id->value_buy;
- }
nd->u.shop_item[pos].value = value;
// check for bad prices that can possibly cause exploits
if (value/124. < id->value_sell/75.) { //Clened up formula to prevent overflows.
@@ -1762,8 +1756,7 @@ static int npc_parse_shop(char* w1, char* w2, char* w3, char* w4)
nd->class_ = m==-1?-1:atoi(w4);
nd->speed = 200;
- nd = (struct npc_data *)aRealloc(nd,
- sizeof(struct npc_data) + sizeof(nd->u.shop_item[0]) * pos);
+ nd = (struct npc_data *)aRealloc(nd, sizeof(struct npc_data) + sizeof(nd->u.shop_item[0]) * pos);
npc_shop++;
nd->bl.type = BL_NPC;
@@ -2731,7 +2724,7 @@ static int npc_parse_mapcell(char* w1, char* w2, char* w3, char* w4)
if (m < 0)
return 1;
- if (sscanf(w3, "%23[^,],%d,%d,%d,%d", type, &x0, &y0, &x1, &y1) < 4) {
+ if (sscanf(w3, "%23[^,],%d,%d,%d,%d", type, &x0, &y0, &x1, &y1) < 5) {
ShowError("Bad setcell line : %s\n",w3);
return 1;
}
diff --git a/src/map/pc.c b/src/map/pc.c
index 4aa3c622e..0f69486a9 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -3761,146 +3761,80 @@ int pc_jobid2mapid(unsigned short b_class)
int pc_mapid2jobid(unsigned short class_, int sex)
{
switch(class_) {
- case MAPID_NOVICE:
- return JOB_NOVICE;
- case MAPID_SWORDMAN:
- return JOB_SWORDMAN;
- case MAPID_MAGE:
- return JOB_MAGE;
- case MAPID_ARCHER:
- return JOB_ARCHER;
- case MAPID_ACOLYTE:
- return JOB_ACOLYTE;
- case MAPID_MERCHANT:
- return JOB_MERCHANT;
- case MAPID_THIEF:
- return JOB_THIEF;
- case MAPID_TAEKWON:
- return JOB_TAEKWON;
- case MAPID_WEDDING:
- return JOB_WEDDING;
- case MAPID_GUNSLINGER:
- return JOB_GUNSLINGER;
- case MAPID_NINJA:
- return JOB_NINJA;
- case MAPID_XMAS: // [Valaris]
- return JOB_XMAS;
+ case MAPID_NOVICE: return JOB_NOVICE;
+ case MAPID_SWORDMAN: return JOB_SWORDMAN;
+ case MAPID_MAGE: return JOB_MAGE;
+ case MAPID_ARCHER: return JOB_ARCHER;
+ case MAPID_ACOLYTE: return JOB_ACOLYTE;
+ case MAPID_MERCHANT: return JOB_MERCHANT;
+ case MAPID_THIEF: return JOB_THIEF;
+ case MAPID_TAEKWON: return JOB_TAEKWON;
+ case MAPID_WEDDING: return JOB_WEDDING;
+ case MAPID_GUNSLINGER: return JOB_GUNSLINGER;
+ case MAPID_NINJA: return JOB_NINJA;
+ case MAPID_XMAS: return JOB_XMAS;
//2_1 classes
- case MAPID_SUPER_NOVICE:
- return JOB_SUPER_NOVICE;
- case MAPID_KNIGHT:
- return JOB_KNIGHT;
- case MAPID_WIZARD:
- return JOB_WIZARD;
- case MAPID_HUNTER:
- return JOB_HUNTER;
- case MAPID_PRIEST:
- return JOB_PRIEST;
- case MAPID_BLACKSMITH:
- return JOB_BLACKSMITH;
- case MAPID_ASSASSIN:
- return JOB_ASSASSIN;
- case MAPID_STAR_GLADIATOR:
- return JOB_STAR_GLADIATOR;
+ case MAPID_SUPER_NOVICE: return JOB_SUPER_NOVICE;
+ case MAPID_KNIGHT: return JOB_KNIGHT;
+ case MAPID_WIZARD: return JOB_WIZARD;
+ case MAPID_HUNTER: return JOB_HUNTER;
+ case MAPID_PRIEST: return JOB_PRIEST;
+ case MAPID_BLACKSMITH: return JOB_BLACKSMITH;
+ case MAPID_ASSASSIN: return JOB_ASSASSIN;
+ case MAPID_STAR_GLADIATOR: return JOB_STAR_GLADIATOR;
//2_2 classes
- case MAPID_CRUSADER:
- return JOB_CRUSADER;
- case MAPID_SAGE:
- return JOB_SAGE;
- case MAPID_BARDDANCER:
- return sex?JOB_BARD:JOB_DANCER;
- case MAPID_MONK:
- return JOB_MONK;
- case MAPID_ALCHEMIST:
- return JOB_ALCHEMIST;
- case MAPID_ROGUE:
- return JOB_ROGUE;
- case MAPID_SOUL_LINKER:
- return JOB_SOUL_LINKER;
+ case MAPID_CRUSADER: return JOB_CRUSADER;
+ case MAPID_SAGE: return JOB_SAGE;
+ case MAPID_BARDDANCER: return sex?JOB_BARD:JOB_DANCER;
+ case MAPID_MONK: return JOB_MONK;
+ case MAPID_ALCHEMIST: return JOB_ALCHEMIST;
+ case MAPID_ROGUE: return JOB_ROGUE;
+ case MAPID_SOUL_LINKER: return JOB_SOUL_LINKER;
//1-1: advanced
- case MAPID_NOVICE_HIGH:
- return JOB_NOVICE_HIGH;
- case MAPID_SWORDMAN_HIGH:
- return JOB_SWORDMAN_HIGH;
- case MAPID_MAGE_HIGH:
- return JOB_MAGE_HIGH;
- case MAPID_ARCHER_HIGH:
- return JOB_ARCHER_HIGH;
- case MAPID_ACOLYTE_HIGH:
- return JOB_ACOLYTE_HIGH;
- case MAPID_MERCHANT_HIGH:
- return JOB_MERCHANT_HIGH;
- case MAPID_THIEF_HIGH:
- return JOB_THIEF_HIGH;
+ case MAPID_NOVICE_HIGH: return JOB_NOVICE_HIGH;
+ case MAPID_SWORDMAN_HIGH: return JOB_SWORDMAN_HIGH;
+ case MAPID_MAGE_HIGH: return JOB_MAGE_HIGH;
+ case MAPID_ARCHER_HIGH: return JOB_ARCHER_HIGH;
+ case MAPID_ACOLYTE_HIGH: return JOB_ACOLYTE_HIGH;
+ case MAPID_MERCHANT_HIGH: return JOB_MERCHANT_HIGH;
+ case MAPID_THIEF_HIGH: return JOB_THIEF_HIGH;
//2_1 advanced
- case MAPID_LORD_KNIGHT:
- return JOB_LORD_KNIGHT;
- case MAPID_HIGH_WIZARD:
- return JOB_HIGH_WIZARD;
- case MAPID_SNIPER:
- return JOB_SNIPER;
- case MAPID_HIGH_PRIEST:
- return JOB_HIGH_PRIEST;
- case MAPID_WHITESMITH:
- return JOB_WHITESMITH;
- case MAPID_ASSASSIN_CROSS:
- return JOB_ASSASSIN_CROSS;
+ case MAPID_LORD_KNIGHT: return JOB_LORD_KNIGHT;
+ case MAPID_HIGH_WIZARD: return JOB_HIGH_WIZARD;
+ case MAPID_SNIPER: return JOB_SNIPER;
+ case MAPID_HIGH_PRIEST: return JOB_HIGH_PRIEST;
+ case MAPID_WHITESMITH: return JOB_WHITESMITH;
+ case MAPID_ASSASSIN_CROSS: return JOB_ASSASSIN_CROSS;
//2_2 advanced
- case MAPID_PALADIN:
- return JOB_PALADIN;
- case MAPID_PROFESSOR:
- return JOB_PROFESSOR;
- case MAPID_CLOWNGYPSY:
- return sex?JOB_CLOWN:JOB_GYPSY;
- case MAPID_CHAMPION:
- return JOB_CHAMPION;
- case MAPID_CREATOR:
- return JOB_CREATOR;
- case MAPID_STALKER:
- return JOB_STALKER;
+ case MAPID_PALADIN: return JOB_PALADIN;
+ case MAPID_PROFESSOR: return JOB_PROFESSOR;
+ case MAPID_CLOWNGYPSY: return sex?JOB_CLOWN:JOB_GYPSY;
+ case MAPID_CHAMPION: return JOB_CHAMPION;
+ case MAPID_CREATOR: return JOB_CREATOR;
+ case MAPID_STALKER: return JOB_STALKER;
//1-1 baby
- case MAPID_BABY:
- return JOB_BABY;
- case MAPID_BABY_SWORDMAN:
- return JOB_BABY_SWORDMAN;
- case MAPID_BABY_MAGE:
- return JOB_BABY_MAGE;
- case MAPID_BABY_ARCHER:
- return JOB_BABY_ARCHER;
- case MAPID_BABY_ACOLYTE:
- return JOB_BABY_ACOLYTE;
- case MAPID_BABY_MERCHANT:
- return JOB_BABY_MERCHANT;
- case MAPID_BABY_THIEF:
- return JOB_BABY_THIEF;
+ case MAPID_BABY: return JOB_BABY;
+ case MAPID_BABY_SWORDMAN: return JOB_BABY_SWORDMAN;
+ case MAPID_BABY_MAGE: return JOB_BABY_MAGE;
+ case MAPID_BABY_ARCHER: return JOB_BABY_ARCHER;
+ case MAPID_BABY_ACOLYTE: return JOB_BABY_ACOLYTE;
+ case MAPID_BABY_MERCHANT: return JOB_BABY_MERCHANT;
+ case MAPID_BABY_THIEF: return JOB_BABY_THIEF;
//2_1 baby
- case MAPID_SUPER_BABY:
- return JOB_SUPER_BABY;
- case MAPID_BABY_KNIGHT:
- return JOB_BABY_KNIGHT;
- case MAPID_BABY_WIZARD:
- return JOB_BABY_WIZARD;
- case MAPID_BABY_HUNTER:
- return JOB_BABY_HUNTER;
- case MAPID_BABY_PRIEST:
- return JOB_BABY_PRIEST;
- case MAPID_BABY_BLACKSMITH:
- return JOB_BABY_BLACKSMITH;
- case MAPID_BABY_ASSASSIN:
- return JOB_BABY_ASSASSIN;
+ case MAPID_SUPER_BABY: return JOB_SUPER_BABY;
+ case MAPID_BABY_KNIGHT: return JOB_BABY_KNIGHT;
+ case MAPID_BABY_WIZARD: return JOB_BABY_WIZARD;
+ case MAPID_BABY_HUNTER: return JOB_BABY_HUNTER;
+ case MAPID_BABY_PRIEST: return JOB_BABY_PRIEST;
+ case MAPID_BABY_BLACKSMITH: return JOB_BABY_BLACKSMITH;
+ case MAPID_BABY_ASSASSIN: return JOB_BABY_ASSASSIN;
//2_2 baby
- case MAPID_BABY_CRUSADER:
- return JOB_BABY_CRUSADER;
- case MAPID_BABY_SAGE:
- return JOB_BABY_SAGE;
- case MAPID_BABY_BARDDANCER:
- return sex?JOB_BABY_BARD:JOB_BABY_DANCER;
- case MAPID_BABY_MONK:
- return JOB_BABY_MONK;
- case MAPID_BABY_ALCHEMIST:
- return JOB_BABY_ALCHEMIST;
- case MAPID_BABY_ROGUE:
- return JOB_BABY_ROGUE;
+ case MAPID_BABY_CRUSADER: return JOB_BABY_CRUSADER;
+ case MAPID_BABY_SAGE: return JOB_BABY_SAGE;
+ case MAPID_BABY_BARDDANCER: return sex?JOB_BABY_BARD:JOB_BABY_DANCER;
+ case MAPID_BABY_MONK: return JOB_BABY_MONK;
+ case MAPID_BABY_ALCHEMIST: return JOB_BABY_ALCHEMIST;
+ case MAPID_BABY_ROGUE: return JOB_BABY_ROGUE;
default:
return -1;
}
@@ -5250,100 +5184,42 @@ void pc_revive(struct map_session_data *sd,unsigned int hp, unsigned int sp)
/*==========================================
* script用PCステ?タス?み出し
*------------------------------------------*/
-int pc_readparam(struct map_session_data *sd,int type)
+int pc_readparam(struct map_session_data* sd,int type)
{
- int val=0;
+ int val = 0;
nullpo_retr(0, sd);
- switch(type){
- case SP_SKILLPOINT:
- val= sd->status.skill_point;
- break;
- case SP_STATUSPOINT:
- val= sd->status.status_point;
- break;
- case SP_ZENY:
- val= sd->status.zeny;
- break;
- case SP_BASELEVEL:
- val= sd->status.base_level;
- break;
- case SP_JOBLEVEL:
- val= sd->status.job_level;
- break;
- case SP_CLASS:
- val= sd->status.class_;
- break;
- case SP_BASEJOB: //Base job, extracting upper type.
- val= pc_mapid2jobid(sd->class_&MAPID_UPPERMASK, sd->status.sex);
- break;
- case SP_UPPER:
- val= sd->class_&JOBL_UPPER?1:(sd->class_&JOBL_BABY?2:0);
- break;
- case SP_BASECLASS: //Extract base class tree. [Skotlex]
- val= pc_mapid2jobid(sd->class_&MAPID_BASEMASK, sd->status.sex);
- break;
- case SP_SEX:
- val= sd->status.sex;
- break;
- case SP_WEIGHT:
- val= sd->weight;
- break;
- case SP_MAXWEIGHT:
- val= sd->max_weight;
- break;
- case SP_BASEEXP:
- val= sd->status.base_exp;
- break;
- case SP_JOBEXP:
- val= sd->status.job_exp;
- break;
- case SP_NEXTBASEEXP:
- val= pc_nextbaseexp(sd);
- break;
- case SP_NEXTJOBEXP:
- val= pc_nextjobexp(sd);
- break;
- case SP_HP:
- val= sd->battle_status.hp;
- break;
- case SP_MAXHP:
- val= sd->battle_status.max_hp;
- break;
- case SP_SP:
- val= sd->battle_status.sp;
- break;
- case SP_MAXSP:
- val= sd->battle_status.max_sp;
- break;
- case SP_STR:
- val= sd->status.str;
- break;
- case SP_AGI:
- val= sd->status.agi;
- break;
- case SP_VIT:
- val= sd->status.vit;
- break;
- case SP_INT:
- val= sd->status.int_;
- break;
- case SP_DEX:
- val= sd->status.dex;
- break;
- case SP_LUK:
- val= sd->status.luk;
- break;
- case SP_KARMA: // celest
- val = sd->status.karma;
- break;
- case SP_MANNER:
- val = sd->status.manner;
- break;
- case SP_FAME:
- val= sd->status.fame;
- break;
+ switch(type) {
+ case SP_SKILLPOINT: val = sd->status.skill_point; break;
+ case SP_STATUSPOINT: val = sd->status.status_point; break;
+ case SP_ZENY: val = sd->status.zeny; break;
+ case SP_BASELEVEL: val = sd->status.base_level; break;
+ case SP_JOBLEVEL: val = sd->status.job_level; break;
+ case SP_CLASS: val = sd->status.class_; break;
+ case SP_BASEJOB: val = pc_mapid2jobid(sd->class_&MAPID_UPPERMASK, sd->status.sex); break; //Base job, extracting upper type.
+ case SP_UPPER: val = sd->class_&JOBL_UPPER?1:(sd->class_&JOBL_BABY?2:0); break;
+ case SP_BASECLASS: val = pc_mapid2jobid(sd->class_&MAPID_BASEMASK, sd->status.sex); break; //Extract base class tree. [Skotlex]
+ case SP_SEX: val = sd->status.sex; break;
+ case SP_WEIGHT: val = sd->weight; break;
+ case SP_MAXWEIGHT: val = sd->max_weight; break;
+ case SP_BASEEXP: val = sd->status.base_exp; break;
+ case SP_JOBEXP: val = sd->status.job_exp; break;
+ case SP_NEXTBASEEXP: val = pc_nextbaseexp(sd); break;
+ case SP_NEXTJOBEXP: val = pc_nextjobexp(sd); break;
+ case SP_HP: val = sd->battle_status.hp; break;
+ case SP_MAXHP: val = sd->battle_status.max_hp; break;
+ case SP_SP: val = sd->battle_status.sp; break;
+ case SP_MAXSP: val = sd->battle_status.max_sp; break;
+ case SP_STR: val = sd->status.str; break;
+ case SP_AGI: val = sd->status.agi; break;
+ case SP_VIT: val = sd->status.vit; break;
+ case SP_INT: val = sd->status.int_; break;
+ case SP_DEX: val = sd->status.dex; break;
+ case SP_LUK: val = sd->status.luk; break;
+ case SP_KARMA: val = sd->status.karma; break;
+ case SP_MANNER: val = sd->status.manner; break;
+ case SP_FAME: val = sd->status.fame; break;
}
return val;
diff --git a/src/map/script.c b/src/map/script.c
index a08d06466..99a3434f5 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -9602,7 +9602,7 @@ BUILDIN_FUNC(getcastledata)
int i;
for(i=1;i<26;i++) // Initialize[AgitInit]
guild_castledataload(gc->castle_id,i);
- } break;
+ } break;
case 1:
script_pushint(st,gc->guild_id); break;
case 2:
@@ -9653,7 +9653,7 @@ BUILDIN_FUNC(setcastledata)
const char* mapname = mapindex_getmapname(script_getstr(st,2),NULL);
int index = script_getnum(st,3);
int value = script_getnum(st,4);
-
+
struct guild_castle* gc = guild_mapname2gc(mapname);
if(gc) {