Updates SC_CHANGEUNDEAD behavior (#6867)

* Fixes #6834.
* Versus Players
- Animation will be properly displayed for Blessing/Increase Agility when the target has Change Undead active (buffs are not applied even though animation is displayed).
- Target can no longer be killed through the single damage applied by Blessing/Increase Agility and Change Undead.
- If the target has Curse and Stone active, only Curse is removed by Blessing first (buffs are not applied).
- Shadow or Undead armor have no impact on Blessing or Increase Agility at all.
* Versus Monsters
- Blessing is applied normally to the target as long as it's not an Undead element or Demon race.
- Blessing does not cancel out Curse or Stone.
Thanks to @Playtester!
This commit is contained in:
Aleos
2022-04-22 11:46:28 -04:00
committed by GitHub
parent b42dbe4a9f
commit d617d9f083
3 changed files with 18 additions and 16 deletions

View File

@@ -3650,7 +3650,7 @@ int64 skill_attack (int attack_type, struct block_list* src, struct block_list *
if( (skill_id == AL_INCAGI || skill_id == AL_BLESSING ||
skill_id == CASH_BLESSING || skill_id == CASH_INCAGI ||
skill_id == MER_INCAGI || skill_id == MER_BLESSING) && tsd->sc.data[SC_CHANGEUNDEAD] )
skill_id == MER_INCAGI || skill_id == MER_BLESSING) && tsc && tsc->data[SC_CHANGEUNDEAD] )
damage = 1;
if( damage && tsc && tsc->data[SC_GENSOU] && dmg.flag&BF_MAGIC ){
@@ -7564,10 +7564,14 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
case AL_BLESSING:
case MER_INCAGI:
case MER_BLESSING:
if (dstsd != NULL && tsc->data[SC_CHANGEUNDEAD]) {
skill_attack(BF_MISC,src,src,bl,skill_id,skill_lv,tick,flag);
clif_skill_nodamage(src, bl, skill_id, skill_lv, 1);
if (dstsd != nullptr && tsc && tsc->data[SC_CHANGEUNDEAD]) {
if (tstatus->hp > 1)
skill_attack(BF_MISC,src,src,bl,skill_id,skill_lv,tick,flag);
break;
}
sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv));
break;
case PR_SLOWPOISON:
case PR_LEXAETERNA:
#ifndef RENEWAL