diff --git a/conf/battle/player.conf b/conf/battle/player.conf
index 7024a80061..f71b2b5e75 100644
--- a/conf/battle/player.conf
+++ b/conf/battle/player.conf
@@ -95,6 +95,9 @@ max_baby_parameter: 80
 max_baby_third_parameter: 117
 max_extended_parameter: 125
 
+// Status points bonus for transcendent class
+transcendent_status_points: 52
+
 // Max armor def/mdef
 // NOTE: This setting have no effect if server is run on Renewal Mode (RENEWAL) 
 // NOTE: does not affects skills and status effects like Mental Strength
@@ -203,3 +206,26 @@ vip_gemstone: yes
 
 // Will display rate information (EXP, Drop, and Death penalty message)? (Note 1)
 vip_disp_rate: yes
+
+// Revive dead player while warping? (Note 1)
+revive_onwarp: yes
+
+// Minimum base level to receives Taekwon Ranker Bonus
+// - 3x Maximum HP and SP
+// - All Taekwon skills
+taekwon_ranker_min_lv: 90
+
+// Fame points gained
+// Taekwon Mission completed
+fame_taekwon_mission: 1
+// Refined own forged weapon to +10
+fame_refine_lv1: 1
+fame_refine_lv2: 25
+fame_refine_lv3: 10000
+// Success to forge a lv3 weapon with 3 additional ingredients
+fame_forge: 10
+// Success to prepare 'n' Condensed Potions in a row
+fame_pharmacy_3: 1
+fame_pharmacy_5: 3
+fame_pharmacy_7: 10
+fame_pharmacy_10: 50
diff --git a/db/const.txt b/db/const.txt
index d38b44735a..b22416feeb 100644
--- a/db/const.txt
+++ b/db/const.txt
@@ -1745,8 +1745,8 @@ SC_TEARGAS_SOB	593
 SC__FEINTBOMB	594
 SC__CHAOS	595
 SC_ELEMENTAL_SHIELD	596
-SC_EXTREMITYFIST2	597
-SC_CHASEWALK2	598
+SC_CHASEWALK2	597
+SC_EXTREMITYFIST2	598
 
 //Status Icon
 SI_BLANK	-1
