diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/map/pc.c | 11 | ||||
-rw-r--r-- | src/map/script.c | 10 | ||||
-rw-r--r-- | src/map/skill.c | 11 | ||||
-rw-r--r-- | src/map/status.c | 12 | ||||
-rw-r--r-- | src/map/status.h | 3 |
5 files changed, 26 insertions, 21 deletions
diff --git a/src/map/pc.c b/src/map/pc.c index a8ccc5c47..ce58ed4b9 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -4145,6 +4145,7 @@ int pc_useitem(struct map_session_data *sd,int n) sd->sc.data[SC_TRICKDEAD] || sd->sc.data[SC_HIDING] || sd->sc.data[SC__SHADOWFORM] || + sd->sc.data[SC__MANHOLE] || sd->sc.data[SC_KAGEHUMI] || (sd->sc.data[SC_NOCHAT] && sd->sc.data[SC_NOCHAT]->val1&MANNER_NOITEM) )) @@ -6957,14 +6958,8 @@ int pc_itemheal(struct map_session_data *sd,int itemid, int hp,int sp) sp += sp / 10; } #ifdef RENEWAL - if( sd->sc.data[SC_EXTREMITYFIST] ){ - const struct TimerData *timer; - int tick = skill_get_time2(MO_EXTREMITYFIST, sd->sc.data[SC_EXTREMITYFIST]->val1); - - timer = get_timer(sd->sc.data[SC_EXTREMITYFIST]->timer); - if( DIFF_TICK(tick, DIFF_TICK(timer->tick, gettick())) < 10000 )// 10 sec - sp = 0; - } + if( sd->sc.data[SC_EXTREMITYFIST2] ) + sp = 0; #endif } diff --git a/src/map/script.c b/src/map/script.c index c829df26e..36b83215a 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -5351,14 +5351,8 @@ BUILDIN_FUNC(percentheal) if( sd == NULL ) return 0; #ifdef RENEWAL - if( sd->sc.data[SC_EXTREMITYFIST] ){ - const struct TimerData *timer; - int tick = skill_get_time2(MO_EXTREMITYFIST, sd->sc.data[SC_EXTREMITYFIST]->val1); - - timer = get_timer(sd->sc.data[SC_EXTREMITYFIST]->timer); - if( DIFF_TICK(tick, DIFF_TICK(timer->tick, gettick())) < 10000 )// 10 sec - sp = 0; - } + if( sd->sc.data[SC_EXTREMITYFIST2] ) + sp = 0; #endif pc_percentheal(sd,hp,sp); return 0; diff --git a/src/map/skill.c b/src/map/skill.c index 29500b8b0..7937498ea 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -1700,7 +1700,7 @@ int skill_counter_additional_effect (struct block_list* src, struct block_list * switch(skillid){ case MO_EXTREMITYFIST: - sc_start(src,status_skill2sc(skillid),100,skilllv,skill_get_time2(skillid,skilllv)); + sc_start(src,SC_EXTREMITYFIST,100,skilllv,skill_get_time2(skillid,skilllv)); break; case GS_FULLBUSTER: sc_start(src,SC_BLIND,2*skilllv,skilllv,skill_get_time2(skillid,skilllv)); @@ -3634,6 +3634,9 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int { status_change_end(src, SC_EXPLOSIONSPIRITS, INVALID_TIMER); status_change_end(src, SC_BLADESTOP, INVALID_TIMER); +#ifdef RENEWAL + sc_start(src,SC_EXTREMITYFIST2,100,skilllv,skill_get_time(skillid,skilllv)); +#endif } //Client expects you to move to target regardless of distance { @@ -17497,7 +17500,11 @@ static void skill_readdb(void) sv_readdb(db_path, DBPATH"skill_db.txt" , ',', 17, 17, MAX_SKILL_DB, skill_parse_row_skilldb); sv_readdb(db_path, DBPATH"skill_require_db.txt" , ',', 32, 32, MAX_SKILL_DB, skill_parse_row_requiredb); - sv_readdb(db_path, DBPATH"skill_cast_db.txt" , ',', 7, 8, MAX_SKILL_DB, skill_parse_row_castdb); +#ifdef RENEWAL + sv_readdb(db_path, "re/skill_cast_db.txt" , ',', 8, 8, MAX_SKILL_DB, skill_parse_row_castdb); +#else + sv_readdb(db_path, "re-pre/skill_cast_db.txt" , ',', 7, 7, MAX_SKILL_DB, skill_parse_row_castdb); +#endif sv_readdb(db_path, DBPATH"skill_castnodex_db.txt", ',', 2, 3, MAX_SKILL_DB, skill_parse_row_castnodexdb); sv_readdb(db_path, DBPATH"skill_unit_db.txt" , ',', 8, 8, MAX_SKILL_DB, skill_parse_row_unitdb); diff --git a/src/map/status.c b/src/map/status.c index d6e96e522..585b90fe9 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -312,7 +312,10 @@ void initChangeTables(void) { add_sc( MO_BLADESTOP , SC_BLADESTOP_WAIT ); add_sc( MO_BLADESTOP , SC_BLADESTOP ); set_sc( MO_EXPLOSIONSPIRITS , SC_EXPLOSIONSPIRITS, SI_EXPLOSIONSPIRITS, SCB_CRI|SCB_REGEN ); - set_sc( MO_EXTREMITYFIST , SC_EXTREMITYFIST , SI_EXTREMITYFIST , SCB_REGEN ); + set_sc( MO_EXTREMITYFIST , SC_EXTREMITYFIST , SI_BLANK , SCB_REGEN ); +#ifdef RENEWAL + set_sc( MO_EXTREMITYFIST , SC_EXTREMITYFIST2 , SI_EXTREMITYFIST , SCB_NONE ); +#endif add_sc( SA_MAGICROD , SC_MAGICROD ); set_sc( SA_AUTOSPELL , SC_AUTOSPELL , SI_AUTOSPELL , SCB_NONE ); set_sc( SA_FLAMELAUNCHER , SC_FIREWEAPON , SI_FIREWEAPON , SCB_ATK_ELE ); @@ -6079,8 +6082,11 @@ int status_get_sc_def(struct block_list *bl, enum sc_type type, int rate, int ti rate -= (status_get_lv(bl) / 5 + status->vit / 4 + status->agi / 10)*100; // Lineal Reduction of Rate break; case SC_WHITEIMPRISON: - rate -= (status_get_lv(bl) / 5 + status->vit / 4 + status->agi / 10)*100; - if( tick != 5000) // not applied on caster + if( tick == 5000 ) // 100% on caster + break; + if( bl->type == BL_PC ) + tick -= (status_get_lv(bl) / 5 + status->vit / 4 + status->agi / 10)*100; + else tick -= (status->vit + status->luk) / 20 * 1000; break; case SC_BURNING: diff --git a/src/map/status.h b/src/map/status.h index 442d59986..8fa812432 100644 --- a/src/map/status.h +++ b/src/map/status.h @@ -635,6 +635,9 @@ typedef enum sc_type { SC_ZANGETSU, SC_GENSOU, SC_AKAITSUKI, +#ifdef RENEWAL + SC_EXTREMITYFIST2, +#endif SC_MAX, //Automatically updated max, used in for's to check we are within bounds. } sc_type; |