// Token: 0x06000105 RID: 261 RVA: 0x00005B00 File Offset: 0x00003F00
        private void npcs_Dialogo_Recibido()
        {
            bool flag = !this.cuenta.script.corriendo;

            if (!flag)
            {
                NpcBancoAccion npcBancoAccion = this.accion_actual as NpcBancoAccion;
                bool           flag2          = npcBancoAccion != null;
                if (flag2)
                {
                    bool flag3 = this.cuenta.Estado_Cuenta != EstadoCuenta.DIALOGANDO;
                    if (!flag3)
                    {
                        IEnumerable <Npcs> source = this.cuenta.juego.mapa.lista_npcs();
                        Npcs npcs = source.ElementAt((int)(this.cuenta.juego.personaje.hablando_npc_id * -1 - 1));
                        this.cuenta.conexion.enviar_Paquete("DR" + npcs.pregunta.ToString() + "|" + npcs.respuestas[0].ToString(), true);
                    }
                }
                else
                {
                    bool flag4 = this.accion_actual is NpcAccion || this.accion_actual is RespuestaAccion;
                    if (flag4)
                    {
                        this.acciones_Salida(400);
                    }
                }
            }
        }
Exemplo n.º 2
0
        public void get_Lista_Respuestas(ClienteTcp cliente, string paquete)
        {
            Cuenta cuenta = cliente.cuenta;
            bool   flag   = !cuenta.esta_dialogando();

            if (!flag)
            {
                IEnumerable <Npcs> source = cuenta.juego.mapa.lista_npcs();
                Npcs npcs  = source.ElementAt((int)(cuenta.juego.personaje.hablando_npc_id * -1 - 1));
                bool flag2 = npcs != null;
                if (flag2)
                {
                    string[] array = paquete.Substring(2).Split(new char[]
                    {
                        '|'
                    });
                    string[] array2 = array[1].Split(new char[]
                    {
                        ';'
                    });
                    npcs.pregunta = short.Parse(array[0].Split(new char[]
                    {
                        ';'
                    })[0]);
                    npcs.respuestas = new List <short>(array2.Count <string>());
                    foreach (string s in array2)
                    {
                        npcs.respuestas.Add(short.Parse(s));
                    }
                    cuenta.juego.personaje.evento_Dialogo_Recibido();
                }
            }
        }
Exemplo n.º 3
0
        public List <PacketDefinition> GetMapItems()
        {
            var packets = new List <PacketDefinition>();

            // TODO: Parallelize getting of items of mapinstance
            Portals.ForEach(s => packets.Add(s.GenerateGp()));
            Monsters.ForEach(s =>
            {
                packets.Add(s.GenerateIn());

                if (s.Size != 10)
                {
                    packets.Add(s.GenerateCharSc());
                }
            });

            Npcs.ForEach(s =>
            {
                packets.Add(s.GenerateIn());

                if (s.Shop != null)
                {
                    packets.Add(s.GenerateShop());
                }

                if (s.Size != 10)
                {
                    packets.Add(s.GenerateCharSc());
                }
            });
            MapItems.Values.ToList().ForEach(s => packets.Add(s.GenerateIn()));
            return(packets);
        }
Exemplo n.º 4
0
        public void get_Lista_Respuestas(ClienteTcp cliente, string paquete)
        {
            Cuenta cuenta = cliente.cuenta;

            if (!cuenta.esta_dialogando())
            {
                return;
            }

            IEnumerable <Npcs> npcs = cuenta.juego.mapa.lista_npcs();
            Npcs npc = npcs.ElementAt((cuenta.juego.personaje.hablando_npc_id * -1) - 1);

            if (npc != null)
            {
                string[] pregunta_separada      = paquete.Substring(2).Split('|');
                string[] respuestas_disponibles = pregunta_separada[1].Split(';');

                npc.pregunta   = short.Parse(pregunta_separada[0].Split(';')[0]);
                npc.respuestas = new List <short>(respuestas_disponibles.Count());

                foreach (string respuesta in respuestas_disponibles)
                {
                    npc.respuestas.Add(short.Parse(respuesta));
                }

                cuenta.juego.personaje.evento_Dialogo_Recibido();
            }
        }
