示例#1
0
 // 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);
        }