Beispiel #1
0
        public Location LoadEntrance()
        {
            Location returnData;

            returnData             = new Location();
            returnData.Name        = "Bandit and Necromancer Cave";
            returnData.Description = "A small cave entrance that is hidden from view but noticable if you know to look for it. On the inside is an empty space that makes it look like the cave is really small. However, you know that there is more to the cave and can notice the door that leads to the next room.";

            //Actions

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

            // Town Center
            LocationDefinition locationDefinition = AnkouForest.GetTownInstance().GetRightThreeDefinition();

            adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);

            locationDefinition = AnkouBanditAndNecroCave.GetTownInstance().GetDirtyRoomDefinition();
            adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);

            returnData.AdjacentLocationDefinitions = adjacentLocationDefinitions;

            return(returnData);
        }
Beispiel #2
0
        public Location LoadRightThree()
        {
            Location returnData;

            returnData             = new Location();
            returnData.Name        = "Ankou Forest Right Path Three";
            returnData.Description = "The long path of the forest ends here. There are rocks placed on the path to prevent further travel in this direction. Light does not penetrate the trees here, the darkness is all ecompassing, and the air is crushing.";

            //Actions

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

            // Town Center
            LocationDefinition locationDefinition = AnkouForest.GetTownInstance().GetRightTwoDefinition();

            adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);

            Accomplishment killNecroContractor = Ankou.GetAnkouAccomplishments().Find(x => x.Name.Contains("Kill Necromancer Contractor"));

            if (GameState.Hero.Accomplishments.Contains(killNecroContractor))
            {
                locationDefinition = AnkouBanditAndNecroCave.GetTownInstance().GetStartingLocationDefinition();
                adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);
            }

            returnData.AdjacentLocationDefinitions = adjacentLocationDefinitions;

            return(returnData);
        }
Beispiel #3
0
        public static AnkouBanditAndNecroCave GetTownInstance()
        {
            if (_AnkouBanditAndNecroCave == null)
            {
                _AnkouBanditAndNecroCave = new AnkouBanditAndNecroCave();
            }

            return(_AnkouBanditAndNecroCave);
        }
Beispiel #4
0
        public Location LoadLargeRoom()
        {
            Location returnData;

            returnData      = new Location();
            returnData.Name = "Large Room";
            bool defeatedNecro = Convert.ToBoolean(LocationHandler.GetLocationStateValue(Ankou.LOCATION_STATE_KEY, AnkouBanditAndNecroCave.DEFEATED_LARGE_ROOM_NECROS));

            //Actions
            if (!defeatedNecro)
            {
                returnData.Description = "A large room that has ten necromancers mingling about and discussing various things.";

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

                List <Mob> necro = new List <Mob>();
                necro.Add(new Necromancer());
                necro.Add(new Necromancer());
                necro.Add(new Necromancer());
                necro.Add(new Necromancer());
                necro.Add(new Necromancer());
                necro.Add(new Necromancer());
                necro.Add(new Necromancer());
                necro.Add(new Necromancer());
                necro.Add(new Necromancer());
                necro.Add(new Necromancer());
                CombatAction combatAction = new CombatAction("Necromancers", necro);
                combatAction.PostCombat += LargeRoomNecros;

                locationActions.Add(combatAction);

                returnData.Actions = locationActions;
            }
            else
            {
                returnData.Description = "A large room with ten necromancers slaughtered about the ground.";
            }

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

            // Town Center
            LocationDefinition locationDefinition = AnkouBanditAndNecroCave.GetTownInstance().GetSmallHovelDefinition();

            adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);

            if (defeatedNecro)
            {
                locationDefinition = AnkouBanditAndNecroCave.GetTownInstance().GetDarkRoomDefinition();
                adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);
            }

            returnData.AdjacentLocationDefinitions = adjacentLocationDefinitions;

            return(returnData);
        }
Beispiel #5
0
        public Location LoadDirtyRoom()
        {
            Location returnData;

            returnData      = new Location();
            returnData.Name = "Dirty Room";
            bool defeatedBandits = Convert.ToBoolean(LocationHandler.GetLocationStateValue(Ankou.LOCATION_STATE_KEY, AnkouBanditAndNecroCave.DEFEATED_DIRTY_ROOM_BANDITS));

            //Actions
            if (!defeatedBandits)
            {
                returnData.Description = "A dirty room with six bandits relaxing in it.";

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

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

                locationActions.Add(combatAction);

                returnData.Actions = locationActions;
            }
            else
            {
                returnData.Description = "A dirty room with six dead bandits in it.";
            }

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

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

            adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);

            if (defeatedBandits)
            {
                locationDefinition = AnkouBanditAndNecroCave.GetTownInstance().GetSmallHovelDefinition();
                adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);
            }

            returnData.AdjacentLocationDefinitions = adjacentLocationDefinitions;

            return(returnData);
        }