Exemplo n.º 5
0
        public List <string> GetMapItems()
        {
            List <string> packets = new List <string>();

            Sessions.Where(s => s.Character != null && !s.Character.InvisibleGm).ToList().ForEach(s =>
            {
                s.Character.Mates.Where(m => m.IsTeamMember).ToList().ForEach(m => packets.Add(m.GenerateIn()));
            });
            // TODO: Parallelize getting of items of mapinstance
            Portals.ForEach(s => packets.Add(s.GenerateGp()));
            ScriptedInstances.Where(s => s.Type == ScriptedInstanceType.TimeSpace).ToList().ForEach(s => packets.Add(s.GenerateWp()));

            Monsters.ForEach(s =>
            {
                packets.Add(s.GenerateIn());
                if (s.IsBoss)
                {
                    packets.Add(s.GenerateBoss());
                }
            });
            Npcs.ForEach(s => packets.Add(s.GenerateIn()));
            packets.AddRange(GenerateNPCShopOnMap());
            Parallel.ForEach(DroppedList.GetAllItems(), session => packets.Add(session.GenerateIn()));

            Buttons.ForEach(s => packets.Add(s.GenerateIn()));
            packets.AddRange(GenerateUserShops());
            packets.AddRange(GeneratePlayerShopOnMap());
            return(packets);
        }
Exemplo n.º 6
0
        public void Init()
        {
            RogueEncampmentWp = null;
            RedPortal         = null;
            InGame            = false;
            FullyEnteredGame  = false;
            LastTeleport      = 0;
            Experience        = 0;
            Me = new Player();
            Logger.Write("Reset GameData");

            SkillLevels.Clear();
            ItemSkillLevels.Clear();
            Players.Clear();
            Npcs.Clear();
            Items.Clear();
            WorldObjects.Clear();

            Inventory = new Container("Inventory", ContainerType.Inventory, InventoryWidth, InventoryHeight);
            Stash     = new Container("Stash", ContainerType.Stash, StashWidth, StashHeight);
            Cube      = new Container("Cube", ContainerType.Cube, CubeWidth, CubeHeight); //todo make configurable
            Belt      = new Container("Belt", ContainerType.Belt, 4, 4);                  //todo make size depend on belt type...

            MalahId                  = 0;
            CurrentLife              = 0;
            FirstNpcInfoPacket       = true;
            AttacksSinceLastTeleport = 0;
            WeaponSet                = 0;
            HasMerc                  = false;
        }
Exemplo n.º 7
0
        /// <summary>
        /// RemoveObject is called to remove a GameObject from the Objects list.
        /// </summary>
        public void RemoveObject(GameObject oldObject)
        {
            Objects.Remove(oldObject);

            // Adds to Drawables if drawable.
            if (oldObject is Drawable drawable)
            {
                Drawables.Remove(drawable);
            }

            // Adds to Collidables if collidable.
            if (oldObject is Collider)
            {
                Collidables.Remove(oldObject);
            }

            if (oldObject is Player)
            {
                Player = null;;
            }

            if (oldObject is Npc)
            {
                Npcs.Remove((Npc)oldObject);
            }
        }
Exemplo n.º 8
0
        public void get_Lista_Respuestas(TcpClient cliente, string paquete)
        {
            Account cuenta = cliente.Account;

            if (!cuenta.IsDialoguing())
            {
                return;
            }

            IEnumerable <Npcs> npcs = cuenta.Game.Map.lista_npcs();
            Npcs npc = npcs.ElementAt((cuenta.Game.Character.hablando_npc_id * -1) - 1);

            if (npc != null)
            {
                string[] pregunta_separada      = paquete.Substring(2).Split('|');
                string[] respuestas_disponibles = pregunta_separada[1].Split(';');

                npc.pregunta   = short.Parse(pregunta_separada[0].Split(';')[0]);
                npc.respuestas = new List <short>(respuestas_disponibles.Count());

                foreach (string respuesta in respuestas_disponibles)
                {
                    npc.respuestas.Add(short.Parse(respuesta));
                }

                cuenta.Game.Character.evento_Dialogo_Recibido();
            }
        }
