From a8a44254e17b7fae8bb616f91cdc5a1c17710f1e Mon Sep 17 00:00:00 2001 From: Cydh Ramdh Date: Sun, 8 Jun 2014 17:03:27 +0700 Subject: [PATCH] * Bug Fixes & Misc -- Compiling errors when VIP_ENABLE (bugreport:9013) -- Taekwon skills leftover when player was in Taekwon Ranker then changes to other job (bugreport:8973) -- Follow up f511107.Fixed parentheses statement. -- Follow up 6afcdeb. Updated check for char table. -- Follow up 794c1a8. Wrong SC constanta order. * Battle Config Updates -- 'transcendent_status_points', stat point bonus for trans classes. -- 'revive_onwarp', disable/enable to revive a dead player when set new position (warping). -- 'taekwon_ranker_min_lv', minimum level bonus of Taekwon Ranker. -- 'fame_taekwon_mission', fame point gained when complete Taekwon Mission. -- 'fame_refine_lv1', fame point when success to refine to +10 forged weapon level 1. -- 'fame_refine_lv2', fame point when success to refine to +10 forged weapon level 2. -- 'fame_refine_lv3', fame point when success to refine to +10 forged weapon level 3. -- 'fame_forge', fame point when success to forge level 3 weapon with 3 additional ingredients. -- 'fame_pharmacy_3', fame point when success do pharmacy 3 times in a row. -- 'fame_pharmacy_5', fame point when success do pharmacy 5 times in a row. -- 'fame_pharmacy_7', fame point when success do pharmacy 7 times in a row. -- 'fame_pharmacy_10', fame point when success do pharmacy 8 times in a row. Signed-off-by: Cydh Ramdh --- conf/battle/player.conf | 26 +++++++++++++++++++ db/const.txt | 4 +-- src/char/char.c | 3 ++- src/char/char_logif.c | 2 +- src/char/char_mapif.c | 6 ++--- src/char/char_mapif.h | 1 - src/common/mmo.h | 16 +++++++++--- src/config/core.h | 6 ----- src/map/atcommand.c | 2 +- src/map/battle.c | 13 ++++++++++ src/map/battle.h | 14 +++++++++++ src/map/mob.c | 8 +++--- src/map/pc.c | 55 +++++++++++++++++++++++++++-------------- src/map/pc.h | 3 +-- src/map/script.c | 6 ++--- src/map/skill.c | 18 +++++++------- src/map/status.c | 8 +++--- 17 files changed, 130 insertions(+), 61 deletions(-) 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; }