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
/// <summary>
/// The script engine for npcs.
/// </summary>
///
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<GameState> Buffers, Characters, CrossCharacters, AutoAttack, Prayer;
public TimerRule<ClientWrapper> ConnectionReceive, ConnectionReview, ConnectionSend;
public const uint
NobilityMapBase = 700,
ClassPKMapBase = 1730;
public List<KillTournament> 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<GameState>(BuffersCallback, 1000, ThreadPriority.BelowNormal);
Characters = new TimerRule<GameState>(CharactersCallback, 1000, ThreadPriority.BelowNormal);
AutoAttack = new TimerRule<GameState>(AutoAttackCallback, 1000, ThreadPriority.BelowNormal);
CrossCharacters = new TimerRule<GameState>(CrossCharactersCallback, 1000, ThreadPriority.BelowNormal);
Prayer = new TimerRule<GameState>(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<ClientWrapper>(connectionReview, 60000, ThreadPriority.Lowest);
ConnectionReceive = new TimerRule<ClientWrapper>(connectionReceive, 1);
ConnectionSend = new TimerRule<ClientWrapper>(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<KillTournament>();
#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<uint, Game.ConquerStructures.NobilityInformation> Board = new SafeDictionary<uint, Game.ConquerStructures.NobilityInformation>(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<int> action, int timeOut = 0, ThreadPriority priority = ThreadPriority.Normal)
{
GenericThreadPool.Subscribe(new LazyDelegate(action, timeOut, priority));
}
public static void Execute<T>(Action<T, int> action, T param, int timeOut = 0, ThreadPriority priority = ThreadPriority.Normal)
{
GenericThreadPool.Subscribe<T>(new LazyDelegate<T>(action, timeOut, priority), param);
}
public static IDisposable Subscribe(Action<int> action, int period = 1, ThreadPriority priority = ThreadPriority.Normal)
{
return GenericThreadPool.Subscribe(new TimerRule(action, period, priority));
}
public static IDisposable Subscribe<T>(Action<T, int> action, T param, int timeOut = 0, ThreadPriority priority = ThreadPriority.Normal)
{
return GenericThreadPool.Subscribe<T>(new TimerRule<T>(action, timeOut, priority), param);
}
public static IDisposable Subscribe<T>(TimerRule<T> rule, T param, StandalonePool pool)
{
return pool.Subscribe<T>(rule, param);
}
public static IDisposable Subscribe<T>(TimerRule<T> rule, T param, StaticPool pool)
{
return pool.Subscribe<T>(rule, param);
}
public static IDisposable Subscribe<T>(TimerRule<T> rule, T param)
{
return GenericThreadPool.Subscribe<T>(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;
}
}
}