Exemple #1
0
        internal bool InvokeNpcStrike(
            NPC npc, ref int damage, ref float knockback, ref int hitDirection, ref bool crit, ref bool noEffect,
            ref bool fromNet, Player player)
        {
            NpcStrikeEventArgs args = new NpcStrikeEventArgs
            {
                Npc          = npc,
                Damage       = damage,
                KnockBack    = knockback,
                HitDirection = hitDirection,
                Critical     = crit,
                NoEffect     = noEffect,
                FromNet      = fromNet,
                Player       = player
            };

            this.NpcStrike.Invoke(args);

            damage       = args.Damage;
            knockback    = args.KnockBack;
            hitDirection = args.HitDirection;
            crit         = args.Critical;
            noEffect     = args.NoEffect;
            fromNet      = args.FromNet;
            player       = args.Player;
            return(args.Handled);
        }
Exemple #2
0
        internal bool InvokeNpcStrike(
            NPC npc, ref int damage, ref float knockback, ref int hitDirection, ref bool crit, ref bool noEffect,
            ref double returnDamage)
        {
            NpcStrikeEventArgs args = new NpcStrikeEventArgs
            {
                Npc          = npc,
                Damage       = damage,
                KnockBack    = knockback,
                HitDirection = hitDirection,
                Critical     = crit,
                NoEffect     = noEffect,
                ReturnDamage = returnDamage
            };

            this.NpcStrike.Invoke(args);

            damage       = args.Damage;
            knockback    = args.KnockBack;
            hitDirection = args.HitDirection;
            crit         = args.Critical;
            noEffect     = args.NoEffect;
            returnDamage = args.ReturnDamage;
            return(args.Handled);
        }
