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 AddArmor(IBeast beast) { int index = App.rng.Next(Armor.Armorses.Count); Armor[] pick = Armor.Armorses[index]; foreach (Armor armor in pick) { beast.AddTag(armor); } }
public IBeast DoTheBasics(IBeast beast) { AddArmor(beast); AddMilieu(beast); AddBodyPlan(beast); AddBite(beast); AddNaturalAttacks(beast); return(beast); }
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); } } }
public int PlayEffect(int id, IBeast caster, IBeast target) { int num = -1; int result; try { EffectLogger.Debug("PlayEffect:" + id); if (!this.m_EffectDatas.ContainsKey(id)) { EffectLogger.Error("!m_EffectDatas.ContainsKey(id):" + id); result = -1; return(result); } EffectData effectData = this.m_EffectDatas[id]; if (effectData == null) { result = -1; return(result); } Effect effect = new Effect(); effect.m_nEffectTypeId = id; effect.Caster = caster; effect.Target = target; num = this.GetID(); if (this.HighLight) { effect.HighLight = true; this.m_HightLightEffect.Add(num, effect); } effect.Load(effectData); if (num != -1) { effect.Id = num; this.m_Effects.Add(num, effect); } } catch (Exception e) { EffectLogger.Fatal(e.ToString()); } result = num; return(result); }
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); }
public void KillBeast(IBeast beast) { beast.LooseHead(); }