Exemple #1
0
        public override void MonsterDies(IMonster OfMonster, IMonster DfMonster)
        {
            Debug.Assert(DfMonster != null && !DfMonster.IsCharacterMonster());

            if (DfMonster.Uid == 8)
            {
                var trollsfireArtifact = gADB[10];

                Debug.Assert(trollsfireArtifact != null);

                var printEffect = trollsfireArtifact.IsCarriedByMonster(DfMonster) || trollsfireArtifact.IsWornByMonster(DfMonster);

                base.MonsterDies(OfMonster, DfMonster);

                if (printEffect)
                {
                    var effect = gEDB[3];

                    Debug.Assert(effect != null);

                    gOut.Write("{0}{0}{1}", Environment.NewLine, effect.Desc);
                }
            }
            else
            {
                base.MonsterDies(OfMonster, DfMonster);
            }
        }
Exemple #2
0
        public override void MonsterDies(IMonster OfMonster, IMonster DfMonster)
        {
            Debug.Assert(DfMonster != null && !DfMonster.IsCharacterMonster());

            // Repetitive Spooks' counter reset

            if (DfMonster.Uid == 9)
            {
                var resetGroupCount = DfMonster.CurrGroupCount == 1;

                base.MonsterDies(OfMonster, DfMonster);

                if (resetGroupCount)
                {
                    DfMonster.GroupCount = 0;

                    DfMonster.InitGroupCount = 0;

                    DfMonster.CurrGroupCount = 0;
                }
            }
            else
            {
                base.MonsterDies(OfMonster, DfMonster);
            }
        }
Exemple #3
0
        public override void ResetMonsterStats(IMonster monster)
        {
            Debug.Assert(monster != null && monster.IsCharacterMonster());

            base.ResetMonsterStats(monster);

            // TODO: ensure monster not poisoned
        }
Exemple #4
0
        public override void ResetMonsterStats(IMonster monster)
        {
            Debug.Assert(monster != null && monster.IsCharacterMonster());

            monster.Agility = gCharacter.GetStats(Stat.Agility);

            gGameState.Speed = 0;
        }
Exemple #5
0
        public override void ResetMonsterStats(IMonster monster)
        {
            Debug.Assert(monster != null && monster.IsCharacterMonster());

            base.ResetMonsterStats(monster);

            // Ensure monster not paralyzed or clumsy

            gGameState.ParalyzedTargets.Remove(monster.Uid);

            gGameState.ClumsyTargets.Remove(monster.Uid);
        }
Exemple #6
0
        public override void CheckNumberOfExits(IRoom room, IMonster monster, bool fleeing, ref long numExits)
        {
            Debug.Assert(room != null);

            base.CheckNumberOfExits(room, monster, fleeing, ref numExits);

            // Exclude various "invisible" exits

            if (room.Uid == 8 || (monster.IsCharacterMonster() && (room.Uid == 41 || room.Uid == 43 || room.Uid == 44 || room.Uid == 61)))
            {
                numExits--;
            }
        }
Exemple #7
0
        public override void ResetMonsterStats(IMonster monster)
        {
            Debug.Assert(monster != null && monster.IsCharacterMonster());

            base.ResetMonsterStats(monster);

            // Eighty-six the weird magic dagger-related Hardiness increase upon exit (omitting the in-game death check for simplicity)

            if (gGameState.MagicDaggerCounter > 0)
            {
                monster.Hardiness -= 5;

                gGameState.MagicDaggerCounter = -1;
            }
        }
Exemple #8
0
        public virtual bool IsEnabled(IMonster monster)
        {
            Debug.Assert(monster != null);

            return(monster.IsCharacterMonster() ? Command.IsPlayerEnabled : Command.IsMonsterEnabled);
        }