diff options
author | shennetsind <shennetsind@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2012-02-17 15:33:13 +0000 |
---|---|---|
committer | shennetsind <shennetsind@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2012-02-17 15:33:13 +0000 |
commit | 5cc9f30cbe8c57a97e58a5a3b5387622e4304873 (patch) | |
tree | fa7590892983540d46245781a83d9fb2a08ecaa4 /src/map/pc.c | |
parent | c021f63e10a7dca24119e436e2450e0bbb2266a3 (diff) | |
download | hercules-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.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_); |