From 06e2f76c05df895cce895d0046c0e9d2b3eac1ca Mon Sep 17 00:00:00 2001 From: "Michael Cook (mackal)" Date: Sat, 5 Nov 2016 14:08:00 -0400 Subject: [PATCH] Implement SE_SummonToCorpse --- common/spdat.h | 2 +- zone/spell_effects.cpp | 1 + zone/worldserver.cpp | 8 +++++--- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/common/spdat.h b/common/spdat.h index 2734f6078..edb750f2a 100644 --- a/common/spdat.h +++ b/common/spdat.h @@ -485,7 +485,7 @@ typedef enum { #define SE_ManaAbsorbPercentDamage 329 // implemented #define SE_CriticalDamageMob 330 // implemented #define SE_Salvage 331 // implemented - chance to recover items that would be destroyed in failed tradeskill combine -//#define SE_SummonToCorpse 332 // *not implemented AA - Call of the Wild (Druid/Shaman Res spell with no exp) +#define SE_SummonToCorpse 332 // *not implemented AA - Call of the Wild (Druid/Shaman Res spell with no exp) #define SE_CastOnRuneFadeEffect 333 // implemented #define SE_BardAEDot 334 // implemented #define SE_BlockNextSpellFocus 335 // implemented - base1 chance to block next spell ie Puratus (8494) diff --git a/zone/spell_effects.cpp b/zone/spell_effects.cpp index 841457bdc..a2a66f9ae 100644 --- a/zone/spell_effects.cpp +++ b/zone/spell_effects.cpp @@ -1650,6 +1650,7 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial, int level_ove break; } + case SE_SummonToCorpse: case SE_Revive: { #ifdef SPELL_EFFECT_SPAM diff --git a/zone/worldserver.cpp b/zone/worldserver.cpp index 28f3c5ab8..84d4cb399 100644 --- a/zone/worldserver.cpp +++ b/zone/worldserver.cpp @@ -722,10 +722,12 @@ void WorldServer::Process() { Log.Out(Logs::Detail, Logs::Spells, "OP_RezzComplete received in zone %s for corpse %s", zone->GetShortName(), srs->rez.corpse_name); - Log.Out(Logs::Detail, Logs::Spells, "Found corpse. Marking corpse as rezzed."); + Log.Out(Logs::Detail, Logs::Spells, "Found corpse. Marking corpse as rezzed if needed."); // I don't know why Rezzed is not set to true in CompleteRezz(). - corpse->IsRezzed(true); - corpse->CompleteResurrection(); + if (!IsEffectInSpell(srs->rez.spellid, SE_SummonToCorpse)) { + corpse->IsRezzed(true); + corpse->CompleteResurrection(); + } } }