public static Troop CreateTroop(Troop t, Empire Owner)
        {
            Troop troop = new Troop()
            {
                Class = t.Class,
                Cost = t.Cost,
                Name = t.Name,
                Description = t.Description,
                HardAttack = t.HardAttack,
                Initiative = t.Initiative,
                SoftAttack = t.SoftAttack,
                Strength = t.Strength,
                StrengthMax = t.StrengthMax > 0 ? t.StrengthMax : t.Strength,
                Icon = t.Icon,
                BoardingStrength = t.BoardingStrength
            };

            if (Owner != null)
            {
                Troop strength = troop;
                strength.Strength = strength.Strength + (int)(Owner.data.Traits.GroundCombatModifier * (float)troop.Strength);
            }
            troop.TargetType = t.TargetType;
            troop.TexturePath = t.TexturePath;
            troop.Range = t.Range;
            troop.Experience = t.Experience;
            troop.SetOwner(Owner);
            troop.animated = t.animated;
            troop.idle_path = t.idle_path;
            troop.idle_x_offset = t.idle_x_offset;
            troop.idle_y_offset = t.idle_y_offset;
            troop.num_attack_frames = t.num_attack_frames;
            troop.num_idle_frames = t.num_idle_frames;
            troop.attack_width = t.attack_width;
            troop.attack_path = t.attack_path;
            troop.WhichFrame = (int)RandomMath.RandomBetween(1f, (float)(t.num_idle_frames - 1));
            troop.first_frame = t.first_frame;
            troop.sound_attack = t.sound_attack;
            troop.MovementCue = t.MovementCue;
            troop.MoveTimerBase = t.MoveTimerBase;
            troop.AttackTimerBase = t.AttackTimerBase;
            troop.Level = t.Level;
            troop.Kills = t.Kills;
            return troop;
        }
 public static Troop CopyTroop(Troop t)
 {
     Troop troop = new Troop()
     {
         Class = t.Class,
         Cost = t.Cost,
         Name = t.Name
     };
     troop.SetOwner(t.GetOwner());
     troop.Range = t.Range;
     troop.Description = t.Description;
     troop.HardAttack = t.HardAttack;
     troop.Initiative = t.Initiative;
     troop.SoftAttack = t.SoftAttack;
     troop.Strength = t.Strength;
     troop.StrengthMax = t.StrengthMax;
     troop.TargetType = t.TargetType;
     troop.TexturePath = t.TexturePath;
     troop.Experience = t.Experience;
     troop.Icon = t.Icon;
     troop.animated = t.animated;
     troop.idle_path = t.idle_path;
     troop.idle_x_offset = t.idle_x_offset;
     troop.idle_y_offset = t.idle_y_offset;
     troop.num_attack_frames = t.num_attack_frames;
     troop.num_idle_frames = t.num_idle_frames;
     troop.attack_width = t.attack_width;
     troop.attack_path = t.attack_path;
     troop.WhichFrame = (int)RandomMath.RandomBetween(1f, (float)(t.num_idle_frames - 1));
     troop.first_frame = t.first_frame;
     troop.MovementCue = t.MovementCue;
     troop.sound_attack = t.sound_attack;
     troop.MoveTimerBase = t.MoveTimerBase;
     troop.AttackTimerBase = t.AttackTimerBase;
     troop.Level = t.Level;
     troop.Kills = t.Kills;
     troop.BoardingStrength = t.BoardingStrength;
     return troop;
 }