Пример #1
0
        public override void MonsterEmotes(IMonster monster, bool friendSmile = true)
        {
            Debug.Assert(monster != null);

            gOut.Write("{0}{1} {2}{3} at you.",
                       Environment.NewLine,
                       monster.GetTheName(true),
                       monster.EvalReaction("growl", "look", friendSmile ? "smile" : "wave"),
                       monster.EvalPlural("s", ""));
        }
Пример #2
0
        public override void MonsterSmiles(IMonster monster)
        {
            Debug.Assert(monster != null);

            gOut.Write("{0}{1} {2}{3} at you.",
                       Environment.NewLine,
                       monster.GetTheName(true),
                       monster.EvalFriendliness("growl", "look", "smile"),
                       monster.EvalPlural("s", ""));
        }
Пример #3
0
        public override void MonsterEmotes(IMonster monster, bool friendSmile = true)
        {
            Debug.Assert(monster != null);

            // Large death dog

            if (monster.Uid == 1 && monster.Reaction == Friendliness.Friend)
            {
                gOut.Write("{0}{1} wags its tail.", Environment.NewLine, monster.GetTheName(true));
            }
            else
            {
                base.MonsterEmotes(monster, friendSmile);
            }
        }
Пример #4
0
        public override void MonsterSmiles(IMonster monster)
        {
            Debug.Assert(monster != null);

            // Cobra

            if (monster.Uid == 52)
            {
                gOut.Write("{0}{1} hisses at you.", Environment.NewLine, monster.GetTheName(true));
            }
            else
            {
                base.MonsterSmiles(monster);
            }
        }
Пример #5
0
        public virtual void PrintObjBelongsToActor(IArtifact artifact, IMonster monster)
        {
            Debug.Assert(artifact != null && monster != null);

            gOut.Print("{0} belongs to {1}.", artifact.GetTheName(true), monster.GetTheName(buf: Globals.Buf01));
        }
Пример #6
0
        public virtual void PrintGiveObjToActor(IArtifact artifact, IMonster monster)
        {
            Debug.Assert(artifact != null && monster != null);

            gOut.Print("You give {0} to {1}.", artifact.GetTheName(), monster.GetTheName(buf: Globals.Buf01));
        }
Пример #7
0
        public virtual void PrintPolitelyRefuses(IMonster monster)
        {
            Debug.Assert(monster != null);

            gOut.Print("{0} politely refuse{1}.", monster.GetTheName(true), monster.EvalPlural("s", ""));
        }
