diff options
Diffstat (limited to 'src/map')
-rw-r--r-- | src/map/battle.c | 2 | ||||
-rw-r--r-- | src/map/skill.c | 16 | ||||
-rw-r--r-- | src/map/status.c | 6 |
3 files changed, 13 insertions, 11 deletions
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; } |