summaryrefslogtreecommitdiff
path: root/src/map/pc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/map/pc.c')
-rw-r--r--src/map/pc.c24
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_);