Пример #8
0
        public override void MonsterEmotes(IMonster monster, bool friendSmile = true)
        {
            Debug.Assert(monster != null);

            var rl = RollDice(1, 100, 0);

            // Mountain lion

            if (monster.Uid == 2)
            {
                gOut.Write("{0}{1} {2} at you!", Environment.NewLine, monster.GetTheName(true), rl > 66 ? "roars" : rl > 33 ? "snarls" : "hisses");
            }

            // Various bats

            else if (monster.Uid >= 6 && monster.Uid <= 10)
            {
                if (monster.Reaction == Friendliness.Neutral)
                {
                    gOut.Write("{0}{1} ignores you.", Environment.NewLine, monster.GetTheName(true));
                }
                else
                {
                    gOut.Write("{0}{1} {2} at you{3}", Environment.NewLine, monster.GetTheName(true), rl > 50 ? "squeaks" : "hisses", monster.EvalReaction("!", ".", "."));
                }
            }

            // Pig

            else if (monster.Uid == 13)
            {
                gOut.Write("{0}{1} squeals at you!", Environment.NewLine, monster.GetTheName(true));
            }

            // Goose

            else if (monster.Uid == 14)
            {
                gOut.Write("{0}{1} honks at you!", Environment.NewLine, monster.GetTheName(true));
            }

            // Horse

            else if (monster.Uid == 15)
            {
                if (monster.Reaction == Friendliness.Neutral)
                {
                    gOut.Write("{0}{1} ignores you.", Environment.NewLine, monster.GetTheName(true));
                }
                else
                {
                    gOut.Write("{0}{1} {2} at you{3}", Environment.NewLine, monster.GetTheName(true), rl > 66 ? "whinnies" : rl > 33 ? "snorts" : monster.EvalReaction("squeals", "nickers", "nickers"), monster.EvalReaction("!", ".", "."));
                }
            }

            // Daisy

            else if (monster.Uid == 16)
            {
                if (monster.Reaction == Friendliness.Neutral)
                {
                    gOut.Write("{0}{1} ignores you.", Environment.NewLine, monster.GetTheName(true));
                }
                else
                {
                    gOut.Write("{0}{1} {2} at you{3}", Environment.NewLine, monster.GetTheName(true), rl > 66 ? "moos" : rl > 33 ? "snorts" : monster.EvalReaction("bellows", "grunts", "grunts"), monster.EvalReaction("!", ".", "."));
                }
            }

            // Groundhog

            else if (monster.Uid == 17)
            {
                gOut.Write("{0}{1} {2} at you!", Environment.NewLine, monster.GetTheName(true), rl > 66 ? "chatters" : rl > 33 ? "hisses" : "whistles");
            }

            // Brown ferret/Black ferret

            else if (monster.Uid == 18 || monster.Uid == 19)
            {
                if (monster.Reaction == Friendliness.Neutral)
                {
                    gOut.Write("{0}{1} ignores you.", Environment.NewLine, monster.GetTheName(true));
                }
                else
                {
                    gOut.Write("{0}{1} {2} at you{3}", Environment.NewLine, monster.GetTheName(true), rl > 66 ? "chatters" : rl > 33 ? "hisses" : monster.EvalReaction("barks", "dooks", "dooks"), monster.EvalReaction("!", ".", "."));
                }
            }

            // Kiord

            else if (monster.Uid == 21)
            {
                gOut.Write("{0}{1} {2} at you!", Environment.NewLine, monster.GetTheName(true), rl > 66 ? "screeches" : rl > 33 ? "hisses" : "squawks");
            }

            // Goat

            else if (monster.Uid == 22)
            {
                gOut.Write("{0}{1} {2} at you!", Environment.NewLine, monster.GetTheName(true), rl > 50 ? "bleats" : "bellows");
            }

            // Chicken

            else if (monster.Uid == 23)
            {
                if (monster.Reaction == Friendliness.Neutral)
                {
                    gOut.Write("{0}{1} ignores you.", Environment.NewLine, monster.GetTheName(true));
                }
                else
                {
                    gOut.Write("{0}{1} {2} at you{3}", Environment.NewLine, monster.GetTheName(true), rl > 66 ? "clucks" : rl > 33 ? "cackles" : monster.EvalReaction("squawks", "warbles", "warbles"), monster.EvalReaction("!", ".", "."));
                }
            }
            else
            {
                base.MonsterEmotes(monster, friendSmile);
            }
        }
Пример #9
0
        public virtual string GetMonsterCurse(IMonster monster, long effectUid)
        {
            Debug.Assert(monster != null);

            var curseString = "";

            var rl = RollDice(1, 100, 0);

            // Say each curse only once

            if (rl < 41 && monster.Reaction == Friendliness.Enemy && monster.HasCarriedInventory() && !gGameState.GetMonsterCurses(effectUid - 7))
            {
                var effect = gEDB[effectUid];

                Debug.Assert(effect != null);

                curseString = string.Format("{0}{0}{1} says, {2}", Environment.NewLine, monster.GetTheName(true, true, false, true, Globals.Buf01), effect.Desc);

                gGameState.SetMonsterCurses(effectUid - 7, true);
            }

            return(curseString);
        }
Пример #10
0
        public override void MonsterDies(IMonster OfMonster, IMonster DfMonster)
        {
            Debug.Assert(DfMonster != null);

            var room = DfMonster.GetInRoom() as Framework.IRoom;

            Debug.Assert(room != null);

            // Wandering monsters

            if (DfMonster.Uid >= 1 && DfMonster.Uid <= 17)
            {
                if (room.IsLit())
                {
                    gOut.Print("{0}As {1} dies, its body {2}.", Environment.NewLine, DfMonster.GetTheName(), room.IsCryptRoom() ? "is enveloped in a cloud of sinister black smoke" : "dissolves and is absorbed into the ground");
                }
            }

            // Possessed cutlass

            else if (DfMonster.Uid == 31)
            {
                var cutlassArtifact = gADB[34];

                Debug.Assert(cutlassArtifact != null);

                cutlassArtifact.Type = ArtifactType.Weapon;

                cutlassArtifact.Field1 = 25;

                cutlassArtifact.Field2 = 5;

                cutlassArtifact.Field3 = 2;

                cutlassArtifact.Field4 = 8;

                cutlassArtifact.Field5 = 1;
            }

            // Giant crayfish

            else if (DfMonster.Uid == 37)
            {
                gGameState.GiantCrayfishKilled = true;
            }

            // Water weird

            else if (DfMonster.Uid == 38)
            {
                gGameState.WaterWeirdKilled = true;
            }

            // Efreeti

            else if (DfMonster.Uid == 50)
            {
                gGameState.EfreetiKilled = true;
            }

            gGameState.ParalyzedTargets.Remove(DfMonster.Uid);

            gGameState.ClumsyTargets.Remove(DfMonster.Uid);

            base.MonsterDies(OfMonster, DfMonster);
        }
