Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / buff / effect / Eff_SwapWeapon.cs
@小李xl 小李xl on 22 Mar 2024 1 KB 道具逻辑片段更新参数描述
  1. using System.Collections.Generic;
  2. using System.Text.Json;
  3.  
  4. [EffectFragment(
  5. "SwapWeapon",
  6. "随机选择房间内的一个手持武器的敌人, 交换你们手中的武器"
  7. )]
  8. public class Eff_SwapWeapon : EffectFragment
  9. {
  10. public override void InitParam(JsonElement[] args)
  11. {
  12. }
  13.  
  14. public override void OnUse()
  15. {
  16. var list = new List<Enemy>();
  17. foreach (var enemy in Master.World.Enemy_InstanceList)
  18. {
  19. if (enemy.WeaponPack.ActiveItem != null)
  20. {
  21. list.Add(enemy);
  22.  
  23. }
  24. }
  25.  
  26. var targetEnemy = Utils.Random.RandomChoose(list);
  27. if (targetEnemy != null)
  28. {
  29. var enemyWeapon = targetEnemy.WeaponPack.ActiveItem;
  30. var selfWeapon = Role.WeaponPack.ActiveItem;
  31. targetEnemy.RemoveWeapon(enemyWeapon.PackageIndex);
  32. Role.RemoveWeapon(selfWeapon.PackageIndex);
  33.  
  34. targetEnemy.PickUpWeapon(selfWeapon);
  35. Role.PickUpWeapon(enemyWeapon);
  36. }
  37. }
  38.  
  39. public override bool OnCheckUse()
  40. {
  41. if (Role.World == null || Role.WeaponPack.ActiveItem == null)
  42. {
  43. return false;
  44. }
  45.  
  46. foreach (var enemy in Master.World.Enemy_InstanceList)
  47. {
  48. if (enemy.WeaponPack.ActiveItem != null)
  49. {
  50. return true;
  51. }
  52. }
  53.  
  54. return false;
  55. }
  56. }