- 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:
parent
bc31c68ad5
commit
c8ff534024
@ -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
|
||||
|
@ -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];
|
||||
|
||||
|
@ -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);
|
||||
|
704
src/map/battle.c
704
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)
|
||||
|
@ -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 = '-';
|
||||
|
@ -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]
|
||||
|
@ -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;
|
||||
}
|
||||
|
320
src/map/pc.c
320
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;
|
||||
|
@ -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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user