public override void ProcessEvents(EventType eventType) { // Spook Reducer 2.0 // (c) 2012 Frank Black Productions if (eventType == EventType.AfterPrintSayText && ProcessedPhrase.Equals("less spooks", StringComparison.OrdinalIgnoreCase) && gGameState.SpookCounter < 8) { var spookMonster = gMDB[9]; Debug.Assert(spookMonster != null); spookMonster.CurrGroupCount = spookMonster.CurrGroupCount > 0 ? 1 : 0; spookMonster.InitGroupCount = spookMonster.CurrGroupCount; spookMonster.GroupCount = spookMonster.CurrGroupCount; gGameState.SpookCounter = 8; gOut.Print("Less spooks it is!"); NextState = Globals.CreateInstance <IStartState>(); goto Cleanup; } base.ProcessEvents(eventType); Cleanup: ; }
public override void ProcessEvents(EventType eventType) { if (eventType == EventType.AfterPrintSayText) { var waterWeirdMonster = gMDB[38]; Debug.Assert(waterWeirdMonster != null); var efreetiMonster = gMDB[50]; Debug.Assert(efreetiMonster != null); var parchmentArtifact = gADB[33]; Debug.Assert(parchmentArtifact != null); // Summon efreeti if ((parchmentArtifact.IsCarriedByCharacter() || parchmentArtifact.IsInRoom(ActorRoom)) && efreetiMonster.IsInLimbo() && ProcessedPhrase.Equals("rinnuk aukasker frudasdus", StringComparison.OrdinalIgnoreCase)) { if (!gGameState.EfreetiKilled && ++gGameState.EfreetiSummons <= 3) { gEngine.PrintEffectDesc(95); efreetiMonster.SetInRoom(ActorRoom); } else { gEngine.PrintEffectDesc(96); parchmentArtifact.SetInLimbo(); } } // Kill water weird else if (waterWeirdMonster.IsInRoom(ActorRoom) && ProcessedPhrase.Equals("avarchrom yarei uttoximo", StringComparison.OrdinalIgnoreCase)) { gOut.Print("{0} jolts violently several times and then disintegrates.", waterWeirdMonster.GetTheName(true)); waterWeirdMonster.DmgTaken = waterWeirdMonster.Hardiness; var combatSystem = Globals.CreateInstance <ICombatSystem>(x => { x.SetNextStateFunc = s => NextState = s; x.DfMonster = waterWeirdMonster; // x.OmitFinalNewLine = false; }); combatSystem.ExecuteCheckMonsterStatus(); } } base.ProcessEvents(eventType); }
public override void ProcessEvents(EventType eventType) { // Summon Alkanda if (eventType == EventType.BeforePrintSayText && ProcessedPhrase.Equals("annal natthrac", StringComparison.OrdinalIgnoreCase)) { var medallionArtifact = gADB[77]; Debug.Assert(medallionArtifact != null); if (medallionArtifact.IsCarriedByCharacter() || medallionArtifact.IsInRoom(ActorRoom)) { var alkandaMonster = gMDB[56]; Debug.Assert(alkandaMonster != null); if (!alkandaMonster.IsInRoom(ActorRoom) && !gGameState.AlkandaKilled) { alkandaMonster.SetInRoom(ActorRoom); NextState = Globals.CreateInstance <IStartState>(); } } else { gOut.Print("You don't have the medallion of Ngurct!"); NextState = Globals.CreateInstance <IStartState>(); GotoCleanup = true; goto Cleanup; } } base.ProcessEvents(eventType); Cleanup: ; }
public override void ProcessEvents(EventType eventType) { if (eventType == EventType.AfterPrintSayText) { var hammerArtifact = gADB[24]; Debug.Assert(hammerArtifact != null); var magicWordsSpoken = ProcessedPhrase.Equals("thor", StringComparison.OrdinalIgnoreCase) || ProcessedPhrase.Equals("thor's hammer", StringComparison.OrdinalIgnoreCase); var hammerPresent = hammerArtifact.IsCarriedByCharacter() || hammerArtifact.IsInRoom(ActorRoom); // Hammer of Thor if (magicWordsSpoken && hammerPresent) { var command = Globals.CreateInstance <IUseCommand>(); CopyCommandData(command); command.Dobj = hammerArtifact; NextState = command; GotoCleanup = true; } else { base.ProcessEvents(eventType); } } else { base.ProcessEvents(eventType); } }
public override void ProcessEvents(EventType eventType) { if (eventType == EventType.BeforePrintSayText) { var Lisa = gMDB[3]; // Assume custom text output, skip default behavior GotoCleanup = true; if (gLMKKP1.SaidHello == 1 && gLMKKP1.NecklaceTaken < 2 && ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("hi", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(61); } else if (gLMKKP1.SaidHello == 1 && gLMKKP1.NecklaceTaken < 2 && ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("hello", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(61); } else if (gLMKKP1.SaidHello == 0 && gLMKKP1.NecklaceTaken < 2 && ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("hello", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(16); gEngine.PrintEffectDesc(17); gEngine.PrintEffectDesc(18); gLMKKP1.SaidHello = 1; } else if (gLMKKP1.SaidHello == 0 && gLMKKP1.NecklaceTaken < 2 && ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("hi", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(19); gEngine.PrintEffectDesc(17); gEngine.PrintEffectDesc(18); gLMKKP1.SaidHello = 1; } else if (gLMKKP1.NecklaceTaken == 2 && ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("hi", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(62); } else if (gLMKKP1.NecklaceTaken == 2 && ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("hello", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(62); } else if (gLMKKP1.NecklaceTaken < 2 && ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("damian", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(63); } else if (gLMKKP1.NecklaceTaken == 2 && ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("damian", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(64); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("necklace", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(65); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("bats", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(66); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("bat", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(66); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("cave", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(67); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("lighthouse", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(68); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("opening", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(69); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("window", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(69); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("squid", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(70); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("squids", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(70); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("warrior", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(71); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("tree", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(72); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("oak", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(72); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("oak tree", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(72); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("large tree", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(72); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("large oak", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(72); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("lisa", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(73); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("swamp", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(74); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("monster", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(75); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("monsters", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(75); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("werewolves", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(76); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("werewolf", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(76); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("ogres", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(77); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("ogre", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(77); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("king", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(78); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("mountain king", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(78); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("creatures", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(79); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("enemies", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(79); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("servants", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(79); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("land", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(81); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("reward", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(82); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("mountains", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(83); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("forest", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(84); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral && ProcessedPhrase.Equals("hair", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(85); } else if (ActorRoom.Uid == 13 && Lisa.Reaction == Friendliness.Neutral) { gEngine.PrintEffectDesc(80); } else { // No custom text output, use default behavior GotoCleanup = false; } } else { base.ProcessEvents(eventType); } }
public override void ProcessEvents(EventType eventType) { if (eventType == EventType.AfterPrintSayText) { // Restore monster stats to average for testing/debugging if (ProcessedPhrase.Equals("*brutis", StringComparison.OrdinalIgnoreCase)) { var artUid = ActorMonster.Weapon; ActorMonster.Weapon = -1; gEngine.InitMonsterScaledHardinessValues(); ActorMonster.Weapon = artUid; gOut.Print("Monster stats reduced."); NextState = Globals.CreateInstance <IStartState>(); goto Cleanup; } var cauldronArtifact = gADB[24]; Debug.Assert(cauldronArtifact != null); // If the cauldron is present and the spell components (see effect #50) are in it then begin the spell casting process if (ProcessedPhrase.Equals("knock nikto mellon", StringComparison.OrdinalIgnoreCase) && (cauldronArtifact.IsCarriedByCharacter() || cauldronArtifact.IsInRoom(ActorRoom)) && gEngine.SpellReagentsInCauldron(cauldronArtifact)) { gEngine.PrintEffectDesc(51); gGameState.UsedCauldron = true; } var lichMonster = gMDB[15]; Debug.Assert(lichMonster != null); // Player will agree to free the Lich if (ProcessedPhrase.Equals("i will free you", StringComparison.OrdinalIgnoreCase) && ActorRoom.Uid == 109 && lichMonster.IsInRoom(ActorRoom) && lichMonster.Reaction > Friendliness.Enemy && gGameState.LichState < 2) { gEngine.PrintEffectDesc(54); gGameState.LichState = 1; } // Player actually frees the Lich if (ProcessedPhrase.Equals("barada lhain", StringComparison.OrdinalIgnoreCase) && ActorRoom.Uid == 109 && lichMonster.IsInRoom(ActorRoom) && gGameState.LichState == 1) { var helmArtifact = gADB[25]; Debug.Assert(helmArtifact != null); gEngine.PrintEffectDesc(55); // Set freed Lich flag and give Wizard's Helm (25) to player (carried but not worn) gGameState.LichState = 2; helmArtifact.SetInRoom(ActorRoom); } } base.ProcessEvents(eventType); Cleanup: ; }
public override void ProcessEvents(EventType eventType) { if (eventType == EventType.BeforePrintSayText) { var found = false; // Fly FBA today and get there faster! if (ProcessedPhrase.Equals("*d", StringComparison.OrdinalIgnoreCase)) { PrintedPhrase = "Dodge."; ProcessedPhrase = "dodge"; found = true; } if (ProcessedPhrase.Equals("*f", StringComparison.OrdinalIgnoreCase)) { PrintedPhrase = "Frukendorf."; ProcessedPhrase = "frukendorf"; found = true; } if (ProcessedPhrase.Equals("*h", StringComparison.OrdinalIgnoreCase)) { PrintedPhrase = "Main Hall."; ProcessedPhrase = "main hall"; found = true; } if (ProcessedPhrase.Equals("*m", StringComparison.OrdinalIgnoreCase)) { PrintedPhrase = "Mudville."; ProcessedPhrase = "mudville"; found = true; } if (found && (gGameState.Ro == 28 || (gGameState.Ro > 88 && gGameState.Ro < 92))) { gOut.Print("Thank you for flying Frank Black Airlines!"); } } else if (eventType == EventType.AfterPrintSayText) { var princeMonster = gMDB[38]; Debug.Assert(princeMonster != null); var cargoArtifact = gADB[129]; Debug.Assert(cargoArtifact != null); // Ye Olde Eamon Railroad // ------------------------ // Verify Runcible Cargo before allowing travel to Frukendorf if ((ActorRoom.Uid == 28 || ActorRoom.Uid == 89 || ActorRoom.Uid == 90) && ProcessedPhrase.Equals("frukendorf", StringComparison.OrdinalIgnoreCase)) { if (EnemiesInRoom()) { goto Cleanup; } if (!cargoArtifact.IsInRoom(ActorRoom) && !cargoArtifact.IsCarriedByCharacter()) { gEngine.PrintEffectDesc(107); NextState = Globals.CreateInstance <IStartState>(); GotoCleanup = true; goto Cleanup; } TravelByTrain(91, 109); goto Cleanup; } // Route 100: Main Hall Station if (ActorRoom.Uid == 28) { if (ProcessedPhrase.Equals("dodge", StringComparison.OrdinalIgnoreCase)) { if (EnemiesInRoom()) { goto Cleanup; } TravelByTrain(89, 99); goto Cleanup; } if (ProcessedPhrase.Equals("mudville", StringComparison.OrdinalIgnoreCase)) { if (EnemiesInRoom()) { goto Cleanup; } TravelByTrain(90, 103); goto Cleanup; } } // Route 13: Dodge Station if (ActorRoom.Uid == 89) { if (ProcessedPhrase.Equals("main hall", StringComparison.OrdinalIgnoreCase)) { if (EnemiesInRoom()) { goto Cleanup; } TravelByTrain(28, 100); goto Cleanup; } if (ProcessedPhrase.Equals("mudville", StringComparison.OrdinalIgnoreCase)) { if (EnemiesInRoom()) { goto Cleanup; } TravelByTrain(90, 101); goto Cleanup; } } // Route 0: Mudville Station if (ActorRoom.Uid == 90) { if (ProcessedPhrase.Equals("dodge", StringComparison.OrdinalIgnoreCase)) { if (EnemiesInRoom()) { goto Cleanup; } TravelByTrain(89, 102); goto Cleanup; } if (ProcessedPhrase.Equals("main hall", StringComparison.OrdinalIgnoreCase)) { if (EnemiesInRoom()) { goto Cleanup; } TravelByTrain(28, 104); goto Cleanup; } } // Route 66: Frukendorf Station if (ActorRoom.Uid == 91 && (ProcessedPhrase.Equals("main hall", StringComparison.OrdinalIgnoreCase) || ProcessedPhrase.Equals("dodge", StringComparison.OrdinalIgnoreCase) || ProcessedPhrase.Equals("mudville", StringComparison.OrdinalIgnoreCase))) { if (!cargoArtifact.IsCarriedByMonster(princeMonster)) { gEngine.PrintEffectDesc(106); NextState = Globals.CreateInstance <IStartState>(); GotoCleanup = true; goto Cleanup; } if (EnemiesInRoom()) { goto Cleanup; } if (ProcessedPhrase.Equals("dodge", StringComparison.OrdinalIgnoreCase) || ProcessedPhrase.Equals("mudville", StringComparison.OrdinalIgnoreCase)) { gEngine.PrintEffectDesc(141); NextState = Globals.CreateInstance <IStartState>(); GotoCleanup = true; goto Cleanup; } // Return to Main Hall after capitulating to the Bandits gOut.Print("You begin your journey home..."); gOut.Print("{0}", Globals.LineSep); gEngine.PrintEffectDesc(145); Globals.In.KeyPress(Globals.Buf); gGameState.Die = 0; Globals.ExitType = ExitType.FinishAdventure; Globals.MainLoop.ShouldShutdown = true; NextState = Globals.CreateInstance <IStartState>(); GotoCleanup = true; goto Cleanup; } } base.ProcessEvents(eventType); Cleanup: ; }