Exemplo n.º 9
0
 private void AddActors(IEnumerable <GameRolePlayActorInformations> actors)
 {
     foreach (var actor in actors)
     {
         if (actor is GameRolePlayGroupMonsterInformations monster)
         {
             Monsters.Add(new MonsterGroup(monster.StaticInfos,
                                           monster.ContextualId, monster.Disposition.CellId));
             continue;
         }
         if (actor is GameRolePlayNpcInformations npc)
         {
             Npcs.Add(new Npc(npc.Disposition.CellId, npc.ContextualId, npc.NpcId));
             continue;
         }
         if (actor is GameRolePlayCharacterInformations player)
         {
             Players.Add(new Player(actor.Disposition.CellId, player.ContextualId, player.Name));
             continue;
         }
         if (actor is GameRolePlayMerchantInformations merchant)
         {
             Merchants.Add(new Merchant(merchant.Disposition.CellId, merchant.ContextualId, merchant.SellType,
                                        merchant.Name));
             continue;
         }
         Entities.Add(new Entity.Entity(actor.ContextualId, actor.Disposition.CellId));
     }
 }
Exemplo n.º 10
0
        protected virtual void Dispose(bool disposing)
        {
            if (!disposedValue)
            {
                if (disposing)
                {
                    Server.Dispose();
                    Character.Dispose();
                    Map.Dispose();
                    Fight.Dispose();
                    Managers.Dispose();
                    Chat.Dispose();
                    Npcs.Dispose();
                    Storage.Dispose();
                    Exchange.Dispose();
                    Bid.Dispose();
                }

                Server    = null;
                Character = null;
                Map       = null;
                Fight     = null;
                Managers  = null;
                Chat      = null;
                Npcs      = null;
                Storage   = null;
                Exchange  = null;
                Bid       = null;

                disposedValue = true;
            }
        }
Exemplo n.º 11
0
        public List <IPacket> GetMapItems(RegionType language)
        {
            var packets = new List <IPacket>();

            // TODO: Parallelize getting of items of mapinstance
            Portals.ForEach(s => packets.Add(s.GenerateGp()));

            Monsters.ForEach(s =>
            {
                packets.Add(s.GenerateIn());

                if (s.Size != 10)
                {
                    packets.Add(s.GenerateCharSc());
                }
            });

            Npcs.ForEach(s =>
            {
                packets.Add(s.GenerateIn());

                if (s.Shop != null)
                {
                    var shopPacket = s.GenerateShop(language);
                    packets.Add(shopPacket);
                }

                if (s.Size != 10)
                {
                    packets.Add(s.GenerateCharSc());
                }
            });
            MapItems.Values.ToList().ForEach(s => packets.Add(s.GenerateIn()));
            return(packets);
        }
Exemplo n.º 12
0
 public void AddActor(GameRolePlayActorInformations actor)
 {
     if (actor is GameRolePlayCharacterInformations character)
     {
         Players.Add(character);
         Console.WriteLine($@"(Player) {character.Name} en cellid ->  {character.Disposition.CellId}");
         return;
     }
     if (actor is GameRolePlayGroupMonsterInformations monster)
     {
         Monsters.Add(monster);
         var monsterName = FastD2IReader.Instance.GetText(ObjectDataManager.Instance
                                                          .Get <Monster>(monster.StaticInfos.MainCreatureLightInfos.CreatureGenericId).NameId);
         Console.WriteLine($@"(Monster) {monsterName} en cellid ->  {monster.Disposition.CellId}");
         return;
     }
     if (actor is GameRolePlayNpcInformations npc)
     {
         Npcs.Add(npc);
         var npcName =
             FastD2IReader.Instance.GetText(ObjectDataManager.Instance.Get <Npc>(npc.NpcId).NameId);
         Console.WriteLine($@"(Npc) {npcName} en cellid ->  {npc.Disposition.CellId}");
         return;
     }
     Others.Add(actor);
     Console.WriteLine($@"(Other) Aucune Idée en cellid -> {actor.Disposition.CellId}");
 }
Exemplo n.º 13
0
 public void RefreshActor(double contextualId, short cellEnd)
 {
     if (Players.Find(p => p.ContextualId == contextualId) != null)
     {
         Players.Find(p => p.ContextualId == contextualId).Disposition.CellId = cellEnd;
         Console.WriteLine(
             $@"(Players) {
                     Players.Find(p => p.ContextualId == contextualId).Name
                 } se déplace sur la cellid -> {cellEnd}");
     }
     else if (Monsters.Find(p => p.ContextualId == contextualId) != null)
     {
         Monsters.Find(p => p.ContextualId == contextualId).Disposition.CellId = cellEnd;
         Console.WriteLine($@"(Monsters) se déplace sur la cellid -> {cellEnd}");
     }
     else if (Others.Find(p => p.ContextualId == contextualId) != null)
     {
         Others.Find(p => p.ContextualId == contextualId).Disposition.CellId = cellEnd;
         Console.WriteLine($@"(Others) se déplace sur la cellid -> {cellEnd}");
     }
     else if (Npcs.Find(p => p.ContextualId == contextualId) != null)
     {
         Npcs.Find(p => p.ContextualId == contextualId).Disposition.CellId = cellEnd;
         Console.WriteLine($@"(Npcs) se déplace sur la cellid -> {cellEnd}");
     }
     else
     {
         Console.WriteLine($@"Quelque chose se déplace sur la cellid -> {cellEnd}");
     }
 }
