Ejemplo n.º 1
0
        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:

            ;
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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:

            ;
        }
Ejemplo n.º 4
0
        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);
            }
        }
Ejemplo n.º 5
0
        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);
            }
        }
Ejemplo n.º 6
0
        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:

            ;
        }
Ejemplo n.º 7
0
        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:

            ;
        }