private void AddMilieu(IBeast beast) { int index = App.rng.Next(Milieux.Length); beast.AddTag(Milieux[index]); if (Milieux[index].CanTrample) { beast.AddTag(Trample); } }
private void AddBodyPlan(IBeast beast) { int index = App.rng.Next(BodyPlans.Length); beast.AddTag(BodyPlans[index]); if (BodyPlans[index].HasRadialSymmetry) { foreach (Tag tag in BodyPlan.RadialSymmetry) { beast.AddTag(tag); } } }
private void AddArmor(IBeast beast) { int index = App.rng.Next(Armor.Armorses.Count); Armor[] pick = Armor.Armorses[index]; foreach (Armor armor in pick) { beast.AddTag(armor); } }
private void AddNaturalAttacks(IBeast beast) { //First get the bodyplans var plan = beast.Tags.FirstOrDefault(x => x is BodyPlan) as BodyPlan; AttackTag att = new AttackTag() { RelativeLevel = App.rng.Next(0, 3), AttackName = "Natural Attack", Base = AttackBases.Thrust, DamageType = DamageType.Crush, BaseStat = BaseStat.DX, CanParry = false, }; if (plan == null || plan.Limbs <= 0) { return; } att.Reach = plan.LimbLength; beast.AddTag(att); }
private static void AddBite(IBeast beast) { beast.Name = $"Beast {beast.Difficulty}"; List <DamageType> biteTypes = new List <DamageType> { DamageType.Crush, DamageType.Cut, DamageType.Impale }; AttackTag biteAttackTag = new AttackTag { RelativeLevel = App.rng.Next(0, 3), AttackName = "Bite", Base = AttackBases.Thrust, DamageType = biteTypes[App.rng.Next(biteTypes.Count)], BaseStat = BaseStat.DX, CanParry = false, }; beast.AddTag(biteAttackTag); }