diff --git a/src/char/char.c b/src/char/char.c
index 902a3e0cf3..bb53760088 100644
--- a/src/char/char.c
+++ b/src/char/char.c
@@ -2171,7 +2171,8 @@ bool char_checkdb(void){
 		"`max_hp`,`hp`,`max_sp`,`sp`,`status_point`,`skill_point`,`option`,`karma`,`manner`,`party_id`,"
 		"`guild_id`,`pet_id`,`homun_id`,`elemental_id`,`hair`,`hair_color`,`clothes_color`,`weapon`,"
 		"`shield`,`head_top`,`head_mid`,`head_bottom`,`robe`,`last_map`,`last_x`,`last_y`,`save_map`,"
-		"`save_x`,`save_y`,`partner_id`,`online`,`father`,`mother`,`child`,`fame`,`rename`,`delete_date`,`moves`"
+		"`save_x`,`save_y`,`partner_id`,`online`,`father`,`mother`,`child`,`fame`,`rename`,`delete_date`,"
+		"`moves`,`unban_time`,`font`"
 		" from `%s`;", schema_config.char_db) ){
 		Sql_ShowDebug(sql_handle);
 		return false;
diff --git a/src/char/char_logif.c b/src/char/char_logif.c
index b255ab6032..97c4a4024d 100644
--- a/src/char/char_logif.c
+++ b/src/char/char_logif.c
@@ -579,7 +579,7 @@ int chlogif_parse_vipack(int fd) {
 		uint8 isgm = RFIFOB(fd,15); //isgm
 		int mapfd = RFIFOL(fd,16); //link to mapserv for ack
 		RFIFOSKIP(fd,20);
-		mapif_vipack(mapfd,aid,vip_time,isvip,isgm,groupid);
+		chmapif_vipack(mapfd,aid,vip_time,isvip,isgm,groupid);
 	}
 #endif
 	return 1;
diff --git a/src/char/char_mapif.c b/src/char/char_mapif.c
index 778063e528..350d09bc43 100644
--- a/src/char/char_mapif.c
+++ b/src/char/char_mapif.c
@@ -1,5 +1,3 @@
-
-
 /**
  * @file char_mapif.c
  * Module purpose is to handle incoming and outgoing requests with map-server.
@@ -1274,7 +1272,7 @@ int chmapif_bonus_script_get(int fd) {
 			WFIFOHEAD(fd,10+50*sizeof(struct bonus_script_data));
 			WFIFOW(fd,0) = 0x2b2f;
 			WFIFOL(fd,4) = cid;
-			for (count = 0; count < 20 && SQL_SUCCESS == Sql_NextRow(sql_handle); ++count) {
+			for (count = 0; count < MAX_PC_BONUS_SCRIPT && SQL_SUCCESS == Sql_NextRow(sql_handle); ++count) {
 				Sql_GetData(sql_handle,0,&data,NULL); memcpy(bsdata.script,data,strlen(data)+1);
 				Sql_GetData(sql_handle,1,&data,NULL); bsdata.tick = atoi(data);
 				Sql_GetData(sql_handle,2,&data,NULL); bsdata.flag = atoi(data);
@@ -1282,7 +1280,7 @@ int chmapif_bonus_script_get(int fd) {
 				Sql_GetData(sql_handle,4,&data,NULL); bsdata.icon = atoi(data);
 				memcpy(WFIFOP(fd,10+count*sizeof(struct bonus_script_data)),&bsdata,sizeof(struct bonus_script_data));
 			}
-			if (count >= 20)
+			if (count >= MAX_PC_BONUS_SCRIPT)
 				ShowWarning("Too many bonus_script for %d, some of them were not loaded.\n",cid);
 			if (count > 0) {
 				WFIFOW(fd,2) = 10 + count*sizeof(struct bonus_script_data);
diff --git a/src/char/char_mapif.h b/src/char/char_mapif.h
index 0341d37dff..934c33d1b5 100644
--- a/src/char/char_mapif.h
+++ b/src/char/char_mapif.h
@@ -7,7 +7,6 @@
  * @author rAthena Dev Team
  */
 
-
 #ifndef CHAR_MAPIF_H
 #define	CHAR_MAPIF_H
 
diff --git a/src/common/mmo.h b/src/common/mmo.h
index 07b1502312..944d2364af 100644
--- a/src/common/mmo.h
+++ b/src/common/mmo.h
@@ -73,6 +73,7 @@
 #define MAX_GUILDLEVEL 50 ///Max Guild level
 #define MAX_GUARDIANS 8	///Local max per castle. If this value is increased, need to add more fields on MySQL `guild_castle` table [Skotlex]
 #define MAX_QUEST_OBJECTIVES 3 ///Max quest objectives for a quest
+#define MAX_PC_BONUS_SCRIPT 20
 
 // for produce
 #define MIN_ATTRIBUTE 0
@@ -582,14 +583,14 @@ struct fame_list {
 	char name[NAME_LENGTH];
 };
 
-enum { //Change Guild Infos
+enum e_guild_info { //Change Guild Infos
 	GBI_EXP	=1,		// Guild Experience (EXP)
 	GBI_GUILDLV,		// Guild level
 	GBI_SKILLPOINT,		// Guild skillpoints
 	GBI_SKILLLV,		// Guild skill_lv ?? seem unused
 };
 
-enum { //Change Member Infos
+enum e_guild_member_info { //Change Member Infos
 	GMI_POSITION	=0,
 	GMI_EXP,
 	GMI_HAIR,
@@ -622,7 +623,7 @@ enum e_guild_skill {
 
 
 //These mark the ID of the jobs, as expected by the client. [Skotlex]
-enum {
+enum e_job {
 	JOB_NOVICE,
 	JOB_SWORDMAN,
 	JOB_MAGE,
@@ -780,7 +781,7 @@ enum {
 	JOB_MAX,
 };
 
-enum {
+enum e_sex {
 	SEX_FEMALE = 0,
 	SEX_MALE,
 	SEX_SERVER
@@ -801,4 +802,11 @@ enum bound_type {
 #error MAX_ZENY is too big
 #endif
 
+#if (MIN_CHARS + MAX_CHAR_VIP + MAX_CHAR_BILLING) > MAX_CHARS
+#error Config of MAX_CHARS is invalid
+#endif
+#if MIN_STORAGE > MAX_STORAGE
+#error Config of MIN_STORAGE is invalid
+#endif
+
 #endif /* _MMO_H_ */
diff --git a/src/config/core.h b/src/config/core.h
index 0d764231e1..83903ccf44 100644
--- a/src/config/core.h
+++ b/src/config/core.h
@@ -87,12 +87,6 @@
 	#define MAX_CHAR_BILLING 0
 	#define MAX_CHAR_VIP 0
 #endif
-#if (MIN_CHARS + MAX_CHAR_VIP + MAX_CHAR_BILLING) > MAX_CHARS
-	#error "Config of MAX_CHARS is invalid"
-#endif
-#if MIN_STORAGE > MAX_STORAGE
-	#error "Config of MIN_STORAGE is invalid"
-#endif
 
 /**
  * No settings past this point
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index 291bf3c897..a7eb00a827 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -1052,7 +1052,7 @@ ACMD_FUNC(jobchange)
 
 	if (pcdb_checkid(job))
 	{
-		if (pc_jobchange(sd, job, upper) == 0)
+		if (pc_jobchange(sd, job, upper))
 			clif_displaymessage(fd, msg_txt(sd,12)); // Your job has been changed.
 		else {
 			clif_displaymessage(fd, msg_txt(sd,155)); // You are unable to change your job.
diff --git a/src/map/battle.c b/src/map/battle.c
index f6e7ed0901..123fe96f72 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -7830,6 +7830,19 @@ static const struct _battle_data {
 	{ "teleport_on_portal",                 &battle_config.teleport_on_portal,              0,      0,      1,              },
 	{ "cart_revo_knockback",                &battle_config.cart_revo_knockback,             1,      0,      1,              },
 	{ "guild_notice_changemap",             &battle_config.guild_notice_changemap,          2,      0,      2,              },
+	{ "transcendent_status_points",         &battle_config.transcendent_status_points,     52,      1,      INT_MAX,        },
+	{ "taekwon_ranker_min_lv",              &battle_config.taekwon_ranker_min_lv,          90,      1,      MAX_LEVEL,      },
+	{ "revive_onwarp",                      &battle_config.revive_onwarp,                   1,      0,      1,              },
+	{ "fame_taekwon_mission",               &battle_config.fame_taekwon_mission,            1,      0,      INT_MAX,        },
+	{ "fame_refine_lv1",                    &battle_config.fame_refine_lv1,                 1,      0,      INT_MAX,        },
+	{ "fame_refine_lv1",                    &battle_config.fame_refine_lv1,                 1,      0,      INT_MAX,        },
+	{ "fame_refine_lv2",                    &battle_config.fame_refine_lv2,                 25,     0,      INT_MAX,        },
+	{ "fame_refine_lv3",                    &battle_config.fame_refine_lv3,                 1000,   0,      INT_MAX,        },
+	{ "fame_forge",                         &battle_config.fame_forge,                      10,     0,      INT_MAX,        },
+	{ "fame_pharmacy_3",                    &battle_config.fame_pharmacy_3,                 1,      0,      INT_MAX,        },
+	{ "fame_pharmacy_5",                    &battle_config.fame_pharmacy_5,                 3,      0,      INT_MAX,        },
+	{ "fame_pharmacy_7",                    &battle_config.fame_pharmacy_7,                 10,     0,      INT_MAX,        },
+	{ "fame_pharmacy_10",                   &battle_config.fame_pharmacy_10,                50,     0,      INT_MAX,        },
 };
 #ifndef STATS_OPT_OUT
 /**
diff --git a/src/map/battle.h b/src/map/battle.h
index 1c25fa74b7..ab6dcd3f9e 100644
--- a/src/map/battle.h
+++ b/src/map/battle.h
@@ -540,6 +540,20 @@ extern struct Battle_Config
 	int teleport_on_portal;
 	int cart_revo_knockback;
 	int guild_notice_changemap;
+	int transcendent_status_points;
+	int taekwon_ranker_min_lv;
+	int revive_onwarp;
+
+	// Fame points
+	int fame_taekwon_mission;
+	int fame_refine_lv1;
+	int fame_refine_lv2;
+	int fame_refine_lv3;
+	int fame_forge;
+	int fame_pharmacy_3;
+	int fame_pharmacy_5;
+	int fame_pharmacy_7;
+	int fame_pharmacy_10;
 } battle_config;
 
 void do_init_battle(void);
diff --git a/src/map/mob.c b/src/map/mob.c
index 010cfdcbf9..325c667548 100644
--- a/src/map/mob.c
+++ b/src/map/mob.c
@@ -2590,9 +2590,11 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
 		if( sd ) {
 			if( sd->mission_mobid == md->mob_id ||
 				( battle_config.taekwon_mission_mobname == 1 && mob_is_goblin(md, sd->mission_mobid) ) ||
-				( battle_config.taekwon_mission_mobname == 2 && mob_is_samename(md, sd->mission_mobid) ) ) { //TK_MISSION [Skotlex]
-				if( ++sd->mission_count >= 100 && (temp = mob_get_random_id(0, 0xE, sd->status.base_level)) ) {
-					pc_addfame(sd, 1);
+				( battle_config.taekwon_mission_mobname == 2 && mob_is_samename(md, sd->mission_mobid) ) )
+			{ //TK_MISSION [Skotlex]
+				if( ++sd->mission_count >= 100 && (temp = mob_get_random_id(0, 0xE, sd->status.base_level)) )
+				{
+					pc_addfame(sd, battle_config.fame_taekwon_mission);
 					sd->mission_mobid = temp;
 					pc_setglobalreg(sd,"TK_MISSION_ID", temp);
 					sd->mission_count = 0;
diff --git a/src/map/pc.c b/src/map/pc.c
index cf0dfa30fa..9ec431fd87 100755
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -386,7 +386,7 @@ void pc_addfame(struct map_session_data *sd,int count)
 // Check whether a player ID is in the fame rankers' list of its job, returns his/her position if so, 0 else
 unsigned char pc_famerank(int char_id, int job)
 {
-	int i;
+	uint8 i;
 
 	switch(job){
 		case MAPID_BLACKSMITH: // Blacksmith
@@ -901,7 +901,7 @@ bool pc_adoption(struct map_session_data *p1_sd, struct map_session_data *p2_sd,
 	jobexp = b_sd->status.job_exp;
 
 	job = pc_mapid2jobid(b_sd->class_|JOBL_BABY, b_sd->status.sex);
-	if( job != -1 && !pc_jobchange(b_sd, job, 0) )
+	if( job != -1 && pc_jobchange(b_sd, job, 0) )
 	{ // Success, proceed to configure parents and baby skills
 		p1_sd->status.child = b_sd->status.char_id;
 		p2_sd->status.child = b_sd->status.char_id;
@@ -1508,6 +1508,19 @@ int pc_calc_skilltree(struct map_session_data *sd)
 		}
 	}
 
+	// Removes Taekwon Ranker skill bonus
+	if ((sd->class_&MAPID_UPPERMASK) != MAPID_TAEKWON) {
+		uint16 c_ = pc_class2idx(JOB_TAEKWON);
+		for (i = 0; i < MAX_SKILL_TREE; i++) {
+			uint16 x = skill_get_index(skill_tree[c_][i].id), id;
+			if ((id = sd->status.skill[x].id)) {
+				if (id == NV_BASIC || id == NV_FIRSTAID || id == WE_CALLBABY)
+					continue;
+				sd->status.skill[x].id = 0;
+			}
+		}
+	}
+
 	if( pc_has_permission(sd, PC_PERM_ALL_SKILL) ) {
 		for( i = 0; i < MAX_SKILL; i++ ) {
 			switch(i) {
@@ -1601,7 +1614,7 @@ int pc_calc_skilltree(struct map_session_data *sd)
 		}
 	} while(flag);
 
-	if( c > 0 && (sd->class_&MAPID_UPPERMASK) == MAPID_TAEKWON && sd->status.base_level >= 90 && sd->status.skill_point == 0 && pc_famerank(sd->status.char_id, MAPID_TAEKWON) ) {
+	if( c > 0 && (sd->class_&MAPID_UPPERMASK) == MAPID_TAEKWON && sd->status.base_level >= battle_config.taekwon_ranker_min_lv && sd->status.skill_point == 0 && pc_famerank(sd->status.char_id, MAPID_TAEKWON) ) {
 		/* Taekwon Ranker Bonus Skill Tree
 		============================================
 		- Grant All Taekwon Tree, but only as Bonus Skills in case they drop from ranking.
@@ -5066,7 +5079,7 @@ int pc_setpos(struct map_session_data* sd, unsigned short mapindex, int x, int y
 		return 1;
 	}
 
-	if( pc_isdead(sd) ) { //Revive dead people before warping them
+	if( battle_config.revive_onwarp && pc_isdead(sd) ) { //Revive dead people before warping them
 		pc_setstand(sd);
 		pc_setrestartvalue(sd,1);
 	}
@@ -6542,7 +6555,7 @@ int pc_skillup(struct map_session_data *sd,uint16 skill_id)
 		sd->status.skill_point--;
 		if( !skill_get_inf(skill_id) )
 			status_calc_pc(sd,SCO_NONE); // Only recalculate for passive skills.
-		else if( sd->status.skill_point == 0 && (sd->class_&MAPID_UPPERMASK) == MAPID_TAEKWON && sd->status.base_level >= 90 && pc_famerank(sd->status.char_id, MAPID_TAEKWON) )
+		else if( sd->status.skill_point == 0 && (sd->class_&MAPID_UPPERMASK) == MAPID_TAEKWON && sd->status.base_level >= battle_config.taekwon_ranker_min_lv && pc_famerank(sd->status.char_id, MAPID_TAEKWON) )
 			pc_calc_skilltree(sd); // Required to grant all TK Ranker skills.
 		else
 			pc_check_skilltree(sd, skill_id); // Check if a new skill can Lvlup
@@ -6788,7 +6801,7 @@ int pc_resetskill(struct map_session_data* sd, int flag)
 		/**
 		 * It has been confirmed on official servers that when you reset skills with a ranked Taekwon your skills are not reset (because you have all of them anyway)
 		 **/
-		if( (sd->class_&MAPID_UPPERMASK) == MAPID_TAEKWON && sd->status.base_level >= 90 && pc_famerank(sd->status.char_id, MAPID_TAEKWON) )
+		if( (sd->class_&MAPID_UPPERMASK) == MAPID_TAEKWON && sd->status.base_level >= battle_config.taekwon_ranker_min_lv && pc_famerank(sd->status.char_id, MAPID_TAEKWON) )
 			return 0;
 
 		if( pc_checkskill(sd, SG_DEVIL) &&  !pc_nextjobexp(sd) )
@@ -7836,24 +7849,28 @@ static int jobchange_killclone(struct block_list *bl, va_list ap)
 	return 1;
 }
 
-/*==========================================
+/**
  * Called when player changes job
  * Rewrote to make it tidider [Celest]
- *------------------------------------------*/
-int pc_jobchange(struct map_session_data *sd,int job, int upper)
+ * @param sd
+ * @param job JOB ID. See enum e_job
+ * @param upper 1 - JOBL_UPPER; 2 - JOBL_BABY
+ * @return True if success, false if failed
+ **/
+bool pc_jobchange(struct map_session_data *sd,int job, char upper)
 {
-	int i, fame_flag=0;
+	int i, fame_flag = 0;
 	int b_class;
 
-	nullpo_ret(sd);
+	nullpo_retr(false,sd);
 
 	if (job < 0)
-		return 1;
+		return false;
 
 	//Normalize job.
 	b_class = pc_jobid2mapid(job);
 	if (b_class == -1)
-		return 1;
+		return false;
 	switch (upper) {
 		case 1:
 			b_class|= JOBL_UPPER;
@@ -7866,10 +7883,10 @@ int pc_jobchange(struct map_session_data *sd,int job, int upper)
 	//That is, if you try to jobchange into dancer, it will turn you to bard.
 	job = pc_mapid2jobid(b_class, sd->status.sex);
 	if (job == -1)
-		return 1;
+		return false;
 
 	if ((unsigned short)b_class == sd->class_)
-		return 1; //Nothing to change.
+		return false; //Nothing to change.
 
 	// changing from 1st to 2nd job
 	if ((b_class&JOBL_2) && !(sd->class_&JOBL_2) && (b_class&MAPID_UPPERMASK) != MAPID_SUPER_NOVICE) {
@@ -7908,14 +7925,14 @@ int pc_jobchange(struct map_session_data *sd,int job, int upper)
 
 	// Give or reduce transcendent status points
 	if( (b_class&JOBL_UPPER) && !(sd->class_&JOBL_UPPER) ){ // Change from a non t class to a t class -> give points
-		sd->status.status_point += 52;
+		sd->status.status_point += battle_config.transcendent_status_points;
 		clif_updatestatus(sd,SP_STATUSPOINT);
 	}else if( !(b_class&JOBL_UPPER) && (sd->class_&JOBL_UPPER) ){ // Change from a t class to a non t class -> remove points
-		if( sd->status.status_point < 52 ){
+		if( sd->status.status_point < battle_config.transcendent_status_points ){
 			// The player already used his bonus points, so we have to reset his status points
 			pc_resetstate(sd);
 		}
-		sd->status.status_point -= 52;
+		sd->status.status_point -= battle_config.transcendent_status_points;
 		clif_updatestatus(sd,SP_STATUSPOINT);
 	}
 
@@ -8032,7 +8049,7 @@ int pc_jobchange(struct map_session_data *sd,int job, int upper)
 		}
 	}
 
-	return 0;
+	return true;
 }
 
 /*==========================================
diff --git a/src/map/pc.h b/src/map/pc.h
index 740731c0fd..1f1c5a7437 100644
--- a/src/map/pc.h
+++ b/src/map/pc.h
@@ -25,7 +25,6 @@
 #define MAX_PC_SKILL_REQUIRE 5
 #define MAX_PC_FEELHATE 3
 #define DAMAGELOG_SIZE_PC 100	// Any idea for this value?
-#define MAX_PC_BONUS_SCRIPT 20
 #define MAX_SPIRITBALL 15
 
 //Update this max as necessary. 55 is the value needed for Super Baby currently
@@ -939,7 +938,7 @@ void pc_revive(struct map_session_data *sd,unsigned int hp, unsigned int sp);
 void pc_heal(struct map_session_data *sd,unsigned int hp,unsigned int sp, int type);
 int pc_itemheal(struct map_session_data *sd,int itemid, int hp,int sp);
 int pc_percentheal(struct map_session_data *sd,int,int);
-int pc_jobchange(struct map_session_data *,int, int);
+bool pc_jobchange(struct map_session_data *sd, int job, char upper);
 void pc_setoption(struct map_session_data *,int);
 bool pc_setcart(struct map_session_data* sd, int type);
 void pc_setfalcon(struct map_session_data* sd, int flag);
diff --git a/src/map/script.c b/src/map/script.c
index 455e5e2e69..60d32470f3 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -8028,13 +8028,13 @@ BUILDIN_FUNC(successrefitem)
 		){ // Fame point system [DracoRPG]
 			switch (sd->inventory_data[i]->wlv){
 				case 1:
-					pc_addfame(sd,1); // Success to refine to +10 a lv1 weapon you forged = +1 fame point
+					pc_addfame(sd, battle_config.fame_refine_lv1); // Success to refine to +10 a lv1 weapon you forged = +1 fame point
 					break;
 				case 2:
-					pc_addfame(sd,25); // Success to refine to +10 a lv2 weapon you forged = +25 fame point
+					pc_addfame(sd, battle_config.fame_refine_lv2); // Success to refine to +10 a lv2 weapon you forged = +25 fame point
 					break;
 				case 3:
-					pc_addfame(sd,1000); // Success to refine to +10 a lv3 weapon you forged = +1000 fame point
+					pc_addfame(sd, battle_config.fame_refine_lv3); // Success to refine to +10 a lv3 weapon you forged = +1000 fame point
 					break;
 			 }
 		}
diff --git a/src/map/skill.c b/src/map/skill.c
index 3f70076342..647f521b6a 100755
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -13914,7 +13914,7 @@ bool skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_i
 				status_change_end(&sd->bl, SC_COMBO, INVALID_TIMER);
 				return false;
 			}
-			if(sc->data[SC_COMBO]->val1 != skill_id && !( sd && sd->status.base_level >= 90 && pc_famerank(sd->status.char_id, MAPID_TAEKWON) )) {	//Cancel combo wait.
+			if(sc->data[SC_COMBO]->val1 != skill_id && !( sd && sd->status.base_level >= battle_config.taekwon_ranker_min_lv && pc_famerank(sd->status.char_id, MAPID_TAEKWON) )) {	//Cancel combo wait.
 				unit_cancel_combo(&sd->bl);
 				return false;
 			}
@@ -15717,13 +15717,13 @@ void skill_weaponrefine (struct map_session_data *sd, int idx)
 				{ // Fame point system [DracoRPG]
 					switch(ditem->wlv){
 						case 1:
-							pc_addfame(sd,1); // Success to refine to +10 a lv1 weapon you forged = +1 fame point
+							pc_addfame(sd, battle_config.fame_refine_lv1); // Success to refine to +10 a lv1 weapon you forged = +1 fame point
 							break;
 						case 2:
-							pc_addfame(sd,25); // Success to refine to +10 a lv2 weapon you forged = +25 fame point
+							pc_addfame(sd, battle_config.fame_refine_lv2); // Success to refine to +10 a lv2 weapon you forged = +25 fame point
 							break;
 						case 3:
-							pc_addfame(sd,1000); // Success to refine to +10 a lv3 weapon you forged = +1000 fame point
+							pc_addfame(sd, battle_config.fame_refine_lv3); // Success to refine to +10 a lv3 weapon you forged = +1000 fame point
 							break;
 					}
 				}
@@ -17926,7 +17926,7 @@ int skill_produce_mix (struct map_session_data *sd, uint16 skill_id, int nameid,
 			clif_produceeffect(sd,0,nameid);
 			clif_misceffect(&sd->bl,3);
 			if(itemdb_wlv(nameid) >= 3 && ((ele? 1 : 0) + sc) >= 3) // Fame point system [DracoRPG]
-				pc_addfame(sd,10); // Success to forge a lv3 weapon with 3 additional ingredients = +10 fame point
+				pc_addfame(sd, battle_config.fame_forge); // Success to forge a lv3 weapon with 3 additional ingredients = +10 fame point
 		} else {
 			int fame = 0;
 			tmp_item.amount = 0;
@@ -17948,16 +17948,16 @@ int skill_produce_mix (struct map_session_data *sd, uint16 skill_id, int nameid,
 					//Add fame as needed.
 					switch(++sd->potion_success_counter) {
 						case 3:
-							fame+=1; // Success to prepare 3 Condensed Potions in a row
+							fame += battle_config.fame_pharmacy_3; // Success to prepare 3 Condensed Potions in a row
 							break;
 						case 5:
-							fame+=3; // Success to prepare 5 Condensed Potions in a row
+							fame += battle_config.fame_pharmacy_5; // Success to prepare 5 Condensed Potions in a row
 							break;
 						case 7:
-							fame+=10; // Success to prepare 7 Condensed Potions in a row
+							fame += battle_config.fame_pharmacy_7; // Success to prepare 7 Condensed Potions in a row
 							break;
 						case 10:
-							fame+=50; // Success to prepare 10 Condensed Potions in a row
+							fame += battle_config.fame_pharmacy_10; // Success to prepare 10 Condensed Potions in a row
 							sd->potion_success_counter = 0;
 							break;
 					}
diff --git a/src/map/status.c b/src/map/status.c
index c99b744da7..fd2f9ea815 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -2575,10 +2575,8 @@ static int status_get_hpbonus(struct block_list *bl, enum e_status_bonus type) {
 			int8 i;
 
 			bonus += sd->bonus.hp;
-			if ((i=pc_checkskill(sd,CR_TRUST)) > 0)
+			if ((i = pc_checkskill(sd,CR_TRUST)) > 0)
 				bonus += i * 200;
-			if ((sd->class_&MAPID_UPPERMASK) == MAPID_TAEKWON && sd->status.base_level >= 90 && pc_famerank(sd->status.char_id, MAPID_TAEKWON))
-				bonus *= 3; // Triple max HP for top ranking Taekwons over level 90.
 			if ((sd->class_&MAPID_UPPERMASK) == MAPID_SUPER_NOVICE && sd->status.base_level >= 99)
 				bonus += 2000; // Supernovice lvl99 hp bonus.
 		}
@@ -2608,7 +2606,7 @@ static int status_get_hpbonus(struct block_list *bl, enum e_status_bonus type) {
 			bonus -= 100; //Default hprate is 100, so it should be add 0%
 
 			//+200% for top ranking Taekwons over level 90.
-			if ((sd->class_&MAPID_UPPERMASK) == MAPID_TAEKWON && sd->status.base_level >= 90 && pc_famerank(sd->status.char_id,MAPID_TAEKWON))
+			if ((sd->class_&MAPID_UPPERMASK) == MAPID_TAEKWON && sd->status.base_level >= battle_config.taekwon_ranker_min_lv && pc_famerank(sd->status.char_id,MAPID_TAEKWON))
 				bonus += 200;
 		}
 
@@ -2719,7 +2717,7 @@ static int status_get_spbonus(struct block_list *bl, enum e_status_bonus type) {
 				bonus += 2 * i;
 
 			//+200% for top ranking Taekwons over level 90.
-			if ((sd->class_&MAPID_UPPERMASK) == MAPID_TAEKWON && sd->status.base_level >= 90 && pc_famerank(sd->status.char_id, MAPID_TAEKWON))
+			if ((sd->class_&MAPID_UPPERMASK) == MAPID_TAEKWON && sd->status.base_level >= battle_config.taekwon_ranker_min_lv && pc_famerank(sd->status.char_id, MAPID_TAEKWON))
 				bonus += 200;
 		}