Beispiel #6
0
        public Location LoadSmallHovel()
        {
            Location returnData;

            returnData      = new Location();
            returnData.Name = "Small Hovel";
            bool defeatedMobs = Convert.ToBoolean(LocationHandler.GetLocationStateValue(Ankou.LOCATION_STATE_KEY, AnkouBanditAndNecroCave.DEFEATED_SMALL_HOVEL_MOBS));

            //Actions
            if (!defeatedMobs)
            {
                returnData.Description = "A small hovel that has two bandits and two necromancers discussing future plans.";

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

                List <Mob> mob = new List <Mob>();
                mob.Add(new Bandit());
                mob.Add(new Necromancer());
                mob.Add(new Bandit());
                mob.Add(new Necromancer());
                CombatAction combatAction = new CombatAction("Bandits and Necromancers", mob);
                combatAction.PostCombat += SmallHovelMobs;

                locationActions.Add(combatAction);

                returnData.Actions = locationActions;
            }
            else
            {
                returnData.Description = "A small hovel with four dead boides lying mangled and bent on the ground.";
            }

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

            // Town Center
            LocationDefinition locationDefinition = AnkouBanditAndNecroCave.GetTownInstance().GetDirtyRoomDefinition();

            adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);

            if (defeatedMobs)
            {
                locationDefinition = AnkouBanditAndNecroCave.GetTownInstance().GetLargeRoomDefinition();
                adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);
            }

            returnData.AdjacentLocationDefinitions = adjacentLocationDefinitions;

            return(returnData);
        }
Beispiel #7
0
        public Location LoadDarkRoom()
        {
            Location returnData;

            returnData             = new Location();
            returnData.Name        = "Dark Room";
            returnData.Description = "A very dark room. The walls are black and glowing purple with some dark evil magic. There are skulls aligned in ritualistic patterns on the floor. There are drawings on the walls, painted with blood. In the middle stands a small man with a black hood covering his face. He has his hands outstreched and he's chanting something and the air grows heavier the more he chants.";
            bool   defeatedNecroContractor = Convert.ToBoolean(LocationHandler.GetLocationStateValue(Ankou.LOCATION_STATE_KEY, AnkouBanditAndNecroCave.KILLED_NECRO_CONTRACTOR));
            bool   openedChest             = Convert.ToBoolean(LocationHandler.GetLocationStateValue(Ankou.LOCATION_STATE_KEY, AnkouBanditAndNecroCave.TOOK_TREASURE));
            bool   takeLetters             = Convert.ToBoolean(LocationHandler.GetLocationStateValue(Ankou.LOCATION_STATE_KEY, AnkouBanditAndNecroCave.TOOK_JOURNAL));
            string necroSpeechBefore       = "Welcome to my humble adobe, " + GameState.Hero.Identifier + ". You won't make it out alive. Come, join me.";
            string necroSpeechAfter        = "The necromancer's body vanishes from his robes and they collapse to the ground, blackened and charred from the dark magic he used during the fight.";

            //Actions
            if (!defeatedNecroContractor)
            {
                returnData.Description = "A very dark room. The walls are black and glowing purple with some dark evil magic. There are skulls aligned in ritualistic patterns on the floor. There are drawings on the walls, painted with blood. In the middle stands a small man with a black hood covering his face. He has his hands outstreched and he's chanting something and the air grows heavier the more he chants.";
                List <LocationAction> locationActions = new List <LocationAction>();

                List <Mob> contractor = new List <Mob>();
                contractor.Add(new NecroContractor());
                CombatAction combatAction = new CombatAction("Necromancer Contractor", contractor, necroSpeechBefore, necroSpeechAfter);
                combatAction.PostCombat += DefeatedContractor;

                locationActions.Add(combatAction);

                returnData.Actions = locationActions;
            }
            else if (defeatedNecroContractor)
            {
                if (!openedChest)
                {
                    if (!takeLetters)
                    {
                        returnData.Description = "A very dark room. The walls are black and glowing purple with some dark evil magic. There are skulls aligned in ritualistic patterns on the floor. There are drawings on the walls, painted with blood. In the middle lays the blackened robe of the necroamncer contractor. There is a journal on top of the robe and an unopened chest next to it.";
                    }
                    else
                    {
                        returnData.Description = "A very dark room. The walls are black and glowing purple with some dark evil magic. There are skulls aligned in ritualistic patterns on the floor. There are drawings on the walls, painted with blood. In the middle lays the blackened robe of the necroamncer contractor. There is an unopened chest next to it.";
                    }

                    List <LocationAction> locationActions = new List <LocationAction>();
                    TreasureChestAction   itemAction      = new TreasureChestAction(2);
                    locationActions.Add(itemAction);
                    itemAction.PostItem += ContractorChest;
                    returnData.Actions   = locationActions;
                }
                if (openedChest && takeLetters)
                {
                    returnData.Description = "A very dark room. The walls are black and glowing purple with some dark evil magic. There are skulls aligned in ritualistic patterns on the floor. There are drawings on the walls, painted with blood. In the middle lays the blackened robe of the necroamncer contractor. There is an opened chest next to it.";
                }
                if (!takeLetters && openedChest)
                {
                    returnData.Description = "A very dark room. The walls are black and glowing purple with some dark evil magic. There are skulls aligned in ritualistic patterns on the floor. There are drawings on the walls, painted with blood. In the middle lays the blackened robe of the necroamncer contractor. There is a journal on top of the robe and an opened chest next to it.";

                    List <LocationAction> locationActions = new List <LocationAction>();
                    TakeItemAction        letterAction    = new TakeItemAction("Journal of pay outs and economical dealings");
                    letterAction.PostItem += Journal;
                    locationActions.Add(letterAction);
                    returnData.Actions = locationActions;
                }
            }

            //Actions

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

            // Town Center
            LocationDefinition locationDefinition = AnkouBanditAndNecroCave.GetTownInstance().GetLargeRoomDefinition();

            adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);

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

            returnData.AdjacentLocationDefinitions = adjacentLocationDefinitions;

            return(returnData);
        }