// TODO : Сделать разную скорость атаки монстров. public virtual void Respawn(int level) { Attacker = new MonsterAttackController(this); Level = level; Damage = MonsterStatsBalance.GetDefaultDPS(level); AttackSpeed = 1.0; Accuracy = MonsterStatsBalance.GetDefaultAccuracy(level); Evasion = MonsterStatsBalance.GetDefaultEvasion(level); MaxHealth = MonsterStatsBalance.GetDefaultHealth(level); Health = MaxHealth; DroppedItems = DropFactory.Build(level, MonsterStatsBalance.GetDefaultDropValue(level)); IsDead = false; IsDropTaken = false; }
public override Monster Build(Level level, MonsterType monsterType = MonsterType.Normal) { var monster = new SimpleMonster(); var dropFactory = DropService.Standard; var monsterStatsBalance = MonsterStatsBalance.Get(monsterType); monster.Level = level.Normal; monster.Damage = monsterStatsBalance.GetDefaultDPS(level.Normal); monster.Accuracy = monsterStatsBalance.GetDefaultAccuracy(level.Normal); monster.Evasion = monsterStatsBalance.GetDefaultEvasion(level.Normal); monster.MaxHealth = monsterStatsBalance.GetDefaultHealth(level.Normal); monster.Health = monster.MaxHealth; monster.DroppedItems = dropFactory.Build(level.Normal, monsterStatsBalance.GetDefaultDropValue(level.Normal)); monster.MonsterType = monsterType; monster.Skills.DefaultSkill = new AutoAttackSkill { Cooldown = 0.3, CastingTime = 0.7 }; if (monsterType == MonsterType.Boss && level.Normal > 50) { var skillsCount = 1; if (level.Normal > 80) { skillsCount++; } if (level.Normal > 110) { skillsCount++; } _possibleBossActiveSkills.TakeRandom(skillsCount) .ToList() .ForEach(s => monster.Skills.ActiveSkills.Add(s)); } monster.SkillService = new MonsterSkillController(monster, monster.Skills); monster.EffectService = new EffectService(monster, monster.Effects); return(monster); }