* 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 <house.bad@gmail.com>
This commit is contained in:
parent
263c138f6d
commit
a8a44254e1
@ -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
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -7,7 +7,6 @@
|
||||
* @author rAthena Dev Team
|
||||
*/
|
||||
|
||||
|
||||
#ifndef CHAR_MAPIF_H
|
||||
#define CHAR_MAPIF_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_ */
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
/**
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
55
src/map/pc.c
55
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;
|
||||
}
|
||||
|
||||
/*==========================================
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user