public static CustomStats CreateChaosStats() { CustomStats stats = new CustomStats(); stats.Stats.Add(new CustomStat("Melee Damage", CustomStatEffects.MeleeDamage, CustomStatEffects.MeleeDamageTip)); stats.Stats.Add(new CustomStat("Ranged Damage", CustomStatEffects.RangedDamage, CustomStatEffects.RangedDamageTip)); stats.Stats.Add(new CustomStat("Magic Damage", CustomStatEffects.MagicDamage, CustomStatEffects.MagicDamageTip)); stats.Stats.Add(new CustomStat("Minion Damage", CustomStatEffects.MinionDamage, CustomStatEffects.MinionDamageTip)); stats.Stats.Add(new CustomStat("Thrown Damage", CustomStatEffects.ThrownDamage, CustomStatEffects.ThrownDamageTip)); stats.Stats.Add(new CustomStat("Melee Crit", CustomStatEffects.MeleeCrit, CustomStatEffects.MeleeCritTip)); stats.Stats.Add(new CustomStat("Ranged Crit", CustomStatEffects.RangedCrit, CustomStatEffects.MeleeCritTip)); stats.Stats.Add(new CustomStat("Magic Crit", CustomStatEffects.MagicCrit, CustomStatEffects.MagicCritTip)); stats.Stats.Add(new CustomStat("Max Minions", CustomStatEffects.MaxMinions, CustomStatEffects.MaxMinionsTip)); stats.Stats.Add(new CustomStat("Thrown Crit", CustomStatEffects.ThrownCrit, CustomStatEffects.ThrownCritTip)); stats.Stats.Add(new CustomStat("Melee Speed", CustomStatEffects.MeleeSpeed, CustomStatEffects.MeleeSpeedTip)); stats.Stats.Add(new CustomStat("Ammo Consumption", CustomStatEffects.AmmoCost, CustomStatEffects.AmmoCostTip)); stats.Stats.Add(new CustomStat("Mana Consumption", CustomStatEffects.ManaCost, CustomStatEffects.ManaCostTip)); stats.Stats.Add(new CustomStat("Minion Knockback", CustomStatEffects.MinionKB, CustomStatEffects.MinionKBTip)); stats.Stats.Add(new CustomStat("Throwing Consumption", CustomStatEffects.ThrownCost, CustomStatEffects.ThrownCostTip)); stats.Stats.Add(new CustomStat("Defense", CustomStatEffects.Defense, CustomStatEffects.DefenseTip)); stats.Stats.Add(new CustomStat("Life Regen", CustomStatEffects.LifeRegen, CustomStatEffects.LifeRegenTip)); stats.Stats.Add(new CustomStat("Movement Speed", CustomStatEffects.MoveSpeed, CustomStatEffects.MoveSpeedTip)); stats.Stats.Add(new CustomStat("Shield Capacity", CustomStatEffects.PuriumShieldChargeMax, CustomStatEffects.PuriumShieldChargeMaxTip)); stats.Stats.Add(new CustomStat("Shield Fill Rate", CustomStatEffects.PuriumShieldFillRate, CustomStatEffects.PuriumShieldFillRateTip)); stats.Stats.Add(new CustomStat("Shield Endurance", CustomStatEffects.PuriumShieldEnduranceMult, CustomStatEffects.PuriumShieldEnduranceMultTip)); return(stats); }
public CustomStats Clone() { CustomStats clone = new CustomStats(); clone.Points = Points; clone.Stats = new List <CustomStat>(Stats.Select(stat => stat.Clone())); return(clone); }
public static CustomStats CreateCataclysmStats() { CustomStats stats = new CustomStats(); stats.Stats.Add(new CustomStat("Damage", CustomStatEffects.AllDamage, CustomStatEffects.AllDamageTip)); stats.Stats.Add(new CustomStat("Crit + Minions", CustomStatEffects.AllCrit, CustomStatEffects.AllCritTip)); stats.Stats.Add(new CustomStat("Misc Offense", CustomStatEffects.MiscOffense, CustomStatEffects.MiscOffenseTip)); stats.Stats.Add(new CustomStat("Misc Defense", CustomStatEffects.MiscDefense, CustomStatEffects.MiscDefenseTip)); stats.Stats.Add(new CustomStat("Endurance", CustomStatEffects.Endurance, CustomStatEffects.EnduranceTip)); stats.Stats.Add(new CustomStat("Max Health", CustomStatEffects.MaxHealth, CustomStatEffects.MaxHealthTip)); stats.Stats.Add(new CustomStat("Debuff Immunities", CustomStatEffects.DebuffImmune, CustomStatEffects.DebuffImmuneTip)); stats.Stats.Add(new CustomStat("Life Regen 2", CustomStatEffects.LifeRegen2, CustomStatEffects.LifeRegen2Tip)); return(stats); }
public override bool Equals(object other) { CustomStats stats = other as CustomStats; if (stats == null || Points != stats.Points || Stats.Count != stats.Stats.Count) { return(false); } for (int k = 0; k < Stats.Count; k++) { if (!Stats[k].Equals(stats.Stats[k])) { return(false); } } return(true); }
public override void HandlePacket(BinaryReader reader, int whoAmI) { MessageType type = (MessageType)reader.ReadByte(); if (type == MessageType.PuritySpirit) { PuritySpirit.PuritySpirit spirit = Main.npc[reader.ReadInt32()].modNPC as PuritySpirit.PuritySpirit; if (spirit != null && spirit.npc.active) { spirit.HandlePacket(reader); } } else if (type == MessageType.HeroLives) { Player player = Main.player[reader.ReadInt32()]; int lives = reader.ReadInt32(); player.GetModPlayer <BluemagicPlayer>(this).heroLives = lives; if (lives > 0) { NetworkText text; if (lives == 1) { text = NetworkText.FromKey("Mods.Bluemagic.LifeLeft", player.name); } else { text = NetworkText.FromKey("Mods.Bluemagic.LivesLeft", player.name, lives); } NetMessage.BroadcastChatMessage(text, new Color(255, 25, 25)); } } else if (type == MessageType.ChaosSpirit) { NPC npc = Main.npc[reader.ReadInt32()]; if (npc.active) { ChaosSpirit.ChaosSpirit spirit = npc.modNPC as ChaosSpirit.ChaosSpirit; if (spirit != null) { spirit.HandlePacket(reader); } ChaosSpirit2 spirit2 = npc.modNPC as ChaosSpirit2; if (spirit2 != null) { spirit2.HandlePacket(reader); } ChaosSpirit3 spirit3 = npc.modNPC as ChaosSpirit3; if (spirit3 != null) { spirit3.HandlePacket(reader); } } } else if (type == MessageType.PushChaosArm) { NPC npc = Main.npc[reader.ReadInt32()]; Vector2 push = new Vector2(reader.ReadSingle(), reader.ReadSingle()); if (npc.active) { ChaosSpiritArm arm = npc.modNPC as ChaosSpiritArm; if (arm != null) { arm.offset += push; if (Main.netMode == 2) { ModPacket packet = GetPacket(); packet.Write((byte)MessageType.PushChaosArm); packet.Write(push.X); packet.Write(push.Y); packet.Send(-1, whoAmI); } } } } else if (type == MessageType.TerraSpirit) { NPC npc = Main.npc[reader.ReadInt32()]; if (npc.active) { TerraSpirit.TerraSpirit spirit = npc.modNPC as TerraSpirit.TerraSpirit; if (spirit != null) { spirit.HandlePacket(reader); } } } else if (type == MessageType.TerraLives) { Player player = Main.player[reader.ReadInt32()]; int lives = reader.ReadInt32(); player.GetModPlayer <BluemagicPlayer>().terraLives = lives; if (lives > 0) { NetworkText text; if (lives == 1) { text = NetworkText.FromKey("Mods.Bluemagic.LifeLeft", player.name); } else { text = NetworkText.FromKey("Mods.Bluemagic.LivesLeft", player.name, lives); } NetMessage.BroadcastChatMessage(text, new Color(255, 25, 25)); } } else if (type == MessageType.GoldBlob) { NPC npc = Main.npc[reader.ReadByte()]; float value = reader.ReadByte(); if (npc.active && npc.type == NPCType("GoldBlob")) { npc.localAI[0] = value; } } else if (type == MessageType.ExtraLives) { BluemagicPlayer player = Main.player[Main.myPlayer].GetModPlayer <BluemagicPlayer>(); if (player.terraLives > 0) { player.terraLives += 3; } } else if (type == MessageType.BulletNegative) { NPC npc = Main.npc[reader.ReadByte()]; if (npc.active && npc.type == NPCType("TerraSpirit2") && npc.modNPC is TerraSpirit2) { var bullets = ((TerraSpirit2)npc.modNPC).bullets; int count = reader.ReadByte(); for (int k = 0; k < count; k++) { bullets.Add(new BulletNegative(reader.ReadVector2(), reader.ReadVector2())); } } } else if (type == MessageType.CustomStats) { byte byte1 = reader.ReadByte(); byte byte2 = reader.ReadByte(); Player player = Main.player[byte1]; BluemagicPlayer modPlayer = player.GetModPlayer <BluemagicPlayer>(); CustomStats stats = byte2 == 0 ? modPlayer.chaosStats : modPlayer.cataclysmStats; stats.NetReceive(reader); if (Main.netMode == 2) { ModPacket packet = GetPacket(512); packet.Write(byte1); packet.Write(byte2); stats.NetSend(packet); packet.Send(-1, whoAmI); } } }