Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static void OnPlayer(Entity player, Entity target, Database.SpellInformation DatabaseSpell, out SpellUse.DamageClass Packet, ref Attack effa, bool StackOver = false, int MultipleDamage = 0)
- {
- Packet = new SpellUse.DamageClass(target.UID, 0u, Attack.AttackEffects.None);
- if (player.EntityFlag == EntityFlag.Player && target.EntityFlag == EntityFlag.Player)
- {
- if (target.BattlePower > player.BattlePower)
- {
- int PlayerBattlePower = target.BattlePower - player.BattlePower;
- #region PvP Con Mas Potencia
- if (target.ContainsFlag(Update.Flags.ShurikenVortex) || target.ContainsFlag3(Update.Flags3.ManiacDance))
- {
- Packet.Damage = Base.CalculateExtraAttack((uint)Packet.Damage, (uint)player.PhysicalDamageIncrease, (uint)target.PhysicalDamageDecrease);
- }
- else
- {
- bool update = false;
- double Damage = (int)Base.GetDamage(player.MaxAttack, player.MinAttack);
- Damage = (int)player.Owner.AjustAttack((uint)Damage);
- var rawDefense = target.Owner.AjustDefense;
- if (Damage > rawDefense)
- {
- Damage -= (int)rawDefense;
- }
- else
- {
- Damage = 1;
- }
- if (DatabaseSpell != null)
- {
- if (DatabaseSpell.ID == 12080)
- {
- if (Kernel.GetDistance(player.X, player.Y, target.X, target.Y) <= 3)
- {
- Damage = Base.MulDiv((int)Damage, (135- (PlayerBattlePower * 2)), 100);
- update = true;
- }
- }
- else if (DatabaseSpell.ID == 12290)
- {
- Damage = Base.MulDiv((int)Damage, 50, 100);
- update = true;
- }
- else if (DatabaseSpell.ID == 11050)
- {
- Damage = Base.MulDiv((int)Damage, 40, 100);
- update = true;
- }
- else if (DatabaseSpell.ID == 12860)
- {
- Damage = Base.MulDiv((int)Damage, 20, 100);
- update = true;
- }
- }
- if (!update)
- {
- if (DatabaseSpell != null)
- {
- Damage = Base.MulDiv((int)Damage, (int)(((DatabaseSpell != null) ? DatabaseSpell.Damage : 100) - (PlayerBattlePower * 2)), 100);
- }
- }
- bool onbreak = false;
- update = false;
- var effect = Game.Enums.PerfectionEffect.LuckyStrike;
- if (Database.PerfectionTable.Effects != null)
- {
- if (player.TotalPerfecto > target.TotalPerfecto)
- {
- if (Kernel.Rate(30))
- {
- if (effect == Game.Enums.PerfectionEffect.LuckyStrike || effect == Game.Enums.PerfectionEffect.AbsoluteLuck)
- {
- // Damage += Damage;
- Damage = Base.MulDiv((int)Damage, 200, 100);
- effa.Effect = Attack.AttackEffects.LuckyStrike;
- }
- }
- }
- }
- //
- //
- int strike = Math.Max(120, 150);
- if (player.CriticalStrike > 0u)
- {
- if (!update && Base.GetRefinery((uint)player.CriticalStrike / 100, (uint)target.Immunity / 100))
- {
- effa.Effect |= Attack.AttackEffects.CriticalStrike;
- Damage = Base.MulDiv((int)Damage, strike, 100);
- update = true;
- }
- }
- if (!update && player.Breaktrough > 0u)
- {
- if (Base.GetRefinery((uint)player.Breaktrough / 10, (uint)target.Counteraction / 10))
- {
- onbreak = true;
- effa.Effect |= Attack.AttackEffects.Break;
- }
- }
- if (!onbreak)
- Damage = Database.Disdain.UserAttackUser(player, target, (int)Damage);
- uint TortoisePercent = target.Owner.GemValues(Enums.Gem.NormalTortoiseGem);
- if (TortoisePercent > 0u) Damage -= Damage * Math.Min((int)TortoisePercent, 50) / 100;
- if (target.Reborn > 0) Damage = (int)Base.BigMulDiv((long)Damage, 7000, 10000);
- Damage -= (int)((long)Damage * (long)((ulong)target.ItemBless) / 100);
- Damage = (int)Base.CalculateExtraAttack((uint)Damage, player.PhysicalDamageIncrease, target.PhysicalDamageDecrease);
- Packet.Damage = (uint)Math.Max(1, Damage);
- if (target.ContainsFlag2(Update.Flags2.AzureShield))
- {
- if (Packet.Damage > (uint)target.AzureShieldDefence)
- {
- Base.CreateAzureDmg((uint)target.AzureShieldDefence, player, target);
- target.RemoveFlag2(Update.Flags2.AzureShield);
- Packet.Damage -= (uint)target.AzureShieldDefence;
- }
- else
- {
- target.AzureShieldDefence -= (ushort)Packet.Damage;
- Base.CreateAzureDmg(Packet.Damage, player, target);
- target.AzureShieldPacket();
- Packet.Damage = 1u;
- }
- }
- if (target.Owner.Equipment.ShieldID != 0u)
- {
- int num3 = (int)(target.Block / 100u);
- num3 += (int)((ulong)target.ShielDatabaselockDamage * (ulong)((long)num3) / 100uL);
- uint Change = (uint)Math.Min(70, num3 / 2);
- if (target.ContainsFlag3(Update.Flags3.ShieldBreak))
- {
- if (Base.Rate((int)((byte)Change)))
- {
- effa.Effect |= Attack.AttackEffects.Block;
- Packet.Damage = 0;
- }
- }
- }
- if (target.EntityFlag == EntityFlag.Player)
- {
- if (Kernel.Rate(20))
- {
- if (target.ContainsFlag3(Update.Flags3.DragonSwing))
- {
- _String str = new _String(true);
- str.UID = target.UID;
- str.TextsCount = 1;
- str.Type = _String.Effect;
- str.Texts.Add("poisonmiss");
- if (target.EntityFlag == EntityFlag.Player)
- target.Owner.SendScreen(str, true);
- Packet.Damage = 0;
- }
- }
- }
- if (target.MapID == 8877 || target.MapID == 7002 || target.MapID >= 4573 && target.MapID <= 4578)
- Packet.Damage = 1;
- }
- #endregion
- }
- else if (target.BattlePower == player.BattlePower)
- {
- #region PvP De Igual Potencia
- if (target.ContainsFlag(Update.Flags.ShurikenVortex) || target.ContainsFlag3(Update.Flags3.ManiacDance))
- {
- Packet.Damage = Base.CalculateExtraAttack((uint)Packet.Damage, (uint)player.PhysicalDamageIncrease, (uint)target.PhysicalDamageDecrease);
- }
- else
- {
- bool update = false;
- double Damage = (int)Base.GetDamage(player.MaxAttack, player.MinAttack);
- Damage = (int)player.Owner.AjustAttack((uint)Damage);
- var rawDefense = target.Owner.AjustDefense;
- if (Damage > rawDefense)
- {
- Damage -= (int)rawDefense;
- }
- else
- {
- Damage = 1;
- }
- if (DatabaseSpell != null)
- {
- if (DatabaseSpell.ID == 12080)
- {
- if (Kernel.GetDistance(player.X, player.Y, target.X, target.Y) <= 3)
- {
- Damage = Base.MulDiv((int)Damage, 135, 100);
- update = true;
- }
- }
- else if (DatabaseSpell.ID == 12290)
- {
- Damage = Base.MulDiv((int)Damage, 60, 100);
- update = true;
- }
- else if (DatabaseSpell.ID == 11050)
- {
- Damage = Base.MulDiv((int)Damage, 50, 100);
- update = true;
- }
- else if (DatabaseSpell.ID == 12860)
- {
- Damage = Base.MulDiv((int)Damage, 25, 100);
- update = true;
- }
- }
- if (!update)
- {
- if (DatabaseSpell != null)
- {
- Damage = Base.MulDiv((int)Damage, (int)((DatabaseSpell != null) ? DatabaseSpell.Damage : 100), 100);
- }
- }
- bool onbreak = false;
- update = false;
- var effect = Game.Enums.PerfectionEffect.LuckyStrike;
- if (Database.PerfectionTable.Effects != null)
- {
- if (player.TotalPerfecto > target.TotalPerfecto)
- {
- if (Kernel.Rate(30))
- {
- if (effect == Game.Enums.PerfectionEffect.LuckyStrike || effect == Game.Enums.PerfectionEffect.AbsoluteLuck)
- {
- // Damage += Damage;
- Damage = Base.MulDiv((int)Damage, 200, 100);
- effa.Effect = Attack.AttackEffects.LuckyStrike;
- }
- }
- }
- }
- //
- //
- int strike = Math.Max(120, 150);
- if (player.CriticalStrike > 0u)
- {
- if (!update && Base.GetRefinery((uint)player.CriticalStrike / 100, (uint)target.Immunity / 100))
- {
- effa.Effect |= Attack.AttackEffects.CriticalStrike;
- Damage = Base.MulDiv((int)Damage, strike, 100);
- update = true;
- }
- }
- if (!update && player.Breaktrough > 0u)
- {
- if (Base.GetRefinery((uint)player.Breaktrough / 10, (uint)target.Counteraction / 10))
- {
- onbreak = true;
- effa.Effect |= Attack.AttackEffects.Break;
- }
- }
- if (!onbreak)
- Damage = Database.Disdain.UserAttackUser(player, target, (int)Damage);
- uint TortoisePercent = target.Owner.GemValues(Enums.Gem.NormalTortoiseGem);
- if (TortoisePercent > 0u) Damage -= Damage * Math.Min((int)TortoisePercent, 50) / 100;
- if (target.Reborn > 0) Damage = (int)Base.BigMulDiv((long)Damage, 7000, 10000);
- Damage -= (int)((long)Damage * (long)((ulong)target.ItemBless) / 100);
- Damage = (int)Base.CalculateExtraAttack((uint)Damage, player.PhysicalDamageIncrease, target.PhysicalDamageDecrease);
- Packet.Damage = (uint)Math.Max(1, Damage);
- if (target.ContainsFlag2(Update.Flags2.AzureShield))
- {
- if (Packet.Damage > (uint)target.AzureShieldDefence)
- {
- Base.CreateAzureDmg((uint)target.AzureShieldDefence, player, target);
- target.RemoveFlag2(Update.Flags2.AzureShield);
- Packet.Damage -= (uint)target.AzureShieldDefence;
- }
- else
- {
- target.AzureShieldDefence -= (ushort)Packet.Damage;
- Base.CreateAzureDmg(Packet.Damage, player, target);
- target.AzureShieldPacket();
- Packet.Damage = 1u;
- }
- }
- if (target.Owner.Equipment.ShieldID != 0u)
- {
- int num3 = (int)(target.Block / 100u);
- num3 += (int)((ulong)target.ShielDatabaselockDamage * (ulong)((long)num3) / 100uL);
- uint Change = (uint)Math.Min(70, num3 / 2);
- if (target.ContainsFlag3(Update.Flags3.ShieldBreak))
- {
- if (Base.Rate((int)((byte)Change)))
- {
- effa.Effect |= Attack.AttackEffects.Block;
- Packet.Damage = 0;
- }
- }
- }
- if (target.EntityFlag == EntityFlag.Player)
- {
- if (Kernel.Rate(20))
- {
- if (target.ContainsFlag3(Update.Flags3.DragonSwing))
- {
- _String str = new _String(true);
- str.UID = target.UID;
- str.TextsCount = 1;
- str.Type = _String.Effect;
- str.Texts.Add("poisonmiss");
- if (target.EntityFlag == EntityFlag.Player)
- target.Owner.SendScreen(str, true);
- Packet.Damage = 0;
- }
- }
- }
- if (target.MapID == 8877 || target.MapID == 7002 || target.MapID >= 4573 && target.MapID <= 4578)
- Packet.Damage = 1;
- }
- #endregion
- }
- else
- {
- int PlayerBattlePower = player.BattlePower - target.BattlePower;
- #region PvP Con Menos Potencia
- if (target.ContainsFlag(Update.Flags.ShurikenVortex) || target.ContainsFlag3(Update.Flags3.ManiacDance))
- {
- Packet.Damage = Base.CalculateExtraAttack((uint)Packet.Damage, (uint)player.PhysicalDamageIncrease, (uint)target.PhysicalDamageDecrease);
- }
- else
- {
- bool update = false;
- double Damage = (int)Base.GetDamage(player.MaxAttack, player.MinAttack);
- Damage = (int)player.Owner.AjustAttack((uint)Damage);
- var rawDefense = target.Owner.AjustDefense;
- if (Damage > rawDefense)
- {
- Damage -= (int)rawDefense;
- }
- else
- {
- Damage = 1;
- }
- if (DatabaseSpell != null)
- {
- if (DatabaseSpell.ID == 12080)
- {
- if (Kernel.GetDistance(player.X, player.Y, target.X, target.Y) <= 3)
- {
- Damage = Base.MulDiv((int)Damage, (135 + (PlayerBattlePower * 4)), 100);
- update = true;
- }
- }
- else if (DatabaseSpell.ID == 12290)
- {
- Damage = Base.MulDiv((int)Damage, 60, 100);
- update = true;
- }
- else if (DatabaseSpell.ID == 11050)
- {
- Damage = Base.MulDiv((int)Damage, 50, 100);
- update = true;
- }
- else if (DatabaseSpell.ID == 12860)
- {
- Damage = Base.MulDiv((int)Damage, 25, 100);
- update = true;
- }
- }
- if (!update)
- {
- if (DatabaseSpell != null)
- {
- Damage = Base.MulDiv((int)Damage, (int)(((DatabaseSpell != null) ? DatabaseSpell.Damage : 100) + (PlayerBattlePower * 4)), 100);
- }
- }
- bool onbreak = false;
- update = false;
- var effect = Game.Enums.PerfectionEffect.LuckyStrike;
- if (Database.PerfectionTable.Effects != null)
- {
- if (player.TotalPerfecto > target.TotalPerfecto)
- {
- if (Kernel.Rate(30))
- {
- if (effect == Game.Enums.PerfectionEffect.LuckyStrike || effect == Game.Enums.PerfectionEffect.AbsoluteLuck)
- {
- // Damage += Damage;
- Damage = Base.MulDiv((int)Damage, 200, 100);
- effa.Effect = Attack.AttackEffects.LuckyStrike;
- }
- }
- }
- }
- //
- //
- int strike = Math.Max(120, 150);
- if (player.CriticalStrike > 0u)
- {
- if (!update && Base.GetRefinery((uint)player.CriticalStrike / 100, (uint)target.Immunity / 100))
- {
- effa.Effect |= Attack.AttackEffects.CriticalStrike;
- Damage = Base.MulDiv((int)Damage, strike, 100);
- update = true;
- }
- }
- if (!update && player.Breaktrough > 0u)
- {
- if (Base.GetRefinery((uint)player.Breaktrough / 10, (uint)target.Counteraction / 10))
- {
- onbreak = true;
- effa.Effect |= Attack.AttackEffects.Break;
- }
- }
- if (!onbreak)
- Damage = Database.Disdain.UserAttackUser(player, target, (int)Damage);
- uint TortoisePercent = target.Owner.GemValues(Enums.Gem.NormalTortoiseGem);
- if (TortoisePercent > 0u) Damage -= Damage * Math.Min((int)TortoisePercent, 50) / 100;
- if (target.Reborn > 0) Damage = (int)Base.BigMulDiv((long)Damage, 7000, 10000);
- Damage -= (int)((long)Damage * (long)((ulong)target.ItemBless) / 100);
- Damage = (int)Base.CalculateExtraAttack((uint)Damage, player.PhysicalDamageIncrease, target.PhysicalDamageDecrease);
- Packet.Damage = (uint)Math.Max(1, Damage);
- if (target.ContainsFlag2(Update.Flags2.AzureShield))
- {
- if (Packet.Damage > (uint)target.AzureShieldDefence)
- {
- Base.CreateAzureDmg((uint)target.AzureShieldDefence, player, target);
- target.RemoveFlag2(Update.Flags2.AzureShield);
- Packet.Damage -= (uint)target.AzureShieldDefence;
- }
- else
- {
- target.AzureShieldDefence -= (ushort)Packet.Damage;
- Base.CreateAzureDmg(Packet.Damage, player, target);
- target.AzureShieldPacket();
- Packet.Damage = 1u;
- }
- }
- if (target.Owner.Equipment.ShieldID != 0u)
- {
- int num3 = (int)(target.Block / 100u);
- num3 += (int)((ulong)target.ShielDatabaselockDamage * (ulong)((long)num3) / 100uL);
- uint Change = (uint)Math.Min(70, num3 / 2);
- if (target.ContainsFlag3(Update.Flags3.ShieldBreak))
- {
- if (Base.Rate((int)((byte)Change)))
- {
- effa.Effect |= Attack.AttackEffects.Block;
- Packet.Damage = 0;
- }
- }
- }
- if (target.EntityFlag == EntityFlag.Player)
- {
- if (Kernel.Rate(20))
- {
- if (target.ContainsFlag3(Update.Flags3.DragonSwing))
- {
- _String str = new _String(true);
- str.UID = target.UID;
- str.TextsCount = 1;
- str.Type = _String.Effect;
- str.Texts.Add("poisonmiss");
- if (target.EntityFlag == EntityFlag.Player)
- target.Owner.SendScreen(str, true);
- Packet.Damage = 0;
- }
- }
- }
- if (target.MapID == 8877 || target.MapID == 7002 || target.MapID >= 4573 && target.MapID <= 4578)
- Packet.Damage = 1;
- }
- #endregion
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement