Esempio n. 1
0
 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;
 }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
		/// <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);
			}
		}
Esempio n. 4
0
		/// <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);
			}
		}
Esempio n. 5
0
 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);
     }
 }
Esempio n. 6
0
        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;
        }