diff options
Diffstat (limited to 'src/map/pc.c')
-rw-r--r-- | src/map/pc.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/map/pc.c b/src/map/pc.c index 94d505c15..7d93442cb 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -854,6 +854,8 @@ int pc_isequip(struct map_session_data *sd,int n) return 0; if(item->equip & EQP_HEAD_TOP && sd->sc.data[SC_STRIPHELM]) return 0; + if(item->equip & EQP_ACC && sd->sc.data[SC__STRIPACCESSORY]) + return 0; if (sd->sc.data[SC_SPIRIT] && sd->sc.data[SC_SPIRIT]->val2 == SL_SUPERNOVICE) { //Spirit of Super Novice equip bonuses. [Skotlex] @@ -1156,7 +1158,16 @@ int pc_reg_received(struct map_session_data *sd) sd->status.skill[sd->cloneskill_id].flag = SKILL_FLAG_PLAGIARIZED; } } - + if ((i = pc_checkskill(sd,SC_REPRODUCE)) > 0) { + sd->reproduceskill_id = pc_readglobalreg(sd,"REPRODUCE_SKILL"); + if( sd->reproduceskill_id > 0) { + sd->status.skill[sd->reproduceskill_id].id = sd->reproduceskill_id; + sd->status.skill[sd->reproduceskill_id].lv = pc_readglobalreg(sd,"REPRODUCE_SKILL_LV"); + if( i < sd->status.skill[sd->reproduceskill_id].lv) + sd->status.skill[sd->reproduceskill_id].lv = i; + sd->status.skill[sd->reproduceskill_id].flag = 13; + } + } //Weird... maybe registries were reloaded? if (sd->state.active) return 0; @@ -6644,6 +6655,17 @@ int pc_jobchange(struct map_session_data *sd,int job, int upper) pc_setglobalreg(sd, "CLONE_SKILL", 0); pc_setglobalreg(sd, "CLONE_SKILL_LV", 0); } + if(sd->reproduceskill_id) { + if( sd->status.skill[sd->reproduceskill_id].flag == SKILL_FLAG_PLAGIARIZED ) { + sd->status.skill[sd->reproduceskill_id].id = 0; + sd->status.skill[sd->reproduceskill_id].lv = 0; + sd->status.skill[sd->reproduceskill_id].flag = 0; + clif_deleteskill(sd,sd->reproduceskill_id); + } + sd->reproduceskill_id = 0; + pc_setglobalreg(sd, "REPRODUCE_SKILL",0); + pc_setglobalreg(sd, "REPRODUCE_SKILL_LV",0); + } if ((b_class&&MAPID_UPPERMASK) != (sd->class_&MAPID_UPPERMASK)) { //Things to remove when changing class tree. const int class_ = pc_class2idx(sd->status.class_); |