Exemplo n.º 14
0
 public void RemoveActor(double contextualId)
 {
     Players.RemoveAll(p => p.ContextualId == contextualId);
     Monsters.RemoveAll(p => p.ContextualId == contextualId);
     Npcs.RemoveAll(p => p.ContextualId == contextualId);
     Others.RemoveAll(p => p.ContextualId == contextualId);
 }
Exemplo n.º 15
0
        public void Init()
        {
            RogueEncampmentWp = null;
            RedPortal         = null;
            InGame            = false;
            FullyEnteredGame  = false;
            LastTeleport      = 0;
            Experience        = 0;
            Me = new Player();
            Logging.Logger.Write("Reset self");

            SkillLevels.Clear();
            ItemSkillLevels.Clear();
            Logging.Logger.Write("Cleared Skills");
            Players.Clear();
            Logging.Logger.Write("Cleared Players");
            Npcs.Clear();
            Logging.Logger.Write("Cleared Npcs");
            Items.Clear();
            WorldObjects.Clear();

            Inventory = new Container("Inventory", GameData.InventoryWidth, GameData.InventoryHeight);
            Stash     = new Container("Stash", GameData.StashWidth, GameData.StashHeight);
            Cube      = new Container("Cube", GameData.CubeWidth, GameData.CubeHeight);
            Belt      = new Container("Belt", 4, 4);

            MalahId                  = 0;
            CurrentLife              = 0;
            FirstNpcInfoPacket       = true;
            AttacksSinceLastTeleport = 0;
            WeaponSet                = 0;
            HasMerc                  = false;
        }
Exemplo n.º 16
0
 public void Clear()
 {
     Data = null;
     Players.Clear();
     Monsters.Clear();
     Npcs.Clear();
     Others.Clear();
 }
Exemplo n.º 17
0
        public NpcPosition?GetClosestNpc()
        {
            var info = string.Join(", ", Npcs.Select(n => n.Height.ToString() + $"({n.Min.X},{n.Min.Y})"));

            logger.LogInformation($"> NPCs found: {info}");

            return(Npcs.Count == 0 ? null : Npcs.First());
        }
Exemplo n.º 18
0
        /// <summary>
        /// Check if an NPC is valid
        /// </summary>
        /// <param name="npc"></param>
        /// <returns></returns>
        public bool IsValidNpc(Npc npc)
        {
            if (npc == null)
            {
                return(false);
            }

            return(Npcs.ContainsValue(npc));
        }
Exemplo n.º 19
0
        /// <summary>
        /// Check if an NPC name is valid
        /// </summary>
        /// <param name="npcName"></param>
        /// <returns></returns>
        public bool IsValidNpc(string npcName)
        {
            if (String.IsNullOrEmpty(npcName))
            {
                return(false);
            }

            return(Npcs.ContainsKey(npcName));
        }
Exemplo n.º 20
0
 public Texture GetNPC(int num)
 {
     if (!Npcs.ContainsKey(num))
     {
         string name = $"Images\\NPC_{num}";
         Npcs[num] = LoadTexture(name);
     }
     return(Npcs[num]);
 }
Exemplo n.º 21
0
        /// <summary>
        /// Add an NPC
        /// </summary>
        /// <param name="npc"></param>
        public void AddNpc(Npc npc)
        {
            if (IsSetupFinalised)
            {
                throw new InvalidOperationException("Cannot add NPCs after game state setup is finalised");
            }

            Npcs.Add(npc.Name, npc);
        }
Exemplo n.º 22
0
        private void AddNpc(uint uid)
        {
            var isAlreadyInNpcList = Npcs.Any(npc => uid == npc.Uid);

            if (!isAlreadyInNpcList)
            {
                Npcs.Insert(0, new Npc(uid));
            }
        }
Exemplo n.º 23
0
 public Texture GetNPC(int num)
 {
     if (!Npcs.ContainsKey(num))
     {
         string name = String.Format("Images\\NPC_{0}", num);
         Npcs[num] = LoadTexture(name);
     }
     return(Npcs[num]);
 }
