예제 #1
0
        public Location LoadEntrance()
        {
            Location returnData;

            returnData             = new Location();
            returnData.Name        = "Underground Hideout";
            returnData.Description = "A small trap door opens to an underground hideout. The entrance to the hideout feels like an underground cave, with everything dirt. There are torches lining the walls to give light to the entrance.";

            //Actions

            // Adjacent Locations
            Dictionary <string, LocationDefinition> adjacentLocationDefinitions = new Dictionary <string, LocationDefinition>();

            // Town Center
            LocationDefinition locationDefinition = AnkouBanditShack.GetTownInstance().GetBufferRoomDefinition();

            adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);

            locationDefinition = AnkouUndergroundHideOut.GetTownInstance().GetSmallPassageWayDefinition();
            adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);

            returnData.AdjacentLocationDefinitions = adjacentLocationDefinitions;

            return(returnData);
        }
예제 #2
0
        public Location LoadStorage()
        {
            Location returnData;

            returnData      = new Location();
            returnData.Name = "Storage";
            bool openedChest = Convert.ToBoolean(LocationHandler.GetLocationStateValue(Ankou.LOCATION_STATE_KEY, AnkouUndergroundHideOut.TOOK_STORAGE_TREASURE));

            returnData.Description = "A small room used for storage. There is a treasure chest in against the back wall of the room.";

            //Actions
            if (!openedChest)
            {
                List <LocationAction> locationActions = new List <LocationAction>();
                TreasureChestAction   itemAction      = new TreasureChestAction(2);
                locationActions.Add(itemAction);
                itemAction.PostItem += StorageChest;
                returnData.Actions   = locationActions;
            }

            // Adjacent Locations
            Dictionary <string, LocationDefinition> adjacentLocationDefinitions = new Dictionary <string, LocationDefinition>();

            // Town Center
            LocationDefinition locationDefinition = AnkouUndergroundHideOut.GetTownInstance().GetConferenceRoomDefinition();

            adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);

            returnData.AdjacentLocationDefinitions = adjacentLocationDefinitions;

            return(returnData);
        }
예제 #3
0
        public Location LoadConferenceRoom()
        {
            Location returnData;

            returnData      = new Location();
            returnData.Name = "Conference Room";
            bool defeatedMobs = Convert.ToBoolean(LocationHandler.GetLocationStateValue(Ankou.LOCATION_STATE_KEY, AnkouUndergroundHideOut.DEFEATED_CONFERENCE_ROOM_MOBS));

            //Actions
            if (!defeatedMobs)
            {
                returnData.Description = "A large conference room with a large round table in the middle of the room. There are several bandits and nobles sitting around it, discussing their strategy for moving forward.";

                List <LocationAction> locationActions = new List <LocationAction>();

                List <Mob> mob = new List <Mob>();
                mob.Add(new Bandit());
                mob.Add(new Noble());
                mob.Add(new Noble());
                mob.Add(new Bandit());
                mob.Add(new Noble());
                mob.Add(new Noble());
                mob.Add(new Bandit());
                mob.Add(new Bandit());
                mob.Add(new Bandit());
                mob.Add(new Noble());
                CombatAction combatAction = new CombatAction("Bandits and Nobles", mob);
                combatAction.PostCombat += ConferenceRoomMobs;

                locationActions.Add(combatAction);

                returnData.Actions = locationActions;
            }
            else
            {
                returnData.Description = "A large conference room with a large round table in the middle of the room. There are several bandits and nobles slaughtered upon the table, whatever strategy they were discussing now worthless.";
            }

            // Adjacent Locations
            Dictionary <string, LocationDefinition> adjacentLocationDefinitions = new Dictionary <string, LocationDefinition>();

            // Town Center
            LocationDefinition locationDefinition = AnkouUndergroundHideOut.GetTownInstance().GetSmallPassageWayDefinition();

            adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);

            if (defeatedMobs)
            {
                locationDefinition = AnkouUndergroundHideOut.GetTownInstance().GetStorageDefinition();
                adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);

                locationDefinition = AnkouUndergroundHideOut.GetTownInstance().GetDinningHallDefinition();
                adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);
            }

            returnData.AdjacentLocationDefinitions = adjacentLocationDefinitions;

            return(returnData);
        }
