Scripts/Misc: Migrate world event scripts to separate files 2
Port From (https://github.com/TrinityCore/TrinityCore/commit/4281049e0c0d38a968d1d37bdd3ec04e35b81850)
This commit is contained in:
@@ -176,21 +176,6 @@ namespace Scripts.World.NpcSpecial
|
||||
public const uint HowlingFjord = 67838;
|
||||
public const uint Underground = 68081;
|
||||
|
||||
//Fireworks
|
||||
public const uint RocketBlue = 26344;
|
||||
public const uint RocketGreen = 26345;
|
||||
public const uint RocketPurple = 26346;
|
||||
public const uint RocketRed = 26347;
|
||||
public const uint RocketWhite = 26348;
|
||||
public const uint RocketYellow = 26349;
|
||||
public const uint RocketBigBlue = 26351;
|
||||
public const uint RocketBigGreen = 26352;
|
||||
public const uint RocketBigPurple = 26353;
|
||||
public const uint RocketBigRed = 26354;
|
||||
public const uint RocketBigWhite = 26355;
|
||||
public const uint RocketBigYellow = 26356;
|
||||
public const uint LunarFortune = 26522;
|
||||
|
||||
//Rabbitspells
|
||||
public const uint SpringFling = 61875;
|
||||
public const uint SpringRabbitJump = 61724;
|
||||
@@ -1531,217 +1516,6 @@ namespace Scripts.World.NpcSpecial
|
||||
}
|
||||
}
|
||||
|
||||
[Script]
|
||||
class npc_firework : ScriptedAI
|
||||
{
|
||||
public npc_firework(Creature creature) : base(creature) { }
|
||||
|
||||
bool isCluster()
|
||||
{
|
||||
switch (me.GetEntry())
|
||||
{
|
||||
case CreatureIds.FireworkBlue:
|
||||
case CreatureIds.FireworkGreen:
|
||||
case CreatureIds.FireworkPurple:
|
||||
case CreatureIds.FireworkRed:
|
||||
case CreatureIds.FireworkYellow:
|
||||
case CreatureIds.FireworkWhite:
|
||||
case CreatureIds.FireworkBigBlue:
|
||||
case CreatureIds.FireworkBigGreen:
|
||||
case CreatureIds.FireworkBigPurple:
|
||||
case CreatureIds.FireworkBigRed:
|
||||
case CreatureIds.FireworkBigYellow:
|
||||
case CreatureIds.FireworkBigWhite:
|
||||
return false;
|
||||
case CreatureIds.ClusterBlue:
|
||||
case CreatureIds.ClusterGreen:
|
||||
case CreatureIds.ClusterPurple:
|
||||
case CreatureIds.ClusterRed:
|
||||
case CreatureIds.ClusterYellow:
|
||||
case CreatureIds.ClusterWhite:
|
||||
case CreatureIds.ClusterBigBlue:
|
||||
case CreatureIds.ClusterBigGreen:
|
||||
case CreatureIds.ClusterBigPurple:
|
||||
case CreatureIds.ClusterBigRed:
|
||||
case CreatureIds.ClusterBigYellow:
|
||||
case CreatureIds.ClusterBigWhite:
|
||||
case CreatureIds.ClusterElune:
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
GameObject FindNearestLauncher()
|
||||
{
|
||||
GameObject launcher = null;
|
||||
|
||||
if (isCluster())
|
||||
{
|
||||
GameObject launcher1 = GetClosestGameObjectWithEntry(me, GameobjectIds.ClusterLauncher1, 0.5f);
|
||||
GameObject launcher2 = GetClosestGameObjectWithEntry(me, GameobjectIds.ClusterLauncher2, 0.5f);
|
||||
GameObject launcher3 = GetClosestGameObjectWithEntry(me, GameobjectIds.ClusterLauncher3, 0.5f);
|
||||
GameObject launcher4 = GetClosestGameObjectWithEntry(me, GameobjectIds.ClusterLauncher4, 0.5f);
|
||||
|
||||
if (launcher1)
|
||||
launcher = launcher1;
|
||||
else if (launcher2)
|
||||
launcher = launcher2;
|
||||
else if (launcher3)
|
||||
launcher = launcher3;
|
||||
else if (launcher4)
|
||||
launcher = launcher4;
|
||||
}
|
||||
else
|
||||
{
|
||||
GameObject launcher1 = GetClosestGameObjectWithEntry(me, GameobjectIds.FireworkLauncher1, 0.5f);
|
||||
GameObject launcher2 = GetClosestGameObjectWithEntry(me, GameobjectIds.FireworkLauncher2, 0.5f);
|
||||
GameObject launcher3 = GetClosestGameObjectWithEntry(me, GameobjectIds.FireworkLauncher3, 0.5f);
|
||||
|
||||
if (launcher1)
|
||||
launcher = launcher1;
|
||||
else if (launcher2)
|
||||
launcher = launcher2;
|
||||
else if (launcher3)
|
||||
launcher = launcher3;
|
||||
}
|
||||
|
||||
return launcher;
|
||||
}
|
||||
|
||||
uint GetFireworkSpell(uint entry)
|
||||
{
|
||||
switch (entry)
|
||||
{
|
||||
case CreatureIds.FireworkBlue:
|
||||
return SpellIds.RocketBlue;
|
||||
case CreatureIds.FireworkGreen:
|
||||
return SpellIds.RocketGreen;
|
||||
case CreatureIds.FireworkPurple:
|
||||
return SpellIds.RocketPurple;
|
||||
case CreatureIds.FireworkRed:
|
||||
return SpellIds.RocketRed;
|
||||
case CreatureIds.FireworkYellow:
|
||||
return SpellIds.RocketYellow;
|
||||
case CreatureIds.FireworkWhite:
|
||||
return SpellIds.RocketWhite;
|
||||
case CreatureIds.FireworkBigBlue:
|
||||
return SpellIds.RocketBigBlue;
|
||||
case CreatureIds.FireworkBigGreen:
|
||||
return SpellIds.RocketBigGreen;
|
||||
case CreatureIds.FireworkBigPurple:
|
||||
return SpellIds.RocketBigPurple;
|
||||
case CreatureIds.FireworkBigRed:
|
||||
return SpellIds.RocketBigRed;
|
||||
case CreatureIds.FireworkBigYellow:
|
||||
return SpellIds.RocketBigYellow;
|
||||
case CreatureIds.FireworkBigWhite:
|
||||
return SpellIds.RocketBigWhite;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
uint GetFireworkGameObjectId()
|
||||
{
|
||||
uint spellId = 0;
|
||||
|
||||
switch (me.GetEntry())
|
||||
{
|
||||
case CreatureIds.ClusterBlue:
|
||||
spellId = GetFireworkSpell(CreatureIds.FireworkBlue);
|
||||
break;
|
||||
case CreatureIds.ClusterGreen:
|
||||
spellId = GetFireworkSpell(CreatureIds.FireworkGreen);
|
||||
break;
|
||||
case CreatureIds.ClusterPurple:
|
||||
spellId = GetFireworkSpell(CreatureIds.FireworkPurple);
|
||||
break;
|
||||
case CreatureIds.ClusterRed:
|
||||
spellId = GetFireworkSpell(CreatureIds.FireworkRed);
|
||||
break;
|
||||
case CreatureIds.ClusterYellow:
|
||||
spellId = GetFireworkSpell(CreatureIds.FireworkYellow);
|
||||
break;
|
||||
case CreatureIds.ClusterWhite:
|
||||
spellId = GetFireworkSpell(CreatureIds.FireworkWhite);
|
||||
break;
|
||||
case CreatureIds.ClusterBigBlue:
|
||||
spellId = GetFireworkSpell(CreatureIds.FireworkBigBlue);
|
||||
break;
|
||||
case CreatureIds.ClusterBigGreen:
|
||||
spellId = GetFireworkSpell(CreatureIds.FireworkBigGreen);
|
||||
break;
|
||||
case CreatureIds.ClusterBigPurple:
|
||||
spellId = GetFireworkSpell(CreatureIds.FireworkBigPurple);
|
||||
break;
|
||||
case CreatureIds.ClusterBigRed:
|
||||
spellId = GetFireworkSpell(CreatureIds.FireworkBigRed);
|
||||
break;
|
||||
case CreatureIds.ClusterBigYellow:
|
||||
spellId = GetFireworkSpell(CreatureIds.FireworkBigYellow);
|
||||
break;
|
||||
case CreatureIds.ClusterBigWhite:
|
||||
spellId = GetFireworkSpell(CreatureIds.FireworkBigWhite);
|
||||
break;
|
||||
case CreatureIds.ClusterElune:
|
||||
spellId = GetFireworkSpell(RandomHelper.URand(CreatureIds.FireworkBlue, CreatureIds.FireworkWhite));
|
||||
break;
|
||||
}
|
||||
|
||||
SpellInfo spellInfo = Global.SpellMgr.GetSpellInfo(spellId, Difficulty.None);
|
||||
if (spellInfo != null && spellInfo.GetEffect(0).Effect == SpellEffectName.SummonObjectWild)
|
||||
return (uint)spellInfo.GetEffect(0).MiscValue;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
public override void Reset()
|
||||
{
|
||||
GameObject launcher = FindNearestLauncher();
|
||||
if (launcher)
|
||||
{
|
||||
launcher.SendCustomAnim(Misc.AnimGoLaunchFirework);
|
||||
me.SetOrientation(launcher.GetOrientation() + MathFunctions.PI / 2);
|
||||
}
|
||||
else
|
||||
return;
|
||||
|
||||
if (isCluster())
|
||||
{
|
||||
// Check if we are near Elune'ara lake south, if so try to summon Omen or a minion
|
||||
if (me.GetZoneId() == Misc.ZoneMoonglade)
|
||||
{
|
||||
if (!me.FindNearestCreature(CreatureIds.Omen, 100.0f) && me.GetDistance2d(Misc.omenSummonPos.GetPositionX(), Misc.omenSummonPos.GetPositionY()) <= 100.0f)
|
||||
{
|
||||
switch (RandomHelper.URand(0, 9))
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
Creature minion = me.SummonCreature(CreatureIds.MinionOfOmen, me.GetPositionX() + RandomHelper.FRand(-5.0f, 5.0f), me.GetPositionY() + RandomHelper.FRand(-5.0f, 5.0f), me.GetPositionZ(), 0.0f, TempSummonType.CorpseTimedDespawn, TimeSpan.FromSeconds(20));
|
||||
if (minion)
|
||||
minion.GetAI().AttackStart(me.SelectNearestPlayer(20.0f));
|
||||
break;
|
||||
case 9:
|
||||
me.SummonCreature(CreatureIds.Omen, Misc.omenSummonPos);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (me.GetEntry() == CreatureIds.ClusterElune)
|
||||
DoCast(SpellIds.LunarFortune);
|
||||
|
||||
float displacement = 0.7f;
|
||||
for (byte i = 0; i < 4; i++)
|
||||
me.SummonGameObject(GetFireworkGameObjectId(), me.GetPositionX() + (i % 2 == 0 ? displacement : -displacement), me.GetPositionY() + (i > 1 ? displacement : -displacement), me.GetPositionZ() + 4.0f, me.GetOrientation(), Quaternion.CreateFromRotationMatrix(Extensions.fromEulerAnglesZYX(me.GetOrientation(), 0.0f, 0.0f)), TimeSpan.FromSeconds(1));
|
||||
}
|
||||
else
|
||||
//me.CastSpell(me, GetFireworkSpell(me.GetEntry()), true);
|
||||
me.CastSpell(me.GetPosition(), GetFireworkSpell(me.GetEntry()), new CastSpellExtraArgs(true));
|
||||
}
|
||||
}
|
||||
|
||||
[Script]
|
||||
class npc_spring_rabbit : ScriptedAI
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user