Exemple #3
0
        public static void run(NpcStrikeEventArgs e)
        {
            if (e.Handled == true)
            {
                return;
            }
            if (e.Player == null)
            {
                return;
            }
            if (!(Variables.playersData.ContainsKey(e.Player.name)))
            {
                return;
            }
            if (Variables.blockedNPCs.ContainsKey(e.Npc.netID))
            {
                if (Variables.blockedNPCs[e.Npc.netID] == true)
                {
                    return;
                }

            }
            Color c = new Color(255, 120, 0);

            if (Variables.playersData[e.Player.name].ActualClass == "warrior")
            {
                int neededExpForLevelUp = Variables.playersData[e.Player.name].Warrior.level * (896 + (896 * 43 / 100));
                int addedExp = ((e.Damage * 147 / 100) / 2);
                Variables.playersData[e.Player.name].Warrior.exprience +=  ((e.Damage * 147 / 100) / 2);
                if (Variables.playersData[e.Player.name].Warrior.exprience >= neededExpForLevelUp)
                {
                    Variables.playersData[e.Player.name].Warrior.level++;
                    Variables.playersData[e.Player.name].Warrior.exprience = 0;
                    Variables.playersData[e.Player.name].Warrior.statsPoints++;
                    string levelUp = Variables.levelUp.Replace("%level%", Variables.playersData[e.Player.name].Warrior.level + "");
                    NetMessage.SendData((int)PacketTypes.CreateCombatText, -1, -1, levelUp, (int)c.PackedValue, TShock.Players[e.Player.whoAmI].X, TShock.Players[e.Player.whoAmI].Y, 0, 0, 0, 0);
                }
                else
                {
                    int change = new Random().Next(0, 100);
                    if (change <= Variables.Chance)
                    {
                        NetMessage.SendData((int)PacketTypes.CreateCombatText, -1, -1, "[" + Variables.playersData[e.Player.name].Warrior.level + "LVL] " + Variables.playersData[e.Player.name].Warrior.exprience + "|" + neededExpForLevelUp + "] " + ((Variables.playersData[e.Player.name].Warrior.exprience * 100) / neededExpForLevelUp) + "%    +[" + addedExp + "xp]", (int)c.PackedValue, TShock.Players[e.Player.whoAmI].X, TShock.Players[e.Player.whoAmI].Y, 0, 0, 0, 0);
                    }
                }
            }
            if (Variables.playersData[e.Player.name].ActualClass == "paladin")
            {
                int neededExpForLevelUp = Variables.playersData[e.Player.name].Paladin.level * (896 + (896 * 43 / 100));
                int addedExp = ((e.Damage * 147 / 100) / 2);
                Variables.playersData[e.Player.name].Paladin.exprience += ((e.Damage * 147 / 100) / 2);
                if (Variables.playersData[e.Player.name].Paladin.exprience >= neededExpForLevelUp)
                {
                    Variables.playersData[e.Player.name].Paladin.level++;
                    Variables.playersData[e.Player.name].Paladin.exprience = 0;
                    Variables.playersData[e.Player.name].Paladin.statsPoints++;
                    string levelUp = Variables.levelUp.Replace("%level%", Variables.playersData[e.Player.name].Warrior.level + "");
                    NetMessage.SendData((int)PacketTypes.CreateCombatText, -1, -1, levelUp, (int)c.PackedValue, TShock.Players[e.Player.whoAmI].X, TShock.Players[e.Player.whoAmI].Y, 0, 0, 0, 0);
                }
                else
                {
                    int change = new Random().Next(0, 100);
                    if (change <= Variables.Chance)
                    {
                        NetMessage.SendData((int)PacketTypes.CreateCombatText, -1, -1, "[" + Variables.playersData[e.Player.name].Paladin.level + "LVL] " + Variables.playersData[e.Player.name].Paladin.exprience + "|" + neededExpForLevelUp + "] " + ((Variables.playersData[e.Player.name].Paladin.exprience * 100) / neededExpForLevelUp) + "%    +[" + addedExp + "xp]", (int)c.PackedValue, TShock.Players[e.Player.whoAmI].X, TShock.Players[e.Player.whoAmI].Y, 0, 0, 0, 0);
                    }
                }
            }
            if (Variables.playersData[e.Player.name].ActualClass == "wizard")
            {
                int neededExpForLevelUp = Variables.playersData[e.Player.name].Wizard.level * (896 + (896 * 43 / 100));
                int addedExp = ((e.Damage * 147 / 100) / 2);
                Variables.playersData[e.Player.name].Wizard.exprience += ((e.Damage * 147 / 100) / 2);
                if (Variables.playersData[e.Player.name].Wizard.exprience >= neededExpForLevelUp)
                {
                    Variables.playersData[e.Player.name].Wizard.level++;
                    Variables.playersData[e.Player.name].Wizard.exprience = 0;
                    Variables.playersData[e.Player.name].Wizard.statsPoints++;
                    string levelUp = Variables.levelUp.Replace("%level%", Variables.playersData[e.Player.name].Warrior.level + "");
                    NetMessage.SendData((int)PacketTypes.CreateCombatText, -1, -1, levelUp, (int)c.PackedValue, TShock.Players[e.Player.whoAmI].X, TShock.Players[e.Player.whoAmI].Y, 0, 0, 0, 0);
                }
                else
                {
                    int change = new Random().Next(0, 100);
                    if (change <= Variables.Chance)
                    {
                        NetMessage.SendData((int)PacketTypes.CreateCombatText, -1, -1, "[" + Variables.playersData[e.Player.name].Wizard.level + "LVL] " + Variables.playersData[e.Player.name].Wizard.exprience + "|" + neededExpForLevelUp + "] " + ((Variables.playersData[e.Player.name].Wizard.exprience * 100) / neededExpForLevelUp) + "%    +[" + addedExp + "xp]", (int)c.PackedValue, TShock.Players[e.Player.whoAmI].X, TShock.Players[e.Player.whoAmI].Y, 0, 0, 0, 0);
                    }
                }
            }
            if (TShock.Players[e.Player.whoAmI].SelectedItem.melee)
            {
                if (Variables.playersData[e.Player.name].ActualClass == "warrior")
                {
                    if (e.Damage >= e.Npc.life)
                    {
                        return;
                    }
                    int Damage = (Variables.playersData[e.Player.name].Warrior.statMeleeDamage * 3);
                    if (Damage > 0)
                    {
                        NetMessage.SendData((int)PacketTypes.CreateCombatText, -1, -1, "+" + Damage, (int)c.PackedValue, e.Npc.position.X, e.Npc.position.Y, 0, 0, 0, 0);
                    }
                    e.Damage = e.Damage + Damage;
                    return;
                }
                if (Variables.playersData[e.Player.name].ActualClass == "paladin")
                {
                    if (e.Damage >= e.Npc.life)
                    {
                        return;
                    }
                    int Damage = (Variables.playersData[e.Player.name].Paladin.statMeleeDamage);
                    if (Damage > 0)
                    {
                        NetMessage.SendData((int)PacketTypes.CreateCombatText, -1, -1, "+" + Damage, (int)c.PackedValue, e.Npc.position.X, e.Npc.position.Y, 0, 0, 0, 0);
                    }
                    e.Damage = e.Damage + Damage;
                    return;
                }
                if (Variables.playersData[e.Player.name].ActualClass == "wizard")
                {
                    if (e.Damage >= e.Npc.life)
                    {
                        return;
                    }
                    int Damage = (Variables.playersData[e.Player.name].Wizard.statMeleeDamage);
                    if (Damage > 0)
                    {
                        NetMessage.SendData((int)PacketTypes.CreateCombatText, -1, -1, "+" + Damage, (int)c.PackedValue, e.Npc.position.X, e.Npc.position.Y, 0, 0, 0, 0);
                    }
                    e.Damage = e.Damage + Damage;
                    return;
                }
            }
            if (TShock.Players[e.Player.whoAmI].SelectedItem.ranged)
            {
                if (Variables.playersData[e.Player.name].ActualClass == "warrior")
                {
                    if (e.Damage >= e.Npc.life)
                    {
                        return;
                    }
                    int Damage = (Variables.playersData[e.Player.name].Warrior.statRangedDamage);
                    if (Damage > 0)
                    {
                        NetMessage.SendData((int)PacketTypes.CreateCombatText, -1, -1, "+" + Damage, (int)c.PackedValue, e.Npc.position.X, e.Npc.position.Y, 0, 0, 0, 0);
                    }
                    e.Damage = e.Damage + Damage;
                    return;
                }
                if (Variables.playersData[e.Player.name].ActualClass == "paladin")
                {
                    if (e.Damage >= e.Npc.life)
                    {
                        return;
                    }
                    int Damage = (Variables.playersData[e.Player.name].Paladin.statRangedDamage * 3);
                    if (Damage > 0)
                    {
                        NetMessage.SendData((int)PacketTypes.CreateCombatText, -1, -1, "+" + Damage, (int)c.PackedValue, e.Npc.position.X, e.Npc.position.Y, 0, 0, 0, 0);
                    }
                    e.Damage = e.Damage + Damage;
                    return;
                }
                if (Variables.playersData[e.Player.name].ActualClass == "wizard")
                {
                    if (e.Damage >= e.Npc.life)
                    {
                        return;
                    }
                    int Damage = (Variables.playersData[e.Player.name].Wizard.statRangedDamage);
                    if (Damage > 0)
                    {
                        NetMessage.SendData((int)PacketTypes.CreateCombatText, -1, -1, "+" + Damage, (int)c.PackedValue, e.Npc.position.X, e.Npc.position.Y, 0, 0, 0, 0);
                    }
                    e.Damage = e.Damage + Damage;
                    return;
                }
            }
            if (TShock.Players[e.Player.whoAmI].SelectedItem.magic)
            {
                if (Variables.playersData[e.Player.name].ActualClass == "warrior")
                {
                    if (e.Damage >= e.Npc.life)
                    {
                        return;
                    }
                    int Damage = (Variables.playersData[e.Player.name].Warrior.statMagicDamage);
                    if (Damage > 0)
                    {
                        NetMessage.SendData((int)PacketTypes.CreateCombatText, -1, -1, "+" + Damage, (int)c.PackedValue, e.Npc.position.X, e.Npc.position.Y, 0, 0, 0, 0);
                    }
                    e.Damage = e.Damage + Damage;
                    return;
                }
                if (Variables.playersData[e.Player.name].ActualClass == "paladin")
                {
                    if (e.Damage >= e.Npc.life)
                    {
                        return;
                    }
                    int Damage = (Variables.playersData[e.Player.name].Paladin.statMagicDamage);
                    if (Damage > 0)
                    {
                        NetMessage.SendData((int)PacketTypes.CreateCombatText, -1, -1, "+" + Damage, (int)c.PackedValue, e.Npc.position.X, e.Npc.position.Y, 0, 0, 0, 0);
                    }
                    e.Damage = e.Damage + Damage;
                    return;
                }

                if (Variables.playersData[e.Player.name].ActualClass == "wizard")
                {
                    if (e.Damage >= e.Npc.life)
                    {
                        return;
                    }
                    int Damage = (Variables.playersData[e.Player.name].Wizard.statMagicDamage * 3);
                    if (Damage > 0)
                    {
                        NetMessage.SendData((int)PacketTypes.CreateCombatText, -1, -1, "+" + Damage, (int)c.PackedValue, e.Npc.position.X, e.Npc.position.Y, 0, 0, 0, 0);
                    }
                    e.Damage = e.Damage + Damage;
                    return;
                }
            }
        }
		internal bool InvokeNpcStrike(
			NPC npc, ref int damage, ref float knockback, ref int hitDirection, ref bool crit, ref bool noEffect, 
			ref bool fromNet, Player player)
		{
			NpcStrikeEventArgs args = new NpcStrikeEventArgs
			{
				Npc = npc, 
				Damage = damage, 
				KnockBack = knockback, 
				HitDirection = hitDirection, 
				Critical = crit,
				NoEffect = noEffect,
				FromNet = fromNet,
				Player = player
			};

			this.NpcStrike.Invoke(args);

			damage = args.Damage;
			knockback = args.KnockBack;
			hitDirection = args.HitDirection;
			crit = args.Critical;
			noEffect = args.NoEffect;
			fromNet = args.FromNet;
			return args.Handled;
		}
