XConquer

Rage Of War Trap

Aug 11th, 2018
210
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Bueno, esta es la Habilidad Rage Of War de Windwalker Meleè, primero que nada nos dirigimos a Handler.cs y buscamos
  2.  
  3. 1.- case 12930: y la reemplazamos por la que me aporto angel
  4.  #region RageofWar
  5.                                 case 12930:
  6.                                     {
  7.                                         if (CanUseSpell(spell, attacker.Owner))
  8.                                         {
  9.                                             PrepareSpell(spell, attacker.Owner);
  10.                                             Game.Attacking.InLineAlgorithm ila = new Game.Attacking.InLineAlgorithm(attacker.X,
  11.                                         X, attacker.Y, Y, (byte)spell.Range, InLineAlgorithm.Algorithm.DDA);
  12.                                             SpellUse suse = new SpellUse(true);
  13.                                             suse.Attacker = attacker.UID;
  14.                                             suse.SpellID = SpellID;
  15.                                             suse.SpellLevel = attacker.Owner.Spells[SpellID].Level;
  16.                                             suse.X = X;
  17.                                             suse.Y = Y;
  18.                                             attacker.Owner.SendScreen(suse, true);
  19.                                             bool first = false;
  20.                                             foreach (Interfaces.IMapObject _obj in attacker.Owner.Screen.Objects)
  21.                                             {
  22.                                                 if (_obj == null)
  23.                                                     continue;
  24.                                                 if (_obj.MapObjType == MapObjectType.Player)
  25.                                                 {
  26.                                                     attacked = _obj as Entity;
  27.                                                     if (ila.InLine(attacked.X, attacked.Y))
  28.                                                     {
  29.                                                         if (!CanAttack(attacker, attacked, spell, attack.AttackType == Attack.Melee))
  30.                                                             continue;
  31.                                                         if (Kernel.GetDistance(attacked.X, attacked.Y, attacker.X, attacker.Y) > 11) continue;
  32.                                                         if (!first)
  33.                                                         {
  34.                                                             var map = Kernel.Maps[attacker.MapID];
  35.                                                             Network.GamePackets.FloorItem flooritem = new Network.GamePackets.FloorItem(true);
  36.                                                             flooritem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
  37.                                                             while (map.Npcs.ContainsKey(flooritem.UID))
  38.                                                                 flooritem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
  39.                                                             flooritem.ItemID = FloorItem.RageOfWarTrap;
  40.                                                             flooritem.X = attacked.X;
  41.                                                             flooritem.MapID = map.ID;
  42.                                                             flooritem.Y = attacked.Y;
  43.                                                             flooritem.MapObjType = MapObjectType.FloorSpell;
  44.                                                             flooritem.Type = FloorItem.Effect;
  45.                                                             flooritem.mColor = 15;
  46.                                                             flooritem.OwnerUID = attacker.UID;
  47.                                                             flooritem.OnFloor = Time64.Now;
  48.                                                             flooritem.Owner = attacker.Owner;
  49.                                                             flooritem.Name2 = "RageofWarTrap";
  50.                                                             map.AddFloorItem(flooritem);
  51.                                                             attacker.Owner.SendScreenSpawn(flooritem, true);
  52.                                                             first = true;
  53.                                                         }
  54.                                                         uint damage = Game.Attacking.Calculate.Melee(attacker, attacked, ref attack, spell);
  55.                                                         {
  56.                                                             damage = (uint)(damage * 1.0);
  57.                                                             #region Stamina
  58.                                                             if (attacker.Stamina < 100)
  59.                                                             {
  60.                                                                 attacker.Stamina += 80;
  61.                                                                 attacker.Owner.Send("Obtienes un 80 % de stamina extra por usar habilidades SS/FB");
  62.                                                             }
  63.                                                             #endregion
  64.                                                         }
  65.                                                         attack.Damage = damage;
  66.                                                         ReceiveAttack(attacker, attacked, attack, damage, spell);
  67.  
  68.                                                         suse.AddTarget(attacked, damage, attack);
  69.                                                     }
  70.                                                 }
  71.                                                 else if (_obj.MapObjType == MapObjectType.Monster)
  72.                                                 {
  73.                                                     attacked = _obj as Entity;
  74.                                                     if (ila.InLine(attacked.X, attacked.Y))
  75.                                                     {
  76.                                                         if (!CanAttack(attacker, attacked, spell, attack.AttackType == Attack.Melee))
  77.                                                             continue;
  78.                                                         if (Kernel.GetDistance(attacked.X, attacked.Y, attacker.X, attacker.Y) > 11) continue;
  79.                                                         if (!first)
  80.                                                         {
  81.                                                             var map = Kernel.Maps[attacker.MapID];
  82.                                                             Network.GamePackets.FloorItem flooritem = new Network.GamePackets.FloorItem(true);
  83.                                                             flooritem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
  84.                                                             while (map.Npcs.ContainsKey(flooritem.UID))
  85.                                                                 flooritem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
  86.  
  87.                                                             flooritem.ItemID = FloorItem.RageOfWarTrap;
  88.                                                             flooritem.X = attacked.X;
  89.                                                             flooritem.MapID = map.ID;
  90.                                                             flooritem.Y = attacked.Y;
  91.                                                             flooritem.Type = FloorItem.Effect;
  92.                                                             flooritem.MapObjType = MapObjectType.FloorSpell;
  93.                                                             flooritem.mColor = 15;
  94.                                                             flooritem.OwnerUID = attacker.UID;
  95.                                                             flooritem.OnFloor = Time64.Now;
  96.                                                             flooritem.Owner = attacker.Owner;
  97.                                                             flooritem.Name2 = "RageofWarTrap";
  98.                                                             map.AddFloorItem(flooritem);
  99.                                                             attacker.Owner.SendScreenSpawn(flooritem, true);
  100.                                                             first = true;
  101.                                                         }
  102.  
  103.                                                         uint damage = (uint)(Game.Attacking.Calculate.Melee(attacker, attacked, ref attack) * (spell.Power - 30000) / 100);
  104.  
  105.  
  106.                                                         attack.Damage = damage;
  107.  
  108.                                                         ReceiveAttack(attacker, attacked, attack, damage, spell);
  109.  
  110.                                                         suse.AddTarget(attacked, damage, attack);
  111.                                                     }
  112.  
  113.  
  114.                                                 }
  115.                                                 else if (_obj.MapObjType == MapObjectType.SobNpc)
  116.                                                 {
  117.                                                     attackedsob = _obj as SobNpcSpawn;
  118.                                                     if (attackedsob == null) continue;
  119.                                                     if (ila.InLine(attackedsob.X, attackedsob.Y))
  120.                                                     {
  121.                                                         if (!CanAttack(attacker, attackedsob, spell))
  122.                                                             continue;
  123.                                                         if (Kernel.GetDistance(attackedsob.X, attackedsob.Y, attacker.X, attacker.Y) > 11) continue;
  124.                                                         if (!first)
  125.                                                         {
  126.                                                             var map = Kernel.Maps[attacker.MapID];
  127.                                                             Network.GamePackets.FloorItem flooritem = new Network.GamePackets.FloorItem(true);
  128.                                                             flooritem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
  129.                                                             while (map.Npcs.ContainsKey(flooritem.UID))
  130.                                                                 flooritem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
  131.                                                             flooritem.MapObjType = MapObjectType.FloorSpell;
  132.                                                             flooritem.ItemID = FloorItem.RageOfWarTrap;
  133.                                                             flooritem.X = attackedsob.X;
  134.                                                             flooritem.MapID = map.ID;
  135.                                                             flooritem.Y = attackedsob.Y;
  136.                                                             flooritem.Type = FloorItem.Effect;
  137.                                                             flooritem.mColor = 15;
  138.                                                             flooritem.OwnerUID = attacker.UID;
  139.                                                             flooritem.OnFloor = Time64.Now;
  140.                                                             flooritem.Owner = attacker.Owner;
  141.                                                             flooritem.Name2 = "RageofWarTrap";
  142.                                                             map.AddFloorItem(flooritem);
  143.                                                             attacker.Owner.SendScreenSpawn(flooritem, true);
  144.                                                             first = true;
  145.                                                         }
  146.  
  147.                                                         uint damage = (uint)(Game.Attacking.Calculate.Melee(attacker, attackedsob, ref attack) * (spell.Power - 30000) / 100);
  148.                                                         damage = (uint)((double)damage * 0.7);
  149.  
  150.                                                         attack.Damage = damage;
  151.  
  152.                                                         ReceiveAttack(attacker, attackedsob, attack, damage, spell);
  153.  
  154.                                                         suse.AddTarget(attackedsob, damage, attack);
  155.                                                     }
  156.  
  157.  
  158.                                                 }
  159.                                             }
  160.                                             attacker.Owner.SendScreen(suse, true);
  161.                                             attacker.AttackPacket = null;
  162.                                         }
  163.                                         break;
  164.                                     }
  165.                                 #endregion
  166.  
  167. ==================================================
  168.  
  169. 2.- En Handler.cs en el final o principio agregaran :
  170.  
  171. public static void RageOfWarTrap(FloorItem item)
  172.         {
  173.             var attack = new Attack(true);
  174.             var spell = Database.SpellTable.GetSpell(12930, item.Owner);
  175.             var suse = new MsgMagicEffect(true);
  176.             attack.Attacker = suse.Attacker = item.Owner.Player.UID;
  177.             attack.SpellID = suse.SpellID = spell.ID;
  178.             suse.X = item.X;
  179.             suse.Y = item.Y;
  180.             suse.SpellLevel = spell.Level;
  181.             suse.SpecialEffect = 1;
  182.             Sector sector = new Sector(item.X, item.Y, item.X, item.Y);
  183.             sector.Arrange(spell.Sector, 3);
  184.             Player attacked = null;
  185.             foreach (Interfaces.IMapObject _obj in item.Owner.Screen.Objects)
  186.             {
  187.                 if (_obj == null) continue;
  188.                 if (_obj.MapObjType == MapObjectType.Monster)
  189.                 {
  190.                     attacked = _obj as Player;
  191.                     if (sector.Inside(attacked.X, attacked.Y))
  192.                     {
  193.                         if (CanAttack(item.Owner.Player, attacked, spell, attack.InteractType == Attack.Melee))
  194.                         {
  195.                             attack.Effect = Attack.InteractEffects.None;
  196.                             uint damage = Game.Attacking.Calculate.Melee(item.Owner.Player, attacked, ref attack);
  197.  
  198.                             attack.Damage = damage / 2;
  199.                             suse.Effect = attack.Effect;
  200.                             ReceiveAttack(item.Owner.Player, attacked, attack, ref damage, spell);
  201.                             suse.AddTarget(attacked.UID, damage, attack);
  202.                         }
  203.                     }
  204.  
  205.                 }
  206.                 if (_obj.MapObjType == MapObjectType.Player)
  207.                 {
  208.                     attacked = _obj as Player;
  209.                     if (sector.Inside(attacked.X, attacked.Y))
  210.                     {
  211.                         if (CanAttack(item.Owner.Player, attacked, spell, attack.InteractType == Attack.Melee))
  212.                         {
  213.                             attack.Effect = Attack.InteractEffects.None;
  214.                             uint damage = Game.Attacking.Calculate.Melee(item.Owner.Player, attacked, ref attack);
  215.                            //Pezzi el Mejor de Todos Lejos
  216.                             attack.Damage = damage / 2;
  217.                             suse.Effect = attack.Effect;
  218.                             ReceiveAttack(item.Owner.Player, attacked, attack, ref damage, spell);
  219.                             suse.AddTarget(attacked.UID, damage, attack);
  220.                         }
  221.                     }
  222.  
  223.                 }
  224.             }
  225.             item.Owner.SendScreen(suse, true);
  226.         }
  227.  
  228. ===================================================================
  229.  
  230. 3.- En Screen.cs en void Alivemonsterscallback debajo de
  231. else if (obj.MapObjType == MapObjectType.Item)
  232.                     {
  233.                         FloorItem item = obj as FloorItem;
  234.                         if (item == null) continue;
  235.                         if (item.Type == FloorItem.Effect)
  236.                         {
  237.  
  238. Agregaran :
  239.  
  240. #region RageOfWar
  241.                             if (item.ItemID == FloorItem.RageOfWarTrap)
  242.                             {
  243.                                 if (item.Owner == client)
  244.                                 {
  245.                                     if (item.OnFloor.AddSeconds(2).Next(time: time))
  246.                                     {
  247.                                         var spell = Database.SpellTable.GetSpell(12930, client);
  248.                                         if (spell == null) return;
  249.                                         var attack = new Attack(true);
  250.                                         attack.Attacker = client.Player.UID;
  251.                                         attack.InteractType = Attack.Melee;
  252.  
  253.                                         foreach (var obj1 in client.Screen.Objects)
  254.                                         {
  255.                                             if (obj1 == null)
  256.                                                 continue;
  257.                                             var attacked = obj1 as Player;
  258.                                             if (attacked == null) continue;
  259.                                             if (Kernel.GetDistance(obj1.X, obj1.Y, obj.X, obj.Y) <= 3)
  260.                                             {
  261.                                                 if (Attacking.Handle.CanAttack(client.Player, attacked, spell, attack.InteractType == Attack.Melee))
  262.                                                 {
  263.                                                     Attacking.Handle.RageOfWarTrap(item);
  264.  
  265.                                                 }
  266.  
  267.                                             }
  268.                                         }
  269.                                     }
  270.                                 }
  271.                             }
  272.                             #endregion
  273.  
  274. ==============================================================
  275. 4.- En Screen.cs en ItemsCallBack tambien debajo de
  276.  
  277. if (obj.MapObjType == MapObjectType.Item)
  278.                     {
  279.                         FloorItem item = obj as FloorItem;
  280.                         if (item == null) continue;
  281.  
  282.                         if (item.Type == FloorItem.Effect)
  283.                         {
  284.  
  285. Agregaran :
  286.  
  287.  #region RageOfWar
  288.                             if (item.ItemID == FloorItem.RageOfWarTrap)
  289.                             {
  290.                                 if (item.OnFloor.AddSeconds(2).Next(time: time))
  291.                                 {
  292.                                     item.Type = Network.GamePackets.FloorItem.RemoveEffect;
  293.                                     client.Map.RemoveFloorItem(item);
  294.                                     client.RemoveScreenSpawn(item, true);
  295.                                 }
  296.                             }
  297. ===============================================================
  298.  
  299. 5.- En FloorItem.cs o MsgMapItem.cs si no lo tienen Agregaran :
  300. debajo de  public const ushort
  301. Pegan Esto
  302. RageOfWarTrap = 1500,
  303. ================================================================
  304.  
  305. TODOS LOS DERECHOS RESERVADOS (C) 2018 Pezzi Tomas
RAW Paste Data