From 07f30b83a3cadb1cfac99a34accbdf86f6594cd6 Mon Sep 17 00:00:00 2001 From: Kenpachi Developer Date: Sat, 25 Jan 2020 05:38:02 +0100 Subject: Updated PR_STRECOVERY to only cure status effects if target's defence element is not Undead. --- src/map/skill.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/map/skill.c b/src/map/skill.c index 4579b2ea7..783dbc268 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -7310,14 +7310,18 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list * clif->skill_nodamage(src,bl,skill_id,skill_lv,0); break; } - if (tsc && tsc->opt1) { - status_change_end(bl, SC_FREEZE, INVALID_TIMER); - status_change_end(bl, SC_STONE, INVALID_TIMER); - status_change_end(bl, SC_SLEEP, INVALID_TIMER); - status_change_end(bl, SC_STUN, INVALID_TIMER); - status_change_end(bl, SC_WHITEIMPRISON, INVALID_TIMER); + + if (!battle->check_undead(tstatus->race, tstatus->def_ele)) { + if (tsc != NULL && tsc->opt1 != 0) { + status_change_end(bl, SC_FREEZE, INVALID_TIMER); + status_change_end(bl, SC_STONE, INVALID_TIMER); + status_change_end(bl, SC_SLEEP, INVALID_TIMER); + status_change_end(bl, SC_STUN, INVALID_TIMER); + status_change_end(bl, SC_WHITEIMPRISON, INVALID_TIMER); + } + + status_change_end(bl, SC_NETHERWORLD, INVALID_TIMER); } - status_change_end(bl, SC_NETHERWORLD, INVALID_TIMER); //Is this equation really right? It looks so... special. if( battle->check_undead(tstatus->race,tstatus->def_ele) ) { status->change_start(src, bl, SC_BLIND, -- cgit v1.2.3-70-g09d2 From abc433ecf88c65a7f81fd070a1e343c105774eb6 Mon Sep 17 00:00:00 2001 From: Kenpachi Developer Date: Sat, 25 Jan 2020 06:04:13 +0100 Subject: Applied code style to PR_STRECOVERY. --- src/map/skill.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/map/skill.c b/src/map/skill.c index 783dbc268..6106f84ad 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -7306,8 +7306,8 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list * break; case PR_STRECOVERY: - if(status->isimmune(bl)) { - clif->skill_nodamage(src,bl,skill_id,skill_lv,0); + if (status->isimmune(bl) != 0) { + clif->skill_nodamage(src, bl, skill_id, skill_lv, 0); break; } @@ -7321,16 +7321,19 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list * } status_change_end(bl, SC_NETHERWORLD, INVALID_TIMER); + } else { + int rate = 100 * (100 - (tstatus->int_ / 2 + tstatus->vit / 3 + tstatus->luk / 10)); + int duration = skill->get_time2(skill_id, skill_lv); + + duration *= (100 - (tstatus->int_ + tstatus->vit) / 2) / 100; + status->change_start(src, bl, SC_BLIND, rate, 1, 0, 0, 0, duration, SCFLAG_NONE); } - //Is this equation really right? It looks so... special. - if( battle->check_undead(tstatus->race,tstatus->def_ele) ) { - status->change_start(src, bl, SC_BLIND, - 100*(100-(tstatus->int_/2+tstatus->vit/3+tstatus->luk/10)), 1,0,0,0, - skill->get_time2(skill_id, skill_lv) * (100-(tstatus->int_+tstatus->vit)/2)/100,SCFLAG_NONE); - } - clif->skill_nodamage(src,bl,skill_id,skill_lv,1); - if(dstmd) - mob->unlocktarget(dstmd,tick); + + clif->skill_nodamage(src, bl, skill_id, skill_lv, 1); + + if (dstmd != NULL) + mob->unlocktarget(dstmd, tick); + break; // Mercenary Supportive Skills -- cgit v1.2.3-70-g09d2