using Mr.Lover.Game; using System; using System.Collections.Generic; using System.Linq; using System.Text; using Mr.Lover.Network.GamePackets; using System.Threading; using System.Threading.Generic; using Mr.Lover.Network.Sockets; using Mr.Lover.Game.ConquerStructures; using Mr.Lover.Game.ConquerStructures.Society; using Mr.Lover.Client; using System.Drawing; using Mr.Lover.Network.GamePackets.EventAlert; using Mr.Lover.Game.Events; using Mr.Lover.Database; using System.Data.SqlClient; using System.Configuration; using Mr.Lover.Network; namespace Mr.Lover { public class World { #region Nemesis Time public const int NemesisTyrant1 = 3; public const int NemesisTyrant2 = 6; public const int NemesisTyrant3 = 9; public const int NemesisTyrant4 = 12; public const int NemesisTyrant5 = 15; public const int NemesisTyrant6 = 18; public const int NemesisTyrant7 = 21; public const int NemesisTyrant8 = 00; #endregion /// /// The script engine for npcs. /// /// public static ProjectX_V3_Lib.ScriptEngine.ScriptEngine ScriptEngine; public static long Carnaval = 0; #region Cyclone War public static bool cycolne = false; public static bool cycolne1 = false; public static bool LastTeam = false; #endregion Cyclone War public static StaticPool GenericThreadPool; public static StaticPool ReceivePool, SendPool; public TimerRule Buffers, Characters, CrossCharacters, AutoAttack, Prayer; public TimerRule ConnectionReceive, ConnectionReview, ConnectionSend; public const uint NobilityMapBase = 700, ClassPKMapBase = 1730; public List Tournaments; public PoleDomination PoleDomination; public SteedRace SteedRace; public CaptureTheFlag CTF; public bool PureLand, MonthlyPKWar; // private NpcReply npc; public static Chase Chase; public Game.Features.Tournaments.HeroOfGame HeroOFGame; public Mido.DelayedTask DelayedTask; private bool IsNight; private bool ClanWarAI; public World() { GenericThreadPool = new StaticPool(32).Run(); ReceivePool = new StaticPool(128).Run(); SendPool = new StaticPool(32).Run(); } public void Init() { { Buffers = new TimerRule(BuffersCallback, 1000, ThreadPriority.BelowNormal); Characters = new TimerRule(CharactersCallback, 1000, ThreadPriority.BelowNormal); AutoAttack = new TimerRule(AutoAttackCallback, 1000, ThreadPriority.BelowNormal); CrossCharacters = new TimerRule(CrossCharactersCallback, 1000, ThreadPriority.BelowNormal); Prayer = new TimerRule(PrayerCallback, 1000, ThreadPriority.BelowNormal); Subscribe(WorldTournaments, 1000); Subscribe(ServerFunctions, 5000); Subscribe(ArenaFunctions, 1000, ThreadPriority.AboveNormal); Subscribe(TeamArenaFunctions, 1000, ThreadPriority.AboveNormal); Subscribe(ChampionFunctions, 1000, ThreadPriority.AboveNormal); } ConnectionReview = new TimerRule(connectionReview, 60000, ThreadPriority.Lowest); ConnectionReceive = new TimerRule(connectionReceive, 1); ConnectionSend = new TimerRule(connectionSend, 1); } private void CrossCharactersCallback(GameState client, int time) { if (!Valid(client)) return; Time32 Now = new Time32(time); Time32 Now32 = new Time32(time); DateTime Now64 = DateTime.Now; #region JiangHu if (client.Entity.MyJiang != null) client.Entity.MyJiang.TheadTime(client); #endregion #region Aura if (client.Entity.Aura_isActive) { if (client.Entity.Aura_isActive) { if (Time32.Now >= client.Entity.AuraStamp.AddSeconds(client.Entity.AuraTime)) { client.Entity.RemoveFlag2(client.Entity.Aura_actType); client.removeAuraBonuses(client.Entity.Aura_actType, client.Entity.Aura_actPower, 1); client.Entity.Aura_isActive = false; client.Entity.AuraTime = 0; client.Entity.Aura_actType = 0; client.Entity.Aura_actPower = 0; } } } #endregion #region Bless if (client.Entity.ContainsFlag(Update.Flags.CastPray)) { if (client.BlessTime <= 7198500) client.BlessTime += 1000; else client.BlessTime = 7200000; client.Entity.Update(Update.LuckyTimeTimer, client.BlessTime, false); } else if (client.Entity.ContainsFlag(Update.Flags.Praying)) { if (client.PrayLead != null) { if (client.PrayLead.Socket.Alive) { if (client.BlessTime <= 7199000) { client.BlessTime += 500; client.BlessStamp = DateTime.Now; } else { client.BlessTime = 7200000; client.Entity.Update(Update.LuckyTimeTimer, client.BlessTime, false); } } else client.Entity.RemoveFlag(Update.Flags.Praying); } else client.Entity.RemoveFlag(Update.Flags.Praying); } else { if (client.BlessTime > 0) { if (DateTime.Now > client.BlessStamp.AddSeconds(client.BlessTime)) { client.BlessTime = 0; client.Entity.Update(Update.LuckyTimeTimer, client.BlessTime, false); } if (client.BlessTime >= 500) client.BlessTime -= 500; else client.BlessTime = 0; client.Entity.Update(Update.LuckyTimeTimer, client.BlessTime, false); } } #endregion #region Flashing name if (client.Entity.ContainsFlag(Network.GamePackets.Update.Flags.FlashingName)) { if (Now > client.Entity.FlashingNameStamp.AddSeconds(client.Entity.FlashingNameTime)) { client.Entity.RemoveFlag(Network.GamePackets.Update.Flags.FlashingName); } } #endregion #region XPList if (!client.Entity.ContainsFlag(Network.GamePackets.Update.Flags.XPList)) { if (Now > client.XPCountStamp.AddSeconds(3)) { #region Arrows if (client.Equipment != null) { if (!client.Equipment.Free(5)) { if (Network.PacketHandler.IsArrow(client.Equipment.TryGetItem(5).ID)) { Database.ConquerItemTable.UpdateDurabilityItem(client.Equipment.TryGetItem(5)); } } } #endregion client.XPCountStamp = Now; client.XPCount++; if (client.XPCount >= 100) { client.Entity.AddFlag(Network.GamePackets.Update.Flags.XPList); client.XPCount = 0; client.XPListStamp = Now; } } } else { if (Now > client.XPListStamp.AddSeconds(20)) { client.Entity.RemoveFlag(Network.GamePackets.Update.Flags.XPList); } } #endregion #region Buffers if (client.Entity.ContainsFlag2(Network.GamePackets.Update.Flags2.TyrantAura) && !client.TeamAura) { if (Now >= client.Entity.AuraStamp.AddSeconds(client.Entity.AuraTime)) { client.Entity.AuraTime = 0; client.Entity.Aura_isActive = false; //client.Entity.StigmaIncrease = 0; client.Entity.RemoveFlag2(Network.GamePackets.Update.Flags2.TyrantAura); } } if (client.Entity.ContainsFlag2(Network.GamePackets.Update.Flags2.FendAura) && !client.TeamAura) { if (Now >= client.Entity.AuraStamp.AddSeconds(client.Entity.AuraTime)) { client.Entity.AuraTime = 0; client.Entity.Aura_isActive = false; //client.Entity.StigmaIncrease = 0; client.Entity.RemoveFlag2(Network.GamePackets.Update.Flags2.FendAura); } } if (client.Entity.ContainsFlag2(Network.GamePackets.Update.Flags2.MetalAura)) { if (Now >= client.Entity.AuraStamp.AddSeconds(client.Entity.AuraTime)) { client.Entity.AuraTime = 0; client.Entity.Aura_isActive = false; //client.Entity.StigmaIncrease = 0; client.Entity.RemoveFlag2(Network.GamePackets.Update.Flags2.MetalAura); } } if (client.Entity.ContainsFlag2(Network.GamePackets.Update.Flags2.WoodAura)) { if (Now >= client.Entity.AuraStamp.AddSeconds(client.Entity.AuraTime)) { client.Entity.AuraTime = 0; client.Entity.Aura_isActive = false; //client.Entity.StigmaIncrease = 0; client.Entity.RemoveFlag2(Network.GamePackets.Update.Flags2.WoodAura); } } if (client.Entity.ContainsFlag2(Network.GamePackets.Update.Flags2.WaterAura)) { if (Now >= client.Entity.AuraStamp.AddSeconds(client.Entity.AuraTime)) { client.Entity.AuraTime = 0; client.Entity.Aura_isActive = false; //client.Entity.StigmaIncrease = 0; client.Entity.RemoveFlag2(Network.GamePackets.Update.Flags2.WaterAura); } } if (client.Entity.ContainsFlag2(Network.GamePackets.Update.Flags2.EarthAura)) { if (Now >= client.Entity.AuraStamp.AddSeconds(client.Entity.AuraTime)) { client.Entity.AuraTime = 0; client.Entity.Aura_isActive = false; //client.Entity.StigmaIncrease = 0; client.Entity.RemoveFlag2(Network.GamePackets.Update.Flags2.EarthAura); } } if (client.Entity.ContainsFlag2(Network.GamePackets.Update.Flags2.FireAura)) { if (Now >= client.Entity.AuraStamp.AddSeconds(client.Entity.AuraTime)) { client.Entity.AuraTime = 0; client.Entity.Aura_isActive = false; //client.Entity.StigmaIncrease = 0; client.Entity.RemoveFlag2(Network.GamePackets.Update.Flags2.FireAura); } } if (client.Entity.ContainsFlag(Network.GamePackets.Update.Flags.Stigma)) { if (Now >= client.Entity.StigmaStamp.AddSeconds(client.Entity.StigmaTime)) { client.Entity.StigmaTime = 0; client.Entity.StigmaIncrease = 0; client.Entity.RemoveFlag(Network.GamePackets.Update.Flags.Stigma); } } if (client.Entity.ContainsFlag(Network.GamePackets.Update.Flags.Dodge)) { if (Now >= client.Entity.DodgeStamp.AddSeconds(client.Entity.DodgeTime)) { client.Entity.DodgeTime = 0; client.Entity.DodgeIncrease = 0; //Console.WriteLine("dodge removed !"); client.Entity.RemoveFlag(Network.GamePackets.Update.Flags.Dodge); } } if (client.Entity.ContainsFlag(Network.GamePackets.Update.Flags.Invisibility)) { if (Now >= client.Entity.InvisibilityStamp.AddSeconds(client.Entity.InvisibilityTime)) { client.Entity.RemoveFlag(Network.GamePackets.Update.Flags.Invisibility); } } if (client.Entity.ContainsFlag(Network.GamePackets.Update.Flags.StarOfAccuracy)) { if (client.Entity.StarOfAccuracyTime != 0) { if (Now >= client.Entity.StarOfAccuracyStamp.AddSeconds(client.Entity.StarOfAccuracyTime)) { client.Entity.RemoveFlag(Network.GamePackets.Update.Flags.StarOfAccuracy); } } else { if (Now >= client.Entity.AccuracyStamp.AddSeconds(client.Entity.AccuracyTime)) { client.Entity.RemoveFlag(Network.GamePackets.Update.Flags.StarOfAccuracy); } } } if (client.Entity.ContainsFlag(Network.GamePackets.Update.Flags.MagicShield)) { if (client.Entity.MagicShieldTime != 0) { if (Now >= client.Entity.MagicShieldStamp.AddSeconds(client.Entity.MagicShieldTime)) { client.Entity.MagicShieldIncrease = 0; client.Entity.MagicShieldTime = 0; client.Entity.RemoveFlag(Network.GamePackets.Update.Flags.MagicShield); } } else { if (Now >= client.Entity.ShieldStamp.AddSeconds(client.Entity.ShieldTime)) { client.Entity.ShieldIncrease = 0; client.Entity.ShieldTime = 0; client.Entity.RemoveFlag(Network.GamePackets.Update.Flags.MagicShield); } } } #endregion #region Fly if (client.Entity.ContainsFlag(Network.GamePackets.Update.Flags.Fly)) { if (Now >= client.Entity.FlyStamp.AddSeconds(client.Entity.FlyTime)) { client.Entity.RemoveFlag(Network.GamePackets.Update.Flags.Fly); client.Entity.FlyTime = 0; } } #endregion #region PoisonStar if (client.Entity.NoDrugsTime > 0) { if (Now > client.Entity.NoDrugsStamp.AddSeconds(client.Entity.NoDrugsTime)) { client.Entity.NoDrugsTime = 0; } } #endregion #region ToxicFog if (client.Entity.ToxicFogLeft > 0) { if (Now >= client.Entity.ToxicFogStamp.AddSeconds(2)) { float Percent = client.Entity.ToxicFogPercent; float immu = client.Entity.Detoxication / 100F; Percent = Math.Max(0.1F, Percent * immu); //Remove this line if you want it normal client.Entity.ToxicFogLeft--; if (client.Entity.ToxicFogLeft == 0) { client.Entity.RemoveFlag(Update.Flags.Poisoned); return; } client.Entity.ToxicFogStamp = Now; if (client.Entity.Hitpoints > 1) { uint damage = Game.Attacking.Calculate.Percent(client.Entity, Percent); if (client.Entity.ContainsFlag2(Network.GamePackets.Update.Flags2.AzureShield)) { if (damage > client.Entity.AzureShieldDefence) { damage -= client.Entity.AzureShieldDefence; Game.Attacking.Calculate.CreateAzureDMG(client.Entity.AzureShieldDefence, client.Entity, client.Entity); client.Entity.RemoveFlag2(Network.GamePackets.Update.Flags2.AzureShield); } else { Game.Attacking.Calculate.CreateAzureDMG((uint)damage, client.Entity, client.Entity); client.Entity.AzureShieldDefence -= (ushort)damage; client.Entity.AzureShieldPacket(); damage = 1; } } else client.Entity.Hitpoints -= damage; Network.GamePackets.SpellUse suse = new Network.GamePackets.SpellUse(true); suse.Attacker = client.Entity.UID; suse.SpellID = 10010; suse.AddTarget(client.Entity, damage, null); client.SendScreen(suse, true); if (client != null) client.UpdateQualifier(client.ArenaStatistic.PlayWith, client, damage); } } } else { if (client.Entity.ContainsFlag(Update.Flags.Poisoned)) client.Entity.RemoveFlag(Update.Flags.Poisoned); } #endregion #region FatalStrike if (client.Entity.OnFatalStrike()) { if (Now > client.Entity.FatalStrikeStamp.AddSeconds(client.Entity.FatalStrikeTime)) { client.Entity.RemoveFlag(Network.GamePackets.Update.Flags.FatalStrike); } } #endregion #region Oblivion if (client.Entity.OnOblivion()) { if (Now > client.Entity.OblivionStamp.AddSeconds(client.Entity.OblivionTime)) { client.Entity.RemoveFlag2(Network.GamePackets.Update.Flags2.Oblivion); } } #endregion #region ShurikenVortex if (client.Entity.ContainsFlag(Network.GamePackets.Update.Flags.ShurikenVortex)) { if (Now > client.Entity.ShurikenVortexStamp.AddSeconds(client.Entity.ShurikenVortexTime)) { client.Entity.RemoveFlag(Network.GamePackets.Update.Flags.ShurikenVortex); } } #endregion #region Transformations if (client.Entity.Transformed) { if (Now > client.Entity.TransformationStamp.AddSeconds(client.Entity.TransformationTime)) { client.Entity.Untransform(); } } #endregion #region soulshackle if (client.Entity.ContainsFlag2(Network.GamePackets.Update.Flags2.SoulShackle)) { if (Now > client.Entity.ShackleStamp.AddSeconds(client.Entity.ShackleTime)) { client.Entity.RemoveFlag2(Network.GamePackets.Update.Flags2.SoulShackle); } } #endregion #region AutoHunting if (client.Entity.ContainsFlag3((uint)Update.Flags3.AutoHunting)) { if (Now > client.Entity.AutoHuntStamp.AddMinutes(15)) { client.Entity.RemoveFlag3((uint)Update.Flags3.AutoHunting); } } #endregion #region AzureShield if (client.Entity.ContainsFlag2(Network.GamePackets.Update.Flags2.AzureShield)) { if (Now > client.Entity.MagicShieldStamp.AddSeconds(client.Entity.MagicShieldTime)) { client.Entity.RemoveFlag2(Network.GamePackets.Update.Flags2.AzureShield); } } #endregion #region Blade Flurry if (client.Entity.ContainsFlag3(Update.Flags3.BladeFlurry)) { if (Time32.Now > client.Entity.BladeFlurryStamp.AddSeconds(45)) { client.Entity.RemoveFlag3(Update.Flags3.BladeFlurry); } } #endregion #region Flustered if (client.Entity.ContainsFlag(Update.Flags.Frightened)) { if (client.RaceFrightened) { if (Now > client.FrightenStamp.AddSeconds(20)) { client.RaceFrightened = false; { GameCharacterUpdates update = new GameCharacterUpdates(true); update.UID = client.Entity.UID; update.Remove(GameCharacterUpdates.Flustered); client.SendScreen(update, true); } client.Entity.RemoveFlag(Update.Flags.Frightened); } else { int rand; ushort x, y; do { rand = Kernel.Random.Next(Game.Map.XDir.Length); x = (ushort)(client.Entity.X + Game.Map.XDir[rand]); y = (ushort)(client.Entity.Y + Game.Map.YDir[rand]); } while (!client.Map.Floor[x, y, MapObjectType.Player]); client.Entity.Facing = Kernel.GetAngle( client.Entity.X, client.Entity.Y, x, y); client.Entity.X = x; client.Entity.Y = y; client.SendScreen( new TwoMovements() { EntityCount = 1, Facing = client.Entity.Facing, FirstEntity = client.Entity.UID, WalkType = 9, X = client.Entity.X, Y = client.Entity.Y, MovementType = TwoMovements.Walk }, true); } } } #endregion #region Stunned if (client.Entity.Stunned) { if (Now > client.Entity.StunStamp.AddMilliseconds(2000)) { client.Entity.Stunned = false; } } #endregion #region Frozen if (client.Entity.ContainsFlag(Update.Flags.Freeze)) { if (Now > client.Entity.FrozenStamp.AddSeconds(client.Entity.FrozenTime)) { client.Entity.FrozenD = false; client.Entity.FrozenTime = 0; client.Entity.RemoveFlag(Update.Flags.Freeze); GameCharacterUpdates update = new GameCharacterUpdates(true); update.UID = client.Entity.UID; update.Remove(GameCharacterUpdates.Freeze); client.SendScreen(update, true); } } #endregion #region Dizzy if (client.Entity.ContainsFlag(Update.Flags.Dizzy)) { if (client.RaceDizzy) { if (Now > client.DizzyStamp.AddSeconds(5)) { client.RaceDizzy = false; { GameCharacterUpdates update = new GameCharacterUpdates(true); update.UID = client.Entity.UID; update.Remove(GameCharacterUpdates.Dizzy); client.SendScreen(update); } client.Entity.RemoveFlag(Update.Flags.Dizzy); } } } #endregion #region Confused if (client.Entity.ContainsFlag(Update.Flags.Confused)) { if (Now > client.FrightenStamp.AddSeconds(15)) { client.RaceFrightened = false; { GameCharacterUpdates update = new GameCharacterUpdates(true); update.UID = client.Entity.UID; update.Remove(GameCharacterUpdates.Flustered); client.SendScreen(update); } client.Entity.RemoveFlag(Update.Flags.Confused); } } #endregion #region Divine Shield if (client.Entity.ContainsFlag(Update.Flags.DivineShield)) { if (Now > client.GuardStamp.AddSeconds(10)) { client.RaceGuard = false; { GameCharacterUpdates update = new GameCharacterUpdates(true); update.UID = client.Entity.UID; update.Remove(GameCharacterUpdates.DivineShield); client.SendScreen(update); } client.Entity.RemoveFlag(Update.Flags.DivineShield); } } #endregion #region Extra Speed if (client.Entity.ContainsFlag(Update.Flags.OrangeSparkles) && !client.InQualifier()) { if (Time32.Now > client.RaceExcitementStamp.AddSeconds(15)) { var upd = new GameCharacterUpdates(true) { UID = client.Entity.UID }; upd.Remove(GameCharacterUpdates.Accelerated); client.SendScreen(upd); client.SpeedChange = null; client.Entity.RemoveFlag(Update.Flags.OrangeSparkles); } } #endregion #region Decelerated if (client.Entity.ContainsFlag(Update.Flags.PurpleSparkles) && !client.InQualifier()) { if (Time32.Now > client.DecelerateStamp.AddSeconds(10)) { { client.RaceDecelerated = false; var upd = new GameCharacterUpdates(true) { UID = client.Entity.UID }; upd.Remove(GameCharacterUpdates.Decelerated); client.SendScreen(upd); client.SpeedChange = null; } client.Entity.RemoveFlag(Update.Flags.PurpleSparkles); } } #endregion #region Team Aura if (!client.TeamAura) { if (client.Team != null && !client.Entity.Dead && client.Team.Teammates != null) { foreach (Client.GameState pClient in client.Team.Teammates) { if (client.Entity.UID != pClient.Entity.UID && Kernel.GetDistance(client.Entity.X, client.Entity.Y, pClient.Entity.X, pClient.Entity.Y) <= Constants.pScreenDistance) { if (pClient.Entity.Aura_isActive && pClient.Socket.Alive && pClient.Entity.UID != client.Entity.UID && pClient.Entity.MapID == client.Entity.MapID) { if (pClient.Entity.Aura_actType == Update.Flags2.FendAura || pClient.Entity.Aura_actType == Update.Flags2.TyrantAura) { client.TeamAura = true; client.TeamAuraOwner = pClient; client.TeamAuraStatusFlag = pClient.Entity.Aura_actType; client.TeamAuraPower = pClient.Entity.Aura_actPower; client.Entity.AddFlag2(client.TeamAuraStatusFlag); string type = "Critial Strikes"; if (client.Entity.Aura_actType == 100) type = "Immunity"; client.Send(new Message(type + " increased By " + client.TeamAuraPower + " percent!", System.Drawing.Color.Red, Message.Agate)); client.doAuraBonuses(client.TeamAuraStatusFlag, client.TeamAuraPower, 1); break; } } } } } } else { var pClient = client.TeamAuraOwner; string type = "Critial Strikes"; if (client.Entity.Aura_actType == 100) type = "Immunity"; if (pClient == null) { client.TeamAura = false; //client.removeAuraBonuses(client.TeamAuraStatusFlag, client.TeamAuraPower, 1); client.removeAuraBonuses(client.TeamAuraStatusFlag, client.TeamAuraPower, 1); client.Entity.RemoveFlag2(client.TeamAuraStatusFlag); client.Send(new Message(type + " decreased by " + client.TeamAuraPower + " percent!", System.Drawing.Color.Red, Message.Agate)); client.TeamAuraStatusFlag = 0; client.TeamAuraPower = 0; } else { if (!pClient.Entity.Aura_isActive || !pClient.Socket.Alive || pClient.Entity.Dead || pClient.Entity.MapID != client.Entity.MapID) { client.TeamAura = false; //client.removeAuraBonuses(client.TeamAuraStatusFlag, client.TeamAuraPower, 1); client.removeAuraBonuses(client.TeamAuraStatusFlag, client.TeamAuraPower, 1); client.Entity.RemoveFlag2(client.TeamAuraStatusFlag); client.Send(new Message(type + " decreased by " + client.TeamAuraPower + " percent!", System.Drawing.Color.Red, Message.Agate)); client.TeamAuraStatusFlag = 0; client.TeamAuraPower = 0; } else { if (client.Team == null || (pClient.Team == null || (pClient.Team != null && !pClient.Team.IsTeammate(client.Entity.UID))) || client.Entity.Dead || Kernel.GetDistance(client.Entity.X, client.Entity.Y, pClient.Entity.X, pClient.Entity.Y) > Constants.pScreenDistance) { client.TeamAura = false; client.removeAuraBonuses(client.TeamAuraStatusFlag, client.TeamAuraPower, 1); client.Entity.RemoveFlag2(client.TeamAuraStatusFlag); client.Send(new Message(type + " decreased by " + client.TeamAuraPower + " percent!", System.Drawing.Color.Red, Message.Agate)); client.TeamAuraStatusFlag = 0; client.TeamAuraPower = 0; } } } } #endregion #region CTF Flag if (client.Entity.ContainsFlag2(Update.Flags2.CarryingFlag)) { if (Time32.Now > client.Entity.FlagStamp.AddSeconds(60)) { client.Entity.RemoveFlag2(Update.Flags2.CarryingFlag); } } #endregion #region Congelado if (client.Entity.ContainsFlag(Update.Flags2.Congelado)) { if (DateTime.Now > client.Entity.CongeladoTimeStamp.AddSeconds(client.Entity.CongeladoTime)) { client.Entity.RemoveFlag(Update.Flags2.Congelado); } } #endregion #region IceBlock if (client.Entity.ContainsFlag(Update.Flags2.IceBlock)) { if (Time32.Now > client.Entity.FreezeStamp.AddSeconds(client.Entity.FreezeTime)) { client.Entity.RemoveFlag(Update.Flags2.IceBlock); } } #endregion #region Cursed if (client.Entity.ContainsFlag(Update.Flags.Cursed)) { if (Time32.Now > client.Entity.Cursed.AddSeconds(300)) { client.Entity.RemoveFlag(Update.Flags.Cursed); } } #endregion #region SuperCycloneStamp if (client.Entity.ContainsFlag3((uint)Update.Flags3.SuperCyclone)) { if (Time32.Now > client.Entity.SuperCycloneStamp.AddSeconds(45)) { client.Entity.RemoveFlag3((uint)Update.Flags3.SuperCyclone); } } #endregion #region DragonCyclone if (client.Entity.ContainsFlag3(Update.Flags3.DragonCyclone)) { if (Time32.Now > client.Entity.DragonCycloneStamp.AddSeconds(45)) { client.Entity.RemoveFlag3(Update.Flags3.DragonCyclone); } } #endregion #region DragonFury if (client.Entity.ContainsFlag3(Update.Flags3.DragonFury)) { if (Time32.Now > client.Entity.DragonFuryStamp.AddSeconds(client.Entity.DragonFuryTime)) { client.Entity.RemoveFlag3(Update.Flags3.DragonFury); Network.GamePackets.Update upgrade = new Network.GamePackets.Update(true); upgrade.UID = client.Entity.UID; upgrade.Append(74 , 0 , 0, 0, 0); client.Entity.Owner.Send(upgrade.ToArray()); } } #endregion #region DragonFlow //if (client.Entity.ContainsFlag3(Update.Flags3.DragonFlow) && !client.Entity.ContainsFlag3(Update.Flags3.DragonCyclone)) //{ // if (Time32.Now > client.Entity.DragonFlowStamp.AddSeconds(8)) // { // Database.SpellInformation spell = null; // spell = Database.SpellTable.SpellInformations[12270][client.Spells[12270].Level]; // var MySpell = Database.SpellTable.GetSpell(client.Spells[12270].ID, client.Spells[12270].Level); // int stamina = 0; // if (client.Entity.HeavenBlessing > 0) // stamina = 50; // if (client.Entity.Stamina != 100 + stamina) // { // switch (spell.Level) // { // case 0: // { // client.Entity.Stamina += 5; // break; // } // case 1: // { // client.Entity.Stamina += 10; // break; // } // case 2: // { // client.Entity.Stamina += 15; // break; // } // default: // { // client.Entity.Stamina += 20; // break; // } // } // _String str = new _String(true); // str.UID = client.Entity.UID; // str.TextsCount = 1; // str.Type = _String.Effect; // str.Texts.Add("leedragonblood"); // client.SendScreen(str, true); // } // client.Entity.DragonFlowStamp = Time32.Now; // } //} //else if (client.Entity.ContainsFlag3(Update.Flags3.DragonFlow) && client.Entity.ContainsFlag3(Update.Flags3.DragonCyclone)) //{ // if (Time32.Now > client.Entity.DragonFlowStamp.AddSeconds(8)) // { // Database.SpellInformation spell = null; // var MySpell = Database.SpellTable.GetSpell(client.Spells[12270].ID, client.Spells[12270].Level); // int stamina = 0; // if (client.Entity.HeavenBlessing > 0) // stamina = 50; // if (client.Entity.Stamina != 100 + stamina) // { // switch (spell.Level) // { // case 0: // { // client.Entity.Stamina += 10; // break; // } // case 1: // { // client.Entity.Stamina += 20; // break; // } // case 2: // { // client.Entity.Stamina += 30; // break; // } // default: // { // client.Entity.Stamina += 40; // break; // } // } // _String str = new _String(true); // str.UID = client.Entity.UID; // str.TextsCount = 1; // str.Type = _String.Effect; // str.Texts.Add("leedragonblood"); // client.SendScreen(str, true); // } // client.Entity.DragonFlowStamp = Time32.Now; // } //} #endregion #region DragonFlow if (client.Entity.ContainsFlag3(Update.Flags3.DragonFlow) && !client.Entity.ContainsFlag3(Update.Flags3.DragonCyclone)) { if (Time32.Now > client.Entity.DragonFlowStamp.AddSeconds(8)) { if (client.Spells.ContainsKey(12270)) { var spell = Database.SpellTable.GetSpell(client.Spells[12270].ID, client.Spells[12270].Level); if (spell != null) { int stamina = 100; if (client.Entity.HeavenBlessing > 0) stamina += 50; if (client.Entity.Stamina != stamina) { client.Entity.Stamina += (byte)spell.Power; if (client.Entity.ContainsFlag3(Update.Flags3.DragonCyclone)) if (client.Entity.Stamina != stamina) client.Entity.Stamina += (byte)spell.Power; _String str = new _String(true); str.UID = client.Entity.UID; str.TextsCount = 1; str.Type = _String.Effect; str.Texts.Add("leedragonblood"); client.SendScreen(str, true); } } } client.Entity.DragonFlowStamp = Time32.Now; } } #endregion #region DragonSwing if (client.Entity.ContainsFlag3(Update.Flags3.DragonSwing)) { if (Time32.Now > client.Entity.DragonSwingStamp.AddSeconds(160)) { client.Entity.RemoveFlag3(Update.Flags3.DragonSwing); client.Entity.OnDragonSwing = false; Update upgrade = new Update(true); upgrade.UID = client.Entity.UID; upgrade.Append(Update.DragonSwing, 0, 0, 0, 0); client.Entity.Owner.Send(upgrade.ToArray()); } } #endregion #region if ((client.Entity.attributes9 == true) && (DateTime.Now > client.Entity.attributestime9.AddSeconds(80.0)) && client.Entity.StartTimer) { client.Entity.MaxAttack -= 3000; client.Entity.MinAttack -= 3000; client.Entity.MaxHitpoints -= 3000; client.Entity.Hitpoints -= 3000; client.Entity.MagicAttack -= 3000; client.Entity.attributes9 = false; } if ((client.Entity.attributes8 == true) && (DateTime.Now > client.Entity.attributestime8.AddSeconds(80.0)) && client.Entity.StartTimer) { client.Entity.attributes8 = false; } if ((client.Entity.attributes7 == true) && (DateTime.Now > client.Entity.attributestime7.AddSeconds(80.0)) && client.Entity.StartTimer) { client.Entity.Breaktrough -= 1500; client.Entity.attributes7 = false; } if ((client.Entity.attributes6 == true) && (DateTime.Now > client.Entity.attributestime6.AddSeconds(80.0)) && client.Entity.StartTimer) { client.Entity.CriticalStrike -= 15000; client.Entity.SkillCStrike -= 15000; client.Entity.attributes6 = false; } if ((client.Entity.attributes5 == true) && (DateTime.Now > client.Entity.attributestime5.AddSeconds(80.0)) && client.Entity.StartTimer) { client.Entity.Counteraction -= 1500; client.Entity.attributes5 = false; } if ((client.Entity.attributes4 == true) && (DateTime.Now > client.Entity.attributestime4.AddSeconds(80.0)) && client.Entity.StartTimer) { client.Entity.Immunity -= 15000; client.Entity.attributes4 = false; } if ((client.Entity.attributes3 == true) && (DateTime.Now > client.Entity.attributestime3.AddSeconds(80.0)) && client.Entity.StartTimer) { client.Entity.PhysicalDamageIncrease -= 3000; client.Entity.attributes3 = false; } if ((client.Entity.attributes2 == true) && (DateTime.Now > client.Entity.attributestime2.AddSeconds(80.0)) && client.Entity.StartTimer) { client.Entity.MagicDamageIncrease -= 3000; client.Entity.attributes2 = false; } if ((client.Entity.attributes1 == true) && (DateTime.Now > client.Entity.attributestime1.AddSeconds(80.0)) && client.Entity.StartTimer) { client.Entity.PhysicalDamageDecrease -= 3000; client.Entity.attributes1 = false; } if ((client.Entity.attributes == true) && (DateTime.Now > client.Entity.attributestime.AddSeconds(80.0)) && client.Entity.StartTimer) { client.Entity.MagicDamageDecrease -= 3000; client.Entity.attributes = false; } #endregion #region Attackable if (client.JustLoggedOn) { client.JustLoggedOn = false; client.ReviveStamp = Now32; } if (!client.Attackable) { if (Now32 > client.ReviveStamp.AddSeconds(5)) { client.Attackable = true; } } #endregion #region HeavenBlessing if (client.Entity.HeavenBlessing > 0) { if (Now32 > client.Entity.HeavenBlessingStamp.AddMilliseconds(1000)) { client.Entity.HeavenBlessingStamp = Now32; client.Entity.HeavenBlessing--; } } #endregion #region Enlightment if (client.Entity.EnlightmentTime > 0) { if (Now32 >= client.Entity.EnlightmentStamp.AddMinutes(1)) { client.Entity.EnlightmentStamp = Now32; client.Entity.EnlightmentTime--; if (client.Entity.EnlightmentTime % 10 == 0 && client.Entity.EnlightmentTime > 0) client.IncreaseExperience(Game.Attacking.Calculate.Percent((int)client.ExpBall, .10F), false); } } #endregion #region PKPoints if (Now32 >= client.Entity.PKPointDecreaseStamp.AddMinutes(5)) { client.Entity.PKPointDecreaseStamp = Now32; if (client.Entity.PKPoints > 0) { client.Entity.PKPoints--; } else client.Entity.PKPoints = 0; } #endregion #region OverHP if (client.Entity.FullyLoaded) { if (client.Entity.Hitpoints > client.Entity.MaxHitpoints && client.Entity.MaxHitpoints > 1 && !client.Entity.Transformed) { client.Entity.Hitpoints = client.Entity.MaxHitpoints; } } #endregion #region OverVigor if (client.Entity.FullyLoaded) { if (client.Vigor > client.Entity.ExtraVigor) { client.Vigor = client.Entity.ExtraVigor; } } #endregion #region Die Delay if (client.Entity.Hitpoints == 0 && client.Entity.ContainsFlag(Network.GamePackets.Update.Flags.Dead) && !client.Entity.ContainsFlag(Network.GamePackets.Update.Flags.Ghost)) { if (Now32 > client.Entity.DeathStamp.AddSeconds(2)) { client.Entity.AddFlag(Network.GamePackets.Update.Flags.Ghost); if (client.Entity.Body % 10 < 3) client.Entity.TransformationID = 99; else client.Entity.TransformationID = 98; client.SendScreenSpawn(client.Entity, true); } } #endregion #region ChainBolt if (client.Entity.ContainsFlag2(Update.Flags2.ChainBoltActive)) if (Now32 > client.Entity.ChainboltStamp.AddSeconds(client.Entity.ChainboltTime)) client.Entity.RemoveFlag2(Update.Flags2.ChainBoltActive); #endregion #region MaGice Effect Epic Toiso if (client.Entity.Class >= 100 & client.Entity.Class <= 190 & client.Entity.Level == 140 & client.Entity.Reborn == 2) { byte[] packet = new byte[72]; Writer.WriteUInt32(64, 0, packet); Writer.WriteUInt32(10017, 2, packet); Writer.WriteUInt32((uint)Time32.timeGetTime().GetHashCode(), 4, packet); Writer.WriteUInt32(client.Entity.UID, 8, packet); Writer.WriteUInt32(2, 12, packet); Writer.WriteUInt32(25, 16, packet); Writer.WriteUInt32(16, 20, packet); Writer.WriteUInt32(64, 23, packet); Writer.WriteUInt32(2, 24, packet); Writer.WriteUInt32(16, 41, packet); Writer.WriteUInt32(78, 44, packet); Writer.WriteUInt32(172, 48, packet); Writer.WriteUInt32(5, 52, packet); Writer.WriteUInt32(200, 56, packet); client.Send(packet); } #endregion if (client.Entity.HasMagicDefender && Now32 >= client.Entity.MagicDefenderStamp.AddSeconds(client.Entity.MagicDefenderSecs)) { client.Entity.RemoveMagicDefender(); } if (Now32 >= client.Entity.BlackbeardsRageStamp.AddSeconds(60)) { client.Entity.RemoveFlag2(Mr.Lover.Network.GamePackets.Update.Flags2.BlackbeardsRage); } if (Now32 >= client.Entity.CannonBarrageStamp.AddSeconds(60)) { client.Entity.RemoveFlag2(Mr.Lover.Network.GamePackets.Update.Flags2.CannonBarrage); } if (Now32 >= client.Entity.FatigueStamp.AddSeconds(client.Entity.FatigueSecs)) { client.Entity.RemoveFlag2(Mr.Lover.Network.GamePackets.Update.Flags2.Fatigue); client.Entity.IsDefensiveStance = false; } if (Now32 > client.Entity.GuildRequest.AddSeconds(30)) { client.GuildJoinTarget = 0; } } public void CreateTournaments() { var map = Kernel.Maps[700]; Tournaments = new List(); #region ToP Nobility Tournaments.Add(new KillTournament(map.MakeDynamicMap().ID, WeekDay.Everyday, 5, 05, (client) => { client.Entity.ConquerPoints += 50000; }, "Nobility Tournament (Kings)", (p) => { return p.Entity.NobilityRank == NobilityRank.King; })); Tournaments.Add(new KillTournament(map.MakeDynamicMap().ID, WeekDay.Everyday, 5, 05, (client) => { client.Entity.ConquerPoints += 40000; }, "Nobility Tournament (Princes)", (p) => { return p.Entity.NobilityRank == NobilityRank.Prince; })); Tournaments.Add(new KillTournament(map.MakeDynamicMap().ID, WeekDay.Everyday, 5, 05, (client) => { client.Entity.ConquerPoints += 30000; }, "Nobility Tournament (Dukes)", (p) => { return p.Entity.NobilityRank == NobilityRank.Duke; })); Tournaments.Add(new KillTournament(map.MakeDynamicMap().ID, WeekDay.Everyday, 5, 05, (client) => { client.Entity.ConquerPoints += 20000; }, "Nobility Tournament (Earl)", (p) => { return p.Entity.NobilityRank == NobilityRank.Earl; })); Tournaments.Add(new KillTournament(map.MakeDynamicMap().ID, WeekDay.Everyday, 5, 05, (client) => { client.Entity.ConquerPoints += 10000; }, "Nobility Tournament (Baron)", (p) => { return p.Entity.NobilityRank == NobilityRank.Baron; })); Tournaments.Add(new KillTournament(map.MakeDynamicMap().ID, WeekDay.Everyday, 5, 05, (client) => { client.Entity.ConquerPoints += 5000; }, "Nobility Tournament (Knight)", (p) => { return p.Entity.NobilityRank == NobilityRank.Knight; })); Tournaments.Add(new KillTournament(map.MakeDynamicMap().ID, WeekDay.Everyday, 14, 0, (client) => { client.Entity.ConquerPoints += 50000; }, "Nobility Tournament (Kings)", (p) => { return p.Entity.NobilityRank == NobilityRank.King; })); Tournaments.Add(new KillTournament(map.MakeDynamicMap().ID, WeekDay.Everyday, 14, 0, (client) => { client.Entity.ConquerPoints += 40000; }, "Nobility Tournament (Princes)", (p) => { return p.Entity.NobilityRank == NobilityRank.Prince; })); Tournaments.Add(new KillTournament(map.MakeDynamicMap().ID, WeekDay.Everyday, 14, 0, (client) => { client.Entity.ConquerPoints += 30000; }, "Nobility Tournament (Dukes)", (p) => { return p.Entity.NobilityRank == NobilityRank.Duke; })); Tournaments.Add(new KillTournament(map.MakeDynamicMap().ID, WeekDay.Everyday, 14, 0, (client) => { client.Entity.ConquerPoints += 20000; }, "Nobility Tournament (Earl)", (p) => { return p.Entity.NobilityRank == NobilityRank.Earl; })); Tournaments.Add(new KillTournament(map.MakeDynamicMap().ID, WeekDay.Everyday, 14, 0, (client) => { client.Entity.ConquerPoints += 10000; }, "Nobility Tournament (Baron)", (p) => { return p.Entity.NobilityRank == NobilityRank.Baron; })); Tournaments.Add(new KillTournament(map.MakeDynamicMap().ID, WeekDay.Everyday, 14, 0, (client) => { client.Entity.ConquerPoints += 5000; }, "Nobility Tournament (Knight)", (p) => { return p.Entity.NobilityRank == NobilityRank.Knight; })); #endregion #region Class PK Tournament map = Kernel.Maps[1730]; Tournaments.Add(new KillTournament(map.MakeDynamicMap().ID, WeekDay.Everyday, 22, 0, (client) => { client.Entity.ConquerPoints += 500000; client.Entity.AddTopStatus(Network.GamePackets.Update.Flags.TopTrojan, DateTime.Now.AddDays(1).AddHours(-1)); }, "Class PK War (Trojan)", (p) => { return p.Entity.Class >= 10 && p.Entity.Class <= 15; }, "You may join from ClassPkEnvoy. You can win " + 500000 + " and a Top halo.")); Tournaments.Add(new KillTournament(map.MakeDynamicMap().ID, WeekDay.Monday, 22, 0, (client) => { client.Entity.ConquerPoints += 500000; client.Entity.AddTopStatus(Network.GamePackets.Update.Flags.TopWarrior, DateTime.Now.AddDays(7).AddHours(-1)); }, "Class PK War (Warrior)", (p) => { return p.Entity.Class >= 20 && p.Entity.Class <= 25; }, "You may join from ClassPkEnvoy. You can win " + 500000 + " and a Top halo.")); Tournaments.Add(new KillTournament(map.MakeDynamicMap().ID, WeekDay.Monday, 22, 0, (client) => { client.Entity.ConquerPoints += 500000; client.Entity.AddTopStatus(Network.GamePackets.Update.Flags.TopArcher, DateTime.Now.AddDays(7).AddHours(-1)); }, "Class PK War (Archer)", (p) => { return p.Entity.Class >= 40 && p.Entity.Class <= 45; }, "You may join from ClassPkEnvoy. You can win " + 500000 + " and a Top halo.")); Tournaments.Add(new KillTournament(map.MakeDynamicMap().ID, WeekDay.Monday, 22, 0, (client) => { client.Entity.ConquerPoints += 500000; client.Entity.AddTopStatus(Network.GamePackets.Update.Flags.TopNinja, DateTime.Now.AddDays(7).AddHours(-1)); }, "Class PK War (Ninja)", (p) => { return p.Entity.Class >= 50 && p.Entity.Class <= 55; }, "You may join from ClassPkEnvoy. You can win " + 500000 + " and a Top halo.")); Tournaments.Add(new KillTournament(map.MakeDynamicMap().ID, WeekDay.Monday, 22, 0, (client) => { client.Entity.ConquerPoints += 500000; client.Entity.AddTopStatus(Network.GamePackets.Update.Flags2.TopMonk, DateTime.Now.AddDays(7).AddHours(-1)); }, "Class PK War (Monk)", (p) => { return p.Entity.Class >= 60 && p.Entity.Class <= 65; }, "You may join from ClassPkEnvoy. You can win " + 500000 + " and a Top halo.")); Tournaments.Add(new KillTournament(map.MakeDynamicMap().ID, WeekDay.Monday, 22, 0, (client) => { client.Entity.ConquerPoints += 500000; client.Entity.AddTopStatus(Network.GamePackets.Update.Flags2.TopPirate, DateTime.Now.AddDays(7).AddHours(-1)); }, "Class PK War (Pirate)", (p) => { return p.Entity.Class >= 70 && p.Entity.Class <= 75; }, "You may join from ClassPkEnvoy. You can win " + 500000 + " and a Top halo.")); Tournaments.Add(new KillTournament(map.MakeDynamicMap().ID, WeekDay.Monday, 22, 0, (client) => { client.Entity.ConquerPoints += 500000; client.Entity.AddTopStatus(Network.GamePackets.Update.Flags.TopWaterTaoist, DateTime.Now.AddDays(7).AddHours(-1)); }, "Class PK War (Water Taoist)", (p) => { return p.Entity.Class >= 130 && p.Entity.Class <= 135; }, "You may join from ClassPkEnvoy. You can win " + 500000 + " and a Top halo.")); Tournaments.Add(new KillTournament(map.MakeDynamicMap().ID, WeekDay.Monday, 22, 0, (client) => { client.Entity.ConquerPoints += 500000; client.Entity.AddTopStatus(Network.GamePackets.Update.Flags.TopFireTaoist, DateTime.Now.AddDays(7).AddHours(-1)); }, "Class PK War (Fire Taoist)", (p) => { return p.Entity.Class >= 140 && p.Entity.Class <= 145; }, "You may join from ClassPkEnvoy. You can win " + 500000 + " and a Top halo.")); Tournaments.Add(new KillTournament(map.MakeDynamicMap().ID, WeekDay.Monday, 22, 0, (client) => { client.Entity.ConquerPoints += 500000; client.Entity.AddTopStatus(Network.GamePackets.Update.Flags3.DragonWarriorTop, DateTime.Now.AddDays(7).AddHours(-1)); }, "Class PK War (Dragon-Warrior)", (p) => { return p.Entity.Class >= 80 && p.Entity.Class <= 85; }, "You may join from ClassPkEnvoy. You can win " + 500000 + " and a Top halo.")); #endregion PoleDomination = new PoleDomination(250000); SteedRace = new SteedRace(); ClanWarArena.Create(); Game.Features.Tournaments.TeamElitePk.TeamTournament.Create(); Game.Features.Tournaments.TeamElitePk.SkillTeamTournament.Create(); //new Hunt_Thief(); // new Dash_Bash(); new Game.TwinWar(); new Game.StatuesWar(); new ClassPoleWar(); new NobiltyPoleWar(); Chase = new Game.Chase(); //new Mido.New_Quests.TreeCatcher(); new Mido.Hall_of_Fame(); //new Mido.Vote_System(); new Mido.Lobby(); // new SkyWar(); HeroOFGame = new Game.Features.Tournaments.HeroOfGame(); ElitePKTournament.Create(); CTF = new CaptureTheFlag(); DelayedTask = new Mido.DelayedTask(); } public DateTime MonthlyPKDate { get { DateTime now = DateTime.Now; DateTime month = new DateTime(now.Year, now.Month, 1); while (month.DayOfWeek != DayOfWeek.Sunday) month = month.AddDays(1); return month; } } public DateTime NextMonthlyPKDate { get { DateTime now = DateTime.Now; DateTime month = new DateTime(now.Year, now.Month, 1).AddMonths(1); while (month.DayOfWeek != DayOfWeek.Sunday) month = month.AddDays(1); return month; } } private void connectionReview(ClientWrapper wrapper, int time) { ClientWrapper.TryReview(wrapper); } private void connectionReceive(ClientWrapper wrapper, int time) { ClientWrapper.TryReceive(wrapper); } private void connectionSend(ClientWrapper wrapper, int time) { ClientWrapper.TrySend(wrapper); } public bool Register(GameState client) { if (client.TimerSubscriptions == null) { client.TimerSyncRoot = new object(); client.TimerSubscriptions = new IDisposable[] { Buffers.Add(client), Characters.Add(client), AutoAttack.Add(client), Prayer.Add(client), }; return true; } return false; } public void Unregister(GameState client) { if (client.TimerSubscriptions == null) return; lock (client.TimerSyncRoot) { if (client.TimerSubscriptions != null) { foreach (var timer in client.TimerSubscriptions) timer.Dispose(); client.TimerSubscriptions = null; } } } private bool Valid(GameState client) { if (!client.Socket.Alive || client.Entity == null) { client.Disconnect(); return false; } return true; } private void BuffersCallback(GameState client, int time) { if (!Valid(client)) return; Time32 Now = new Time32(time); #region JiangHu if (client.Entity.MyJiang != null) client.Entity.MyJiang.TheadTime(client); #endregion #region Arena Quit if (client.InArenaQualifier() && client.Map.BaseID != 700) { Game.Arena.QualifyEngine.DoGiveUp(client); } #endregion #region Aura if (client.Entity.Aura_isActive) { if (client.Entity.Aura_isActive) { if (Time32.Now >= client.Entity.AuraStamp.AddSeconds(client.Entity.AuraTime)) { client.Entity.RemoveFlag2(client.Entity.Aura_actType); client.removeAuraBonuses(client.Entity.Aura_actType, client.Entity.Aura_actPower, 1); client.Entity.Aura_isActive = false; client.Entity.AuraTime = 0; client.Entity.Aura_actType = 0; client.Entity.Aura_actPower = 0; } } } #endregion #region Vote //if (client.Voted && DateTime.Now >= client.VoteStamp.AddHours(12)) //{ // client.Voted = false; // client.VoteStamp = new DateTime(0); // client.Send(new Network.GamePackets.Message("You have voted last 12 hour, please vote again !", System.Drawing.Color.Red, Message.Talk)); // Mido.Vote_System.Voted(client); //} #endregion #region Bless if (client.Entity.ContainsFlag(Update.Flags.CastPray)) { if (client.BlessTime <= 7198500) client.BlessTime += 1000; else client.BlessTime = 7200000; client.Entity.Update(Update.LuckyTimeTimer, client.BlessTime, false); } else if (client.Entity.ContainsFlag(Update.Flags.Praying)) { if (client.PrayLead != null) { if (client.PrayLead.Socket.Alive) { if (client.BlessTime <= 7199000) { client.BlessTime += 500; client.BlessStamp = DateTime.Now; } else { client.BlessTime = 7200000; client.Entity.Update(Update.LuckyTimeTimer, client.BlessTime, false); } } else client.Entity.RemoveFlag(Update.Flags.Praying); } else client.Entity.RemoveFlag(Update.Flags.Praying); } else { if (client.BlessTime > 0) { if (DateTime.Now > client.BlessStamp.AddSeconds(client.BlessTime)) { client.BlessTime = 0; client.Entity.Update(Update.LuckyTimeTimer, client.BlessTime, false); } if (client.BlessTime >= 500) client.BlessTime -= 500; else client.BlessTime = 0; client.Entity.Update(Update.LuckyTimeTimer, client.BlessTime, false); } } #endregion #region Flashing name if (client.Entity.ContainsFlag(Network.GamePackets.Update.Flags.FlashingName)) { if (Now > client.Entity.FlashingNameStamp.AddSeconds(client.Entity.FlashingNameTime)) { client.Entity.RemoveFlag(Network.GamePackets.Update.Flags.FlashingName); } } #endregion #region XPList if (!client.Entity.ContainsFlag(Network.GamePackets.Update.Flags.XPList)) { if (Now > client.XPCountStamp.AddSeconds(3)) { #region Arrows if (client.Equipment != null) { if (!client.Equipment.Free(5)) { if (Network.PacketHandler.IsArrow(client.Equipment.TryGetItem(5).ID)) { Database.ConquerItemTable.UpdateDurabilityItem(client.Equipment.TryGetItem(5)); } } } #endregion client.XPCountStamp = Now; client.XPCount++; if (client.XPCount >= 100) { client.Entity.AddFlag(Network.GamePackets.Update.Flags.XPList); client.XPCount = 0; client.XPListStamp = Now; } } } else { if (Now > client.XPListStamp.AddSeconds(20)) { client.Entity.RemoveFlag(Network.GamePackets.Update.Flags.XPList); } } #endregion #region KOSpell if (client.Entity.OnKOSpell()) { if (client.Entity.OnCyclone()) { int Seconds = Now.AllSeconds() - client.Entity.CycloneStamp.AddSeconds(client.Entity.CycloneTime).AllSeconds(); if (Seconds >= 1) { client.Entity.RemoveFlag(Network.GamePackets.Update.Flags.Cyclone); } } if (client.Entity.OnSuperman()) { int Seconds = Now.AllSeconds() - client.Entity.SupermanStamp.AddSeconds(client.Entity.SupermanTime).AllSeconds(); if (Seconds >= 1) { client.Entity.RemoveFlag(Network.GamePackets.Update.Flags.Superman); } } if (!client.Entity.OnKOSpell()) { //Record KO client.Entity.KOCount = 0; } } #endregion #region Buffers if (client.Entity.ContainsFlag2(Network.GamePackets.Update.Flags2.TyrantAura) && !client.TeamAura) { if (Now >= client.Entity.AuraStamp.AddSeconds(client.Entity.AuraTime)) { client.Entity.AuraTime = 0; client.Entity.Aura_isActive = false; //client.Entity.StigmaIncrease = 0; client.Entity.RemoveFlag2(Network.GamePackets.Update.Flags2.TyrantAura); } } if (client.Entity.ContainsFlag2(Network.GamePackets.Update.Flags2.FendAura) && !client.TeamAura) { if (Now >= client.Entity.AuraStamp.AddSeconds(client.Entity.AuraTime)) { client.Entity.AuraTime = 0; client.Entity.Aura_isActive = false; //client.Entity.StigmaIncrease = 0; client.Entity.RemoveFlag2(Network.GamePackets.Update.Flags2.FendAura); } } if (client.Entity.ContainsFlag2(Network.GamePackets.Update.Flags2.MetalAura)) { if (Now >= client.Entity.AuraStamp.AddSeconds(client.Entity.AuraTime)) { client.Entity.AuraTime = 0; client.Entity.Aura_isActive = false; //client.Entity.StigmaIncrease = 0; client.Entity.RemoveFlag2(Network.GamePackets.Update.Flags2.MetalAura); } } if (client.Entity.ContainsFlag2(Network.GamePackets.Update.Flags2.WoodAura)) { if (Now >= client.Entity.AuraStamp.AddSeconds(client.Entity.AuraTime)) { client.Entity.AuraTime = 0; client.Entity.Aura_isActive = false; //client.Entity.StigmaIncrease = 0; client.Entity.RemoveFlag2(Network.GamePackets.Update.Flags2.WoodAura); } } if (client.Entity.ContainsFlag2(Network.GamePackets.Update.Flags2.WaterAura)) { if (Now >= client.Entity.AuraStamp.AddSeconds(client.Entity.AuraTime)) { client.Entity.AuraTime = 0; client.Entity.Aura_isActive = false; //client.Entity.StigmaIncrease = 0; client.Entity.RemoveFlag2(Network.GamePackets.Update.Flags2.WaterAura); } } if (client.Entity.ContainsFlag2(Network.GamePackets.Update.Flags2.EarthAura)) { if (Now >= client.Entity.AuraStamp.AddSeconds(client.Entity.AuraTime)) { client.Entity.AuraTime = 0; client.Entity.Aura_isActive = false; //client.Entity.StigmaIncrease = 0; client.Entity.RemoveFlag2(Network.GamePackets.Update.Flags2.EarthAura); } } if (client.Entity.ContainsFlag2(Network.GamePackets.Update.Flags2.FireAura)) { if (Now >= client.Entity.AuraStamp.AddSeconds(client.Entity.AuraTime)) { client.Entity.AuraTime = 0; client.Entity.Aura_isActive = false; //client.Entity.StigmaIncrease = 0; client.Entity.RemoveFlag2(Network.GamePackets.Update.Flags2.FireAura); } } if (client.Entity.ContainsFlag(Network.GamePackets.Update.Flags.Stigma)) { if (Now >= client.Entity.StigmaStamp.AddSeconds(client.Entity.StigmaTime)) { client.Entity.StigmaTime = 0; client.Entity.StigmaIncrease = 0; client.Entity.RemoveFlag(Network.GamePackets.Update.Flags.Stigma); } } if (client.Entity.ContainsFlag(Network.GamePackets.Update.Flags.Dodge)) { if (Now >= client.Entity.DodgeStamp.AddSeconds(client.Entity.DodgeTime)) { client.Entity.DodgeTime = 0; client.Entity.DodgeIncrease = 0; //Console.WriteLine("dodge removed !"); client.Entity.RemoveFlag(Network.GamePackets.Update.Flags.Dodge); } } if (client.Entity.ContainsFlag(Network.GamePackets.Update.Flags.Invisibility)) { if (Now >= client.Entity.InvisibilityStamp.AddSeconds(client.Entity.InvisibilityTime)) { client.Entity.RemoveFlag(Network.GamePackets.Update.Flags.Invisibility); } } if (client.Entity.ContainsFlag(Network.GamePackets.Update.Flags.StarOfAccuracy)) { if (client.Entity.StarOfAccuracyTime != 0) { if (Now >= client.Entity.StarOfAccuracyStamp.AddSeconds(client.Entity.StarOfAccuracyTime)) { client.Entity.RemoveFlag(Network.GamePackets.Update.Flags.StarOfAccuracy); } } else { if (Now >= client.Entity.AccuracyStamp.AddSeconds(client.Entity.AccuracyTime)) { client.Entity.RemoveFlag(Network.GamePackets.Update.Flags.StarOfAccuracy); } } } if (client.Entity.ContainsFlag(Network.GamePackets.Update.Flags.MagicShield)) { if (client.Entity.MagicShieldTime != 0) { if (Now >= client.Entity.MagicShieldStamp.AddSeconds(client.Entity.MagicShieldTime)) { client.Entity.MagicShieldIncrease = 0; client.Entity.MagicShieldTime = 0; client.Entity.RemoveFlag(Network.GamePackets.Update.Flags.MagicShield); } } else { if (Now >= client.Entity.ShieldStamp.AddSeconds(client.Entity.ShieldTime)) { client.Entity.ShieldIncrease = 0; client.Entity.ShieldTime = 0; client.Entity.RemoveFlag(Network.GamePackets.Update.Flags.MagicShield); } } } #endregion #region Fly if (client.Entity.ContainsFlag(Network.GamePackets.Update.Flags.Fly)) { if (Now >= client.Entity.FlyStamp.AddSeconds(client.Entity.FlyTime)) { client.Entity.RemoveFlag(Network.GamePackets.Update.Flags.Fly); client.Entity.FlyTime = 0; } } #endregion #region PoisonStar if (client.Entity.NoDrugsTime > 0) { if (Now > client.Entity.NoDrugsStamp.AddSeconds(client.Entity.NoDrugsTime)) { client.Entity.NoDrugsTime = 0; } } #endregion #region ToxicFog if (client.Entity.ToxicFogLeft > 0) { if (Now >= client.Entity.ToxicFogStamp.AddSeconds(2)) { float Percent = client.Entity.ToxicFogPercent; float immu = client.Entity.Detoxication / 100F; Percent = Math.Max(0.1F, Percent * immu); //Remove this line if you want it normal client.Entity.ToxicFogLeft--; if (client.Entity.ToxicFogLeft == 0) { client.Entity.RemoveFlag(Update.Flags.Poisoned); return; } client.Entity.ToxicFogStamp = Now; if (client.Entity.Hitpoints > 1) { uint damage = Game.Attacking.Calculate.Percent(client.Entity, Percent); if (client.Entity.ContainsFlag2(Network.GamePackets.Update.Flags2.AzureShield)) { if (damage > client.Entity.AzureShieldDefence) { damage -= client.Entity.AzureShieldDefence; Game.Attacking.Calculate.CreateAzureDMG(client.Entity.AzureShieldDefence, client.Entity, client.Entity); client.Entity.RemoveFlag2(Network.GamePackets.Update.Flags2.AzureShield); } else { Game.Attacking.Calculate.CreateAzureDMG((uint)damage, client.Entity, client.Entity); client.Entity.AzureShieldDefence -= (ushort)damage; client.Entity.AzureShieldPacket(); damage = 1; } } else client.Entity.Hitpoints -= damage; Network.GamePackets.SpellUse suse = new Network.GamePackets.SpellUse(true); suse.Attacker = client.Entity.UID; suse.SpellID = 10010; suse.AddTarget(client.Entity, damage, null); client.SendScreen(suse, true); if (client != null) client.UpdateQualifier(client.ArenaStatistic.PlayWith, client, damage); } } } else { if (client.Entity.ContainsFlag(Update.Flags.Poisoned)) client.Entity.RemoveFlag(Update.Flags.Poisoned); } #endregion #region FatalStrike if (client.Entity.OnFatalStrike()) { if (Now > client.Entity.FatalStrikeStamp.AddSeconds(client.Entity.FatalStrikeTime)) { client.Entity.RemoveFlag(Network.GamePackets.Update.Flags.FatalStrike); } } #endregion #region Oblivion if (client.Entity.OnOblivion()) { if (Now > client.Entity.OblivionStamp.AddSeconds(client.Entity.OblivionTime)) { client.Entity.RemoveFlag2(Network.GamePackets.Update.Flags2.Oblivion); } } #endregion #region ShurikenVortex if (client.Entity.ContainsFlag(Network.GamePackets.Update.Flags.ShurikenVortex)) { if (Now > client.Entity.ShurikenVortexStamp.AddSeconds(client.Entity.ShurikenVortexTime)) { client.Entity.RemoveFlag(Network.GamePackets.Update.Flags.ShurikenVortex); } } #endregion #region Transformations if (client.Entity.Transformed) { if (Now > client.Entity.TransformationStamp.AddSeconds(client.Entity.TransformationTime)) { client.Entity.Untransform(); } } #endregion #region soulshackle if (client.Entity.ContainsFlag2(Network.GamePackets.Update.Flags2.SoulShackle)) { if (Now > client.Entity.ShackleStamp.AddSeconds(client.Entity.ShackleTime)) { client.Entity.RemoveFlag2(Network.GamePackets.Update.Flags2.SoulShackle); } } #endregion #region AutoHunting if (client.Entity.ContainsFlag3((uint)Update.Flags3.AutoHunting)) { if (Now > client.Entity.AutoHuntStamp.AddMinutes(15)) { client.Entity.RemoveFlag3((uint)Update.Flags3.AutoHunting); } } #endregion #region AzureShield if (client.Entity.ContainsFlag2(Network.GamePackets.Update.Flags2.AzureShield)) { if (Now > client.Entity.MagicShieldStamp.AddSeconds(client.Entity.MagicShieldTime)) { client.Entity.RemoveFlag2(Network.GamePackets.Update.Flags2.AzureShield); } } #endregion #region Blade Flurry if (client.Entity.ContainsFlag3(Update.Flags3.BladeFlurry)) { if (Time32.Now > client.Entity.BladeFlurryStamp.AddSeconds(45)) { client.Entity.RemoveFlag3(Update.Flags3.BladeFlurry); } } #endregion #region Flustered if (client.Entity.ContainsFlag(Update.Flags.Frightened)) { if (client.RaceFrightened) { if (Now > client.FrightenStamp.AddSeconds(20)) { client.RaceFrightened = false; { GameCharacterUpdates update = new GameCharacterUpdates(true); update.UID = client.Entity.UID; update.Remove(GameCharacterUpdates.Flustered); client.SendScreen(update, true); } client.Entity.RemoveFlag(Update.Flags.Frightened); } else { int rand; ushort x, y; do { rand = Kernel.Random.Next(Game.Map.XDir.Length); x = (ushort)(client.Entity.X + Game.Map.XDir[rand]); y = (ushort)(client.Entity.Y + Game.Map.YDir[rand]); } while (!client.Map.Floor[x, y, MapObjectType.Player]); client.Entity.Facing = Kernel.GetAngle( client.Entity.X, client.Entity.Y, x, y); client.Entity.X = x; client.Entity.Y = y; client.SendScreen( new TwoMovements() { EntityCount = 1, Facing = client.Entity.Facing, FirstEntity = client.Entity.UID, WalkType = 9, X = client.Entity.X, Y = client.Entity.Y, MovementType = TwoMovements.Walk }, true); } } } #endregion #region Stunned if (client.Entity.Stunned) { if (Now > client.Entity.StunStamp.AddMilliseconds(2000)) { client.Entity.Stunned = false; } } #endregion #region Frozen if (client.Entity.ContainsFlag(Update.Flags.Freeze)) { if (Now > client.Entity.FrozenStamp.AddSeconds(client.Entity.FrozenTime)) { client.Entity.FrozenD = false; client.Entity.FrozenTime = 0; client.Entity.RemoveFlag(Update.Flags.Freeze); GameCharacterUpdates update = new GameCharacterUpdates(true); update.UID = client.Entity.UID; update.Remove(GameCharacterUpdates.Freeze); client.SendScreen(update, true); } } #endregion #region Dizzy if (client.Entity.ContainsFlag(Update.Flags.Dizzy)) { if (client.RaceDizzy) { if (Now > client.DizzyStamp.AddSeconds(5)) { client.RaceDizzy = false; { GameCharacterUpdates update = new GameCharacterUpdates(true); update.UID = client.Entity.UID; update.Remove(GameCharacterUpdates.Dizzy); client.SendScreen(update); } client.Entity.RemoveFlag(Update.Flags.Dizzy); } } } #endregion #region Confused if (client.Entity.ContainsFlag(Update.Flags.Confused)) { if (Now > client.FrightenStamp.AddSeconds(15)) { client.RaceFrightened = false; { GameCharacterUpdates update = new GameCharacterUpdates(true); update.UID = client.Entity.UID; update.Remove(GameCharacterUpdates.Flustered); client.SendScreen(update); } client.Entity.RemoveFlag(Update.Flags.Confused); } } #endregion #region Divine Shield if (client.Entity.ContainsFlag(Update.Flags.DivineShield)) { if (Now > client.GuardStamp.AddSeconds(10)) { client.RaceGuard = false; { GameCharacterUpdates update = new GameCharacterUpdates(true); update.UID = client.Entity.UID; update.Remove(GameCharacterUpdates.DivineShield); client.SendScreen(update); } client.Entity.RemoveFlag(Update.Flags.DivineShield); } } #endregion #region Extra Speed if (client.Entity.ContainsFlag(Update.Flags.OrangeSparkles) && !client.InQualifier()) { if (Time32.Now > client.RaceExcitementStamp.AddSeconds(15)) { var upd = new GameCharacterUpdates(true) { UID = client.Entity.UID }; upd.Remove(GameCharacterUpdates.Accelerated); client.SendScreen(upd); client.SpeedChange = null; client.Entity.RemoveFlag(Update.Flags.OrangeSparkles); } } #endregion #region Decelerated if (client.Entity.ContainsFlag(Update.Flags.PurpleSparkles) && !client.InQualifier()) { if (Time32.Now > client.DecelerateStamp.AddSeconds(10)) { { client.RaceDecelerated = false; var upd = new GameCharacterUpdates(true) { UID = client.Entity.UID }; upd.Remove(GameCharacterUpdates.Decelerated); client.SendScreen(upd); client.SpeedChange = null; } client.Entity.RemoveFlag(Update.Flags.PurpleSparkles); } } #endregion #region Team Aura if (!client.TeamAura) { if (client.Team != null && !client.Entity.Dead && client.Team.Teammates != null) { foreach (Client.GameState pClient in client.Team.Teammates) { if (client.Entity.UID != pClient.Entity.UID && Kernel.GetDistance(client.Entity.X, client.Entity.Y, pClient.Entity.X, pClient.Entity.Y) <= Constants.pScreenDistance) { if (pClient.Entity.Aura_isActive && pClient.Socket.Alive && pClient.Entity.UID != client.Entity.UID && pClient.Entity.MapID == client.Entity.MapID) { if (pClient.Entity.Aura_actType == Update.Flags2.FendAura || pClient.Entity.Aura_actType == Update.Flags2.TyrantAura) { client.TeamAura = true; client.TeamAuraOwner = pClient; client.TeamAuraStatusFlag = pClient.Entity.Aura_actType; client.TeamAuraPower = pClient.Entity.Aura_actPower; client.Entity.AddFlag2(client.TeamAuraStatusFlag); string type = "Critial Strikes"; if (client.Entity.Aura_actType == 100) type = "Immunity"; client.Send(new Message(type + " increased By " + client.TeamAuraPower + " percent!", System.Drawing.Color.Red, Message.Agate)); client.doAuraBonuses(client.TeamAuraStatusFlag, client.TeamAuraPower, 1); break; } } } } } } else { var pClient = client.TeamAuraOwner; string type = "Critial Strikes"; if (client.Entity.Aura_actType == 100) type = "Immunity"; if (pClient == null) { client.TeamAura = false; //client.removeAuraBonuses(client.TeamAuraStatusFlag, client.TeamAuraPower, 1); client.removeAuraBonuses(client.TeamAuraStatusFlag, client.TeamAuraPower, 1); client.Entity.RemoveFlag2(client.TeamAuraStatusFlag); client.Send(new Message(type + " decreased by " + client.TeamAuraPower + " percent!", System.Drawing.Color.Red, Message.Agate)); client.TeamAuraStatusFlag = 0; client.TeamAuraPower = 0; } else { if (!pClient.Entity.Aura_isActive || !pClient.Socket.Alive || pClient.Entity.Dead || pClient.Entity.MapID != client.Entity.MapID) { client.TeamAura = false; //client.removeAuraBonuses(client.TeamAuraStatusFlag, client.TeamAuraPower, 1); client.removeAuraBonuses(client.TeamAuraStatusFlag, client.TeamAuraPower, 1); client.Entity.RemoveFlag2(client.TeamAuraStatusFlag); client.Send(new Message(type + " decreased by " + client.TeamAuraPower + " percent!", System.Drawing.Color.Red, Message.Agate)); client.TeamAuraStatusFlag = 0; client.TeamAuraPower = 0; } else { if (client.Team == null || (pClient.Team == null || (pClient.Team != null && !pClient.Team.IsTeammate(client.Entity.UID))) || client.Entity.Dead || Kernel.GetDistance(client.Entity.X, client.Entity.Y, pClient.Entity.X, pClient.Entity.Y) > Constants.pScreenDistance) { client.TeamAura = false; client.removeAuraBonuses(client.TeamAuraStatusFlag, client.TeamAuraPower, 1); client.Entity.RemoveFlag2(client.TeamAuraStatusFlag); client.Send(new Message(type + " decreased by " + client.TeamAuraPower + " percent!", System.Drawing.Color.Red, Message.Agate)); client.TeamAuraStatusFlag = 0; client.TeamAuraPower = 0; } } } } #endregion #region CTF Flag if (client.Entity.ContainsFlag2(Update.Flags2.CarryingFlag)) { if (Time32.Now > client.Entity.FlagStamp.AddSeconds(60)) { client.Entity.RemoveFlag2(Update.Flags2.CarryingFlag); } } #endregion #region Congelado if (client.Entity.ContainsFlag(Update.Flags2.Congelado)) { if (DateTime.Now > client.Entity.CongeladoTimeStamp.AddSeconds(client.Entity.CongeladoTime)) { client.Entity.RemoveFlag(Update.Flags2.Congelado); } } #endregion #region IceBlock if (client.Entity.ContainsFlag(Update.Flags2.IceBlock)) { if (Time32.Now > client.Entity.FreezeStamp.AddSeconds(client.Entity.FreezeTime)) { client.Entity.RemoveFlag(Update.Flags2.IceBlock); } } #endregion #region Cursed if (client.Entity.ContainsFlag(Update.Flags.Cursed)) { if (Time32.Now > client.Entity.Cursed.AddSeconds(300)) { client.Entity.RemoveFlag(Update.Flags.Cursed); } } #endregion #region SuperCycloneStamp if (client.Entity.ContainsFlag3((uint)Update.Flags3.SuperCyclone)) { if (Time32.Now > client.Entity.SuperCycloneStamp.AddSeconds(45)) { client.Entity.RemoveFlag3((uint)Update.Flags3.SuperCyclone); } } #endregion #region DragonCyclone if (client.Entity.ContainsFlag3(Update.Flags3.DragonCyclone)) { if (Time32.Now > client.Entity.DragonCycloneStamp.AddSeconds(45)) { client.Entity.RemoveFlag3(Update.Flags3.DragonCyclone); } } #endregion #region DragonFury if (client.Entity.ContainsFlag3(Update.Flags3.DragonFury)) { if (Time32.Now > client.Entity.DragonFuryStamp.AddSeconds(client.Entity.DragonFuryTime)) { client.Entity.RemoveFlag3(Update.Flags3.DragonFury); Network.GamePackets.Update upgrade = new Network.GamePackets.Update(true); upgrade.UID = client.Entity.UID; upgrade.Append(74 , 0 , 0, 0, 0); client.Entity.Owner.Send(upgrade.ToArray()); } } #endregion #region DragonFlow //if (client.Entity.ContainsFlag3(Update.Flags3.DragonFlow) && !client.Entity.ContainsFlag3(Update.Flags3.DragonCyclone)) //{ // if (Time32.Now > client.Entity.DragonFlowStamp.AddSeconds(8)) // { // Database.SpellInformation spell = null; // spell = Database.SpellTable.SpellInformations[12270][client.Spells[12270].Level]; // var MySpell = Database.SpellTable.GetSpell(client.Spells[12270].ID, client.Spells[12270].Level); // int stamina = 0; // if (client.Entity.HeavenBlessing > 0) // stamina = 50; // if (client.Entity.Stamina != 100 + stamina) // { // switch (spell.Level) // { // case 0: // { // client.Entity.Stamina += 5; // break; // } // case 1: // { // client.Entity.Stamina += 10; // break; // } // case 2: // { // client.Entity.Stamina += 15; // break; // } // default: // { // client.Entity.Stamina += 20; // break; // } // } // _String str = new _String(true); // str.UID = client.Entity.UID; // str.TextsCount = 1; // str.Type = _String.Effect; // str.Texts.Add("leedragonblood"); // client.SendScreen(str, true); // } // client.Entity.DragonFlowStamp = Time32.Now; // } //} //else if (client.Entity.ContainsFlag3(Update.Flags3.DragonFlow) && client.Entity.ContainsFlag3(Update.Flags3.DragonCyclone)) //{ // if (Time32.Now > client.Entity.DragonFlowStamp.AddSeconds(8)) // { // Database.SpellInformation spell = null; // var MySpell = Database.SpellTable.GetSpell(client.Spells[12270].ID, client.Spells[12270].Level); // int stamina = 0; // if (client.Entity.HeavenBlessing > 0) // stamina = 50; // if (client.Entity.Stamina != 100 + stamina) // { // switch (spell.Level) // { // case 0: // { // client.Entity.Stamina += 10; // break; // } // case 1: // { // client.Entity.Stamina += 20; // break; // } // case 2: // { // client.Entity.Stamina += 30; // break; // } // default: // { // client.Entity.Stamina += 40; // break; // } // } // _String str = new _String(true); // str.UID = client.Entity.UID; // str.TextsCount = 1; // str.Type = _String.Effect; // str.Texts.Add("leedragonblood"); // client.SendScreen(str, true); // } // client.Entity.DragonFlowStamp = Time32.Now; // } //} #endregion #region DragonFlow if (client.Entity.ContainsFlag3(Update.Flags3.DragonFlow) && !client.Entity.ContainsFlag3(Update.Flags3.DragonCyclone)) { if (Time32.Now > client.Entity.DragonFlowStamp.AddSeconds(8)) { if (client.Spells.ContainsKey(12270)) { var spell = Database.SpellTable.GetSpell(client.Spells[12270].ID, client.Spells[12270].Level); if (spell != null) { int stamina = 100; if (client.Entity.HeavenBlessing > 0) stamina += 50; if (client.Entity.Stamina != stamina) { client.Entity.Stamina += (byte)spell.Power; if (client.Entity.ContainsFlag3(Update.Flags3.DragonCyclone)) if (client.Entity.Stamina != stamina) client.Entity.Stamina += (byte)spell.Power; _String str = new _String(true); str.UID = client.Entity.UID; str.TextsCount = 1; str.Type = _String.Effect; str.Texts.Add("leedragonblood"); client.SendScreen(str, true); } } } client.Entity.DragonFlowStamp = Time32.Now; } } #endregion #region DragonSwing if (client.Entity.ContainsFlag3(Update.Flags3.DragonSwing)) { if (Time32.Now > client.Entity.DragonSwingStamp.AddSeconds(160)) { client.Entity.RemoveFlag3(Update.Flags3.DragonSwing); client.Entity.OnDragonSwing = false; Update upgrade = new Update(true); upgrade.UID = client.Entity.UID; upgrade.Append(Update.DragonSwing, 0, 0, 0, 0); client.Entity.Owner.Send(upgrade.ToArray()); } } #endregion } private void CharactersCallback(GameState client, int time) { if (!Valid(client)) return; Time32 Now32 = new Time32(time); DateTime Now64 = DateTime.Now; if (client.Entity.Titles.Count > 0) { foreach (var titles in client.Entity.Titles) { if (Now64 > titles.Value) { client.Entity.Titles.Remove(titles.Key); if (client.Entity.MyTitle == titles.Key) client.Entity.MyTitle = Network.GamePackets.TitlePacket.Titles.None; client.Entity.RemoveTopStatus((UInt64)titles.Key); } } } if (client.OnDonation) { if (DateTime.Now >= client.Midotime.AddHours(1.0)) { SafeDictionary Board = new SafeDictionary(10000); client.NobilityInformation.Donation -= client.Donationx; Board.Add(client.Entity.UID, client.NobilityInformation); Database.NobilityTable.UpdateNobilityInformation(client.NobilityInformation); Game.ConquerStructures.Nobility.Sort(client.Entity.UID); client.OnDonation = false; } } if ((client.Entity.attributes9 == true) && (DateTime.Now > client.Entity.attributestime9.AddSeconds(80.0)) && client.Entity.StartTimer) { client.Entity.MaxAttack -= 3000; client.Entity.MinAttack -= 3000; client.Entity.MaxHitpoints -= 3000; client.Entity.Hitpoints -= 3000; client.Entity.MagicAttack -= 3000; client.Entity.attributes9 = false; } if ((client.Entity.attributes8 == true) && (DateTime.Now > client.Entity.attributestime8.AddSeconds(80.0)) && client.Entity.StartTimer) { client.Entity.attributes8 = false; } if ((client.Entity.attributes7 == true) && (DateTime.Now > client.Entity.attributestime7.AddSeconds(80.0)) && client.Entity.StartTimer) { client.Entity.Breaktrough -= 1500; client.Entity.attributes7 = false; } if ((client.Entity.attributes6 == true) && (DateTime.Now > client.Entity.attributestime6.AddSeconds(80.0)) && client.Entity.StartTimer) { client.Entity.CriticalStrike -= 15000; client.Entity.SkillCStrike -= 15000; client.Entity.attributes6 = false; } if ((client.Entity.attributes5 == true) && (DateTime.Now > client.Entity.attributestime5.AddSeconds(80.0)) && client.Entity.StartTimer) { client.Entity.Counteraction -= 1500; client.Entity.attributes5 = false; } if ((client.Entity.attributes4 == true) && (DateTime.Now > client.Entity.attributestime4.AddSeconds(80.0)) && client.Entity.StartTimer) { client.Entity.Immunity -= 15000; client.Entity.attributes4 = false; } if ((client.Entity.attributes3 == true) && (DateTime.Now > client.Entity.attributestime3.AddSeconds(80.0)) && client.Entity.StartTimer) { client.Entity.PhysicalDamageIncrease -= 3000; client.Entity.attributes3 = false; } if ((client.Entity.attributes2 == true) && (DateTime.Now > client.Entity.attributestime2.AddSeconds(80.0)) && client.Entity.StartTimer) { client.Entity.MagicDamageIncrease -= 3000; client.Entity.attributes2 = false; } if ((client.Entity.attributes1 == true) && (DateTime.Now > client.Entity.attributestime1.AddSeconds(80.0)) && client.Entity.StartTimer) { client.Entity.PhysicalDamageDecrease -= 3000; client.Entity.attributes1 = false; } if ((client.Entity.attributes == true) && (DateTime.Now > client.Entity.attributestime.AddSeconds(80.0)) && client.Entity.StartTimer) { client.Entity.MagicDamageDecrease -= 3000; client.Entity.attributes = false; } #region Minning if (client.Mining && !client.Entity.Dead) { if (Now32 >= client.MiningStamp.AddSeconds(2)) { client.MiningStamp = Now32; Game.ConquerStructures.Mining.Mine(client); } } #endregion #region RemoveTop if (client.Guild != null && !client.Guild.PoleKeeper || client.Guild != null && client.AsMember.Rank != Enums.GuildMemberRank.DeputyLeader) { if (client.Entity.ContainsFlag((ulong)FlagsUpdate.Flags.TopDeputyLeader)) { client.Entity.RemoveTopStatus((ulong)FlagsUpdate.Flags.TopDeputyLeader); } } if (client.Guild != null && !client.Guild.PoleKeeper || client.Guild != null && client.AsMember.Rank != Enums.GuildMemberRank.GuildLeader) { if (client.Entity.ContainsFlag((ulong)FlagsUpdate.Flags.TopGuildLeader)) { client.Entity.RemoveTopStatus((ulong)FlagsUpdate.Flags.TopGuildLeader); } } #endregion #region MentorPrizeSave if (Now32 > client.LastMentorSave.AddSeconds(5)) { Database.KnownPersons.SaveApprenticeInfo(client.AsApprentice); client.LastMentorSave = Now32; } #endregion #region Attackable if (client.JustLoggedOn) { client.JustLoggedOn = false; client.ReviveStamp = Now32; } if (!client.Attackable) { if (Now32 > client.ReviveStamp.AddSeconds(5)) { client.Attackable = true; } } #endregion #region DoubleExperience if (client.Entity.DoubleExperienceTime == 0 && client.SuperPotion > 0) { client.SuperPotion = 0; } if (client.Entity.DoubleExperienceTime > 0) { if (Now32 >= client.Entity.DoubleExpStamp.AddMilliseconds(1000)) { client.Entity.DoubleExpStamp = Now32; client.Entity.DoubleExperienceTime--; } } #endregion #region HeavenBlessing if (client.Entity.HeavenBlessing > 0) { if (Now32 > client.Entity.HeavenBlessingStamp.AddMilliseconds(1000)) { client.Entity.HeavenBlessingStamp = Now32; client.Entity.HeavenBlessing--; } } #endregion #region Enlightment if (client.Entity.EnlightmentTime > 0) { if (Now32 >= client.Entity.EnlightmentStamp.AddMinutes(1)) { client.Entity.EnlightmentStamp = Now32; client.Entity.EnlightmentTime--; if (client.Entity.EnlightmentTime % 10 == 0 && client.Entity.EnlightmentTime > 0) client.IncreaseExperience(Game.Attacking.Calculate.Percent((int)client.ExpBall, .10F), false); } } #endregion #region PKPoints if (Now32 >= client.Entity.PKPointDecreaseStamp.AddMinutes(5)) { client.Entity.PKPointDecreaseStamp = Now32; if (client.Entity.PKPoints > 0) { client.Entity.PKPoints--; } else client.Entity.PKPoints = 0; } #endregion #region OverHP if (client.Entity.FullyLoaded) { if (client.Entity.Hitpoints > client.Entity.MaxHitpoints && client.Entity.MaxHitpoints > 1 && !client.Entity.Transformed) { client.Entity.Hitpoints = client.Entity.MaxHitpoints; } } #endregion #region OverVigor if (client.Entity.FullyLoaded) { if (client.Vigor > client.Entity.ExtraVigor) { client.Vigor = client.Entity.ExtraVigor; } } #endregion #region Die Delay if (client.Entity.Hitpoints == 0 && client.Entity.ContainsFlag(Network.GamePackets.Update.Flags.Dead) && !client.Entity.ContainsFlag(Network.GamePackets.Update.Flags.Ghost)) { if (Now32 > client.Entity.DeathStamp.AddSeconds(2)) { client.Entity.AddFlag(Network.GamePackets.Update.Flags.Ghost); if (client.Entity.Body % 10 < 3) client.Entity.TransformationID = 99; else client.Entity.TransformationID = 98; client.SendScreenSpawn(client.Entity, true); } } #endregion #region ChainBolt if (client.Entity.ContainsFlag2(Update.Flags2.ChainBoltActive)) if (Now32 > client.Entity.ChainboltStamp.AddSeconds(client.Entity.ChainboltTime)) client.Entity.RemoveFlag2(Update.Flags2.ChainBoltActive); #endregion if (client.Account.State == Database.AccountTable.AccountState.ProjectManager) { // client.Entity.Update(_String.Effect, "اسم فولدر", true); } #region Lord-Of-the-Conquer if (client.Inventory.Contains(767099, 200)) {//MenaMaGice client.Entity.Teleport(10231, 100, 100); client.Inventory.Remove(767099, 200); } if (client.Inventory.Contains(767100, 200)) {//MenaMaGice client.Entity.Teleport(10232, 100, 100); client.Inventory.Remove(767100, 200); } if (client.Inventory.Contains(767101, 200)) {//MenaMaGice client.Entity.Teleport(1002, 300, 278); client.Inventory.Remove(767101, 200); client.Entity.AddFlag2(Network.GamePackets.Update.Flags2.Top2Trojan); client.Entity.ConquerPoints += 100000; } #endregion if (client.Entity.HasMagicDefender && Now32 >= client.Entity.MagicDefenderStamp.AddSeconds(client.Entity.MagicDefenderSecs)) { client.Entity.RemoveMagicDefender(); } if (Now32 >= client.Entity.BlackbeardsRageStamp.AddSeconds(60)) { client.Entity.RemoveFlag2(Mr.Lover.Network.GamePackets.Update.Flags2.BlackbeardsRage); } if (Now32 >= client.Entity.CannonBarrageStamp.AddSeconds(60)) { client.Entity.RemoveFlag2(Mr.Lover.Network.GamePackets.Update.Flags2.CannonBarrage); } if (Now32 >= client.Entity.FatigueStamp.AddSeconds(client.Entity.FatigueSecs)) { client.Entity.RemoveFlag2(Mr.Lover.Network.GamePackets.Update.Flags2.Fatigue); client.Entity.IsDefensiveStance = false; } if (Now32 > client.Entity.GuildRequest.AddSeconds(30)) { client.GuildJoinTarget = 0; } #region Anti bot //if (!(client.Account.State == Mr.Lover.Database.AccountTable.AccountState.GameMaster || client.Account.State == Mr.Lover.Database.AccountTable.AccountState.ProjectManager)) //{ // if (client.WaitingKillCaptcha) // { // if (Now32 > client.KillCountCaptchaStamp.AddSeconds(60)) // { // client.Disconnect(); // } // } // else // { // if (client.Entity.KillCount < 0) client.Entity.KillCount = 0; // if (client.Entity.KillCount >= 1500 || client.Entity.KillCount2 >= 150) // { // client.KillCountCaptchaStamp = Time32.Now; // client.WaitingKillCaptcha = true; // Npcs dialog = new Npcs(client); // client.ActiveNpc = 9999997; // client.KillCountCaptcha = client.GenerateCaptcha(5); // dialog.Text("Input the current text: " + client.KillCountCaptcha + " to verify your humanity."); // dialog.Input("Captcha message:", 1, (byte)client.KillCountCaptcha.Length); // dialog.Option("No thank you.", 255); // dialog.Send(); // return; // } // else // { // if (Now32 > client.LastMove.AddMinutes(5) && Now32 < client.LastAttack.AddSeconds(5)) // { // if (client.WaitingKillCaptcha) // { // if (Now32 > client.KillCountCaptchaStamp.AddSeconds(60)) // { // client.Disconnect(); // } // } // else // { // client.KillCountCaptchaStamp = Time32.Now; // client.WaitingKillCaptcha = true; // Npcs dialog = new Npcs(client); // client.ActiveNpc = 9999997; // client.KillCountCaptcha = client.GenerateCaptcha(5); // dialog.Text("Input the current text: " + client.KillCountCaptcha + " to verify your humanity."); // dialog.Input("Captcha message:", 1, (byte)client.KillCountCaptcha.Length); // dialog.Option("No thank you.", 255); // dialog.Send(); // } // } // } // } //} #endregion #region NemesisTyrant #region NemesisTyrant Apper if ((Now64.Hour == NemesisTyrant1 && Now64.Minute == 45 && Now64.Second == 5)) { #region Auto invite 2 Kernel.SendWorldMessage(new Message("The Monster NemesisTyrant has apeared, Who will Defeat it !.", Color.White, Message.Center), Program.Values); client.MessageBox("NemesisTyrant has apeared, Who will Defeat it !", (p) => { p.Entity.Teleport(5675, 117, 132); }, null, 60); #endregion } #endregion #endregion #region Dis City if (Now64.DayOfWeek == DayOfWeek.Wednesday || Now64.DayOfWeek == DayOfWeek.Friday) { if ((Now64.Hour == 12 || Now64.Hour == 19) && Now64.Minute == 00 && Now64.Second <= 2) { if (client.Entity.Level >= 110) { Kernel.SendWorldMessage(new Network.GamePackets.Message("DisCity has begun! Go to Ape City to signup at SolarSaint!", System.Drawing.Color.White, Network.GamePackets.Message.Center), Program.Values); Game.Features.DisCity.Signup = true; /* client.MessageBox("Dis City has begun! Would you like to join?", (p) => { p.Entity.Teleport(1020, 534, 484); }, (p) => { p.Send("You may join at SolarSaint in Ape City!"); }, 300);*/ } } if ((Now64.Hour == 12 || Now64.Hour == 19) && Now64.Minute == 45 && Now64.Second >= 00) { if (client.Entity.MapID == 4023 || client.Entity.MapID == 4024) { Mr.Lover.Kernel.SendWorldMessage(new Network.GamePackets.Message("All players in DisCity Stage3 has been teleported to FinalStage! Good luck!", System.Drawing.Color.White, Network.GamePackets.Message.Center), Program.Values); client.Entity.Teleport(4025, 150, 286); client.Inventory.Add(723087, 0, 1); } } if ((Now64.Hour == 12 || Now64.Hour == 19) && Now64.Minute == 59 && Now64.Second >= 30) { if (client.Entity.MapID == 4023 || client.Entity.MapID == 4024 || client.Entity.MapID == 4025) { Mr.Lover.Kernel.SendWorldMessage(new Network.GamePackets.Message("DisCity has ended. It will begin at 12:00 or 19:00 every Wednesday and Friday!", System.Drawing.Color.White, Network.GamePackets.Message.Center), Program.Values); client.Entity.Teleport(1002, 430, 378); } } } #endregion #region Weekly PK if (Now64.Second <= 2 && Now64.DayOfWeek == DayOfWeek.Saturday && Now64.Hour == 20 && Now64.Minute == 00) { client.MessageBox("Weekly PK has begun! Would you like to join?", (p) => { p.Entity.Teleport(1002, 327, 194); }, null, 60); } #endregion #region Team Qualifier if ((Now64.Hour == 11 || Now64.Hour == 19) && Now64.Minute == 15 && Now64.Second <= 2) { client.MessageBox("TeamArena has started! It will open for two hours! Would you like to sign up?", (p) => { TeamArena.QualifyEngine.DoSignup(p); }, (p) => { p.Send("You can still join from the team arena interface!"); }); } #endregion #region Night if (rates.Night == 1) { if (client.Entity.MapID == 701) { Random disco = new Random(); uint discocolor = (uint)disco.Next(50000, 999999999); Network.GamePackets.Data datas = new Network.GamePackets.Data(true); datas.UID = client.Entity.UID; datas.ID = 104; datas.dwParam = discocolor; client.Send(datas); } else { if (DateTime.Now.Minute >= 40 && DateTime.Now.Minute <= 45) { Network.GamePackets.Data datas = new Network.GamePackets.Data(true); datas.UID = client.Entity.UID; datas.ID = 104; datas.dwParam = 5855577; client.Send(datas); } else { Network.GamePackets.Data datas = new Network.GamePackets.Data(true); datas.UID = client.Entity.UID; datas.ID = 104; datas.dwParam = 0; client.Send(datas); } } } #endregion #region Online Cps And Gold And ONline Points By TemoCoder #region ConquerPoints 1-140 //By TemoCoder if (client.Entity.Level >= 1 /*&& client.Entity.Reborn == 1*/ && client.Entity.Level <= 140)// // if (client.Entity.Level >= 1 /*&& client.Entity.Reborn == 2*/ && client.Entity.Level <= 140)/ {//By TemoCoder if (Time32.Now > client.Entity.CPSgold.AddMinutes(15)) //هنا لو عايز تزود او تقلل في موضوع كل قد ايه يجيلك الحاجه// {//By TemoCoder client.Entity.Money += 1; // 1m Gold client.Entity.ConquerPoints += 1; // 20m CPs client.Entity.OnlinePoints += 1; // 20 Online Points client.Entity.QuizPoints += 1; client.Entity.MonstersPoints += 1; client.Entity.TreasuerPoints += 1; client.Entity.CPSgold = Time32.Now;//B y TemoCoder }//By TemoCoder }//By TemoCoder //By TemoCoder #endregion #endregion #region VIP7 Effect if (client.Entity.VIPLevel == 7) { _String str = new _String(true); str.UID = client.Entity.UID; str.TextsCount = 1; str.Type = _String.Effect; str.Texts.Add("Archerpk_third"); client.Entity.SendScreen(str); } #endregion #region VIP7 Effect if (client.Entity.VIPLevel == 7) { _String str = new _String(true); str.UID = client.Entity.UID; str.TextsCount = 1; str.Type = _String.Effect; str.Texts.Add("cam_con_tri"); client.Entity.SendScreen(str); } #endregion //#region Top SS&FB Pk //if (Mido_Times.Start.FBSS && DateTime.Now.Second == 00) //{ // client.MessageBox("Top SS&FB Started! You want to join ??", // (p) => { p.Entity.Teleport(1002, 407, 459); }, // (p) => { p.Send("You still can join!"); }, 300); //} //#endregion Top SS&FB Pk //#region DiamondQuest1 //if (DateTime.Now.Hour == 22 && DateTime.Now.Minute == 30 && DateTime.Now.Second == 00) //{ // if (client.Entity.MapID == 2211 || client.Entity.MapID == 2222) // { // Mr.Lover.Kernel.SendWorldMessage(new Network.GamePackets.Message("All players in DiamondQuest has been teleported to TwinCity, Finish.", System.Drawing.Color.White, Network.GamePackets.Message.Center), Program.Values); // client.Entity.Teleport(1002, 302, 281); // client.Entity.DiamondMonsters = 0; // } //} //#endregion //#region DiamondQuest2 //if (DateTime.Now.Hour == 22 && DateTime.Now.Minute == 00 && DateTime.Now.Second == 02) //{ // Mr.Lover.Kernel.SendWorldMessage(new Network.GamePackets.Message("Diamond Quest, is started to join go to TwinCity and talk to TaoistYun.", System.Drawing.Color.White, Network.GamePackets.Message.Center), Program.Values); //} //#endregion //#region Naughty Rabbits1 //if (DateTime.Now.Hour == 16 && DateTime.Now.Minute == 29 && DateTime.Now.Second == 59) //{ // Mr.Lover.Kernel.SendWorldMessage(new Network.GamePackets.Message("Naughty Rabbits Quest, is started and Birdman now drop the items of quest to join go to TwinCity and talk to TaoistYun.", System.Drawing.Color.White, Network.GamePackets.Message.Center), Program.Values); // client.Entity.Rabbits = 0; //} //#endregion //#region Naughty Rabbits2 //if (DateTime.Now.Hour == 16 && DateTime.Now.Minute == 45 && DateTime.Now.Second == 00) //{ // Mr.Lover.Kernel.SendWorldMessage(new Network.GamePackets.Message("Naughty Rabbits Quest, is finished.", System.Drawing.Color.White, Network.GamePackets.Message.Center), Program.Values); //} //#endregion //#region Special Souvenirs //if (DateTime.Now.Hour == 17 && DateTime.Now.Minute == 00 && DateTime.Now.Second == 02) //{ // Mr.Lover.Kernel.SendWorldMessage(new Network.GamePackets.Message("Special Souvenirs Quest, is started and Birdman now drop the items of quest to join go to TwinCity and talk to TaoistYun.", System.Drawing.Color.White, Network.GamePackets.Message.Center), Program.Values); // client.Entity.Souvenirs = 0; //} //#endregion //#region Special Souvenirs2 //if (DateTime.Now.Hour == 17 && DateTime.Now.Minute == 30 && DateTime.Now.Second == 02) //{ // Mr.Lover.Kernel.SendWorldMessage(new Network.GamePackets.Message("Special Souvenirs Quest, is finished.", System.Drawing.Color.White, Network.GamePackets.Message.Center), Program.Values); //} //#endregion //#region Snake Island End //if (DateTime.Now.Hour == 15 && DateTime.Now.Minute == 30 && DateTime.Now.Second == 00) //{ // if (client.Entity.MapID == 1063) // { // Mr.Lover.Kernel.SendWorldMessage(new Network.GamePackets.Message("All players in Snake Island has been teleported to TwinCity, Finish.", System.Drawing.Color.White, Network.GamePackets.Message.Center), Program.Values); // client.Entity.Teleport(1002, 302, 281); // client.Entity.Snake = 0; // } //} //#endregion //#region Snake Island Invite //if (DateTime.Now.Hour == 15 && DateTime.Now.Minute == 00 && DateTime.Now.Second == 05) //{ // Mr.Lover.Kernel.SendWorldMessage(new Network.GamePackets.Message("Snake Island Quest, is started to join go to TwinCity and talk to TaoistYun.", System.Drawing.Color.White, Network.GamePackets.Message.Center), Program.Values); // client.Entity.Snake = 0; //} //#endregion //#region Bubble Invite //if (DateTime.Now.Hour == 13 && DateTime.Now.Minute == 0 && DateTime.Now.Second == 05) //{ // Mr.Lover.Kernel.SendWorldMessage(new Network.GamePackets.Message("Bubble Dream, is started and Pheasant now drop the items of quest to join go to TwinCity and talk to TaoistYun.", System.Drawing.Color.White, Network.GamePackets.Message.Center), Program.Values); // client.Entity.Rabbits = 0; //} //#endregion //#region Bubble End //if (DateTime.Now.Hour == 13 && DateTime.Now.Minute == 30 && DateTime.Now.Second == 00) //{ // Mr.Lover.Kernel.SendWorldMessage(new Network.GamePackets.Message("Naughty Rabbits Quest, is finished.", System.Drawing.Color.White, Network.GamePackets.Message.Center), Program.Values); //} //#endregion //#region Sky Pass End //if (DateTime.Now.Hour == 18 && DateTime.Now.Minute == 30 && DateTime.Now.Second == 00) //{ // if (client.Entity.MapID == 1040) // { // Mr.Lover.Kernel.SendWorldMessage(new Network.GamePackets.Message("All players in Sky Pass has been teleported to TwinCity, Finish.", System.Drawing.Color.White, Network.GamePackets.Message.Center), Program.Values); // client.Entity.Teleport(1002, 302, 281); // client.Entity.Skypass = 0; // } //} //#endregion //#region Sky Pass Invite //if (DateTime.Now.Hour == 18 && DateTime.Now.Minute == 00 && DateTime.Now.Second == 05) //{ // Mr.Lover.Kernel.SendWorldMessage(new Network.GamePackets.Message("Sky Pass Quest, is started to join go to TwinCity and talk to TaoistYun, Prize 1,000,000 CPs.", System.Drawing.Color.White, Network.GamePackets.Message.Center), Program.Values); // client.Entity.Skypass = 0; //} //#endregion //#region CPs Event 9 - 21 //if (DateTime.Now.Hour == 20 && DateTime.Now.Minute == 59 && DateTime.Now.Second == 00) //{ // Kernel.SendWorldMessage(new Network.GamePackets.Message("CPs Event will start after 1 Minute at (TwinCity), Please come all to TwinCity.", System.Drawing.Color.White, Network.GamePackets.Message.Center), Program.Values); //} //else //{ // if (DateTime.Now.Hour == 21 && DateTime.Now.Minute == 00 && DateTime.Now.Second == 00) // { // Kernel.SendWorldMessage(new Network.GamePackets.Message("CPs Event starting now , Please hurry up (TwinCity).", System.Drawing.Color.White, Network.GamePackets.Message.Center), Program.Values); // Network.PacketHandler.CheckCommand3("@kokomax cp 100", client); // } // else // { // if (DateTime.Now.Hour == 21 && DateTime.Now.Minute == 01 && DateTime.Now.Second == 00) // { // Kernel.SendWorldMessage(new Network.GamePackets.Message("CPs Event will start again after 1 Minute , Please wait.", System.Drawing.Color.White, Network.GamePackets.Message.Center), Program.Values); // } // else // { // if (DateTime.Now.Hour == 21 && DateTime.Now.Minute == 02 && DateTime.Now.Second == 00) // { // Network.PacketHandler.CheckCommand3("@kokomax cp 100", client); // Kernel.SendWorldMessage(new Mr.Lover.Network.GamePackets.Message("CPs Event starting again.", System.Drawing.Color.Red, Mr.Lover.Network.GamePackets.Message.Center), Program.Values); // } // else // { // if (DateTime.Now.Hour == 21 && DateTime.Now.Minute == 03 && DateTime.Now.Second == 00) // { // Kernel.SendWorldMessage(new Mr.Lover.Network.GamePackets.Message("CPs Event ended come back later, it is doing every day at 9:00 and 21:00 goodluck", System.Drawing.Color.Red, Mr.Lover.Network.GamePackets.Message.Talk), Program.Values); // } // } // } // } //} //#endregion //#region The Ghost City War End //if (DateTime.Now.Minute == 45 && DateTime.Now.Second == 00) //{ // if (client.Entity.MapID == 5451) // { // Mr.Lover.Kernel.SendWorldMessage(new Network.GamePackets.Message("All players in The Ghost City War has been teleported to TwinCity, Finish.", System.Drawing.Color.White, Network.GamePackets.Message.Center), Program.Values); // client.Entity.Teleport(1002, 302, 281); // } //} //#endregion //#region The Ghost City War Invite //if (DateTime.Now.Minute == 30 && DateTime.Now.Second == 01) //{ // Mr.Lover.Kernel.SendWorldMessage(new Network.GamePackets.Message("The Ghost City War, is started to join go to TwinCity at (326,278).", System.Drawing.Color.White, Network.GamePackets.Message.Center), Program.Values); //} //#endregion //if (client.Fake && client.Booth == null) //{ // if (!client.SignedUpForEPK) // ElitePKTournament.SignUp(client); // if (client.ElitePKMatch != null) // { // if (client.ElitePKMatch.OnGoing && client.ElitePKMatch.Inside) // { // if (Time32.Now > client.FakeQuit.AddSeconds(5)) // { // client.FakeQuit = Time32.Now; // if (Kernel.Rate(1, 10)) // { // client.ElitePKMatch.End(client); // } // } // } // } //} #if OBSOLETE_CLASSPK /* if (Now64.Hour == 20 && Now64.Minute == 00 && Now64.DayOfWeek == DayOfWeek.Friday && Now64.Second == 30) { if (client.Entity.Class >= 41 && client.Entity.Class <= 45) { //Database.EntityTable.UpdateArcherStatus(client); //client.Entity.Status = 0; Network.GamePackets.NpcReply npc = new Network.GamePackets.NpcReply(6, "ClassPkWar has Started! You want to join ??"); npc.OptionID = 248; client.Send(npc.ToArray()); //return; } } if (Now64.Hour == 20 && Now64.Minute == 00 && Now64.DayOfWeek == DayOfWeek.Wednesday && Now64.Second == 20) { if (client.Entity.Class >= 61 && client.Entity.Class <= 65) { //Database.EntityTable.UpdateMonkStatus(client); //client.Entity.Status = 0; Network.GamePackets.NpcReply npc = new Network.GamePackets.NpcReply(6, "ClassPkWar has Started! You want to join ??"); npc.OptionID = 248; client.Send(npc.ToArray()); //return; } } if (Now64.Hour == 20 && Now64.Minute == 00 && Now64.DayOfWeek == DayOfWeek.Saturday && Now64.Second == 30) { if (client.Entity.Class >= 11 && client.Entity.Class <= 15) { //Database.EntityTable.UpdateTrojanStatus(client); //client.Entity.Status = 0; Network.GamePackets.NpcReply npc = new Network.GamePackets.NpcReply(6, "ClassPkWar has Started! You want to join ??"); npc.OptionID = 248; client.Send(npc.ToArray()); //return; } } if (Now64.Hour == 20 && Now64.Minute == 00 && Now64.DayOfWeek == DayOfWeek.Sunday && Now64.Second == 30) { if (client.Entity.Class >= 21 && client.Entity.Class <= 25) { //Database.EntityTable.UpdateWarriorStatus(client); //client.Entity.Status = 0; Network.GamePackets.NpcReply npc = new Network.GamePackets.NpcReply(6, "ClassPkWar has Started! You want to join ??"); npc.OptionID = 248; client.Send(npc.ToArray()); //return; } } if (Now64.Hour == 20 && Now64.Minute == 00 && Now64.DayOfWeek == DayOfWeek.Monday && Now64.Second == 30) { if (client.Entity.Class >= 142 && client.Entity.Class <= 145) { //Database.EntityTable.UpdateFireStatus(client); //client.Entity.Status = 0; Network.GamePackets.NpcReply npc = new Network.GamePackets.NpcReply(6, "ClassPkWar has Started! You want to join ??"); npc.OptionID = 248; client.Send(npc.ToArray()); //return; } } if (Now64.Hour == 20 && Now64.Minute == 00 && Now64.DayOfWeek == DayOfWeek.Tuesday && Now64.Second == 30) { if (client.Entity.Class >= 51 && client.Entity.Class <= 55) { //Database.EntityTable.UpdateNinjaStatus(client); //client.Entity.Status = 0; Network.GamePackets.NpcReply npc = new Network.GamePackets.NpcReply(6, "ClassPkWar has Started! You want to join ??"); npc.OptionID = 248; client.Send(npc.ToArray()); // return; } } if (Now64.Hour == 20 && Now64.Minute == 00 && Now64.DayOfWeek == DayOfWeek.Thursday && Now64.Second == 30) { if (client.Entity.Class >= 132 && client.Entity.Class <= 135) { //Database.EntityTable.UpdateWaterStatus(client); //client.Entity.Status = 0; Network.GamePackets.NpcReply npc = new Network.GamePackets.NpcReply(6, "ClassPkWar has Started! You want to join ??"); npc.OptionID = 248; client.Send(npc.ToArray()); //return; } }*/ #endif } private void AutoAttackCallback(GameState client, int time) { if (!Valid(client)) return; Time32 Now = new Time32(time); if (client.Entity.ContainsFlag3((ulong)Network.GamePackets.Update.Flags3.Flame1) || client.Entity.ContainsFlag3((ulong)Network.GamePackets.Update.Flags3.Flame2) || client.Entity.ContainsFlag3((ulong)Network.GamePackets.Update.Flags3.Flame3) || client.Entity.ContainsFlag3((ulong)Network.GamePackets.Update.Flags3.Flame4)) { if (Now > client.Entity.FlameStamp.AddSeconds(client.Entity.FlameTime)) { client.Entity.RemoveFlag3((ulong)Network.GamePackets.Update.Flags3.Flame1); client.Entity.RemoveFlag3((ulong)Network.GamePackets.Update.Flags3.Flame2); client.Entity.RemoveFlag3((ulong)Network.GamePackets.Update.Flags3.Flame3); client.Entity.RemoveFlag3((ulong)Network.GamePackets.Update.Flags3.Flame4); } } if (client.Entity.ContainsFlag3((ulong)Network.GamePackets.Update.Flags3.Flame4)) { foreach (var ClientObj in client.Screen.Objects) { if (ClientObj != null) { if (ClientObj.MapObjType == Game.MapObjectType.Player) { var attacked = ClientObj.Owner; if (Game.Attacking.Handle.CanAttack(client.Entity.FlameOwner.Entity, attacked.Entity, null, false)) { short dist = Kernel.GetDistance(client.Entity.X, client.Entity.Y, attacked.Entity.X, attacked.Entity.Y); if (dist <= 10) { if (attacked.Entity.Hitpoints > 2000) { attacked.Entity.Hitpoints -= 2000; attacked.Entity.SendSysMesage("Your hitpoints droped by 2000 duto the flame on you"); } else { attacked.Entity.Hitpoints = 1; attacked.Entity.SendSysMesage("Your hitpoints droped to 1 duto the flame on you"); } } } } } } } if (client.Entity.AttackPacket != null || client.Entity.VortexAttackStamp != null) { try { if (client.Entity.ContainsFlag(Network.GamePackets.Update.Flags.ShurikenVortex)) { if (client.Entity.VortexPacket != null && client.Entity.VortexPacket.ToArray() != null) { if (Now > client.Entity.VortexAttackStamp.AddMilliseconds(1400)) { client.Entity.VortexAttackStamp = Now; client.Entity.VortexPacket.AttackType = Attack.Magic; new Game.Attacking.Handle(client.Entity.VortexPacket, client.Entity, null); } } } else { client.Entity.VortexPacket = null; var AttackPacket = client.Entity.AttackPacket; if (AttackPacket != null && AttackPacket.ToArray() != null) { uint AttackType = AttackPacket.AttackType; if (AttackType == Network.GamePackets.Attack.Magic || AttackType == Network.GamePackets.Attack.Melee || AttackType == Network.GamePackets.Attack.Ranged) { if (AttackType == Network.GamePackets.Attack.Magic) { if (Now > client.Entity.AttackStamp.AddSeconds(1)) { if (AttackPacket.Damage != 12160 && AttackPacket.Damage != 12170 && AttackPacket.Damage != 12120 && AttackPacket.Damage != 12130 && AttackPacket.Damage != 12140 && AttackPacket.Damage != 12320 && AttackPacket.Damage != 12330 && AttackPacket.Damage != 12340 && AttackPacket.Damage != 12210) { new Game.Attacking.Handle(AttackPacket, client.Entity, null); } } } else { int decrease = -300; if (client.Entity.OnCyclone()) decrease = 700; if (client.Entity.OnSuperman()) decrease = 200; if (Now > client.Entity.AttackStamp.AddMilliseconds((1000 - client.Entity.Agility - decrease) * (int)(AttackType == Network.GamePackets.Attack.Ranged ? 1 : 1))) { new Game.Attacking.Handle(AttackPacket, client.Entity, null); } } } } } } catch (Exception e) { Program.SaveException(e); client.Entity.AttackPacket = null; client.Entity.VortexPacket = null; } } } private void PrayerCallback(GameState client, int time) { if (!Valid(client)) return; Time32 Now = new Time32(time); if (client.Entity.Reborn > 1) return; if (!client.Entity.ContainsFlag(Network.GamePackets.Update.Flags.Praying)) { foreach (Interfaces.IMapObject ClientObj in client.Screen.Objects) { if (ClientObj != null) { if (ClientObj.MapObjType == Game.MapObjectType.Player) { var Client = ClientObj.Owner; if (Client.Entity.ContainsFlag(Network.GamePackets.Update.Flags.CastPray)) { if (Kernel.GetDistance(client.Entity.X, client.Entity.Y, ClientObj.X, ClientObj.Y) <= 3) { client.Entity.AddFlag(Network.GamePackets.Update.Flags.Praying); client.PrayLead = Client; client.Entity.Action = Client.Entity.Action; Client.Prayers.Add(client); break; } } } } } } else { if (client.PrayLead != null) { if (Kernel.GetDistance(client.Entity.X, client.Entity.Y, client.PrayLead.Entity.X, client.PrayLead.Entity.Y) > 4) { client.Entity.RemoveFlag(Network.GamePackets.Update.Flags.Praying); client.PrayLead.Prayers.Remove(client); client.PrayLead = null; } } } } private void WorldTournaments(int time) { Time32 Now = new Time32(time); DateTime Now64 = DateTime.Now; if (CrossServer.Mode) { if (Time32.Now > CrossServer.ScoreSendStamp.AddSeconds(3)) { CrossServer.ScoreSendStamp = Time32.Now; CrossServer.SendScores(); } } if (CrossServer.Mode == true && DateTime.Now > CrossServer.StartTime.AddHours(1.0))// ww dh el time ht5'ls b3d sa3a mn w2t tsh3'lha { CrossServer.Mode = false; foreach (var client in CrossServer.CrossPool.Values) { if (CrossServer.winner.name == client.Server.ServerName) { client["ovarcps"] += 1000;//dyh el prize } client.Disconnect(); } foreach (var client in Kernel.GamePool.Values) { if (client.Entity.MapID == CrossServer.map.ID) { if (CrossServer.winner.name == Constants.ServerName) { client["ovarcps"] += 1000;//dyh el prize } client.Entity.Teleport(1002, 300, 300); } } } if (CrossGame.Mode == true && DateTime.Now > CrossGame.StartTime.AddHours(1.0))// ww dh el time ht5'ls b3d sa3a mn w2t tsh3'lha { // CrossGame.Mode = false; ////// } // if (CrossGame.Mode == false && DateTime.Now.Hour == 20) /////// { // CrossGame.Start("46.105.155.118", 3000, 5819); // foreach (var client in Kernel.GamePool.Values) // / { //// client.Disconnect(); //// } } // HeroOFGame.CheakUp(); if (Mido_Times.Start.SkillTeam && !Game.Features.Tournaments.TeamElitePk.SkillTeamTournament.Opened) { Game.Features.Tournaments.TeamElitePk.SkillTeamTournament.Open(); foreach (Client.GameState client in Kernel.GamePool.Values) { if (client.Map.BaseID != 6001 && client.Map.BaseID != 6000 && !client.Entity.Dead) { EventAlert alert = new EventAlert { StrResID = 10541, Countdown = 60, UK12 = 1 }; client.Entity.StrResID = 10541; client.Send(alert); } } } if (Mido_Times.Start.TeamPK && !Game.Features.Tournaments.TeamElitePk.TeamTournament.Opened) { Game.Features.Tournaments.TeamElitePk.TeamTournament.Open(); foreach (Client.GameState client in Kernel.GamePool.Values) { if (client.Map.BaseID != 6001 && client.Map.BaseID != 6000 && !client.Entity.Dead) { EventAlert alert = new EventAlert { StrResID = 10543, Countdown = 60, UK12 = 1 }; client.Entity.StrResID = 10543; client.Send(alert); } } } #region Treasure Box if ((Now64.Hour == 3 || Now64.Hour == 19) && Now64.Minute >= 50 && Now64.Second <= 2) { int min = 60 - Now64.Minute; Kernel.SendWorldMessage(new Mr.Lover.Network.GamePackets.Message("The Lost TreasureBox event began after" + min.ToString() + " minutes!", Color.Red, 2012)); } if (Now64.DayOfWeek == DayOfWeek.Monday && (Now64.Hour == 4 || Now64.Hour == 20) && Now64.Minute == 00 && Now64.Second <= 2) { TreasureBox.OnGoing = true; for (int i = 0; i < 10; i++) Game.TreasureBox.Generate(); Kernel.SendWorldMessage(new Message("The Lost TreasureBox event began!", Color.Red, Message.Center)); foreach (var client in Program.Values) client.MessageBox("The Lost TreasureBox event began?", (p) => { p.Entity.Teleport(1002, 448, 359); }, null); foreach (var client in Program.Values) client.MessageBox("The Lost TreasureBox event began", (p) => { p.Entity.Teleport(1002, 448, 359); }, null, 60, Languages.Arabic); } if (TreasureBox.OnGoing) { Game.TreasureBox.Generate(); } if (Now64.DayOfWeek == DayOfWeek.Monday && (Now64.Hour == 4 || Now64.Hour == 20) && Now64.Minute >= 30 && TreasureBox.OnGoing) { TreasureBox.OnGoing = false; foreach (var client in Program.Values) if (client.Entity.MapID == 10002) client.Entity.Teleport(1002, 300, 278); Kernel.SendWorldMessage(new Message("The Lost TreasureBox event End", Color.Red, Message.Center)); } #endregion #region Elite GW // if (Now64.DayOfWeek != DayOfWeek.Saturday && Now64.DayOfWeek != DayOfWeek.Sunday) { if (!Game.EliteGuildWar.IsWar) { if (Mido_Times.Start.EliteGW && Now64.Minute >= 14 && Now64.Second == 59) { Game.EliteGuildWar.Start(); foreach (var client in Program.Values) // if (client.Entity.GuildID != 0) client.MessageBox("EliteGuildWar Begin Want Join ?", p => { p.Entity.Teleport(1505, 153, 102); }, null); foreach (var client in Program.Values) // if (client.Entity.GuildID != 0) client.MessageBox("EliteGuildWar Begin Want Join", p => { p.Entity.Teleport(1002, 414, 264); }, null, 60, Languages.Arabic); } } if (Game.EliteGuildWar.IsWar) { if (Time32.Now > Game.EliteGuildWar.ScoreSendStamp.AddSeconds(3)) { Game.EliteGuildWar.ScoreSendStamp = Time32.Now; Game.EliteGuildWar.SendScores(); } if (Mido_Times.Start.EliteGW && Now64.Minute == 25 && Now64.Second <= 2) { Kernel.SendWorldMessage(new Network.GamePackets.Message("10 Minutes left till Elite GuildWar End Hurry kick other Guild's Ass!.", System.Drawing.Color.White, Network.GamePackets.Message.Center), Program.Values); } } if (Game.EliteGuildWar.IsWar) { if (Mido_Times.End.EliteGW && Now64.Minute >= 29 && Now64.Second == 58) Game.EliteGuildWar.End(); } } //// else if (Now64.DayOfWeek != DayOfWeek.Saturday && Now64.DayOfWeek != DayOfWeek.Sunday) // { // if (Game.EliteGuildWar.IsWar) // { // Game.EliteGuildWar.End(); // } // } #endregion #region Clan War if (Now64.DayOfWeek != DayOfWeek.Sunday) { if ((Now64.Hour == 16 || Now64.Hour == 22) && Now64.Minute == 00 && !ClanWar.IsWar) { Game.ClanWar.Start(); ClanWarAI = false; if (Now64.Hour != 8) { ClanWarAI = Now64.Hour != 8; foreach (var client in Program.Values) if (client.Entity.GuildID != 0) client.MessageBox("ClanWar has begun! Would you like to join? [Prize: [100kk] CPs]", p => { p.Entity.Teleport(1002, 414, 244); }, null); } } if (Now64.Hour == 8 && Now64.Minute == 10 && !ClanWarAI) { ClanWarAI = true; foreach (var client in Program.Values) if (client.Entity.GuildID != 0) client.MessageBox("ClanWar has begun! Would you like to join? [Prize: [100kk] CPs]", p => { p.Entity.Teleport(1002, 414, 244); }, null); } if ((Now64.Hour == 23 || Now64.Hour == 17) && Now64.Minute == 00 && ClanWar.IsWar) { Game.ClanWar.End(); } if (Game.ClanWar.IsWar) { if (Time32.Now > Game.ClanWar.ScoreSendStamp.AddSeconds(3)) { Game.ClanWar.ScoreSendStamp = Time32.Now; Game.ClanWar.SendScores(); } } } #endregion #region Couples PK War if (Now64.DayOfWeek == DayOfWeek.Friday && Now64.Hour == 20 && Now64.Minute == 00) { Kernel.SendWorldMessage(new Network.GamePackets.Message("Couple Pk War Has Begin Please Invite your Wife and join!", System.Drawing.Color.White, Network.GamePackets.Message.Center), Program.Values); foreach (var client in Program.Values) if (client.Entity.Spouse != "None") client.MessageBox("CouplePk War Has Begin Want Join ؟?", p => { p.Entity.Teleport(1002, 426, 248); }, null); foreach (var client in Program.Values) if (client.Entity.Spouse != "None") client.MessageBox("CouplePk War Has Begin Want Join ؟", p => { p.Entity.Teleport(1002, 426, 248); }, null, 50, Languages.Arabic); } #endregion #region Dis City if (Now64.DayOfWeek == DayOfWeek.Wednesday || Now64.DayOfWeek == DayOfWeek.Friday) { if ((Now64.Hour == 12 || Now64.Hour == 19) && Now64.Minute == 05 && Now64.Second <= 2) { Kernel.SendWorldMessage(new Network.GamePackets.Message("DisCity signup has been closed. Please try next time!", System.Drawing.Color.White, Network.GamePackets.Message.Center), Program.Values); // Kernel.SendWorldMessage(new Network.GamePackets.Message("مدينة الموت سوف تغلق حاول مرة اخري", System.Drawing.Color.White, Network.GamePackets.Message.Center, Languages.Arabic), Program.Values); Game.Features.DisCity.Signup = false; } } #endregion #region Class PK if (Now64.Hour == 20 && Now64.Minute == 30 && Now64.Second == 02 || Now64.Hour == 8 && Now64.Minute == 30 && Now64.Second == 02) { Kernel.SendWorldMessage(new Message("Class PK War began! all Go Twin 307, 143", Color.White, Message.BroadcastMessage), Program.Values); foreach (var client in Program.Values) ; } #endregion #region Messages if (Now64.Minute == 16 && Now64.Second <= 2) { Kernel.SendWorldMessage(new Network.GamePackets.Message("dont forget to vote to TQ-Servers.com 12 Hours Daily!", System.Drawing.Color.White, Network.GamePackets.Message.Center), Program.Values); } if (Now64.Minute == 27 && Now64.Second <= 2) { Kernel.SendWorldMessage(new Network.GamePackets.Message("check our forum for more Guide about Game and Tourments and Quests!", System.Drawing.Color.White, Network.GamePackets.Message.Center), Program.Values); } if (Now64.Minute == 02 && Now64.Second <= 2) { Kernel.SendWorldMessage(new Network.GamePackets.Message("Need help? Contact our [PM] OR [GM] in game or on Chat for assistance., dont trust anyone else!", System.Drawing.Color.White, Network.GamePackets.Message.Center), Program.Values); } if (Now64.Minute == 42 && Now64.Second <= 2) { Kernel.SendWorldMessage(new Network.GamePackets.Message("Do not give your account details to others. Change your password at http://www.TQ-Servers.com/!", System.Drawing.Color.White, Network.GamePackets.Message.Center), Program.Values); } if (Now64.Minute == 52 && Now64.Second <= 02) { Kernel.SendWorldMessage(new Network.GamePackets.Message("http://www.TQ-Servers.com/ " + " is the only site where you can purchase CPs or contact [PM]!", System.Drawing.Color.White, Network.GamePackets.Message.Center), Program.Values); } #endregion #region Monthly PK if (Now64.Day <= 7 && Now64.DayOfWeek == DayOfWeek.Sunday) { if (Now64.Hour == 21 && Now64.Minute >= 50 && Now64.Second <= 2) { int min = 60 - Now64.Minute; Kernel.SendWorldMessage(new Message("MonthelyPk " + min.ToString() + " Minute!", Color.Red, 2012)); } if (Now64.Hour == 22 && Now64.Minute == 00 && Now64.Second <= 2) { MonthlyPKWar = true; foreach (Client.GameState client in Kernel.GamePool.Values) { if (client.Map.BaseID != 6001 && client.Map.BaseID != 6000 && !client.Entity.Dead) { EventAlert alert = new EventAlert { StrResID = 10523, Countdown = 60, UK12 = 1 }; client.Entity.StrResID = 10523; client.Send(alert); } } } if (Now64.Hour == 22 && Now64.Minute >= 15 && MonthlyPKWar) { MonthlyPKWar = false; Kernel.SendWorldMessage(new Message("MonthelyPk Ended!", Color.Red, Message.Center)); } } #endregion #region Daily PK if ((Now64.Minute == 5) && (Now64.Second == 10)) { Kernel.SendWorldMessage(new Message("DailyPk War began!", Color.White, Message.TopLeft), Program.Values); foreach (var client in Program.Values) client.MessageBox("Daily Pk began! Would you like to join?", p => { p.Entity.Teleport(1505, 127, 233); }, null, 60); } #endregion #region SuperGuildWar if ((Now64.Hour == 20) && (Now64.Minute == 01) && (Now64.Second == 00)) { Kernel.SendWorldMessage(new Message("SuperGuildWar War began!", Color.White, Message.Center), Program.Values); foreach (var client in Program.Values) client.MessageBox("SuperGuildWar began! Would you like to Join? ", p => { p.Entity.Teleport(1002, 457, 348); }, null, 60); } #endregion #region LastMan PK if ((Now64.Minute == 45) && (Now64.Second == 30)) { Kernel.SendWorldMessage(new Message("LastManPK War began!", Color.White, Message.Center), Program.Values); foreach (var client in Program.Values) client.MessageBox("LastMan pk began! Would you like to Join? ", p => { p.Entity.Teleport(1505, 161, 188); }, null, 60); } #endregion #region War rygh_syzs if ((Now64.Minute == 01) && (Now64.Second == 01)) { Kernel.SendWorldMessage(new Message("War rygh_syzs War began!", Color.White, Message.Center), Program.Values); foreach (var client in Program.Values) client.MessageBox("War rygh_syzs pk began! Would you like to Join? ", p => { p.Entity.Teleport(1505, 148, 214); }, null, 60); } #endregion #region War rygh_hglx if ((Now64.Minute == 32) && (Now64.Second == 01)) { Kernel.SendWorldMessage(new Message("War rygh_hglx War began!", Color.White, Message.Center), Program.Values); foreach (var client in Program.Values) client.MessageBox("War rygh_hglx began! Would you like to Join? ", p => { p.Entity.Teleport(1505, 148, 222); }, null, 60); } #endregion #region SuperYellow if ((Now64.Minute == 36) && (Now64.Second == 01)) { Kernel.SendWorldMessage(new Message("SuperYellow War began!", Color.White, Message.Center), Program.Values); foreach (var client in Program.Values) client.MessageBox("SuperYellow pk began! Would you like to Join? ", p => { p.Entity.Teleport(1505, 144, 201); }, null, 60); } #endregion #region SuperUnderBlue if ((Now64.Minute == 41) && (Now64.Second == 01)) { Kernel.SendWorldMessage(new Message("SuperUnderBlue War began!", Color.White, Message.Center), Program.Values); foreach (var client in Program.Values) client.MessageBox("SuperUnderBlue pk began! Would you like to Join? ", p => { p.Entity.Teleport(1505, 150, 200); }, null, 60); } #endregion #region TopSpouse if ((Now64.Minute == 51) && (Now64.Second == 01)) { Kernel.SendWorldMessage(new Message("TopSpouse War began!", Color.White, Message.Center), Program.Values); foreach (var client in Program.Values) client.MessageBox("TopSpouse pk began! Would you like to Join? ", p => { p.Entity.Teleport(1505, 158, 201); }, null, 60); } #endregion #region SuperYellow if ((Now64.Minute == 55) && (Now64.Second == 01)) { Kernel.SendWorldMessage(new Message("SuperYellow War began!", Color.White, Message.Center), Program.Values); foreach (var client in Program.Values) client.MessageBox("SuperYellow pk began! Would you like to Join? ", p => { p.Entity.Teleport(1505, 154, 201); }, null, 60); } #endregion #region Mr.ConquerHost if ((Now64.Minute == 25) && (Now64.Second == 01)) { Kernel.SendWorldMessage(new Message("Mr.ConquerHost War began!", Color.White, Message.Center), Program.Values); foreach (var client in Program.Values) client.MessageBox("Mr.ConquerHost pk began! Would you like to Join? ", p => { p.Entity.Teleport(1505, 157, 183); }, null, 60); } #endregion #region Ms.ConquerHost if ((Now64.Minute == 16) && (Now64.Second == 01)) { Kernel.SendWorldMessage(new Message("Ms.ConquerHost War began!", Color.White, Message.Center), Program.Values); foreach (var client in Program.Values) client.MessageBox("Ms.ConquerHost pk began! Would you like to Join? ", p => { p.Entity.Teleport(1505, 171, 183); }, null, 60); } #endregion #region Top LeeLong if ((Now64.Minute == 12) && (Now64.Second == 01)) { Kernel.SendWorldMessage(new Message("Top LeeLong War began!", Color.White, Message.Center), Program.Values); foreach (var client in Program.Values) client.MessageBox("Top LeeLong pk began! Would you like to Join? ", p => { p.Entity.Teleport(1505, 180, 190); }, null, 60); } #endregion #region Lord-Of-the-Conquer if ((Now64.Minute == 20) && (Now64.Second == 02)) { Kernel.SendWorldMessage(new Message("Lord-Of-the-Conquer War began!", Color.White, Message.Center), Program.Values); foreach (var client in Program.Values) client.MessageBox("Lord-Of-the-Conquer pk began! Would you like to Join? ", p => { p.Entity.Teleport(1505, 157, 191); }, null, 60); } #endregion #region Elite Pk if ((Now64.Hour == 14) && (Now64.Minute == 57)) { Kernel.SendWorldMessage(new Message("Elite Pk Top began!", Color.White, Message.Center), Program.Values); foreach (var client in Program.Values) client.MessageBox("Elite pk began! Would you like to Join? ", p => { p.Entity.Teleport(1505, 137, 86); }, null, 60); } #endregion #region MsConquerHost/MrConquerHost if ((Now64.Hour == 19) && (Now64.Minute == 01) && (Now64.Second == 00)) { Kernel.SendWorldMessage(new Message("MsConquerHost/MrConquerHost War began!", Color.White, Message.Center), Program.Values); foreach (var client in Program.Values) client.MessageBox("MsConquerHost/MrConquerHost began! Would you like to Join? ", p => { p.Entity.Teleport(1002, 442, 291); }, null, 60); } #endregion #region Ss-Fb if ((Now64.Minute == 35) && (Now64.Second == 30)) { Kernel.SendWorldMessage(new Message("SCENT/FAST War began!", Color.White, Message.Center), Program.Values); foreach (var client in Program.Values) client.MessageBox("Ss-Fb pK began! Would you like to Join? ", p => { p.Entity.Teleport(1002, 438, 348); }, null, 60); } #endregion #region Drop Party if (Now64.Minute == 59 && Now64.Second == 00) { /*if (Program.Carnaval == 1) { // Game.FirozCarnaval.Load(); Program.Carnaval = 0; }*/ Kernel.SendWorldMessage(new Network.GamePackets.Message("TQEnvoy will apear in TwinCity after 1 Minute and DropParty will Start Hurry go to TC to Get some Gifts ", System.Drawing.Color.Red, Network.GamePackets.Message.Center), Program.Values); } if (Now64.Minute == 00 && Now64.Second == 03) { Game.Gifts.Load2(); } if (Now64.Minute == 00 && Now64.Second == 06) { Game.Gifts.Load3(); } if (Now64.Minute == 00 && Now64.Second == 09) { Game.Gifts.Load4(); } if (Now64.Minute == 00 && Now64.Second == 12) { Game.Gifts.Load5(); } if (Now64.Minute == 00 && Now64.Second == 15) { Game.Gifts.Load6(); } if (Now64.Minute == 00 && Now64.Second == 18) { Game.Gifts.Load7(); } if (Now64.Minute == 00 && Now64.Second == 21) { Game.Gifts.Load8(); } if (Now64.Minute == 00 && Now64.Second == 24) { Game.Gifts.Load9(); Kernel.SendWorldMessage(new Network.GamePackets.Message("TQEnvoy Drop Event ended come back next hour , it apear every hour at xx:00 goodluck ", System.Drawing.Color.Red, Network.GamePackets.Message.Talk), Program.Values); } #endregion #region GuildWar if (GuildWar.IsWar) { if (Time32.Now > GuildWar.ScoreSendStamp.AddSeconds(3)) { GuildWar.ScoreSendStamp = Time32.Now; GuildWar.SendScores(); } if (!GuildWar.Flame10th) { if (Now64.DayOfWeek == DayOfWeek.Thursday && Now64.Hour == 21 && Now64.Minute == 00) { GuildWar.Flame10th = true; Kernel.SendWorldMessage(new Message("You have to be ready for death!", Color.White, Message.Center), Program.Values); } } } if ((Now64.Hour >= 7 && Now64.Minute <= 00) && Now64.DayOfWeek == DayOfWeek.Thursday) { if (!GuildWar.IsWar) { GuildWar.Start(); foreach (Client.GameState client in Kernel.GamePool.Values) { if (client.Map.BaseID != 6001 && client.Map.BaseID != 6000 && !client.Entity.Dead) { EventAlert alert = new EventAlert { StrResID = 10515, Countdown = 60, UK12 = 1 }; client.Entity.StrResID = 10515; client.Send(alert); } } } } if (GuildWar.IsWar) { if (Now64.Hour == 22 && Now64.Second <= 00) { GuildWar.Flame10th = false; GuildWar.End(); } } #endregion #region Quiz Show if (Now64.DayOfWeek == DayOfWeek.Saturday || Now64.DayOfWeek == DayOfWeek.Sunday) { if (Now64.Hour == 3 || Now64.Hour == 13 || Now64.Hour == 20) { if (Now64.Minute == 55 && Now64.Second <= 2) { Kernel.SendWorldMessage(new Network.GamePackets.Message("QuizShow Begin Be Ready", System.Drawing.Color.White, Mr.Lover.Network.GamePackets.Message.TopLeft), Program.Values); } } if (Now64.Hour == 4 || Now64.Hour == 14 || Now64.Hour == 21) { if (Now64.Minute == 0 && Now64.Second <= 2) { Kernel.QuizShow.Start(); Kernel.SendWorldMessage(new Network.GamePackets.Message("QuizShow Begin Be Ready!", System.Drawing.Color.White, Mr.Lover.Network.GamePackets.Message.TopLeft), Program.Values); } } } #endregion #region Elite PK Tournament if (Now64.Hour == 14 && Now64.Minute >= 55 && !ElitePKTournament.TimersRegistered) { ElitePK.EventTime = DateTime.Now.Hour; ElitePKTournament.RegisterTimers(); ElitePKBrackets brackets = new ElitePKBrackets(true, 0); brackets.Type = ElitePKBrackets.EPK_State; brackets.OnGoing = true; foreach (var client in Program.Values) { client.Send(brackets); foreach (Client.GameState Client in Kernel.GamePool.Values) { if (client.Map.BaseID != 6001 && client.Map.BaseID != 6000 && !client.Entity.Dead) { EventAlert alert = new EventAlert { StrResID = 10533, Countdown = 60, UK12 = 1 }; client.Entity.StrResID = 10533; client.Send(alert); } } #region RemoveTopElite var EliteChampion = Network.GamePackets.TitlePacket.Titles.ElitePKChamption_High; var EliteSecond = Network.GamePackets.TitlePacket.Titles.ElitePK2ndPlace_High; var EliteThird = Network.GamePackets.TitlePacket.Titles.ElitePK3ndPlace_High; var EliteEightChampion = Network.GamePackets.TitlePacket.Titles.ElitePKChamption_Low; var EliteEightSecond = Network.GamePackets.TitlePacket.Titles.ElitePK2ndPlace_Low; var EliteEightThird = Network.GamePackets.TitlePacket.Titles.ElitePK3ndPlace_Low; var EliteEight = Network.GamePackets.TitlePacket.Titles.ElitePKTopEight_Low; if (client.Entity.Titles.ContainsKey(EliteChampion)) client.Entity.RemoveTopStatus((ulong)EliteChampion); if (client.Entity.Titles.ContainsKey(EliteSecond)) client.Entity.RemoveTopStatus((ulong)EliteSecond); if (client.Entity.Titles.ContainsKey(EliteThird)) client.Entity.RemoveTopStatus((ulong)EliteThird); if (client.Entity.Titles.ContainsKey(EliteEightChampion)) client.Entity.RemoveTopStatus((ulong)EliteEightChampion); if (client.Entity.Titles.ContainsKey(EliteEightSecond)) client.Entity.RemoveTopStatus((ulong)EliteEightSecond); if (client.Entity.Titles.ContainsKey(EliteEightThird)) client.Entity.RemoveTopStatus((ulong)EliteEightThird); if (client.Entity.Titles.ContainsKey(EliteEight)) client.Entity.RemoveTopStatus((ulong)EliteEight); #endregion } } if ((DateTime.Now >= Program.Elite.AddHours(1.0) || Mido_Times.End.ElitePkTourment) && ElitePKTournament.TimersRegistered) { bool done = true; foreach (var epk in ElitePKTournament.Tournaments) if (epk.Players.Count != 0) done = false; if (done) { ElitePKTournament.TimersRegistered = false; ElitePKBrackets brackets = new ElitePKBrackets(true, 0); brackets.Type = ElitePKBrackets.EPK_State; brackets.OnGoing = false; foreach (var client in Program.Values) client.Send(brackets); } } #endregion #region Capture the flag // if (Now64.DayOfWeek == DayOfWeek.Saturday) { if (Mido_Times.Start.CTF && !CaptureTheFlag.IsWar) { CaptureTheFlag.IsWar = true; CaptureTheFlag.StartTime = DateTime.Now; foreach (var guild in Kernel.Guilds.Values) { guild.CTFFlagScore = 0; guild.CTFPoints = 0; } foreach (Client.GameState client in Kernel.GamePool.Values) { if (client.Map.BaseID != 6001 && client.Map.BaseID != 6000 && !client.Entity.Dead) { EventAlert alert = new EventAlert { StrResID = 10539, Countdown = 60, UK12 = 1 }; client.Entity.StrResID = 10539; client.Send(alert); } } } } if (CaptureTheFlag.IsWar) { Program.World.CTF.SendUpdates(); if (Now64 > CaptureTheFlag.StartTime.AddHours(1)) { CaptureTheFlag.IsWar = false; CaptureTheFlag.Close(); } } if (CTF != null) CTF.SpawnFlags(); #endregion #if OBSOLETE_CLASSPK /* if (Now64.Hour == 20 && Now64.Minute == 00 && Now64.DayOfWeek == DayOfWeek.Saturday) { if (Now64.Minute == 00 && Now64.Second <= 2) { Game.ClassPk.SignUp(); Mr.Lover.Kernel.SendWorldMessage(new Mr.Lover.Network.GamePackets.Message("Trojan Pk War Has been Started Go to ClassPkEnvoy in TwinCity to SignUp Before 20:05 ", System.Drawing.Color.White, Mr.Lover.Network.GamePackets.Message.TopLeft), Program.Values); } } if (Now64.Hour == 20 && Now64.Minute == 00 && Now64.DayOfWeek == DayOfWeek.Sunday) { if (Now64.Minute == 00 && Now64.Second <= 2) { Game.ClassPk.SignUp1(); Mr.Lover.Kernel.SendWorldMessage(new Mr.Lover.Network.GamePackets.Message("Warrior Pk War Has been Started Go to ClassPkEnvoy in TwinCity to SignUp Before 20:05 ", System.Drawing.Color.White, Mr.Lover.Network.GamePackets.Message.TopLeft), Program.Values); } } if (Now64.Hour == 20 && Now64.Minute == 00 && Now64.DayOfWeek == DayOfWeek.Monday) { if (Now64.Minute == 00 && Now64.Second <= 2) { Game.ClassPk.SignUp6(); Mr.Lover.Kernel.SendWorldMessage(new Mr.Lover.Network.GamePackets.Message("Fire Pk War Has been Started Go to ClassPkEnvoy in TwinCity to SignUp Before 20:05 ", System.Drawing.Color.White, Mr.Lover.Network.GamePackets.Message.TopLeft), Program.Values); } } if (Now64.Hour == 20 && Now64.Minute == 00 && Now64.DayOfWeek == DayOfWeek.Tuesday) { if (Now64.Minute == 00 && Now64.Second <= 2) { Game.ClassPk.SignUp3(); Mr.Lover.Kernel.SendWorldMessage(new Mr.Lover.Network.GamePackets.Message("Ninja Pk War Has been Started Go to ClassPkEnvoy in TwinCity to SignUp Before 20:05 ", System.Drawing.Color.White, Mr.Lover.Network.GamePackets.Message.TopLeft), Program.Values); } } if (Now64.Hour == 8 && Now64.Minute == 00 && Now64.DayOfWeek == DayOfWeek.Monday) { Game.ClassPk.SignUp8(); Mr.Lover.Kernel.SendWorldMessage(new Mr.Lover.Network.GamePackets.Message("Pirate Pk War Has been Started Go to ClassPkEnvoy in TwinCity to SignUp Before 20:05 ", System.Drawing.Color.White, Mr.Lover.Network.GamePackets.Message.TopLeft), Program.Values); } if (Now64.Hour == 20 && Now64.Minute == 00 && Now64.DayOfWeek == DayOfWeek.Thursday) { if (Now64.Minute == 00 && Now64.Second <= 2) { Game.ClassPk.SignUp5(); Mr.Lover.Kernel.SendWorldMessage(new Mr.Lover.Network.GamePackets.Message("Water Pk War Has been Started Go to ClassPkEnvoy in TwinCity to SignUp Before 20:05 ", System.Drawing.Color.White, Mr.Lover.Network.GamePackets.Message.TopLeft), Program.Values); } } if (Now64.Hour == 20 && Now64.Minute == 00 && Now64.DayOfWeek == DayOfWeek.Wednesday) { if (Now64.Minute == 00 && Now64.Second <= 2) { Game.ClassPk.SignUp4(); Mr.Lover.Kernel.SendWorldMessage(new Mr.Lover.Network.GamePackets.Message("Monk Pk War Has been Started Go to ClassPkEnvoy in TwinCity to SignUp Before 20:05 ", System.Drawing.Color.White, Mr.Lover.Network.GamePackets.Message.TopLeft), Program.Values); } } if (Now64.Hour == 20 && Now64.Minute == 00 && Now64.DayOfWeek == DayOfWeek.Friday) { if (Now64.Minute == 00 && Now64.Second <= 2) { Game.ClassPk.SignUp2(); Mr.Lover.Kernel.SendWorldMessage(new Mr.Lover.Network.GamePackets.Message("Archer Pk War Has been Started Go to ClassPkEnvoy in TwinCity to SignUp Before 20:05 ", System.Drawing.Color.White, Mr.Lover.Network.GamePackets.Message.TopLeft), Program.Values); } }*/ #endif } private void ServerFunctions(int time) { #region New weather Mr.Lover.Network.GamePackets.Weather weather; #region Rain System if (DateTime.Now.Minute == 10 && DateTime.Now.Second == 0 || DateTime.Now.Minute == 00 && DateTime.Now.Second == 00) { foreach (GameState state in Kernel.GamePool.Values) { Program.WeatherType = Mr.Lover.Network.GamePackets.Weather.Rain; weather = new Mr.Lover.Network.GamePackets.Weather(true) { WeatherType = (uint)Program.WeatherType, Intensity = 255, Appearence = 255, Direction = 255 }; state.Send(weather); } } #endregion Rain System #region Snow System if (DateTime.Now.Minute == 20 && DateTime.Now.Second == 0 || DateTime.Now.Minute == 00 && DateTime.Now.Second == 00) { foreach (GameState state in Kernel.GamePool.Values) { Program.WeatherType = Mr.Lover.Network.GamePackets.Weather.Snow; weather = new Mr.Lover.Network.GamePackets.Weather(true) { WeatherType = (uint)Program.WeatherType, Intensity = 255, Appearence = 255, Direction = 255 }; state.Send(weather); } } #endregion Snow System #region AutumnLeaves if (DateTime.Now.Minute == 30 && DateTime.Now.Second == 0 || DateTime.Now.Minute == 00 && DateTime.Now.Second == 00) { foreach (GameState state in Kernel.GamePool.Values) { Program.WeatherType = Mr.Lover.Network.GamePackets.Weather.AutumnLeaves; weather = new Mr.Lover.Network.GamePackets.Weather(true) { WeatherType = (uint)Program.WeatherType, Intensity = 255, Appearence = 255, Direction = 255 }; state.Send(weather); } } #endregion AutumnLeaves #region CherryBlossomPetals if (DateTime.Now.Minute == 40 && DateTime.Now.Second == 0 || DateTime.Now.Minute == 00 && DateTime.Now.Second == 00) { foreach (GameState state in Kernel.GamePool.Values) { Program.WeatherType = Mr.Lover.Network.GamePackets.Weather.CherryBlossomPetals; weather = new Mr.Lover.Network.GamePackets.Weather(true) { WeatherType = (uint)Program.WeatherType, Intensity = 255, Appearence = 255, Direction = 255 }; state.Send(weather); } } #endregion CherryBlossomPetals #region BlowingCotten if (DateTime.Now.Minute == 60 && DateTime.Now.Second == 0 || DateTime.Now.Minute == 00 && DateTime.Now.Second == 00) { foreach (GameState state in Kernel.GamePool.Values) { Program.WeatherType = Mr.Lover.Network.GamePackets.Weather.BlowingCotten; weather = new Mr.Lover.Network.GamePackets.Weather(true) { WeatherType = (uint)Program.WeatherType, Intensity = 255, Appearence = 255, Direction = 255 }; state.Send(weather); } } #endregion CherryBlossomPetals #endregion New weather if (!IsNight) { if (DateTime.Now.Hour % 2 == 0) { foreach (var client in Program.Values) { Network.GamePackets.ScreenColor Packet = new Network.GamePackets.ScreenColor(true); Packet.UID = client.Entity.UID; Packet.ID = 104; Packet.dwParam = 5855577; client.Send(Packet); } IsNight = true; } } else { if (DateTime.Now.Hour % 2 != 0) { foreach (var client in Program.Values) { Network.GamePackets.ScreenColor Packet = new Network.GamePackets.ScreenColor(true); Packet.UID = client.Entity.UID; Packet.ID = 104; Packet.dwParam = 0; client.Send(Packet); } IsNight = true; } } var kvpArray = Kernel.GamePool.ToArray(); foreach (var kvp in kvpArray) if (kvp.Value == null || kvp.Value.Entity == null) Kernel.GamePool.Remove(kvp.Key); Program.Values = Kernel.GamePool.Values.ToArray(); Console.Title = Constants.ServerName + " -- Players online: " + Kernel.GamePool.Count + "/" + Program.PlayerCap; if (Kernel.GamePool.Count > Program.MaxOn) { Program.MaxOn = Kernel.GamePool.Count; } Console.Title = Constants.ServerName + " -- Players online: " + Kernel.GamePool.Count + " / Max online: " + Program.MaxOn + ""; new Database.MySqlCommand(Database.MySqlCommandType.UPDATE).Update("configuration").Set("GuildID", Game.ConquerStructures.Society.Guild.GuildCounter.Now).Set("ItemUID", Network.GamePackets.ConquerItem.ItemUID.Now).Where("Server", Constants.ServerName).Execute(); Database.EntityVariableTable.Save(0, Program.Vars); if (Kernel.BlackSpoted.Values.Count > 0) { foreach (var spot in Kernel.BlackSpoted.Values) { if (Time32.Now >= spot.BlackSpotStamp.AddSeconds(spot.BlackSpotStepSecs)) { if (spot.Dead && spot.EntityFlag == EntityFlag.Player) { foreach (var h in Program.Values) { h.Send(Program.BlackSpotPacket.ToArray(false, spot.UID)); } Kernel.BlackSpoted.Remove(spot.UID); continue; } foreach (var h in Program.Values) { h.Send(Program.BlackSpotPacket.ToArray(false, spot.UID)); } spot.IsBlackSpotted = false; Kernel.BlackSpoted.Remove(spot.UID); } } } DateTime Now = DateTime.Now; #region Server Auto Restart //if (Now >= Program.StartDate.AddHours(48)) //{ // if (Program.mess == 0) // { // foreach (Client.GameState Server in Kernel.GamePool.Values) // { // Mr.Lover.Network.GamePackets.Message FiveMinute = new Network.GamePackets.Message("The server will be brought down for maintenance in 5 Minutes. Please exit the game now.", System.Drawing.Color.Red, Network.GamePackets.Message.Center); // Server.Send(FiveMinute); // } // Program.mess++; // Program.messtime = Time32.Now; // } // if (Program.mess == 1 && Time32.Now >= Program.messtime.AddMinutes(1)) // { // foreach (Client.GameState Server in Kernel.GamePool.Values) // { // Mr.Lover.Network.GamePackets.Message FiveMinute = new Network.GamePackets.Message("The server will be brought down for maintenance in 4 Minutes. Please exit the game now.", System.Drawing.Color.Red, Network.GamePackets.Message.Center); // Server.Send(FiveMinute); // } // Program.mess++; // Program.messtime = Time32.Now; // } // if (Program.mess == 2 && Time32.Now >= Program.messtime.AddMinutes(1)) // { // foreach (Client.GameState Server in Kernel.GamePool.Values) // { // Mr.Lover.Network.GamePackets.Message FiveMinute = new Network.GamePackets.Message("The server will be brought down for maintenance in 3 Minutes. Please exit the game now.", System.Drawing.Color.Red, Network.GamePackets.Message.Center); // Server.Send(FiveMinute); // } // Program.mess++; // Program.messtime = Time32.Now; // } // if (Program.mess == 3 && Time32.Now >= Program.messtime.AddMinutes(1)) // { // foreach (Client.GameState Server in Kernel.GamePool.Values) // { // Mr.Lover.Network.GamePackets.Message FiveMinute = new Network.GamePackets.Message("The server will be brought down for maintenance in 2 Minutes. Please exit the game now.", System.Drawing.Color.Red, Network.GamePackets.Message.Center); // Server.Send(FiveMinute); // } // Program.mess++; // Program.messtime = Time32.Now; // } // if (Program.mess == 4 && Time32.Now >= Program.messtime.AddMinutes(1)) // { // foreach (Client.GameState Server in Kernel.GamePool.Values) // { // Mr.Lover.Network.GamePackets.Message FiveMinute = new Network.GamePackets.Message("The server will be brought down for maintenance in 1 Minute. Please exit the game now.", System.Drawing.Color.Red, Network.GamePackets.Message.Center); // Server.Send(FiveMinute); // } // Program.mess++; // Program.messtime = Time32.Now; // } //} //if (Now >= Program.StartDate.AddHours(48) && !Program.restarted && Program.mess == 5) //{ // Program.CommandsAI("@restart"); // Program.restarted = true; // return; //} #endregion #region NobilityReset /*if (Now >= Program.NobilityReset.AddDays(30) && !Program.reseted) { using (var command = new MySqlCommand(MySqlCommandType.DELETE)) command.Delete("nobility", "EntityUID", 0) .Execute(); Program.NobilityReset = DateTime.Now; Program.reseted = true; Mr.Lover.Network.GamePackets.Message Reset = new Network.GamePackets.Message("[TQ-Servers] : Noility has been reset to zero, harry up and donate for king title", System.Drawing.Color.Red, Network.GamePackets.Message.Center); Program.CommandsAI("@restart"); Program.restarted = true; }*/ #endregion if (Now > Game.ConquerStructures.Broadcast.LastBroadcast.AddMinutes(1)) { if (Game.ConquerStructures.Broadcast.Broadcasts.Count > 0) { Game.ConquerStructures.Broadcast.CurrentBroadcast = Game.ConquerStructures.Broadcast.Broadcasts[0]; Game.ConquerStructures.Broadcast.Broadcasts.Remove(Game.ConquerStructures.Broadcast.CurrentBroadcast); Game.ConquerStructures.Broadcast.LastBroadcast = Now; Kernel.SendWorldMessage(new Network.GamePackets.Message(Game.ConquerStructures.Broadcast.CurrentBroadcast.Message, "ALLUSERS", Game.ConquerStructures.Broadcast.CurrentBroadcast.EntityName, System.Drawing.Color.Red, Network.GamePackets.Message.BroadcastMessage), Program.Values); } else Game.ConquerStructures.Broadcast.CurrentBroadcast.EntityID = 1; } if (Now > Program.LastRandomReset.AddMinutes(30)) { Program.LastRandomReset = Now; Kernel.Random = new FastRandom(Program.RandomSeed); } Program.Today = Now.DayOfWeek; } private void ArenaFunctions(int time) { Game.Arena.EngagePlayers(); Game.Arena.CheckGroups(); Game.Arena.VerifyAwaitingPeople(); Game.Arena.Reset(); } private void TeamArenaFunctions(int time) { Game.TeamArena.PickUpTeams(); Game.TeamArena.EngagePlayers(); Game.TeamArena.CheckGroups(); Game.TeamArena.VerifyAwaitingPeople(); Game.TeamArena.Reset(); } private void ChampionFunctions(int time) { Game.Champion.EngagePlayers(); Game.Champion.CheckGroups(); Game.Champion.VerifyAwaitingPeople(); Game.Champion.Reset(); } #region Funcs public static void Execute(Action action, int timeOut = 0, ThreadPriority priority = ThreadPriority.Normal) { GenericThreadPool.Subscribe(new LazyDelegate(action, timeOut, priority)); } public static void Execute(Action action, T param, int timeOut = 0, ThreadPriority priority = ThreadPriority.Normal) { GenericThreadPool.Subscribe(new LazyDelegate(action, timeOut, priority), param); } public static IDisposable Subscribe(Action action, int period = 1, ThreadPriority priority = ThreadPriority.Normal) { return GenericThreadPool.Subscribe(new TimerRule(action, period, priority)); } public static IDisposable Subscribe(Action action, T param, int timeOut = 0, ThreadPriority priority = ThreadPriority.Normal) { return GenericThreadPool.Subscribe(new TimerRule(action, timeOut, priority), param); } public static IDisposable Subscribe(TimerRule rule, T param, StandalonePool pool) { return pool.Subscribe(rule, param); } public static IDisposable Subscribe(TimerRule rule, T param, StaticPool pool) { return pool.Subscribe(rule, param); } public static IDisposable Subscribe(TimerRule rule, T param) { return GenericThreadPool.Subscribe(rule, param); } #endregion internal void SendServerMessaj(string p) { Kernel.SendWorldMessage(new Message(p, System.Drawing.Color.Red, Message.TopLeft), Program.Values); } public bool CrossRegister(GameState client) { if (client.TimerSubscriptions == null) { client.TimerSyncRoot = new object(); client.TimerSubscriptions = new IDisposable[] { CrossCharacters.Add(client), AutoAttack.Add(client), }; return true; } return false; } } }