예제 #4
0
        public Location LoadBufferRoom()
        {
            Location returnData;

            returnData      = new Location();
            returnData.Name = "Buffer Room";
            bool defeatedBandits = Convert.ToBoolean(LocationHandler.GetLocationStateValue(Ankou.LOCATION_STATE_KEY, AnkouBanditShack.DEFEATED_BUFFER_ROOM_BANDITS));

            //Actions
            if (!defeatedBandits)
            {
                returnData.Description = "A small room that separates the kitchen from the holding room. Three bandits are guarding the holding room.";

                List <LocationAction> locationActions = new List <LocationAction>();

                List <Mob> bandit = new List <Mob>();
                bandit.Add(new Bandit());
                bandit.Add(new Bandit());
                bandit.Add(new Bandit());
                CombatAction combatAction = new CombatAction("Bandits", bandit);
                combatAction.PostCombat += BufferRoomBandits;

                locationActions.Add(combatAction);

                returnData.Actions = locationActions;
            }
            else
            {
                returnData.Description = "A small room that separates the kitchen from the holding room. Three bandits lay vanquished before the door.";
            }

            // Adjacent Locations
            Dictionary <string, LocationDefinition> adjacentLocationDefinitions = new Dictionary <string, LocationDefinition>();

            // Town Center
            LocationDefinition locationDefinition = AnkouBanditShack.GetTownInstance().GetKitchenDefinition();

            adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);

            if (defeatedBandits)
            {
                locationDefinition = AnkouBanditShack.GetTownInstance().GetHoldingRoomDefinition();
                adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);
            }

            Accomplishment scoutUndergroundHideout = Ankou.GetAnkouAccomplishments().Find(x => x.Name.Contains("Scouted Underground Hideout"));

            if (GameState.Hero.Accomplishments.Contains(scoutUndergroundHideout))
            {
                locationDefinition = AnkouUndergroundHideOut.GetTownInstance().GetEntranceDefinition();
                adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);
            }


            returnData.AdjacentLocationDefinitions = adjacentLocationDefinitions;

            return(returnData);
        }
예제 #5
0
        public static AnkouUndergroundHideOut GetTownInstance()
        {
            if (_AnkouUndergroundHideOut == null)
            {
                _AnkouUndergroundHideOut = new AnkouUndergroundHideOut();
            }

            return(_AnkouUndergroundHideOut);
        }
예제 #6
0
        public Location LoadSmallPassageway()
        {
            Location returnData;

            returnData      = new Location();
            returnData.Name = "Small Passageway";
            bool defeatedBandits = Convert.ToBoolean(LocationHandler.GetLocationStateValue(Ankou.LOCATION_STATE_KEY, AnkouUndergroundHideOut.DEFEATED_SMALL_PASSAGEWAY_BANDITS));

            //Actions
            if (!defeatedBandits)
            {
                returnData.Description = "A small passageway. The hideout is no longer made of dirty like the entrance was, it is now made of wood and brick. Two bandits stand guard to further access within the hideout.";

                List <LocationAction> locationActions = new List <LocationAction>();

                List <Mob> bandit = new List <Mob>();
                bandit.Add(new Bandit());
                bandit.Add(new Bandit());
                CombatAction combatAction = new CombatAction("Bandits", bandit);
                combatAction.PostCombat += PassageWayBandits;

                locationActions.Add(combatAction);

                returnData.Actions = locationActions;
            }
            else
            {
                returnData.Description = "A small passageway. The hideout is no longer made of dirty like the entrance was, it is now made of wood and brick. Two bandits lay dead on the ground.";
            }

            // Adjacent Locations
            Dictionary <string, LocationDefinition> adjacentLocationDefinitions = new Dictionary <string, LocationDefinition>();

            // Town Center
            LocationDefinition locationDefinition = AnkouUndergroundHideOut.GetTownInstance().GetEntranceDefinition();

            adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);

            if (defeatedBandits)
            {
                locationDefinition = AnkouUndergroundHideOut.GetTownInstance().GetKitchenDefinition();
                adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);

                locationDefinition = AnkouUndergroundHideOut.GetTownInstance().GetConferenceRoomDefinition();
                adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);
            }

            returnData.AdjacentLocationDefinitions = adjacentLocationDefinitions;

            return(returnData);
        }
