void CreateAttacks() { avTacks = new AttackTypes(this.Dominant); }
/// <summary> /// Generates a creature based on seed value. /// </summary> /// <param name="Seed">Seed value.</param> public Creature(int Seed, Texture2D texture, Vector2 position2D, float moveSpeed, int frameWidth, int frameHeight, int millisecondsBetweenFrame) : base(texture, position2D, moveSpeed, frameWidth, frameWidth, millisecondsBetweenFrame) { _seed = Seed; int[] Points = new int[2]; int[] BDMax = new int[2]; int[] TUMax = new int[2]; ushort[,] Stats = new ushort[2, 7]; ushort[,] BD = new ushort[2, 7]; StatsBool[,] Toggles = new StatsBool[2, 5]; Random rand = new Random(Seed); for (int y = 0; y < 2; y++) { Points[y] = 800; BDMax[y] = 32; TUMax[y] = 32; //stats for (int i = 0; i < 7; i++) { Stats[y, i] = (ushort)rand.Next(Points[y] / (7 - (i))); Points[y] -= Stats[y, i]; BD[y, i] = (ushort)rand.Next(BDMax[y] / (7 - (i))); BDMax[y] -= BD[y, i]; } //left over points get allocated int looper = 0; while (Points[y] != 0) { int value = (ushort)rand.Next(1, Points[y]); Stats[y, looper] += (ushort)value; Points[y] -= value; looper = (looper + 1) % 7; } while (BDMax[y] != 0) { int value = (ushort)rand.Next(1, BDMax[y]); BD[y, looper] += (ushort)value; BDMax[y] -= value; looper = (looper + 1) % 7; } for (int i = 0; i < 5; i++) { Toggles[y, i].Active = rand.Next(0, 2) == 0; Toggles[y, i].Used = (ushort)rand.Next(TUMax[y] / (5 - (i))); TUMax[y] -= BD[y, i]; } while (TUMax[y] != 0) { looper = (looper + 1) % 5; int value = (ushort)rand.Next(1, TUMax[y]); Toggles[y, looper].Used += value; TUMax[y] -= value; } } StatsUShort[] Health = new StatsUShort[2]; Health[0].Maximum = Stats[0, 0]; Health[0].Used = BD[0, 0]; Health[1].Maximum = Stats[1, 0]; Health[1].Used = BD[1, 0]; InitialValues(ref Health); StatsUShort[] Weight = new StatsUShort[2]; Weight[0].Maximum = Stats[0, 1]; Weight[0].Used = BD[0, 1]; Weight[1].Maximum = Stats[1, 1]; Weight[1].Used = BD[1, 1]; InitialValues(ref Weight); StatsUShort[] Size = new StatsUShort[2]; Size[0].Maximum = Stats[0, 2]; Size[0].Used = BD[0, 2]; Size[1].Maximum = Stats[1, 2]; Size[1].Used = BD[1, 2]; InitialValues(ref Size); StatsUShort[] Strength = new StatsUShort[2]; Strength[0].Maximum = Stats[0, 3]; Strength[0].Used = BD[0, 3]; Strength[1].Maximum = Stats[1, 3]; Strength[1].Used = BD[1, 3]; InitialValues(ref Strength); StatsUShort[] Dexterity = new StatsUShort[2]; Dexterity[0].Maximum = Stats[0, 4]; Dexterity[0].Used = BD[0, 4]; Dexterity[1].Maximum = Stats[1, 4]; Dexterity[1].Used = BD[1, 4]; InitialValues(ref Dexterity); StatsUShort[] Endurance = new StatsUShort[2]; Endurance[0].Maximum = Stats[0, 5]; Endurance[0].Used = BD[0, 5]; Endurance[1].Maximum = Stats[1, 5]; Endurance[1].Used = BD[1, 5]; InitialValues(ref Endurance); StatsUShort[] Speed = new StatsUShort[2]; Speed[0].Maximum = Stats[0, 6]; Speed[0].Used = BD[0, 6]; Speed[1].Maximum = Stats[1, 6]; Speed[1].Used = BD[1, 6]; InitialValues(ref Speed); Dominant.Health = Health[0]; Recessive.Health = Health[1]; Dominant.Weight = Weight[0]; Recessive.Weight = Weight[1]; Dominant.Size = Size[0]; Recessive.Size = Size[1]; Dominant.Strength = Strength[0]; Recessive.Strength = Strength[1]; Dominant.Dexterity = Dexterity[0]; Recessive.Dexterity = Dexterity[1]; Dominant.Endurance = Endurance[0]; Recessive.Endurance = Endurance[1]; Dominant.Speed = Speed[0]; Recessive.Speed = Speed[1]; Dominant.Head = Toggles[0, 0]; Recessive.Head = Toggles[1, 0]; Dominant.Legs = Toggles[0, 1]; Recessive.Legs = Toggles[1, 1]; Dominant.Arms = Toggles[0, 2]; Recessive.Arms = Toggles[1, 2]; Dominant.Wings = Toggles[0, 3]; Recessive.Wings = Toggles[1, 3]; Dominant.Claws = Toggles[0, 4]; Recessive.Claws = Toggles[1, 4]; this.Health = this.Dominant.Health.Level; //Not Yet Implimented Dominant.SpinalColumns.Maximum = 8; Dominant.TailColumns.Maximum = 4; avTacks = new AttackTypes(Dominant); CreateModel(); }
/// <summary> /// Breeds two creatures together. /// </summary> /// <param name="A">Parent No1</param> /// <param name="B">Parent No2</param> public Creature(Creature A, Creature B, Texture2D texture, Vector2 position2D, float moveSpeed, int frameWidth, int frameHeight, int millisecondsBetweenFrame) : base(texture, position2D, moveSpeed, frameWidth, frameWidth, millisecondsBetweenFrame) { StatsUShort[] Health = IntMethod(A.Dominant.Health, B.Dominant.Health, A.Recessive.Health, B.Recessive.Health); Dominant.Health = Health[0]; Recessive.Health = Health[1]; StatsUShort[] Weight = IntMethod(A.Dominant.Weight, B.Dominant.Weight, A.Recessive.Weight, B.Recessive.Weight); Dominant.Weight = Weight[0]; Recessive.Weight = Weight[1]; StatsUShort[] Size = IntMethod(A.Dominant.Size, B.Dominant.Size, A.Recessive.Size, B.Recessive.Size); Dominant.Size = Size[0]; Recessive.Size = Size[1]; StatsUShort[] Strength = IntMethod(A.Dominant.Strength, B.Dominant.Strength, A.Recessive.Strength, B.Recessive.Strength); Dominant.Strength = Strength[0]; Recessive.Strength = Strength[1]; StatsUShort[] Dexterity = IntMethod(A.Dominant.Dexterity, B.Dominant.Dexterity, A.Recessive.Dexterity, B.Recessive.Dexterity); Dominant.Dexterity = Dexterity[0]; Recessive.Dexterity = Dexterity[1]; StatsUShort[] Endurance = IntMethod(A.Dominant.Endurance, B.Dominant.Endurance, A.Recessive.Endurance, B.Recessive.Endurance); Dominant.Endurance = Endurance[0]; Recessive.Endurance = Endurance[1]; StatsUShort[] Speed = IntMethod(A.Dominant.Speed, B.Dominant.Speed, A.Recessive.Speed, B.Recessive.Speed); Dominant.Speed = Speed[0]; Recessive.Speed = Speed[1]; float AvgRecUsed = (A.RecessiveGenesBoolUsedAvg + B.RecessiveGenesBoolUsedAvg) / 2; StatsBool[] Head = BoolMethod(A.Dominant.Head, B.Dominant.Head, A.Recessive.Head, B.Recessive.Head, AvgRecUsed); Dominant.Head = Head[0]; Recessive.Head = Head[1]; StatsBool[] Legs = BoolMethod(A.Dominant.Legs, B.Dominant.Legs, A.Recessive.Legs, B.Recessive.Legs, AvgRecUsed); Dominant.Legs = Legs[0]; Recessive.Legs = Legs[1]; StatsBool[] Arms = BoolMethod(A.Dominant.Arms, B.Dominant.Arms, A.Recessive.Arms, B.Recessive.Arms, AvgRecUsed); Dominant.Arms = Arms[0]; Recessive.Arms = Arms[1]; StatsBool[] Wings = BoolMethod(A.Dominant.Wings, B.Dominant.Wings, A.Recessive.Wings, B.Recessive.Wings, AvgRecUsed); Dominant.Wings = Wings[0]; Recessive.Wings = Wings[1]; StatsBool[] Claws = BoolMethod(A.Dominant.Claws, B.Dominant.Claws, A.Recessive.Claws, B.Recessive.Claws, AvgRecUsed); Dominant.Claws = Claws[0]; Recessive.Claws = Claws[1]; // Reset Used on breed creature. if (Dominant.Head.Active) Dominant.Head.Used = 0; if (Dominant.Legs.Active) Dominant.Legs.Used = 0; if (Dominant.Arms.Active) Dominant.Arms.Used = 0; if (Dominant.Wings.Active) Dominant.Wings.Used = 0; if (Dominant.Claws.Active) Dominant.Claws.Used = 0; avTacks = new AttackTypes(Dominant); CreateModel(); }