summaryrefslogtreecommitdiff
path: root/src/map/pc.c
diff options
context:
space:
mode:
authorshennetsind <shennetsind@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-02-17 15:33:13 +0000
committershennetsind <shennetsind@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-02-17 15:33:13 +0000
commit5cc9f30cbe8c57a97e58a5a3b5387622e4304873 (patch)
treefa7590892983540d46245781a83d9fb2a08ecaa4 /src/map/pc.c
parentc021f63e10a7dca24119e436e2450e0bbb2266a3 (diff)
downloadhercules-5cc9f30cbe8c57a97e58a5a3b5387622e4304873.tar.gz
hercules-5cc9f30cbe8c57a97e58a5a3b5387622e4304873.tar.bz2
hercules-5cc9f30cbe8c57a97e58a5a3b5387622e4304873.tar.xz
hercules-5cc9f30cbe8c57a97e58a5a3b5387622e4304873.zip
Initial support for Shadow Chaser and a few adjustments here and there.
- credits to 3ceam for the base - should you step by any bugs let us know, http://rathena.org/board/tracker git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@15589 54d463be-8e91-2dee-dedb-b68131a5f0ec
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_);