Example #1
0
        public ObjAiBase(Game game, string model, Stats.Stats stats, int collisionRadius = 40,
                         float x = 0, float y = 0, int visionRadius = 0, uint netId = 0) :
            base(game, model, stats, collisionRadius, x, y, visionRadius, netId)
        {
            _itemManager  = game.ItemManager;
            _scriptEngine = game.ScriptEngine;

            CharData = _game.Config.ContentManager.GetCharData(Model);

            stats.LoadStats(CharData);

            if (CharData.PathfindingCollisionRadius > 0)
            {
                CollisionRadius = CharData.PathfindingCollisionRadius;
            }
            else if (collisionRadius > 0)
            {
                CollisionRadius = collisionRadius;
            }
            else
            {
                CollisionRadius = 40;
            }

            Stats.CurrentMana   = stats.ManaPoints.Total;
            Stats.CurrentHealth = stats.HealthPoints.Total;

            if (!string.IsNullOrEmpty(model))
            {
                AaSpellData = _game.Config.ContentManager.GetSpellData(model + "BasicAttack");
                float baseAttackCooldown = 1.6f * (1.0f + CharData.AttackDelayOffsetPercent);
                AutoAttackCastTime        = baseAttackCooldown * (0.3f + CharData.AttackDelayCastOffsetPercent);
                AutoAttackProjectileSpeed = AaSpellData.MissileSpeed;
                IsMelee = CharData.IsMelee;
            }
            else
            {
                AutoAttackCastTime        = 0;
                AutoAttackProjectileSpeed = 500;
                IsMelee = true;
            }

            BuffSlots  = new IBuff[256];
            BuffList   = new List <IBuff>();
            _buffsLock = new object();
            Buffs      = new Dictionary <string, IBuff>();
            IsDashing  = false;
        }
Example #2
0
        public ObjAiBase(Game game, string model, Stats.Stats stats, int collisionRadius = 40,
                         float x = 0, float y = 0, int visionRadius = 0, uint netId = 0) :
            base(game, model, stats, collisionRadius, x, y, visionRadius, netId)
        {
            _itemManager  = game.ItemManager;
            _scriptEngine = game.ScriptEngine;
            CharData      = _game.Config.ContentManager.GetCharData(Model);
            stats.LoadStats(CharData);
            if (CharData.PathfindingCollisionRadius > 0)
            {
                CollisionRadius = CharData.PathfindingCollisionRadius;
            }
            else if (collisionRadius > 0)
            {
                CollisionRadius = collisionRadius;
            }
            else
            {
                CollisionRadius = 40;
            }

            Stats.CurrentMana   = stats.ManaPoints.Total;
            Stats.CurrentHealth = stats.HealthPoints.Total;
            animationCycler     = new Random();
            maxAAAnimations     = new List <ISpellData>();
            i = 2;
            maxAAAnimations.Add(_game.Config.ContentManager.GetSpellData(model + "BasicAttack"));
            while (_game.Config.ContentManager.GetSpellData(model + "BasicAttack" + i) != null)
            {
                try
                {
                    i++;
                    maxAAAnimations.Add(_game.Config.ContentManager.GetSpellData(model + "BasicAttack" + i));
                }
                catch (ContentNotFoundException)
                {
                    Console.WriteLine("Number Of Animations - " + maxAAAnimations.Count());
                    break;
                }
                break;
            }
            if (!string.IsNullOrEmpty(model))
            {
                AaSpellData               = _game.Config.ContentManager.GetSpellData(model + "BasicAttack");
                AutoAttackDelay           = AaSpellData.CastFrame / 30.0f;
                AutoAttackProjectileSpeed = AaSpellData.MissileSpeed;
                IsMelee = CharData.IsMelee;
            }
            else
            {
                AutoAttackDelay           = 0;
                AutoAttackProjectileSpeed = 500;
                IsMelee = true;
            }

            AppliedBuffs = new IBuff[256];
            BuffGameScriptControllers = new List <BuffGameScriptController>();
            BuffsLock = new object();
            Buffs     = new Dictionary <string, IBuff>();
            IsDashing = false;
        }