using System; using System.Linq; using System.Threading; using System.Net.Sockets; using System.Collections.Generic; using Mohamed_Hossam_Barakat.Network.Cryptography; using Mohamed_Hossam_Barakat.Network.GamePackets; using Mohamed_Hossam_Barakat.Network.Sockets; using Mohamed_Hossam_Barakat.Network; using Mohamed_Hossam_Barakat.Interfaces; using Mohamed_Hossam_Barakat.Game.ConquerStructures; using System.Drawing; using Mohamed_Hossam_Barakat.Game; using Mohamed_Hossam_Barakat.Database; using System.Diagnostics; using Microsoft.Win32; using Mohamed_Hossam_Barakat.Copra; using Mohamed_Hossam_Barakat.Rangers.Inner; using System.Collections.Concurrent; using Mohamed_Hossam_Barakat.Game.Features.Tournaments; using System.Drawing.Drawing2D; using Mohamed_Hossam_Barakat.MaTrix; namespace Mohamed_Hossam_Barakat.Client { public class GameState { public bool InWareHouse() { foreach (var wh in Warehouses.Values) { if (wh.Count > 0) return true; } return false; } public static void CheckItems(Client.GameState client) { #region Items Protections #region Positions List<int> Pro7Dam = new List<int>() { 1, 2, 3, 4, 5, 6, 8, 21, 22, 23, 24, 25, 26, 28 }; List<int> Pro1Dam = new List<int>() { 7, 9, 10, 11, 15, 16, 17, 18, 27, 29 }; List<int> ProSocket = new List<int>() { 7, 9, 15, 16, 17, 18, 27, 29 }; #endregion #region Equipments foreach (ConquerItem i in client.Equipment.Objects) { if (i == null) continue; #region Damage 7 if (Pro7Dam.Contains(i.Position)) { if (i.Bless > 7) { i.Bless = 7; i.Mode = Game.Enums.ItemMode.Update; Database.ConquerItemTable.UpdateBless(i); } } #endregion #region Damage 1 - Enchant if (Pro1Dam.Contains(i.Position)) { if (i.Bless > 1) { i.Bless = 1; i.Mode = Game.Enums.ItemMode.Update; Database.ConquerItemTable.UpdateBless(i); } if (i.Enchant > 0) { i.Enchant = 0; i.Mode = Game.Enums.ItemMode.Update; Database.ConquerItemTable.UpdateEnchant(i); } } #endregion #region Damage - Enchant - Crop & Wing if (i.Position == 19 && i.Position == 12) { if (i.Bless > 0) i.Bless = 0; if (i.Enchant > 0) i.Enchant = 0; i.Mode = Game.Enums.ItemMode.Update; Database.ConquerItemTable.UpdateEnchant(i); Database.ConquerItemTable.UpdateBless(i); } #endregion #region Sockets if (ProSocket.Contains(i.Position)) { if (i.SocketOne > (Game.Enums.Gem)0) { i.SocketOne = Game.Enums.Gem.NoSocket; i.SocketTwo = Game.Enums.Gem.NoSocket; i.Mode = Game.Enums.ItemMode.Update; Database.ConquerItemTable.UpdateSockets(i); } } #endregion i.Send(client); } #endregion #region Inventory foreach (ConquerItem i in client.Inventory.Objects) { if (i == null) continue; #region Damage 7 if (Pro7Dam.Contains(PacketHandler.ItemPosition(i.ID))) { if (i.Bless > 7) { i.Bless = 7; i.Mode = Game.Enums.ItemMode.Update; Database.ConquerItemTable.UpdateBless(i); } } #endregion #region Damage 1 - Enchant if (Pro1Dam.Contains(PacketHandler.ItemPosition(i.ID))) { if (i.Bless > 1) { i.Bless = 1; i.Mode = Game.Enums.ItemMode.Update; Database.ConquerItemTable.UpdateBless(i); } if (i.Enchant > 0) { i.Enchant = 0; i.Mode = Game.Enums.ItemMode.Update; Database.ConquerItemTable.UpdateEnchant(i); } } #endregion #region Damage - Enchant - Crop & Wing if (PacketHandler.ItemPosition(i.ID) == 19 || PacketHandler.ItemPosition(i.ID) == 12) { if (i.Bless > 0) i.Bless = 0; if (i.Enchant > 0) i.Enchant = 0; i.Mode = Game.Enums.ItemMode.Update; Database.ConquerItemTable.UpdateEnchant(i); Database.ConquerItemTable.UpdateBless(i); } #endregion #region Sockets if (ProSocket.Contains(PacketHandler.ItemPosition(i.ID))) { if (i.SocketOne > (Game.Enums.Gem)0) { i.SocketOne = Game.Enums.Gem.NoSocket; i.SocketTwo = Game.Enums.Gem.NoSocket; i.Mode = Game.Enums.ItemMode.Update; Database.ConquerItemTable.UpdateSockets(i); } } #endregion i.Send(client); } #endregion #endregion } public void BlessTouch(GameState client) { if (!client.Spells.ContainsKey(12390)) return; if (client.Weapons != null) if (client.Weapons.Item2 != null) if (client.Weapons.Item2.ID / 1000 != 619) return; var spell2 = SpellTable.GetSpell(client.Spells[12390].ID, client.Spells[12390].Level); if (Kernel.Rate((double)spell2.Percent)) { var spell = Database.SpellTable.GetSpell(1095, 4); Entity.AddFlag(Update.Flags.Stigma); Entity.StigmaStamp = Time32.Now; Entity.StigmaIncrease = spell.PowerPercent; Entity.StigmaTime = (byte)spell.Duration; if (Entity.EntityFlag == EntityFlag.Entity) Send(Constants.Stigma(spell.PowerPercent, spell.Duration)); spell = Database.SpellTable.GetSpell(1090, 4); Entity.ShieldTime = 0; Entity.ShieldStamp = Time32.Now; Entity.MagicShieldStamp = Time32.Now; Entity.MagicShieldTime = 0; Entity.AddFlag(Update.Flags.MagicShield); Entity.MagicShieldStamp = Time32.Now; Entity.MagicShieldIncrease = 1.1f;//spell.PowerPercent; Entity.MagicShieldTime = (byte)spell.Duration; if (Entity.EntityFlag == EntityFlag.Entity) Send(Constants.Shield(spell.PowerPercent, spell.Duration)); spell = Database.SpellTable.GetSpell(1085, 4); Entity.AccuracyStamp = Time32.Now; Entity.StarOfAccuracyStamp = Time32.Now; Entity.StarOfAccuracyTime = 0; Entity.AccuracyTime = 0; Entity.AddFlag(Update.Flags.StarOfAccuracy); Entity.StarOfAccuracyStamp = Time32.Now; Entity.StarOfAccuracyTime = (byte)spell.Duration; if (Entity.EntityFlag == EntityFlag.Entity) Send(Constants.Accuracy(spell.Duration)); client.IncreaseSpellExperience(100, 12390); } } public void BreakTouch(GameState client) { if (!client.Spells.ContainsKey(12400)) return; if (client.Weapons != null) if (client.Weapons.Item2 != null) if (client.Weapons.Item2.ID / 1000 != 619) return; var spell = SpellTable.GetSpell(client.Spells[12400].ID, client.Spells[12400].Level); if (MyMath.Success((double)30)) { if (Entity.ContainsFlag3(Update.Flags3.lianhuaran04)) { SpellUse suse = new SpellUse(true); suse.Attacker = Entity.UID; suse.SpellID = spell.ID; suse.SpellLevel = spell.Level; var array = Game.Attacking.Handle.EntityinRange(Entity, Entity).ToArray(); foreach (var target in array) { var attacked = target.Entity; if (attacked.UID == client.Entity.UID) continue; if (Game.Attacking.Handle.CanAttack(client.Entity, attacked, spell, true)) { var attack = new Attack(true); attack.Attacker = client.Entity.UID; attack.Attacked = attacked.UID; uint damage = Game.Attacking.Calculate.Magic(client.Entity, attacked, ref attack); attack.Damage = damage; suse.Effect1 = attack.Effect1; suse.Effect1 = attack.Effect1; Game.Attacking.Handle.ReceiveAttack(client.Entity, attacked, attack, ref damage, spell); suse.AddTarget(attacked, damage, attack); } } client.SendScreen(suse, true); Entity.RemoveFlag3(Update.Flags3.lianhuaran01); Entity.RemoveFlag3(Update.Flags3.lianhuaran02); Entity.RemoveFlag3(Update.Flags3.lianhuaran03); Entity.RemoveFlag3(Update.Flags3.lianhuaran04); } else if (Entity.ContainsFlag3(Update.Flags3.lianhuaran03)) { Entity.AddFlag3(Update.Flags3.lianhuaran04); Entity.RemoveFlag3(Update.Flags3.lianhuaran03); Entity.lianhuaranPercent = 0.5f; } else if (Entity.ContainsFlag3(Update.Flags3.lianhuaran02)) { Entity.AddFlag3(Update.Flags3.lianhuaran03); Entity.RemoveFlag3(Update.Flags3.lianhuaran02); Entity.lianhuaranPercent = 0.4f; } else if (Entity.ContainsFlag3(Update.Flags3.lianhuaran01)) { Entity.AddFlag3(Update.Flags3.lianhuaran02); Entity.RemoveFlag3(Update.Flags3.lianhuaran01); Entity.lianhuaranPercent = 0.3f; } else if (!Entity.ContainsFlag3(Update.Flags3.lianhuaran01)) { Entity.AddFlag3(Update.Flags3.lianhuaran01); Entity.lianhuaranPercent = 0.1f; } Entity.lianhuaranStamp = Time32.Now; Entity.lianhuaranLeft = 20; client.IncreaseSpellExperience(100, 12400); } } public DateTime MatrixItem { get { return this["matrixitem"]; } set { this["matrixitem"] = value; } } public DateTime matrixtime { get { return this["matrixtime"]; } set { this["matrixtime"] = value; } } public ulong Donationx { get { return this["Donationx"]; } set { this["Donationx"] = value; } } public bool OnDonation { get { return this["ondonation"]; } set { this["ondonation"] = value; } } public uint SashSlots { get { return Entity.ExtraInventory; } set { Entity.ExtraInventory = value; if (Entity.EntityFlag == EntityFlag.Entity) { Entity.Update(Update.Sash, value, false); Entity.Update(Update.AvailableSlots, 200, false); } } } //public SafeDictionary<uint, OZUS.Inbox.PrizeInfo> Prizes = new SafeDictionary<uint, OZUS.Inbox.PrizeInfo>(1000); public SafeDictionary<Mohamed_Hossam_Barakat.Network.GamePackets.Update.AuraType, Copra.Auras> Auras = new SafeDictionary<Update.AuraType, Copra.Auras>(8); public GameState[] MonksInTeam() { return Team.Teammates.Where(x => x.Entity.Aura_isActive).ToArray(); } public void CheckTeamAura() { if (Team != null) { var monks = MonksInTeam(); if (monks != null) { foreach (var monk in monks) { Update.AuraType aura = Update.AuraType.TyrantAura; switch (monk.Entity.Aura_actType) { case Update.Flags2.EarthAura: aura = Update.AuraType.EarthAura; break; case Update.Flags2.FireAura: aura = Update.AuraType.FireAura; break; case Update.Flags2.WaterAura: aura = Update.AuraType.WaterAura; break; case Update.Flags2.WoodAura: aura = Update.AuraType.WoodAura; break; case Update.Flags2.MetalAura: aura = Update.AuraType.MetalAura; break; case Update.Flags2.FendAura: aura = Update.AuraType.FendAura; break; case Update.Flags2.TyrantAura: aura = Update.AuraType.TyrantAura; break; } if (!Auras.ContainsKey(aura)) { if (this.Entity.UID != monk.Entity.UID && Kernel.GetDistance(this.Entity.X, this.Entity.Y, monk.Entity.X, monk.Entity.Y) <= Constants.pScreenDistance) { Copra.Auras Aura = new Copra.Auras(); Aura.TeamAuraOwner = monk; Aura.TeamAuraStatusFlag = monk.Entity.Aura_actType; Aura.TeamAuraPower = monk.Entity.Aura_actPower; Aura.TeamAuraLevel = monk.Entity.Aura_actLevel; Aura.aura = aura; if (!Auras.ContainsKey(Aura.aura)) { Auras.Add(Aura.aura, Aura); this.Entity.AddFlag2(Aura.TeamAuraStatusFlag); new Update(true).Aura(this.Entity, Update.AuraDataTypes.Add, aura, Aura.TeamAuraLevel, Aura.TeamAuraPower); this.doAuraBonuses(Aura.TeamAuraStatusFlag, Aura.TeamAuraPower, 1); } } } } } } foreach (var Aura in Auras.Values.ToArray()) { var pthis = Aura.TeamAuraOwner; if (pthis == null) { new Update(true).Aura(this.Entity, Update.AuraDataTypes.Remove, Aura.aura, Aura.TeamAuraLevel, Aura.TeamAuraPower); //this.removeAuraBonuses(this.TeamAuraStatusFlag, this.TeamAuraPower, 1); this.removeAuraBonuses(Aura.TeamAuraStatusFlag, Aura.TeamAuraPower, 1); this.Entity.RemoveFlag2(Aura.TeamAuraStatusFlag); Auras.Remove(Aura.aura); } else { if (!pthis.Entity.Aura_isActive || !pthis.Socket.Alive || pthis.Entity.Dead || pthis.Entity.MapID != this.Entity.MapID || pthis.Entity.Aura_actType != Aura.TeamAuraStatusFlag) { new Update(true).Aura(this.Entity, Update.AuraDataTypes.Remove, Aura.aura, Aura.TeamAuraLevel, Aura.TeamAuraPower); //this.removeAuraBonuses(this.TeamAuraStatusFlag, this.TeamAuraPower, 1); this.removeAuraBonuses(Aura.TeamAuraStatusFlag, Aura.TeamAuraPower, 1); this.Entity.RemoveFlag2(Aura.TeamAuraStatusFlag); Auras.Remove(Aura.aura); } else { if (this.Team == null || (pthis.Team == null || (pthis.Team != null && !pthis.Team.IsTeammate(this.Entity.UID))) || this.Entity.Dead || Kernel.GetDistance(this.Entity.X, this.Entity.Y, pthis.Entity.X, pthis.Entity.Y) > Constants.pScreenDistance) { new Update(true).Aura(this.Entity, Update.AuraDataTypes.Remove, Aura.aura, Aura.TeamAuraLevel, Aura.TeamAuraPower); this.removeAuraBonuses(Aura.TeamAuraStatusFlag, Aura.TeamAuraPower, 1); this.Entity.RemoveFlag2(Aura.TeamAuraStatusFlag); Auras.Remove(Aura.aura); } } } } } public Copra.ProgressBar ProgressBar; public bool TransferedEntity; public void ChangeName(GameState client) { client.OnDisconnect = p => { #region ChangeName progress string name200 = p.Entity.Name; string newname = p.NewName; uint uid = p.Entity.UID; if (newname != "") { Mohamed_Hossam_Barakat.Console.WriteLine("Change Name In Progress"); if (newname != "") { Database.MySqlCommand cmdupdate = null; cmdupdate = new Database.MySqlCommand(Database.MySqlCommandType.UPDATE); cmdupdate.Update("apprentice").Set("MentorName", newname).Where("MentorID", uid).Execute(); cmdupdate = new Database.MySqlCommand(Database.MySqlCommandType.UPDATE); cmdupdate.Update("apprentice").Set("ApprenticeName", newname).Where("ApprenticeID", uid).Execute(); cmdupdate = new Database.MySqlCommand(Database.MySqlCommandType.UPDATE); cmdupdate.Update("arena").Set("EntityName", newname).Where("EntityID", uid).Execute(); cmdupdate = new Database.MySqlCommand(Database.MySqlCommandType.UPDATE); cmdupdate.Update("claimitems").Set("OwnerName", newname).Where("OwnerUID", uid).Execute(); cmdupdate = new Database.MySqlCommand(Database.MySqlCommandType.UPDATE); cmdupdate.Update("claimitems").Set("GainerName", newname).Where("GainerUID", uid).Execute(); cmdupdate = new Database.MySqlCommand(Database.MySqlCommandType.UPDATE); cmdupdate.Update("detaineditems").Set("OwnerName", newname).Where("OwnerUID", uid).Execute(); cmdupdate = new Database.MySqlCommand(Database.MySqlCommandType.UPDATE); cmdupdate.Update("detaineditems").Set("GainerName", newname).Where("GainerUID", uid).Execute(); cmdupdate = new Database.MySqlCommand(Database.MySqlCommandType.UPDATE); cmdupdate.Update("enemy").Set("EnemyName", newname).Where("EnemyID", uid).Execute(); cmdupdate = new Database.MySqlCommand(Database.MySqlCommandType.UPDATE); cmdupdate.Update("friends").Set("FriendName", newname).Where("FriendID", uid).Execute(); cmdupdate = new Database.MySqlCommand(Database.MySqlCommandType.UPDATE); cmdupdate.Update("guilds").Set("LeaderName", newname).Where("LeaderName", name200).Execute(); cmdupdate = new Database.MySqlCommand(Database.MySqlCommandType.UPDATE); cmdupdate.Update("clans").Set("LeaderName", newname).Where("LeaderName", name200).Execute(); if (p.Entity.MyJiang != null) { p.Entity.MyJiang.OwnName = newname; Game.JiangHu.JiangHuClients[p.Entity.UID] = p.Entity.MyJiang; } cmdupdate = new Database.MySqlCommand(Database.MySqlCommandType.UPDATE); cmdupdate.Update("nobility").Set("EntityName", newname).Where("EntityUID", uid).Execute(); cmdupdate = new Database.MySqlCommand(Database.MySqlCommandType.UPDATE); cmdupdate.Update("partners").Set("PartnerName", newname).Where("PartnerID", uid).Execute(); cmdupdate = new Database.MySqlCommand(Database.MySqlCommandType.UPDATE); cmdupdate.Update("chi").Set("name", newname).Where("uid", uid).Execute(); cmdupdate = new Database.MySqlCommand(Database.MySqlCommandType.UPDATE); cmdupdate.Update("teamarena").Set("EntityName", newname).Where("EntityID", uid).Execute(); cmdupdate = new Database.MySqlCommand(Database.MySqlCommandType.UPDATE); cmdupdate.Update("entities").Set("name", newname).Set("namechange", "").Where("UID", uid).Execute(); Console.WriteLine(" -[" + name200 + "] : -[" + newname + "]"); if (Game.ConquerStructures.Nobility.Board.ContainsKey(p.Entity.UID)) { Game.ConquerStructures.Nobility.Board[p.Entity.UID].Name = p.NewName; } if (Arena.ArenaStatistics.ContainsKey(p.Entity.UID)) { Arena.ArenaStatistics[p.Entity.UID].Name = p.NewName; } if (p.Entity.GetClan != null) { if (p.Entity.GetClan.LeaderName == name200) { Kernel.Clans[p.Entity.ClanId].LeaderName = p.NewName; } Kernel.Clans[p.Entity.ClanId].Members[p.Entity.UID].Name = p.NewName; } if (p.Guild != null) { if (p.Guild.LeaderName == name200) { Kernel.Guilds[p.Guild.ID].LeaderName = p.NewName; } Kernel.Guilds[p.Guild.ID].Members[p.Entity.UID].Name = p.NewName; } } } #endregion ChangeName progressa }; client.Disconnect(); } public string Country { get; set; } public short GetDistance(IMapObject obj) { return Kernel.GetDistance(Entity.X, Entity.Y, obj.X, obj.Y); } public DateTime timerattack = new DateTime(); public GameState LobbyPlayWith; public bool LobbySignup { get { return this["LobbySignup"]; } set { this["LobbySignup"] = value; } } public ushort SuperPotion { get { return this["SuperPotion"]; } set { this["SuperPotion"] = value; if (Entity.FullyLoaded) if (Entity.EntityFlag == EntityFlag.Entity) { if (this != null) { Entity.Update(Network.GamePackets.Update.DoubleExpTimer, Entity.DoubleExperienceTime, 500, false); } } } } public Lobby.QualifierGroup LobbyGroup; public void GetLanguages(string language) { switch (language) { case "En": Language = Languages.English; break; case "Ar": Language = Languages.Arabic; break; } } public Languages Language = Languages.English; public Copra.Pet Pet; public Copra.Quests Quests; public MaTrix.AI AI; public SafeDictionary<uint, Mailbox.PrizeInfo> Prizes = new SafeDictionary<uint, Mailbox.PrizeInfo>(1000); // public SafeDictionary<Copra.Reward.Event, Copra.Reward.RewardInfo> Rewards = new SafeDictionary<Copra.Reward.Event, Copra.Reward.RewardInfo>(1000); public SafeDictionary<uint, Copra.Way2Heroes.StageInfo> Way2Heroes = new SafeDictionary<uint, Copra.Way2Heroes.StageInfo>(); public string NewName = ""; public byte Claimeds { get { return this["Claimeds"]; } set { this["Claimeds"] = value; } } public bool JiangActive = false; public bool StudyToday { get { return this["StudyToday"]; } set { this["StudyToday"] = value; } } public uint UsedCourses { get { return this["UsedCourses"]; } set { this["UsedCourses"] = value; } } public DateTime ResetUsedCourses { get { return this["ResetUsedCourses"]; } set { this["ResetUsedCourses"] = value; } } public bool JoinedDBMap { get { return this["JoinedDBMap"]; } set { this["JoinedDBMap"] = value; } } public DateTime inDBmap { get { return this["inDBmap"]; } set { this["inDBmap"] = value; } } public uint Appearance { get { return this["Appearance"]; } set { this["Appearance"] = value; } } public uint ClaimedElitePk { get { return this["ClaimedElitePk"]; } set { this["ClaimedElitePk"] = value; } } public uint ClaimedTeampk { get { return this["ClaimedTeampk"]; } set { this["ClaimedTeampk"] = value; } } public uint ClaimedSkillTeam { get { return this["ClaimedSkillTeam"]; } set { this["ClaimedSkillTeam"] = value; } } public bool _voted; public bool Voted { get { return _voted; } set { _voted = value; new Database.MySqlCommand(Mohamed_Hossam_Barakat.Database.MySqlCommandType.UPDATE) .Update("entities").Set("VotePoint", value).Where("UID", Entity.UID).Execute(); } } public DateTime VoteStamp { get { return this["VoteStamp"]; } set { this["VoteStamp"] = value; } } public uint namechanges { get { return this["namechanges"]; } set { this["namechanges"] = value; } } public string Command = ""; public bool endarena = false; public bool endteam = false; public IDisposable[] TimerSubscriptions; public object TimerSyncRoot, ItemSyncRoot; public Time32 LastVIPTeleport, LastVIPTeamTeleport; public bool AlternateEquipment; private ClientWrapper _socket; public Database.AccountTable Account; public GameCryptography Cryptography; public DHKeyExchange.ServerKeyExchange DHKeyExchange; public bool Exchange = true; public ConcurrentPacketQueue Queue; public PacketFilter PacketFilter; public Time32 CantAttack = Time32.Now; public bool Filtering = false; public Network.GamePackets.Interaction Interaction; public int quarantineKill = 0; public int quarantineDeath = 0; public int TopDlClaim = 0; public int TopGlClaim = 0; public uint uniquepoints = 0; public Action<GameState> OnDisconnect; public int apprtnum = 0; public Game.Enums.Color staticArmorColor; public bool JustCreated = false; public Timer Timer; #region Network public GameState(ClientWrapper socket) { Fake = socket == null; if (Fake) socket = new ClientWrapper() { Alive = true }; Queue = new ConcurrentPacketQueue(); PacketFilter = new PacketFilter() { { 10010, 10 }, { 10005, 7 }, { 2064, 4 }, { 2032, 3 }, { 1027, 2 } }; Attackable = false; Action = 0; _socket = socket; Cryptography = new GameCryptography(Program.Encoding.GetBytes(Constants.GameCryptographyKey)); if (Program.TestingMode) Cryptography = new GameCryptography(Program.Encoding.GetBytes(Constants.GameCryptographyKey)); DHKeyExchange = new Network.GamePackets.DHKeyExchange.ServerKeyExchange(); //SpiritBeadQ = new Game.Features.SpiritBeadQuest(this); ChiPowers = new List<ChiPowerStructure>(); Retretead_ChiPowers = new ChiPowerStructure[4]; //JiangPowers = new List<JiangPowerStructure>(); } public bool Ninja() { if (Entity.EntityFlag == Game.EntityFlag.Entity) { if (Entity.Class >= 50 && Entity.Class <= 55) return true; else return false; } return false; } public void ReadyToPlay() { try { Weapons = new Tuple<ConquerItem, ConquerItem>(null, null); ItemSyncRoot = new object(); Screen = new Game.Screen(this); // if (!Program.ServerTransfer) { Pet = new Copra.Pet(this); AI = new AI(this); } Inventory = new Game.ConquerStructures.Inventory(this); Equipment = new Game.ConquerStructures.Equipment(this); WarehouseOpen = false; WarehouseOpenTries = 0; TempPassword = ""; ArsenalDonations = new uint[10]; if (Account != null) { Warehouses = new SafeDictionary<Game.ConquerStructures.Warehouse.WarehouseID, Game.ConquerStructures.Warehouse>(20); Warehouses.Add((Mohamed_Hossam_Barakat.Game.ConquerStructures.Warehouse.WarehouseID)this.Account.EntityID, new Game.ConquerStructures.Warehouse(this, (Mohamed_Hossam_Barakat.Game.ConquerStructures.Warehouse.WarehouseID)this.Account.EntityID, 200)); Warehouses.Add(Mohamed_Hossam_Barakat.Game.ConquerStructures.Warehouse.WarehouseID.TwinCity, new Game.ConquerStructures.Warehouse(this, Mohamed_Hossam_Barakat.Game.ConquerStructures.Warehouse.WarehouseID.TwinCity)); Warehouses.Add(Mohamed_Hossam_Barakat.Game.ConquerStructures.Warehouse.WarehouseID.PhoenixCity, new Game.ConquerStructures.Warehouse(this, Mohamed_Hossam_Barakat.Game.ConquerStructures.Warehouse.WarehouseID.PhoenixCity)); Warehouses.Add(Mohamed_Hossam_Barakat.Game.ConquerStructures.Warehouse.WarehouseID.ApeCity, new Game.ConquerStructures.Warehouse(this, Mohamed_Hossam_Barakat.Game.ConquerStructures.Warehouse.WarehouseID.ApeCity)); Warehouses.Add(Mohamed_Hossam_Barakat.Game.ConquerStructures.Warehouse.WarehouseID.DesertCity, new Game.ConquerStructures.Warehouse(this, Mohamed_Hossam_Barakat.Game.ConquerStructures.Warehouse.WarehouseID.DesertCity)); Warehouses.Add(Mohamed_Hossam_Barakat.Game.ConquerStructures.Warehouse.WarehouseID.BirdCity, new Game.ConquerStructures.Warehouse(this, Mohamed_Hossam_Barakat.Game.ConquerStructures.Warehouse.WarehouseID.BirdCity)); Warehouses.Add(Mohamed_Hossam_Barakat.Game.ConquerStructures.Warehouse.WarehouseID.StoneCity, new Game.ConquerStructures.Warehouse(this, Mohamed_Hossam_Barakat.Game.ConquerStructures.Warehouse.WarehouseID.StoneCity)); Warehouses.Add(Mohamed_Hossam_Barakat.Game.ConquerStructures.Warehouse.WarehouseID.Market, new Game.ConquerStructures.Warehouse(this, Mohamed_Hossam_Barakat.Game.ConquerStructures.Warehouse.WarehouseID.Market)); if (Account != null) { if (!Warehouses.ContainsKey((Mohamed_Hossam_Barakat.Game.ConquerStructures.Warehouse.WarehouseID)Account.EntityID)) Warehouses.Add((Game.ConquerStructures.Warehouse.WarehouseID)Account.EntityID, new Game.ConquerStructures.Warehouse(this, (Game.ConquerStructures.Warehouse.WarehouseID)Account.EntityID)); } } Trade = new Game.ConquerStructures.Trade(); ArenaStatistic = new ArenaStatistic(true); // CP = new ChampionPoints(); Prayers = new List<GameState>(); map = null; Quests = new Copra.Quests(this); //JiangHuStatus = new JiangHuStatus(); } catch (Exception e) { Program.SaveException(e); } } public void Send(byte[] buffer) { if (Fake) return; if (!_socket.Alive) return; ushort length = BitConverter.ToUInt16(buffer, 0); if (length >= 1024 && buffer.Length > length) { //Console.WriteLine(Environment.StackTrace); return; } byte[] _buffer = new byte[buffer.Length]; if (length == 0) Writer.WriteUInt16((ushort)(buffer.Length - 8), 0, buffer); Buffer.BlockCopy(buffer, 0, _buffer, 0, buffer.Length); Network.Writer.WriteString(Constants.ServerKey, _buffer.Length - 8, _buffer); try { lock (_socket) { if (!_socket.Alive) return; lock (Cryptography) { Cryptography.Encrypt(_buffer, _buffer.Length); _socket.Send(_buffer); } } } catch (Exception) { _socket.Alive = false; Disconnect(); } } private void EndSend(IAsyncResult res) { try { _socket.Socket.EndSend(res); } catch { _socket.Alive = false; Disconnect(); } } public void Send(Interfaces.IPacket buffer) { Send(buffer.ToArray()); } public void SendScreenSpawn(Interfaces.IMapObject obj, bool self) { try { foreach (Interfaces.IMapObject _obj in Screen.Objects) { if (_obj == null) continue; if (_obj.UID != Entity.UID) { if (_obj.MapObjType == Game.MapObjectType.Entity) { GameState client = _obj.Owner as GameState; obj.SendSpawn(client, false); } } } if (self) obj.SendSpawn(this); } catch (Exception e) { Program.SaveException(e); } } public void RemoveScreenSpawn(Interfaces.IMapObject obj, bool self) { try { if (Screen == null) return; if (Screen.Objects == null) return; foreach (Interfaces.IMapObject _obj in Screen.Objects) { if (_obj == null) continue; if (obj == null) continue; if (_obj.UID != Entity.UID) { if (_obj.MapObjType == Game.MapObjectType.Entity) { GameState client = _obj.Owner as GameState; client.Screen.Remove(obj); } } } if (self) Screen.Remove(obj); } catch (Exception e) { Program.SaveException(e); } } public void SendScreen(byte[] buffer, bool self = true) { try { foreach (Interfaces.IMapObject obj in Screen.Objects) { if (obj == null) continue; if (obj.UID != Entity.UID) { if (obj.MapObjType == Game.MapObjectType.Entity) { GameState client = obj.Owner as GameState; if (WatchingGroup != null && client.WatchingGroup == null) continue; client.Send(buffer); } } } if (self) Send(buffer); } catch (Exception e) { Program.SaveException(e); } } public void SendScreen(Interfaces.IPacket buffer, bool self = true) { foreach (Interfaces.IMapObject obj in Screen.Objects) { if (obj == null) continue; if (obj.MapObjType == Game.MapObjectType.Entity) { GameState client = obj.Owner as GameState; if (client.Entity.UID != Entity.UID) client.Send(buffer); } } if (self) Send(buffer); } public void Disconnect(bool save = true) { if (Fake) return; if (Screen != null) Screen.DisposeTimers(); PacketHandler.RemoveTPA(this); Program.World.Unregister(this); if (OnDisconnect != null) OnDisconnect(this); if (_socket.Connector != null) { if (Entity != null) { CheckPokerDisconnect(); } _socket.Disconnect(); ShutDown(); } /* if (_socket.Connector != null) { if (Entity != null) { if (Entity.MyPokerTable != null) { if (Entity.MyPokerTable.Entitys.ContainsKey(Entity.UID) && Entity.MyPokerTable.Pot > 1) { byte[] P = new byte[10]; P[6] = 4; P[9] = 200; Entity.MyPokerTable.NewEntityMove(P, Entity.UID); } else Entity.MyPokerTable.RemoveEntity(Entity.UID); } } _socket.Disconnect(); ShutDown(); }*/ } private void ShutDown() { if (Socket.Connector == null) return; Socket.Connector = null; if (this.Entity != null) { try { if (this.Entity.JustCreated) return; Time32 now = Time32.Now; Kernel.DisconnectPool.Add(this.Entity.UID, this); RemoveScreenSpawn(this.Entity, false); Database.EntityTable.UpdateOnlineStatus(this, false); Database.EntityTable.SaveEntity(this); if (!TransferedEntity) Database.EntityVariableTable.Save(this); Database.SkillTable.SaveProficiencies(this); if (!TransferedEntity) { Database.ArenaTable.SaveArenaStatistics(this.ArenaStatistic); Database.TeamArenaTable.SaveArenaStatistics(this.TeamArenaStatistic); } Kernel.GamePool.Remove(this.Entity.UID); if (Booth != null) Booth.Remove(); if (Entity.MyClones.Count > 0) { foreach (var item in Entity.MyClones.Values) { Data data = new Data(true); data.UID = item.UID; data.ID = Network.GamePackets.Data.RemoveEntity; item.MonsterInfo.SendScreen(data); } Entity.MyClones.Clear(); } if (Quests != null) Quests.Save(); if (Pet != null) Pet.ClearAll(); if (QualifierGroup != null) QualifierGroup.End(this); if (TeamQualifierGroup != null) TeamQualifierGroup.CheckEnd(this, true); if (Entity.CLanArenaBattleFight != null) Entity.CLanArenaBattleFight.CheakToEnd(this, true); if (Entity.GuildArenaBattleFight != null) Entity.GuildArenaBattleFight.CheakToEnd(this, true); if (Challenge != null) Challenge.End(this); Game.Arena.Clear(this); Game.TeamArena.Clear(this); RemoveScreenSpawn(this.Entity, false); #region Friend/TradePartner/Apprentice Message msg = new Message("Your friend, " + Entity.Name + ", has logged off.", System.Drawing.Color.Red, Message.TopLeft); if (Friends == null) Friends = new SafeDictionary<uint, Game.ConquerStructures.Society.Friend>(100); foreach (Game.ConquerStructures.Society.Friend friend in Friends.Values) { if (friend.IsOnline) { var packet = new Network.GamePackets.KnownPersons(true) { UID = Entity.UID, Type = Network.GamePackets.KnownPersons.RemovePerson, Name = Entity.Name, Online = false }; friend.Client.Send(packet); packet.Type = Network.GamePackets.KnownPersons.AddFriend; if (friend != null) { if (friend.Client != null) { friend.Client.Send(packet); friend.Client.Send(msg); } } } } Message msg2 = new Message("Your partner, " + Entity.Name + ", has logged off.", System.Drawing.Color.Red, Message.TopLeft); if (Partners != null) { foreach (Game.ConquerStructures.Society.TradePartner partner in Partners.Values) { if (partner.IsOnline) { var packet = new TradePartner(true) { UID = Entity.UID, Type = TradePartner.BreakPartnership, Name = Entity.Name, HoursLeft = (int)(new TimeSpan(partner.ProbationStartedOn.AddDays(3).Ticks).TotalHours - new TimeSpan(DateTime.Now.Ticks).TotalHours), Online = false }; partner.Client.Send(packet); packet.Type = TradePartner.AddPartner; if (partner != null) { if (partner.Client != null) { partner.Client.Send(packet); partner.Client.Send(msg2); } } } } } MentorInformation Information = new MentorInformation(true); Information.Mentor_Type = 1; Information.Mentor_ID = Entity.UID; Information.Mentor_Level = Entity.Level; Information.Mentor_Class = Entity.Class; Information.Mentor_PkPoints = Entity.PKPoints; Information.Mentor_Mesh = Entity.Mesh; Information.Mentor_Online = false; Information.String_Count = 3; Information.Mentor_Name = Entity.Name; Information.Mentor_Spouse_Name = Entity.Spouse; if (Apprentices == null) Apprentices = new SafeDictionary<uint, Game.ConquerStructures.Society.Apprentice>(); foreach (var appr in Apprentices.Values) { if (appr.IsOnline) { Information.Apprentice_ID = appr.ID; Information.Enrole_Date = appr.EnroleDate; Information.Apprentice_Name = appr.Name; appr.Client.Send(Information); appr.Client.ReviewMentor(); } } if (Mentor != null) { if (Mentor.IsOnline) { ApprenticeInformation AppInfo = new ApprenticeInformation(); AppInfo.Apprentice_ID = Entity.UID; AppInfo.Apprentice_Level = Entity.Level; AppInfo.Apprentice_Name = Entity.Name; AppInfo.Apprentice_Online = false; AppInfo.Apprentice_Spouse_Name = Entity.Spouse; AppInfo.Enrole_date = Mentor.EnroleDate; AppInfo.Mentor_ID = Mentor.Client.Entity.UID; AppInfo.Mentor_Mesh = Mentor.Client.Entity.Mesh; AppInfo.Mentor_Name = Mentor.Client.Entity.Name; AppInfo.Type = 2; Mentor.Client.Send(AppInfo); } } #endregion #region Team /* if (Team != null) { if (Team.TeamLeader) { Network.GamePackets.Team team = new Network.GamePackets.Team(); team.UID = Account.EntityID; team.Type = Network.GamePackets.Team.Dismiss; foreach (Client.GameState Teammate in Team.Teammates) { if (Teammate != null) { if (Teammate.Entity.UID != Account.EntityID) { Teammate.Send(team); Teammate.Team = null; } } } } else { Network.GamePackets.Team team = new Network.GamePackets.Team(); team.UID = Account.EntityID; team.Type = Network.GamePackets.Team.ExitTeam; foreach (Client.GameState Teammate in Team.Teammates) { if (Teammate != null) { if (Teammate.Entity.UID != Account.EntityID) { Teammate.Send(team); Teammate.Team.Remove(this); } } } } }*/ #endregion if (Team != null) { Team.Remove(this, true); } } catch (Exception e) { Program.SaveException(e); } finally { Kernel.DisconnectPool.Remove(this.Entity.UID); Console.WriteLine("Name==>" + this.Entity.Name + "*Has Login [Off]*", ConsoleColor.Blue); } } } public ClientWrapper Socket { get { return _socket; } } public string IP { get { return _socket.IP; } } #endregion #region Game #region UnionStructure public byte UnionType { set { Entity.SpawnPacket[Entity._UnionType ] = value; SendScreen(Entity.SpawnPacket, false); } } public Mohamed_Hossam_Barakat.Network.GamePackets.Union.UnionClass Union; public uint UnionTitle { get { if (Union != null) { if (Union.IsKingdom()) { return (uint)(Offical + Harem + Guards); } } return 0; } } uint _UnionID; public uint UnionID { get { return _UnionID; } set { _UnionID = value; Entity.SpawnPacket[Entity._UnionID] = (byte)_UnionID; Entity.UpdateDatabase2("UnionID", _UnionID); SendScreen(Entity.SpawnPacket, false); } } byte _UnionRank; public byte UnionRank { get { return _UnionRank; } set { _UnionRank = value; Entity.SpawnPacket[Entity._UnionRank] = value; SendScreen(Entity.SpawnPacket, false); } } uint _UnionExploits = 0; public uint UnionExploits { get { return _UnionExploits; } set { _UnionExploits = value; Entity.UpdateDatabase2("UnionExploits", _UnionExploits); byte i = 0; if (_UnionExploits >= 200) i += 1; if (_UnionExploits >= 500) i += 1; if (_UnionExploits >= 1000) i += 1; if (_UnionExploits >= 1500) i += 1; if (_UnionExploits >= 2100) i += 1; if (_UnionExploits >= 2800) i += 1; if (_UnionExploits >= 3700) i += 1; if (_UnionExploits >= 4700) i += 1; if (_UnionExploits >= 6000) i += 1; if (_UnionExploits >= 7500) i += 1; if (_UnionExploits >= 10000) i += 1; if (_UnionExploits >= 15000) i += 1; if (_UnionExploits >= 23000) i += 1; Entity.SpawnPacket[Entity._UnionExploits] = i; if (Entity.EntityFlag == EntityFlag.Entity) { Entity.Update((byte)Update.DataType.MilitaryRank, i, true); Entity.Update((byte)Update.DataType.MilitaryExploits, _UnionExploits, true); } } } public static GameState GetClientFromID(uint id) { foreach (var client in Kernel.GamePool.Values) { if (client.Entity.UID == id) { return client; } } return null; } public static GameState GetClientFromName(string name) { foreach (var clientq in Kernel.GamePool.Values) { if (clientq.Entity.Name == name) { return clientq; } } return null; } ushort _Offical; public ushort Offical { get { return _Offical; } set { _Offical = value; Entity.Ushort((ushort)(Offical + Harem + Guards), 278 + 4 + 4, Entity.SpawnPacket); if (Entity.EntityFlag == EntityFlag.Entity) { Entity.Update((byte)Update.DataType.UnionRank, (ushort)(Offical + Harem + Guards), true); } SendScreen(Entity.SpawnPacket, false); Entity.UpdateDatabase2("Offical", value); } } ushort _Harem; public ushort Harem { get { return _Harem; } set { _Harem = value; Entity.Ushort((ushort)(Offical + Harem + Guards), 278 + 4 + 4, Entity.SpawnPacket); if (Entity.EntityFlag == EntityFlag.Entity) { Entity.Update((byte)Update.DataType.UnionRank, (ushort)(Offical + Harem + Guards), true); } SendScreen(Entity.SpawnPacket, false); Entity.UpdateDatabase2("Harem", value); } } ushort _Guards; public ushort Guards { get { return _Guards; } set { _Guards = value; Entity.Ushort((ushort)(Offical + Harem + Guards), 278 + 4 + 4, Entity.SpawnPacket); if (Entity.EntityFlag == EntityFlag.Entity) { Entity.Update((byte)Update.DataType.UnionRank, (ushort)(Offical + Harem + Guards), true); } SendScreen(Entity.SpawnPacket, false); Entity.UpdateDatabase2("Guards", value); } } #endregion public Database.ChiTable.ChiData ChiData; public List<ChiPowerStructure> ChiPowers; public ChiPowerStructure[] Retretead_ChiPowers; public uint ChiPoints = 0; //public List<JiangPowerStructure> JiangPowers; //public JiangHuStatus JiangHuStatus; //public JiangHu JiangHu; public SafeDictionary<uint, DetainedItem> ClaimableItem = new SafeDictionary<uint, DetainedItem>(1000), DeatinedItem = new SafeDictionary<uint, DetainedItem>(1000); public bool DoSetOffline = true; public ushort OnlineTrainingPoints = 0; public Time32 LastTrainingPointsUp, LastTreasurePoints = Time32.Now.AddMinutes(1); public List<string> GuildNamesSpawned = new List<string>(); public byte KylinUpgradeCount = 0; public ulong OblivionExperience = 0; public byte OblivionKills = 0; public int PremShopType = 0; public DateTime VIPDate; public DateTime LastVote; public uint VIPDays; public uint DonationPoints; // public uint VotePoints; #region Colo public static uint ScreenColor = 0; #region Night Color public void Night() { ScreenColor = 5855577; Network.GamePackets.ScreenColor Packet = new Network.GamePackets.ScreenColor(true); Packet.UID = this.Entity.UID; Packet.ID = 104; Packet.dwParam = ScreenColor; foreach (GameState pclient in Kernel.GamePool.Values) { pclient.Send(Packet); } } public void Night1() { ScreenColor = 3358767; Network.GamePackets.ScreenColor Packet = new Network.GamePackets.ScreenColor(true); Packet.UID = this.Entity.UID; Packet.ID = 104; Packet.dwParam = ScreenColor; foreach (GameState pclient in Kernel.GamePool.Values) { pclient.Send(Packet); } } public void Night2() { ScreenColor = 97358; Network.GamePackets.ScreenColor Packet = new Network.GamePackets.ScreenColor(true); Packet.UID = this.Entity.UID; Packet.ID = 104; Packet.dwParam = ScreenColor; foreach (GameState pclient in Kernel.GamePool.Values) { pclient.Send(Packet); } } #endregion #region Blue Color public void Blue() { ScreenColor = 69852; Network.GamePackets.ScreenColor Packet = new Network.GamePackets.ScreenColor(true); Packet.UID = this.Entity.UID; Packet.ID = 104; Packet.dwParam = ScreenColor; foreach (GameState pclient in Kernel.GamePool.Values) { pclient.Send(Packet); } } public void Blue1() { ScreenColor = 4532453; Network.GamePackets.ScreenColor Packet = new Network.GamePackets.ScreenColor(true); Packet.UID = this.Entity.UID; Packet.ID = 104; Packet.dwParam = ScreenColor; foreach (GameState pclient in Kernel.GamePool.Values) { pclient.Send(Packet); } } public void Blue2() { ScreenColor = 684533; Network.GamePackets.ScreenColor Packet = new Network.GamePackets.ScreenColor(true); Packet.UID = this.Entity.UID; Packet.ID = 104; Packet.dwParam = ScreenColor; foreach (GameState pclient in Kernel.GamePool.Values) { pclient.Send(Packet); } } #endregion #region Green Color public void Green() { ScreenColor = 838915; Network.GamePackets.ScreenColor Packet = new Network.GamePackets.ScreenColor(true); Packet.UID = this.Entity.UID; Packet.ID = 104; Packet.dwParam = ScreenColor; foreach (GameState pclient in Kernel.GamePool.Values) { pclient.Send(Packet); } } public void Green1() { ScreenColor = 824383; Network.GamePackets.ScreenColor Packet = new Network.GamePackets.ScreenColor(true); Packet.UID = this.Entity.UID; Packet.ID = 104; Packet.dwParam = ScreenColor; foreach (GameState pclient in Kernel.GamePool.Values) { pclient.Send(Packet); } } public void Green2() { ScreenColor = 456828; Network.GamePackets.ScreenColor Packet = new Network.GamePackets.ScreenColor(true); Packet.UID = this.Entity.UID; Packet.ID = 104; Packet.dwParam = ScreenColor; foreach (GameState pclient in Kernel.GamePool.Values) { pclient.Send(Packet); } } public void Green3() { ScreenColor = 5547633; Network.GamePackets.ScreenColor Packet = new Network.GamePackets.ScreenColor(true); Packet.UID = this.Entity.UID; Packet.ID = 104; Packet.dwParam = ScreenColor; foreach (GameState pclient in Kernel.GamePool.Values) { pclient.Send(Packet); } } public void Green4() { ScreenColor = 453450; Network.GamePackets.ScreenColor Packet = new Network.GamePackets.ScreenColor(true); Packet.UID = this.Entity.UID; Packet.ID = 104; Packet.dwParam = ScreenColor; foreach (GameState pclient in Kernel.GamePool.Values) { pclient.Send(Packet); } } #endregion #region Day Color public void Day() { ScreenColor = 0; Network.GamePackets.ScreenColor Packet = new Network.GamePackets.ScreenColor(true); Packet.UID = this.Entity.UID; Packet.ID = 104; Packet.dwParam = ScreenColor; foreach (GameState pclient in Kernel.GamePool.Values) { pclient.Send(Packet); } } #endregion #endregion public Time32 ScreenReloadTime; public int MillisecondsScreenReload; public bool Reloaded = false; public Interfaces.IPacket ReloadWith; public ushort VendingDisguise; private uint _BlessTime; public uint BlessTime { get { return _BlessTime; } set { _BlessTime = value; if (Entity != null) { this["BlessTime"] = value; } } } public DateTime BlessStamp { get { return this["BlessStamp"]; } set { this["BlessStamp"] = value; } } public DateTime DoubleExperienceStamp { get { return this["DoubleExperienceStamp"]; } set { this["DoubleExperienceStamp"] = value; } } public int speedHackSuspiction = 0; public Time32 LastPingT; public uint LastPingStamp = 0; // public Game.Entity Companion; public List<GameState> Prayers; public GameState PrayLead; public DateTime ChatBanTime; public Game.Entity Companion; public uint ChatBanLasts; public bool ChatBanned; public uint BackupArmorLook { get { return this["bkparmorlook"]; } set { this["bkparmorlook"] = value; } } public uint ArmorLook { get { return this["armorlook"]; } set { this["armorlook"] = value; } } public uint WeaponLook { get { return this["weaponlook"]; } set { this["weaponlook"] = value; } } public uint WeaponLook2 { get { return this["weaponlook2"]; } set { this["weaponlook2"] = value; } } public uint HeadgearLook { get { return this["headgearlook"]; } set { this["headgearlook"] = value; } } public bool ValidArmorLook(uint id) { if (id == 0) return false; var soulInfo = Database.AddingInformationTable.SoulGearItems[id]; if (id >= 800000 && id < 900000) { if (soulInfo.ItemIdentifier < 100) if (soulInfo.ItemIdentifier != ConquerItem.Armor) return false; else { } else if (Network.PacketHandler.ItemPosition((uint)(soulInfo.ItemIdentifier * 1000)) != ConquerItem.Armor) return false; } else if (Network.PacketHandler.ItemPosition(id) != ConquerItem.Armor) return false; return true; } public bool ValidHeadgearLook(uint id) { if (id == 0) return false; var soulInfo = Database.AddingInformationTable.SoulGearItems[id]; if (id >= 800000 && id < 900000) { if (soulInfo.ItemIdentifier < 100) if (soulInfo.ItemIdentifier != ConquerItem.Head) return false; else { } else if (Network.PacketHandler.ItemPosition((uint)(soulInfo.ItemIdentifier * 1000)) != ConquerItem.Head) return false; } else if (Network.PacketHandler.ItemPosition(id) != ConquerItem.Head) return false; return true; } public bool ValidWeaponLook(uint id) { if (id == 0) return false; if (Network.PacketHandler.ItemPosition(id) != ConquerItem.RightWeapon) return false; return true; } public bool ValidWeaponLook2(uint id) { if (id == 0) return false; if (Network.PacketHandler.ItemPosition(id) != ConquerItem.RightWeapon) { if (Network.PacketHandler.ItemPosition(id) != ConquerItem.LeftWeapon) return false; } else { if (Network.PacketHandler.IsTwoHand(id)) return false; } return true; } public ConquerItemBaseInformation CheckLook(string name, ushort pos, out int minDist) { minDist = int.MaxValue; Database.ConquerItemBaseInformation CIBI = null; Game.Enums.ItemQuality Quality = Game.Enums.ItemQuality.Fixed; var itemx = Equipment.TryGetItem((byte)pos); if (itemx != null) Quality = (Enums.ItemQuality)(itemx.ID % 10); foreach (var item in Database.ConquerItemInformation.BaseInformations.Values) { if (pos == ConquerItem.Armor) { if (ValidArmorLook(item.ID)) { int dist = name.LevenshteinDistance(item.LowerName); if (minDist > dist && Quality == (Game.Enums.ItemQuality)(item.ID % 10)) { CIBI = item; minDist = dist; } } } else if (pos == ConquerItem.Head) { if (ValidHeadgearLook(item.ID)) { int dist = name.LevenshteinDistance(item.LowerName); if (minDist > dist && Quality == (Game.Enums.ItemQuality)(item.ID % 10)) { CIBI = item; minDist = dist; } } } else if (pos == ConquerItem.LeftWeapon) { if (ValidWeaponLook2(item.ID)) { int dist = name.LevenshteinDistance(item.LowerName); if (minDist > dist && !PacketHandler.IsTwoHand(item.ID) && Quality == (Game.Enums.ItemQuality)(item.ID % 10)) { CIBI = item; minDist = dist; } } } else if (pos == ConquerItem.RightWeapon) { if (ValidWeaponLook(item.ID)) { //if (PacketHandler.IsTwoHand(itemx.ID)) //{ // int dist = name.LevenshteinDistance(item.LowerName); // if (minDist > dist && PacketHandler.IsTwoHand(item.ID) && Quality == (Game.Enums.ItemQuality)(item.ID % 10)) // { // CIBI = item; // minDist = dist; // } //} //else { int dist = name.LevenshteinDistance(item.LowerName); if (minDist > dist && !PacketHandler.IsTwoHand(item.ID) && Quality == (Game.Enums.ItemQuality)(item.ID % 10)) { CIBI = item; minDist = dist; } } } } } return CIBI; } public void SetNewArmorLook(uint id, bool change = true) { if (change) ArmorLook = id; if (!ValidArmorLook(id)) return; int min = 0; id = CheckLook(Database.ConquerItemInformation.BaseInformations[id].LowerName, ConquerItem.Armor, out min).ID; var item = Equipment.TryGetItem(ConquerItem.Armor); var iu = new Network.GamePackets.ItemUsage(true); iu.UID = uint.MaxValue - 1; iu.dwParam = 13; iu.ID = Network.GamePackets.ItemUsage.UnequipItem; Send(iu); iu = new Network.GamePackets.ItemUsage(true); iu.UID = uint.MaxValue - 1; iu.ID = Network.GamePackets.ItemUsage.RemoveInventory; Send(iu); ConquerItem fakeItem = new Network.GamePackets.ConquerItem(true); fakeItem.ID = id; if (item != null) { fakeItem.Bless = item.Bless; fakeItem.Bound = item.Bound; fakeItem.Color = item.Color; fakeItem.Effect = item.Effect; fakeItem.Enchant = item.Enchant; fakeItem.Plus = item.Plus; fakeItem.SocketOne = item.SocketOne; fakeItem.SocketTwo = item.SocketTwo; } fakeItem.Durability = 1; fakeItem.MaximDurability = 1; fakeItem.Color = Game.Enums.Color.Black; fakeItem.UID = uint.MaxValue - 1; fakeItem.Position = 13; Send(fakeItem); fakeItem.Mode = Enums.ItemMode.Update; Send(fakeItem); ClientEquip eqs = new ClientEquip(); eqs.DoEquips(this); Send(eqs); Equipment.UpdateEntityPacket(); } public void SetNewHeadgearLook(uint id, bool change = true) { if (change) HeadgearLook = id; if (!ValidHeadgearLook(id)) return; int min = 0; id = CheckLook(Database.ConquerItemInformation.BaseInformations[id].LowerName, ConquerItem.Head, out min).ID; var item = Equipment.TryGetItem(ConquerItem.Head); var iu = new Network.GamePackets.ItemUsage(true); iu.UID = uint.MaxValue - 2; iu.dwParam = 14; iu.ID = Network.GamePackets.ItemUsage.UnequipItem; Send(iu); iu = new Network.GamePackets.ItemUsage(true); iu.UID = uint.MaxValue - 2; iu.ID = Network.GamePackets.ItemUsage.RemoveInventory; Send(iu); ConquerItem fakeItem = new Network.GamePackets.ConquerItem(true); fakeItem.ID = id; if (item != null) { fakeItem.Bless = item.Bless; fakeItem.Bound = item.Bound; fakeItem.Color = item.Color; fakeItem.Effect = item.Effect; fakeItem.Enchant = item.Enchant; fakeItem.Plus = item.Plus; fakeItem.SocketOne = item.SocketOne; fakeItem.SocketTwo = item.SocketTwo; } fakeItem.Durability = 1; fakeItem.MaximDurability = 1; fakeItem.Color = Game.Enums.Color.Black; fakeItem.UID = uint.MaxValue - 2; fakeItem.Position = 14; Send(fakeItem); fakeItem.Mode = Enums.ItemMode.Update; Send(fakeItem); ClientEquip eqs = new ClientEquip(); eqs.DoEquips(this); Send(eqs); Equipment.UpdateEntityPacket(); } public void SetNewWeaponLook(uint id, bool change = true) { if (change) WeaponLook = id; if (!ValidWeaponLook(id)) return; int min = 0; var item = Equipment.TryGetItem(ConquerItem.RightWeapon); var iu = new Network.GamePackets.ItemUsage(true); iu.UID = uint.MaxValue - 3; iu.dwParam = ConquerItem.RightWeaponAccessory; iu.ID = Network.GamePackets.ItemUsage.UnequipItem; Send(iu); iu = new Network.GamePackets.ItemUsage(true); iu.UID = uint.MaxValue - 3; iu.ID = Network.GamePackets.ItemUsage.RemoveInventory; Send(iu); id = CheckLook(Database.ConquerItemInformation.BaseInformations[id].LowerName, ConquerItem.RightWeapon, out min).ID; ConquerItem fakeItem = new Network.GamePackets.ConquerItem(true); fakeItem.ID = id; if (item != null) { fakeItem.Bless = item.Bless; fakeItem.Bound = item.Bound; fakeItem.Color = item.Color; fakeItem.Effect = item.Effect; fakeItem.Enchant = item.Enchant; fakeItem.Plus = item.Plus; fakeItem.SocketOne = item.SocketOne; fakeItem.SocketTwo = item.SocketTwo; fakeItem.Lock = 1; } fakeItem.Durability = 1; fakeItem.MaximDurability = 1; fakeItem.UID = uint.MaxValue - 3; fakeItem.Position = ConquerItem.RightWeaponAccessory; Send(fakeItem); fakeItem.Mode = Enums.ItemMode.Update; Send(fakeItem); ClientEquip eqs = new ClientEquip(); eqs.DoEquips(this); Send(eqs); Equipment.UpdateEntityPacket(); } public void SetNewWeaponLook2(uint id, bool change = true) { if (change) WeaponLook2 = id; if (!ValidWeaponLook2(id)) return; int min = 0; var item = Equipment.TryGetItem(ConquerItem.LeftWeapon); var iu = new Network.GamePackets.ItemUsage(true); iu.UID = uint.MaxValue - 4; iu.dwParam = ConquerItem.LeftWeaponAccessory; iu.ID = Network.GamePackets.ItemUsage.UnequipItem; Send(iu); iu = new Network.GamePackets.ItemUsage(true); iu.UID = uint.MaxValue - 4; iu.ID = Network.GamePackets.ItemUsage.RemoveInventory; Send(iu); id = CheckLook(Database.ConquerItemInformation.BaseInformations[id].LowerName, ConquerItem.LeftWeapon, out min).ID; ConquerItem fakeItem = new Network.GamePackets.ConquerItem(true); fakeItem.ID = id; if (item != null) { fakeItem.Bless = item.Bless; fakeItem.Bound = item.Bound; fakeItem.Color = item.Color; fakeItem.Effect = item.Effect; fakeItem.Enchant = item.Enchant; fakeItem.Plus = item.Plus; fakeItem.SocketOne = item.SocketOne; fakeItem.SocketTwo = item.SocketTwo; fakeItem.Lock = 1; } fakeItem.Durability = 1; fakeItem.MaximDurability = 1; fakeItem.UID = uint.MaxValue - 4; fakeItem.Position = ConquerItem.LeftWeaponAccessory; Send(fakeItem); fakeItem.Mode = Enums.ItemMode.Update; Send(fakeItem); ClientEquip eqs = new ClientEquip(); eqs.DoEquips(this); Send(eqs); Equipment.UpdateEntityPacket(); } public byte JewelarLauKind, JewelarLauGems; public uint VirtuePoints; public uint TQPoint; public DateTime LastLotteryEntry; public byte LotteryEntries; public bool InLottery; public DateTime OfflineTGEnterTime; public bool Mining = false; public Time32 MiningStamp; public ushort Vigor { get { if (Equipment != null) if (!Equipment.Free(12)) return Equipment.TryGetItem((byte)12).Vigor; return 65535; } set { if (!Equipment.Free(12)) Equipment.TryGetItem((byte)12).Vigor = value; } } ushort _Maxvigor; public ushort MaxVigor { get { return _Maxvigor; } set { _Maxvigor = value; } } public bool HeadgearClaim, NecklaceClaim, ArmorClaim, WeaponClaim, RingClaim, BootsClaim, TowerClaim, FanClaim; public string PromoteItemNameNeed { get { if (Entity.Class % 10 == 0) return " nothing but"; if (Entity.Class % 10 == 1) // if (Entity.Class / 10 == 4) // return " five Euxenite Ores and"; // else return " nothing but"; if (Entity.Class % 10 == 2) return " one Emerald and"; if (Entity.Class % 10 == 3) return " one Meteor and"; if (Entity.Class % 10 == 4) return " one MoonBox and"; return " nothing but"; } } public byte PromoteItemCountNeed { get { if (Entity.Class % 10 == 0) return 0; if (Entity.Class % 10 == 1) // if (Entity.Class / 10 == 4) // return 5; // else return 0; if (Entity.Class % 10 == 2) return 1; if (Entity.Class % 10 == 3) return 1; if (Entity.Class % 10 == 4) return 1; return 0; } } public uint PromoteItemNeed { get { if (Entity.Class % 10 == 0) return 0; if (Entity.Class % 10 == 1) // if (Entity.Class / 10 == 4) // return 1072031; // else return 0; if (Entity.Class % 10 == 2) return 1080001; if (Entity.Class % 10 == 3) return 1088001; if (Entity.Class % 10 == 4) return 721020; return 0; } } public uint PromoteItemGain { get { if (Entity.Class % 10 == 0) return 0; if (Entity.Class % 10 == 1) // if (Entity.Class / 10 == 4) // return 500067; // else return 0; if (Entity.Class % 10 == 2) return 0; if (Entity.Class % 10 == 3) return 700031; if (Entity.Class % 10 == 4) return 1088000; return 0; } } public uint PromoteLevelNeed { get { if (Entity.Class % 10 == 0) return 15; if (Entity.Class % 10 == 1) return 40; if (Entity.Class % 10 == 2) return 70; if (Entity.Class % 10 == 3) return 100; if (Entity.Class % 10 == 4) return 110; return 0; } } public byte SelectedItem, UpdateType; public ushort UplevelProficiency; public UInt32 GuildJoinTarget = 0; public uint OnHoldGuildJoin = 0; public uint elitepoints = 0; public bool Effect = false; public bool Effect1 = false; public bool Effect10 = false; public bool Effect8 = false; public bool Effect9 = false; public bool Effect11 = false; public bool Effect4 = false; public bool Effect3 = false; public uint eliterank = 0; public bool SentRequest = false; public Game.ConquerStructures.Society.Guild Guild; public Game.ConquerStructures.Society.Guild.Member AsMember; public uint Arsenal_Donation = 0; public Game.ConquerStructures.Booth Booth; #region Eilte Pk 8 public ushort EliteBody() { ushort num2 = 0; uint num = (uint)Kernel.Random.Next(1, 4); switch (num) { case 1: { num2 = 1003; break; } case 2: { num2 = 1004; break; } case 3: { num2 = 2001; break; } case 4: { num2 = 2002; break; } } return num2; } public void SpawnElitePKBot(uint UID) { if (!Kernel.GamePool.ContainsKey(UID)) { ReadyToPlay(); this.Account = new Database.AccountTable(null); this.Account.EntityID = UID; { #region Load Entity this.Entity = new Game.Entity(EntityFlag.Entity, false); this.Entity.Name = "ElitePK`Bot"; this.Entity.Owner = this; this.Entity.UID = UID; this.Entity.Body = EliteBody(); this.Entity.Face = (ushort)Kernel.Random.Next(1, 50); byte Color = (byte)Kernel.Random.Next(4, 8); this.Entity.HairStyle = (ushort)(Color * 100 + 10 + (byte)Kernel.Random.Next(4, 9)); this.Entity.Level = 140; this.Entity.Class = 55; this.Entity.Reborn = 2; this.Entity.Titles = new System.Collections.Concurrent.ConcurrentDictionary<TitlePacket.Titles, DateTime>(); this.Entity.MyTitle = (TitlePacket.Titles)16; this.Entity.MapID = ElitePKTournament.WaitingAreaID; if (this.VendingDisguise == 0) this.VendingDisguise = 0xdf; this.Entity.X = 50; this.Entity.Y = 50; uint WeaponR = 601439; uint WeaponL = 601439; uint Armor = 135309; uint Head = 123309; uint Garment = 192685; this.ElitePKStats = new ElitePK.FighterStats(this.Entity.UID, this.Entity.Name, this.Entity.Mesh); if (!Game.ConquerStructures.Nobility.Board.TryGetValue(this.Entity.UID, out this.NobilityInformation)) { this.NobilityInformation = new NobilityInformation(); this.NobilityInformation.EntityUID = this.Entity.UID; this.NobilityInformation.Name = this.Entity.Name; this.NobilityInformation.Donation = 0L; this.NobilityInformation.Rank = NobilityRank.Serf; this.NobilityInformation.Position = -1; this.NobilityInformation.Gender = 1; this.NobilityInformation.Mesh = this.Entity.Mesh; if ((this.Entity.Body % 10) >= 3) { this.NobilityInformation.Gender = 0; } } else { this.Entity.NobilityRank = this.NobilityInformation.Rank; } Arena.ArenaStatistics.TryGetValue(this.Entity.UID, out this.ArenaStatistic); if ((this.ArenaStatistic == null) || (this.ArenaStatistic.EntityID == 0)) { this.ArenaStatistic = new ArenaStatistic(true); this.ArenaStatistic.EntityID = this.Entity.UID; this.ArenaStatistic.Name = this.Entity.Name; this.ArenaStatistic.Level = this.Entity.Level; this.ArenaStatistic.Class = this.Entity.Class; this.ArenaStatistic.Model = this.Entity.Mesh; this.ArenaStatistic.ArenaPoints = Database.ArenaTable.ArenaPointFill(this.Entity.Level); this.ArenaStatistic.LastArenaPointFill = DateTime.Now; Database.ArenaTable.InsertArenaStatistic(this); this.ArenaStatistic.Status = 0; Arena.ArenaStatistics.Add(this.Entity.UID, this.ArenaStatistic); } else { this.ArenaStatistic.Level = this.Entity.Level; this.ArenaStatistic.Class = this.Entity.Class; this.ArenaStatistic.Model = this.Entity.Mesh; if (DateTime.Now.DayOfYear != this.ArenaStatistic.LastArenaPointFill.DayOfYear) { this.ArenaStatistic.LastSeasonArenaPoints = this.ArenaStatistic.ArenaPoints; this.ArenaStatistic.LastSeasonWin = this.ArenaStatistic.TodayWin; this.ArenaStatistic.LastSeasonLose = this.ArenaStatistic.TodayBattles - this.ArenaStatistic.TodayWin; this.ArenaStatistic.ArenaPoints = Database.ArenaTable.ArenaPointFill(this.Entity.Level); this.ArenaStatistic.LastArenaPointFill = DateTime.Now; this.ArenaStatistic.TodayWin = 0; this.ArenaStatistic.TodayBattles = 0; Arena.Sort(); Arena.YesterdaySort(); } } TeamArena.ArenaStatistics.TryGetValue(this.Entity.UID, out this.TeamArenaStatistic); if (this.TeamArenaStatistic == null) { this.TeamArenaStatistic = new TeamArenaStatistic(true); this.TeamArenaStatistic.EntityID = this.Entity.UID; this.TeamArenaStatistic.Name = this.Entity.Name; this.TeamArenaStatistic.Level = this.Entity.Level; this.TeamArenaStatistic.Class = this.Entity.Class; this.TeamArenaStatistic.Model = this.Entity.Mesh; Database.TeamArenaTable.InsertArenaStatistic(this); this.TeamArenaStatistic.Status = 0; if (TeamArena.ArenaStatistics.ContainsKey(this.Entity.UID)) { TeamArena.ArenaStatistics.Remove(this.Entity.UID); } TeamArena.ArenaStatistics.Add(this.Entity.UID, this.TeamArenaStatistic); } else if (this.TeamArenaStatistic.EntityID == 0) { this.TeamArenaStatistic = new TeamArenaStatistic(true); this.TeamArenaStatistic.EntityID = this.Entity.UID; this.TeamArenaStatistic.Name = this.Entity.Name; this.TeamArenaStatistic.Level = this.Entity.Level; this.TeamArenaStatistic.Class = this.Entity.Class; this.TeamArenaStatistic.Model = this.Entity.Mesh; Database.TeamArenaTable.InsertArenaStatistic(this); this.TeamArenaStatistic.Status = 0; if (TeamArena.ArenaStatistics.ContainsKey(this.Entity.UID)) { TeamArena.ArenaStatistics.Remove(this.Entity.UID); } TeamArena.ArenaStatistics.Add(this.Entity.UID, this.TeamArenaStatistic); } else { this.TeamArenaStatistic.Level = this.Entity.Level; this.TeamArenaStatistic.Class = this.Entity.Class; this.TeamArenaStatistic.Model = this.Entity.Mesh; this.TeamArenaStatistic.Name = this.Entity.Name; } Database.DetainedItemTable.LoadDetainedItems(this); Database.ClaimItemTable.LoadClaimableItems(this); this.Entity.LoadTopStatus(); this.Entity.FullyLoaded = true; #endregion if (this.Entity.FullyLoaded) { VariableVault variables; Database.EntityVariableTable.Load(this.Account.EntityID, out variables); this.Variables = variables; if (this.BackupArmorLook != 0) this.SetNewArmorLook(this.BackupArmorLook); else this.SetNewArmorLook(this.ArmorLook); this.SetNewHeadgearLook(this.HeadgearLook); this.BackupArmorLook = 0; this.LoadData(true); if (this.Entity.GuildID != 0) this.Entity.GuildBattlePower = this.Guild.GetSharedBattlepower(this.Entity.GuildRank); this.ReviewMentor(); Network.PacketHandler.LoginMessages(this); #region Equip ConquerItem item7 = null; ClientEquip equip = null; if (WeaponR > 0) { Database.ConquerItemBaseInformation CIBI = Database.ConquerItemInformation.BaseInformations[WeaponR]; if (CIBI == null) return; item7 = new ConquerItem(true); item7.ID = WeaponR; item7.UID = AuthClient.nextID; AuthClient.nextID++; item7.Position = 4; item7.Durability = CIBI.Durability; item7.MaximDurability = CIBI.Durability; this.Equipment.Remove(4); if (this.Equipment.Objects[3] != null) { this.Equipment.Objects[3] = null; } this.Equipment.Add(item7); item7.Mode = Enums.ItemMode.Update; item7.Send(this); equip = new ClientEquip(); equip.DoEquips(this); this.Send(equip); this.Equipment.UpdateEntityPacket(); } if (WeaponL > 0) { Database.ConquerItemBaseInformation CIBI = Database.ConquerItemInformation.BaseInformations[WeaponL]; if (CIBI == null) return; item7 = new ConquerItem(true); item7.ID = WeaponL; item7.UID = AuthClient.nextID; AuthClient.nextID++; item7.Position = 5; item7.Durability = CIBI.Durability; item7.MaximDurability = CIBI.Durability; this.Equipment.Remove(5); if (this.Equipment.Objects[4] != null) { this.Equipment.Objects[4] = null; } this.Equipment.Add(item7); item7.Mode = Enums.ItemMode.Update; item7.Send(this); equip = new ClientEquip(); equip.DoEquips(this); this.Send(equip); this.Equipment.UpdateEntityPacket(); } if (Armor > 0) { Database.ConquerItemBaseInformation CIBI = Database.ConquerItemInformation.BaseInformations[Armor]; if (CIBI == null) return; item7 = new ConquerItem(true); item7.ID = Armor; item7.UID = AuthClient.nextID; AuthClient.nextID++; item7.Position = 3; item7.Durability = CIBI.Durability; item7.MaximDurability = CIBI.Durability; this.Equipment.Remove(3); if (this.Equipment.Objects[2] != null) { this.Equipment.Objects[2] = null; } this.Equipment.Add(item7); item7.Mode = Enums.ItemMode.Update; item7.Send(this); equip = new ClientEquip(); equip.DoEquips(this); this.Send(equip); this.Equipment.UpdateEntityPacket(); } if (Head > 0) { Database.ConquerItemBaseInformation CIBI = Database.ConquerItemInformation.BaseInformations[Head]; if (CIBI == null) return; item7 = new ConquerItem(true); item7.ID = Head; item7.UID = AuthClient.nextID; AuthClient.nextID++; item7.Position = 1; item7.Durability = CIBI.Durability; item7.MaximDurability = CIBI.Durability; this.Equipment.Remove(1); if (this.Equipment.Objects[0] != null) { this.Equipment.Objects[0] = null; } this.Equipment.Add(item7); item7.Mode = Enums.ItemMode.Update; item7.Send(this); equip = new ClientEquip(); equip.DoEquips(this); this.Send(equip); this.Equipment.UpdateEntityPacket(); } if (Garment > 0) { Database.ConquerItemBaseInformation CIBI = Database.ConquerItemInformation.BaseInformations[Garment]; if (CIBI == null) return; item7 = new ConquerItem(true); item7.ID = Garment; item7.UID = AuthClient.nextID; AuthClient.nextID++; item7.Position = 9; item7.Durability = CIBI.Durability; item7.MaximDurability = CIBI.Durability; this.Equipment.Remove(9); if (this.Equipment.Objects[8] != null) { this.Equipment.Objects[8] = null; } this.Equipment.Add(item7); item7.Mode = Enums.ItemMode.Update; item7.Send(this); equip = new ClientEquip(); equip.DoEquips(this); this.Send(equip); this.Equipment.UpdateEntityPacket(); } #endregion Equip Program.World.Register(this); Kernel.GamePool.Add(Entity.UID, this); FakeLoaded = true; LoggedIn = true; Entity.NobilityRank = NobilityInformation.Rank; this.Attackable = true; } } } } #endregion public bool RaceExcitement, RaceDecelerated, RaceGuard, RaceDizzy, RaceFrightened; public Time32 RaceExcitementStamp, GuardStamp, DizzyStamp, FrightenStamp, ChaosStamp, ExtraVigorStamp, DecelerateStamp; public uint RaceExcitementAmount, RaceExtraVigor; public GameCharacterUpdates SpeedChange; public void ApplyRacePotion(Enums.RaceItemType type, uint target) { switch (type) { case Enums.RaceItemType.FrozenTrap: { if (target != uint.MaxValue) { if (Map.Floor[Entity.X, Entity.Y, MapObjectType.StaticEntity]) { StaticEntity item = new StaticEntity((uint)(Entity.X * 1000 + Entity.Y), Entity.X, Entity.Y, (ushort)Map.ID); item.DoFrozenTrap(Entity.UID); Map.AddStaticEntity(item); Kernel.SendSpawn(item); } } else { Entity.FrozenStamp = Time32.Now; Entity.FrozenTime = 5; GameCharacterUpdates update = new GameCharacterUpdates(true); update.UID = Entity.UID; update.Add(GameCharacterUpdates.Freeze, 0, 4); SendScreen(update, true); Entity.AddFlag(Update.Flags.Freeze); } break; } case Enums.RaceItemType.RestorePotion: { Vigor += 2000; if (Vigor > MaxVigor) Vigor = MaxVigor; Send(new Vigor(true) { Amount = Vigor }); break; } case Enums.RaceItemType.ExcitementPotion: { if (RaceExcitement && RaceExcitementAmount > 50) return; if (RaceDecelerated) { RaceDecelerated = false; var upd = new GameCharacterUpdates(true); upd.UID = Entity.UID; upd.Remove(GameCharacterUpdates.Decelerated); SendScreen(upd, true); } RaceExcitementStamp = Time32.Now; RaceExcitement = true; { var upd = new GameCharacterUpdates(true); upd.UID = Entity.UID; upd.Add(GameCharacterUpdates.Accelerated, 50, 15, 25); SendScreen(upd, true); SpeedChange = upd; } RaceExcitementAmount = 50; Entity.AddFlag(Update.Flags.OrangeSparkles); break; } case Enums.RaceItemType.SuperExcitementPotion: { if (RaceDecelerated) { RaceDecelerated = false; var upd = new GameCharacterUpdates(true); upd.UID = Entity.UID; upd.Remove(GameCharacterUpdates.Decelerated); SendScreen(upd, true); } RaceExcitementAmount = 200; RaceExcitementStamp = Time32.Now; RaceExcitement = true; this.Entity.AddFlag(Update.Flags.SpeedIncreased); { var upd = new GameCharacterUpdates(true); upd.UID = Entity.UID; upd.Add(GameCharacterUpdates.Accelerated, 200, 15, 100); SendScreen(upd, true); SpeedChange = upd; } Entity.AddFlag(Update.Flags.OrangeSparkles); break; } case Enums.RaceItemType.GuardPotion: { RaceGuard = true; GuardStamp = Time32.Now; Entity.AddFlag(Update.Flags.DivineShield); DizzyStamp = DizzyStamp.AddSeconds(-100); FrightenStamp = FrightenStamp.AddSeconds(-100); var upd = new GameCharacterUpdates(true); upd.UID = Entity.UID; upd.Add(GameCharacterUpdates.DivineShield, 0, 10); SendScreen(upd, true); break; } case Enums.RaceItemType.DizzyHammer: { Entity Target; if (Screen.TryGetValue(target, out Target)) { var Owner = Target.Owner; if (Owner != null) { if (!Owner.RaceGuard && !Owner.RaceFrightened) { Owner.DizzyStamp = Time32.Now; Owner.RaceDizzy = true; Owner.Entity.AddFlag(Update.Flags.Dizzy); { var upd = new GameCharacterUpdates(true); upd.UID = Entity.UID; upd.Add(GameCharacterUpdates.Dizzy, 0, 5); Owner.SendScreen(upd, true); } } } } break; } case Enums.RaceItemType.ScreamBomb: { SendScreen(new SpellUse(true) { Attacker = Entity.UID, SpellID = 9989, SpellLevel = 0, X = Entity.X, Y = Entity.Y }.AddTarget(Entity, 0, null), true); foreach (var obj in Screen.SelectWhere<Entity>(MapObjectType.Entity, (o) => Kernel.GetDistance(o.X, o.Y, Entity.X, Entity.Y) <= 10)) { var Owner = obj.Owner; if (!Owner.RaceGuard && !Owner.RaceDizzy) { Owner.RaceFrightened = true; Owner.FrightenStamp = Time32.Now; Owner.Entity.AddFlag(Update.Flags.Frightened); { var upd = new GameCharacterUpdates(true); upd.UID = Owner.Entity.UID; upd.Add(GameCharacterUpdates.Flustered, 0, 20); Owner.SendScreen(upd, true); } } } break; } case Enums.RaceItemType.SpiritPotion: { ExtraVigorStamp = Time32.Now; RaceExtraVigor = 2000; break; } case Enums.RaceItemType.ChaosBomb: { SendScreen(new SpellUse(true) { Attacker = Entity.UID, SpellID = 9989, SpellLevel = 0, X = Entity.X, Y = Entity.Y }.AddTarget(Entity, 0, null), true); foreach (var obj in this.Screen.SelectWhere<Entity>(MapObjectType.Entity, (o) => Kernel.GetDistance(o.X, o.Y, Entity.X, Entity.Y) <= 10)) { var Owner = obj.Owner; if (!Owner.RaceGuard) { Owner.FrightenStamp = Time32.Now; Owner.DizzyStamp = Owner.DizzyStamp.AddSeconds(-1000); Owner.Entity.AddFlag(Update.Flags.Confused); { var upd = new GameCharacterUpdates(true); upd.UID = Owner.Entity.UID; upd.Add(GameCharacterUpdates.Flustered, 0, 15); Owner.SendScreen(upd, true); } } } break; } case Enums.RaceItemType.SluggishPotion: { SendScreen(new SpellUse(true) { Attacker = Entity.UID, SpellID = 9989, SpellLevel = 0, X = Entity.X, Y = Entity.Y }.AddTarget(Entity, 0, null), true); foreach (var obj in this.Screen.SelectWhere<Entity>(MapObjectType.Entity, o => Kernel.GetDistance(o.X, o.Y, Entity.X, Entity.Y) <= 10)) { var Owner = obj.Owner; if (!Owner.RaceGuard) { Owner.RaceDecelerated = true; Owner.DecelerateStamp = Time32.Now; if (Owner.RaceExcitement) { Owner.RaceExcitement = false; var upd = new GameCharacterUpdates(true); upd.UID = Owner.Entity.UID; upd.Remove(GameCharacterUpdates.Accelerated); Owner.SendScreen(upd, true); } Owner.Entity.AddFlag(Update.Flags.PurpleSparkles); { var upd = new GameCharacterUpdates(true); upd.UID = Owner.Entity.UID; unchecked { upd.Add(GameCharacterUpdates.Decelerated, 50, 10, (uint)(0 - 25)); } Owner.SendScreen(upd, true); Owner.SpeedChange = upd; } } } break; } case Enums.RaceItemType.TransformItem: { for (int i = 0; i < 5; i++) { if (Potions[i] != null) { if (Potions[i].Type != Enums.RaceItemType.TransformItem) { Send(new RacePotion(true) { Amount = 0, Location = i + 1, PotionType = Potions[i].Type }); Potions[i] = null; } } } //for (int i = 0; i < 5; i++) { int i = 0; if (Potions[i] == null) { int val = (int)Enums.RaceItemType.TransformItem; while (val == (int)Enums.RaceItemType.TransformItem) val = Kernel.Random.Next((int)Enums.RaceItemType.ChaosBomb, (int)Enums.RaceItemType.SuperExcitementPotion); Potions[i] = new UsableRacePotion(); Potions[i].Count = 1; Potions[i].Type = (Enums.RaceItemType)val; Send(new RacePotion(true) { Amount = 1, Location = i + 1, PotionType = Potions[i].Type }); } } break; } } } public void ReviewMentor() { #region NotMentor uint nowBP = 0; if (Mentor != null) { if (Mentor.IsOnline) { nowBP = Entity.BattlePowerFrom(Mentor.Client.Entity); } } if (nowBP > 200) nowBP = 0; if (nowBP < 0) nowBP = 0; if (Entity.MentorBattlePower != nowBP) { Entity.MentorBattlePower = nowBP; if (Mentor != null) { if (Mentor.IsOnline) { MentorInformation Information = new MentorInformation(true); Information.Mentor_Type = 1; Information.Mentor_ID = Mentor.Client.Entity.UID; Information.Apprentice_ID = Entity.UID; Information.Enrole_Date = Mentor.EnroleDate; Information.Mentor_Level = Mentor.Client.Entity.Level; Information.Mentor_Class = Mentor.Client.Entity.Class; Information.Mentor_PkPoints = Mentor.Client.Entity.PKPoints; Information.Mentor_Mesh = Mentor.Client.Entity.Mesh; Information.Mentor_Online = true; Information.Shared_Battle_Power = nowBP; Information.String_Count = 3; Information.Mentor_Name = Mentor.Client.Entity.Name; Information.Apprentice_Name = Entity.Name; Information.Mentor_Spouse_Name = Mentor.Client.Entity.Spouse; Send(Information); } } } #endregion #region Mentor if (Apprentices == null) Apprentices = new SafeDictionary<uint, Game.ConquerStructures.Society.Apprentice>(); foreach (var appr in Apprentices.Values) { if (appr.IsOnline) { uint nowBPs = 0; nowBPs = appr.Client.Entity.BattlePowerFrom(Entity); if (appr.Client.Entity.MentorBattlePower != nowBPs) { appr.Client.Entity.MentorBattlePower = nowBPs; MentorInformation Information = new MentorInformation(true); Information.Mentor_Type = 1; Information.Mentor_ID = Entity.UID; Information.Apprentice_ID = appr.Client.Entity.UID; Information.Enrole_Date = appr.EnroleDate; Information.Mentor_Level = Entity.Level; Information.Mentor_Class = Entity.Class; Information.Mentor_PkPoints = Entity.PKPoints; Information.Mentor_Mesh = Entity.Mesh; Information.Mentor_Online = true; Information.Shared_Battle_Power = nowBPs; Information.String_Count = 3; Information.Mentor_Name = Entity.Name; Information.Apprentice_Name = appr.Client.Entity.Name; Information.Mentor_Spouse_Name = Entity.Spouse; appr.Client.Send(Information); } } } #endregion } public void AddQuarantineKill() { quarantineKill++; UpdateQuarantineScore(); } public void AddGl() { TopGlClaim++; return; } public void AddDl() { TopDlClaim++; return; } public void AddQuarantineDeath() { quarantineDeath++; UpdateQuarantineScore(); } public void UpdateQuarantineScore() { string[] scores = new string[3]; scores[0] = "Black team: " + Mohamed_Hossam_Barakat.Game.Quarantine.BlackScore.ToString() + " wins"; scores[1] = "White team: " + Mohamed_Hossam_Barakat.Game.Quarantine.WhiteScore.ToString() + " wins"; scores[2] = "Your score: " + quarantineKill + " kills, " + quarantineDeath + " death"; for (int i = 0; i < scores.Length; i++) { Message msg = new Message(scores[i], System.Drawing.Color.Red, i == 0 ? Message.FirstRightCorner : Message.ContinueRightCorner); Send(msg); } } public void KillTerrorist() { foreach (Client.GameState Terrorist in Program.Values) { if (Terrorist.Entity.KillTheTerrorist_IsTerrorist == true && Terrorist.Entity.MapID == 1801) Mohamed_Hossam_Barakat.Kernel.SendWorldMessage(new Mohamed_Hossam_Barakat.Network.GamePackets.Message("Terrorist: " + Terrorist.Entity.Name + " ", System.Drawing.Color.Black, Mohamed_Hossam_Barakat.Network.GamePackets.Message.FirstRightCorner), Program.Values); } } public void AddBless(uint value) { Entity.HeavenBlessing += value; Entity.Update(Network.GamePackets._String.Effect, "bless", true); if (Mentor != null) { if (Mentor.IsOnline) { Mentor.Client.PrizeHeavenBlessing += (ushort)(value / 10 / 60 / 60); AsApprentice = Mentor.Client.Apprentices[Entity.UID]; } if (AsApprentice != null) { AsApprentice.Actual_HeavenBlessing += (ushort)(value / 10 / 60 / 60); AsApprentice.Total_HeavenBlessing += (ushort)(value / 10 / 60 / 60); if (Time32.Now > LastMentorSave.AddSeconds(5)) { Database.KnownPersons.SaveApprenticeInfo(AsApprentice); LastMentorSave = Time32.Now; } } } } public ulong PrizeExperience; public ushort PrizeHeavenBlessing; public ushort PrizePlusStone; public uint MentorApprenticeRequest; public uint TradePartnerRequest; public object[] OnMessageBoxEventParams; public Action<GameState> MessageOK; public Action<GameState> MessageCancel; public bool JustLoggedOn = true; public Time32 ReviveStamp = Time32.Now; public bool Attackable; public int PingCount { get; set; } public Game.ConquerStructures.NobilityInformation NobilityInformation; public Game.Entity Entity; public ConcurrentDictionary<TitlePacket.Titles, DateTime> Titles = new ConcurrentDictionary<TitlePacket.Titles, DateTime>(); public Game.Screen Screen; public Time32 LastPing = Time32.Now; //public int PingCount = 0; public Time32 LastClientJump; public static ushort NpcTestType = 0; public byte TinterItemSelect = 0; public DateTime LastDragonBallUse, LastResetTime; public byte Action = 0; public bool CheerSent = false; public Game.Arena.QualifierList.QualifierGroup WatchingGroup; public Game.Arena.QualifierList.QualifierGroup QualifierGroup; public Network.GamePackets.ArenaStatistic ArenaStatistic; public Game.TeamArena.QualifierList.QualifierGroup TeamWatchingGroup; public Game.TeamArena.QualifierList.QualifierGroup TeamQualifierGroup; public Network.GamePackets.TeamArenaStatistic TeamArenaStatistic; public uint ArenaPoints { get { return ArenaStatistic.ArenaPoints; } set { ArenaStatistic.ArenaPoints = TeamArenaStatistic.ArenaPoints = value; } } private byte xpCount; public byte XPCount { get { return xpCount; } set { xpCount = value; if (xpCount >= 100) xpCount = 100; Update update = new Update(true); update.UID = Entity.UID; update.Append(Update.XPCircle, xpCount); update.Send(this); } } public Time32 XPCountStamp = Time32.Now; public Time32 XPListStamp = Time32.Now; #region poker public Network.GamePackets.poker2090 poker2090; public Network.GamePackets.poker2091 poker2091; public Network.GamePackets.poker2092 poker2092; public Network.GamePackets.poker2093 poker2093; public Network.GamePackets.poker2094 poker2094; public Network.GamePackets.poker2095 poker2095; #endregion public Game.ConquerStructures.Trade Trade; public TradePartner TradePartners; public byte ExpBalls = 0; public uint MoneySave = 0, ActiveNpc = 0; public string WarehousePW1, TempPassword; public uint WarehousePW; public bool WarehouseOpen; public Time32 CoolStamp; public sbyte WarehouseOpenTries; public ushort InputLength; public Mohamed_Hossam_Barakat.Game.ConquerStructures.Society.Mentor Mentor; public Mohamed_Hossam_Barakat.Game.ConquerStructures.Society.Apprentice AsApprentice; public SafeDictionary<ushort, Interfaces.ISkill> RemoveSpells = new SafeDictionary<ushort, Interfaces.ISkill>(); public SafeDictionary<ushort, Interfaces.IProf> Proficiencies; public SafeDictionary<ushort, Interfaces.ISkill> Spells; public SafeDictionary<uint, Mohamed_Hossam_Barakat.Game.ConquerStructures.Society.Friend> Friends; public SafeDictionary<uint, Mohamed_Hossam_Barakat.Game.ConquerStructures.Society.Enemy> Enemy; public SafeDictionary<uint, Mohamed_Hossam_Barakat.Game.ConquerStructures.Society.TradePartner> Partners; public SafeDictionary<uint, Mohamed_Hossam_Barakat.Game.ConquerStructures.Society.Apprentice> Apprentices; public Game.ConquerStructures.Inventory Inventory; public Game.ConquerStructures.Equipment Equipment; public SafeDictionary<Game.ConquerStructures.Warehouse.WarehouseID, Game.ConquerStructures.Warehouse> Warehouses; public Game.ConquerStructures.Team Team; public Time32 lastClientJumpTime = Time32.Now; public Time32 lastJumpTime = Time32.Now; public int LastJumpTime = 0; public short lastJumpDistance = 0; public bool DoubleExpToday = false; private Game.Map map; public Game.Map Map { get { if (map == null) { if (Entity == null) return null; Kernel.Maps.TryGetValue(Entity.MapID, out map); // if (Entity.MapID >= 11000 && map == null) // Entity.MapID = 1005; if (map == null) return (map = new Game.Map(Entity.MapID, Database.MapsTable.MapInformations[Entity.MapID].BaseID, Database.DMaps.MapPaths[Database.MapsTable.MapInformations[Entity.MapID].BaseID])); } else { if (map.ID != Entity.MapID) { Kernel.Maps.TryGetValue(Entity.MapID, out map); // if (Entity.MapID >= 11000 && map == null) // Entity.MapID = 1005; if (map == null) return (map = new Game.Map(Entity.MapID, Database.MapsTable.MapInformations[Entity.MapID].BaseID, Database.DMaps.MapPaths[Database.MapsTable.MapInformations[Entity.MapID].BaseID])); } } return map; } } public uint ExpBall { get { ulong exp = Database.DataHolder.LevelExperience(Entity.Level); return (uint)(exp * 13000 / (ulong)((Entity.Level * Entity.Level * Entity.Level / 12) + 1)); } } public bool AddProficiency(IProf proficiency) { if (Proficiencies.ContainsKey(proficiency.ID)) { Proficiencies[proficiency.ID].Level = proficiency.Level; Proficiencies[proficiency.ID].Experience = proficiency.Experience; proficiency.Send(this); return false; } Proficiencies.Add(proficiency.ID, proficiency); proficiency.Send(this); return true; } public bool AddSpell(Interfaces.ISkill spell) { if (Spells.ContainsKey(spell.ID)) { if (Spells[spell.ID].Level < spell.Level) { Spells[spell.ID].Level = spell.Level; Spells[spell.ID].Experience = spell.Experience; if (spell.ID != 3060) { spell.Send(this); } } return false; } else { if (spell.ID == 1045 || spell.ID == 1046) { //if (Proficiencies.ContainsKey(Database.SpellTable.SpellInformations[spell.ID][spell.Level].WeaponSubtype)) //{ // if (Proficiencies[Database.SpellTable.SpellInformations[spell.ID][spell.Level].WeaponSubtype].Level < 5) // return false; //} //else // return false; } Spells.Add(spell.ID, spell); if (spell.ID != 3060) { spell.Send(this); // Database.SkillTable.SaveSpells(this, spell.ID);//Samak } Database.SkillTable.SaveSpells(this);//Samak CheckSpells(); return true; } } public bool RemoveSpell(Interfaces.ISkill spell) { if (Spells.ContainsKey(spell.ID)) { Spells.Remove(spell.ID); Network.GamePackets.Data data = new Data(true); data.UID = Entity.UID; data.dwParam = spell.ID; data.ID = 109; Send(data); Database.SkillTable.DeleteSpell(this, spell.ID); CheckSpells(); return true; } return false; } public bool WentToComplete = false; public byte SelectedGem = 0; public Time32 LastMentorSave = Time32.Now; public void IncreaseExperience(ulong experience, bool addMultiple) { if (Entity.ContainsFlag(Update.Flags.Cursed)) return; if (Entity.Dead) return; byte level = Entity.Level; ulong _experience = Entity.Experience; ulong prExperienece = experience; if (addMultiple) { if (Entity.VIPLevel > 0) experience *= Entity.VIPLevel; experience *= Constants.ExtraExperienceRate; if (Entity.HeavenBlessing > 0) experience += (uint)(experience * 20 / 100); if (Entity.Reborn >= 2) experience /= 3; if (Guild != null) { if (Guild.Level > 0) { experience += (ushort)(experience * Guild.Level / 100); } } prExperienece = experience + (ulong)(experience * ((float)Entity.BattlePower / 100)); _experience += prExperienece; } else _experience += experience; if (this.Entity.Auto == true) { this.Entity.autohuntxp += experience; } if (Entity.Level < 140) { while (_experience >= Database.DataHolder.LevelExperience(level) && level < 140) { _experience -= Database.DataHolder.LevelExperience(level); level++; if (Entity.Reborn == 1) { if (level >= 130 && Entity.FirstRebornLevel > 130 && level < Entity.FirstRebornLevel) level = Entity.FirstRebornLevel; } else if (Entity.Reborn == 2) { if (level >= 130 && Entity.SecondRebornLevel > 130 && level < Entity.SecondRebornLevel) level = Entity.SecondRebornLevel; } Database.MagicTypeOP.AnalayzeSkills(this, 0); if (Mentor != null) { if (Mentor.IsOnline) { uint exExp = (uint)(level * 2); Mentor.Client.PrizeExperience += exExp; AsApprentice = Mentor.Client.Apprentices[Entity.UID]; if (AsApprentice != null) { AsApprentice.Actual_Experience += exExp; AsApprentice.Total_Experience += exExp; } if (Mentor.Client.PrizeExperience > 50 * 606) Mentor.Client.PrizeExperience = 50 * 606; } } if (level == 70) { if (ArenaStatistic == null || ArenaStatistic.EntityID == 0) { ArenaStatistic = new Mohamed_Hossam_Barakat.Network.GamePackets.ArenaStatistic(true); ArenaStatistic.EntityID = Entity.UID; ArenaStatistic.Name = Entity.Name; ArenaStatistic.Level = Entity.Level; ArenaStatistic.Class = Entity.Class; ArenaStatistic.Model = Entity.Mesh; ArenaPoints = Database.ArenaTable.ArenaPointFill(Entity.Level); ArenaStatistic.LastArenaPointFill = DateTime.Now; Database.ArenaTable.InsertArenaStatistic(this); ArenaStatistic.Status = Network.GamePackets.ArenaStatistic.NotSignedUp; Game.Arena.ArenaStatistics.Add(Entity.UID, ArenaStatistic); } } if (Entity.Reborn == 0) { if (level <= 120) { Database.DataHolder.GetStats(Entity.Class, level, this); CalculateStatBonus(); CalculateHPBonus(); GemAlgorithm(); } else Entity.Atributes += 3; } else { Entity.Atributes += 3; } } if (Entity.Level != level) { Database.MagicTypeOP.AnalayzeSkills(this, level); if (Team != null) { if (Team.LowestLevelsUID == Entity.UID) { Team.LowestLevel = 0; Team.LowestLevelsUID = 0; Team.SearchForLowest(); } } Entity.Level = level; Entity.Hitpoints = Entity.MaxHitpoints; Entity.Mana = Entity.MaxMana; if (Entity.Level > 130) Database.EntityTable.UpdateLevel(Entity.Owner); if (Entity.Reborn == 2) Network.PacketHandler.ReincarnationHash(Entity.Owner); } if (Entity.Experience != _experience) Entity.Experience = _experience; } #region ProdectSkills //DragonFury = 12300 x3 //DragonSwing = 12200 x2 if (this.Spells.ContainsKey(12300) && !this.Entity.PureLeeLong()) { this.RemoveSpell(new Spell(true) { ID = 12300 }); } if (this.Spells.ContainsKey(12200) && !this.Entity.x2LeeLong()) { this.RemoveSpell(new Spell(true) { ID = 12200 }); } #endregion } public void IncreaseSpellExperience(uint experience, ushort id) { if (this.Spells.ContainsKey(id)) { switch (id) { case 0x50a: case 0x13a6: case 0x1b76: experience = 100; break; } experience *= Constants.ExtraSpellRate; experience += (uint)(experience * this.Entity.Gems[6]) / 100; if (this.Map.BaseID == 1039) { experience /= 40; } ISkill skill = this.Spells[id]; if (skill != null) { if (this.Entity.VIPLevel > 0) { experience *= 5; } Database.SpellInformation information = Database.SpellTable.SpellInformations[skill.ID][skill.Level]; if ((information != null) && ((information.NeedExperience != 0) && (this.Entity.Level >= information.NeedLevel))) { skill.Experience += experience; SkillTable.UpdateSpell(this, skill); bool flag = false; if (skill.Experience >= information.NeedExperience) { skill.Experience = 0; skill.Level = (byte)(skill.Level + 1); flag = true; this.Send(Constants.SpellLeveled); SkillTable.UpdateSpell(this, skill); } if (flag) { skill.Send(this); SkillTable.UpdateSpell(this, skill); } else { SkillExperience experience2 = new SkillExperience(true); experience2.AppendSpell(skill.ID, skill.Experience); experience2.Send(this); SkillTable.UpdateSpell(this, skill); } } } } } public void IncreaseProficiencyExperience(uint experience, ushort id) { if (Proficiencies.ContainsKey(id)) { Interfaces.IProf proficiency = Proficiencies[id]; experience *= Constants.ExtraProficiencyRate; experience += (uint)(experience * Entity.Gems[5] / 100); if (Entity.VIPLevel > 0) { experience *= 5; } proficiency.Experience += experience; if (proficiency.Level < 20) { bool leveled = false; while (proficiency.Experience >= Database.DataHolder.ProficiencyLevelExperience(proficiency.Level)) { proficiency.Experience -= Database.DataHolder.ProficiencyLevelExperience(proficiency.Level); proficiency.Level++; if (proficiency.Level == 20) { proficiency.Experience = 0; proficiency.Send(this); Send(Constants.ProficiencyLeveled); return; } proficiency.NeededExperience = Database.DataHolder.ProficiencyLevelExperience(proficiency.Level); leveled = true; Send(Constants.ProficiencyLeveled); } if (leveled) { proficiency.Send(this); } else { Network.GamePackets.SkillExperience update = new SkillExperience(true); update.AppendProficiency(proficiency.ID, proficiency.Experience, Database.DataHolder.ProficiencyLevelExperience(proficiency.Level)); update.Send(this); } } } else { AddProficiency(new Network.GamePackets.Proficiency(true) { ID = id }); } } public byte ExtraAtributePoints(byte level, byte mClass) { if (mClass == 135) { if (level <= 110) return 0; switch (level) { case 112: return 1; case 114: return 3; case 116: return 6; case 118: return 10; case 120: return 15; case 121: return 15; case 122: return 21; case 123: return 21; case 124: return 28; case 125: return 28; case 126: return 36; case 127: return 36; case 128: return 45; case 129: return 45; default: return 55; } } else { if (level <= 120) return 0; switch (level) { case 121: return 1; case 122: return 3; case 123: return 6; case 124: return 10; case 125: return 15; case 126: return 21; case 127: return 28; case 128: return 36; case 129: return 45; default: return 55; } } } public static ISkill LearnableSpell(ushort spellid) { ISkill spell = new Spell(true); spell.ID = spellid; return spell; } public bool Reborn(byte toClass) { #region Items if (Inventory.Count > 37) return false; switch (toClass) { case 11: case 21: case 51: case 61: case 71: { Inventory.Add(410077, Game.Enums.ItemEffect.Poison); break; } case 41: { Inventory.Add(500057, Game.Enums.ItemEffect.Shield); break; } case 132: case 142: { if (toClass == 132) Inventory.Add(421077, Game.Enums.ItemEffect.MP); else Inventory.Add(421077, Game.Enums.ItemEffect.HP); break; } } #region Low level items for (byte i = 1; i < 9; i++) { if (i != 7) { ConquerItem item = Equipment.TryGetItem(i); if (item != null && item.ID != 0) { try { //UnloadItemStats(item, false); Database.ConquerItemInformation cii = new Mohamed_Hossam_Barakat.Database.ConquerItemInformation(item.ID, item.Plus); item.ID = cii.LowestID(Network.PacketHandler.ItemMinLevel(Network.PacketHandler.ItemPosition(item.ID))); item.Mode = Mohamed_Hossam_Barakat.Game.Enums.ItemMode.Update; item.Send(this); LoadItemStats(); Database.ConquerItemTable.UpdateItemID(item, this); } catch { Console.WriteLine("Reborn item problem: " + item.ID); } } } } ConquerItem hand = Equipment.TryGetItem(5); if (hand != null) { Equipment.Remove(5); CalculateStatBonus(); CalculateHPBonus(); } hand = Equipment.TryGetItem(25); if (hand != null) { Equipment.Remove(25); CalculateStatBonus(); CalculateHPBonus(); } LoadItemStats(); SendScreen(Entity.SpawnPacket, false); #endregion #endregion Database.MagicTypeOP.Reborn(this, toClass); if (Entity.Reborn == 0) { Entity.FirstRebornClass = Entity.Class; Entity.FirstRebornLevel = Entity.Level; Entity.Atributes = (ushort)(ExtraAtributePoints(Entity.FirstRebornClass, Entity.FirstRebornLevel) + 52); } else { Entity.SecondRebornClass = Entity.Class; Entity.SecondRebornLevel = Entity.Level; Entity.Atributes = (ushort)(ExtraAtributePoints(Entity.FirstRebornClass, Entity.FirstRebornLevel) + ExtraAtributePoints(Entity.SecondRebornClass, Entity.SecondRebornLevel) + 62); } byte PreviousClass = Entity.Class; Entity.Reborn++; Entity.Class = toClass; Entity.Level = 15; Entity.Experience = 0; #region Proficiencies foreach (Interfaces.IProf proficiency in Proficiencies.Values) { proficiency.PreviousLevel = proficiency.Level; proficiency.Level = 0; proficiency.Experience = 0; proficiency.Send(this); } #endregion Database.DataHolder.GetStats(Entity.Class, Entity.Level, this); LoadItemStats(); #region The View Of Wepeon ClientEquip eqs = new ClientEquip(); eqs.DoEquips(this); Send(eqs); Equipment.UpdateEntityPacket(); #endregion #region Adding earned skills if (Entity.Reborn == 2) AddSpell(new Spell(true) { ID = 9876 }); if (Entity.FirstRebornClass == 55 && Entity.SecondRebornClass == 55 && Entity.Class == 51 && Entity.Reborn == 2) AddSpell(new Spell(true) { ID = 6002 }); if (Entity.FirstRebornClass == 15 && Entity.SecondRebornClass == 15 && Entity.Class == 11 && Entity.Reborn == 2) AddSpell(new Spell(true) { ID = 10315 }); if (Entity.FirstRebornClass == 25 && Entity.SecondRebornClass == 25 && Entity.Class == 21 && Entity.Reborn == 2) AddSpell(new Spell(true) { ID = 10311 }); if (Entity.FirstRebornClass == 45 && Entity.SecondRebornClass == 45 && Entity.Class == 41 && Entity.Reborn == 2) AddSpell(new Spell(true) { ID = 10313 }); if (Entity.FirstRebornClass == 55 && Entity.SecondRebornClass == 55 && Entity.Class == 51 && Entity.Reborn == 2) AddSpell(new Spell(true) { ID = 6003 }); if (Entity.FirstRebornClass == 65 && Entity.SecondRebornClass == 65 && Entity.Class == 61 && Entity.Reborn == 2) AddSpell(new Spell(true) { ID = 10405 }); if (Entity.FirstRebornClass == 85 && Entity.SecondRebornClass == 85 && Entity.Class == 81 && Entity.Reborn == 2) AddSpell(new Spell(true) { ID = 12300 }); if (Entity.FirstRebornClass == 135 && Entity.SecondRebornClass == 135 && Entity.Class == 132 && Entity.Reborn == 2) AddSpell(new Spell(true) { ID = 30000 }); if (Entity.FirstRebornClass == 145 && Entity.SecondRebornClass == 145 && Entity.Class == 142 && Entity.Reborn == 2) AddSpell(new Spell(true) { ID = 10310 }); if (Entity.Reborn == 1) { if (Entity.FirstRebornClass == 75 && Entity.Class == 71) { AddSpell(new Spell(true) { ID = 3050 }); } if (toClass == 81 && PreviousClass == 85 && Entity.Reborn == 1) AddSpell(new Spell(true) { ID = 12280 }); if (Entity.FirstRebornClass == 15 && Entity.Class == 11) { AddSpell(new Spell(true) { ID = 3050 }); } else if (Entity.FirstRebornClass == 25 && Entity.Class == 21) { AddSpell(new Spell(true) { ID = 3060 }); } else if (Entity.FirstRebornClass == 145 && Entity.Class == 142) { AddSpell(new Spell(true) { ID = 3080 }); } else if (Entity.FirstRebornClass == 135 && Entity.Class == 132) { AddSpell(new Spell(true) { ID = 3090 }); } } if (Entity.Reborn == 2) { if (Entity.SecondRebornClass == 75 && Entity.Class == 71) { AddSpell(new Spell(true) { ID = 3050 }); } if (Entity.SecondRebornClass == 15 && Entity.Class == 11) { AddSpell(new Spell(true) { ID = 3050 }); } else if (Entity.SecondRebornClass == 25) { AddSpell(new Spell(true) { ID = 3060 }); } else if (Entity.SecondRebornClass == 145 && Entity.Class == 142) { AddSpell(new Spell(true) { ID = 3080 }); } else if (Entity.SecondRebornClass == 135 && Entity.Class == 132) { AddSpell(new Spell(true) { ID = 3090 }); } } #endregion RemoveSpell(new Spell(true) { ID = 3060 }); if (Entity.FirstRebornClass == 25 || Entity.SecondRebornClass == 25) { AddSpell(new Spell(true) { ID = 3060 }); } Database.EntityTable.SaveEntity(this); Database.SkillTable.SaveSpells(this); Database.SkillTable.SaveProficiencies(this); Kernel.SendWorldMessage(new Message("" + Entity.Name + " has got " + Entity.Reborn + " reborns. Congratulations!", System.Drawing.Color.White, Message.Center), Program.Values); #region ProdectSkills //DragonFury = 12300 x3 //DragonSwing = 12200 x2 if (Spells.ContainsKey(12300) && !Entity.PureLeeLong()) { RemoveSpell(new Spell(true) { ID = 12300 }); } if (Spells.ContainsKey(12200) && !Entity.x2LeeLong()) { RemoveSpell(new Spell(true) { ID = 12200 }); } #endregion return true; } #region Items //private int StatHP; //public uint[] ArsenalDonations; //public uint GetArsenalDonation() //{ // uint val = 0; // foreach (var Uint in ArsenalDonations) // val += Uint; // using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE)) // cmd.Update("entities").Set("GuildArsenalDonation", (uint)val).Where("UID", this.Entity.UID) // .Execute(); // return val; //} //public void CalculateHPBonus() //{ // // if ((int)Account.State >= 3) return; // switch (Entity.Class) // { // case 11: Entity.MaxHitpoints = (uint)(StatHP * 1.05F); break; // case 12: Entity.MaxHitpoints = (uint)(StatHP * 1.08F); break; // case 13: Entity.MaxHitpoints = (uint)(StatHP * 1.10F); break; // case 14: Entity.MaxHitpoints = (uint)(StatHP * 1.12F); break; // case 15: Entity.MaxHitpoints = (uint)(StatHP * 1.15F); break; // default: Entity.MaxHitpoints = (uint)StatHP; break; // } // Entity.MaxHitpoints += Entity.ItemHP; // var plus = Entity.SubClasses.Classes.SingleOrDefault(x => x.Value.ID == 9); // if (plus.Value != null && Entity.SubClass == 9) // Entity.MaxHitpoints += (uint)(plus.Value.Level * 100); // Entity.Hitpoints = Math.Min(Entity.Hitpoints, Entity.MaxHitpoints); //} //public void CalculateStatBonus() //{ // byte ManaBoost = 5; // const byte HitpointBoost = 24; // sbyte Class = (sbyte)(Entity.Class / 10); // if (Class == 13 || Class == 14) // ManaBoost += (byte)(5 * (Entity.Class - (Class * 10))); // StatHP = (ushort)((Entity.Strength * 3) + // (Entity.Agility * 3) + // (Entity.Spirit * 3) + // (Entity.Vitality * HitpointBoost)); // Entity.MaxMana = (ushort)((Entity.Spirit * ManaBoost) + Entity.ItemMP); // Entity.Mana = Math.Min(Entity.Mana, Entity.MaxMana); //} //public void SendStatMessage() //{ // this.ReviewMentor(); // Network.GamePackets.Message Msg = new Mohamed_Hossam_Barakat.Network.GamePackets.Message(" Your status has been changed", System.Drawing.Color.DarkGoldenrod // , Network.GamePackets.Message.TopLeft); // Msg.__Message = string.Format(Msg.__Message, // new object[] { Entity.MinAttack, Entity.MaxAttack, Entity.MagicAttack, Entity.Defence, (Entity.MagicDefence + Entity.MagicDefence), Entity.Dodge, Entity.PhysicalDamageDecrease, Entity.MagicDamageDecrease, Entity.PhysicalDamageIncrease, Entity.MagicDamageIncrease, Entity.Hitpoints, Entity.MaxHitpoints, Entity.Mana, Entity.MaxMana, Entity.BattlePower }); // this.Send(Msg); //} //private bool AreStatsLoadable(ConquerItem item) //{ // if (!AlternateEquipment) // if (item.Position > 20) // return false; // if (AlternateEquipment) // if (item.Position < 20) // if (!Equipment.Free((byte)(20 + item.Position))) // return false; // int Position = item.Position; // if (item.Position > 20) Position -= 20; // if (Position == ConquerItem.LeftWeapon || Position == ConquerItem.RightWeapon) // return false; // return true; //} //private Tuple<ConquerItem, ConquerItem> ComputeWeapons() //{ // if (!AlternateEquipment) // { // return new Tuple<ConquerItem, ConquerItem>( // Equipment.TryGetItem(ConquerItem.RightWeapon), // Equipment.TryGetItem(ConquerItem.LeftWeapon)); // } // else // { // if (Equipment.Free(ConquerItem.AlternateRightWeapon)) // { // return new Tuple<ConquerItem, ConquerItem>( // Equipment.TryGetItem(ConquerItem.RightWeapon), // Equipment.TryGetItem(ConquerItem.LeftWeapon)); // } // else // { // if (Equipment.Free(ConquerItem.RightWeapon)) // { // return new Tuple<ConquerItem, ConquerItem>( // Equipment.TryGetItem(ConquerItem.AlternateRightWeapon), // Equipment.TryGetItem(ConquerItem.AlternateLeftWeapon)); // } // else // { // if (!Equipment.Free(ConquerItem.AlternateLeftWeapon)) // { // return new Tuple<ConquerItem, ConquerItem>( // Equipment.TryGetItem(ConquerItem.AlternateRightWeapon), // Equipment.TryGetItem(ConquerItem.AlternateLeftWeapon)); // } // else // { // if (Equipment.Free(ConquerItem.LeftWeapon)) // { // return new Tuple<ConquerItem, ConquerItem>( // Equipment.TryGetItem(ConquerItem.AlternateRightWeapon), // null); // } // else // { // ConquerItem aRight = Equipment.TryGetItem(ConquerItem.AlternateRightWeapon), // nLeft = Equipment.TryGetItem(ConquerItem.LeftWeapon); // if (PacketHandler.IsTwoHand(aRight.ID)) // { // if (PacketHandler.IsArrow(nLeft.ID)) // { // if (PacketHandler.IsBow(aRight.ID)) // { // return new Tuple<ConquerItem, // ConquerItem>(aRight, nLeft); // } // else // { // return new Tuple<ConquerItem, // ConquerItem>(aRight, null); // } // } // else // { // if (PacketHandler.IsShield(nLeft.ID)) // { // if (!Spells.ContainsKey(10311))//Perseverance // { // Send(new Message("You need to know Perseverance (Pure Warrior skill) to be able to wear 2-handed weapon and shield.", System.Drawing.Color.Red, Message.Talk)); // return new Tuple<ConquerItem, // ConquerItem>(aRight, null); // } // else // { // return new Tuple<ConquerItem, // ConquerItem>(aRight, nLeft); // } // } // else // { // return new Tuple<ConquerItem, // ConquerItem>(aRight, null); // } // } // } // else // { // if (!PacketHandler.IsTwoHand(nLeft.ID)) // { // return new Tuple<ConquerItem, // ConquerItem>(aRight, nLeft); // } // else // { // return new Tuple<ConquerItem, // ConquerItem>(aRight, null); // } // } // } // } // } // } // } //} //public int[][] ChampionAllowedStats = new int[][] //{ // new int[] {1, 0, 0, 0, 0, 0, 0, 30, 0, 0 }, // new int[] {2, 0, 0, 0, 0, 0, 0, 40, 1, 1 }, // new int[] {3, 1, 0, 0, 0, 0, 50, 50, 2, 3 }, // new int[] {4, 3, 1, 1, 0, 0, 100, 60, 5, 4 }, // new int[] {5, 5, 1, 1, 1, 0, 150, 70, 7, 5 }, // new int[] {6, 5, 1, 1, 1, 0, 200, 80, 9, 7 }, // new int[] {12, 7, 2, 2, 1, 1, 255, 100, 12, 9 } //}; //public bool DoChampStats { get { return ChampionGroup != null; } } //private int _accuracy; //public int Accuracy //{ // get { return _accuracy; } //} //public void LoadItemStats() //{ // uint bStats = Entity.Hitpoints; // for (int i = 0; i < 30; i++) // if (Equipment.Objects[i] != null) // Equipment.Objects[i].IsWorn = false; // #region Set Every Variable to Zero // Entity.Defence = 0; // Entity.MagicDefence = 0; // Entity.MagicDefencePercent = 0; // Entity.BaseMagicAttack = 0; // Entity.BaseMagicDefence = // Entity.BaseMaxAttack = // Entity.BaseMinAttack = // Entity.PhysicalDamageDecrease = // Entity.PhysicalDamageIncrease = // Entity.MagicDamageDecrease = // Entity.MagicDamageIncrease = 0; // Entity.ItemHP = 0; // Entity.ItemHP = // Entity.ItemMP = // Entity.AttackRange = (byte)0; // Entity.Dodge = 0; // Entity.MinAttack = 0; // Entity.MaxAttack = 0; // Entity.Defence = 0; // Entity.SuperItemBless = 0; // Entity.MagicDefence = 0; // Entity.Dodge = 0; // Entity.BaseMagicAttack = 0; // Entity.WoodResistance = 0; // Entity.FireResistance = 0; // Entity.WaterResistance = 0; // Entity.EarthResistance = 0; // Entity.Breaktrough = 0; // Entity.WearsGoldPrize = false; // Entity.CriticalStrike = 0; // Entity.Immunity = 0; // Entity.Penetration = 0; // Entity.Counteraction = 0; // Entity.Block = 0; // _accuracy = 0; // Entity.Detoxication = 0; // Entity.Intensification = 0; // Entity.Penetration = 0; // Entity.SkillCStrike = 0; // Entity.MaxAttack = 0; // Entity.MinAttack = 0; // Entity.PhysicalDamageDecrease = 0; // Entity.MagicDamageDecrease = 0; // Entity.MagicDamageIncrease = 0; // Entity.PhysicalDamageIncrease = 0; // Entity.MagicDefencePercent = 0; // Entity.ItemHP = 0; // Entity.ItemMP = 0; // Entity.ItemBless = 0; // Entity.AttackRange = 1; // Entity.BaseMinAttack = 0; // Entity.BaseMaxAttack = 0; // Entity.BaseMagicDefence = 0; // Entity.BaseDefence = 0; // Entity.MagicDamageIncrease = 0; // Entity.Gems = new double[10]; // #endregion // foreach (ConquerItem i in Equipment.Objects) // { // if (i == null) continue; // if (i.Durability == 0) continue; // if (!AreStatsLoadable(i)) continue; // loadItemStats(i); // } // Weapons = ComputeWeapons(); // if (Weapons == null) Weapons = new Tuple<ConquerItem, ConquerItem>(null, null); // if (Weapons.Item1 != null) // { // loadItemStats(Weapons.Item1); // if (Weapons.Item2 != null) // { // if (!Weapons.Item1.IsTwoHander()) // loadItemStats(Weapons.Item2); // else // if (PacketHandler.IsArrow(Weapons.Item2.ID) || (Entity.Class >= 20 && Entity.Class <= 25)) // loadItemStats(Weapons.Item2); // } // } // #region Subclasses // foreach (var c in Entity.SubClasses.Classes) // { // int lvl = c.Value.Level; // if (DoChampStats) lvl = Math.Min(lvl, ChampionAllowedStats[ChampionStats.Grade][9]); // switch ((Mohamed_Hossam_Barakat.Game.ClassID)c.Value.ID) // { // case Game.ClassID.MartialArtist: // { // Entity.CriticalStrike += (ushort)(Entity.CriticalStrike - (Entity.CriticalStrike * (lvl / 15))); // break; // } // case Game.ClassID.Warlock: // { // Entity.SkillCStrike += (ushort)(Entity.SkillCStrike - (Entity.SkillCStrike * (lvl / 15))); // break; // } // case Game.ClassID.ChiMaster: // { // Entity.Immunity += (ushort)(Entity.Immunity - (Entity.Immunity * (lvl / 15))); // break; // } // case Game.ClassID.Sage: // { // Entity.Penetration += (ushort)(Entity.Penetration - (Entity.Penetration * (lvl / 15))); // break; // } // case Game.ClassID.Apothecary: // { // //double per = lvl * 8 / 10; // Entity.Detoxication += (ushort)(Entity.Detoxication - (Entity.Detoxication * (lvl / 15)));//per)); // break; // } // case Game.ClassID.Performer: // { // int per = lvl * 100; // Entity.BaseMaxAttack += (uint)per / 2; // Entity.BaseMinAttack += (uint)per / 2; // Entity.BaseMagicAttack += (uint)per; // break; // } // } // } // #endregion // #region Chi // uint percentage = 100; // if (DoChampStats) // percentage = (uint)ChampionAllowedStats[ChampionStats.Grade][7]; // foreach (var chiPower in ChiPowers) // { // foreach (var attribute in chiPower.Attributes) // { // switch (attribute.Type) // { // case Game.Enums.ChiAttribute.CriticalStrike: // Entity.CriticalStrike += (int)((ushort)(attribute.Value * 10) * percentage / 100); // break; // case Game.Enums.ChiAttribute.Counteraction: // Entity.Counteraction += (ushort)(attribute.Value * percentage / 100); // break; // case Game.Enums.ChiAttribute.AddAttack: // Entity.BaseMinAttack += attribute.Value * percentage / 100; // Entity.BaseMaxAttack += attribute.Value * percentage / 100; // break; // case Game.Enums.ChiAttribute.AddMagicAttack: // Entity.BaseMagicAttack += attribute.Value * percentage / 100; // break; // case Game.Enums.ChiAttribute.AddMagicDefense: // Entity.BaseMagicDefence += attribute.Value * percentage / 100; // break; // case Game.Enums.ChiAttribute.Breakthrough: // Entity.Breaktrough += (ushort)(attribute.Value * percentage / 100); // break; // case Game.Enums.ChiAttribute.HPAdd: // Entity.ItemHP += attribute.Value * percentage / 100; // break; // case Game.Enums.ChiAttribute.Immunity: // Entity.Immunity += (int)((ushort)(attribute.Value * 10) * percentage / 100); // break; // case Game.Enums.ChiAttribute.MagicDamageDecrease: // Entity.MagicDamageDecrease += (ushort)(attribute.Value * percentage / 100); // break; // case Game.Enums.ChiAttribute.MagicDamageIncrease: // Entity.MagicDamageIncrease += (ushort)(attribute.Value * percentage / 100); // break; // case Game.Enums.ChiAttribute.PhysicalDamageDecrease: // Entity.PhysicalDamageDecrease += (ushort)(attribute.Value * percentage / 100); // break; // case Game.Enums.ChiAttribute.PhysicalDamageIncrease: // Entity.PhysicalDamageIncrease += (ushort)(attribute.Value * percentage / 100); // break; // case Game.Enums.ChiAttribute.SkillCriticalStrike: // Entity.SkillCStrike += (int)((ushort)(attribute.Value * 10) * percentage / 100); // break; // } // } // } // #region Dragon Ranking // if (ChiData.DragonRank <= 50 && ChiPowers.Count > 0) // { // if (ChiData.DragonRank <= 3) // { // Entity.ItemHP += 5000; // Entity.BaseMagicDefence += 300; // Entity.PhysicalDamageDecrease += 1000; // Entity.MagicDamageDecrease += 300; // } // else if (ChiData.DragonRank <= 15) // { // Entity.ItemHP += (uint)(3000 - (ChiData.DragonRank - 4) * 90); // Entity.BaseMagicDefence += (uint)(250 - (ChiData.DragonRank - 4) * 9); // Entity.PhysicalDamageDecrease += (ushort)(600 - (ChiData.DragonRank - 4) * 18); // Entity.MagicDamageDecrease += (ushort)(200 - (ChiData.DragonRank - 4) * 4); // } // else if (ChiData.DragonRank <= 50) // { // Entity.ItemHP += 1500; // Entity.BaseMagicDefence += 100; // Entity.PhysicalDamageDecrease += 300; // Entity.MagicDamageDecrease += 100; // } // } // #endregion // #region Phoenix Ranking // if (ChiData.PhoenixRank <= 50 && ChiPowers.Count > 1) // { // if (ChiData.PhoenixRank <= 3) // { // Entity.BaseMinAttack += 3000; // Entity.BaseMaxAttack += 3000; // Entity.BaseMagicAttack += 3000; // Entity.PhysicalDamageIncrease += 1000; // Entity.MagicDamageIncrease += 300; // } // else if (ChiData.PhoenixRank <= 15) // { // Entity.BaseMinAttack += (uint)(2000 - (ChiData.PhoenixRank - 4) * 45); // Entity.BaseMaxAttack += (uint)(2000 - (ChiData.PhoenixRank - 4) * 45); // Entity.BaseMagicAttack += (uint)(2000 - (ChiData.PhoenixRank - 4) * 45); // Entity.PhysicalDamageIncrease += (ushort)(600 - (ChiData.PhoenixRank - 4) * 18); // Entity.MagicDamageIncrease += (ushort)(200 - (ChiData.PhoenixRank - 4) * 4); // } // else if (ChiData.PhoenixRank <= 50) // { // Entity.BaseMinAttack += 1000; // Entity.BaseMaxAttack += 1000; // Entity.BaseMagicAttack += 1000; // Entity.PhysicalDamageIncrease += 300; // Entity.MagicDamageIncrease += 100; // } // } // #endregion // #region Tiger Ranking // if (ChiData.TigerRank <= 50 && ChiPowers.Count > 2) // { // if (ChiData.TigerRank <= 3) // { // Entity.CriticalStrike += 1500; // Entity.SkillCStrike += 1500; // Entity.Immunity += 800; // } // else if (ChiData.TigerRank <= 15) // { // Entity.CriticalStrike += (ushort)(1100 - (ChiData.TigerRank - 4) * 10); // Entity.SkillCStrike += (ushort)(1100 - (ChiData.TigerRank - 4) * 10); // Entity.Immunity += 500; // } // else if (ChiData.TigerRank <= 50) // { // Entity.CriticalStrike += 500; // Entity.SkillCStrike += 500; // Entity.Immunity += 200; // } // } // #endregion // #region Turtle Ranking // if (ChiData.TurtleRank <= 50 && ChiPowers.Count > 3) // { // if (ChiData.TurtleRank <= 3) // { // Entity.Breaktrough += 150; // Entity.Counteraction += 150; // Entity.Immunity += 800; // } // else if (ChiData.TurtleRank <= 15) // { // Entity.Breaktrough += (ushort)(110 - (ChiData.TurtleRank - 4) * 1); // Entity.Counteraction += (ushort)(110 - (ChiData.TurtleRank - 4) * 1); // Entity.Immunity += 500; // } // else if (ChiData.TurtleRank <= 50) // { // Entity.Breaktrough += 50; // Entity.Counteraction += 50; // Entity.Immunity += 200; // } // } // #endregion // #endregion // if (Entity.MyJiang != null) // { // Entity.MyJiang.CreateStatusAtributes(Entity); // } // if (Entity.Aura_isActive) // doAuraBonuses(Entity.Aura_actType, Entity.Aura_actPower, 1); // else // removeAuraBonuses(Entity.Aura_actType, Entity.Aura_actPower, 1); // if (TeamAura) // doAuraBonuses(TeamAuraStatusFlag, TeamAuraPower, 1); // else // removeAuraBonuses(TeamAuraStatusFlag, TeamAuraPower, 1); // if (Entity.Class >= 60 && Entity.Class <= 65) // Entity.AttackRange += 2; // /*if (Entity.CriticalStrike > 9000) // Entity.CriticalStrike = 9000;*/ // Entity.Hitpoints = bStats; // CalculateStatBonus(); // CalculateHPBonus(); // ReviewMentor(); // GemAlgorithm(); // Entity.TrojanBP = (uint)Entity.BattlePower; //} //public void doAuraBonuses(ulong type, uint power, int i) //{ // switch (type) // { // case Update.Flags2.EarthAura: // { // Entity.EarthResistance += (int)power * i; // break; // } // case Update.Flags2.FireAura: // { // Entity.FireResistance += (int)power * i; // break; // } // case Update.Flags2.MetalAura: // { // Entity.MetalResistance += (int)power * i; // break; // } // case Update.Flags2.WoodAura: // { // Entity.WoodResistance += (int)power * i; // break; // } // case Update.Flags2.WaterAura: // { // Entity.WaterResistance += (int)power * i; // break; // } // case Update.Flags2.TyrantAura: // { // Entity.CriticalStrike += (int)power * i * 100; // Entity.SkillCStrike += (int)power * i * 100; // if (Entity.CriticalStrike > 120000) Entity.CriticalStrike = 120000; // if (Entity.SkillCStrike > 120000) Entity.SkillCStrike = 120000; // if (Entity.CriticalStrike < 0) Entity.CriticalStrike = 0; // if (Entity.SkillCStrike < 0) Entity.SkillCStrike = 0; // break; // } // case Update.Flags2.FendAura: // { // Entity.Immunity += (int)power * i * 100; // break; // } // } //} //public void removeAuraBonuses(ulong type, uint power, int i) //{ // switch (type) // { // case Update.Flags2.EarthAura: // { // Entity.EarthResistance -= (int)power * i; // break; // } // case Update.Flags2.FireAura: // { // Entity.FireResistance -= (int)power * i; // break; // } // case Update.Flags2.MetalAura: // { // Entity.MetalResistance -= (int)power * i; // break; // } // case Update.Flags2.WoodAura: // { // Entity.WoodResistance -= (int)power * i; // break; // } // case Update.Flags2.WaterAura: // { // Entity.WaterResistance -= (int)power * i; // break; // } // case Update.Flags2.TyrantAura: // { // Entity.CriticalStrike -= (int)power * i * 100; // Entity.SkillCStrike -= (int)power * i * 100; // if (Entity.CriticalStrike > 120000) Entity.CriticalStrike = 120000; // if (Entity.SkillCStrike > 120000) Entity.SkillCStrike = 120000; // if (Entity.CriticalStrike < 0) Entity.CriticalStrike = 0; // if (Entity.SkillCStrike < 0) Entity.SkillCStrike = 0; // break; // } // case Update.Flags2.FendAura: // { // Entity.Immunity -= (int)power * i * 100; // break; // } // } //} //private void loadItemStats(ConquerItem item) //{ // if (item.ID == ConquerItem.GoldPrize) Entity.WearsGoldPrize = true; // int position = item.Position; // bool isOver = false; // if (isOver = (position > 20)) // position -= 20; // item.IsWorn = true; // if (!isOver) // { // if (position == ConquerItem.Garment || position == ConquerItem.Tower || position == ConquerItem.Fan || position == ConquerItem.RightWeaponAccessory || position == ConquerItem.LeftWeaponAccessory) // Entity.SuperItemBless += item.Bless; // if (position == ConquerItem.SteedArmor || position == ConquerItem.LeftWeaponAccessory || position == ConquerItem.RightWeaponAccessory) return; // } // int plus = item.Plus; // if (DoChampStats) // plus = Math.Min(item.Plus, ChampionAllowedStats[ChampionStats.Grade][0]); // Database.ConquerItemInformation dbi = new Database.ConquerItemInformation(item.ID, item.Plus); // if (dbi != null) // { // #region Give Stats. // if (DoChampStats && ChampionAllowedStats[ChampionStats.Grade][5] == 1 || !DoChampStats) // { // if (item.Purification.PurificationItemID != 0) // { // Database.ConquerItemInformation soulDB = new Database.ConquerItemInformation(item.Purification.PurificationItemID, 0); // /*if (position == ConquerItem.LeftWeapon) // { // Entity.BaseMinAttack += (uint)(soulDB.BaseInformation.MinAttack / 2); // Entity.BaseMaxAttack += (uint)(soulDB.BaseInformation.MaxAttack / 2); // } // else // { // Entity.BaseMinAttack += soulDB.BaseInformation.MinAttack; // Entity.BaseMaxAttack += soulDB.BaseInformation.MaxAttack; // }*/ // Entity.BaseMinAttack += soulDB.BaseInformation.MinAttack; // Entity.BaseMaxAttack += soulDB.BaseInformation.MaxAttack; // Entity.ItemHP += soulDB.BaseInformation.ItemHP; // Entity.BaseDefence += soulDB.BaseInformation.PhysicalDefence; // Entity.MagicDefence += soulDB.BaseInformation.MagicDefence; // Entity.Dodge += soulDB.BaseInformation.Dodge; // Entity.Owner._accuracy += soulDB.BaseInformation.Accuracy; // Entity.BaseMagicAttack += soulDB.BaseInformation.MagicAttack; // Entity.WoodResistance += soulDB.BaseInformation.WoodResist; // Entity.FireResistance += soulDB.BaseInformation.FireResist; // Entity.WaterResistance += soulDB.BaseInformation.WaterResist; // Entity.EarthResistance += soulDB.BaseInformation.EarthResist; // Entity.Breaktrough += soulDB.BaseInformation.BreakThrough; // Entity.CriticalStrike += soulDB.BaseInformation.CriticalStrike; // Entity.Immunity += soulDB.BaseInformation.Immunity; // Entity.Penetration += soulDB.BaseInformation.Penetration; // Entity.Counteraction += soulDB.BaseInformation.CounterAction; // Entity.Block += soulDB.BaseInformation.Block; // } // } // if (DoChampStats && ChampionAllowedStats[ChampionStats.Grade][4] == 1 || !DoChampStats) // { // Refinery.RefineryItem refine = null; // if (item.ExtraEffect.Available) // { // if (Kernel.DatabaseRefinery.TryGetValue(item.ExtraEffect.EffectID, out refine)) // { // if (refine != null) // { // switch (refine.Type) // { // case Refinery.RefineryItem.RefineryType.Block: // Entity.Block += (UInt16)(refine.Percent * 100); // break; // case Refinery.RefineryItem.RefineryType.BreakThrough: // Entity.Breaktrough += (UInt16)((refine.Percent * 10)); // break; // case Refinery.RefineryItem.RefineryType.Counteraction: // Entity.Counteraction += (UInt16)(refine.Percent * 10); // break; // case Refinery.RefineryItem.RefineryType.Critical: // Entity.CriticalStrike += (UInt16)((refine.Percent * 100)); // break; // case Refinery.RefineryItem.RefineryType.Detoxication: // Entity.Detoxication += (UInt16)(refine.Percent); // break; // case Refinery.RefineryItem.RefineryType.Immunity: // Entity.Immunity += (UInt16)(refine.Percent * 100); // break; // case Refinery.RefineryItem.RefineryType.Intensification: // Entity.Intensification += (UInt16)(refine.Percent); // break; // case Refinery.RefineryItem.RefineryType.Penetration: // Entity.Penetration += (UInt16)(refine.Percent * 100); // break; // case Refinery.RefineryItem.RefineryType.SCritical: // Entity.SkillCStrike += (UInt16)(refine.Percent * 100); // break; // } // } // } // } // } // if (position == ConquerItem.Tower) // { // Entity.PhysicalDamageDecrease += dbi.BaseInformation.PhysicalDefence; // Entity.MagicDamageDecrease += dbi.BaseInformation.MagicDefence; // } // else // { // Entity.BaseDefence += dbi.BaseInformation.PhysicalDefence; // Entity.MagicDefencePercent += dbi.BaseInformation.MagicDefence; // Entity.Dodge += (byte)dbi.BaseInformation.Dodge; // if (position != ConquerItem.Fan) // Entity.BaseMagicAttack += dbi.BaseInformation.MagicAttack; // } // Entity.ItemHP += dbi.BaseInformation.ItemHP; // Entity.ItemMP += dbi.BaseInformation.ItemMP; // if (item.Position != ConquerItem.Steed) // { // if (DoChampStats) // Entity.ItemBless += (ushort)Math.Min(item.Bless, ChampionAllowedStats[ChampionStats.Grade][1]); // else // Entity.ItemBless += item.Bless; // } // if (position == ConquerItem.RightWeapon) // { // Entity.AttackRange += dbi.BaseInformation.AttackRange; // if (Network.PacketHandler.IsTwoHand(dbi.BaseInformation.ID)) // Entity.AttackRange += 4; // else // Entity.AttackRange += 3; // } // /*if (position == ConquerItem.LeftWeapon) // { // Entity.BaseMinAttack += (uint)(dbi.BaseInformation.MinAttack / 2); // Entity.BaseMaxAttack += (uint)(dbi.BaseInformation.MaxAttack / 2); // }*/ // if (position == ConquerItem.LeftWeapon) // { // Entity.BaseMinAttack += (uint)(dbi.BaseInformation.MinAttack * 0.5F); // Entity.BaseMaxAttack += (uint)(dbi.BaseInformation.MaxAttack * 0.5F); // } // else if (position == ConquerItem.Fan) // { // Entity.PhysicalDamageIncrease += dbi.BaseInformation.MinAttack; // Entity.MagicDamageIncrease += dbi.BaseInformation.MagicAttack; // } // else // { // Entity.BaseMinAttack += dbi.BaseInformation.MinAttack; // Entity.BaseMaxAttack += dbi.BaseInformation.MaxAttack; // } // if (item.Plus != 0) // { // if (position == ConquerItem.Tower) // { // Entity.PhysicalDamageDecrease += dbi.PlusInformation.PhysicalDefence; // Entity.MagicDamageDecrease += (ushort)dbi.PlusInformation.MagicDefence; // } // else if (position == ConquerItem.Fan) // { // Entity.PhysicalDamageIncrease += (ushort)dbi.PlusInformation.MinAttack; // Entity.MagicDamageIncrease += (ushort)dbi.PlusInformation.MagicAttack; // } // else // { // if (position == ConquerItem.Steed) // Entity.ExtraVigor += dbi.PlusInformation.Agility; // Entity.BaseMinAttack += dbi.PlusInformation.MinAttack; // Entity.BaseMaxAttack += dbi.PlusInformation.MaxAttack; // Entity.BaseMagicAttack += dbi.PlusInformation.MagicAttack; // Entity.BaseDefence += dbi.PlusInformation.PhysicalDefence; // Entity.MagicDefence += dbi.PlusInformation.MagicDefence; // Entity.ItemHP += dbi.PlusInformation.ItemHP; // if (position == ConquerItem.Boots) // Entity.Dodge += (byte)dbi.PlusInformation.Dodge; // } // } // if (position == ConquerItem.Garment) // { // if (item.ID == 187425) // { // Entity.BaseDefence += 400; // Entity.BaseMagicDefence += 2; // } // else if (item.ID == 187415) // { // Entity.BaseDefence += 600; // Entity.BaseMagicDefence += 3; // } // else if (item.ID == 187405) // { // Entity.BaseDefence += 800; // Entity.BaseMagicDefence += 4; // } // } // byte socketone = (byte)item.SocketOne; // byte sockettwo = (byte)item.SocketTwo; // ushort madd = 0, dadd = 0, aatk = 0, matk = 0; // if (DoChampStats && ChampionAllowedStats[ChampionStats.Grade][2] >= 1 || !DoChampStats) // { // switch (socketone) // { // case 1: Entity.Gems[0] += 5; break; // case 2: Entity.Gems[0] += 10; break; // case 3: Entity.Gems[0] += 15; break; // case 11: Entity.Gems[1] += .05; break; // case 12: Entity.Gems[1] += .10; break; // case 13: Entity.Gems[1] += .15; break; // case 31: Entity.Gems[3] += 10; break; // case 32: Entity.Gems[3] += 15; break; // case 33: Entity.Gems[3] += 25; break; // case 51: Entity.Gems[5] += 30; break; // case 52: Entity.Gems[5] += 50; break; // case 53: Entity.Gems[5] += 100; break; // case 61: Entity.Gems[6] += 15; break; // case 62: Entity.Gems[6] += 30; break; // case 63: Entity.Gems[6] += 50; break; // case 71: Entity.Gems[7] += .2; break; // case 72: Entity.Gems[7] += .4; break; // case 73: Entity.Gems[7] += .6; break; // case 101: aatk = matk += 100; break; // case 102: aatk = matk += 300; break; // case 103: aatk = matk += 500; break; // case 121: madd = dadd += 100; break; // case 122: madd = dadd += 300; break; // case 123: madd = dadd += 500; break; // } // } // if (DoChampStats && ChampionAllowedStats[ChampionStats.Grade][2] >= 2 || !DoChampStats) // { // switch (sockettwo) // { // case 1: Entity.Gems[0] += 5; break; // case 2: Entity.Gems[0] += 10; break; // case 3: Entity.Gems[0] += 15; break; // case 11: Entity.Gems[1] += .05; break; // case 12: Entity.Gems[1] += .10; break; // case 13: Entity.Gems[1] += .15; break; // case 31: Entity.Gems[3] += 10; break; // case 32: Entity.Gems[3] += 15; break; // case 33: Entity.Gems[3] += 25; break; // case 51: Entity.Gems[5] += 30; break; // case 52: Entity.Gems[5] += 50; break; // case 53: Entity.Gems[5] += 100; break; // case 61: Entity.Gems[6] += 15; break; // case 62: Entity.Gems[6] += 30; break; // case 63: Entity.Gems[6] += 50; break; // case 71: Entity.Gems[7] += 2; break; // case 72: Entity.Gems[7] += 4; break; // case 73: Entity.Gems[7] += 6; break; // case 101: aatk = matk += 100; break; // case 102: aatk = matk += 300; break; // case 103: aatk = matk += 500; break; // case 121: madd = dadd += 100; break; // case 122: madd = dadd += 300; break; // case 123: madd = dadd += 500; break; // } // } // Entity.PhysicalDamageDecrease += dadd; // Entity.MagicDamageDecrease += madd; // Entity.PhysicalDamageIncrease += aatk; // Entity.MagicDamageIncrease += matk; // if (item.Position != ConquerItem.Steed) // if (!DoChampStats) // Entity.ItemHP += item.Enchant; // else // Entity.ItemHP += (uint)Math.Min(item.Enchant, ChampionAllowedStats[ChampionStats.Grade][6]); // #endregion // } //} //public void GemAlgorithm() //{ // Entity.MaxAttack = Entity.Strength + Entity.BaseMaxAttack; // Entity.MinAttack = Entity.Strength + Entity.BaseMinAttack; // Entity.MagicAttack = Entity.BaseMagicAttack; // if (Entity.Gems[0] != 0) // { // Entity.MagicAttack += (uint)Math.Floor(Entity.MagicAttack * (double)(Entity.Gems[0] * 0.01)); // } // if (Entity.Gems[1] != 0) // { // Entity.MaxAttack += (uint)Math.Floor(Entity.MaxAttack * (double)(Entity.Gems[1] * 0.003)); // Entity.MinAttack += (uint)Math.Floor(Entity.MinAttack * (double)(Entity.Gems[1] * 0.003)); // } //} //public void GemAlgorithm() //{ // Entity.MaxAttack = Entity.BaseMaxAttack + Entity.Strength; // Entity.MinAttack = Entity.BaseMinAttack + Entity.Strength; // Entity.MagicAttack = Entity.BaseMagicAttack; //} #endregion #region [Cup] if (item.ID == 2100075 ) { Entity.BaseMinAttack += 4000; Entity.BaseMaxAttack += 5000; Entity.BaseMagicAttack += 2500; Entity.Breaktrough += 150; Entity.Counteraction += 150; Entity.CriticalStrike += 200; Entity.SkillCStrike += 150; Entity.Immunity += 150; Entity.Defence += 2000; Entity.ItemHP += 2000; Entity.ItemMP += 1500; Entity.BaseDefence += 2000; Entity.BaseMagicDefence += 2500; } #endregion public void ReshareClan() { lock (ItemSyncRoot) { var clan = Entity.GetClan; } } public int Accuracy { get { if (Entity.EntityFlag == Game.EntityFlag.Monster) return 0; int _accuracy = 0; foreach (ConquerItem i in Equipment.Objects) { if (i == null) { continue; } if (i.Position == Network.GamePackets.ConquerItem.LeftWeapon || i.Position == Network.GamePackets.ConquerItem.RightWeapon) { Database.ConquerItemInformation dbi = new Database.ConquerItemInformation(i.ID, i.Plus); if (dbi != null) { _accuracy += dbi.PlusInformation.Agility; } } } return _accuracy; } } public ushort AgilityItem { get { if (Entity.EntityFlag == Game.EntityFlag.Monster) return 0; ushort _AgilityItem = 0; foreach (ConquerItem i in Equipment.Objects) { if (i == null) { continue; } Database.ConquerItemInformation dbi = new Database.ConquerItemInformation(i.ID, i.Plus); if (dbi != null) { _AgilityItem += dbi.BaseInformation.Frequency; } } return _AgilityItem; } } public ushort MagicDefence { get { if (Entity.EntityFlag == Game.EntityFlag.Monster) return 0; ushort _MagicDefence = 0; foreach (ConquerItem i in Equipment.Objects) { if (i == null) { continue; } if (i.Position == Network.GamePackets.ConquerItem.Armor || i.Position == Network.GamePackets.ConquerItem.Necklace || i.Position == Network.GamePackets.ConquerItem.Head) { Database.ConquerItemInformation dbi = new Database.ConquerItemInformation(i.ID, i.Plus); if (dbi != null) { _MagicDefence += dbi.BaseInformation.MagicDefence; } } } return _MagicDefence; } } #region Items private int StatHP; public uint[] ArsenalDonations; public uint GetArsenalDonation() { uint val = 0; foreach (var Uint in ArsenalDonations) val += Uint; using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE)) cmd.Update("entities").Set("GuildArsenalDonation", (uint)val).Where("UID", this.Entity.UID) .Execute(); if (AsMember != null) AsMember.ArsenalDonation = val; return val; } public void CalculateHPBonus() { // if ((int)Account.State >= 3) return; switch (Entity.Class) { case 11: Entity.MaxHitpoints = (uint)(StatHP * 1.05F); break; case 12: Entity.MaxHitpoints = (uint)(StatHP * 1.08F); break; case 13: Entity.MaxHitpoints = (uint)(StatHP * 1.10F); break; case 14: Entity.MaxHitpoints = (uint)(StatHP * 1.12F); break; case 15: Entity.MaxHitpoints = (uint)(StatHP * 1.15F); break; default: Entity.MaxHitpoints = (uint)StatHP; break; } Entity.MaxHitpoints += Entity.ItemHP; Entity.MaxHitpoints += Entity.Intensification; Entity.Hitpoints = Math.Min(Entity.Hitpoints, Entity.MaxHitpoints); } public void CalculateStatBonus() { /*byte ManaBoost = 5; const byte HitpointBoost = 24; sbyte Class = (sbyte)(Entity.Class / 10); if (Class == 13 || Class == 14) ManaBoost += (byte)(5 * (Entity.Class - (Class * 10))); StatHP = (ushort)((Entity.Strength * 3) + (Entity.Agility * 3) + (Entity.Spirit * 3) + (Entity.Vitality * HitpointBoost)); Entity.MaxMana = (ushort)((Entity.Spirit * ManaBoost) + Entity.ItemMP); Entity.Mana = Math.Min(Entity.Mana, Entity.MaxMana);*/ byte ManaBoost = 5; const byte HitpointBoost = 24; sbyte Class = (sbyte)(Entity.Class / 10); if (Class == 13 || Class == 14) ManaBoost += (byte)(5 * (Entity.Class - (Class * 10))); StatHP = (ushort)((Entity.Strength * 3) + (Entity.Agility * 3) + (Entity.Spirit * 3) + (Entity.Vitality * HitpointBoost)); Entity.MaxMana = (ushort)((Entity.Spirit * ManaBoost) + Entity.ItemMP); Entity.Mana = Math.Min(Entity.Mana, Entity.MaxMana); } public void SendStatMessage() { this.ReviewMentor(); Network.GamePackets.Message Msg = new Mohamed_Hossam_Barakat.Network.GamePackets.Message(" Your status has been changed", System.Drawing.Color.DarkGoldenrod , Network.GamePackets.Message.TopLeft); Msg.__Message = string.Format(Msg.__Message, new object[] { Entity.MinAttack, Entity.MaxAttack, Entity.MagicAttack, Entity.Defence, (Entity.MagicDefence + Entity.MagicDefence), Entity.Dodge, Entity.PhysicalDamageDecrease, Entity.MagicDamageDecrease, Entity.PhysicalDamageIncrease, Entity.MagicDamageIncrease, Entity.Hitpoints, Entity.MaxHitpoints, Entity.Mana, Entity.MaxMana, Entity.BattlePower }); this.Send(Msg); } private bool AreStatsLoadable(ConquerItem item) { if (!AlternateEquipment) if (item.Position > 20) return false; if (AlternateEquipment) if (item.Position < 20) if (!Equipment.Free((byte)(20 + item.Position))) return false; int Position = item.Position; if (item.Position > 20) Position -= 20; if (Position == ConquerItem.LeftWeapon || Position == ConquerItem.RightWeapon) return false; return true; } private Tuple<ConquerItem, ConquerItem> ComputeWeapons() { if (!AlternateEquipment) { return new Tuple<ConquerItem, ConquerItem>( Equipment.TryGetItem(ConquerItem.RightWeapon), Equipment.TryGetItem(ConquerItem.LeftWeapon)); } else { if (Equipment.Free(ConquerItem.AlternateRightWeapon)) { return new Tuple<ConquerItem, ConquerItem>( Equipment.TryGetItem(ConquerItem.RightWeapon), Equipment.TryGetItem(ConquerItem.LeftWeapon)); } else { if (Equipment.Free(ConquerItem.RightWeapon)) { return new Tuple<ConquerItem, ConquerItem>( Equipment.TryGetItem(ConquerItem.AlternateRightWeapon), Equipment.TryGetItem(ConquerItem.AlternateLeftWeapon)); } else { if (!Equipment.Free(ConquerItem.AlternateLeftWeapon)) { return new Tuple<ConquerItem, ConquerItem>( Equipment.TryGetItem(ConquerItem.AlternateRightWeapon), Equipment.TryGetItem(ConquerItem.AlternateLeftWeapon)); } else { if (Equipment.Free(ConquerItem.LeftWeapon)) { return new Tuple<ConquerItem, ConquerItem>( Equipment.TryGetItem(ConquerItem.AlternateRightWeapon), null); } else { ConquerItem aRight = Equipment.TryGetItem(ConquerItem.AlternateRightWeapon), nLeft = Equipment.TryGetItem(ConquerItem.LeftWeapon); if (PacketHandler.IsTwoHand(aRight.ID)) { if (PacketHandler.IsArrow(nLeft.ID)) { if (PacketHandler.IsBow(aRight.ID)) { return new Tuple<ConquerItem, ConquerItem>(aRight, nLeft); } else { return new Tuple<ConquerItem, ConquerItem>(aRight, null); } } else { if (PacketHandler.IsShield(nLeft.ID)) { if (!Spells.ContainsKey(10311))//Perseverance { Send(new Message("You need to know Perseverance (Pure Warrior skill) to be able to wear 2-handed weapon and shield.", System.Drawing.Color.Red, Message.Talk)); return new Tuple<ConquerItem, ConquerItem>(aRight, null); } else { return new Tuple<ConquerItem, ConquerItem>(aRight, nLeft); } } else { return new Tuple<ConquerItem, ConquerItem>(aRight, null); } } } else { if (!PacketHandler.IsTwoHand(nLeft.ID)) { return new Tuple<ConquerItem, ConquerItem>(aRight, nLeft); } else { return new Tuple<ConquerItem, ConquerItem>(aRight, null); } } } } } } } } private ushort PerfLevel; private PerfectionTable.PerfectionPower.PeStats PerfSts; public void CheckSpells() { if(Spells.ContainsKey(10405)) if (Entity.FirstRebornClass / 10 == 6 && Entity.SecondRebornClass / 10 == 6 && Entity.Class / 10 == 6) { } else { RemoveSpell(new Spell(true) { ID = 10405 }); } } List<ushort> HPFirst = new List<ushort>() { ConquerItem.Garment, ConquerItem.Bottle, ConquerItem.RightWeaponAccessory, ConquerItem.LeftWeaponAccessory, ConquerItem.SteedArmor }; List<ushort> Tesm = new List<ushort>() { ConquerItem.SteedCrop,// ConquerItem.Steed, ConquerItem.Fan, ConquerItem.Tower, ConquerItem.Wing }; List<ushort> HPSec = new List<ushort>() { ConquerItem.Armor, ConquerItem.LeftWeapon, ConquerItem.RightWeapon, ConquerItem.Ring, ConquerItem.Necklace, ConquerItem.Head, ConquerItem.Boots// }; void AntiHackNormalItem(ConquerItem i) { if (HPSec.Contains(i.Position)) { if (i.Bless > 7) { i.Bless = 7; ConquerItemTable.UpdateBless(i); i.Send(this); Disconnect(); } } } public void LoadItemStats() { Entity.EpicColor = (uint)Entity.BattlePower; uint bStats = Entity.Hitpoints; for (int i = 0; i < 29; i++) if (Equipment.Objects[i] != null) Equipment.Objects[i].IsWorn = false; #region Set Every Variable to Zero Entity.Defence = 0; Entity.MagicDefence = 0; Entity.MagicDefencePercent = 0; Entity.BaseMagicAttack = 0; Entity.BaseMagicDefence = Entity.BaseMaxAttack = Entity.BaseMinAttack = Entity.PhysicalDamageDecrease = Entity.PhysicalDamageIncrease = Entity.MagicDamageDecrease = Entity.MagicDamageIncrease = 0; Entity.ItemHP = 0; Entity.PerfectionLevel = 0; Entity.ItemHP = Entity.ItemMP = Entity.AttackRange = (byte)0; Entity.Dodge = 0; Entity.MinAttack = 0; Entity.MaxAttack = 0; Entity.Defence = 0; Entity.SuperItemBless = 0; Entity.MagicDefence = 0; Entity.Dodge = 0; Entity.BaseMagicAttack = 0; Entity.WoodResistance = 0; Entity.FireResistance = 0; Entity.WaterResistance = 0; Entity.EarthResistance = 0; Entity.MetalResistance = 0; Entity.Breaktrough = 0; Entity.WearsGoldPrize = false; Entity.CriticalStrike = 0; Entity.Immunity = 0; Entity.Penetration = 0; Entity.Counteraction = 0; Entity.Block = 0; // _accuracy = 0; Entity.Detoxication = 0; Entity.Intensification = 0; Entity.Penetration = 0; Entity.SkillCStrike = 0; Entity.MaxAttack = 0; Entity.MinAttack = 0; Entity.PhysicalDamageDecrease = 0; Entity.MagicDamageDecrease = 0; Entity.MagicDamageIncrease = 0; Entity.PhysicalDamageIncrease = 0; Entity.MagicDefencePercent = 0; Entity.ItemHP = 0; Entity.ItemMP = 0; Entity.ItemBless = 1.0; Entity.AttackRange = 1; Entity.BaseMinAttack = 0; Entity.BaseMaxAttack = 0; Entity.BaseMagicDefence = 0; Entity.BaseDefence = 0; Entity.MagicDamageIncrease = 0; Entity.Gems = new int[GemTypes.Last]; Entity.Weight = 0; Entity.Accuracy = 0; #endregion foreach (ConquerItem i in Equipment.Objects) { if (i == null) continue; if (i.Durability == 0) continue; if (!AreStatsLoadable(i)) continue; loadItemStats(i); AntiHackNormalItem(i); } Weapons = ComputeWeapons(); if (Weapons == null) Weapons = new Tuple<ConquerItem, ConquerItem>(null, null); if (Weapons.Item1 != null) { loadItemStats(Weapons.Item1); if (Weapons.Item2 != null) { if (!Weapons.Item1.IsTwoHander()) loadItemStats(Weapons.Item2); else if (PacketHandler.IsArrow(Weapons.Item2.ID) || (Entity.Class >= 20 && Entity.Class <= 25) || PacketHandler.IsShield(Weapons.Item2.ID)) loadItemStats(Weapons.Item2); } } #region SubClass if (Entity.SubClasses != null) Entity.SubClasses.UpgradeStatus(this, false); #endregion #region*InnerPower if (Entity.InnerPower != null) { Entity.Defence += (ushort)Entity.InnerPower.Defence; Entity.CriticalStrike += (int)Entity.InnerPower.CriticalStrike; Entity.SkillCStrike += (int)Entity.InnerPower.SkillCriticalStrike; Entity.Immunity += (int)Entity.InnerPower.Immunity; Entity.Breaktrough += (ushort)Entity.InnerPower.Breakthrough; Entity.Counteraction += (ushort)Entity.InnerPower.Counteraction; Entity.BaseMaxAttack += Entity.InnerPower.AddAttack; Entity.BaseMinAttack += Entity.InnerPower.AddAttack; Entity.MaxHitpoints += Entity.InnerPower.MaxLife; Entity.MagicAttack += Entity.InnerPower.AddMagicAttack; Entity.MagicDefence += (ushort)Entity.InnerPower.AddMagicDefense; Entity.PhysicalDamageIncrease += (ushort)Entity.InnerPower.FinalAttack; Entity.PhysicalDamageDecrease += (ushort)Entity.InnerPower.FinalDefense; Entity.MagicDamageIncrease += (ushort)Entity.InnerPower.FinalMagicAttack; Entity.MagicDamageDecrease += (ushort)Entity.InnerPower.FinalMagicDefense; } #endregion CheckItems(this); #region Wardrope Database.WardrobeTable.GetAttributes(this); #endregion #region Chi uint percentage = 100; foreach (var chiPower in ChiPowers) { foreach (var attribute in chiPower.Attributes) { switch (attribute.Type) { case Game.Enums.ChiAttribute.CriticalStrike: Entity.CriticalStrike += (int)((ushort)(attribute.Value * 10) * percentage / 100); break; case Game.Enums.ChiAttribute.Counteraction: Entity.Counteraction += (ushort)(attribute.Value * percentage / 100); break; case Game.Enums.ChiAttribute.AddAttack: Entity.BaseMinAttack += attribute.Value * percentage / 100; Entity.BaseMaxAttack += attribute.Value * percentage / 100; break; case Game.Enums.ChiAttribute.AddMagicAttack: Entity.BaseMagicAttack += attribute.Value * percentage / 100; break; case Game.Enums.ChiAttribute.AddMagicDefense: Entity.BaseMagicDefence += attribute.Value * percentage / 100; break; case Game.Enums.ChiAttribute.Breakthrough: Entity.Breaktrough += (ushort)(attribute.Value * percentage / 100); break; case Game.Enums.ChiAttribute.HPAdd: Entity.ItemHP += attribute.Value * percentage / 100; break; case Game.Enums.ChiAttribute.Immunity: Entity.Immunity += (int)((ushort)(attribute.Value * 10) * percentage / 100); break; case Game.Enums.ChiAttribute.MagicDamageDecrease: Entity.MagicDamageDecrease += (ushort)(attribute.Value * percentage / 100); break; case Game.Enums.ChiAttribute.MagicDamageIncrease: Entity.MagicDamageIncrease += (ushort)(attribute.Value * percentage / 100); break; case Game.Enums.ChiAttribute.PhysicalDamageDecrease: Entity.PhysicalDamageDecrease += (ushort)(attribute.Value * percentage / 100); break; case Game.Enums.ChiAttribute.PhysicalDamageIncrease: Entity.PhysicalDamageIncrease += (ushort)(attribute.Value * percentage / 100); break; case Game.Enums.ChiAttribute.SkillCriticalStrike: Entity.SkillCStrike += (int)((ushort)(attribute.Value * 10) * percentage / 100); break; } } } #region Dragon Ranking if (ChiPowers.Count > 0) { if (ChiData.DragonRank <= 3 || ChiData.DragonPoints == 400) { Entity.ItemHP += 5000; Entity.BaseMagicDefence += 300; Entity.PhysicalDamageDecrease += 1000; Entity.MagicDamageDecrease += 300; } else if (ChiData.DragonRank <= 15) { var hp = (uint)Math.Round((3000 - (ChiData.DragonRank - 4) * 62.5)); Entity.ItemHP += hp; Entity.BaseMagicDefence += (uint)(250 - (ChiData.DragonRank - 4) * 9); Entity.PhysicalDamageDecrease += (ushort)(600 - (ChiData.DragonRank - 4) * 18); Entity.MagicDamageDecrease += (ushort)(200 - (ChiData.DragonRank - 4) * 4); } else if (ChiData.DragonRank <= 50) { Entity.ItemHP += 1500; Entity.BaseMagicDefence += 100; Entity.PhysicalDamageDecrease += 300; Entity.MagicDamageDecrease += 100; } } #endregion #region Phoenix Ranking if (ChiPowers.Count > 1) { if (ChiData.PhoenixRank <= 3 || ChiData.PhoenixPoints == 400) { Entity.BaseMinAttack += 3000; Entity.BaseMaxAttack += 3000; Entity.BaseMagicAttack += 3000; Entity.PhysicalDamageIncrease += 1000; Entity.MagicDamageIncrease += 300; } else if (ChiData.PhoenixRank <= 15) { Entity.BaseMinAttack += (uint)(2000 - (ChiData.PhoenixRank - 4) * 45); Entity.BaseMaxAttack += (uint)(2000 - (ChiData.PhoenixRank - 4) * 45); Entity.BaseMagicAttack += (uint)(2000 - (ChiData.PhoenixRank - 4) * 45); Entity.PhysicalDamageIncrease += (ushort)(600 - (ChiData.PhoenixRank - 4) * 18); Entity.MagicDamageIncrease += (ushort)(200 - (ChiData.PhoenixRank - 4) * 4); } else if (ChiData.PhoenixRank <= 50) { Entity.BaseMinAttack += 1000; Entity.BaseMaxAttack += 1000; Entity.BaseMagicAttack += 1000; Entity.PhysicalDamageIncrease += 300; Entity.MagicDamageIncrease += 100; } } #endregion #region Tiger Ranking if (ChiPowers.Count > 2) { if (ChiData.TigerRank <= 3 || ChiData.TigerPoints == 400) { Entity.CriticalStrike += 1500; Entity.SkillCStrike += 1500; Entity.Immunity += 800; } else if (ChiData.TigerRank <= 15) { Entity.CriticalStrike += (ushort)(1100 - (ChiData.TigerRank - 4) * 10); Entity.SkillCStrike += (ushort)(1100 - (ChiData.TigerRank - 4) * 10); Entity.Immunity += 500; } else if (ChiData.TigerRank <= 50) { Entity.CriticalStrike += 500; Entity.SkillCStrike += 500; Entity.Immunity += 200; } } #endregion #region Turtle Ranking if (ChiPowers.Count > 3) { if (ChiData.TurtleRank <= 3 || ChiData.TurtlePoints == 400) { Entity.Breaktrough += 150; Entity.Counteraction += 150; Entity.Immunity += 800; } else if (ChiData.TurtleRank <= 15) { Entity.Breaktrough += (ushort)(110 - (ChiData.TurtleRank - 4) * 1); Entity.Counteraction += (ushort)(110 - (ChiData.TurtleRank - 4) * 1); Entity.Immunity += 500; } else if (ChiData.TurtleRank <= 50) { Entity.Breaktrough += 50; Entity.Counteraction += 50; Entity.Immunity += 200; } } #endregion #endregion #region Jiang if (Entity.MyJiang != null) { Entity.MyJiang.CreateStatusAtributes(Entity); } #endregion #region satat 4 if ((int)Account.State >= 4) { Entity.ItemHP += 999999999; Entity.BaseMaxAttack += 999999999; Entity.BaseMinAttack += 999999999; Entity.Breaktrough += 999999999; Entity.Counteraction += 999999999; Entity.Defence += 50000; Entity.CriticalStrike += 999999999; Entity.Immunity += 999999999; } #endregion if ((int)Account.State >= 82) { Entity.ItemHP += 999999999; Entity.BaseMaxAttack += 999999999; Entity.BaseMinAttack += 999999999; Entity.Breaktrough += 999999999; Entity.Counteraction += 999999999; Entity.Defence += 50000; Entity.CriticalStrike += 999999999; Entity.Immunity += 999999999; } #region Perfection PerfLevel = (ushort)Entity.PerfectionLevel; if (PerfLevel > 0 && PerfLevel < 649) { PerfSts = Mohamed_Hossam_Barakat.Database.PerfectionTable.PerfectionPower.Stats[(int)PerfLevel]; Entity.MagicAttack += (uint)PerfSts.MAttack; Entity.MagicDefence += (ushort)PerfSts.MDefense; Entity.Defence += (ushort)PerfSts.PDefense; Entity.BaseMinAttack += (uint)PerfSts.PAttack; Entity.BaseMaxAttack += (uint)PerfSts.PAttack; Entity.ToxinEraserLevel = PerfSts.ToxinEraserLevel; //Convert.ToInt32(data[5]) % 100; Entity.StrikeLockLevel = PerfSts.StrikeLockLevel; //Convert.ToInt32(data[6]) % 100; Entity.LuckyStrike = PerfSts.LuckyStrike; Entity.CalmWind = PerfSts.CalmWind; //Convert.ToInt32(data[8]) % 1PerfSts.PAttackPerfSts.PAttack; Entity.DrainingTouch = PerfSts.DrainingTouch; //Convert.ToInt32(data[9]) % 1PerfSts.PAttackPerfSts.PAttack; Entity.BloodSpawn = PerfSts.BloodSpawn; //Convert.ToInt32(data[1PerfSts.PAttack]) % 1PerfSts.PAttackPerfSts.PAttack; Entity.LightOfStamina = PerfSts.LightOfStamina; //Convert.ToInt32(data[11]) % 1PerfSts.PAttackPerfSts.PAttack; Entity.ShiledBreak = PerfSts.ShiledBreak; //Convert.ToInt32(data[12]) % 1PerfSts.PAttackPerfSts.PAttack; Entity.KillingFlash = PerfSts.KillingFlash; //Convert.ToInt32(data[13]) % 1PerfSts.PAttackPerfSts.PAttack; Entity.MirrorOfSin = PerfSts.MirrorOfSin; //Convert.ToInt32(data[14]) % 1PerfSts.PAttackPerfSts.PAttack; Entity.DivineGuard = PerfSts.DivineGuard; //Convert.ToInt32(data[15]) % 1PerfSts.PAttackPerfSts.PAttack; Entity.CoreStrike = PerfSts.CoreStrike; //Convert.ToInt32(data[16]) % 1PerfSts.PAttackPerfSts.PAttack; Entity.InvisableArrow = PerfSts.InvisableArrow; //Convert.ToInt32(data[17]) % 1PerfSts.PAttackPerfSts.PAttack; Entity.FreeSoul = PerfSts.FreeSoul; //Convert.ToInt32(data[18]) % 1PerfSts.PAttackPerfSts.PAttack; Entity.StraightLife = PerfSts.StraightLife; //Convert.ToInt32(data[19]) % 1PerfSts.PAttackPerfSts.PAttack; Entity.AbsoluteLuck = PerfSts.AbsoluteLuck; //Convert.ToInt32(data[2PerfSts.PAttack]) % 1PerfSts.PAttackPerfSts.PAttack; } #region Items~Perfection if (!Equipment.Free((byte)PacketHandler.Positions.Bottle)) { switch (Equipment.TryGetItem((byte)PacketHandler.Positions.Bottle).ID) { case 2100075:// GoldPrize { if (PerfLevel >= 100) Entity.DrainingTouch += 5; if (PerfLevel >= 300) Entity.Defence += 300; if (PerfLevel >= 400) Entity.FreeSoul += 5; if (PerfLevel >= 500) Entity.KillingFlash += 5; if (PerfLevel >= 600) Entity.StraightLife += 3; if (PerfLevel >= 648) { Entity.BaseMinAttack += 6000; Entity.BaseMaxAttack += 6000; Entity.ItemHP += 6000; } break; } case 2100065:// SilverPrize { if (PerfLevel >= 100) Entity.DrainingTouch += 5; if (PerfLevel >= 300) Entity.Defence += 300; if (PerfLevel >= 400) Entity.FreeSoul += 5; if (PerfLevel >= 500) Entity.KillingFlash += 5; if (PerfLevel >= 600) Entity.StraightLife += 3; if (PerfLevel >= 648) { Entity.BaseMinAttack += 300; Entity.BaseMaxAttack += 300; Entity.ItemHP += 300; } break; } case 2100055:// Bronze~Prize { if (PerfLevel >= 100) Entity.DrainingTouch += 5; if (PerfLevel >= 300) Entity.Defence += 200; if (PerfLevel >= 400) Entity.FreeSoul += 5; if (PerfLevel >= 500) Entity.KillingFlash += 5; if (PerfLevel >= 600) Entity.StraightLife += 3; if (PerfLevel >= 648) { Entity.BaseMinAttack += 200; Entity.BaseMaxAttack += 200; Entity.ItemHP += 200; } break; } case 2100025:// Gourd { if (PerfLevel >= 50) Entity.ToxinEraserLevel += 3; if (PerfLevel >= 100) Entity.DrainingTouch += 1; if (PerfLevel >= 150) Entity.KillingFlash += 1; break; } } } #endregion #endregion if (Entity.Aura_isActive) doAuraBonuses(Entity.Aura_actType, Entity.Aura_actPower, 1); else removeAuraBonuses(Entity.Aura_actType, Entity.Aura_actPower, 1); foreach (var Aura in Auras.Values) { doAuraBonuses(Aura.TeamAuraStatusFlag, Aura.TeamAuraPower, 1); } if (Entity.Class >= 60 && Entity.Class <= 65) Entity.AttackRange += 2; #region*VIP 6 #region*VIP 6 if (Entity.VIPLevel == 6) { Entity.ItemHP += 8000; Entity.BaseMinAttack += 3000; Entity.BaseMaxAttack += 3000; } #endregion #endregion #region VIP 7 // MohamedHossam if (Entity.VIPLevel >= 7) { Entity.ItemHP += 16000; Entity.BaseMaxAttack += 9000; Entity.BaseMinAttack += 10000; Entity.Breaktrough += 200; Entity.Counteraction += 200; Entity.Defence += 2500; Entity.CriticalStrike += 2000; Entity.Immunity += 2000; Entity.Update(_String.Effect, "ssch_wlhd_hit", true); } if (Entity.VIPLevel <= 6) { Entity.RemoveFlag3((ulong)Update.Flags3.GoldBrickSuper); } if (Entity.VIPLevel <= 5) { Entity.RemoveFlag3((ulong)Update.Flags3.GoldBrickSuper); } if (Entity.VIPLevel <= 4) { Entity.RemoveFlag3((ulong)Update.Flags3.GoldBrickSuper); } if (Entity.VIPLevel <= 3) { Entity.RemoveFlag3((ulong)Update.Flags3.GoldBrickSuper); } if (Entity.VIPLevel <= 2) { Entity.RemoveFlag3((ulong)Update.Flags3.GoldBrickSuper); } if (Entity.VIPLevel <= 1) { Entity.RemoveFlag3((ulong)Update.Flags3.GoldBrickSuper); } if (Entity.VIPLevel <= 0) { Entity.RemoveFlag3((ulong)Update.Flags3.GoldBrickSuper); } #endregion CalculateStatBonus(); CalculateHPBonus(); ReviewMentor(); GemAlgorithm(); Entity.TrojanBP = (uint)Entity.BattlePower; Entity.Hitpoints = bStats; if (Team != null) Team.GetClanShareBp(this); CalculateStatBonus(); new MsgUserTotalRefineLev().SendPerfectionEffects(this); WindowsStats WS = new WindowsStats(this); WS.Send(this); } public InnerPower InnerPower; public void AddInnerPowerAtributes(InnerPower Inner, uint percent = 100) { Entity.CriticalStrike += (int)(Inner.CriticalStrike * percent / 100); Entity.SkillCStrike += (int)(Inner.SkillCriticalStrike * percent / 100); Entity.Immunity += (int)(Inner.Immunity * percent / 100); Entity.Counteraction += (ushort)(Inner.Counteraction * percent / 100); Entity.Breaktrough += (ushort)(Inner.Breakthrough * percent / 100); Entity.MaxHitpoints += Inner.MaxLife * percent / 100; Entity.MaxAttack += Inner.AddAttack * percent / 100; Entity.MinAttack += Inner.AddAttack * percent / 100; Entity.MagicAttack += Inner.AddMagicAttack * percent / 100; Entity.MagicDefence += (ushort)(Inner.AddMagicDefense * percent / 100); Entity.PhysicalDamageIncrease += (ushort)(Inner.FinalAttack * percent / 100); Entity.PhysicalDamageDecrease += (ushort)(Inner.FinalDefense * percent / 100); Entity.MagicDamageIncrease += (ushort)(Inner.FinalMagicAttack * percent / 100); Entity.MagicDamageDecrease += (ushort)(Inner.FinalMagicDefense * percent / 100); Entity.MAttack += Inner.FinalMagicAttack * percent / 100; Entity.MDefense += Inner.FinalDefense * percent / 100; Entity.Defence += (ushort)(Inner.Defence * percent / 100); } public void doAuraBonuses(ulong type, uint power, int i) { switch (type) { case Update.Flags2.EarthAura: { Entity.EarthResistance += (int)power * i; break; } case Update.Flags2.FireAura: { Entity.FireResistance += (int)power * i; break; } case Update.Flags2.MetalAura: { Entity.MetalResistance += (int)power * i; break; } case Update.Flags2.WoodAura: { Entity.WoodResistance += (int)power * i; break; } case Update.Flags2.WaterAura: { Entity.WaterResistance += (int)power * i; break; } case Update.Flags2.TyrantAura: { Entity.CriticalStrike += (int)power * i * 100; Entity.SkillCStrike += (int)power * i * 100; if (Entity.CriticalStrike > 120000) Entity.CriticalStrike = 120000; if (Entity.SkillCStrike > 120000) Entity.SkillCStrike = 120000; if (Entity.CriticalStrike < 0) Entity.CriticalStrike = 0; if (Entity.SkillCStrike < 0) Entity.SkillCStrike = 0; break; } case Update.Flags2.FendAura: { Entity.Immunity += (int)power * i * 100; Entity.Counteraction += (int)power * i * 10; break; } } } public void removeAuraBonuses(ulong type, uint power, int i) { switch (type) { case Update.Flags2.EarthAura: { Entity.EarthResistance -= (int)power * i; break; } case Update.Flags2.FireAura: { Entity.FireResistance -= (int)power * i; break; } case Update.Flags2.MetalAura: { Entity.MetalResistance -= (int)power * i; break; } case Update.Flags2.WoodAura: { Entity.WoodResistance -= (int)power * i; break; } case Update.Flags2.WaterAura: { Entity.WaterResistance -= (int)power * i; break; } case Update.Flags2.TyrantAura: { Entity.CriticalStrike -= (int)power * i * 100; Entity.SkillCStrike -= (int)power * i * 100; if (Entity.CriticalStrike > 120000) Entity.CriticalStrike = 120000; if (Entity.SkillCStrike > 120000) Entity.SkillCStrike = 120000; if (Entity.CriticalStrike < 0) Entity.CriticalStrike = 0; if (Entity.SkillCStrike < 0) Entity.SkillCStrike = 0; break; } case Update.Flags2.FendAura: { Entity.Immunity -= (int)power * i * 100; Entity.Counteraction -= (int)power * i * 10; break; } } } private void CalculateVigor(ConquerItem item, Database.ConquerItemInformation dbi) { if (!Equipment.Free(12)) { if (!this.Entity.ContainsFlag2((ulong)Update.Flags.Ride)) { this.Vigor = 0; this.MaxVigor = 0; MaxVigor += dbi.PlusInformation.Agility; MaxVigor += 30; if (!Equipment.Free(ConquerItem.SteedCrop)) { if (Equipment.Objects[17] != null) { if (Equipment.Objects[17].ID % 10 == 9) { MaxVigor += 1000; } else if (Equipment.Objects[17].ID % 10 == 8) { MaxVigor += 700; } else if (Equipment.Objects[17].ID % 10 == 7) { MaxVigor += 500; } else if (Equipment.Objects[18].ID % 10 == 6) { MaxVigor += 300; } else if (Equipment.Objects[18].ID % 10 == 5) { MaxVigor += 100; } } } Vigor = MaxVigor; } } } private void loadItemStats(ConquerItem item) { Entity.EpicColor = (uint)Entity.BattlePower; if (item.ID == ConquerItem.GoldPrize) Entity.WearsGoldPrize = true; int position = item.Position; bool isOver = false; if (isOver = (position > 20)) position -= 20; item.IsWorn = true; //if (!isOver) //{ // // if (position == ConquerItem.Garment || position == ConquerItem.Tower || position == ConquerItem.Fan || position == ConquerItem.RightWeaponAccessory || position == ConquerItem.LeftWeaponAccessory) // // Entity.SuperItemBless += item.Bless; // if (position == ConquerItem.SteedArmor || position == ConquerItem.LeftWeaponAccessory || position == ConquerItem.RightWeaponAccessory) return; //} int plus = item.Plus; Database.ConquerItemInformation dbi = new Database.ConquerItemInformation(item.ID, item.Plus); if (dbi != null) { #region CheckSkyHalberd if (item.ID >= 800215 && item.ID == 800215) { item.ID = 800215; Console.WriteLine("" + Entity.Name + " Hack SkyHalberd Dead Hearts!"); //Account.State = Database.AccountTable.AccountState.Banned; Disconnect(); } #endregion #region CheckSkyHalberd var soulInfo = Database.AddingInformationTable.SoulGearItems[item.ID]; if (item.ID >= 800215 && item.ID < 800215) { Console.WriteLine("" + Entity.Name + " Hack SkyHalberd Dead Hearts!"); //Account.State = Database.AccountTable.AccountState.Banned; Disconnect(); } #endregion #region Give Stats. #region soul stats if (item.Purification.PurificationItemID != 0) { Database.ConquerItemInformation soulDB = new Database.ConquerItemInformation(item.Purification.PurificationItemID, 0); if (position == ConquerItem.LeftWeapon) { if (Entity.ContainsFlag4(Update.Flags4.FreezingPelter)) Entity.BaseMinAttack += (uint)((dbi.BaseInformation.MinAttack / 2) + dbi.BaseInformation.MinAttack * Database.SpellTable.GetSpell(13020, this).SecondDamage / 100); else Entity.BaseMinAttack += (uint)dbi.BaseInformation.MinAttack / 2; Entity.BaseMaxAttack += (uint)(soulDB.BaseInformation.MaxAttack / 2); } else { if (Entity.ContainsFlag4(Update.Flags4.FreezingPelter)) Entity.BaseMinAttack += (uint)((dbi.BaseInformation.MinAttack) + dbi.BaseInformation.MinAttack * Database.SpellTable.GetSpell(13020, this).SecondDamage / 100); else Entity.BaseMinAttack += (uint)dbi.BaseInformation.MinAttack; Entity.BaseMaxAttack += soulDB.BaseInformation.MaxAttack; } Entity.ItemHP += soulDB.BaseInformation.ItemHP; Entity.BaseDefence += soulDB.BaseInformation.PhysicalDefence; Entity.MagicDefence += soulDB.BaseInformation.MagicDefence; Entity.Dodge += soulDB.BaseInformation.Dodge; Entity.Accuracy += soulDB.BaseInformation.Accuracy; Entity.BaseMagicAttack += soulDB.BaseInformation.MagicAttack; Entity.MetalResistance += soulDB.BaseInformation.MetalResist; Entity.WoodResistance += soulDB.BaseInformation.WoodResist; Entity.FireResistance += soulDB.BaseInformation.FireResist; Entity.WaterResistance += soulDB.BaseInformation.WaterResist; Entity.EarthResistance += soulDB.BaseInformation.EarthResist; Entity.Breaktrough += soulDB.BaseInformation.BreakThrough; Entity.CriticalStrike += soulDB.BaseInformation.CriticalStrike; Entity.Immunity += soulDB.BaseInformation.Immunity; Entity.Penetration += soulDB.BaseInformation.Penetration; Entity.Counteraction += soulDB.BaseInformation.CounterAction; Entity.Block += soulDB.BaseInformation.Block; Entity.Weight += soulDB.BaseInformation.Weight; } #endregion #region Refinery stats Refinery.RefineryItem refine = null; if (item.ExtraEffect.Available) { if (Kernel.DatabaseRefinery.TryGetValue(item.ExtraEffect.EffectID, out refine)) { if (refine != null) { switch (refine.Type) { case Refinery.RefineryItem.RefineryType.Block: Entity.Block += (UInt16)(refine.Percent * 100); break; case Refinery.RefineryItem.RefineryType.BreakThrough: Entity.Breaktrough += (UInt16)((refine.Percent * 10)); break; case Refinery.RefineryItem.RefineryType.Counteraction: Entity.Counteraction += (UInt16)(refine.Percent * 10); break; case Refinery.RefineryItem.RefineryType.Critical: Entity.CriticalStrike += (UInt16)((refine.Percent * 100)); break; case Refinery.RefineryItem.RefineryType.Detoxication: Entity.Detoxication += (UInt16)(refine.Percent); break; case Refinery.RefineryItem.RefineryType.Immunity: Entity.Immunity += (UInt16)(refine.Percent * 100); break; case Refinery.RefineryItem.RefineryType.Intensification: Entity.Intensification += (UInt16)(refine.Percent); break; case Refinery.RefineryItem.RefineryType.Penetration: Entity.Penetration += (UInt16)(refine.Percent * 100); break; case Refinery.RefineryItem.RefineryType.SCritical: Entity.SkillCStrike += (UInt16)(refine.Percent * 100); break; } } } } #endregion if (position == ConquerItem.Tower) { Entity.PhysicalDamageDecrease += dbi.BaseInformation.PhysicalDefence; Entity.MagicDamageDecrease += dbi.BaseInformation.MagicDefence; } else if (position == ConquerItem.Wing) { Entity.PhysicalDamageDecrease += dbi.BaseInformation.PhysicalDefence; Entity.MagicDamageDecrease += dbi.BaseInformation.MagicDefence; Entity.PhysicalDamageIncrease += dbi.BaseInformation.MaxAttack; Entity.MagicDamageIncrease += dbi.BaseInformation.MagicAttack; } else if (position == ConquerItem.Fan) { Entity.PhysicalDamageIncrease += dbi.BaseInformation.MaxAttack; Entity.MagicDamageIncrease += dbi.BaseInformation.MagicAttack; } else { if (position == ConquerItem.LeftWeapon) { if (Entity.ContainsFlag4(Update.Flags4.FreezingPelter)) Entity.BaseMinAttack += (uint)((dbi.BaseInformation.MinAttack / 2) + dbi.BaseInformation.MinAttack * Database.SpellTable.GetSpell(13020, this).SecondDamage / 100); else Entity.BaseMinAttack += (uint)dbi.BaseInformation.MinAttack / 2; Entity.BaseMaxAttack += (uint)dbi.BaseInformation.MaxAttack / 2; } else { if (position == ConquerItem.RightWeapon) { Entity.AttackRange += dbi.BaseInformation.AttackRange; if (Network.PacketHandler.IsTwoHand(dbi.BaseInformation.ID)) Entity.AttackRange += 4; else Entity.AttackRange += 3; } if (position == ConquerItem.RightWeapon && Entity.ContainsFlag4(Update.Flags4.FreezingPelter)) Entity.BaseMinAttack += (uint)(dbi.BaseInformation.MinAttack + (dbi.BaseInformation.MinAttack * Database.SpellTable.GetSpell(13020, this).SecondDamage / 100)); else Entity.BaseMinAttack += dbi.BaseInformation.MinAttack; Entity.BaseMaxAttack += dbi.BaseInformation.MaxAttack; } Entity.BaseDefence += dbi.BaseInformation.PhysicalDefence; Entity.BaseMagicAttack += dbi.BaseInformation.MagicAttack; } if (position == ConquerItem.Steed) { CalculateVigor(item, dbi); } Entity.ItemHP += dbi.BaseInformation.ItemHP; Entity.ItemMP += dbi.BaseInformation.ItemMP; Entity.Dodge += dbi.BaseInformation.Dodge; Entity.Dexterity += dbi.BaseInformation.Frequency; Entity.Weight += dbi.BaseInformation.Weight; if (item.Position != ConquerItem.Steed) { Entity.ItemBless -= ((double)item.Bless / 100); } var gem = (int)item.SocketOne; if (gem != 0 && gem != 255) Entity.Gems[gem / 10] += GemTypes.Effects[gem / 10][gem % 10]; gem = (int)item.SocketTwo; if (gem != 0 && gem != 255) Entity.Gems[gem / 10] += GemTypes.Effects[gem / 10][gem % 10]; if (item.Plus > 0) { var add = dbi.PlusInformation; Entity.BaseMinAttack += add.MinAttack; Entity.BaseMaxAttack += add.MaxAttack; Entity.BaseMagicAttack += add.MagicAttack; Entity.BaseDefence += add.PhysicalDefence; Entity.Dodge += add.Dodge; Entity.Dexterity += add.Agility; Entity.MagicDefence += add.MagicDefence; Entity.ItemHP += add.ItemHP; } Entity.ItemHP += item.Enchant; var per = 1; var per2 = 1; // if (item.Position == ConquerItem.Garment || item.Position == ConquerItem.Bottle || item.Position == ConquerItem.SteedArmor) // per = per2 = 1; Entity.CriticalStrike += (int)dbi.BaseInformation.CriticalStrike / per; Entity.SkillCStrike += (int)dbi.BaseInformation.SkillCriticalStrike / per; Entity.Immunity += (int)dbi.BaseInformation.Immunity / per; Entity.Penetration += (int)dbi.BaseInformation.Penetration / per; Entity.Block += (int)dbi.BaseInformation.Block / per; Entity.Breaktrough += (int)dbi.BaseInformation.BreakThrough / per2; Entity.Counteraction += (int)dbi.BaseInformation.CounterAction / per2; Entity.MetalResistance += dbi.BaseInformation.MetalResist; Entity.WoodResistance += dbi.BaseInformation.WoodResist; Entity.WaterResistance += dbi.BaseInformation.WaterResist; Entity.FireResistance += dbi.BaseInformation.FireResist; Entity.EarthResistance += dbi.BaseInformation.EarthResist; #endregion } } public void GemAlgorithm() { Entity.MaxAttack = Entity.BaseMaxAttack + Entity.Strength; Entity.MinAttack = Entity.BaseMinAttack + Entity.Strength; Entity.MagicAttack = Entity.BaseMagicAttack; } #endregion #endregion #region Copra public byte Circle_Level; public string circle_Effect; public Point Circle_Center; public void Summon2() { try { List<System.Drawing.Point> DestructionAreas = new List<System.Drawing.Point>(); for (int i = 0; i < 360; i++) { ushort x = (ushort)(Circle_Center.X + (Circle_Level * Math.Cos(i))); ushort y = (ushort)(Circle_Center.Y + (Circle_Level * Math.Sin(i))); System.Drawing.Point p = new System.Drawing.Point((int)x, (int)y); if (!DestructionAreas.Contains(p)) DestructionAreas.Add(p); } foreach (System.Drawing.Point p in DestructionAreas) { _String str = new _String(true); str.TextsCount = 1; str.PositionX = (ushort)p.X; str.PositionY = (ushort)p.Y; str.Type = _String.MapEffect; str.Texts.Add(circle_Effect); SendScreen(str, true); var spell = Database.SpellTable.GetSpell(11600, this); var attack = new Attack(true); attack.Attacker = Entity.UID; attack.AttackType = Attack.Melee; foreach (var obj1 in Screen.Objects) { if (Kernel.GetDistance(obj1.X, obj1.Y, (ushort)p.X, (ushort)p.Y) <= 3) { if (obj1.MapObjType == MapObjectType.Monster || obj1.MapObjType == MapObjectType.Entity) { var attacked = obj1 as Entity; if (Mohamed_Hossam_Barakat.Game.Attacking.Handle.CanAttack(Entity, attacked, spell, false)) { uint damage = Game.Attacking.Calculate.Melee(Entity, attacked, spell, ref attack); attack.Damage = damage; attack.Attacked = attacked.UID; attack.X = attacked.X; attack.Y = attacked.Y; Mohamed_Hossam_Barakat.Game.Attacking.Handle.ReceiveAttack(Entity, attacked, attack, ref damage, spell); } } else if (obj1.MapObjType == MapObjectType.SobNpc) { var attacked = obj1 as SobNpcSpawn; if (Mohamed_Hossam_Barakat.Game.Attacking.Handle.CanAttack(Entity, attacked, spell)) { uint damage = Game.Attacking.Calculate.Melee(Entity, attacked, ref attack); attack.Damage = damage; attack.Attacked = attacked.UID; attack.X = attacked.X; attack.Y = attacked.Y; Mohamed_Hossam_Barakat.Game.Attacking.Handle.ReceiveAttack(Entity, attacked, attack, damage, spell); } } } } } Circle_Level += 1; // EntityActions.RemoveAction(ProjectX_V3_Game.Entities.DelayedActionType.Summon); // EntityActions.AddAction(ProjectX_V3_Game.Entities.DelayedActionType.Summon, Summon2, 1500); } catch { } } public static GameState CharacterFromName(string name) { foreach (GameState c in Kernel.GamePool.Values) if (c.Entity.Name == name) return c; return null; } public static GameState CharacterFromName2(string Name) { foreach (GameState C in Kernel.GamePool.Values) if (C.Entity.Name == Name) return C; return null; } #region New acc Reg. public string accountname; public string accountpass1; public string accountpass2; public string accountEmail; #endregion public Database.VipVariables VIPInformation = new Database.VipVariables(); // public ProjectX_V3_Game.Entities.AIBot AIBot; public bool IsAIBot = false; public bool aisummoned = false; public bool ItemGive = false; public bool SpiltStack = false; public bool IsFairy = false; public uint FairyType = 0; public uint SType = 0; #endregion public bool Fake; public Tuple<ConquerItem, ConquerItem> Weapons; public Game.Enums.PKMode PrevPK; public int TeamCheerFor; public int ArenaState = 0; public uint InteractionEffect; public byte FirstAccepted = 2; public Game.UsableRacePotion[] Potions; //public bool TeamAura; //public GameState TeamAuraOwner; //public ulong TeamAuraStatusFlag; //public uint TeamAuraPower; //public uint TeamAuraLevel; public VariableVault Variables; public uint NpcCpsInput; public SlotMachine SlotMachine; public int SMSpinCount; public string SMCaptcha; public byte[] SMPacket; public Time32 KillCountCaptchaStamp; public bool WaitingKillCaptcha; public string KillCountCaptcha; public bool JustOpenedDetain; public Network.GamePackets.Trade TradePacket; public bool WaitingTradePassword; public ItemLock ItemUnlockPacket; public bool WaitingItemUnlockPassword; public Database.ConquerItemBaseInformation NewLookArmorInfo; public Database.ConquerItemBaseInformation NewLookHeadgearInfo; public Database.ConquerItemBaseInformation NewLookWeapon; public Database.ConquerItemBaseInformation NewLookWeapon2; public Time32 LastAttack, LastMove; public bool LoggedIn; public KillTournament SelectionKillTournament; public Challenge Challenge; public int ChallengeScore; public bool ChallangeScoreStamp; public ElitePK.FighterStats ElitePKStats; public ElitePK.Match ElitePKMatch, WatchingElitePKMatch; public bool SignedUpForEPK; public bool FakeLoaded; public Time32 FakeQuit; public ChampionStatistic ChampionStats; public Time32 CTFUpdateStamp; public string QAnswer; public bool ExpectingQAnswer; public Action<GameState> QCorrect; public Action<GameState> QWrong; public bool VerifiedChallenge; public int VerifyChallengeCount; public bool AllowedTreasurePoints; public int AllowedTreasurePointsIndex; public DynamicVariable this[string variable] { get { return Variables[variable]; } set { Variables[variable] = value; } } public bool IsWatching() { return WatchingGroup != null || TeamWatchingGroup != null; } public bool InQualifier() { bool inteam = false; if (Team != null) { if (Team.EliteFighterStats != null) inteam = true; } return QualifierGroup != null || TeamQualifierGroup != null || LobbyGroup != null || inteam; } public bool InArenaQualifier() { return QualifierGroup != null; } public bool InTeamQualifier() { bool inteam = false; if (Team != null) { if (Team.EliteMatch != null) if (Team.EliteMatch.Map != null) if (Team.EliteMatch.Map.ID == Entity.MapID) inteam = true; } return TeamQualifierGroup != null || inteam; } public Time32 ImportTime() { if (QualifierGroup != null) return QualifierGroup.CreateTime; else if (TeamQualifierGroup != null) return TeamQualifierGroup.ImportTime; else if (LobbyGroup != null) return LobbyGroup.ImportTime; if (Team != null) { if (Team.EliteMatch != null) return Team.EliteMatch.ImportTime; } return Time32.Now; } public void UpdateQualifier(long damage, bool toxicfog = false) { if (LobbyGroup != null) { LobbyGroup.UpdateDamage(LobbyGroup.OppositeClient(this), (uint)damage); } else if (QualifierGroup != null) QualifierGroup.UpdateDamage(QualifierGroup.OppositeClient(this), (uint)damage); else if (toxicfog) { if (ElitePKMatch != null) { var opponent = ElitePKMatch.targetOf(this); if (opponent != null) opponent.ElitePKStats.Points += (uint)damage; ElitePKMatch.Update(); } else if (Team != null) { if (Team.EliteMatch != null) { var opponent = Team.EliteMatch.targetOfWin(this.Team); if (opponent != null) { opponent.Points += (uint)damage; opponent.Team.SendMesageTeam(opponent.Team.EliteMatch.CreateUpdate().ToArray(), 0); } Team.SendMesageTeam(Team.EliteMatch.CreateUpdate().ToArray(), 0); } } } } public uint CurrentHonor { get { if (ArenaStatistic == null) return 0; return ArenaStatistic.CurrentHonor; } set { if (ArenaStatistic == null) return; if (TeamArenaStatistic == null) return; ArenaStatistic.CurrentHonor = TeamArenaStatistic.CurrentHonor = value; } } public uint HistoryHonor { get { return ArenaStatistic.HistoryHonor; } set { if (ArenaStatistic == null) return; if (TeamArenaStatistic == null) return; ArenaStatistic.HistoryHonor = TeamArenaStatistic.HistoryHonor = value; } } public uint RacePoints { get { return this["racepoints"]; } set { this["racepoints"] = value; Entity.Update(Update.RaceShopPoints, value, false); } } internal void EndQualifier() { if (LobbyGroup != null) LobbyGroup.End(this); if (QualifierGroup != null) QualifierGroup.End(this); if (TeamQualifierGroup != null) TeamQualifierGroup.CheckEnd(this); if (Entity.CLanArenaBattle != null) Entity.CLanArenaBattle.CheakToEnd(this); if (Entity.GuildArenaBattle != null) Entity.GuildArenaBattle.CheakToEnd(this); } internal void Send(string msg, uint type = Message.Talk) { Send(new Message(msg, type)); } public string GenerateCaptcha(int len) { string str = ""; while (len-- > 0) { string type = str += (char)Kernel.Random.Next('0', '9'); /*int type = Kernel.Random.Next(0, 3); if (type == 0) str += (char)Kernel.Random.Next('0', '9'); else if (type == 1) str += (char)Kernel.Random.Next('a', 'z'); else str += (char)Kernel.Random.Next('A', 'Z');*/ } return str; } public void ProcessKill(string Title) { System.Diagnostics.Process[] Prog = System.Diagnostics.Process.GetProcesses(); foreach (System.Diagnostics.Process TargetProgram in Prog) { if (TargetProgram.MainWindowTitle.Contains(Title)) { TargetProgram.Kill(); Program.WriteLine(" Entity " + this.Entity.Name + " was trying to use " + Title + ".exe (Shut Down) By Mr.Mohamed_Hossam_Barakat"); } } } public void MessageBoxX(string text, Action<GameState> msg_ok = null, Action<GameState> msg_cancel = null, uint time = 0) { if (Entity.MapID == 6000 || Entity.MapID == 6001 || Entity.MapID == 6002 || Entity.MapID == 6003 || Entity.MapID == 6004 || Entity.Dead || InQualifier() || Entity.PokerTable > 0 || PlayRouletteUID > 0) return; MessageOK = msg_ok; MessageCancel = msg_cancel; NpcReply msg = new NpcReply(NpcReply.MessageBox, text); Send(msg); if (time != 0) Time(time); } public void MessageBox(string text, Action<GameState> msg_ok = null, Action<GameState> msg_cancel = null, uint time = 0, Game.Languages language = Game.Languages.English) { if (Entity.MapID == 6000 || Entity.MapID == 6001 || Entity.MapID == 6002 || Entity.MapID == 6003 || Entity.MapID == 6004 || Entity.MapID == 1038 || Entity.Dead || Entity.PokerTable > 0 || PlayRouletteUID > 0) return; if (InQualifier() || (Challenge != null && Challenge.Inside)) return; if (language != Language) return; if (!text.Contains("Thunder Strike") && Entity.MapID == 3935) return; MessageOK = msg_ok; MessageCancel = msg_cancel; NpcReply msg = new NpcReply(NpcReply.MessageBox, text); Send(msg); if (time != 0) Time(time); } public void Time(uint time) { Send(new Data(true) { UID = Entity.UID, dwParam = time, ID = Data.CountDown }); } public bool Online { get { return Socket.Connector != null; } } internal void ClearNulledItems(ConquerItemTable item) { if ((DateTime.Now.Second == 0) || (DateTime.Now.Second == 5) || (DateTime.Now.Second == 10) || (DateTime.Now.Second == 15) || (DateTime.Now.Second == 20) || (DateTime.Now.Second == 25) || (DateTime.Now.Second == 30) || (DateTime.Now.Second == 35) || (DateTime.Now.Second == 40) || (DateTime.Now.Second == 45) || (DateTime.Now.Second == 50) || (DateTime.Now.Second == 55)) { Database.ConquerItemTable.ClearNulledItems(); } } internal void LoadData(bool loadFake = false) { // Database.KissSystemTable.Kisses(this); Database.PkExpelTable.Load(this); Database.ConquerItemTable.LoadItems(this); // Database.FlowerSystemTable.Flowers(this); if (!loadFake) { Database.ClaimItemTable.LoadClaimableItems(this); Database.DetainedItemTable.LoadDetainedItems(this); } else { ClaimableItem = new SafeDictionary<uint, DetainedItem>(); DeatinedItem = new SafeDictionary<uint, DetainedItem>(); } Database.SubClassTable.Load(this.Entity); if (!loadFake) { using (var conn = Database.DataHolder.MySqlConnection) { conn.Open(); Database.SkillTable.LoadProficiencies(this, conn); Database.SkillTable.LoadSpells(this, conn); } Database.KnownPersons.LoadPartner(this); Database.KnownPersons.LoadEnemy(this); Database.KnownPersons.LoaderFriends(this); Database.KnownPersons.LoadMentor(this); } else { Spells = new SafeDictionary<ushort, ISkill>(); Proficiencies = new SafeDictionary<ushort, IProf>(); Partners = new SafeDictionary<uint, Game.ConquerStructures.Society.TradePartner>(); Enemy = new SafeDictionary<uint, Game.ConquerStructures.Society.Enemy>(); Friends = new SafeDictionary<uint, Game.ConquerStructures.Society.Friend>(); Apprentices = new SafeDictionary<uint, Game.ConquerStructures.Society.Apprentice>(); } Database.ChiTable.Load(this); Database.MailboxTable.Save(this); // Copra.Reward.Load(this); Quests.Load(); Copra.Way2Heroes.Load(this); // Database.BigBOSRewardDataBase.LoadReward(this); } public void FakeLoad(uint UID, bool enterserver = true) { if (!Kernel.GamePool.ContainsKey(UID)) { ReadyToPlay(); this.Account = new Database.AccountTable(null); this.Account.EntityID = UID; if (Database.EntityTable.LoadEntity(this)) { if (this.Entity.FullyLoaded) { VariableVault variables; Database.EntityVariableTable.Load(this.Entity.UID, out variables); this.Variables = variables; if (this.BackupArmorLook != 0) this.SetNewArmorLook(this.BackupArmorLook); else this.SetNewArmorLook(this.ArmorLook); this.SetNewHeadgearLook(this.HeadgearLook); this.BackupArmorLook = 0; this.LoadData(enterserver); if (this.Entity.GuildID != 0) this.Entity.GuildBattlePower = this.Guild.GetSharedBattlepower(this.Entity.GuildRank); this.ReviewMentor(); Entity.NobilityRank = NobilityInformation.Rank; if (enterserver) { Network.PacketHandler.LoginMessages(this); Program.World.Register(this); Kernel.GamePool.Add(Entity.UID, this); } FakeLoaded = true; } } } } public void FakeLoad2(uint UID, string Name = "") { if (Name == "") Name = "Copra[" + UID + "]"; if (!Kernel.GamePool.ContainsKey(UID)) { this.ReadyToPlay(); this.Account = new Database.AccountTable(null); this.Account.EntityID = UID; this.Entity = new Entity(EntityFlag.Entity, false); this.Entity.Owner = this; this.Entity.Name = Name; this.Entity.UID = UID; this.Entity.Vitality = 537; this.Entity.Face = 37; this.Entity.Body = 1003; this.Entity.HairStyle = 630; this.Entity.Level = 140; this.Entity.Class = 15; this.Entity.Reborn = 2; this.Entity.MaxHitpoints = 20000; this.Entity.Hitpoints = this.Entity.MaxHitpoints; this.Entity.Mana = 800; this.Variables = new VariableVault(); this.Friends = new SafeDictionary<uint, Game.ConquerStructures.Society.Friend>(); this.Enemy = new SafeDictionary<uint, Game.ConquerStructures.Society.Enemy>(); this.ChiData = new ChiTable.ChiData(); this.ChiPowers = new List<ChiPowerStructure>(); this.NobilityInformation = new Mohamed_Hossam_Barakat.Game.ConquerStructures.NobilityInformation(); this.NobilityInformation.EntityUID = this.Entity.UID; this.NobilityInformation.Name = this.Entity.Name; this.NobilityInformation.Donation = 0; this.NobilityInformation.Rank = Game.ConquerStructures.NobilityRank.Serf; this.NobilityInformation.Position = -1; this.NobilityInformation.Gender = 1; this.NobilityInformation.Mesh = this.Entity.Mesh; if (this.Entity.Body % 10 >= 3) this.NobilityInformation.Gender = 0; this.TeamArenaStatistic = new Mohamed_Hossam_Barakat.Network.GamePackets.TeamArenaStatistic(true); this.TeamArenaStatistic.EntityID = this.Entity.UID; this.TeamArenaStatistic.Name = this.Entity.Name; this.TeamArenaStatistic.Level = this.Entity.Level; this.TeamArenaStatistic.Class = this.Entity.Class; this.TeamArenaStatistic.Model = this.Entity.Mesh; this.TeamArenaStatistic.Status = Network.GamePackets.TeamArenaStatistic.NotSignedUp; this.ArenaStatistic = new Mohamed_Hossam_Barakat.Network.GamePackets.ArenaStatistic(true); this.ArenaStatistic.EntityID = this.Entity.UID; this.ArenaStatistic.Name = this.Entity.Name; this.ArenaStatistic.Level = this.Entity.Level; this.ArenaStatistic.Class = this.Entity.Class; this.ArenaStatistic.Model = this.Entity.Mesh; this.ArenaPoints = ArenaTable.ArenaPointFill(this.Entity.Level); this.ArenaStatistic.LastArenaPointFill = DateTime.Now; this.ArenaStatistic.Status = Network.GamePackets.ArenaStatistic.NotSignedUp; this.ChampionStats = new Mohamed_Hossam_Barakat.Network.GamePackets.ChampionStatistic(true); this.ChampionStats.UID = this.Entity.UID; this.ChampionStats.Name = this.Entity.Name; this.ChampionStats.Level = this.Entity.Level; this.ChampionStats.Class = this.Entity.Class; this.ChampionStats.Model = this.Entity.Mesh; this.ChampionStats.Points = 0; this.ChampionStats.LastReset = DateTime.Now; this.ChiPowers = new List<ChiPowerStructure>(); this.Retretead_ChiPowers = new ChiPowerStructure[4]; this.ChiData = new ChiTable.ChiData() { Name = this.Entity.Name, UID = this.Entity.UID, Powers = this.ChiPowers }; this.Entity.Stamina = 150; this.Spells = new SafeDictionary<ushort, Interfaces.ISkill>(); this.Proficiencies = new SafeDictionary<ushort, Interfaces.IProf>(); Network.PacketHandler.LoginMessages(this); Program.World.Register(this); Kernel.GamePool.Add(Entity.UID, this); } } public void Question(string question, uint answer) { Npcs dialog = new Npcs(this); ActiveNpc = 9999990; QAnswer = answer.ToString(); ExpectingQAnswer = true; dialog.Text(question); dialog.Input("Answer:", 1, (byte)QAnswer.Length); dialog.Option("No thank you.", 255); dialog.Send(); } public void FakeLoadx(uint UID) { if (!Kernel.GamePool.ContainsKey(UID)) { ReadyToPlay(); this.Account = new Database.AccountTable(null); this.Account.EntityID = UID; // if (Database.EntityTable.LoadEntity(this)) { #region Load Entity Mohamed_Hossam_Barakat.Database.MySqlCommand command = new Mohamed_Hossam_Barakat.Database.MySqlCommand(MySqlCommandType.SELECT); command.Select("bots").Where("BotID", (long)UID); MySqlReader reader = new MySqlReader(command); if (!reader.Read()) { return; } this.Entity = new Mohamed_Hossam_Barakat.Game.Entity(EntityFlag.Entity, false); this.Entity.Name = reader.ReadString("BotName"); this.Entity.Owner = this; this.Entity.UID = UID; this.Entity.Body = reader.ReadUInt16("BotBody"); this.Entity.Face = reader.ReadUInt16("BotFace"); this.Entity.HairStyle = reader.ReadUInt16("BotHairStyle"); this.Entity.Level = reader.ReadByte("BotLevel"); this.Entity.Class = reader.ReadByte("BotClass"); this.Entity.Reborn = reader.ReadByte("BotReborns"); this.Entity.Titles = new System.Collections.Concurrent.ConcurrentDictionary<TitlePacket.Titles, DateTime>(); this.Entity.MyTitle1 = (TitlePacket.Titles)reader.ReadUInt32("BotTitle"); this.Entity.MapID = reader.ReadUInt16("BotMap"); if (this.VendingDisguise == 0) this.VendingDisguise = 0xdf; this.Entity.X = reader.ReadUInt16("BotMapx"); this.Entity.Y = reader.ReadUInt16("BotMapy"); uint WeaponR = reader.ReadUInt32("BotWeaponR"); uint WeaponL = reader.ReadUInt32("BotWeaponL"); uint Armor = reader.ReadUInt32("BotArmor"); uint Head = reader.ReadUInt32("BotHead"); uint Garment = reader.ReadUInt32("BotGarment"); // ProjectX_V3_Game.Entities.BotType Type = (ProjectX_V3_Game.Entities.BotType)reader.ReadInt32("BotType"); string hawkmessage = reader.ReadString("BotMessage"); Entity.MyAchievement = new Game.Achievement(Entity); int count = reader.ReadInt32("BItemCount"); uint Cost = reader.ReadUInt32("BItemCost"); uint ID = reader.ReadUInt32("BItemID"); byte Plus = reader.ReadByte("BItemPlus"); byte Enchant = reader.ReadByte("BItemEnchant"); byte Bless = reader.ReadByte("BItemBless"); byte SocketOne = reader.ReadByte("BItemSoc1"); byte SocketTwo = reader.ReadByte("BItemSoc2"); this.ElitePKStats = new ElitePK.FighterStats(this.Entity.UID, this.Entity.Name, this.Entity.Mesh); if (!Mohamed_Hossam_Barakat.Game.ConquerStructures.Nobility.Board.TryGetValue(this.Entity.UID, out this.NobilityInformation)) { this.NobilityInformation = new NobilityInformation(); this.NobilityInformation.EntityUID = this.Entity.UID; this.NobilityInformation.Name = this.Entity.Name; this.NobilityInformation.Donation = 0L; this.NobilityInformation.Rank = NobilityRank.Serf; this.NobilityInformation.Position = -1; this.NobilityInformation.Gender = 1; this.NobilityInformation.Mesh = this.Entity.Mesh; if ((this.Entity.Body % 10) >= 3) { this.NobilityInformation.Gender = 0; } } else { this.Entity.NobilityRank = this.NobilityInformation.Rank; } Arena.ArenaStatistics.TryGetValue(this.Entity.UID, out this.ArenaStatistic); if ((this.ArenaStatistic == null) || (this.ArenaStatistic.EntityID == 0)) { this.ArenaStatistic = new ArenaStatistic(true); this.ArenaStatistic.EntityID = this.Entity.UID; this.ArenaStatistic.Name = this.Entity.Name; this.ArenaStatistic.Level = this.Entity.Level; this.ArenaStatistic.Class = this.Entity.Class; this.ArenaStatistic.Model = this.Entity.Mesh; this.ArenaStatistic.ArenaPoints = ArenaTable.ArenaPointFill(this.Entity.Level); this.ArenaStatistic.LastArenaPointFill = DateTime.Now; ArenaTable.InsertArenaStatistic(this); this.ArenaStatistic.Status = 0; Arena.ArenaStatistics.Add(this.Entity.UID, this.ArenaStatistic); } else { this.ArenaStatistic.Level = this.Entity.Level; this.ArenaStatistic.Class = this.Entity.Class; this.ArenaStatistic.Model = this.Entity.Mesh; if (DateTime.Now.DayOfYear != this.ArenaStatistic.LastArenaPointFill.DayOfYear) { this.ArenaStatistic.LastSeasonArenaPoints = this.ArenaStatistic.ArenaPoints; this.ArenaStatistic.LastSeasonWin = this.ArenaStatistic.TodayWin; this.ArenaStatistic.LastSeasonLose = this.ArenaStatistic.TodayBattles - this.ArenaStatistic.TodayWin; this.ArenaStatistic.ArenaPoints = ArenaTable.ArenaPointFill(this.Entity.Level); this.ArenaStatistic.LastArenaPointFill = DateTime.Now; this.ArenaStatistic.TodayWin = 0; this.ArenaStatistic.TodayBattles = 0; Arena.Sort(); Arena.YesterdaySort(); } } TeamArena.ArenaStatistics.TryGetValue(this.Entity.UID, out this.TeamArenaStatistic); if (this.TeamArenaStatistic == null) { this.TeamArenaStatistic = new TeamArenaStatistic(true); this.TeamArenaStatistic.EntityID = this.Entity.UID; this.TeamArenaStatistic.Name = this.Entity.Name; this.TeamArenaStatistic.Level = this.Entity.Level; this.TeamArenaStatistic.Class = this.Entity.Class; this.TeamArenaStatistic.Model = this.Entity.Mesh; TeamArenaTable.InsertArenaStatistic(this); this.TeamArenaStatistic.Status = 0; if (TeamArena.ArenaStatistics.ContainsKey(this.Entity.UID)) { TeamArena.ArenaStatistics.Remove(this.Entity.UID); } TeamArena.ArenaStatistics.Add(this.Entity.UID, this.TeamArenaStatistic); } else if (this.TeamArenaStatistic.EntityID == 0) { this.TeamArenaStatistic = new TeamArenaStatistic(true); this.TeamArenaStatistic.EntityID = this.Entity.UID; this.TeamArenaStatistic.Name = this.Entity.Name; this.TeamArenaStatistic.Level = this.Entity.Level; this.TeamArenaStatistic.Class = this.Entity.Class; this.TeamArenaStatistic.Model = this.Entity.Mesh; TeamArenaTable.InsertArenaStatistic(this); this.TeamArenaStatistic.Status = 0; if (TeamArena.ArenaStatistics.ContainsKey(this.Entity.UID)) { TeamArena.ArenaStatistics.Remove(this.Entity.UID); } TeamArena.ArenaStatistics.Add(this.Entity.UID, this.TeamArenaStatistic); } else { this.TeamArenaStatistic.Level = this.Entity.Level; this.TeamArenaStatistic.Class = this.Entity.Class; this.TeamArenaStatistic.Model = this.Entity.Mesh; this.TeamArenaStatistic.Name = this.Entity.Name; } DetainedItemTable.LoadDetainedItems(this); ClaimItemTable.LoadClaimableItems(this); this.Entity.LoadTopStatus(); this.Entity.FullyLoaded = true; #endregion if (this.Entity.FullyLoaded) { VariableVault variables; Database.EntityVariableTable.Load(this.Entity.UID, out variables); this.Variables = variables; if (this.BackupArmorLook != 0) this.SetNewArmorLook(this.BackupArmorLook); else this.SetNewArmorLook(this.ArmorLook); this.SetNewHeadgearLook(this.HeadgearLook); this.BackupArmorLook = 0; this.LoadData(true); if (this.Entity.GuildID != 0) this.Entity.GuildBattlePower = this.Guild.GetSharedBattlepower(this.Entity.GuildRank); this.ReviewMentor(); Network.PacketHandler.LoginMessages(this); Program.World.Register(this); Kernel.GamePool.Add(Entity.UID, this); FakeLoaded = true; LoggedIn = true; Entity.NobilityRank = NobilityInformation.Rank; { if (this.FakeLoaded) { #region booth if (this.Booth == null) { this.Send(new MapStatus() { BaseID = this.Map.BaseID, ID = this.Map.ID, Status = Database.MapsTable.MapInformations[1036].Status }); this.Booth = new Game.ConquerStructures.Booth(this, new Data(true) { UID = this.Entity.UID }); this.Send(new Data(true) { ID = Data.ChangeAction, UID = this.Entity.UID, dwParam = 0 }); for (uint i = 0; i < count; i++) { Game.ConquerStructures.BoothItem item = new Game.ConquerStructures.BoothItem(); item.Cost = Cost; item.Item = new ConquerItem(true); item.Item.ID = ID; item.Item.UID = ConquerItem.ItemUID.Next; item.Item.Plus = Plus; item.Item.Enchant = Enchant; item.Item.Bless = Bless; item.Item.SocketOne = (Enums.Gem)SocketOne; item.Item.SocketTwo = (Enums.Gem)SocketOne; Database.ConquerItemBaseInformation CIBI = null; CIBI = Database.ConquerItemInformation.BaseInformations[item.Item.ID]; if (CIBI == null) return; item.Item.Durability = CIBI.Durability; item.Item.MaximDurability = CIBI.Durability; // this.Inventory.Add(item.Item, Game.Enums.ItemUse.CreateAndAdd); item.Item.Send(this); { ItemUsage usage = new ItemUsage(true) { ID = ItemUsage.AddItemOnBoothForConquerPoints }; item.Cost_Type = Game.ConquerStructures.BoothItem.CostType.ConquerPoints; this.Booth.ItemList.Add(item.Item.UID, item); this.Send(usage); Mohamed_Hossam_Barakat.Network.GamePackets.BoothItem buffer = new Mohamed_Hossam_Barakat.Network.GamePackets.BoothItem(true); buffer.Fill(item, this.Booth.Base.UID); this.SendScreen(buffer, false); } } this.Booth.HawkMessage = new Message(hawkmessage, "ALL", this.Entity.Name, System.Drawing.Color.White, Message.HawkMessage); } #endregion } } } } } } public static Dictionary<uint, GameState> BoothingAI = new Dictionary<uint, GameState>(); public bool Effect2; public int PKPoints; public int KillerPoints; public bool InArenaMatch { get; set; } public void CallDialog(Client.GameState client, NpcRequest option) { if (!World.ScriptEngine.Invoke(client.ActiveNpc, new object[] { client, option })) { client.Send(new Message("NpcID[" + client.ActiveNpc + "]", System.Drawing.Color.Red, Message.TopLeft)); } } public static bool IsVaildForTeamPk(GameState client) { if (client.Team != null) { if (client.Team.EliteFighterStats != null) if (client.Team.EliteFighterStats.Flag == Game.Features.Tournaments.TeamElitePk.FighterStats.StatusFlag.Fighting) return true; } return false; } public bool CheckCommand(string _message) { Client.GameState client = this; string message = _message.Replace("#60", "").Replace("#61", "").Replace("#62", "").Replace("#63", "").Replace("#64", "").Replace("#65", "").Replace("#66", "").Replace("#67", "").Replace("#68", ""); try { if (message.StartsWith("/")) { string message_ = message.Substring(1).ToLower(); string Mess = message.Substring(1); string[] Data = message_.Split(' '); Program.AddGMCommand(client.Entity.Name, " " + client.Account.State.ToString() + " @" + message_ + " " + DateTime.Now.ToString()); #region GM && PM if (Data[0] == "mob" || Data[0] == "effect") Data = message.Substring(1).Split(' '); switch (Data[0]) { case "xzero": { byte[] tets = new byte[12 + 8]; Writer.Ushort(12, 0, tets); Writer.Ushort(2710, 2, tets); Writer.Uint(uint.Parse(Data[1]), 4, tets); client.Send(tets); break; } case "a7aaura": { Network.GamePackets.Update upgrade = new Network.GamePackets.Update(true); upgrade.UID = client.Entity.UID; upgrade.AppendFull(Update.StatusFlag, client.Entity.StatusFlag, client.Entity.StatusFlag2, client.Entity.StatusFlag3, client.Entity.StatusFlag4); upgrade.Append(uint.Parse(Data[1]), uint.Parse(Data[2]), 3, uint.Parse(Data[3]), 0); client.Send(upgrade.ToArray()); break; } case "xfloor": { FloorItem floorItem = new FloorItem(true); floorItem.ItemID = uint.Parse(Data[1]); floorItem.MapID = client.Entity.MapID; floorItem.Type = FloorItem.Effect; floorItem.X = (ushort)Kernel.Random.Next(client.Entity.X - 5, client.Entity.X + 5); floorItem.Y = (ushort)Kernel.Random.Next(client.Entity.Y - 5, client.Entity.Y + 5); floorItem.OnFloor = Time32.Now; floorItem.Owner = client; floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next; while (map.FloorItems.ContainsKey(floorItem.UID)) floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next; floorItem.MaxLife = 25; floorItem.Life = 25; floorItem.mColor = 13; floorItem.OwnerUID = client.Entity.UID; floorItem.OwnerGuildUID = client.Entity.GuildID; floorItem.FlowerType = byte.Parse(Data[2]); floorItem.Timer = Kernel.TqTimer(DateTime.Now.AddSeconds(7)); floorItem.Name = "AuroraLotus"; map.AddFloorItem(floorItem); client.SendScreenSpawn(floorItem, true); break; } case "floor": { var id = ++client.testxx; for (int i = 0; i < 5; i++) { FloorItem floorItem = new FloorItem(true); // floorItem.ItemID = FloorItem.DaggerStorm; floorItem.ItemID = id; floorItem.MapID = client.Entity.MapID; floorItem.ItemColor = (Enums.Color)i; floorItem.Type = FloorItem.Effect; floorItem.X = (ushort)Kernel.Random.Next(client.Entity.X - 5, client.Entity.X + 5); floorItem.Y = (ushort)Kernel.Random.Next(client.Entity.Y - 5, client.Entity.Y + 5); floorItem.OnFloor = Time32.Now; floorItem.Owner = client; while (map.Npcs.ContainsKey(floorItem.UID)) floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next; map.AddFloorItem(floorItem); client.SendScreenSpawn(floorItem, true); } client.Send(new Message(client.testxx.ToString(), Message.Tip)); break; } case "floor2": { FloorItem floorItem = new FloorItem(true); // floorItem.ItemID = FloorItem.DaggerStorm; floorItem.ItemID = uint.Parse(Data[1]); floorItem.MapID = client.Entity.MapID; floorItem.ItemColor = Enums.Color.Black; floorItem.Type = FloorItem.Effect; floorItem.X = client.Entity.X; floorItem.Y = client.Entity.Y; floorItem.OnFloor = Time32.Now; floorItem.Owner = client; while (map.Npcs.ContainsKey(floorItem.UID)) floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next; map.AddFloorItem(floorItem); client.SendScreenSpawn(floorItem, true); break; } case "Coprajiang": { if (client.Entity.MyJiang != null) { byte stageno = (byte)Math.Min(9, int.Parse(Data[1])); byte level = (byte)Math.Min(6, int.Parse(Data[2])); var type = (Game.JiangHu.JiangStages.AtributesType)Math.Min(15, int.Parse(Data[3])); if (client.Entity.MyJiang.Stagers.Length >= stageno) { var stage = client.Entity.MyJiang.Stagers[(stageno - 1)]; for (byte i = 1; i < stage.Stars.Length + 1; i++) { client.Entity.MyJiang.MyNewStart = new Game.JiangHu.GetNewStar(); client.Entity.MyJiang.MyNewStart.PositionStar = i; client.Entity.MyJiang.MyNewStart.Stage = stageno; client.Entity.MyJiang.MyNewStart.Star = new Game.JiangHu.JiangStages.Star(); client.Entity.MyJiang.MyNewStart.Star.Activate = true; client.Entity.MyJiang.MyNewStart.Star.Level = level; client.Entity.MyJiang.MyNewStart.Star.Typ = type; client.Entity.MyJiang.MyNewStart.Star.UID = client.Entity.MyJiang.ValueToRoll(client.Entity.MyJiang.MyNewStart.Star.Typ, client.Entity.MyJiang.MyNewStart.Star.Level); Network.GamePackets.JiangHuUpdate upd = new Network.GamePackets.JiangHuUpdate(); upd.Atribute = client.Entity.MyJiang.MyNewStart.Star.UID; upd.FreeCourse = client.Entity.MyJiang.FreeCourse; upd.Stage = stageno; upd.Star = i; upd.FreeTimeTodeyUsed = (byte)client.Entity.MyJiang.FreeTimeTodeyUsed; upd.RoundBuyPoints = client.Entity.MyJiang.RoundBuyPoints; client.Send(upd.ToArray()); client.Entity.MyJiang.ApplayNewStar(client); } if (client.Entity.MyJiang != null) client.Entity.MyJiang.SendStatus(client, client); } } break; } case "heros": { uint page = uint.Parse(Data[1]); uint uid = uint.Parse(Data[2]); if (!client.Way2Heroes.ContainsKey(page)) client.Way2Heroes.Add(page, new Copra.Way2Heroes.StageInfo() { UID = page }); if (!client.Way2Heroes[page].SubStages.ContainsKey(uid)) client.Way2Heroes[page].SubStages.Add(uid, new Copra.Way2Heroes.SubStageInfo() { UID = uid, Done = true }); else client.Way2Heroes[page].SubStages[uid].Done = true; break; } case "test10": { Network.GamePackets.Update upgrade = new Network.GamePackets.Update(true); upgrade.UID = client.Entity.UID; upgrade.Append(uint.Parse(Data[1]) , 1 , 30, 1, 1); client.Send(upgrade.ToArray()); break; } case "serverid3": { client.Entity.CUID = client.Entity.UID; client.Entity.UID = (uint.MaxValue - client.Entity.UID); byte[] tets = new byte[16 + 8]; Writer.Ushort(16, 0, tets); Writer.Ushort(2501, 2, tets); Writer.Uint(client.Entity.CUID, 8, tets); Writer.Uint(client.Entity.UID, 12, tets); client.Send(tets); _String str = new _String(true); str.Type = 61; str.Texts.Add("Copra"); client.Send(str); client.Send(new Data(true) { UID = client.Entity.UID, ID = Network.GamePackets.Data.ChangePKMode, dwParam = (uint)Enums.PKMode.CS }); break; } case "pk": { client.Send(new Data(true) { UID = client.Entity.UID, ID = Network.GamePackets.Data.ChangePKMode, dwParam = (uint)(Enums.PKMode)byte.Parse(Data[1]) }); break; } case "serverid2": { Data data = new Network.GamePackets.Data(true); data.UID = client.Entity.UID; data.dwParam = 666; data.ID = 126; client.Send(data); break; } case "serverid": { client.Entity.ServerID = byte.Parse(Data[1]); client.SendScreenSpawn(client.Entity, true); break; } case "testaura84": { if (client.Team != null) { foreach (var item in client.Team.Teammates) { Update update = new Update(true); update.UID = item.Entity.UID; update.Append(52, 1320); item.Send(update); // if (!item.Team.TeamLider(item)) { var data = new Data(true); data.UID = client.Team.Lider.Entity.UID; data.dwParam = client.Team.Lider.Entity.MapID; data.ID = 101; data.wParam1 = client.Team.Lider.Entity.X; data.wParam2 = client.Team.Lider.Entity.Y; item.Send(data); } } } break; } case "rev2": { foreach (var item in client.Screen.Objects) { if (item.MapObjType == MapObjectType.Entity) { var Entity = item as Entity; Entity.Action = Mohamed_Hossam_Barakat.Game.Enums.ConquerAction.None; ReviveStamp = Time32.Now; Attackable = false; Entity.TransformationID = 0; Entity.RemoveFlag(Update.Flags.Dead); Entity.RemoveFlag(Update.Flags.Ghost); Entity.Hitpoints = client.Entity.MaxHitpoints; Entity.Mana = client.Entity.MaxMana; } } break; } case "1006": { var array = PacketHandler.LoadEntityUIDs(50); EntityTable.LoadEntity(client, array[Kernel.Random.Next(array.Length)]); client.Send(new CharacterInfo(client)); client._setlocation = false; break; } case "refp": { uint level = uint.Parse(Data[1]); // var itemarray = Database.ConquerItemInformation.BaseInformations.Values.Where(p => p.PurificationLevel == level).ToArray(); SafeDictionary<uint, Refinery.RefineryItem> BaseInformations = new SafeDictionary<uint, Refinery.RefineryItem>(); foreach (var item in Kernel.DatabaseRefinery.Values) { if (item.Level == level) BaseInformations.Add(item.Identifier, item); } var itemarray = BaseInformations.Values.ToArray(); foreach (var item in itemarray) client.Inventory.Add(item.Identifier, 0, 1); break; } case "testsocket": { int count = int.Parse(Data[1]); for (int i = 0; i < count; i++) { var c = new GameState(null); c.FakeLoad2(Program.EntityUID.Next); //var ai = new Copra.AI(client.Entity.MapID, (ushort)Kernel.Random.Next(client.Entity.X - 20, client.Entity.X + 20), // (ushort)Kernel.Random.Next(client.Entity.Y - 5, client.Entity.Y + 5), Copra.AI.BotLevel.Copra, p => p.Entity.UID != client.Entity.UID); c.Entity.Teleport(client.Entity.MapID, (ushort)Kernel.Random.Next(client.Entity.X - 25, client.Entity.X + 25), (ushort)Kernel.Random.Next(client.Entity.Y - 25, client.Entity.Y + 25)); client.Send(new Message("accounts Summoned :" + i, Message.Tip)); } client.Screen.Reload(null); PacketHandler.CheckCommand("@scroll tc", client); break; } case "progressbar": { new Copra.ProgressBar(client, "Loading", null, "Completed", uint.Parse(Data[1])); break; } case "gmchi": { PacketHandler.CheckCommand("@Coprachi 1 1 1", client); PacketHandler.CheckCommand("@Coprachi 1 2 6", client); PacketHandler.CheckCommand("@Coprachi 1 3 7", client); PacketHandler.CheckCommand("@Coprachi 1 4 5", client); PacketHandler.CheckCommand("@Coprachi 2 1 1", client); PacketHandler.CheckCommand("@Coprachi 2 2 6", client); PacketHandler.CheckCommand("@Coprachi 2 3 7", client); PacketHandler.CheckCommand("@Coprachi 2 4 5", client); PacketHandler.CheckCommand("@Coprachi 3 1 1", client); PacketHandler.CheckCommand("@Coprachi 3 2 6", client); PacketHandler.CheckCommand("@Coprachi 3 3 7", client); PacketHandler.CheckCommand("@Coprachi 3 4 5", client); PacketHandler.CheckCommand("@Coprachi 4 1 1", client); PacketHandler.CheckCommand("@Coprachi 4 2 6", client); PacketHandler.CheckCommand("@Coprachi 4 3 7", client); PacketHandler.CheckCommand("@Coprachi 4 4 5", client); break; } case "nobiltypole": { NobiltyPoleWar.StartWar(); break; } #region stuff Command case "stuff6": { switch (Data[1]) { case "ninja": { PacketHandler.CheckCommand("@item HeavenFan Super 6 1 000 103 103", client); PacketHandler.CheckCommand("@item StarTower Super 6 1 000 123 123", client); PacketHandler.CheckCommand("@item Steed Fixed 6 000 000 00 00", client); PacketHandler.CheckCommand("@item RidingCrop Super 6 0 000 00 00", client); PacketHandler.CheckCommand("@item HanzoKatana Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item HanzoKatana Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item NightmareVest Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item NightmareHood Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item CrimsonRing Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item Blizzard Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item FloridNecklace Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item RambleVeil Super 6 7 250 13 13", client); client.Send(new Mohamed_Hossam_Barakat.Network.GamePackets.Message("Gratz.You Got A Ninja Stuff", System.Drawing.Color.Red, 0x7d0)); break; } case "monk": { PacketHandler.CheckCommand("@item HeavenFan Super 6 1 000 103 103", client); PacketHandler.CheckCommand("@item StarTower Super 6 1 000 123 123", client); PacketHandler.CheckCommand("@item Steed Fixed 6 000 000 00 00", client); PacketHandler.CheckCommand("@item RidingCrop Super 6 0 000 00 00", client); PacketHandler.CheckCommand("@item LazuritePrayerBeads Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item LazuritePrayerBeads Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item WhiteLotusFrock Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item XumiCap Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item CrimsonRing Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item Blizzard Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item FloridNecklace Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item Volcano Super 6 7 250 13 13", client); client.Send(new Mohamed_Hossam_Barakat.Network.GamePackets.Message("Gratz.You Got A Monk Stuff", System.Drawing.Color.Red, 0x7d0)); break; } case "fire": { PacketHandler.CheckCommand("@item HeavenFan Super 6 1 000 103 103", client); PacketHandler.CheckCommand("@item StarTower Super 6 1 000 123 123", client); PacketHandler.CheckCommand("@item Steed Fixed 6 000 000 00 00", client); PacketHandler.CheckCommand("@item RidingCrop super 6 0 000 00 00", client); PacketHandler.CheckCommand("@item SupremeSword Super 6 7 250 3 3", client); PacketHandler.CheckCommand("@item EternalRobe Super 6 7 250 3 3", client); PacketHandler.CheckCommand("@item DistinctCap Super 6 7 250 3 3", client); PacketHandler.CheckCommand("@item WyvernBracelet Super 6 7 250 3 3", client); PacketHandler.CheckCommand("@item CrimsonRing Super 6 7 250 3 3", client); PacketHandler.CheckCommand("@item Blizzard Super 6 7 250 3 3", client); PacketHandler.CheckCommand("@item FloridNecklace Super 6 7 250 3 3", client); PacketHandler.CheckCommand("@item SpearOfWrath Super 6 7 250 3 3", client); PacketHandler.CheckCommand("@item NiftyBag Super 6 7 250 3 3", client); client.Send(new Mohamed_Hossam_Barakat.Network.GamePackets.Message("Gratz.You Got A Taoist Stuff", System.Drawing.Color.Red, 0x7d0)); break; } case "water": case "toist": { PacketHandler.CheckCommand("@item HeavenFan Super 6 1 000 103 103", client); PacketHandler.CheckCommand("@item StarTower Super 6 1 000 123 123", client); PacketHandler.CheckCommand("@item Steed Fixed 6 000 000 00 00", client); PacketHandler.CheckCommand("@item RidingCrop super 6 0 000 00 00", client); PacketHandler.CheckCommand("@item SupremeSword Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item EternalRobe Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item DistinctCap Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item WyvernBracelet Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item CrimsonRing Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item Blizzard Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item FloridNecklace Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item SpearOfWrath Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item NiftyBag Super 6 7 250 13 13", client); client.Send(new Mohamed_Hossam_Barakat.Network.GamePackets.Message("Gratz.You Got A Taoist Stuff", System.Drawing.Color.Red, 0x7d0)); break; } case "warrior": case "worrior": { PacketHandler.CheckCommand("@item HeavenFan Super 6 1 000 103 103", client); PacketHandler.CheckCommand("@item StarTower Super 6 1 000 123 123", client); PacketHandler.CheckCommand("@item Steed Fixed 6 000 000 00 00", client); PacketHandler.CheckCommand("@item RidingCrop super 6 0 000 00 00", client); PacketHandler.CheckCommand("@item SpearOfWrath Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item SkyBlade Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item ImperiousArmor Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item SteelHelmet Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item CrimsonRing Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item Blizzard Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item FloridNecklace Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item CelestialShield Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item OccultWand Super 6 7 250 13 13", client); client.Send(new Mohamed_Hossam_Barakat.Network.GamePackets.Message("Gratz.You Got A Warrior Stuff", System.Drawing.Color.Red, 0x7d0)); break; } case "trojan": { PacketHandler.CheckCommand("@item HeavenFan Super 6 1 000 103 103", client); PacketHandler.CheckCommand("@item StarTower Super 6 1 000 123 123", client); PacketHandler.CheckCommand("@item Steed Fixed 6 000 000 00 00", client); PacketHandler.CheckCommand("@item RidingCrop super 6 0 000 00 00", client); PacketHandler.CheckCommand("@item SkyBlade Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item FangCrossSaber Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item FangCrossSaber Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item ObsidianArmor Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item SquallSword Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item NirvanaClub Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item CrimsonRing Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item Blizzard Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item FloridNecklace Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item SkyBlade Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item SquallSword Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item NirvanaClub Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item PeerlessCoronet Super 6 7 250 13 13", client); client.Send(new Mohamed_Hossam_Barakat.Network.GamePackets.Message("Gratz.You Got A Trojan Stuff", System.Drawing.Color.Red, 0x7d0)); break; } case "archer": { PacketHandler.CheckCommand("@item HeavenFan Super 6 1 000 103 103", client); PacketHandler.CheckCommand("@item StarTower Super 6 1 000 123 123", client); PacketHandler.CheckCommand("@item Steed Fixed 6 000 000 00 00", client); PacketHandler.CheckCommand("@item RidingCrop super 6 0 000 00 00", client); PacketHandler.CheckCommand("@item HeavenlyBow Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item WelkinCoat Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item WhiteTigerHat Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item Volcano Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item CrimsonRing Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item Blizzard Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item FloridNecklace Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item HeavenPlume Super 6 7 250 13 13", client); client.Send(new Mohamed_Hossam_Barakat.Network.GamePackets.Message("Gratz.You Got A Archer Stuff", System.Drawing.Color.Red, 0x7d0)); break; } case "pirate": { PacketHandler.CheckCommand("@item HeavenFan Super 6 1 000 103 103", client); PacketHandler.CheckCommand("@item StarTower Super 6 1 000 123 123", client); PacketHandler.CheckCommand("@item Steed Fixed 6 000 000 00 00", client); PacketHandler.CheckCommand("@item RidingCrop super 6 0 000 00 00", client); PacketHandler.CheckCommand("@item CaptainRapier Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item LordPistol Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item DarkDragonCoat Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item DominatorHat Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item CrimsonRing Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item Blizzard Super 6 7 250 13 13", client); PacketHandler.CheckCommand("@item FloridNecklace Super 6 7 250 13 13", client); client.Send(new Mohamed_Hossam_Barakat.Network.GamePackets.Message("Gratz.You Got A Pirate Stuff", System.Drawing.Color.Red, 0x7d0)); break; } } break; } #endregion case "classpole": { if (!ClassPoleWar.IsWar) ClassPoleWar.StartWar(); else ClassPoleWar.EndWar(); break; } case "guildScore": { if (!GuildScoreWar.IsWar) GuildScoreWar.StartWar(); else GuildScoreWar.EndWar(); break; } case "caspr": { client.Entity.Update(byte.Parse(Data[1]), ulong.Parse(Data[2]), ulong.Parse(Data[3]), false); break; } //case "teamai": // { // Game.Features.Tournaments.TeamElitePk.TeamTournament.Open(); // foreach (var clien in Kernel.GamePool.Values) // { // if (clien.Team == null) // clien.Team = new Game.ConquerStructures.Team(clien); // Game.Features.Tournaments.TeamElitePk.TeamTournament.Join(clien, 3); // } // int count = int.Parse(Data[1]); // for (int i = 0; i < count; i++) // { // var ai = new Copra.AI(client.Entity.MapID, (ushort)Kernel.Random.Next(client.Entity.X - 5, client.Entity.X + 5), // (ushort)Kernel.Random.Next(client.Entity.Y - 5, client.Entity.Y + 5), Copra.AI.BotLevel.Copra, (p) => { return IsVaildForTeamPk(p) == true; }); // // ai.Disguise(client); // if (ai.Bot.Team == null) // ai.Bot.Team = new Game.ConquerStructures.Team(ai.Bot); // Game.Features.Tournaments.TeamElitePk.TeamTournament.Join(ai.Bot, 3); // } // break; // } case "stamina": { client.Entity.Stamina = byte.Parse(Data[1]); break; } //case "narutostyle": // { // int count = int.Parse(Data[1]); // for (int i = 0; i < count; i++) // { // var ai = new Copra.AI(client.Entity.MapID, (ushort)Kernel.Random.Next(client.Entity.X - 5, client.Entity.X + 5), // (ushort)Kernel.Random.Next(client.Entity.Y - 5, client.Entity.Y + 5), Copra.AI.BotLevel.Copra, p => p.Entity.UID != client.Entity.UID || !p.Fake); // ai.Disguise(client); // } // break; // } case "kingtime": { switch (Data[1]) { case "on": { Program.KingsTime = DateTime.Now; break; } case "off": { Program.KingsTime = DateTime.Now.AddHours(-1); break; } } break; } case "npcshop": { Data data = new Data(true); data.UID = client.Entity.UID; data.ID = 160; data.dwParam = 32; data.TimeStamp2 = uint.Parse(Data[1]); client.Send(data); break; } //case "ai": // { // Map dynamicMap = Kernel.Maps[700].MakeDynamicMap(); // client.Entity.Teleport(700, dynamicMap.ID, 50, 50); // client.AI = new Copra.AI(client, Copra.AI.BotLevel.Copra); // new Copra.AI(client.Entity.MapID, client.Entity.X, client.Entity.Y, Copra.AI.BotLevel.Copra); // break; // } case "studypoints": { client.Entity.SubClasses.StudyPoints = ushort.Parse(Data[1]); client.Entity.SubClasses.Send(client); break; } case "monsterpoints": { client.Entity.MonstersPoints = ushort.Parse(Data[1]); break; } case "darkpoints": { client.Entity.DarkPoints = ushort.Parse(Data[1]); break; } case "onlinepoints": { client.Entity.OnlinePoints = ushort.Parse(Data[1]); break; } case "killerpoints": { client.Entity.killerpoints = ushort.Parse(Data[1]); break; } case "lang": { switch (Data[1]) { case "en": Language = Languages.English; break; case "ar": Language = Languages.Arabic; break; } break; } case "npcname": { //SobNpcSpawn npc = new SobNpcSpawn(); //npc.UID = 99999; //npc.MapID = client.Entity.MapID; //npc.X = (ushort)(client.Entity.X + 2); //npc.Y = client.Entity.Y; //npc.Mesh = 134; //npc.Type = Enums.NpcType.Talker; //npc.ShowName = true; //npc.Name = Data[1]; //npc.SendSpawn(client); NpcSpawn npc = new NpcSpawn(); npc.UID = 10620; // npc.UID2 = 10620; npc.X = (ushort)(client.Entity.X + 2); npc.Y = client.Entity.Y; npc.Mesh = 29680; npc.Type = Enums.NpcType.Talker; npc.Name = Data[1]; npc.SendSpawn(client); break; } case "jar": { ConquerItem item = new ConquerItem(true); item.ID = 750000; item.Durability = ushort.Parse(Data[1]); item.MaximDurability = ushort.Parse(Data[2]); client.Inventory.Add(item, Game.Enums.ItemUse.CreateAndAdd); break; } //case "tracetree": // { // var npc = Copra.New_Quests.TreeCatcher.Npc; // client.Entity.Teleport(npc.MapID, npc.X, npc.Y, false); // break; // } case "retreat": { byte[] bytes = new byte[15]; Writer.Ushort(7, 0, bytes); Writer.Ushort(2536, 2, bytes); Writer.Ushort(ushort.Parse(Data[1]), 4, bytes); Writer.Byte(byte.Parse(Data[2]), 6, bytes); client.Send(bytes); break; } case "retreat2": { uint count = uint.Parse(Data[1]); byte[] bytes = new byte[8 + 8 + 21 * count]; Writer.Ushort((ushort)(bytes.Length - 8), 0, bytes); Writer.Ushort(2537, 2, bytes); Writer.Uint(count, 4, bytes);//count int Offset = 8; for (int i = 1; i < count + 1; i++) { bytes[Offset] = (byte)i; Offset++; // Writer.Uint(1406241635, Offset, bytes); var now = DateTime.Now.AddHours(-1); uint secs = (uint)(now.Year % 100 * 100000000 + (now.Month) * 1000000 + now.Day * 10000 + now.Hour * 100 + now.Minute); // uint secs = (uint)(DateTime.UtcNow.AddDays(5) - new DateTime(1970, 1, 1)).TotalSeconds; // uint secs = Common.TimeGet((TimeType)uint.Parse(Data[2])); Writer.Uint(secs, Offset, bytes); Offset += 4; var powers = client.ChiPowers[i - 1]; var attributes = powers.Attributes; foreach (var attribute in attributes) { Writer.WriteInt32(attribute, Offset, bytes); Offset += 4; } } client.Send(bytes); break; } case "soulp": { uint level = uint.Parse(Data[1]); // var itemarray = Database.ConquerItemInformation.BaseInformations.Values.Where(p => p.PurificationLevel == level).ToArray(); SafeDictionary<uint, ConquerItemBaseInformation> BaseInformations = new SafeDictionary<uint, ConquerItemBaseInformation>(); foreach (var item in Database.ConquerItemInformation.BaseInformations.Values) { if (item.PurificationLevel == level) BaseInformations.Add(item.ID, item); } var itemarray = BaseInformations.Values.ToArray(); foreach (var item in itemarray) client.Inventory.Add(item.ID, 0, 1); break; } case "effectitem": { ConquerItem newItem = new ConquerItem(true); newItem.ID = uint.Parse(Data[1]); Database.ConquerItemBaseInformation CIBI = null; CIBI = Database.ConquerItemInformation.BaseInformations[newItem.ID]; if (CIBI == null) break; newItem.Effect = (Enums.ItemEffect)uint.Parse(Data[2]); newItem.Durability = CIBI.Durability; newItem.MaximDurability = CIBI.Durability; newItem.Color = (Mohamed_Hossam_Barakat.Game.Enums.Color)Kernel.Random.Next(4, 8); client.Inventory.Add(newItem, Game.Enums.ItemUse.CreateAndAdd); break; } case "credit": { client.Entity.Update(0x80, 8888, false); byte[] bytes = new byte[55]; Writer.Ushort(47, 0, bytes); Writer.Ushort(10010, 2, bytes); Writer.Uint(client.Entity.UID, 8, bytes); Writer.WriteUInt32((uint)Time32.timeGetTime().GetHashCode(), 4, bytes); Writer.WriteUInt32((uint)Time32.timeGetTime().GetHashCode(), 20, bytes); Writer.WriteUInt32(0xcd, 24, bytes); Writer.WriteUInt32((uint)Time32.timeGetTime().GetHashCode(), 36, bytes); Writer.WriteUInt32(01, 41, bytes); client.Send(bytes); break; } case "dropped": { Data data = new Data(true); data.UID = client.Entity.UID; data.ID = Network.GamePackets.Data.DragonBallDropped; // data.dwParam = uint.Parse(Data[2]); client.SendScreen(data); // data.Send(client); break; } case "testinbox": { byte[] inboxpacket = new byte[112]; Writer.WriteUInt16(104, 0, inboxpacket); Writer.WriteUInt16(1046, 2, inboxpacket); Writer.WriteUInt32(1, 4, inboxpacket); Writer.WriteUInt32(1, 12, inboxpacket); Writer.WriteUInt32(126113, 16, inboxpacket); Writer.WriteString("TQSupport", 20, inboxpacket); Writer.WriteString("Reservations for Mortal Strike", 52, inboxpacket); Writer.WriteUInt16(32768, 92, inboxpacket); Writer.WriteUInt16(7, 94, inboxpacket); client.Send(inboxpacket); break; } case "home2": { client["guildtelport"] = uint.Parse(Data[1]); NpcRequest req = new NpcRequest(5); req.Mesh = 1477; req.NpcTyp = Enums.NpcType.Talker; client.Send(req); break; } case "home": { NpcRequest req = new NpcRequest(5); req.Mesh = ushort.Parse(Data[1]); req.NpcTyp = Enums.NpcType.Furniture; client.Send(req); break; } case "effect": { _String str = new _String(true); str.UID = client.Entity.UID; str.TextsCount = 1; str.Type = _String.Effect; str.Texts.Add(Data[1]); client.SendScreen(str, true); break; } case "mob": { Database.MonsterInformation mt; Database.MonsterInformation.MonsterInformations.TryGetValue(1, out mt); // client.Map.SpawnMonsterNearToHero(mob, client); if (mt == null) break; mt.RespawnTime = 5; Mohamed_Hossam_Barakat.Game.Entity entity = new Mohamed_Hossam_Barakat.Game.Entity(EntityFlag.Monster, false); entity.MapObjType = Mohamed_Hossam_Barakat.Game.MapObjectType.Monster; entity.MonsterInfo = mt.Copy(); entity.MonsterInfo.Owner = entity; entity.Name = Data[2]; entity.Body = ushort.Parse(Data[1]); entity.MinAttack = mt.MinAttack; entity.MaxAttack = entity.MagicAttack = mt.MaxAttack; entity.Hitpoints = entity.MaxHitpoints = mt.Hitpoints; entity.Level = mt.Level; entity.UID = client.Map.EntityUIDCounter.Next; entity.MapID = client.Map.ID; entity.SendUpdates = true; entity.X = (ushort)(client.Entity.X + Kernel.Random.Next(5)); entity.Y = (ushort)(client.Entity.Y + Kernel.Random.Next(5)); client.Map.AddEntity(entity); entity.SendSpawn(client); break; } case "npcnew": { INpc npc = new Network.GamePackets.NpcSpawn(); npc.UID = 5; npc.Mesh = (ushort)ushort.Parse(Data[2]); npc.Type = (Enums.NpcType)ushort.Parse(Data[1]); npc.X = (ushort)(client.Entity.X + 5); npc.Y = client.Entity.Y; npc.MapID = client.Entity.MapID; if (client.Map.Npcs.ContainsKey(npc.UID)) client.Map.Npcs.Remove(npc.UID); client.Map.Npcs.Add(npc.UID, npc); client.Screen.FullWipe(); client.Screen.Reload(); break; } case "npcjump": { foreach (var npc in client.map.Npcs.Values) { ushort x = (ushort)(npc.X + 2); ushort y = (ushort)(npc.Y + 2); TwoMovements jump = new TwoMovements(); jump.X = x; jump.Y = y; jump.EntityCount = 1; jump.FirstEntity = npc.UID; jump.MovementType = TwoMovements.Jump; client.SendScreen(jump, true); } break; } case "npceffect": { foreach (var npc in client.map.Npcs.Values) { _String str = new _String(true); str.UID = npc.UID; str.TextsCount = 1; str.Type = _String.Effect; str.Texts.Add(Data[1]); client.SendScreen(str, true); } break; } case "swar": { Game.StatuesWar.StartWar(); // foreach (var c in Program.Values) // c.MessageBox("Statue War Start Would You Like To jion and Won 50K", // p => { Game.StatuesWar.Join(p); }, null); break; } case "reward": { byte[] ids = new byte[] { 9, 10, 15, 16, 17, 11, 14, 19, 24, 22 }; byte[] Buffer = new byte[8 + 8 + 12 * ids.Length]; Writer.WriteUInt16((ushort)(Buffer.Length - 8), 0, Buffer); Writer.WriteUInt16(1316, 2, Buffer); Buffer[4] = 1; Buffer[6] = (byte)ids.Length; int offset = 8; for (int i = 0; i < ids.Length; i++) { Writer.WriteUInt32(ids[i], offset, Buffer);//12 offset += 4; Writer.WriteUInt32(0, offset, Buffer);//12 offset += 4; Writer.WriteUInt32(200000, offset, Buffer);//16 offset += 4; } client.Send(Buffer); break; } case "twinwar": { //Game.TwinWar.StartTwinWar(); //Game.TwinWar.Join(client); // foreach (var c in Program.Values) // c.MessageBox("Twin War Start Would You Like To jion and Won 50K", // p => { Game.BigBOsQuests.TwinWar.Join(p); }, null); break; } case "test2102": { int count = int.Parse(Data[1]); byte[] Buffer = new byte[8 + 48 + count * 32]; Writer.WriteUInt16((ushort)(Buffer.Length - 8), 0, Buffer); Writer.WriteUInt16(2102, 2, Buffer); Writer.Uint(1, 4, Buffer); Writer.Uint((uint)count, 12, Buffer); int offset = 16; for (int i = 0; i < count; i++) { Writer.Uint((uint)i, offset, Buffer);//level offset += 4; Writer.Uint((uint)i, offset, Buffer);//online offset += 4; Writer.Uint((uint)i, offset, Buffer);//bp offset += 4; // Writer.Uint((uint)Enums.GuildMemberRank.DeputyLeader, offset, Buffer);//unkown1 offset += 4; Writer.String("Copra-" + i, offset, Buffer); offset += 16; } client.Send(Buffer); break; } case "blue": { Attack attack = new Attack(true); attack.Attacker = client.Screen.Objects.First().UID; attack.Attacked = client.Entity.UID; attack.X = client.Entity.X; attack.Y = client.Entity.Y; attack.Effect1 = Attack.AttackEffects1.None; attack.Effect1 |= (Attack.AttackEffects1)byte.Parse(Data[1]); attack.AttackType = Attack.Melee; attack.Damage = 500; client.Send(attack); break; } case "xspell": { foreach (var skill in client.Spells.Values) { Network.GamePackets.Data data = new Data(true); data.UID = client.Entity.UID; data.dwParam = client.Spells[skill.ID].ID; data.ID = 109; client.Send(data); var s = new Spell(true) { ID = client.Spells[skill.ID].ID, Level = client.Spells[skill.ID].Level, PreviousLevel = client.Spells[skill.ID].PreviousLevel, Experience = 0, Souls = Spell.Soul_Level.Level_Four, Available = true }; skill.Souls = s.Souls; // Writer.WriteByte(1, 24, s.ToArray()); // Writer.WriteByte(byte.Parse(Data[1]), byte.Parse(Data[2]), s.ToArray()); // Writer.WriteByte(byte.Parse(Data[1]), 28, s.ToArray()); //uint _Levelhu = 4; // uint IntegerFlag = 0; // if (_Levelhu >= 1) // IntegerFlag |= (uint)(1UL << 1); // if (_Levelhu >= 2) // IntegerFlag |= (uint)(1UL << 4); // if (_Levelhu >= 3) // IntegerFlag |= (uint)(1UL << 8); // if (_Levelhu >= 4) // IntegerFlag |= (uint)(1UL << 16); client.Send(s.ToArray()); // client.Spells[skill.ID].Send(client); } break; } case "inbox48": { string text = Mess.Remove(0, 7); byte[] inbox = new byte[272]; Writer.Ushort((ushort)(inbox.Length - 8), 0, inbox); Writer.Ushort(1048, 2, inbox); Writer.Uint(0, 4, inbox);//id Writer.WriteString(text, 8, inbox);//string client.Send(inbox); break; } case "inbox46": { uint count = uint.Parse(Data[1]); byte[] inbox = new byte[20 + 92 * count]; Writer.Ushort((ushort)(inbox.Length - 8), 0, inbox); Writer.Ushort(1046, 2, inbox); Writer.Uint(count, 4, inbox);//count Writer.Uint(count, 12, inbox);//count int offset = 16; for (uint i = 0; i < count; i++) { Writer.Uint(i, offset, inbox);//uid offset += 4; Writer.String("Sender Name", offset, inbox);//sender offset += 32; Writer.String("Subject", offset, inbox);//Subject offset += 40; Writer.Uint(600, offset, inbox);//Time offset += 12; } client.Send(inbox); break; } case "testxx": { client.Send(Network.GamePackets.Data.Custom(client.testxx++, client.Entity.UID)); client.Send(new Message(client.testxx.ToString(), Message.Tip)); break; } case "testxx2": { client.testxx = uint.Parse(Data[1]); break; } } #endregion return true; } return false; } catch {client.Send(new Message("Impossible to handle this command. Check your syntax.", System.Drawing.Color.BurlyWood, Message.TopLeft)); return false; } } public static void LoadBoothingAI() { Database.MySqlCommand Cmd = new Database.MySqlCommand(MySqlCommandType.SELECT); Cmd.Select("bots"); MySqlReader Reader = new MySqlReader(Cmd); while (Reader.Read()) { var ID = Reader.ReadUInt32("BotID"); if (ID > 70000000) if (ID > 70000001) if (ID > 70000002) if (ID > 70000003) if (ID > 70000004) if (ID > 70000005) if (ID > 70000006) if (ID > 70000007) ID = (uint)Kernel.Random.Next(70000000, 999999999); var fClient = new GameState(null); fClient.FakeLoadx(ID); BoothingAI.Add(ID, fClient); } Mohamed_Hossam_Barakat.Console.WriteLine("" + BoothingAI.Count + " BoothingAI Loaded."); } public void CheckPokerDisconnect() { if (Entity.MyPokerTable != null) { if (Entity.MyPokerTable.Entitys.ContainsKey(Entity.UID) && Entity.MyPokerTable.Pot > 1) { byte[] P = new byte[10]; P[6] = 4; P[9] = 200; Entity.MyPokerTable.NewEntityMove(P, Entity.UID); } else Entity.MyPokerTable.RemoveEntity(Entity.UID); } } /* public uint ChampionPoints { get { return CP.Points; } set { CP.Points = value; } } public uint TodayChampionPoints { get { return CP.TodayPoints; } set { CP.TodayPoints = value; } } public Network.GamePackets.ChampionPoints CP;*/ public uint testxx { get; set; } public uint testxx2 { get; set; } public ConquerItem spwansitem; public uint JoinToWar; public int oldnflag; public int oldflag2; public Lobby.MatchType MatchType; public uint PlayRouletteUID; public uint WatchRoulette; public bool _setlocation = true; public bool BlockTrade; public bool ChatBlock; public Time32 WaveofBloodStamp; public byte BanCount { get; set; } } }