summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/map/battle.c2
-rw-r--r--src/map/skill.c16
-rw-r--r--src/map/status.c6
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;
}