Ejemplo n.º 1
0
        public void Initialize(int id)
        {
            RunnerStruct rs = DataStructs.Runners.Find(r => r.ID == id);

            HP = new HitPoints(rs.HP, rs.HP, 0);
            HPBar.Percentage = 100;
            HPRegen = rs.HPRegen;
            Velocity = rs.Velocity;
            IsMelee = rs.IsMelee;
            IsGround = rs.IsGround;
            Recycles = rs.Recycles;
            Bounty = rs.Bounty;
            FinishDmg = rs.FinishDamage;

            ImmuneStun = rs.ImmuneStun;
            ImmuneSlow = rs.ImmuneSlow;
            ImmuneArmorReduction = rs.ImmuneArmorReduction;
            ImmuneRooted = rs.ImmuneRooted;

            Animation = AnimationFactory.Create(rs.AnimationType, out RelativeAABB);
            HPBar.BarDrawRect = new Rectangle(HPBar.BarDrawRect.X, HPBar.BarDrawRect.Y, Animation.FrameSize.X, HPBar.BarDrawRect.Height);
            Animation.DrawColor = rs.DrawColor;
            CenterLocOffset = new Vector2(Animation.FrameSize.X / 2, Animation.FrameSize.Y / 2);
            FeetLocOffset = new Vector2(Animation.FrameSize.X / 2, Animation.FrameSize.Y);
            Armor = rs.Armor;
            m_AABB = RelativeAABB;

            IsFightingWithDefenders = new List<ITargetable>();
            TargettedByDefenders = new List<ITargetable>();

            #region Weapons
            Weapons = new List<BaseWeapon>();
            ShortestWeaponRange = int.MaxValue;
            HasRangedWeapon = false;
            RangedWpnRange = int.MaxValue;
            foreach (WeaponStruct ws in rs.Weapons)
            {
                BaseWeapon w = new BaseWeapon(Common.InvalidVector2, ws, this);
                Weapons.Add(w);
                if (w.IsRanged)
                {
                    HasRangedWeapon = true;
                    if (RangedWpnRange > ws.Range)
                        RangedWpnRange = ws.Range;
                }
                if (ShortestWeaponRange > ws.Range)
                    ShortestWeaponRange = ws.Range;
            }
            #endregion
            HasWeapons = Weapons.Count > 0;

            IsFightingRanged = false;
        }
Ejemplo n.º 2
0
        public DefenderStruct(int id)
        {
            ID              = id;
            Name            = "<NAME NOT SET>";
            Desc            = "<DESC NOT SET>";
            HP              = 0;
            IsMelee         = true;
            MeleeSightRange = 48;
            SpawnDelay      = 1500;
            ArmorType       = eArmorType.Medium;
            Velocity        = 1.5f;
            HPRegen         = 0;
            IsGround        = true;

            Weapons = new List <WeaponStruct>();

            AnimationType = eAnimation.None;
            DrawColor     = Color.White;
        }
Ejemplo n.º 3
0
        public RunnerStruct(int id)
        {
            ID = id;

            Name         = "<NAME NOT SET>";
            HP           = 0;
            HPRegen      = 0;
            Velocity     = 0f;
            IsMelee      = true;
            IsGround     = true;
            Bounty       = 0;
            Recycles     = false;
            FinishDamage = 1;
            Armor        = eArmorType.Medium;

            ImmuneStun = ImmuneSlow = ImmuneRooted = ImmuneArmorReduction = false;
            Weapons    = new List <WeaponStruct>();

            AnimationType = eAnimation.None;
            DrawColor     = Color.White;
        }
Ejemplo n.º 4
0
 public static string ToToken(this eArmorType armorType) => tokens[armorType];
Ejemplo n.º 5
0
        public static float GetDmgModifier(eDamageType dmgType, eArmorType armorType)
        {
            switch (dmgType)
            {
            case eDamageType.Normal:
                switch (armorType)
                {
                case eArmorType.Light:
                    return(1.5f);

                case eArmorType.Medium:
                    return(1f);

                case eArmorType.Heavy:
                    return(0.5f);

                case eArmorType.Holy:
                    return(0.5f);

                case eArmorType.Boss:
                    return(0.8f);

                default:
                    throw new CaseStatementMissingException();
                }

            case eDamageType.Piercing:
                switch (armorType)
                {
                case eArmorType.Light:
                    return(0.5f);

                case eArmorType.Medium:
                    return(1f);

                case eArmorType.Heavy:
                    return(1.5f);

                case eArmorType.Holy:
                    return(0.5f);

                case eArmorType.Boss:
                    return(0.8f);

                default:
                    throw new CaseStatementMissingException();
                }

            case eDamageType.Magic:
                switch (armorType)
                {
                case eArmorType.Light:
                    return(1.5f);

                case eArmorType.Medium:
                    return(1f);

                case eArmorType.Heavy:
                    return(1f);

                case eArmorType.Holy:
                    return(1.5f);

                case eArmorType.Boss:
                    return(0.8f);

                default:
                    throw new CaseStatementMissingException();
                }

            default:
                throw new CaseStatementMissingException();
            }
        }
Ejemplo n.º 6
0
        public void Initialize(int id)
        {
            DefenderStruct ds = DataStructs.Defenders.Find(d => d.ID == id);

            ID = id;
            HP = new HitPoints(ds.HP, ds.HP, 0);
            HPBar.Percentage = 100;
            HPRegen          = ds.HPRegen;
            Velocity         = ds.Velocity;
            IsMelee          = ds.IsMelee;
            IsGround         = ds.IsGround;
            MeleeSightRange  = ds.MeleeSightRange;
            State            = eState.Running;
            Armor            = ds.ArmorType;

            IsAlive      = true;
            IsSpawned    = false;
            RespawnTimer = new SimpleTimer(ds.SpawnDelay);

            #region Weapons
            Weapons             = new List <BaseWeapon>();
            ShortestWeaponRange = int.MaxValue;
            foreach (WeaponStruct ws in ds.Weapons)
            {
                BaseWeapon w = new BaseWeapon(Common.InvalidVector2, ws, this);
                Weapons.Add(w);
                if (ShortestWeaponRange > ws.Range)
                {
                    ShortestWeaponRange = ws.Range;
                }
            }
            if (Weapons.Count == 0)
            {
                throw new Exception("A defender must at least have one weapon.");
            }
            #endregion

            AnimationFactory.Create(ds.AnimationType, out RunAni, out AtkAni, out DieAni, out RelativeAABB, out Icon);
            Animation = RunAni;

            HPBar.BarDrawRect   = new Rectangle(HPBar.BarDrawRect.X, HPBar.BarDrawRect.Y, Animation.FrameSize.X, HPBar.BarDrawRect.Height);
            Animation.DrawColor = ds.DrawColor;
            CenterLocOffset     = new Vector2(Animation.FrameSize.X / 2, Animation.FrameSize.Y / 2);
            m_AABB = RelativeAABB;

            #region Feetoffset
            Vector2 extraFeetOffset = Vector2.Zero;
            switch (ds.AnimationType)
            {
            case eAnimation.Soldier01:
                extraFeetOffset = new Vector2(0, -32);
                break;

            case eAnimation.Crocy:
                extraFeetOffset = new Vector2(0, -32);
                break;

            default:
                throw new CaseStatementMissingException("This animation was not added to the BaseDefender.Initialize() or it was not set (None).");
            }
            FeetLocOffset = new Vector2(Animation.FrameSize.X / 2, Animation.FrameSize.Y) + extraFeetOffset;
            #endregion
        }