Forráskód Böngészése

- 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

ultramage 18 éve
szülő
commit
c8ff534024
9 módosított fájl, 546 hozzáadás és 632 törlés
  1. 74 7
      runserver.bat
  2. 1 1
      src/common/mapindex.c
  3. 0 1
      src/common/mapindex.h
  4. 351 353
      src/map/battle.c
  5. 12 31
      src/map/map.c
  6. 1 1
      src/map/map.h
  7. 7 14
      src/map/npc.c
  8. 98 222
      src/map/pc.c
  9. 2 2
      src/map/script.c

+ 74 - 7
runserver.bat

@@ -1,8 +1,75 @@
 @echo off
-rem This is and auto-restart script for the eAthena Ragnarok Online Server Emulator.
-rem It will also keep the map server OPEN after it crashes to that errors may be
-rem more easily identified
-rem Writen by Jbain
-start cmd /k logserv.bat
-start cmd /k charserv.bat
-start cmd /k mapserv.bat
+
+rem ----- Configuration -----
+	rem Defines the server type (txt or sql).
+	set SERVER_TYPE=txt
+	rem Defines how long to wait before restarting (in seconds).
+	set SLEEP_TIME=15
+	rem Defines whether to run all servers in one window (yes or no).
+	set SINGLE_WINDOW=no
+rem ----- ------------- -----
+
+:L_Init
+	set this=%0
+	if %SERVER_TYPE% == txt set suffix=
+	if %SERVER_TYPE% == sql set suffix=_sql
+	if %SINGLE_WINDOW% == yes set wndswitch=/B
+
+:L_Main
+	set command=%1
+	if "%command%" == "" goto L_DefaultAction
+	
+	if %command% == exec goto L_ExecServerExe
+	if %command% == start goto L_StartServerExe
+	if %command% == stop goto L_StopServerExe
+	if %command% == restart echo "TODO"
+	goto L_EOF
+
+:L_DefaultAction
+:L_StartServer
+	call %this% start login-server%suffix%.exe
+	call %this% start char-server%suffix%.exe
+	call %this% start map-server%suffix%.exe
+	goto L_EOF
+
+:L_StopServer
+	call %this% stop login-server%suffix%.exe
+	call %this% stop char-server%suffix%.exe
+	call %this% stop map-server%suffix%.exe
+	goto L_EOF
+
+:L_StartServerExe
+	set filename=%2
+	if "%filename%" == "" goto L_StartServer
+	if exist %filename% goto L_HaveExe
+	echo Cannot start '%filename%' because the file is missing!
+	goto L_EOF
+
+	:L_HaveExe
+	echo Starting %filename%...
+	start "%filename%" %wndswitch% %this% exec %filename%
+	goto L_EOF
+
+:L_StopServerExe
+	set filename=%2
+	if "%filename%" == "" goto L_StopServer
+	if exist %windir%\system32\taskkill.exe goto L_HaveTaskKill
+	echo The 'stop' command is not available on your system.
+	exit
+
+	:L_HaveTaskKill
+	rem CAUTION! This will kill all processes called %filename%.
+	echo Stopping '%filename%'...
+	taskkill /F /FI "WINDOWTITLE eq %filename% - %this%   exec %filename%"
+	taskkill /F /IM "%filename%"
+	goto L_EOF
+
+:L_ExecServerExe
+	%filename%
+	echo .
+	echo .
+	echo Server exited, restarting in %SLEEP_TIME% seconds! Press CTRL+C to abort!
+	ping.exe -n %SLEEP_TIME% 127.0.0.1 > nul
+	goto L_ExecServerExe
+
+:L_EOF

+ 1 - 1
src/common/mapindex.c

@@ -72,7 +72,7 @@ const char* mapindex_getmapname_ext(const char* string, char* output)
 
 /// Adds a map to the specified index
 /// Returns 1 if successful, 0 oherwise
-int mapindex_addmap(int index, const char* name)
+static int mapindex_addmap(int index, const char* name)
 {
 	char map_name[MAP_NAME_LENGTH];
 

+ 0 - 1
src/common/mapindex.h

@@ -39,7 +39,6 @@ extern char mapindex_cfgfile[80];
 
 const char* mapindex_getmapname(const char* string, char* output);
 const char* mapindex_getmapname_ext(const char* string, char* output);
-int mapindex_addmap(int index, const char *name);
 unsigned short mapindex_name2id(const char*);
 const char* mapindex_id2name(unsigned short);
 void mapindex_init(void);

+ 351 - 353
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)

+ 12 - 31
src/map/map.c

@@ -2470,8 +2470,7 @@ int map_addmap(char* mapname)
 	}
 
 	if (map_num >= MAX_MAP_PER_SERVER - 1) {
-		ShowError("Could not add map '"
-		CL_WHITE"%s"CL_RESET"', the limit of maps has been reached.\n",mapname);
+		ShowError("Could not add map '"CL_WHITE"%s"CL_RESET"', the limit of maps has been reached.\n",mapname);
 		return 1;
 	}
 
@@ -2487,7 +2486,7 @@ static void map_delmapid(int id)
 	map_num--;
 }
 
