Пример #1
0
        public Monster(Xml.Creature creature, Xml.Spawn spawn, int map, Loot loot = null)
        {
            _actionQueue = new ConcurrentQueue <MobAction>();
            _spawn       = spawn;
            var buffed = Rng.Next() > 50;

            if (buffed)
            {
                _variance = (Rng.NextDouble() * _spawn.Variance) + 1;
            }
            else
            {
                _variance = 1 - (Rng.NextDouble() * _spawn.Variance);
            }


            Name          = creature.Name;
            Sprite        = creature.Sprite;
            World         = Game.World;
            Map           = Game.World.WorldData.Get <Map>(map);
            Stats.Level   = spawn.Stats.Level;
            Stats.BaseHp  = VariantHp;
            Stats.Hp      = VariantHp;
            Stats.BaseMp  = VariantMp;
            Stats.Mp      = VariantMp;
            DisplayText   = creature.Description;
            Stats.BaseStr = VariantStr;
            Stats.BaseInt = VariantInt;
            Stats.BaseWis = VariantWis;
            Stats.BaseCon = VariantCon;
            Stats.BaseDex = VariantDex;
            _castables    = spawn.Castables;

            Stats.BaseDefensiveElement = spawn.GetDefensiveElement();
            Stats.BaseDefensiveElement = spawn.GetOffensiveElement();

            _loot = loot;

            if (spawn.Flags.HasFlag(Xml.SpawnFlags.AiDisabled))
            {
                IsHostile = false;
            }
            else
            {
                IsHostile = _random.Next(0, 8) < 2;
            }

            if (spawn.Flags.HasFlag(Xml.SpawnFlags.MovementDisabled))
            {
                ShouldWander = false;
            }
            else
            {
                ShouldWander = IsHostile == false;
            }

            ThreatInfo     = new ThreatInfo();
            DeathProcessed = false;
        }
Пример #2
0
        public Monster(Xml.Creature creature, Xml.Spawn spawn, int map, Loot loot = null)
        {
            _spawn = spawn;
            var buffed = Rng.Next() > 50;

            if (buffed)
            {
                _variance = (Rng.NextDouble() * _spawn.Variance) + 1;
            }
            else
            {
                _variance = 1 - (Rng.NextDouble() * _spawn.Variance);
            }


            Name          = creature.Name;
            Sprite        = creature.Sprite;
            World         = Game.World;
            Map           = Game.World.WorldData.Get <Map>(map);
            Stats.Level   = spawn.Stats.Level;
            Stats.BaseHp  = VariantHp;
            Stats.Hp      = VariantHp;
            Stats.BaseMp  = VariantMp;
            Stats.Mp      = VariantMp;
            DisplayText   = creature.Description;
            Stats.BaseStr = VariantStr;
            Stats.BaseInt = VariantInt;
            Stats.BaseWis = VariantWis;
            Stats.BaseCon = VariantCon;
            Stats.BaseDex = VariantDex;
            _castables    = spawn.Castables;

            Stats.BaseDefensiveElement = spawn.GetDefensiveElement();
            Stats.BaseDefensiveElement = spawn.GetOffensiveElement();

            _loot = loot;

            //until intents are fixed, this is how this is going to be done.
            IsHostile    = _random.Next(0, 7) < 2;
            ShouldWander = IsHostile == false;
        }