Пример #11
0
        public override void MonsterEmotes(IMonster monster, bool friendSmile = true)
        {
            Debug.Assert(monster != null);

            var rl = RollDice(1, 100, 0);

            // Giant rat

            if (monster.Uid == 1)
            {
                gOut.Write("{0}{1} {2} at you.", Environment.NewLine, monster.GetTheName(true), rl > 80 ? "squeals" : rl > 50 ? "squeaks" : "hisses");
            }

            // Skeleton/Gargoyle

            else if ((monster.Uid == 3 || monster.Uid == 8) && rl > 50)
            {
                gOut.Write("{0}{1} hisses at you.", Environment.NewLine, monster.GetTheName(true));
            }

            // Zombie

            else if (monster.Uid == 4 && rl > 50)
            {
                gOut.Write("{0}{1} snarls at you.", Environment.NewLine, monster.GetTheName(true));
            }

            // Ghoul/Ghast

            else if (monster.Uid == 6 || monster.Uid == 7)
            {
                gOut.Write("{0}{1} {2} at you.", Environment.NewLine, monster.GetTheName(true), rl > 80 ? "hisses" : rl > 50 ? "snarls" : "growls");
            }

            // Shadow/Specter/Wraith/Dark Hood/Animated suit of armor

            else if (monster.Uid == 9 || monster.Uid == 14 || monster.Uid == 16 || monster.Uid == 21 || monster.Uid == 23)
            {
                gOut.Write("{0}{1} gestures at you.", Environment.NewLine, monster.GetTheName(true));
            }

            // Will-o'-the-wisp

            else if (monster.Uid == 10)
            {
                gOut.Write("{0}{1} {2} at you.", Environment.NewLine, monster.GetTheName(true), rl > 50 ? "brightly flashes" : "hums");
            }

            // Pocket dragon/Giant crayfish/Giant scorpion

            else if ((monster.Uid == 24 && monster.Reaction != Friendliness.Neutral) || monster.Uid == 37 || monster.Uid == 39)
            {
                gOut.Write("{0}{1} hisses at you.", Environment.NewLine, monster.GetTheName(true));
            }

            // Beholder

            else if (monster.Uid == 36 && monster.Reaction == Friendliness.Friend)
            {
                gOut.Write("{0}{1} smiles back.", Environment.NewLine, monster.GetTheName(true));
            }

            // Griffin/Small griffin

            else if (monster.Uid == 40 || (monster.Uid == 41 && monster.Reaction != Friendliness.Neutral))
            {
                gOut.Write("{0}{1} {2} at you.", Environment.NewLine, monster.GetTheName(true), rl > 80 ? monster.EvalPlural("screeches", "screech") : rl > 50 ? monster.EvalPlural("squawks", "squawk") : monster.EvalPlural("hisses", "hiss"));
            }

            // Jaldi'al the lich

            else if (monster.Uid == 43)
            {
                gOut.Write("{0}{1} {2} at you.", Environment.NewLine, monster.GetTheName(true), rl > 80 ? "hollowly chuckles" : rl > 50 ? "gestures" : "glares");
            }

            // Jungle bekkah

            else if (monster.Uid == 44)
            {
                gOut.Write("{0}{1} {2} at you.", Environment.NewLine, monster.GetTheName(true), rl > 80 ? monster.EvalPlural("roars", "roar") : rl > 50 ? monster.EvalPlural("snarls", "snarl") : monster.EvalPlural("hisses", "hiss"));
            }

            // Non-emoting monsters

            else if (Constants.NonEmotingMonsterUids.Contains(monster.Uid))
            {
                gOut.Write("{0}{1} {2} not responsive.", Environment.NewLine, monster.GetTheName(true), monster.EvalPlural("is", "are"));
            }
            else
            {
                base.MonsterEmotes(monster, friendSmile);
            }
        }