Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / buff / effect / Eff_SwapWeapon.cs
@小李xl 小李xl on 5 Apr 2024 1 KB World中Enemy_List改为Role_List
  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<AiRole>();
  17. foreach (var role in Master.World.Role_InstanceList)
  18. {
  19. if (role is AiRole enemy && enemy.IsEnemy(Role) && enemy.WeaponPack.ActiveItem != null)
  20. {
  21. list.Add(enemy);
  22. }
  23. }
  24.  
  25. var targetEnemy = Utils.Random.RandomChoose(list);
  26. if (targetEnemy != null)
  27. {
  28. var enemyWeapon = targetEnemy.WeaponPack.ActiveItem;
  29. var selfWeapon = Role.WeaponPack.ActiveItem;
  30. targetEnemy.RemoveWeapon(enemyWeapon.PackageIndex);
  31. Role.RemoveWeapon(selfWeapon.PackageIndex);
  32.  
  33. targetEnemy.PickUpWeapon(selfWeapon);
  34. Role.PickUpWeapon(enemyWeapon);
  35. }
  36. }
  37.  
  38. public override bool OnCheckUse()
  39. {
  40. if (Role.World == null || Role.WeaponPack.ActiveItem == null)
  41. {
  42. return false;
  43. }
  44.  
  45. foreach (var role in Master.World.Role_InstanceList)
  46. {
  47. if (role is AiRole enemy && enemy.IsEnemy(Role) && enemy.WeaponPack.ActiveItem != null)
  48. {
  49. return true;
  50. }
  51. }
  52.  
  53. return false;
  54. }
  55. }