// 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); } } } }
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(); } } }
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); }
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(); } }
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); }
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; }
/// <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); } }
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(); } }
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)); } }
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; } }
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); }
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}"); }
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}"); } }
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); }
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; }
public void Clear() { Data = null; Players.Clear(); Monsters.Clear(); Npcs.Clear(); Others.Clear(); }
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()); }
/// <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)); }
/// <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)); }
public Texture GetNPC(int num) { if (!Npcs.ContainsKey(num)) { string name = $"Images\\NPC_{num}"; Npcs[num] = LoadTexture(name); } return(Npcs[num]); }
/// <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); }
private void AddNpc(uint uid) { var isAlreadyInNpcList = Npcs.Any(npc => uid == npc.Uid); if (!isAlreadyInNpcList) { Npcs.Insert(0, new Npc(uid)); } }
public Texture GetNPC(int num) { if (!Npcs.ContainsKey(num)) { string name = String.Format("Images\\NPC_{0}", num); Npcs[num] = LoadTexture(name); } return(Npcs[num]); }
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); }
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); }
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)))); } } }
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; }
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); }
private void OnDestroy() { HostileNpcs.Remove(this); Npcs.Remove(this); if (Item != null) { Item.Dispose(); } Destroy(gameObject); }