Dynamic Creature/Go spawning

Port From (https://github.com/TrinityCore/TrinityCore/commit/03b125e6d1947258316c931499746696a95aded2)
This commit is contained in:
hondacrx
2020-08-23 21:52:32 -04:00
parent 8fc9c45d50
commit 15ae7a7c66
45 changed files with 3925 additions and 1963 deletions
@@ -96,7 +96,7 @@ namespace Scripts.Northrend.IcecrownCitadel
CreatureData data = creature.GetCreatureData();
if (data != null)
creature.UpdatePosition(data.posX, data.posY, data.posZ, data.orientation);
creature.UpdatePosition(data.spawnPoint);
creature.DespawnOrUnsummon();
creature.SetCorpseDelay(corpseDelay);
@@ -496,7 +496,7 @@ namespace Scripts.Northrend.IcecrownCitadel
Creature crusader = ObjectAccessor.GetCreature(me, instance.GetGuidData(DataTypes.CaptainArnath + i));
if (crusader)
{
if (crusader.IsAlive() && crusader.GetEntry() == crusader.GetCreatureData().id)
if (crusader.IsAlive() && crusader.GetEntry() == crusader.GetCreatureData().Id)
{
crusader.m_Events.AddEvent(new CaptainSurviveTalk(crusader), crusader.m_Events.CalculateTime(delay));
delay += 6000;
@@ -346,7 +346,7 @@ namespace Scripts.Northrend.IcecrownCitadel
// Weekly quest spawn prevention
public override uint GetCreatureEntry(ulong guidLow, CreatureData data)
{
uint entry = data.id;
uint entry = data.Id;
switch (entry)
{
case CreatureIds.InfiltratorMinchar:
@@ -384,13 +384,13 @@ namespace Scripts.Northrend.IcecrownCitadel
case CreatureIds.ZafodBoombox:
GameObjectTemplate go = Global.ObjectMgr.GetGameObjectTemplate(GameObjectIds.TheSkybreaker_A);
if (go != null)
if ((TeamInInstance == Team.Alliance && data.mapid == go.MoTransport.SpawnMap) ||
(TeamInInstance == Team.Horde && data.mapid != go.MoTransport.SpawnMap))
if ((TeamInInstance == Team.Alliance && data.spawnPoint.GetMapId() == go.MoTransport.SpawnMap) ||
(TeamInInstance == Team.Horde && data.spawnPoint.GetMapId() != go.MoTransport.SpawnMap))
return entry;
return 0;
case CreatureIds.IGBMuradinBrozebeard:
if ((TeamInInstance == Team.Alliance && data.posX > 10.0f) ||
(TeamInInstance == Team.Horde && data.posX < 10.0f))
if ((TeamInInstance == Team.Alliance && data.spawnPoint.GetPositionX() > 10.0f) ||
(TeamInInstance == Team.Horde && data.spawnPoint.GetPositionX() < 10.0f))
return entry;
return 0;
default: