Ejemplo n.º 1
0
        /// <summary>
        /// Gets the shorthand modifier string for a Damage Modifier
        /// </summary>
        /// <param name="mod">Damage Mod</param>
        /// <param name="val">Value of the damage mod</param>
        /// <returns>Shorthand string</returns>
        public static string GetModifierShorthandString(DamageModifiers mod, int val)
        {
            switch (mod)
            {
            case DamageModifiers.Pierce:
                return($"PIR: {(val >= 0 ? "" : "-")}{val}");

            case DamageModifiers.Slash:
                return($"SLS: {(val >= 0 ? "" : "-")}{val}");

            case DamageModifiers.Blunt:
                return($"BLT: {(val >= 0 ? "" : "-")}{val}");

            case DamageModifiers.Burn:
                return($"BRN: {(val >= 0 ? "" : "-")}{val}");

            case DamageModifiers.Freeze:
                return($"FRZ: {(val >= 0 ? "" : "-")}{val}");

            case DamageModifiers.Magic:
                return($"DMP: {(val >= 0 ? "" : "-")}{val}");
            }

            return("");
        }
Ejemplo n.º 2
0
        // Gain 1 strength.  Deal 10 damage.  Cost 2.

        public TitanHunter()
        {
            SetCommonCardAttributes("Titan Hunter", Rarity.COMMON, TargetType.ENEMY, CardType.AttackCard, 2);
            BaseDamage = 10;
            Stickers.Add(new ExertCardSticker());
            DamageModifiers.Add(new SlayerDamageModifier());
            ProtoSprite = ProtoGameSprite.HammerIcon("atlas");
        }
        // Deal 8 damage.  Sweeper.  Add a Crusher into your hand.  Cost 1.

        public ChainReaction()
        {
            SetCommonCardAttributes("Chain Reaction", Rarity.RARE, TargetType.ENEMY, CardType.SkillCard, 1);
            AddSticker(new BasicAttackTargetSticker());
            BaseDamage = 8;
            DamageModifiers.Add(new SweeperDamageModifier());
            ProtoSprite = ProtoGameSprite.CogIcon("pendulum-swing");
        }
Ejemplo n.º 4
0
        // Deal 20 damage.  Buster.  Cost 2.

        public HandCannon()
        {
            SetCommonCardAttributes("Hand Cannon", Rarity.UNCOMMON, TargetType.ENEMY, CardType.AttackCard, 2,
                                    protoGameSprite: ProtoGameSprite.ArchonIcon("cannon-shot"));
            Stickers.Add(new BasicAttackTargetSticker());
            BaseDamage = 20;
            DamageModifiers.Add(new BusterDamageModifier());
        }
Ejemplo n.º 5
0
        // Deal 14 damage.  Cost 2.  Precision.
        // Patient:  Do it again.

        public ScopedOut()
        {
            SetCommonCardAttributes("Scoped Out", Rarity.UNCOMMON, TargetType.ENEMY, CardType.AttackCard, 1);
            DamageModifiers.Add(new PrecisionDamageModifier());

            this.ProtoSprite =
                ProtoGameSprite.ArchonIcon("targeting");
        }
 public OffscreenArtillery()
 {
     DamageModifiers.Add(new BusterDamageModifier());
     SetCommonCardAttributes("Offscreen Artillery", Rarity.RARE, TargetType.NO_TARGET_OR_SELF,
                             CardType.AttackCard, 3,
                             protoGameSprite: ProtoGameSprite.ArchonIcon("artillery-shell"));
     this.BaseDamage = 11;
 }
        // deal 5 damage and Owner gains 2 block.  Cost 1.
        // Lethal: ALL copies of this card owned by {Owner} gains 1 defense and 1 attack PERMANENTLY.
        // Brute:  Draw 3 cards.


        public OverThreeHundredConfirmedKills()
        {
            SetCommonCardAttributes("Over Three Hundred Confirmed Kills", Rarity.COMMON, TargetType.ENEMY, CardType.AttackCard, 1, typeof(HammerSoldierClass));
            BaseDamage       = 5;
            BaseDefenseValue = 2;
            DamageModifiers.Add(new OverThreeHundredConfirmedKillsLethalDamageModifier());
            ProtoSprite = ProtoGameSprite.HammerIcon("pianist");
        }
Ejemplo n.º 8
0
 public AutocannonSentry()
 {
     SetCommonCardAttributes("Autocannon Sentry", Rarity.NOT_IN_POOL, TargetType.ENEMY, CardType.AttackCard, 1);
     BaseDamage = 4;
     DamageModifiers.Add(new PrecisionDamageModifier());
     AddSticker(new LightCardSticker());
     ProtoSprite = ProtoGameSprite.CogIcon("autogun");
 }
Ejemplo n.º 9
0
        // Cost 3  Deal 20 damage to target, and apply 10 defense to ALL allies.  Buster, Slayer.

        public WhereIsYourGodNow()
        {
            SetCommonCardAttributes("Where Is Your God Now", Rarity.RARE, TargetType.ENEMY, CardType.AttackCard, 3);
            BaseDamage       = 20;
            BaseDefenseValue = 10;
            DamageModifiers.Add(new BusterDamageModifier());
            DamageModifiers.Add(new SlayerDamageModifier());
            ProtoSprite = ProtoGameSprite.CogIcon("anubis");
        }
Ejemplo n.º 10
0
        // Deal 30 damage.  Precision.  Bounty.  Cost 3.
        // Hoard 4.

        public EarnMySalary()
        {
            SetCommonCardAttributes("Earn My Salary", Rarity.RARE, TargetType.ENEMY, CardType.AttackCard, 3);
            DamageModifiers.Add(new PrecisionDamageModifier());
            DamageModifiers.Add(BountyDamageModifier.GetBountyDamageModifier());
            Stickers.Add(new GildedCardSticker(4));
            BaseDamage  = 30;
            ProtoSprite = ProtoGameSprite.CogIcon("farmer");
        }
        // Deal 8 damage.  Cost 3.  Buster.  Precision.  Refund 2.

        public RealityPenetrator()
        {
            SetCommonCardAttributes("Reality Penetrator", Rarity.UNCOMMON, TargetType.ENEMY, CardType.AttackCard, 3);
            BaseDamage = 8;
            Stickers.Add(new BasicAttackTargetSticker());
            DamageModifiers.Add(new BusterDamageModifier());
            DamageModifiers.Add(new PrecisionDamageModifier());
            ProtoSprite = ProtoGameSprite.CogIcon("vr-headset");
        }
Ejemplo n.º 12
0
        //   Deal 10 damage.  Lethal: Increase this card's Hoard value by 2 PERMANENTLY.   Hoard 2.

        public Stonks()
        {
            SetCommonCardAttributes("Stonks!", Rarity.RARE, TargetType.ENEMY, CardType.AttackCard, 1);
            DamageModifiers.Add(new StonksDamageModifier());
            Stickers.Add(new BasicAttackTargetSticker());
            Stickers.Add(new GildedCardSticker(2));
            BaseDamage  = 10;
            ProtoSprite = ProtoGameSprite.CogIcon("chart");
        }
Ejemplo n.º 13
0
        public GildedGun()
        {
            // deal 6 damage.  Precision.  Hoard 2.  Cost 0.  Gets an additional +2 Gilded for EACH Gilded Gun in your deck.
            SetCommonCardAttributes("Gilded Gun", Rarity.COMMON, TargetType.ENEMY, CardType.AttackCard, 0);
            Stickers.Add(sticker);
            DamageModifiers.Add(new PrecisionDamageModifier());

            this.ProtoSprite =
                ProtoGameSprite.ArchonIcon("machine-gun");
        }
Ejemplo n.º 14
0
        // Deal 6 damage.  Add two Autocannon Sentries to your hand.
        // Lethal: Gain 3 Data Points.
        // Exhaust.  Cost 1.

        public Vivisect()
        {
            Stickers.Add(new BasicAttackTargetSticker());
            Stickers.Add(new ExhaustCardSticker());
            BaseDamage = 6;
            DamageModifiers.Add(new GainDataPointsOnSlayDamageModifier {
                DataPointsToAcquire = 3
            });
            ProtoSprite = ProtoGameSprite.CogIcon("split-body");
        }
Ejemplo n.º 15
0
 public Crusher()
 {
     SetCommonCardAttributes("Crusher", Rarity.NOT_IN_POOL, TargetType.ENEMY, CardType.AttackCard, 2);
     Stickers.Add(new BasicAttackTargetSticker());
     Stickers.Add(new BasicDefendSelfSticker());
     BaseDamage       = 15;
     BaseDefenseValue = 8;
     DamageModifiers.Add(new SweeperDamageModifier());
     Stickers.Add(new ExhaustCardSticker());
     ProtoSprite = ProtoGameSprite.CogIcon("daemon-pull");
 }
Ejemplo n.º 16
0
 public IndiscriminateFire()
 {
     BaseDamage = 5;
     SetCommonCardAttributes(
         "Friendly Fire",
         Rarity.UNCOMMON,
         TargetType.NO_TARGET_OR_SELF,
         CardType.AttackCard,
         1);
     DamageModifiers.Add(new SweeperDamageModifier());
     ProtoSprite = ProtoGameSprite.BlackhandIcon("baby-face");
 }
Ejemplo n.º 17
0
            public override void ModifyDamageMods(ref DamageModifiers modifiers)
            {
                List <DamageModifier> doNotModify = new List <DamageModifier> {
                    DamageModifier.Ignore, DamageModifier.Immune, DamageModifier.VeryWeak
                };

                if (targetDamageModifier == DamageModifier.Normal)
                {
                    doNotModify.Add(DamageModifier.Weak);
                }

                if (!modifyElemental)
                {
                    if (!doNotModify.Contains(modifiers.m_blunt))
                    {
                        modifiers.m_blunt = targetDamageModifier;
                    }
                    if (!doNotModify.Contains(modifiers.m_slash))
                    {
                        modifiers.m_slash = targetDamageModifier;
                    }
                    if (!doNotModify.Contains(modifiers.m_pierce))
                    {
                        modifiers.m_pierce = targetDamageModifier;
                    }
                }
                else
                {
                    if (!doNotModify.Contains(modifiers.m_fire))
                    {
                        modifiers.m_fire = targetDamageModifier;
                    }
                    if (!doNotModify.Contains(modifiers.m_frost))
                    {
                        modifiers.m_frost = targetDamageModifier;
                    }
                    if (!doNotModify.Contains(modifiers.m_lightning))
                    {
                        modifiers.m_lightning = targetDamageModifier;
                    }
                    if (!doNotModify.Contains(modifiers.m_spirit))
                    {
                        modifiers.m_spirit = targetDamageModifier;
                    }
                    if (!doNotModify.Contains(modifiers.m_poison))
                    {
                        modifiers.m_poison = targetDamageModifier;
                    }
                }
            }
Ejemplo n.º 18
0
        private void ArmorModsList_SelectedIndexChanged(object sender, EventArgs e)
        {
            // Adjusts the informationd displayed when a different mod is slected
            DamageModifiers mod;

            if (Enum.TryParse(wDmgModsList.SelectedValue.ToString(), out mod))
            {
                switch (mod)
                {
                case DamageModifiers.Blunt:
                    armorModLbl.Text = "Blunt Damage Mod:";
                    break;

                case DamageModifiers.Burn:
                    armorModLbl.Text = "Burn Damage Mod:";
                    break;

                case DamageModifiers.Freeze:
                    armorModLbl.Text = "Freeze Damage Mod:";
                    break;

                case DamageModifiers.Magic:
                    armorModLbl.Text = "Magic Damage Mod:";
                    break;

                case DamageModifiers.Pierce:
                    armorModLbl.Text = "Pierce Damage Mod:";
                    break;

                case DamageModifiers.Slash:
                    armorModLbl.Text = "Slash Damage Mod:";
                    break;
                }
                // Updates the text box value of the mod if it exsists, else place a 0 in
                armorModTextBox.Text = WeaponDamageModifers.ContainsKey(mod) ? WeaponDamageModifers[mod].ToString() : "0";

                armorModsSaved.Text      = "Saved";
                armorModsSaved.ForeColor = Color.DarkGreen;

                lastDmgMod = mod;
            }
            else
            {
                wDmgModsTextBox.Text = "Error: mod not found in Enum";
            }
        }
Ejemplo n.º 19
0
 public static void AddDamageResist(TechType tt, DamageType damageType, float damageMult)
 {
     Log.LogDebug($"Main.AddDamageResist(): TechType = {tt.AsString()}, damageType = {damageType.ToString()}, damageMult = {damageMult}");
     if (DamageResistances.TryGetValue(tt, out Dictionary <DamageType, float> DamageModifiers))
     {
         if (DamageModifiers.TryGetValue(damageType, out float modifier))
         {
             Log.LogDebug($"AddDamageResist(): Tried to add modifier for DamageType {damageType.ToString()} to TechType {tt.AsString()} more than once; old value {modifier}.");
         }
         else
         {
             DamageModifiers.Add(damageType, damageMult);
         }
     }
     else
     {
         DamageResistances.Add(tt, new Dictionary <DamageType, float>()
         {
             { damageType, damageMult }
         });
     }
 }
Ejemplo n.º 20
0
 public bool HasDamageModifier <T>() where T : DamageModifier
 {
     return(DamageModifiers.Any(item => item is T));
 }
Ejemplo n.º 21
0
 public T GetDamageModifierOfType <T>() where T : DamageModifier
 {
     return(DamageModifiers.FirstOrDefault(item => item is T) as T);
 }
Ejemplo n.º 22
0
        public Limb(Ragdoll ragdoll, Character character, LimbParams limbParams)
        {
            this.ragdoll   = ragdoll;
            this.character = character;
            this.Params    = limbParams;
            wearingItems   = new List <WearableSprite>();
            dir            = Direction.Right;
            body           = new PhysicsBody(limbParams);
            type           = limbParams.Type;
            if (limbParams.IgnoreCollisions)
            {
                body.CollisionCategories = Category.None;
                body.CollidesWith        = Category.None;
                ignoreCollisions         = true;
            }
            else
            {
                //limbs don't collide with each other
                body.CollisionCategories = Physics.CollisionCharacter;
                body.CollidesWith        = Physics.CollisionAll & ~Physics.CollisionCharacter & ~Physics.CollisionItem & ~Physics.CollisionItemBlocking;
            }
            body.UserData = this;
            pullJoint     = new FixedMouseJoint(body.FarseerBody, ConvertUnits.ToSimUnits(limbParams.PullPos * Scale))
            {
                Enabled = false,
                //MaxForce = ((type == LimbType.LeftHand || type == LimbType.RightHand) ? 400.0f : 150.0f) * body.Mass
                // 150 or even 400 is too low if the joint is used for moving the character position from the mainlimb towards the collider position
                MaxForce = 1000 * Mass
            };

            GameMain.World.Add(pullJoint);

            var element = limbParams.Element;

            body.BodyType = BodyType.Dynamic;

            foreach (XElement subElement in element.Elements())
            {
                switch (subElement.Name.ToString().ToLowerInvariant())
                {
                case "attack":
                    attack = new Attack(subElement, (character == null ? "null" : character.Name) + ", limb " + type);
                    if (attack.DamageRange <= 0)
                    {
                        switch (body.BodyShape)
                        {
                        case PhysicsBody.Shape.Circle:
                            attack.DamageRange = body.radius;
                            break;

                        case PhysicsBody.Shape.Capsule:
                            attack.DamageRange = body.height / 2 + body.radius;
                            break;

                        case PhysicsBody.Shape.Rectangle:
                            attack.DamageRange = new Vector2(body.width / 2.0f, body.height / 2.0f).Length();
                            break;
                        }
                        attack.DamageRange = ConvertUnits.ToDisplayUnits(attack.DamageRange);
                    }
                    break;

                case "damagemodifier":
                    DamageModifiers.Add(new DamageModifier(subElement, character.Name));
                    break;

                case "statuseffect":
                    statusEffects.Add(StatusEffect.Load(subElement, Name));
                    break;
                }
            }

            SerializableProperties = SerializableProperty.GetProperties(this);

            InitProjSpecific(element);
        }
        // deal 20 damage.  Slay: A random card in an ally's deck gains Hoard 2 PERMANENTLY.  Cost 2.

        public FinancialAdvisor()
        {
            SetCommonCardAttributes("Financial Advisor", Rarity.RARE, TargetType.ENEMY, CardType.AttackCard, 2);
            DamageModifiers.Add(new FinancialAdvisorSlayTrigger());
            ProtoSprite = ProtoGameSprite.CogIcon("shadow-follower");
        }