コード例 #1
0
        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);
        }
コード例 #2
0
        public CustomStats Clone()
        {
            CustomStats clone = new CustomStats();

            clone.Points = Points;
            clone.Stats  = new List <CustomStat>(Stats.Select(stat => stat.Clone()));
            return(clone);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
                }
            }
        }