-int map_delmap(char *mapname)
+int map_delmap(char* mapname)
 {
 	int i;
 
@@ -2497,7 +2496,7 @@ int map_delmap(char *mapname)
 	}
 
 	for(i = 0; i < map_num; i++) {
-		if (strcmp(map[i].name, mapname) == 0) {
+		if (strcmp(map[i].name, mapname) <= 0) {
 			map_delmapid(i);
 			return 1;
 		}
@@ -2507,45 +2506,28 @@ int map_delmap(char *mapname)
 
 #define NO_WATER 1000000
 
-/* map_readwaterheight
+/*
  * Reads from the .rsw for each map
- * Returns water height (or NO_WATER if file doesn't exist)
- * or other error is encountered.
- * This receives a map-name, and changes the extension to rsw if it isn't set already.
+ * Returns water height (or NO_WATER if file doesn't exist) or other error is encountered.
  * Assumed path for file is data/mapname.rsw
  * Credits to LittleWolf
  */
-int map_waterheight(char *mapname)
+int map_waterheight(char* mapname)
 {
 	char fn[256];
  	char *rsw, *found;
-	float whtemp;
-	int wh;
 
 	//Look up for the rsw
-	if(!strstr(mapname,"data\\"))
-		sprintf(fn,"data\\%s.rsw", mapname);
-	else
-		strcpy(fn, mapname);
+	sprintf(fn,"data\\%s.rsw", mapname);
 
 	found = grfio_find_file(fn);
-	if (!found)
-		; //Stick to the current fn
-	else if(!strstr(found,"data\\"))
-		sprintf(fn,"data\\%s.rsw", found);
-	else
-		strcpy(fn, found);
+	if (found) strcpy(fn, found);
 	
-	rsw = strstr(fn, ".");
-	if (rsw && strstr(fn, ".rsw") == NULL)
-		sprintf(rsw,".rsw");
 	// read & convert fn
-	// again, might not need to be unsigned char
 	rsw = (char *) grfio_read (fn);
 	if (rsw)
 	{	//Load water height from file
-		whtemp = *(float*)(rsw+166);
-		wh = (int) whtemp;
+		int wh = (int) *(float*)(rsw+166);
 		aFree(rsw);
 		return wh;
 	}
@@ -2556,17 +2538,16 @@ int map_waterheight(char *mapname)
 /*==================================
  * .GAT format
  *----------------------------------*/
-int map_readgat (struct map_data *m)
+int map_readgat (struct map_data* m)
 {
 	char fn[256];
 	char *gat;
 	int wh,x,y,xs,ys;
 	struct gat_1cell {float high[4]; int type;} *p = NULL;
 
-	sprintf(fn,"data\\%s.gat",m->name);
+	sprintf(fn, "data\\%s.gat", m->name);
 
 	// read & convert fn
-	// again, might not need to be unsigned char
 	gat = (char *) grfio_read (fn);
 	if (gat == NULL)
 		return 0;
@@ -2619,7 +2600,7 @@ int map_readallmaps (void)
 		size_t size;
 
 		// show progress
-		if(j != lasti || last_time != time(0))
+		if (j != lasti || last_time != time(0))
 		{
 			char progress[21] = "                    ";
 			char c = '-';

+ 1 - 1
src/map/map.h

@@ -1380,7 +1380,7 @@ unsigned int distance(int dx, int dy);
 int cleanup_sub(struct block_list *bl, va_list ap);
 
 void map_helpscreen(int flag); // [Valaris]
-int map_delmap(char *mapname);
+int map_delmap(char* mapname);
 
 int map_addmobtolist(unsigned short m, struct spawn_data *spawn);	// [Wizputer]
 void map_spawnmobs(int); // [Wizputer]

+ 7 - 14
src/map/npc.c

@@ -1694,26 +1694,25 @@ static int npc_parse_shop(char* w1, char* w2, char* w3, char* w4)
 	#define MAX_SHOPITEM 100
 	char *p;
 	int x, y, dir, m, pos = 0;
-	char mapname[MAP_NAME_LENGTH_EXT];
 	struct npc_data *nd;
 
 	if (strcmp(w1, "-") == 0) {
 		x = 0; y = 0; dir = 0; m = -1;
 	} else {
 		// ˆø�”‚ÌŒÂ�”ƒ`ƒ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;
 	}

+ 98 - 222
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—pPCƒXƒe?ƒ^ƒX?‚Ý�o‚µ
  *------------------------------------------*/
-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;

+ 2 - 2
src/map/script.c

@@ -9602,7 +9602,7 @@ BUILDIN_FUNC(getcastledata)
 				int i;
 				for(i=1;i<26;i++) // Initialize[AgitInit]
 					guild_castledataload(gc->castle_id,i);
-					} break;
+				} break;
 			case 1:
 				script_pushint(st,gc->guild_id); break;
 			case 2:
@@ -9653,7 +9653,7 @@ BUILDIN_FUNC(setcastledata)
 	const char* mapname = mapindex_getmapname(script_getstr(st,2),NULL);
 	int index = script_getnum(st,3);
 	int value = script_getnum(st,4);
-	
+
 	struct guild_castle* gc = guild_mapname2gc(mapname);
 
 	if(gc) {