public override void Execute() { base.Execute(); if (RevealSecretPassage) { gEngine.PrintEffectDesc(12); ActorRoom.SetDirs(Direction.East, 25); } }
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>(); } }
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); } }