public override void Handle(GameSession session, PacketReader packet) { short insigniaId = packet.ReadShort(); if (insigniaId < 0 && !InsigniaMetadataStorage.IsValid(insigniaId)) { return; } session.Player.InsigniaId = insigniaId; session.FieldManager.BroadcastPacket(InsigniaPacket.UpdateInsignia(session, insigniaId, CanEquipInsignia(session, insigniaId))); }
private bool CanEquipInsignia(GameSession session, short insigniaId) { string type = InsigniaMetadataStorage.GetConditionType(insigniaId); switch (type) // TODO: handling survivallevel { case "vip": return(session.Player.IsVIP); case "level": return(session.Player.Levels.Level >= 50); case "enchant": foreach (KeyValuePair <ItemSlot, Item> item in session.Player.Equips) { if (item.Value.Enchants >= 12) { return(true); } } break; case "trophy_point": return(session.Player.Trophy[0] + session.Player.Trophy[1] + session.Player.Trophy[2] > 1000); case "title": return(session.Player.Titles.Contains(InsigniaMetadataStorage.GetTitleId(insigniaId))); case "adventure_level": return(session.Player.Levels.PrestigeLevel >= 100); default: Console.WriteLine("Unhandled condition type for insigniaid: " + insigniaId + ", type: " + type); break; } return(false); }
private static bool CanEquipInsignia(GameSession session, short insigniaId) { string type = InsigniaMetadataStorage.GetConditionType(insigniaId); switch (type) // TODO: handling survivallevel { case "vip": return session.Player.IsVip(); case "level": return session.Player.Levels.Level >= 50; case "enchant": return session.Player.Equips.FirstOrDefault(x => x.Value.Enchants >= 12).Value != null; case "trophy_point": return session.Player.Trophy[0] + session.Player.Trophy[1] + session.Player.Trophy[2] > 1000; case "title": return session.Player.Titles.Contains(InsigniaMetadataStorage.GetTitleId(insigniaId)); case "adventure_level": return session.Player.Levels.PrestigeLevel >= 100; default: Console.WriteLine("Unhandled condition type for insigniaid: " + insigniaId + ", type: " + type); break; } return false; }