コード例 #1
0
        public override void Execute()
        {
            base.Execute();

            if (RevealSecretPassage)
            {
                gEngine.PrintEffectDesc(12);

                ActorRoom.SetDirs(Direction.East, 25);
            }
        }
コード例 #2
0
        public override void Execute()
        {
            ActorRoom.Seen = false;

            if (gGameState.GetNBTL(Friendliness.Enemy) <= 0)
            {
                var artTypes = new ArtifactType[] { ArtifactType.Treasure, ArtifactType.DoorGate };

                var goldCurtainArtifact = gADB[40];

                Debug.Assert(goldCurtainArtifact != null);

                var ac = goldCurtainArtifact.GetArtifactCategory(artTypes);

                Debug.Assert(ac != null);

                if (ActorRoom.Uid != 67 || ac.Type == ArtifactType.Treasure || ac.GetKeyUid() == 0)
                {
                    var numRooms = Globals.Module.NumRooms;

                    var directionValues = EnumUtil.GetValues <Direction>();

                    foreach (var dv in directionValues)
                    {
                        if (ActorRoom.GetDirs(dv) < 0 && ActorRoom.GetDirs(dv) >= -numRooms)
                        {
                            var direction = gEngine.GetDirections(dv);

                            Debug.Assert(direction != null);

                            gOut.Print("You found a secret passage {0}!", direction.Name.ToLower());

                            ActorRoom.SetDirs(dv, -ActorRoom.GetDirs(dv));
                        }
                    }
                }
            }

            if (NextState == null)
            {
                NextState = Globals.CreateInstance <IMonsterStartState>();
            }
        }
コード例 #3
0
        public override void PrintTaken(IArtifact artifact)
        {
            Debug.Assert(artifact != null);

            var bronzeKeyArtifact = gADB[27];

            Debug.Assert(bronzeKeyArtifact != null);

            var deviceArtifact1 = gADB[44];

            Debug.Assert(deviceArtifact1 != null);

            var deviceArtifact2 = gADB[49];

            Debug.Assert(deviceArtifact2 != null);

            var ac = artifact.Categories[0];

            // Get lever

            if (artifact.Uid == 48 && deviceArtifact1.IsInRoom(ActorRoom))
            {
                if (TakenArtifactList[0] != artifact)
                {
                    gOut.WriteLine();
                }

                deviceArtifact1.SetInLimbo();

                deviceArtifact2.SetInRoom(ActorRoom);

                gEngine.PrintEffectDesc(30);

                base.PrintTaken(artifact);
            }

            // Get medallion

            else if (artifact.Uid == 10 && gGameState.MedallionCharges > 0)
            {
                base.PrintTaken(artifact);

                gOut.Write("{0}{0}Your hand feels relaxed, but strong.", Environment.NewLine);

                if (TakenArtifactList[TakenArtifactList.Count - 1] != artifact)
                {
                    gOut.WriteLine();
                }
            }

            // Get straw mattress

            else if (artifact.Uid == 26 && bronzeKeyArtifact.IsInLimbo())
            {
                base.PrintTaken(artifact);

                bronzeKeyArtifact.SetInRoom(ActorRoom);

                gOut.Write("{0}{0}You found something under the mattress!", Environment.NewLine);

                if (TakenArtifactList[TakenArtifactList.Count - 1] != artifact)
                {
                    gOut.WriteLine();
                }
            }

            // Get gold curtain

            else if (artifact.Uid == 40 && ac.Type == ArtifactType.DoorGate)
            {
                base.PrintTaken(artifact);

                ActorRoom.SetDirs(Direction.South, 68);

                ac.Type = ArtifactType.Treasure;

                ac.Field1 = 0;

                ac.Field2 = 0;

                ac.Field3 = 0;

                ac.Field4 = 0;

                ac.Field5 = 0;
            }
            else
            {
                base.PrintTaken(artifact);
            }
        }