Exemple #5
0
 /// <summary>NpcHooks_OnStrikeNpc - Fired when an NPC strike packet happens.</summary>
 /// <param name="e">e - The NpcStrikeEventArgs object.</param>
 private void NpcHooks_OnStrikeNpc(NpcStrikeEventArgs e)
 {
     if (Config.InfiniteInvasion)
     {
         if (Main.invasionSize < 10)
         {
             Main.invasionSize = 20000000;
         }
     }
 }
		internal bool InvokeNpcStrike(
			NPC npc, ref int damage, ref float knockback, ref int hitDirection, ref bool crit, ref bool noEffect, 
			ref double returnDamage)
		{
			NpcStrikeEventArgs args = new NpcStrikeEventArgs
			{
				Npc = npc, 
				Damage = damage, 
				KnockBack = knockback, 
				HitDirection = hitDirection, 
				Critical = crit,
				NoEffect = noEffect,
				ReturnDamage = returnDamage
			};

			this.NpcStrike.Invoke(args);

			damage = args.Damage;
			knockback = args.KnockBack;
			hitDirection = args.HitDirection;
			crit = args.Critical;
			noEffect = args.NoEffect;
			returnDamage = args.ReturnDamage;
			return args.Handled;
		}
Exemple #7
0
 /// <summary>
 /// NpcStrike callback.
 /// </summary>
 /// <param name="args"></param>
 private void OnNpcStrike(NpcStrikeEventArgs args)
 {
     lock (this.m_AddonsLock)
     {
         this.m_Addons.ForEach(a =>
             {
                 var ret = a.Value.InvokeEvent("NpcStrike", args);
                 if (ret != null && ret.Length >= 1)
                 {
                     bool result;
                     if (bool.TryParse(ret[0].ToString(), out result) && result)
                         args.Handled = true;
                 }
             });
     }
 }
