private static bool Blastenheimer5000Used(GameObject go, Character user) { var cast = user.SpellCast; cast.Start(CannonPrepId); user.IncMechanicCount(SpellMechanic.Rooted); switch (go.EntryId) { case (uint)Blastenheimer5000ElwynnId: { user.TeleportTo(ElwynnTelePosition, ElwynnTeleOrientation); } break; case (uint)Blastenheimer5000TerokkarId: { user.TeleportTo(TerokkarTelePosition, TerokkarTeleOrientation); } break; case (uint)Blastenheimer5000MulgoreId: { user.TeleportTo(MulgoreTelePosition, MulgoreTeleOrientation); } break; default: { user.DecMechanicCount(SpellMechanic.Rooted); return false; } } go.PlaySound(8476); user.CallDelayed(2000, obj => FireCannon(user)); return true; }
/// <summary> /// Called when owner learns about new enchant: /// When enchant gets added and when receiving an enchanted item /// </summary> private void OnOwnerReceivedNewEnchant(ItemEnchantment enchant) { Character owner = OwningCharacter; ItemHandler.SendEnchantLog(owner, (Asda2ItemId)EntryId, enchant.Entry.Id); if (enchant.Duration == 0) { return; } int totalMilliseconds = (int)enchant.RemainingTime.TotalMilliseconds; owner.CallDelayed(totalMilliseconds, obj => { if (IsDeleted || Owner != owner) { return; } RemoveEnchant(enchant); }); ItemHandler.SendEnchantTimeUpdate(owner, this, enchant.Duration); }
/// <summary> /// Picks up this side's flag. /// </summary> /// <param name="chr">The character picking up the flag.</param> public void PickupFlag(Character chr) { FlagCarrier = chr; // Shows the flag on the character. Does all kinds of stuff in the handler. chr.Auras.AddSelf(_flagSpell, true); /*_debuffUpdate = */ chr.CallDelayed(60 * (int)_flagRespawn * 1000, obj => ApplyFlagCarrierDebuff()); if (_flag != null) { _flag.SendDespawn(); // Dispose of the GO. _flag.Delete(); _flag = null; } _flagPickUpTime = DateTime.Now; _isFlagHome = false; var msg = chr.Name + " has picked up the " + Name + " flag!"; ChatMgr.SendSystemMessage(Instance.Characters, msg); var evt = FlagPickedUp; if (evt != null) { evt(chr); } }
/// <summary> /// Picks up this side's flag. /// </summary> /// <param name="chr">The character picking up the flag.</param> public void PickupFlag(Character chr) { FlagCarrier = chr; // Shows the flag on the character. Does all kinds of stuff in the handler. chr.Auras.CreateSelf(_flagSpell, true); _debuffUpdate = chr.CallDelayed(_flagRespawnTime, obj => ApplyFlagCarrierDebuff()); if (_flag != null) { _flag.SendDespawn(); // Dispose of the GO. _flag.Delete(); _flag = null; } _flagPickUpTime = DateTime.Now; _isFlagHome = false; Instance.Characters.SendSystemMessage(DefaultAddonLocalizer.Instance.GetTranslations(AddonMsgKey.WSPickupFlag), Name, chr.Name); var evt = FlagPickedUp; if (evt != null) { evt(chr); } }
public static void FireCannon(Character user) { user.StandState = StandState.Stand; user.CallDelayed(120000, obj => user.DecMechanicCount(SpellMechanic.Rooted)); var cast = user.SpellCast; if (cast != null) { cast.Start(FireCannonSpellId); cast.TriggerSelf(MagicWingsId); } }
private static bool Blastenheimer5000Used(GameObject go, Character user) { var cast = user.SpellCast; var target = go.GetNearbyGO(CannonTarget, 1000); if(target != null) { var dist = go.GetDistance(target); } switch (go.EntryId) { case (uint)Blastenheimer5000ElwynnId: { cast.Start(CannonPrepId); user.StandState = StandState.Sit; user.IncMechanicCount(SpellMechanic.Rooted); var facing = target != null ? go.GetAngleTowards(target) : ElwynnTeleOrientation; user.TeleportTo(ElwynnTelePosition, facing); } break; case (uint)Blastenheimer5000TerokkarId: { cast.Start(CannonPrepId); user.StandState = StandState.Sit; user.IncMechanicCount(SpellMechanic.Rooted); var facing = target != null ? go.GetAngleTowards(target) : TerokkarTeleOrientation; user.TeleportTo(TerokkarTelePosition, facing); } break; case (uint)Blastenheimer5000MulgoreId: { cast.Start(CannonPrepMulgore); user.StandState = StandState.Sit; user.IncMechanicCount(SpellMechanic.Rooted); var facing = target != null ? go.GetAngleTowards(target) : MulgoreTeleOrientation; user.TeleportTo(MulgoreTelePosition, facing); } break; default: { user.DecMechanicCount(SpellMechanic.Rooted); return false; } } go.PlaySound(8476); user.CallDelayed(2000, obj => FireCannon(user)); return true; }