예제 #7
0
        public Location LoadBarracks()
        {
            Location returnData;

            returnData      = new Location();
            returnData.Name = "Barracks";
            bool defeatedGuards = Convert.ToBoolean(LocationHandler.GetLocationStateValue(Ankou.LOCATION_STATE_KEY, AnkouUndergroundHideOut.DEFEATED_BARRACKS_GUARDS));

            //Actions
            if (!defeatedGuards)
            {
                returnData.Description = "There are several pieces of weapons and armor hanging from the walls. There are four guards the nobles brought with them sitting down on at one of the tables playing a card game to pass time.";

                List <LocationAction> locationActions = new List <LocationAction>();

                List <Mob> guard = new List <Mob>();
                guard.Add(new Guard());
                guard.Add(new Guard());
                guard.Add(new Guard());
                guard.Add(new Guard());
                CombatAction combatAction = new CombatAction("Guards", guard);
                combatAction.PostCombat += BarracksGuards;

                locationActions.Add(combatAction);

                returnData.Actions = locationActions;
            }
            else
            {
                returnData.Description = "There are several pieces of weapons and armor hanging from the walls. There are four dead guards slaughtered, there card game long forever forgotten.";
            }

            // Adjacent Locations
            Dictionary <string, LocationDefinition> adjacentLocationDefinitions = new Dictionary <string, LocationDefinition>();

            // Town Center
            LocationDefinition locationDefinition = AnkouUndergroundHideOut.GetTownInstance().GetDinningHallDefinition();

            adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);

            returnData.AdjacentLocationDefinitions = adjacentLocationDefinitions;

            return(returnData);
        }
예제 #8
0
        public Location LoadKitchen()
        {
            Location returnData;

            returnData      = new Location();
            returnData.Name = "Kitchen";
            bool defeatedMobs = Convert.ToBoolean(LocationHandler.GetLocationStateValue(Ankou.LOCATION_STATE_KEY, AnkouUndergroundHideOut.DEFEATED_KITCHEN_MOBS));

            //Actions
            if (!defeatedMobs)
            {
                returnData.Description = "A nicely sized kitchen. There are two bandits and two peasants they captured and enslaved working on meals for the rest of the people in the hideout.";

                List <LocationAction> locationActions = new List <LocationAction>();

                List <Mob> mobs = new List <Mob>();
                mobs.Add(new Bandit());
                mobs.Add(new Peasant());
                mobs.Add(new Peasant());
                mobs.Add(new Bandit());
                CombatAction combatAction = new CombatAction("Bandits and Peasants", mobs);
                combatAction.PostCombat += KitchenMobs;

                locationActions.Add(combatAction);

                returnData.Actions = locationActions;
            }
            else
            {
                returnData.Description = "A nicely sized kitchen. There are four dead people with their bload acting as sausce for the food they were cooking.";
            }

            // Adjacent Locations
            Dictionary <string, LocationDefinition> adjacentLocationDefinitions = new Dictionary <string, LocationDefinition>();

            // Town Center
            LocationDefinition locationDefinition = AnkouUndergroundHideOut.GetTownInstance().GetSmallPassageWayDefinition();

            adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);

            returnData.AdjacentLocationDefinitions = adjacentLocationDefinitions;

            return(returnData);
        }
