From 51fd6b4def852bbdc9f53cff6f42206ce270287e Mon Sep 17 00:00:00 2001 From: Michieru Date: Sun, 14 Sep 2014 17:20:07 +0200 Subject: Storm Gust freeze chance is only 150% and not 300% (Thanks to Playtester) Spiral Pierce should hitlock to 100% but not work on bosses (Thanks to Playtester) Implemented the official formula for Potion Pitcher when used by monsters (Thanks to Playtester) Golden Thief Bug card should not immune masquerades Desperado should not be reflect by Shield Reflect (bug:7624) --- src/map/battle.c | 2 +- src/map/skill.c | 16 ++++++++++++---- src/map/status.c | 6 ------ 3 files changed, 13 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/map/battle.c b/src/map/battle.c index b969f3cc6..07a195503 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -5461,7 +5461,7 @@ void battle_reflect_damage(struct block_list *target, struct block_list *src, st if( wd->dmg_lv >= ATK_BLOCK ) {/* yes block still applies, somehow gravity thinks it makes sense. */ if( sc ) { - if( sc->data[SC_REFLECTSHIELD] && skill_id != WS_CARTTERMINATION ) { + if( sc->data[SC_REFLECTSHIELD] && skill_id != WS_CARTTERMINATION && skill_id != GS_DESPERADO ) { NORMALIZE_RDAMAGE(damage * sc->data[SC_REFLECTSHIELD]->val2 / 100); #ifndef RENEWAL diff --git a/src/map/skill.c b/src/map/skill.c index 7e27cc17c..27758201c 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -838,9 +838,9 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1 #ifdef RENEWAL sc_start(src,bl,SC_FREEZE,65-(5*skill_lv),skill_lv,skill->get_time2(skill_id,skill_lv)); #else - // [Tharis] pointed out that this is normal freeze chance with a base of 300% + //On third hit, there is a 150% to freeze the target if(tsc->sg_counter >= 3 && - sc_start(src,bl,SC_FREEZE,300,skill_lv,skill->get_time2(skill_id,skill_lv))) + sc_start(src,bl,SC_FREEZE,150,skill_lv,skill->get_time2(skill_id,skill_lv))) tsc->sg_counter = 0; /** * being it only resets on success it'd keep stacking and eventually overflowing on mvps, so we reset at a high value @@ -1006,7 +1006,8 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1 case LK_SPIRALPIERCE: case ML_SPIRALPIERCE: - sc_start(src,bl,SC_ANKLESNARE,100,0,skill->get_time2(skill_id,skill_lv)); + if( dstsd || ( dstmd && !is_boss(bl) ) ) //Does not work on bosses + sc_start(src,bl,SC_STOP,100,0,skill_get_time2(skill_id,skill_lv)); break; case ST_REJECTSWORD: @@ -6745,7 +6746,14 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin sp += sp * i / 100; } } else { - hp = (1 + rnd()%400) * (100 + skill_lv*10) / 100; + //Maybe replace with potion_hp, but I'm unsure how that works [Playtester] + switch (skill_lv) { + case 1: hp = 45; break; + case 2: hp = 105; break; + case 3: hp = 175; break; + default: hp = 325; break; + } + hp = (hp + rnd()%(skill_lv*20+1)) * (150 + skill_lv*10) / 100; hp = hp * (100 + (tstatus->vit<<1)) / 100; if( dstsd ) hp = hp * (100 + pc->checkskill(dstsd,SM_RECOVERY)*10) / 100; diff --git a/src/map/status.c b/src/map/status.c index a02989699..4c136f870 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -6333,12 +6333,6 @@ int status_get_sc_def(struct block_list *src, struct block_list *bl, enum sc_typ case SC_QUAGMIRE: case SC_NJ_SUITON: case SC_SWING: - case SC__ENERVATION: - case SC__GROOMY: - case SC__IGNORANCE: - case SC__LAZINESS: - case SC__UNLUCKY: - case SC__WEAKNESS: return 0; } -- cgit v1.2.3-60-g2f50