Exemplo n.º 1
0
        public Location LoadNorthernPathThree()
        {
            Location returnData;

            returnData      = new Location();
            returnData.Name = "Ashen Forest Northern Path Three";
            bool lookForBurialGrounds = Convert.ToBoolean(LocationHandler.GetLocationStateValue(Banken.LOCATION_STATE_KEY, BankenAshenForest.LOOK_FOR_BURIAL_GROUNDS));

            returnData.Description = "The path leads north, deep into the forest. The air feels at its foulest here. The Ancient Burial Grounds must be near.";

            if (!lookForBurialGrounds)
            {
                List <LocationAction> locationActions = new List <LocationAction>();
                locationActions = new List <LocationAction>();
                TakeItemAction lookActiopn = new TakeItemAction("Look for ", "the Ancient Burial Grounds", "You search desparately for the Ancient Burial Grounds. The darkness closes in around your heart the further north you go. Eventually you stumble upon their location");
                locationActions.Add(lookActiopn);
                lookActiopn.PostItem += LookForBurialGrounds;
                returnData.Actions    = locationActions;
            }

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

            //Town Center
            LocationDefinition locationDefinition = BankenAshenForest.GetTownInstance().GetNorthernPathTwoDefinition();

            adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);

            if (lookForBurialGrounds)
            {
                locationDefinition = BankenAncientBurialGrounds.GetTownInstance().GetEntranceDefinition();
                adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);
            }

            Accomplishment oldForestRuins = Banken.GetBankenAccomplishments().Find(x => x.Name.Contains("Old Forest Ruins"));

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

            Accomplishment inconspiciousCave = Banken.GetBankenAccomplishments().Find(x => x.Name.Contains("Inconspicious Cave"));

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

            locationDefinition = BankenAshenForest.GetTownInstance().GetNorthernPathFourDefinition();
            adjacentLocationDefinitions.Add(locationDefinition.LocationKey, locationDefinition);

            returnData.AdjacentLocationDefinitions = adjacentLocationDefinitions;

            return(returnData);
        }
        public static BankenInconspicousCave GetTownInstance()
        {
            if (_InconspicousCave == null)
            {
                _InconspicousCave = new BankenInconspicousCave();
            }

            return(_InconspicousCave);
        }
        public Location LoadDiningRoom()
        {
            Location returnData;

            returnData      = new Location();
            returnData.Name = "Dining Room";
            bool defeatedMobs = Convert.ToBoolean(LocationHandler.GetLocationStateValue(Banken.LOCATION_STATE_KEY, BankenInconspicousCave.DINING_ROOM_MOBS));

            if (!defeatedMobs)
            {
                returnData.Description = "A nicely sized dining room (for the cave). It is full of necromancers ready to eat.";

                List <LocationAction> locationActions = new List <LocationAction>();
                List <Mob>            mobs            = new List <Mob>();
                mobs.Add(new Necromancer());
                mobs.Add(new Necromancer());
                mobs.Add(new Necromancer());
                mobs.Add(new Necromancer());
                mobs.Add(new Necromancer());
                mobs.Add(new Necromancer());
                CombatAction combatAction = new CombatAction("Necromancers", mobs);
                combatAction.PostCombat += DiningRoomMobs;
                locationActions.Add(combatAction);
                returnData.Actions = locationActions;
            }
            else
            {
                returnData.Description = "A nicely sized dining room (for the cave). It is now serving dead necromancer.";
            }

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

            LocationDefinition locationDefinition = BankenInconspicousCave.GetTownInstance().GetDimilyLitHallwayDefinition();

            adjacentLocationDefintions.Add(locationDefinition.LocationKey, locationDefinition);

            if (defeatedMobs)
            {
                locationDefinition = BankenInconspicousCave.GetTownInstance().GetDimilyLitHallway2Definition();
                adjacentLocationDefintions.Add(locationDefinition.LocationKey, locationDefinition);
            }

            returnData.AdjacentLocationDefinitions = adjacentLocationDefintions;

            return(returnData);
        }
        public Location LoadDimlyLitHallway2()
        {
            Location returnData;

            returnData      = new Location();
            returnData.Name = "Dimly Lit Hallway 2";
            bool defeatedMobs = Convert.ToBoolean(LocationHandler.GetLocationStateValue(Banken.LOCATION_STATE_KEY, BankenInconspicousCave.DIMLY_LIT_HALLWAY_TWO_MOBS));

            if (!defeatedMobs)
            {
                returnData.Description = "Another dimly lit hallway. This one is far creepier than last. The walls are lined with skulls. Evil walks here";

                List <LocationAction> locationActions = new List <LocationAction>();
                List <Mob>            mobs            = new List <Mob>();
                mobs.Add(new ReAnimatedStatue());
                mobs.Add(new ReAnimatedStatue());
                mobs.Add(new Necromancer());
                mobs.Add(new Necromancer());
                CombatAction combatAction = new CombatAction("Necromancers and Re-Animated Statues", mobs, "The necromancers have summoned re-animated statues to protect themselves", "As the last necromancer falls dead to the ground, you can hear chanting growing louder and louder from the ritual room just at the end of the hallway");
                combatAction.PostCombat += DimlyLitHallwayTwoMobs;
                locationActions.Add(combatAction);
                returnData.Actions = locationActions;
            }
            else
            {
                returnData.Description = "Another dimly lit hallway. This one is far creepier than last. The walls are lined with skulls";
            }

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

            //Will need a change
            LocationDefinition locationDefinition = BankenInconspicousCave.GetTownInstance().GetDiningRoomDefinition();

            adjacentLocationDefintions.Add(locationDefinition.LocationKey, locationDefinition);

            if (defeatedMobs)
            {
                locationDefinition = BankenInconspicousCave.GetTownInstance().GetRitualRoomDefinition();
                adjacentLocationDefintions.Add(locationDefinition.LocationKey, locationDefinition);
            }

            returnData.AdjacentLocationDefinitions = adjacentLocationDefintions;

            return(returnData);
        }
        public Location LoadDimlyLitHallway()
        {
            Location returnData;

            returnData      = new Location();
            returnData.Name = "Dimly Lit Hallway";
            bool defeatedMobs = Convert.ToBoolean(LocationHandler.GetLocationStateValue(Banken.LOCATION_STATE_KEY, BankenInconspicousCave.DIMLY_LIT_HALLWAY_MOBS));

            if (!defeatedMobs)
            {
                returnData.Description = "A long hallway that is very dimly lit. It is being patrolled by two necromancer guards.";

                List <LocationAction> locationActions = new List <LocationAction>();
                List <Mob>            mobs            = new List <Mob>();
                mobs.Add(new NecromancerEliteGuard());
                mobs.Add(new NecromancerEliteGuard());
                CombatAction combatAction = new CombatAction("Necromancer Elite Guards", mobs);
                combatAction.PostCombat += DimlyLitHallwayMobs;
                locationActions.Add(combatAction);
                returnData.Actions = locationActions;
            }
            else
            {
                returnData.Description = "A long hallway that is very dimly lit.";
            }

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

            //Will need a change
            LocationDefinition locationDefinition = BankenInconspicousCave.GetTownInstance().GetGuardRoomDefinition();

            adjacentLocationDefintions.Add(locationDefinition.LocationKey, locationDefinition);

            if (defeatedMobs)
            {
                locationDefinition = BankenInconspicousCave.GetTownInstance().GetDiningRoomDefinition();
                adjacentLocationDefintions.Add(locationDefinition.LocationKey, locationDefinition);
            }

            returnData.AdjacentLocationDefinitions = adjacentLocationDefintions;

            return(returnData);
        }
        public Location LoadPassageWay()
        {
            Location returnData;

            returnData      = new Location();
            returnData.Name = "Passage Way";
            bool defeatedMobs = Convert.ToBoolean(LocationHandler.GetLocationStateValue(Banken.LOCATION_STATE_KEY, BankenInconspicousCave.PASSAGE_WAY_MOBS));

            if (!defeatedMobs)
            {
                returnData.Description = "A small passage way located beneath the trap door. There are two Re-Animated Statues patrolling the passage way.";

                List <LocationAction> locationActions = new List <LocationAction>();
                List <Mob>            mobs            = new List <Mob>();
                mobs.Add(new ReAnimatedStatue());
                mobs.Add(new ReAnimatedStatue());
                CombatAction combatAction = new CombatAction("Re-Animated Statues", mobs);
                combatAction.PostCombat += PassageWayMobs;
                locationActions.Add(combatAction);
                returnData.Actions = locationActions;
            }
            else
            {
                returnData.Description = "A small passage way located beneath the trap door. The stoney remains of the statues lay crumbling on the ground.";
            }

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

            LocationDefinition locationDefinition = BankenInconspicousCave.GetTownInstance().GetEntranceDefinition();

            adjacentLocationDefintions.Add(locationDefinition.LocationKey, locationDefinition);

            if (defeatedMobs)
            {
                locationDefinition = BankenInconspicousCave.GetTownInstance().GetGuardRoomDefinition();
                adjacentLocationDefintions.Add(locationDefinition.LocationKey, locationDefinition);
            }

            returnData.AdjacentLocationDefinitions = adjacentLocationDefintions;

            return(returnData);
        }
        public Location LoadEntrance()
        {
            Location returnData;

            returnData      = new Location();
            returnData.Name = "Inconcspicous Cave";
            bool searchEntrance = Convert.ToBoolean(LocationHandler.GetLocationStateValue(Banken.LOCATION_STATE_KEY, BankenInconspicousCave.SEARCH_ENTRANCE));

            //Only if on the quest (LATER)
            if (!searchEntrance)
            {
                returnData.Description = "A seemingly innocent cave with no signs of any suspicious activity.";

                List <LocationAction> locationActions = new List <LocationAction>();
                TakeItemAction        itemAction      = new TakeItemAction("Search", "Entrance", "You search the entrance, trying to find anything that may point toward more going on that meets the eye. Luckily, you stumble upon a trap door covered by a magical illusion. The illusion was dispelled as your hand feels the latch");
                locationActions.Add(itemAction);
                itemAction.PostItem += SearchEntrance;
                returnData.Actions   = locationActions;
            }
            else
            {
                returnData.Description = "A once seemingly innocent cave with an uncovered trap door on the floor.";
            }

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

            //Will need a change
            LocationDefinition locationDefinition = BankenAshenForest.GetTownInstance().GetNorthernPathThreeDefinition();

            adjacentLocationDefintions.Add(locationDefinition.LocationKey, locationDefinition);

            if (searchEntrance)
            {
                locationDefinition = BankenInconspicousCave.GetTownInstance().GetPassageWayDefinition();
                adjacentLocationDefintions.Add(locationDefinition.LocationKey, locationDefinition);
            }

            returnData.AdjacentLocationDefinitions = adjacentLocationDefintions;

            return(returnData);
        }
        public Location LoadStorageRoom()
        {
            Location returnData;

            returnData             = new Location();
            returnData.Name        = "Storage Room";
            returnData.Description = "A rather small storage room filled to the brim with suplies.";
            bool tookGold     = Convert.ToBoolean(LocationHandler.GetLocationStateValue(Banken.LOCATION_STATE_KEY, BankenInconspicousCave.STORAGE_ROOM_GOLD));
            bool takeTreasure = Convert.ToBoolean(LocationHandler.GetLocationStateValue(Banken.LOCATION_STATE_KEY, BankenInconspicousCave.STORAGE_ROOM_TREASURE));

            if (!tookGold)
            {
                List <LocationAction> locationActions = new List <LocationAction>();
                PickUpGoldAction      itemAction      = new PickUpGoldAction(250);
                locationActions.Add(itemAction);
                itemAction.PostItem += StorageRoomGold;
                returnData.Actions   = locationActions;
            }
            if (!takeTreasure)
            {
                List <LocationAction> locationActions = new List <LocationAction>();
                TreasureChestAction   itemAction      = new TreasureChestAction(5);
                locationActions.Add(itemAction);
                itemAction.PostItem += StorageRoomTreasure;
                returnData.Actions   = locationActions;
            }

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

            //Will need a change
            LocationDefinition locationDefinition = BankenInconspicousCave.GetTownInstance().GetGuardRoomDefinition();

            adjacentLocationDefintions.Add(locationDefinition.LocationKey, locationDefinition);

            returnData.AdjacentLocationDefinitions = adjacentLocationDefintions;

            return(returnData);
        }
        public Location LoadRitualRoom()
        {
            Location returnData;

            returnData      = new Location();
            returnData.Name = "Ritual Room";
            bool   defeatedEliteGuards  = Convert.ToBoolean(LocationHandler.GetLocationStateValue(Banken.LOCATION_STATE_KEY, BankenInconspicousCave.RITUAL_ROOM_GUARDS));
            bool   defeatedNormalNecros = Convert.ToBoolean(LocationHandler.GetLocationStateValue(Banken.LOCATION_STATE_KEY, BankenInconspicousCave.RITUAL_ROOM_NECRO));
            bool   defeatedZulien       = Convert.ToBoolean(LocationHandler.GetLocationStateValue(Banken.LOCATION_STATE_KEY, BankenInconspicousCave.ZULIEN));
            bool   takeTreasure         = Convert.ToBoolean(LocationHandler.GetLocationStateValue(Banken.LOCATION_STATE_KEY, BankenInconspicousCave.TREASURE));
            string before = "Zulien stops his ritual and turns his head toward you. As he sees you, his eyes flash with fury. He turns his full attention toward you. " +
                            "\nHe lets out a strong magical blast that leaves you kneeling on the ground, arm covering your head. He shouts, \"You dare interupt my ritual? Die, mortal!\"";
            string after = "Zulien collapses to the ground, dead. Bload trickling out of his mouth. The world is a slightly better place.";

            if (!defeatedEliteGuards)
            {
                returnData.Description = "A large room with magic symbols painted on the ground with blood. There are several necromancer guards along with the rank and file protecting a vile necromancer performing a blood ritual";

                List <LocationAction> locationActions = new List <LocationAction>();
                List <Mob>            mobs            = new List <Mob>();
                mobs.Add(new NecromancerEliteGuard());
                mobs.Add(new NecromancerEliteGuard());
                mobs.Add(new NecromancerEliteGuard());
                mobs.Add(new NecromancerEliteGuard());
                mobs.Add(new NecromancerEliteGuard());
                mobs.Add(new NecromancerEliteGuard());
                CombatAction combatAction = new CombatAction("Necromancer Elite Guards", mobs);
                combatAction.PostCombat += RitualRoomEliteNecroGuard;
                locationActions.Add(combatAction);
                returnData.Actions = locationActions;
            }
            if (defeatedEliteGuards && !defeatedNormalNecros)
            {
                returnData.Description = "A large room with magic symbols painted on the ground with blood. The elite necromancer guard is dead, leaving only normal necromancers to protect the vile necromancer performing a blood ritual";

                List <LocationAction> locationActions = new List <LocationAction>();
                List <Mob>            mobs            = new List <Mob>();
                mobs.Add(new Necromancer());
                mobs.Add(new Necromancer());
                mobs.Add(new Necromancer());
                mobs.Add(new Necromancer());
                mobs.Add(new Necromancer());
                mobs.Add(new Necromancer());
                mobs.Add(new Necromancer());
                mobs.Add(new Necromancer());
                CombatAction combatAction = new CombatAction("Necromancers", mobs);
                combatAction.PostCombat += RitualRoomNecro;
                locationActions.Add(combatAction);
                returnData.Actions = locationActions;
            }
            if (defeatedEliteGuards && defeatedNormalNecros && !defeatedZulien)
            {
                returnData.Description = "A large room with magic symbols painted on the ground with blood. There are several necromancer guards along with the rank and file protecting a vile necromancer performing a blood ritual";

                List <LocationAction> locationActions = new List <LocationAction>();
                List <Mob>            mobs            = new List <Mob>();
                mobs.Add(new Zulien());
                CombatAction combatAction = new CombatAction("Zulien", mobs, before, after);
                combatAction.PostCombat += RitualRoomZulien;
                locationActions.Add(combatAction);
                returnData.Actions = locationActions;
            }
            else
            {
                returnData.Description = "A large room with magic symbols painted on the ground with blood.";
            }

            if (defeatedZulien && !takeTreasure)
            {
                List <LocationAction> locationActions = new List <LocationAction>();
                TreasureChestAction   itemAction      = new TreasureChestAction(5);
                locationActions.Add(itemAction);
                itemAction.PostItem += Treasure;
                returnData.Actions   = locationActions;
            }

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

            //Will need a change
            LocationDefinition locationDefinition = BankenInconspicousCave.GetTownInstance().GetDimilyLitHallway2Definition();

            adjacentLocationDefintions.Add(locationDefinition.LocationKey, locationDefinition);

            if (defeatedZulien)
            {
                locationDefinition = Banken.GetTownInstance().GetTownCenterDefinition();
                adjacentLocationDefintions.Add(locationDefinition.LocationKey, locationDefinition);
            }

            returnData.AdjacentLocationDefinitions = adjacentLocationDefintions;

            return(returnData);
        }
        public Location LoadGuardRoom()
        {
            Location returnData;

            returnData      = new Location();
            returnData.Name = "Guard Room";
            bool defeatedMobs  = Convert.ToBoolean(LocationHandler.GetLocationStateValue(Banken.LOCATION_STATE_KEY, BankenInconspicousCave.GUARD_ROOM_MOBS_ONE));
            bool defeatedMobs2 = Convert.ToBoolean(LocationHandler.GetLocationStateValue(Banken.LOCATION_STATE_KEY, BankenInconspicousCave.GUARD_ROOM_MOBS_TWO));

            if (!defeatedMobs)
            {
                returnData.Description = "The guard room is rather cramped, but that doesn't seem to be much of a bother to the necromancers within.";

                List <LocationAction> locationActions = new List <LocationAction>();
                List <Mob>            mobs            = new List <Mob>();
                mobs.Add(new NecromancerEliteGuard());
                mobs.Add(new NecromancerEliteGuard());
                mobs.Add(new NecromancerEliteGuard());
                mobs.Add(new NecromancerEliteGuard());
                CombatAction combatAction = new CombatAction("Necromancer Elite Guards", mobs, "You move to engage the deadly Necromancer Elite Guards", "As you kill the last necromancer, two re-animated statues burst the door and charge at you head on");
                combatAction.PostCombat += GuardRoomMobsOne;
                locationActions.Add(combatAction);
                returnData.Actions = locationActions;
            }
            if (defeatedMobs && !defeatedMobs2)
            {
                returnData.Description = "The guard room is rather cramped, the re-animated statues are barreling at you.";

                List <LocationAction> locationActions = new List <LocationAction>();
                List <Mob>            mobs            = new List <Mob>();
                mobs.Add(new ReAnimatedStatue());
                mobs.Add(new ReAnimatedStatue());
                CombatAction combatAction = new CombatAction("Re-Animated Statues", mobs);
                combatAction.PostCombat += GuardRoomMobsTwo;
                locationActions.Add(combatAction);
                returnData.Actions = locationActions;
            }
            else
            {
                returnData.Description = "The guard room is rather cramped, now also full of dead bodies and crumbled stone.";
            }

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

            LocationDefinition locationDefinition = BankenInconspicousCave.GetTownInstance().GetPassageWayDefinition();

            adjacentLocationDefintions.Add(locationDefinition.LocationKey, locationDefinition);

            if (defeatedMobs && defeatedMobs2)
            {
                locationDefinition = BankenInconspicousCave.GetTownInstance().GetStorageRoomDefinition();
                adjacentLocationDefintions.Add(locationDefinition.LocationKey, locationDefinition);

                locationDefinition = BankenInconspicousCave.GetTownInstance().GetDimilyLitHallwayDefinition();
                adjacentLocationDefintions.Add(locationDefinition.LocationKey, locationDefinition);
            }

            returnData.AdjacentLocationDefinitions = adjacentLocationDefintions;

            return(returnData);
        }