예제 #9
0
        public Location LoadOverseersQuarters()
        {
            Location returnData;

            returnData      = new Location();
            returnData.Name = "Overseer's Quarters";
            bool   defeatedOverseer     = Convert.ToBoolean(LocationHandler.GetLocationStateValue(Ankou.LOCATION_STATE_KEY, AnkouUndergroundHideOut.KILLED_NECRO_OVERSEER));
            bool   openedChest          = Convert.ToBoolean(LocationHandler.GetLocationStateValue(Ankou.LOCATION_STATE_KEY, AnkouUndergroundHideOut.TOOK_NECRO_OVERSEER_TREASURE));
            bool   tookJournal          = Convert.ToBoolean(LocationHandler.GetLocationStateValue(Ankou.LOCATION_STATE_KEY, AnkouUndergroundHideOut.TOOK_JOURNAL));
            string overseerSpeechBefore = "Don't try to sneak up on me, I heard you come in. Tell me," + GameState.Hero.Identifier + ", how did you find this place? You know what, it doesn't really matter now does it. Your life ends here anyway.";
            string overseerSpeechAfter  = "The Necromancer Overseer stumbles, his face drained of all color after his fight with you. You jump forward and grab his sword and impale him with it. He gasp once then collapse to the ground.";

            //Actions
            if (!defeatedOverseer)
            {
                returnData.Description = "A nice large room meant to house the necromancer who was assigned to oversee the operations going on in Ankou. He is sitting at his desk scribbling away in his journal, his back turned away from the door.";
                List <LocationAction> locationActions = new List <LocationAction>();

                List <Mob> overseer = new List <Mob>();
                overseer.Add(new NecroOverseer());
                CombatAction combatAction = new CombatAction("Necromancer Overseer", overseer, overseerSpeechBefore, overseerSpeechAfter);
                combatAction.PostCombat += DefeatedOverseer;

                locationActions.Add(combatAction);

                returnData.Actions = locationActions;
            }
            else if (defeatedOverseer)
            {
                if (!openedChest)
                {
                    if (!tookJournal)
                    {
                        returnData.Description = "A nice large room meant to house the necromancer who was assigned to oversee the operations going on in Ankou. He lays dead in the center of the floor. The journal he was writing in lays on the desk. There is an unopened chest beneath the desk.";
                    }
                    else
                    {
                        returnData.Description = "A nice large room meant to house the necromancer who was assigned to oversee the operations going on in Ankou. He lays dead in the center of the floor. There is an unopened chest beneath the desk.";
                    }

                    List <LocationAction> locationActions = new List <LocationAction>();
                    TreasureChestAction   itemAction      = new TreasureChestAction(4);
                    locationActions.Add(itemAction);
                    itemAction.PostItem += OverseerChest;
                    returnData.Actions   = locationActions;
                }
                if (openedChest && tookJournal)
                {
                    returnData.Description = "A nice large room meant to house the necromancer who was assigned to oversee the operations going on in Ankou. He lays dead in the center of the floor. There is an opened chest beneath the desk.";
                }
                if (!tookJournal && openedChest)
                {
                    returnData.Description = "A nice large room meant to house the necromancer who was assigned to oversee the operations going on in Ankou. He lays dead in the center of the floor. The journal he was writing in lays on the desk. There is an opened chest beneath the desk.";

                    List <LocationAction> locationActions   = new List <LocationAction>();
                    TakeItemAction        takeJournalAction = new TakeItemAction("Journal");
                    takeJournalAction.PostItem += TookJournal;
                    locationActions.Add(takeJournalAction);
                    returnData.Actions = locationActions;
                }
            }

            //Actions

            // Adjacent Locations
            Dictionary <string, LocationDefinition> adjacentLocationDefinitions = new Dictionary <string, LocationDefinition>();

            // Town Center
            LocationDefinition locationDefinition = AnkouUndergroundHideOut.GetTownInstance().GetDinningHallDefinition();

            adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);

            if (defeatedOverseer && tookJournal)
            {
                locationDefinition = Ankou.GetTownInstance().GetTownCenterDefinition();
                adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);
            }

            returnData.AdjacentLocationDefinitions = adjacentLocationDefinitions;

            return(returnData);
        }
예제 #10
0
        public Location LoadDinningHall()
        {
            Location returnData;

            returnData      = new Location();
            returnData.Name = "Dinning Hall";
            bool defeatedMobs = Convert.ToBoolean(LocationHandler.GetLocationStateValue(Ankou.LOCATION_STATE_KEY, AnkouUndergroundHideOut.DEFEATED_DINNING_HALL_MOBS));

            //Actions
            if (!defeatedMobs)
            {
                returnData.Description = "A large dinning hall meant to feed large groups of people. There are sevearl tables throughout the room. There's a dozen people eating, an even mix of bandits and nobles.";

                List <LocationAction> locationActions = new List <LocationAction>();

                List <Mob> mob = new List <Mob>();
                mob.Add(new Bandit());
                mob.Add(new Noble());
                mob.Add(new Noble());
                mob.Add(new Bandit());
                mob.Add(new Noble());
                mob.Add(new Bandit());
                mob.Add(new Noble());
                mob.Add(new Noble());
                mob.Add(new Bandit());
                mob.Add(new Bandit());
                mob.Add(new Bandit());
                mob.Add(new Noble());
                CombatAction combatAction = new CombatAction("Bandits and Nobles", mob);
                combatAction.PostCombat += DinningHallMobs;

                locationActions.Add(combatAction);

                returnData.Actions = locationActions;
            }
            else
            {
                returnData.Description = "A large dinning hall meant to feed large groups of people. There are sevearl tables throughout the room. There's a dozen dead people laying with their blood coating their food.";
            }

            // Adjacent Locations
            Dictionary <string, LocationDefinition> adjacentLocationDefinitions = new Dictionary <string, LocationDefinition>();

            // Town Center
            LocationDefinition locationDefinition = AnkouUndergroundHideOut.GetTownInstance().GetConferenceRoomDefinition();

            adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);

            if (defeatedMobs)
            {
                locationDefinition = AnkouUndergroundHideOut.GetTownInstance().GetBarracksDefinition();
                adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);

                locationDefinition = AnkouUndergroundHideOut.GetTownInstance().GetOverseersQuartersDefinition();
                adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);
            }

            returnData.AdjacentLocationDefinitions = adjacentLocationDefinitions;

            return(returnData);
        }