public void Init(int ownerId) { Id = ownerId; StatsManager.Init(Id, 0, _dbMob.Dex, 0, 0, _dbMob.Wis, _dbMob.Luc, def: _dbMob.Defense, res: _dbMob.Magic); LevelProvider.Init(Id, _dbMob.Level); HealthManager.Init(Id, _dbMob.HP, _dbMob.MP, _dbMob.SP, _dbMob.HP, _dbMob.MP, _dbMob.SP); BuffsManager.Init(Id); CountryProvider.Init(Id, _dbMob.Fraction); SpeedManager.Init(Id); AttackManager.Init(Id); SkillsManager.Init(Id, new Skill[0]); var x = new Random().NextFloat(_moveArea.X1, _moveArea.X2); var y = new Random().NextFloat(_moveArea.Y1, _moveArea.Y2); var z = new Random().NextFloat(_moveArea.Z1, _moveArea.Z2); MovementManager.Init(Id, x, y, z, 0, MoveMotion.Walk); AIManager.Init(Id, _dbMob.AI, _moveArea, idleTime: _dbMob.NormalTime <= 0 ? 4000 : _dbMob.NormalTime, idleSpeed: _dbMob.NormalStep, chaseRange: _dbMob.ChaseRange, chaseSpeed: _dbMob.ChaseStep, chaseTime: _dbMob.ChaseTime, isAttack1Enabled: _dbMob.AttackOk1 != 0, isAttack2Enabled: _dbMob.AttackOk2 != 0, isAttack3Enabled: _dbMob.AttackOk3 != 0, attack1Range: _dbMob.AttackRange1, attack2Range: _dbMob.AttackRange2, attack3Range: _dbMob.AttackRange3, attackType1: _dbMob.AttackType1, attackType2: _dbMob.AttackType2, attackType3: _dbMob.AttackType3, attackAttrib1: _dbMob.AttackAttrib1, attackAttrib2: _dbMob.AttackAttrib2, attack1: _dbMob.Attack1 < 0 ? (ushort)(_dbMob.Attack1 + ushort.MaxValue) : (ushort)_dbMob.Attack1, attack2: _dbMob.Attack2 < 0 ? (ushort)(_dbMob.Attack2 + ushort.MaxValue) : (ushort)_dbMob.Attack2, attack3: _dbMob.Attack3 < 0 ? (ushort)(_dbMob.Attack3 + ushort.MaxValue) : (ushort)_dbMob.Attack3, attackTime1: _dbMob.AttackTime1, attackTime2: _dbMob.AttackTime2, attackTime3: _dbMob.AttackTime3); }