Exemple #8
0
        public static void OnDamage(NpcStrikeEventArgs args)
        {
            if (args.Handled)
                return;

            TSPlayer player = TShock.Players[args.Player.whoAmI];

            int index = Plugin.Config.Warrior.FindIndex(p => p.PlayerName == player.Name);
            if (index == -1)
                return;

            Vocation character = Vocation.getVocation(index, Plugin.Config.settings[index].currentVocation);

            // Can only get XP from non-prohibited NPCs
            if (!NoXpTargets.Contains(args.Npc.netID))
            {
                character.XP += Vocation.getDamageXp(args.Damage);
                if (character.XP >= Vocation.getLevelXp(character.Level + 1))
                {
                    character.Level++;
                    character.XP = 0;
                    player.SendInfoMessage(VocationPlugin.Resources.INFO_LEVELUP, character.Level);
                }
            }

            character.InflictDamage(player, args);
        }
Exemple #9
0
        public void InflictDamage(TSPlayer player, NpcStrikeEventArgs args)
        {
            int bonusdmg = Level / 5;

            if (player.SelectedItem.melee)
            {
                melee.XP++;
                bonusdmg += melee.Level;

                if (melee.XP >= melee.getAttackLevelXp(MeleeAttackMultiplier, XpFormat.Integer))
                {
                    melee.XP = 0;
                    melee.Level++;
                    player.SendInfoMessage(VocationPlugin.Resources.INFO_LEVELUP_ATTACK, "melee", melee.Level);
                }
            }
            else if (player.SelectedItem.magic)
            {
                magic.XP++;
                bonusdmg += magic.Level;

                if (magic.XP >= magic.getAttackLevelXp(MagicAttackMultiplier, XpFormat.Integer))
                {
                    magic.XP = 0;
                    magic.Level++;
                    player.SendInfoMessage(VocationPlugin.Resources.INFO_LEVELUP_ATTACK, "magic", magic.Level);
                }
            }
            else if (player.SelectedItem.ranged)
            {
                ranged.XP++;
                bonusdmg += ranged.Level;

                if (ranged.XP >= ranged.getAttackLevelXp(RangedAttackMultiplier, XpFormat.Integer))
                {
                    ranged.XP = 0;
                    ranged.Level++;
                    player.SendInfoMessage(VocationPlugin.Resources.INFO_LEVELUP_ATTACK, "ranged", ranged.Level);
                }
            }

            if (bonusdmg > 0)
            {
                args.Damage += bonusdmg;
                var color = Convert.ToInt32(Color.Gold.PackedValue);
                var msgType = Convert.ToInt32(PacketTypes.CreateCombatText);
                NetMessage.SendData(msgType, -1, -1, "+" + bonusdmg, color, args.Npc.position.X, args.Npc.position.Y);
            }
        }