static void PlayerGroundMovment(GroundMovement groundMovement, Client.GameState client) { client.Entity.Action = PhoenixProject.Game.Enums.ConquerAction.None; client.Attackable = true; client.Mining = false; if (client.Entity.ContainsFlag3(Network.GamePackets.Update.Flags3.MagicDefender)) { client.Entity.MagicDefenderTime = 0; client.Entity.MagicDefenderIncrease = 0; client.Entity.RemoveFlag3(Network.GamePackets.Update.Flags3.MagicDefender); SyncPacket packet = new SyncPacket { Identifier = client.Entity.UID, Count = 2, Type = PhoenixProject.Network.GamePackets.SyncPacket.SyncType.StatusFlag, StatusFlag1 = (ulong)client.Entity.StatusFlag, StatusFlag2 = (ulong)client.Entity.StatusFlag2, Unknown1 = 0x31, StatusFlagOffset = 0x80, Time = 0, Value = 0, Level = 0 }; client.Entity.Owner.Send((byte[])packet); foreach (var Client in client.MagicDef) { if (Client.Entity.ContainsFlag2(Update.Flags2.kimo4)) { Client.Entity.RemoveFlag2(Update.Flags2.kimo4); } } client.MagicDef.Clear(); } if (client.Entity.ContainsFlag(Update.Flags.CastPray)) { client.Entity.RemoveFlag(Update.Flags.CastPray); foreach (var Client in client.Prayers) { if (Client.Entity.ContainsFlag(Update.Flags.Praying)) { Client.Entity.RemoveFlag(Update.Flags.Praying); } } client.Prayers.Clear(); } if (client.Entity.ContainsFlag(Update.Flags.Praying)) { client.Entity.RemoveFlag(Update.Flags.Praying); if (client.PrayLead != null) client.PrayLead.Prayers.Remove(client); client.PrayLead = null; } if (client.Entity.AttackPacket != null) { client.Entity.AttackPacket = null; } if (client.Entity.ContainsFlag(Update.Flags.Ride)) client.Entity.Vigor -= 1; client.Entity.PX = client.Entity.X; client.Entity.PY = client.Entity.Y; if ((byte)groundMovement.Direction > 7) groundMovement.Direction = (PhoenixProject.Game.Enums.ConquerAngle)((byte)groundMovement.Direction % 8); client.Entity.Move(groundMovement.Direction); if (groundMovement.GroundMovementType == GroundMovement.TwoCoordonates) client.Entity.Move(groundMovement.Direction); client.SendScreen(groundMovement, true); client.Screen.Reload(groundMovement); if (client.Entity.MapID == 1002) { if (client.Entity.X == 436 && client.Entity.Y == 444)//stig { if (!client.Entity.ContainsFlag(Update.Flags.Ghost)) { if (client.Entity.EntityFlag == PhoenixProject.Game.EntityFlag.Player && client.Entity.MaxHitpoints != client.Entity.Hitpoints) { SpellUse suse = new SpellUse(true); suse.Attacker = client.Entity.UID; suse.SpellID = 1195; suse.SpellLevel = 0; suse.X = 436; suse.Y = 444; uint Hp = (client.Entity.MaxHitpoints - client.Entity.Hitpoints); client.Entity.Hitpoints = client.Entity.MaxHitpoints; suse.Targets.Add(client.Entity.UID, Hp); client.SendScreen(suse, true); client.Send(new Message("Your HP Now : " + client.Entity.Hitpoints + "!", System.Drawing.Color.Red, Message.Talk)); } } } } if (client.Entity.MapID == 1005) { if (client.Entity.X == 42 && client.Entity.Y == 51)//stig { if (!client.Entity.ContainsFlag(Update.Flags.Stigma) && !client.Entity.ContainsFlag(Update.Flags.Ghost)) { SpellUse suse = new SpellUse(true); suse.Attacker = client.Entity.UID; suse.SpellID = 1095; suse.SpellLevel = 3; suse.X = 42; suse.Y = 51; suse.Targets.Add(client.Entity.UID, 0); client.Entity.AddFlag(Update.Flags.Stigma); client.Entity.StigmaStamp = Time32.Now; client.Entity.StigmaIncrease = 25; client.Entity.StigmaTime = 20; client.SendScreen(suse, true); if (client.Entity.EntityFlag == PhoenixProject.Game.EntityFlag.Player) client.Send(ServerBase.Constants.Stigma(25, 20)); } } else { if (client.Entity.X == 42 && client.Entity.Y == 48)//rev { if (client.Entity.ContainsFlag(Update.Flags.Ghost)) { SpellUse suse = new SpellUse(true); suse.Attacker = client.Entity.UID; suse.SpellID = 1050; suse.SpellLevel = 0; suse.X = 42; suse.Y = 48; suse.Targets.Add(client.Entity.UID, 0); client.SendScreen(suse, true); client.Entity.Action = PhoenixProject.Game.Enums.ConquerAction.None; client.ReviveStamp = Time32.Now; client.Attackable = false; client.Entity.TransformationID = 0; client.Entity.RemoveFlag(Update.Flags.Dead); client.Entity.RemoveFlag(Update.Flags.Ghost); client.Entity.Hitpoints = client.Entity.MaxHitpoints; client.Entity.Ressurect(); } } } } if (client.Entity.InteractionInProgress) { if (!client.Entity.InteractionSet) { if (ServerBase.Kernel.GamePool.ContainsKey(client.Entity.InteractionWith)) { Client.GameState ch = ServerBase.Kernel.GamePool[client.Entity.InteractionWith]; if (ch.Entity.InteractionInProgress && ch.Entity.InteractionWith == client.Entity.UID) { if (client.Entity.InteractionX == client.Entity.X && client.Entity.Y == client.Entity.InteractionY) { if (client.Entity.X == ch.Entity.X && client.Entity.Y == ch.Entity.Y) { Network.GamePackets.Attack atac = new Network.GamePackets.Attack(true); atac.Attacker = ch.Entity.UID; atac.Attacked = client.Entity.UID; atac.X = ch.Entity.X; atac.Y = ch.Entity.Y; atac.Damage = client.Entity.InteractionType; atac.AttackType = 47; ch.Send(atac); atac.AttackType = 49; atac.Attacker = client.Entity.UID; atac.Attacked = ch.Entity.UID; client.SendScreen(atac, true); atac.Attacker = ch.Entity.UID; atac.Attacked = client.Entity.UID; client.SendScreen(atac, true); } } } } } else { if (client.Entity.Body == 1003 || client.Entity.Body == 1004) { if (ServerBase.Kernel.GamePool.ContainsKey(client.Entity.InteractionWith)) { Client.GameState ch = ServerBase.Kernel.GamePool[client.Entity.InteractionWith]; ch.Entity.Facing = groundMovement.Direction; ch.Entity.Move(groundMovement.Direction); Network.GamePackets.Data general = new Network.GamePackets.Data(true); general.UID = ch.Entity.UID; general.wParam1 = ch.Entity.X; general.wParam2 = ch.Entity.Y; general.ID = 0x9c; ch.Send(general.ToArray()); ch.Screen.Reload(null); } } } } client.Entity.MapRegion = Region.Region.FindRegion((uint)client.Map.BaseID, client.Entity.X, client.Entity.Y); }
static void PlayerGroundMovment(GroundMovement groundMovement, Client.GameState client) { client.Entity.Action = Conquer_Online_Server.Game.Enums.ConquerAction.None; client.Attackable = true; client.Mining = false; if (client.Entity.ContainsFlag(Update.Flags.CastPray)) { client.Entity.RemoveFlag(Update.Flags.CastPray); foreach (var Client in client.Prayers) { if (Client.Entity.ContainsFlag(Update.Flags.Praying)) { Client.Entity.RemoveFlag(Update.Flags.Praying); } } client.Prayers.Clear(); } if (client.Entity.ContainsFlag(Update.Flags.Praying)) { client.Entity.RemoveFlag(Update.Flags.Praying); if (client.PrayLead != null) client.PrayLead.Prayers.Remove(client); client.PrayLead = null; } if (client.Entity.AttackPacket != null) { client.Entity.AttackPacket = null; } if (client.Entity.ContainsFlag(Update.Flags.Ride)) client.Entity.Vigor -= 1; client.Entity.PX = client.Entity.X; client.Entity.PY = client.Entity.Y; if ((byte)groundMovement.Direction > 7) groundMovement.Direction = (Conquer_Online_Server.Game.Enums.ConquerAngle)((byte)groundMovement.Direction % 8); client.Entity.Move(groundMovement.Direction); if (groundMovement.GroundMovementType == GroundMovement.TwoCoordonates) client.Entity.Move(groundMovement.Direction); client.SendScreen(groundMovement, true); client.Screen.Reload(groundMovement); if (client.Entity.InteractionInProgress) { if (!client.Entity.InteractionSet) { if (ServerBase.Kernel.GamePool.ContainsKey(client.Entity.InteractionWith)) { Client.GameState ch = ServerBase.Kernel.GamePool[client.Entity.InteractionWith]; if (ch.Entity.InteractionInProgress && ch.Entity.InteractionWith == client.Entity.UID) { if (client.Entity.InteractionX == client.Entity.X && client.Entity.Y == client.Entity.InteractionY) { if (client.Entity.X == ch.Entity.X && client.Entity.Y == ch.Entity.Y) { Network.GamePackets.Attack atac = new Network.GamePackets.Attack(true); atac.Attacker = ch.Entity.UID; atac.Attacked = client.Entity.UID; atac.X = ch.Entity.X; atac.Y = ch.Entity.Y; atac.Damage = client.Entity.InteractionType; atac.AttackType = 47; ch.Send(atac); atac.AttackType = 49; atac.Attacker = client.Entity.UID; atac.Attacked = ch.Entity.UID; client.SendScreen(atac, true); atac.Attacker = ch.Entity.UID; atac.Attacked = client.Entity.UID; client.SendScreen(atac, true); } } } } } else { if (client.Entity.Body == 1003 || client.Entity.Body == 1004) { if (ServerBase.Kernel.GamePool.ContainsKey(client.Entity.InteractionWith)) { Client.GameState ch = ServerBase.Kernel.GamePool[client.Entity.InteractionWith]; ch.Entity.Facing = groundMovement.Direction; ch.Entity.Move(groundMovement.Direction); Network.GamePackets.Data general = new Network.GamePackets.Data(true); general.UID = ch.Entity.UID; general.wParam1 = ch.Entity.X; general.wParam2 = ch.Entity.Y; general.ID = 0x9c; ch.Send(general.ToArray()); ch.Screen.Reload(null); } } } } }