Exemplo n.º 24
0
 public bool IsCutTree(int x, int y)
 {
     if (!IsInCurrentArea(x, y))
     {
         return(false);
     }
     return(Npcs.Find(s => s.PositionX == x && s.PositionY == y &&
                      (s.NpcName.ToLowerInvariant().StartsWith(".cut") || s.Data.Settings.Sprite == 9) && s.IsVisible) != null);
 }
Exemplo n.º 25
0
        public MoveResult CanMove(Direction direction, int destinationX, int destinationY, bool isOnGround, bool isSurfing, bool canUseCut, bool canUseSmashRock)
        {
            if ((destinationX < 0 || destinationX > Width ||
                 destinationY < 0 || destinationY > Height))
            {
                return(MoveResult.Fail);
            }

            if (Npcs.Any(npc => npc.PositionX == destinationX && npc.PositionY == destinationY && !npc.IsMoving &&
                         !IsCutTree(destinationX, destinationY) && !IsRockSmash(destinationX, destinationY) && npc.IsVisible))
            {
                return(MoveResult.Fail);
            }

            //if (direction != Direction.Down && GetCollider(destinationX, destinationY) == 4)
            //{
            //    return MoveResult.Fail;
            //}

            //if (IsUnmoveableCellSide(direction, destinationX, destinationY))
            //    return MoveResult.Fail;

            if ((IsCutTree(destinationX, destinationY) && !canUseCut) || (IsRockSmash(destinationX, destinationY) && !canUseSmashRock))
            {
                return(MoveResult.Fail);
            }

            int collider = GetCollider(destinationX, destinationY);

            if (!IsMovementValid(direction, collider, isOnGround, isSurfing, canUseCut, canUseSmashRock, destinationX, destinationY))
            {
                return(MoveResult.Fail);
            }

            if (collider == 4 || collider == 6 || collider == 7 || collider == 5)
            {
                return(MoveResult.Jump);
            }

            if (collider == 11 && isOnGround)
            {
                return(MoveResult.NoLongerOnGround);
            }

            if (collider == 12 && !isOnGround)
            {
                return(MoveResult.OnGround);
            }

            if (isSurfing && collider != 2)
            {
                return(MoveResult.NoLongerSurfing);
            }

            return(MoveResult.Success);
        }
Exemplo n.º 26
0
 public void ShowNames(Graphics gr)
 {
     if (Npcs.Count > 0)
     {
         using (var whitePen = new Pen(Color.White, 3))
         {
             Npcs.ForEach(n => gr.DrawRectangle(whitePen, new Rectangle(n.Min, new Size(n.Width, n.Height))));
         }
     }
 }
Exemplo n.º 27
0
 public bool IsPc(int x, int y)
 {
     if (!IsInCurrentArea(x, y))
     {
         return(false);
     }
     return(Objects.Any(ob => ob != null && ob.x == x && ob.z == -y && ob.Name.StartsWith("PC") && !string.IsNullOrEmpty(ob.Name)) &&
            Npcs.Any(n => n.PositionX == x && n.PositionY == y &&
                     n.NpcName.ToLowerInvariant().StartsWith("new") && n.Data.Settings.Sprite == 0));
 }
 public GameRolePlayNpcInformations(int contextualId, EntityLook look, EntityDispositionInformations disposition, long npcId, bool sex, long specialArtworkId, Npcs npcData)
 {
     this.contextualId     = contextualId;
     this.look             = look;
     this.disposition      = disposition;
     this.npcId            = npcId;
     this.sex              = sex;
     this.specialArtworkId = specialArtworkId;
     this.npcData          = npcData;
 }
Exemplo n.º 29
0
        public List <PacketDefinition> GetMapItems()
        {
            var packets = new List <PacketDefinition>();

            // TODO: Parallelize getting of items of mapinstance
            Portals.ForEach(s => packets.Add(s.GenerateGp()));
            Monsters.ForEach(s => packets.Add(s.GenerateIn()));
            Npcs.ForEach(s => packets.Add(s.GenerateIn()));
            return(packets);
        }
Exemplo n.º 30
0
        private void OnDestroy()
        {
            HostileNpcs.Remove(this);
            Npcs.Remove(this);
            if (Item != null)
            {
                Item.Dispose();
            }

            Destroy(gameObject);
        }