- 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://svn.code.sf.net/p/rathena/svn/trunk@10971 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
ultramage 2007-08-09 18:56:27 +00:00
parent bc31c68ad5
commit c8ff534024
9 changed files with 546 additions and 632 deletions

View File

@ -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

View File

@ -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];

View File

@ -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);

View File

@ -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)

View File

@ -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 = '-';

View File

@ -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]

View File

@ -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 {
// ˆø<CB86>ÌŒÂ<C592>”ƒ`ƒFƒbƒN
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;
}

View File

@ -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;

View File

@ -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) {