|
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; }
}
}
الذين يشاهدون محتوى الموضوع الآن : 2 ( الأعضاء 0 والزوار 2) | |
|
الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة |
اعمل سجن بدون خروج وكمان بوقت انت الى بتحددو ورسالة | محمد ياسر | تطوير سيرفرات كونكر | 4 | 2023-07-27 12:41 AM |
مشكله في DonationTime الدونشين بوقت | Tyranny-Team's | مشكلات السيرفيرات كونكر الشخصيه | 9 | 2020-04-19 07:43 AM |
كيفية اعطاء باند بوقت | محمد ياسر | تطوير سيرفرات كونكر | 2 | 2020-04-17 04:14 AM |
اضافه استف بوقت | Tyranny-Team's | مشكلات السيرفيرات كونكر الشخصيه | 2 | 2020-04-05 06:21 PM |