设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 332|回复: 0
打印 上一主题 下一主题

[原创发布] 敌人阵营互斗系统

[复制链接]

Lv3.寻梦者

梦石
1
星屑
1174
在线时间
58 小时
注册时间
2023-9-8
帖子
35
跳转到指定楼层
1
发表于 2026-4-24 00:45:34 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
RUBY 代码复制
  1. #==============================================================================
  2. # ★ 敌人阵营互斗系统 - Camp Battle System
  3. #------------------------------------------------------------------------------
  4. #   作者:ruigi
  5. #  在敌人备注栏写入 <阵营: 文字> 即可定义该敌人的阵营。
  6. #   - 不同阵营的敌人会优先互相攻击。
  7. #   - 当场上仅剩单一阵营时,该阵营的敌人恢复攻击玩家。
  8. #   - 无备注的敌人视为同一默认阵营,彼此不攻击。
  9. #==============================================================================
  10.  
  11. #==============================================================================
  12. # ■ Game_Enemy
  13. #==============================================================================
  14. class Game_Enemy < Game_Battler
  15.   #--------------------------------------------------------------------------
  16.   # ● 获取阵营(缓存)
  17.   #--------------------------------------------------------------------------
  18.   def camp
  19.     if @camp.nil?
  20.       @camp = ""
  21.       if enemy.note =~ /<阵营:\s*(.+)>/i
  22.         @camp = $1.to_s.strip
  23.       end
  24.     end
  25.     @camp
  26.   end
  27. end
  28.  
  29. #==============================================================================
  30. # ■ Game_Action
  31. #==============================================================================
  32. class Game_Action
  33.   #--------------------------------------------------------------------------
  34.   # ● 别名:生成目标(核心修改)
  35.   #--------------------------------------------------------------------------
  36.   alias camp_system_make_targets make_targets
  37.   def make_targets
  38.     # 仅当行动者是敌人时应用特殊规则
  39.     if subject.is_a?(Game_Enemy)
  40.       # 针对对手的技能(攻击、有害状态等)
  41.       if item.for_opponent?
  42.         # 获取活着的敌对阵营敌人
  43.         enemy_targets = $game_troop.alive_members.select { |e| e.camp != subject.camp }
  44.         if enemy_targets.empty?
  45.           # 没有敌对阵营 → 攻击玩家队伍
  46.           return make_targets_default
  47.         else
  48.           # 有敌对阵营 → 选择目标
  49.           return make_enemy_vs_enemy_targets(enemy_targets)
  50.         end
  51.       # 针对友方的技能(治疗、增益等)
  52.       elsif item.for_friend?
  53.         # 只选择同阵营的活着的敌人
  54.         ally_targets = $game_troop.alive_members.select { |e| e.camp == subject.camp }
  55.         if ally_targets.empty?
  56.           # 没有同阵营友军 → 只能选自己
  57.           ally_targets = [subject]
  58.         end
  59.         return make_enemy_vs_friend_targets(ally_targets)
  60.       end
  61.     end
  62.     # 其他情况(玩家行动、自身技能等)沿用默认逻辑
  63.     camp_system_make_targets
  64.   end
  65.  
  66.   #--------------------------------------------------------------------------
  67.   # ● 新方法:敌人攻击敌人时的目标选择
  68.   #--------------------------------------------------------------------------
  69.   def make_enemy_vs_enemy_targets(target_array)
  70.     if item.for_random?
  71.       # 随机攻击 N 个目标
  72.       Array.new(item.number_of_targets) { target_array.sample }
  73.     elsif item.for_one?
  74.       # 单体攻击:从敌对阵营中随机选一个
  75.       [target_array.sample]
  76.     else
  77.       # 全体攻击:所有敌对阵营成员
  78.       target_array
  79.     end
  80.   end
  81.  
  82.   #--------------------------------------------------------------------------
  83.   # ● 新方法:敌人使用友方技能时的目标选择
  84.   #--------------------------------------------------------------------------
  85.   def make_enemy_vs_friend_targets(target_array)
  86.     if item.for_all?
  87.       # 全体友方:所有同阵营成员
  88.       target_array
  89.     elsif item.for_one? || item.for_random?
  90.       # 单体友方(包括随机):从同阵营中随机选一个
  91.       [target_array.sample]
  92.     else
  93.       # 其他情况(如使用者自身)交给默认逻辑
  94.       camp_system_make_targets
  95.     end
  96.   end
  97.  
  98.   #--------------------------------------------------------------------------
  99.   # ● 默认目标生成(供上面调用)
  100.   #--------------------------------------------------------------------------
  101.   def make_targets_default
  102.     camp_system_make_targets
  103.   end
  104. end


就像你玩半条命时走半路看见喝醋和xen星生物在干架一样
也可以玩电子斗蛐蛐了

74XZ~[Y$]05{1[1{2O6(}DN.png (109.07 KB, 下载次数: 18)

74XZ~[Y$]05{1[1{2O6(}DN.png

@%XN39A4T[%SIVM2]%FO(}D.png (67.62 KB, 下载次数: 17)

@%XN39A4T[%SIVM2]%FO(}D.png
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2026-6-4 10:55

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表