Advertisement
XConquer

OnPlayer

Dec 29th, 2020
1,433
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 25.48 KB | None | 0 0
  1.   public static void OnPlayer(Entity player, Entity target, Database.SpellInformation DatabaseSpell, out SpellUse.DamageClass Packet, ref Attack effa, bool StackOver = false, int MultipleDamage = 0)
  2.         {
  3.             Packet = new SpellUse.DamageClass(target.UID, 0u, Attack.AttackEffects.None);
  4.             if (player.EntityFlag == EntityFlag.Player && target.EntityFlag == EntityFlag.Player)
  5.             {
  6.  
  7.                 if (target.BattlePower > player.BattlePower)
  8.                 {
  9.                     int PlayerBattlePower = target.BattlePower - player.BattlePower;
  10.                     #region PvP Con Mas Potencia
  11.                     if (target.ContainsFlag(Update.Flags.ShurikenVortex) || target.ContainsFlag3(Update.Flags3.ManiacDance))
  12.                     {
  13.                         Packet.Damage = Base.CalculateExtraAttack((uint)Packet.Damage, (uint)player.PhysicalDamageIncrease, (uint)target.PhysicalDamageDecrease);
  14.                     }
  15.                     else
  16.                     {
  17.                         bool update = false;
  18.                         double Damage = (int)Base.GetDamage(player.MaxAttack, player.MinAttack);
  19.                         Damage = (int)player.Owner.AjustAttack((uint)Damage);
  20.                         var rawDefense = target.Owner.AjustDefense;
  21.                         if (Damage > rawDefense)
  22.                         {
  23.                             Damage -= (int)rawDefense;
  24.                         }
  25.                         else
  26.                         {
  27.                             Damage = 1;
  28.                         }
  29.                         if (DatabaseSpell != null)
  30.                         {
  31.                             if (DatabaseSpell.ID == 12080)
  32.                             {
  33.                                 if (Kernel.GetDistance(player.X, player.Y, target.X, target.Y) <= 3)
  34.                                 {
  35.                                     Damage = Base.MulDiv((int)Damage, (135- (PlayerBattlePower * 2)), 100);
  36.                                     update = true;
  37.                                 }
  38.                             }
  39.                             else if (DatabaseSpell.ID == 12290)
  40.                             {
  41.                                 Damage = Base.MulDiv((int)Damage, 50, 100);
  42.                                 update = true;
  43.                             }
  44.                             else if (DatabaseSpell.ID == 11050)
  45.                             {
  46.                                 Damage = Base.MulDiv((int)Damage, 40, 100);
  47.                                 update = true;
  48.                             }
  49.                             else if (DatabaseSpell.ID == 12860)
  50.                             {
  51.                                 Damage = Base.MulDiv((int)Damage, 20, 100);
  52.                                 update = true;
  53.                             }
  54.                         }
  55.                         if (!update)
  56.                         {
  57.                             if (DatabaseSpell != null)
  58.                             {
  59.                                 Damage = Base.MulDiv((int)Damage, (int)(((DatabaseSpell != null) ? DatabaseSpell.Damage : 100) - (PlayerBattlePower * 2)), 100);
  60.                             }
  61.                         }
  62.                         bool onbreak = false;
  63.                         update = false;
  64.                         var effect = Game.Enums.PerfectionEffect.LuckyStrike;
  65.                         if (Database.PerfectionTable.Effects != null)
  66.                         {
  67.                             if (player.TotalPerfecto > target.TotalPerfecto)
  68.                             {
  69.                                 if (Kernel.Rate(30))
  70.                                 {
  71.                                     if (effect == Game.Enums.PerfectionEffect.LuckyStrike || effect == Game.Enums.PerfectionEffect.AbsoluteLuck)
  72.                                     {
  73.                                         // Damage += Damage;
  74.                                         Damage = Base.MulDiv((int)Damage, 200, 100);
  75.                                         effa.Effect = Attack.AttackEffects.LuckyStrike;
  76.                                     }
  77.                                 }
  78.                             }
  79.                         }
  80.                         //
  81.                        
  82.                         //
  83.                         int strike = Math.Max(120, 150);
  84.                         if (player.CriticalStrike > 0u)
  85.                         {
  86.                             if (!update && Base.GetRefinery((uint)player.CriticalStrike / 100, (uint)target.Immunity / 100))
  87.                             {
  88.                                 effa.Effect |= Attack.AttackEffects.CriticalStrike;
  89.                                 Damage = Base.MulDiv((int)Damage, strike, 100);
  90.                                 update = true;
  91.                             }
  92.                         }
  93.                         if (!update && player.Breaktrough > 0u)
  94.                         {
  95.                             if (Base.GetRefinery((uint)player.Breaktrough / 10, (uint)target.Counteraction / 10))
  96.                             {
  97.                                 onbreak = true;
  98.                                 effa.Effect |= Attack.AttackEffects.Break;
  99.                             }
  100.                         }
  101.  
  102.                        if (!onbreak)
  103.                             Damage = Database.Disdain.UserAttackUser(player, target, (int)Damage);
  104.                         uint TortoisePercent = target.Owner.GemValues(Enums.Gem.NormalTortoiseGem);
  105.                         if (TortoisePercent > 0u) Damage -= Damage * Math.Min((int)TortoisePercent, 50) / 100;
  106.                         if (target.Reborn > 0) Damage = (int)Base.BigMulDiv((long)Damage, 7000, 10000);
  107.                         Damage -= (int)((long)Damage * (long)((ulong)target.ItemBless) / 100);
  108.                         Damage = (int)Base.CalculateExtraAttack((uint)Damage, player.PhysicalDamageIncrease, target.PhysicalDamageDecrease);
  109.                         Packet.Damage = (uint)Math.Max(1, Damage);
  110.                         if (target.ContainsFlag2(Update.Flags2.AzureShield))
  111.                         {
  112.                             if (Packet.Damage > (uint)target.AzureShieldDefence)
  113.                             {
  114.                                 Base.CreateAzureDmg((uint)target.AzureShieldDefence, player, target);
  115.                                 target.RemoveFlag2(Update.Flags2.AzureShield);
  116.                                 Packet.Damage -= (uint)target.AzureShieldDefence;
  117.                             }
  118.                             else
  119.                             {
  120.                                 target.AzureShieldDefence -= (ushort)Packet.Damage;
  121.                                 Base.CreateAzureDmg(Packet.Damage, player, target);
  122.                                 target.AzureShieldPacket();
  123.                                 Packet.Damage = 1u;
  124.                             }
  125.                         }
  126.                         if (target.Owner.Equipment.ShieldID != 0u)
  127.                         {
  128.                             int num3 = (int)(target.Block / 100u);
  129.                             num3 += (int)((ulong)target.ShielDatabaselockDamage * (ulong)((long)num3) / 100uL);
  130.                             uint Change = (uint)Math.Min(70, num3 / 2);
  131.                             if (target.ContainsFlag3(Update.Flags3.ShieldBreak))
  132.                             {
  133.                                 if (Base.Rate((int)((byte)Change)))
  134.                                 {
  135.                                     effa.Effect |= Attack.AttackEffects.Block;
  136.                                     Packet.Damage = 0;
  137.                                 }
  138.                             }
  139.                         }
  140.                         if (target.EntityFlag == EntityFlag.Player)
  141.                         {
  142.                             if (Kernel.Rate(20))
  143.                             {
  144.                                 if (target.ContainsFlag3(Update.Flags3.DragonSwing))
  145.                                 {
  146.                                     _String str = new _String(true);
  147.                                     str.UID = target.UID;
  148.                                     str.TextsCount = 1;
  149.                                     str.Type = _String.Effect;
  150.                                     str.Texts.Add("poisonmiss");
  151.                                     if (target.EntityFlag == EntityFlag.Player)
  152.                                         target.Owner.SendScreen(str, true);
  153.                                     Packet.Damage = 0;
  154.                                 }
  155.                             }
  156.                         }
  157.                         if (target.MapID == 8877 || target.MapID == 7002 || target.MapID >= 4573 && target.MapID <= 4578)
  158.                             Packet.Damage = 1;
  159.                     }
  160.                     #endregion
  161.                 }
  162.  
  163.  
  164.                 else if (target.BattlePower == player.BattlePower)
  165.                 {
  166.                     #region PvP De Igual Potencia
  167.                     if (target.ContainsFlag(Update.Flags.ShurikenVortex) || target.ContainsFlag3(Update.Flags3.ManiacDance))
  168.                     {
  169.                         Packet.Damage = Base.CalculateExtraAttack((uint)Packet.Damage, (uint)player.PhysicalDamageIncrease, (uint)target.PhysicalDamageDecrease);
  170.                     }
  171.                     else
  172.                     {
  173.                         bool update = false;
  174.                         double Damage = (int)Base.GetDamage(player.MaxAttack, player.MinAttack);
  175.                         Damage = (int)player.Owner.AjustAttack((uint)Damage);
  176.                         var rawDefense = target.Owner.AjustDefense;
  177.                         if (Damage > rawDefense)
  178.                         {
  179.                             Damage -= (int)rawDefense;
  180.                         }
  181.                         else
  182.                         {
  183.                             Damage = 1;
  184.                         }
  185.                         if (DatabaseSpell != null)
  186.                         {
  187.                             if (DatabaseSpell.ID == 12080)
  188.                             {
  189.                                 if (Kernel.GetDistance(player.X, player.Y, target.X, target.Y) <= 3)
  190.                                 {
  191.                                     Damage = Base.MulDiv((int)Damage, 135, 100);
  192.                                     update = true;
  193.                                 }
  194.                             }
  195.                             else if (DatabaseSpell.ID == 12290)
  196.                             {
  197.                                 Damage = Base.MulDiv((int)Damage, 60, 100);
  198.                                 update = true;
  199.                             }
  200.                             else if (DatabaseSpell.ID == 11050)
  201.                             {
  202.                                 Damage = Base.MulDiv((int)Damage, 50, 100);
  203.                                 update = true;
  204.                             }
  205.                             else if (DatabaseSpell.ID == 12860)
  206.                             {
  207.                                 Damage = Base.MulDiv((int)Damage, 25, 100);
  208.                                 update = true;
  209.                             }
  210.                         }
  211.                         if (!update)
  212.                         {
  213.                             if (DatabaseSpell != null)
  214.                             {
  215.                                 Damage = Base.MulDiv((int)Damage, (int)((DatabaseSpell != null) ? DatabaseSpell.Damage : 100), 100);
  216.                             }
  217.                         }
  218.                         bool onbreak = false;
  219.                         update = false;
  220.                         var effect = Game.Enums.PerfectionEffect.LuckyStrike;
  221.                         if (Database.PerfectionTable.Effects != null)
  222.                         {
  223.                             if (player.TotalPerfecto > target.TotalPerfecto)
  224.                             {
  225.                                 if (Kernel.Rate(30))
  226.                                 {
  227.                                     if (effect == Game.Enums.PerfectionEffect.LuckyStrike || effect == Game.Enums.PerfectionEffect.AbsoluteLuck)
  228.                                     {
  229.                                         // Damage += Damage;
  230.                                         Damage = Base.MulDiv((int)Damage, 200, 100);
  231.                                         effa.Effect = Attack.AttackEffects.LuckyStrike;
  232.                                     }
  233.                                 }
  234.                             }
  235.                         }
  236.                         //
  237.                        
  238.                         //
  239.                         int strike = Math.Max(120, 150);
  240.                         if (player.CriticalStrike > 0u)
  241.                         {
  242.                             if (!update && Base.GetRefinery((uint)player.CriticalStrike / 100, (uint)target.Immunity / 100))
  243.                             {
  244.                                 effa.Effect |= Attack.AttackEffects.CriticalStrike;
  245.                                 Damage = Base.MulDiv((int)Damage, strike, 100);
  246.                                 update = true;
  247.                             }
  248.                         }
  249.                         if (!update && player.Breaktrough > 0u)
  250.                         {
  251.                             if (Base.GetRefinery((uint)player.Breaktrough / 10, (uint)target.Counteraction / 10))
  252.                             {
  253.                                 onbreak = true;
  254.                                 effa.Effect |= Attack.AttackEffects.Break;
  255.                             }
  256.                         }
  257.  
  258.                         if (!onbreak)
  259.                             Damage = Database.Disdain.UserAttackUser(player, target, (int)Damage);
  260.                         uint TortoisePercent = target.Owner.GemValues(Enums.Gem.NormalTortoiseGem);
  261.                         if (TortoisePercent > 0u) Damage -= Damage * Math.Min((int)TortoisePercent, 50) / 100;
  262.                         if (target.Reborn > 0) Damage = (int)Base.BigMulDiv((long)Damage, 7000, 10000);
  263.                         Damage -= (int)((long)Damage * (long)((ulong)target.ItemBless) / 100);
  264.                         Damage = (int)Base.CalculateExtraAttack((uint)Damage, player.PhysicalDamageIncrease, target.PhysicalDamageDecrease);
  265.                         Packet.Damage = (uint)Math.Max(1, Damage);
  266.                         if (target.ContainsFlag2(Update.Flags2.AzureShield))
  267.                         {
  268.                             if (Packet.Damage > (uint)target.AzureShieldDefence)
  269.                             {
  270.                                 Base.CreateAzureDmg((uint)target.AzureShieldDefence, player, target);
  271.                                 target.RemoveFlag2(Update.Flags2.AzureShield);
  272.                                 Packet.Damage -= (uint)target.AzureShieldDefence;
  273.                             }
  274.                             else
  275.                             {
  276.                                 target.AzureShieldDefence -= (ushort)Packet.Damage;
  277.                                 Base.CreateAzureDmg(Packet.Damage, player, target);
  278.                                 target.AzureShieldPacket();
  279.                                 Packet.Damage = 1u;
  280.                             }
  281.                         }
  282.                         if (target.Owner.Equipment.ShieldID != 0u)
  283.                         {
  284.                             int num3 = (int)(target.Block / 100u);
  285.                             num3 += (int)((ulong)target.ShielDatabaselockDamage * (ulong)((long)num3) / 100uL);
  286.                             uint Change = (uint)Math.Min(70, num3 / 2);
  287.                             if (target.ContainsFlag3(Update.Flags3.ShieldBreak))
  288.                             {
  289.                                 if (Base.Rate((int)((byte)Change)))
  290.                                 {
  291.                                     effa.Effect |= Attack.AttackEffects.Block;
  292.                                     Packet.Damage = 0;
  293.                                 }
  294.                             }
  295.                         }
  296.                         if (target.EntityFlag == EntityFlag.Player)
  297.                         {
  298.                             if (Kernel.Rate(20))
  299.                             {
  300.                                 if (target.ContainsFlag3(Update.Flags3.DragonSwing))
  301.                                 {
  302.                                     _String str = new _String(true);
  303.                                     str.UID = target.UID;
  304.                                     str.TextsCount = 1;
  305.                                     str.Type = _String.Effect;
  306.                                     str.Texts.Add("poisonmiss");
  307.                                     if (target.EntityFlag == EntityFlag.Player)
  308.                                         target.Owner.SendScreen(str, true);
  309.                                     Packet.Damage = 0;
  310.                                 }
  311.                             }
  312.                         }
  313.                         if (target.MapID == 8877 || target.MapID == 7002 || target.MapID >= 4573 && target.MapID <= 4578)
  314.                             Packet.Damage = 1;
  315.                     }
  316.                     #endregion
  317.                 }
  318.  
  319.                 else
  320.                 {
  321.                     int PlayerBattlePower = player.BattlePower - target.BattlePower;
  322.                     #region PvP Con Menos Potencia
  323.                     if (target.ContainsFlag(Update.Flags.ShurikenVortex) || target.ContainsFlag3(Update.Flags3.ManiacDance))
  324.                     {
  325.                         Packet.Damage = Base.CalculateExtraAttack((uint)Packet.Damage, (uint)player.PhysicalDamageIncrease, (uint)target.PhysicalDamageDecrease);
  326.                     }
  327.                     else
  328.                     {
  329.                         bool update = false;
  330.                         double Damage = (int)Base.GetDamage(player.MaxAttack, player.MinAttack);
  331.                         Damage = (int)player.Owner.AjustAttack((uint)Damage);
  332.                         var rawDefense = target.Owner.AjustDefense;
  333.                         if (Damage > rawDefense)
  334.                         {
  335.                             Damage -= (int)rawDefense;
  336.                         }
  337.                         else
  338.                         {
  339.                             Damage = 1;
  340.                         }
  341.                         if (DatabaseSpell != null)
  342.                         {
  343.                             if (DatabaseSpell.ID == 12080)
  344.                             {
  345.                                 if (Kernel.GetDistance(player.X, player.Y, target.X, target.Y) <= 3)
  346.                                 {
  347.                                     Damage = Base.MulDiv((int)Damage, (135 + (PlayerBattlePower * 4)), 100);
  348.                                     update = true;
  349.                                 }
  350.                             }
  351.                             else if (DatabaseSpell.ID == 12290)
  352.                             {
  353.                                 Damage = Base.MulDiv((int)Damage, 60, 100);
  354.                                 update = true;
  355.                             }
  356.                             else if (DatabaseSpell.ID == 11050)
  357.                             {
  358.                                 Damage = Base.MulDiv((int)Damage, 50, 100);
  359.                                 update = true;
  360.                             }
  361.                             else if (DatabaseSpell.ID == 12860)
  362.                             {
  363.                                 Damage = Base.MulDiv((int)Damage, 25, 100);
  364.                                 update = true;
  365.                             }
  366.                         }
  367.                         if (!update)
  368.                         {
  369.                             if (DatabaseSpell != null)
  370.                             {
  371.                                 Damage = Base.MulDiv((int)Damage, (int)(((DatabaseSpell != null) ? DatabaseSpell.Damage : 100) + (PlayerBattlePower * 4)), 100);
  372.                             }
  373.                         }
  374.                         bool onbreak = false;
  375.                         update = false;
  376.                         var effect = Game.Enums.PerfectionEffect.LuckyStrike;
  377.                         if (Database.PerfectionTable.Effects != null)
  378.                         {
  379.                             if (player.TotalPerfecto > target.TotalPerfecto)
  380.                             {
  381.                                 if (Kernel.Rate(30))
  382.                                 {
  383.                                     if (effect == Game.Enums.PerfectionEffect.LuckyStrike || effect == Game.Enums.PerfectionEffect.AbsoluteLuck)
  384.                                     {
  385.                                         // Damage += Damage;
  386.                                         Damage = Base.MulDiv((int)Damage, 200, 100);
  387.                                         effa.Effect = Attack.AttackEffects.LuckyStrike;
  388.                                     }
  389.                                 }
  390.                             }
  391.                         }
  392.                         //
  393.                    
  394.                         //
  395.                         int strike = Math.Max(120, 150);
  396.                         if (player.CriticalStrike > 0u)
  397.                         {
  398.                             if (!update && Base.GetRefinery((uint)player.CriticalStrike / 100, (uint)target.Immunity / 100))
  399.                             {
  400.                                 effa.Effect |= Attack.AttackEffects.CriticalStrike;
  401.                                 Damage = Base.MulDiv((int)Damage, strike, 100);
  402.                                 update = true;
  403.                             }
  404.                         }
  405.                         if (!update && player.Breaktrough > 0u)
  406.                         {
  407.                             if (Base.GetRefinery((uint)player.Breaktrough / 10, (uint)target.Counteraction / 10))
  408.                             {
  409.                                 onbreak = true;
  410.                                 effa.Effect |= Attack.AttackEffects.Break;
  411.                             }
  412.                         }
  413.  
  414.                         if (!onbreak)
  415.                             Damage = Database.Disdain.UserAttackUser(player, target, (int)Damage);
  416.                         uint TortoisePercent = target.Owner.GemValues(Enums.Gem.NormalTortoiseGem);
  417.                         if (TortoisePercent > 0u) Damage -= Damage * Math.Min((int)TortoisePercent, 50) / 100;
  418.                         if (target.Reborn > 0) Damage = (int)Base.BigMulDiv((long)Damage, 7000, 10000);
  419.                         Damage -= (int)((long)Damage * (long)((ulong)target.ItemBless) / 100);
  420.                         Damage = (int)Base.CalculateExtraAttack((uint)Damage, player.PhysicalDamageIncrease, target.PhysicalDamageDecrease);
  421.                         Packet.Damage = (uint)Math.Max(1, Damage);
  422.                         if (target.ContainsFlag2(Update.Flags2.AzureShield))
  423.                         {
  424.                             if (Packet.Damage > (uint)target.AzureShieldDefence)
  425.                             {
  426.                                 Base.CreateAzureDmg((uint)target.AzureShieldDefence, player, target);
  427.                                 target.RemoveFlag2(Update.Flags2.AzureShield);
  428.                                 Packet.Damage -= (uint)target.AzureShieldDefence;
  429.                             }
  430.                             else
  431.                             {
  432.                                 target.AzureShieldDefence -= (ushort)Packet.Damage;
  433.                                 Base.CreateAzureDmg(Packet.Damage, player, target);
  434.                                 target.AzureShieldPacket();
  435.                                 Packet.Damage = 1u;
  436.                             }
  437.                         }
  438.                         if (target.Owner.Equipment.ShieldID != 0u)
  439.                         {
  440.                             int num3 = (int)(target.Block / 100u);
  441.                             num3 += (int)((ulong)target.ShielDatabaselockDamage * (ulong)((long)num3) / 100uL);
  442.                             uint Change = (uint)Math.Min(70, num3 / 2);
  443.                             if (target.ContainsFlag3(Update.Flags3.ShieldBreak))
  444.                             {
  445.                                 if (Base.Rate((int)((byte)Change)))
  446.                                 {
  447.                                     effa.Effect |= Attack.AttackEffects.Block;
  448.                                     Packet.Damage = 0;
  449.                                 }
  450.                             }
  451.                         }
  452.                         if (target.EntityFlag == EntityFlag.Player)
  453.                         {
  454.                             if (Kernel.Rate(20))
  455.                             {
  456.                                 if (target.ContainsFlag3(Update.Flags3.DragonSwing))
  457.                                 {
  458.                                     _String str = new _String(true);
  459.                                     str.UID = target.UID;
  460.                                     str.TextsCount = 1;
  461.                                     str.Type = _String.Effect;
  462.                                     str.Texts.Add("poisonmiss");
  463.                                     if (target.EntityFlag == EntityFlag.Player)
  464.                                         target.Owner.SendScreen(str, true);
  465.                                     Packet.Damage = 0;
  466.                                 }
  467.                             }
  468.                         }
  469.                         if (target.MapID == 8877 || target.MapID == 7002 || target.MapID >= 4573 && target.MapID <= 4578)
  470.                             Packet.Damage = 1;
  471.                     }
  472.                         #endregion
  473.                 }
  474.  
  475.             }
  476.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement