aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMalcrom <malcromdev@gmail.com>2012-05-13 11:33:42 -0230
committerMalcrom <malcromdev@gmail.com>2012-05-13 11:33:42 -0230
commit5709929d2b575e83f427c7f48cd6bd0d7ed1b29d (patch)
treec84562cbbe8a8eeb58d6f61e0623ff81f7b2ec26 /src
parent7190b1f33680a08fd311840c517388b92eaaba0f (diff)
Core/Threat: Fix by faq.
Turning gm on, now drops threat. Dead mobs no longer holds threat on player. Also fixed some Engrish.
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Combat/ThreatManager.cpp4
-rwxr-xr-xsrc/server/game/Entities/Creature/Creature.cpp10
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.cpp9
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.h2
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp2
-rw-r--r--src/server/scripts/Spells/spell_item.cpp2
6 files changed, 18 insertions, 11 deletions
diff --git a/src/server/game/Combat/ThreatManager.cpp b/src/server/game/Combat/ThreatManager.cpp
index e604eaf9024..104d2d3d52b 100755
--- a/src/server/game/Combat/ThreatManager.cpp
+++ b/src/server/game/Combat/ThreatManager.cpp
@@ -535,6 +535,10 @@ void ThreatManager::processThreatEvent(ThreatRefStatusChangeEvent* threatRefStat
setCurrentVictim(NULL);
setDirty(true);
}
+ if (getOwner() && getOwner()->IsInWorld())
+ if (Unit* target = ObjectAccessor::GetUnit(*getOwner(), hostilRef->getUnitGuid()))
+ if (getOwner()->IsInMap(target))
+ getOwner()->SendRemoveFromThreatListOpcode(hostilRef);
iThreatContainer.remove(hostilRef);
iThreatOfflineContainer.addReference(hostilRef);
}
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index acdf2b16f2a..d120713636d 100755
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -468,9 +468,9 @@ void Creature::Update(uint32 diff)
switch (m_deathState)
{
- case JUST_ALIVED:
- // Must not be called, see Creature::setDeathState JUST_ALIVED -> ALIVE promoting.
- sLog->outError("Creature (GUID: %u Entry: %u) in wrong state: JUST_ALIVED (4)", GetGUIDLow(), GetEntry());
+ case JUST_RESPAWNED:
+ // Must not be called, see Creature::setDeathState JUST_RESPAWNED -> ALIVE promoting.
+ sLog->outError("Creature (GUID: %u Entry: %u) in wrong state: JUST_RESPAWNED (4)", GetGUIDLow(), GetEntry());
break;
case JUST_DIED:
// Must not be called, see Creature::setDeathState JUST_DIED -> CORPSE promoting.
@@ -1555,7 +1555,7 @@ void Creature::setDeathState(DeathState s)
Unit::setDeathState(CORPSE);
}
- else if (s == JUST_ALIVED)
+ else if (s == JUST_RESPAWNED)
{
//if (isPet())
// setActive(true);
@@ -1611,7 +1611,7 @@ void Creature::Respawn(bool force)
CreatureTemplate const* cinfo = GetCreatureTemplate();
SelectLevel(cinfo);
- setDeathState(JUST_ALIVED);
+ setDeathState(JUST_RESPAWNED);
uint32 displayID = GetNativeDisplayId();
CreatureModelInfo const* minfo = sObjectMgr->GetCreatureModelRandomGender(&displayID);
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 1783db9b14e..18b4b79a502 100755
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -12823,9 +12823,8 @@ void Unit::setDeathState(DeathState s)
{
// death state needs to be updated before RemoveAllAurasOnDeath() calls HandleChannelDeathItem(..) so that
// it can be used to check creation of death items (such as soul shards).
- m_deathState = s;
- if (s != ALIVE && s != JUST_ALIVED)
+ if (s != ALIVE && s != JUST_RESPAWNED)
{
CombatStop();
DeleteThreatList();
@@ -12868,8 +12867,12 @@ void Unit::setDeathState(DeathState s)
if (ZoneScript* zoneScript = GetZoneScript() ? GetZoneScript() : (ZoneScript*)GetInstanceScript())
zoneScript->OnUnitDeath(this);
}
- else if (s == JUST_ALIVED)
+ else if (s == JUST_RESPAWNED)
+ {
RemoveFlag (UNIT_FIELD_FLAGS, UNIT_FLAG_SKINNABLE); // clear skinnable for creature and player (at battleground)
+ }
+
+ m_deathState = s;
}
/*########################################
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index c3cfc415c41..2d6c5b1a86e 100755
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -465,7 +465,7 @@ enum DeathState
JUST_DIED = 1,
CORPSE = 2,
DEAD = 3,
- JUST_ALIVED = 4,
+ JUST_RESPAWNED = 4,
};
enum UnitState
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
index 5b208768b0c..fab9a5f0740 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
@@ -1290,7 +1290,7 @@ struct npc_argent_captainAI : public ScriptedAI
if (spell->Id == SPELL_REVIVE_CHAMPION && !IsUndead)
{
IsUndead = true;
- me->setDeathState(JUST_ALIVED);
+ me->setDeathState(JUST_RESPAWNED);
uint32 newEntry = 0;
switch (me->GetEntry())
{
diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp
index eb2d3187636..045ae5a6f9a 100644
--- a/src/server/scripts/Spells/spell_item.cpp
+++ b/src/server/scripts/Spells/spell_item.cpp
@@ -1095,7 +1095,7 @@ class spell_item_shimmering_vessel : public SpellScriptLoader
void HandleDummy(SpellEffIndex /* effIndex */)
{
if (Creature* target = GetHitCreature())
- target->setDeathState(JUST_ALIVED);
+ target->setDeathState(JUST_RESPAWNED);
}
void Register()