Exemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="player"></param>
        /// <param name="room"></param>
        /// <param name="direction"></param>
        public static void Move(Player player, Room room, string direction)
        {
            if (player.Status == Player.PlayerStatus.Fighting)
            {
                HubContext.SendToClient("You are fighting! Try fleeing.", player.HubGuid);
                return;
            }

            if (player.Status == Player.PlayerStatus.Resting || player.Status == Player.PlayerStatus.Sleeping)
            {
                HubContext.SendToClient("You need to get up before you move.", player.HubGuid);
                return;
            }


            var isBlind = player.Affects?.FirstOrDefault(
                x => x.Name.Equals("Blindness", StringComparison.CurrentCultureIgnoreCase)) != null;

            if (player.MovePoints <= 0)
            {
                HubContext.SendToClient("You are exhausted an unable to move", player.HubGuid);

                foreach (var character in room.players)
                {
                    if (character != player)
                    {
                        HubContext.SendToClient(
                            $"{Helpers.ReturnName(player, character, string.Empty)} tries to move but is too exhausted.",
                            player.HubGuid);
                    }
                }
                return;
            }


            Room roomData = room;

            if (roomData.exits == null)
            {
                room.exits = new List <Exit>();
            }


            //Find Exit
            if (roomData.exits != null)
            {
                var exit = roomData.exits.Find(x => x.name == direction);


                if (exit != null)
                {
                    if (exit.open == false)
                    {
                        HubContext.getHubContext.Clients.Client(player.HubGuid)
                        .addNewMessageToPage("The " + exit.doorName + " is close");
                        return;
                    }

                    //remove player from old room
                    PlayerManager.RemovePlayerFromRoom(roomData, player);

                    //exit message
                    ExitRoom(player, roomData, direction);

                    //change player Location
                    player.Area   = exit.area;
                    player.AreaId = exit.areaId;
                    player.Region = exit.region;

                    //Get new room
                    try
                    {
                        //Room getNewRoom =  await HubProxy.MimHubServer.Invoke<Room>("getRoom", player.HubGuid);
                        Room getNewRoom = MIMWebClient.Hubs.MIMHub.getRoom(player);

                        if (getNewRoom != null)
                        {
                            //add player to new room
                            PlayerManager.AddPlayerToRoom(getNewRoom, player);

                            //enter message
                            EnterRoom(player, getNewRoom, direction);

                            var roomDescription = LoadRoom.DisplayRoom(getNewRoom, player.Name);

                            if (!isBlind)
                            {
                                HubContext.getHubContext.Clients.Client(player.HubGuid)
                                .addNewMessageToPage(roomDescription);
                            }
                            else
                            {
                                HubContext.SendToClient("You can't see a thing.", player.HubGuid);
                            }

                            //Show exits UI
                            ShowUIExits(getNewRoom, player.HubGuid);

                            //NPC Enter event here
                            foreach (var mob in getNewRoom.mobs)
                            {
                                if (mob.Greet)
                                {
                                    // Event.ParseCommand("greet", player, mob, getNewRoom);
                                }
                                else
                                {
                                    //mob might be aggro
                                }

                                if (mob.DialogueTree != null)
                                {
                                    var speak = mob.DialogueTree[0];

                                    HubContext.getHubContext.Clients.Client(player.HubGuid)
                                    .addNewMessageToPage("<span class='sayColor'>" + mob.Name + " says to you \"" + speak.Message + "\"</span>");
                                    var i = 1;
                                    foreach (var respond in speak.PossibleResponse)
                                    {
                                        var textChoice =
                                            "<a class='multipleChoice' href='javascript:void(0)' onclick='$.connection.mIMHub.server.recieveFromClient(\"say " +
                                            respond.Response + "\",\"" + player.HubGuid + "\")'>" + i + ". " +
                                            respond.Response + "</a>";
                                        HubContext.getHubContext.Clients.Client(player.HubGuid)
                                        .addNewMessageToPage(textChoice);
                                        i++;
                                    }
                                }



                                foreach (var quest in player.QuestLog.Where(x => x.Completed == false))
                                {
                                    if (quest.QuestHint != null && mob.Name == quest.QuestFindMob)
                                    {
                                        HubContext.SendToClient(quest.QuestHint, player.HubGuid);
                                    }
                                }
                            }

                            Score.ReturnScoreUI(player);
                        }
                    }
                    catch (Exception e)
                    {
                        //log error
                    }
                }
                else
                {
                    HubContext.getHubContext.Clients.Client(player.HubGuid).addNewMessageToPage("There is no exit here");
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="player"></param>
        /// <param name="room"></param>
        /// <param name="direction"></param>
        public static async Task MobMove(Player mob, Player ThingYourFollowing, Room room, string direction)
        {
            await Task.Delay(250);

            Room roomData = room;

            if (roomData.exits == null)
            {
                room.exits = new List <Exit>();
            }


            //Find Exit
            if (roomData.exits != null)
            {
                var exit = roomData.exits.Find(x => x.name == direction);


                if (exit != null)
                {
                    if (exit.open == false)
                    {
                        return;
                    }

                    //remove player from old room
                    PlayerManager.RemoveMobFromRoom(roomData, mob);

                    //change player Location
                    mob.Area   = exit.area;
                    mob.AreaId = exit.areaId;
                    mob.Region = exit.region;

                    //Get new room
                    try
                    {
                        Room getNewRoom = MIMWebClient.Hubs.MIMHub.getRoom(mob);

                        if (getNewRoom != null)
                        {
                            //enter message
                            EnterRoom(mob, getNewRoom, direction);
                            //add player to new room
                            PlayerManager.AddMobToRoom(getNewRoom, mob);


                            //NPC Enter event here
                            foreach (var mobb in getNewRoom.mobs)
                            {
                                if (mobb.Greet)
                                {
                                    // Event.ParseCommand("greet", player, mob, getNewRoom);
                                }
                                else
                                {
                                    //mob might be aggro
                                }



                                if (!string.IsNullOrEmpty(mobb.EventOnEnter))
                                {
                                    Event.ParseCommand(mob.EventOnEnter, ThingYourFollowing, mobb, room);
                                }

                                if (!string.IsNullOrEmpty(room.EventOnEnter))
                                {
                                    Event.ParseCommand(room.EventOnEnter, mobb, null, room);
                                }
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        //log error
                    }
                }
            }
        }
Exemplo n.º 3
0
        //Create transport method

        public static void Teleport(Player player, Room room, Exit exit)
        {
            Room roomData = room;


            //Find Exit


            //remove player from old room
            //  PlayerManager.RemovePlayerFromRoom(roomData, player);

            //exit message
            ExitRoom(player, roomData, null, true);

            //change player Location
            if (exit != null)
            {
                //change player Location
                player.Area   = exit.area;
                player.AreaId = exit.areaId;
                player.Region = exit.region;
            }
            else
            {
                player.Area   = room.area;
                player.AreaId = room.areaId;
                player.Region = room.region;
            }

            //Get new room
            try
            {
                //Room getNewRoom =  await HubProxy.MimHubServer.Invoke<Room>("getRoom", player.HubGuid);
                Room getNewRoom = MIMWebClient.Hubs.MIMHub.getRoom(player);

                if (getNewRoom != null)
                {
                    //add player to new room
                    PlayerManager.AddPlayerToRoom(getNewRoom, player);

                    //enter message
                    EnterRoom(player, getNewRoom, null, true);

                    var roomDescription = LoadRoom.DisplayRoom(getNewRoom, player.Name);

                    if (player.Status != Player.PlayerStatus.Sleeping)
                    {
                        HubContext.getHubContext.Clients.Client(player.HubGuid).addNewMessageToPage(roomDescription);
                    }


                    //NPC Enter event here
                    foreach (var mob in getNewRoom.mobs)
                    {
                        if (mob.Greet)
                        {
                            Event.ParseCommand("greet", player, mob, getNewRoom);
                        }
                        else
                        {
                            //mob might be aggro
                        }

                        if (mob.DialogueTree != null && mob.DialogueTree.Count >= 1)
                        {
                            var speak = mob.DialogueTree[0];

                            HubContext.getHubContext.Clients.Client(player.HubGuid)
                            .addNewMessageToPage("<span class='sayColor'>" + mob.Name + " says to you \"" + speak.Message + "\"</span>");
                            var i = 1;
                            foreach (var respond in speak.PossibleResponse)
                            {
                                var textChoice =
                                    "<a class='multipleChoice' href='javascript:void(0)' onclick='$.connection.mIMHub.server.recieveFromClient(\"say " +
                                    respond.Response + "\",\"" + player.HubGuid + "\")'>" + i + ". " + respond.Response +
                                    "</a>";
                                HubContext.getHubContext.Clients.Client(player.HubGuid).addNewMessageToPage(textChoice);
                                i++;
                            }
                        }
                    }

                    ShowUIExits(getNewRoom, player.HubGuid);
                }
            }
            catch (Exception e)
            {
                //log error
            }
        }