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; }
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; }