public Entity Killer;
public void Die(Entity killer)//just replace this whole void for die delay
{
if (Time32.Now > DeathStamp)
{
if (AuraTime != 0)
{
AuraTime = 0;
RemoveFlag2(Network.GamePackets.Update.Flags2.Tyra ntAura);
RemoveFlag2(Network.GamePackets.Update.Flags2.Fend Aura);
RemoveFlag2(Network.GamePackets.Update.Flags2.Meta lAura);
RemoveFlag2(Network.GamePackets.Update.Flags2.Wood Aura);
RemoveFlag2(Network.GamePackets.Update.Flags2.Wate rAura);
RemoveFlag2(Network.GamePackets.Update.Flags2.Eart hAura);
RemoveFlag2(Network.GamePackets.Update.Flags2.Fire Aura);
if (!Owner.AlternateEquipment)
{
Owner.LoadItemStats(this);
}
else
{
Owner.LoadItemStats2(this);
}
}
if (killer.EntityFlag == EntityFlag.Player)
{
BlackSpot spot = new BlackSpot
{
Remove = 1,
Identifier = UID
};
killer.Owner.Send((byte[])spot);
BlackSpots = false;
BlackSpotTime2 = 0;
BlackSpotCheck = 0;
}
if (killer.EntityFlag == Game.EntityFlag.Player)
{
if (EntityFlag == Game.EntityFlag.Player)
{
/* Game.PkExpeliate pk = new Game.PkExpeliate();
pk.UID = killer.UID;
pk.Name = Name;
pk.KilledAt = "KimoConquer";
pk.LostExp = 0;
pk.Times = 0;
pk.Potency = (uint)BattlePower;
pk.Level = Level;
PkExpelTable.PkExploitAdd(killer.Owner, UID, pk);*/
}
}
if (killer.MapID == 3031)
{
if (this.ConquerPoints >= 20000)
{
uint ItemID = 729911;
this.ConquerPoints -= 20000;
ushort X = this.X, Y = this.Y;
Game.Map Map = ServerBase.Kernel.Maps[this.MapID];
if (Map.SelectCoordonates(ref X, ref Y))
{
Network.GamePackets.FloorItem floorItem = new Network.GamePackets.FloorItem(true);
floorItem.ValueType = Network.GamePackets.FloorItem.FloorValueType.Conqu erPoints;
floorItem.Value = 20000;
floorItem.ItemID = ItemID;
floorItem.MapID = this.MapID;
floorItem.MapObjType = Game.MapObjectType.Item;
floorItem.X = X;
floorItem.Y = Y;
floorItem.Owner = killer.Owner;
floorItem.Type = Network.GamePackets.FloorItem.Drop;
floorItem.OnFloor = Time32.Now;
floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
while (Map.Npcs.ContainsKey(floorItem.UID))
floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
Map.AddFloorItem(floorItem);
this.Owner.SendScreenSpawn(floorItem, true);
}
}
else
{
this.Teleport(1002, 428, 378);
ServerBase.Kernel.SendWorldMessage(new Message("Ops! " + this.Name + " has losed all his/her cps in the LordsWar and teleported back to TwinCity.", System.Drawing.Color.White, Message.TopLeft), ServerBase.Kernel.GamePool.Values);
}
}
if (killer.MapID == 7777)
{
if (killer.MapID == 7777)
{
killer.Owner.elitepoints += 1;
if (killer.Owner.elitepoints >= 20)
{
Network.GamePackets.NpcReply npc = new Network.GamePackets.NpcReply(6, "Congratulations, You Have Now " + killer.Owner.elitepoints + " ElitePk Points you can claim your prize now!");
npc.OptionID = 255;
killer.Owner.Send(npc.ToArray());
}
else
{
Network.GamePackets.NpcReply npc = new Network.GamePackets.NpcReply(6, "You Have Now " + killer.Owner.elitepoints + " ElitePk Points Congratz you still need " + (20 - killer.Owner.elitepoints) + " more!");
npc.OptionID = 255;
killer.Owner.Send(npc.ToArray());
}
}
}
if (EntityFlag == EntityFlag.Player)
Owner.XPCount = 0;
Killer = killer;
Hitpoints = 0;
DeathStamp = Time32.Now;
//DieString();
ToxicFogLeft = 0;
if (Companion)
{
AddFlag(Network.GamePackets.Update.Flags.Ghost | Network.GamePackets.Update.Flags.Dead | Network.GamePackets.Update.Flags.FadeAway);
Network.GamePackets.Attack zattack = new Network.GamePackets.Attack(true);
zattack.Attacked = UID;
zattack.AttackType = Network.GamePackets.Attack.Kill;
zattack.X = X;
zattack.Y = Y;
MonsterInfo.SendScreen(zattack);
Owner.Map.RemoveEntity(this);
Owner.Companion = null;
}
if (EntityFlag == EntityFlag.Player)
{
if (killer.EntityFlag == EntityFlag.Player)
{
#region Cheack Pk Map
if (Owner.Entity.MapID == 2555 || Owner.Entity.MapID == 5530 || Owner.Entity.MapID == 5531 || Owner.Entity.MapID == 5532 || Owner.Entity.MapID == 1452 || Owner.Entity.MapID == 5560 || Owner.Entity.MapID == 5570 || Owner.Entity.MapID == 5580)
{
Owner.Entity.Teleport(1002, 438, 382);
// Console.WriteLine("Done");
}
#endregion Cheack Pk Map
if (ServerBase.Constants.PKFreeMaps.Contains(killer.M apID))
goto Over;
if (ServerBase.Constants.Damage1Map.Contains(killer.M apID))
goto Over;
if (killer.Owner.Map.BaseID == 700)
goto Over;
if (!ContainsFlag(Network.GamePackets.Update.Flags.Fl ashingName) && !ContainsFlag(Network.GamePackets.Update.Flags.Bla ckName))
{
killer.AddFlag(Network.GamePackets.Update.Flags.Fl ashingName);
killer.FlashingNameStamp = Time32.Now;
killer.FlashingNameTime = 60;
if (killer.GuildID != 0)
{
if (killer.Owner.Guild.Enemy.ContainsKey(GuildID))
{
killer.PKPoints += 3;
}
else
{
if (!killer.Owner.Enemy.ContainsKey(UID))
killer.PKPoints += 10;
else
killer.PKPoints += 5;
}
}
else
{
if (!killer.Owner.Enemy.ContainsKey(UID))
killer.PKPoints += 10;
else
killer.PKPoints += 5;
}
if (!this.Owner.Enemy.ContainsKey(killer.UID))
{
Network.PacketHandler.AddEnemy(this.Owner, killer.Owner);
}
}
}
}
if (killer.EntityFlag == EntityFlag.Monster)
{
DropRandomStuff(Killer);
}
else
{
DropRandomStuff(Killer);
}
RemoveFlag(Network.GamePackets.Update.Flags.Flashi ngName);
Over:
Network.GamePackets.Attack attack = new Attack(true);
attack.Attacker = killer.UID;
attack.Attacked = UID;
attack.AttackType = Network.GamePackets.Attack.Kill;
attack.X = X;
attack.Y = Y;
if (EntityFlag == EntityFlag.Player)
{
AddFlag(Network.GamePackets.Update.Flags.Dead);
RemoveFlag(Network.GamePackets.Update.Flags.Fly);
RemoveFlag(Network.GamePackets.Update.Flags.Ride);
RemoveFlag(Network.GamePackets.Update.Flags.Cyclon e);
RemoveFlag(Network.GamePackets.Update.Flags.Superm an);
RemoveFlag(Network.GamePackets.Update.Flags.FatalS trike);
RemoveFlag(Network.GamePackets.Update.Flags.Flashi ngName);
RemoveFlag(Network.GamePackets.Update.Flags.Shurik enVortex);
RemoveFlag2(Network.GamePackets.Update.Flags2.Obli vion);
// if (Body % 10 < 3)
// TransformationID = 99;
//else
// TransformationID = 98;
Owner.SendScreen(attack, true);
Owner.Send(new MapStatus() { BaseID = (ushort)Database.MapsTable.MapInformations[Owner.Map.ID].BaseID, ID = (uint)Owner.Map.ID, Status = Database.MapsTable.MapInformations[Owner.Map.ID].Status, Weather = Database.MapsTable.MapInformations[Owner.Map.ID].Weather });
Network.GamePackets.Weather weather = new Network.GamePackets.Weather(true);
weather.WeatherType = (uint)Program.WeatherType;
weather.Intensity = 100;
weather.Appearence = 2;
weather.Direction = 4;
Owner.Send(weather);
if (Owner.QualifierGroup != null)
{
Owner.QualifierGroup.End(Owner);
}
}
else
{
if (!Companion)
{
try
{
if (MonsterInfo != null)
if (killer != null)
MonsterInfo.Drop(killer);
}
catch { }
}
ServerBase.Kernel.Maps[MapID].Floor[X, Y, MapObjType, this] = true;
if (killer.EntityFlag == EntityFlag.Player)
{
killer.Owner.IncreaseExperience(MaxHitpoints, true);
if (killer.Owner.Team != null)
{
foreach (Client.GameState teammate in killer.Owner.Team.Teammates)
{
if (ServerBase.Kernel.GetDistance(killer.X, killer.Y, teammate.Entity.X, teammate.Entity.Y) <= ServerBase.Constants.pScreenDistance)
{
if (killer.UID != teammate.Entity.UID)
{
uint extraExperience = MaxHitpoints / 2;
if (killer.Spouse == teammate.Entity.Name)
extraExperience = MaxHitpoints * 2;
byte TLevelN = teammate.Entity.Level;
if (killer.Owner.Team.CanGetNoobExperience(teammate))
{
if (teammate.Entity.Level < 137)
{
extraExperience *= 2;
teammate.IncreaseExperience(extraExperience, false);
teammate.Send(ServerBase.Constants.NoobTeamExperie nce(extraExperience));
}
}
else
{
if (teammate.Entity.Level < 137)
{
teammate.IncreaseExperience(extraExperience, false);
teammate.Send(ServerBase.Constants.TeamExperience( extraExperience));
}
}
byte TLevelNn = teammate.Entity.Level;
byte newLevel = (byte)(TLevelNn - TLevelN);
if (newLevel != 0)
{
if (TLevelN < 70)
{
for (int i = TLevelN; i < TLevelNn; i++)
{
teammate.Team.Teammates[0].VirtuePoints += (uint)(i * 3.83F);
teammate.Team.SendMessage(new Message("The leader, " + teammate.Team.Teammates[0].Entity.Name + ", has gained " + (uint)(i * 7.7F) + " virtue points for power leveling the rookies.", System.Drawing.Color.Red, Message.Team));
}
}
}
}
}
}
}
if (killer.Level < 137)
{
uint extraExp = MaxHitpoints;
extraExp *= ServerBase.Constants.ExtraExperienceRate;
extraExp += extraExp * killer.Gems[3] / 100;
extraExp += (uint)(extraExp * ((float)killer.BattlePower / 100));
if (killer.DoubleExperienceTime > 0)
extraExp *= 2;
if (killer.HeavenBlessing > 0)
extraExp += (uint)(extraExp * 20 / 100);
if (killer.Reborn >= 2)
extraExp /= 3;
killer.Owner.Send(ServerBase.Constants.ExtraExperi ence(extraExp));
}
killer.Owner.XPCount++;
if (killer.OnKOSpell())
killer.KOSpellTime++;
}
}
}
}
|