Here Bro.. This is i've done
Code:
private void _timerCallBack(object myObject)
{
foreach (Entity monster in Companions.Values)
{
if (!monster.Owner.Socket.Connected)
{
RemoveEntity(monster);
break;
}
}
foreach (Entity monster in Entities.Values)
{
if (monster.Dead)
{
if (Time32.Now > monster.DeathStamp.AddSeconds(monster.MonsterInfo.RespawnTime))
{
monster.X = (ushort)(monster.MonsterInfo.BoundX + ServerBase.Kernel.Random.Next(0, monster.MonsterInfo.BoundCX));
monster.Y = (ushort)(monster.MonsterInfo.BoundY + ServerBase.Kernel.Random.Next(0, monster.MonsterInfo.BoundCY));
for (int count = 0; count < monster.MonsterInfo.BoundCX * monster.MonsterInfo.BoundCY; count++)
{
if (!Floor[monster.X, monster.Y, MapObjectType.Monster, null])
{
monster.X = (ushort)(monster.MonsterInfo.BoundX + ServerBase.Kernel.Random.Next(0, monster.MonsterInfo.BoundCX));
monster.Y = (ushort)(monster.MonsterInfo.BoundY + ServerBase.Kernel.Random.Next(0, monster.MonsterInfo.BoundCY));
}
else
break;
}
if (Floor[monster.X, monster.Y, MapObjectType.Monster, null] || monster.X == monster.MonsterInfo.BoundX && monster.Y == monster.MonsterInfo.BoundY)
{
monster.Hitpoints = monster.MonsterInfo.Hitpoints;
monster.RemoveFlag(monster.StatusFlag);
Network.GamePackets._String stringPacket = new Conquer_Online_Server.Network.GamePackets._String(true);
stringPacket.UID = monster.UID;
stringPacket.Type = Network.GamePackets._String.Effect;
stringPacket.Texts.Add("MBStandard");
monster.StatusFlag = 0;
if (monster.Body == 133 & monster.MapID == 1011)
{
Conquer_Online_Server.ServerBase.Kernel.SendWorldMessage(new Conquer_Online_Server.Network.GamePackets.Message("Ganoderma has Spawn at PhoenixCastle 665, 779).", System.Drawing.Color.White, Conquer_Online_Server.Network.GamePackets.Message.Center), Program.GamePool);
}
if (monster.Body == 153 && monster.MapID == 1020)
{
Conquer_Online_Server.ServerBase.Kernel.SendWorldMessage(new Conquer_Online_Server.Network.GamePackets.Message("Titan has Spawn at ApeCity(396, 588).", System.Drawing.Color.White, Conquer_Online_Server.Network.GamePackets.Message.Center), Program.GamePool);
}
foreach (Client.GameState client in ServerBase.Kernel.GamePool.Values)
{
if (client.Map.ID == ID)
{
if (ServerBase.Kernel.GetDistance(client.Entity.X, client.Entity.Y, monster.X, monster.Y) < ServerBase.Constants.nScreenDistance)
{
monster.CauseOfDeathIsMagic = false;
monster.SendSpawn(client, false);
client.Send(stringPacket);
}
}
}
}
}
}
else
{
if (monster.ToxicFogLeft > 0)
{
if (Time32.Now >= monster.ToxicFogStamp.AddSeconds(2))
{
monster.ToxicFogLeft--;
monster.ToxicFogStamp = Time32.Now;
if (monster.Hitpoints > 1)
{
uint damage = Game.Attacking.Calculate.Percent(monster, monster.ToxicFogPercent);
monster.Hitpoints -= damage;
Network.GamePackets.SpellUse suse = new Conquer_Online_Server.Network.GamePackets.SpellUse(true);
suse.Attacker = monster.UID;
suse.SpellID = 10010;
suse.Targets.Add(monster.UID, damage);
monster.MonsterInfo.SendScreen(suse);
}
}
}
}
}
}