1,赌命轮盘
敌我双方同时有状态18,则血量低于50%时,有30%几率即死
RUBY 代码 - #==============================================================================
- # ** Game_Battler
- #------------------------------------------------------------------------------
- # 本类处理战斗者。此类作为 Game_Actor 类和 Game_Enemy 类的超类使用。
- #==============================================================================
- class Game_Battler
- #--------------------------------------------------------------------------
- # * 判定即死状态 (覆盖原方法以添加自定义逻辑)
- #--------------------------------------------------------------------------
- alias original_slip_damage? slip_damage?
- def slip_damage?
- # 首先执行原有的即死/持续伤害判定
- if original_slip_damage?
- returntrue
- end
- # 自定义逻辑:检查状态 18
- # 条件:
- # 1. 当前战斗者拥有状态 18
- # 2. 对手(如果存在)也拥有状态 18
- # 3. 当前 HP < 最大 HP 的 50%
- # 4. 随机数 < 30% (即 0, 1, 2 在 0-9 之间)
- if@states.include?(18)
- # 获取对手引用
- opponent = nil
- ifself.is_a?(Game_Actor)
- # 如果是演员,对手通常是当前的敌人目标,这里简化为检查是否存在任意敌人也有状态18
- # 在 RMXP 默认战斗中,通常是一对多或多对一,这里假设“双方”指战场上的对立阵营
- $game_troop.enemies.eachdo |enemy|
- if enemy.exist? && enemy.states.include?(18)
- opponent = enemy
- break
- end
- end
- elsifself.is_a?(Game_Enemy)
- # 如果是敌人,检查演员队伍中是否有状态18
- $game_party.actors.eachdo |actor|
- if actor.exist? && actor.states.include?(18)
- opponent = actor
- break
- end
- end
- end
- # 如果找到了对立阵营也有状态18的单位
- if opponent != nil
- # 检查血量是否低于 50%
- ifself.hp > 0 && self.hp < (self.maxhp / 2.0)
- # 30% 几率即死
- ifrand(10) < 3
- # 设置为即死状态 (状态 ID 通常为 1,具体取决于数据库设置,这里直接扣血至0或添加即死状态)
- # 更稳妥的方式是添加即死状态,让系统处理死亡
- self.add_state(1)# 假设状态1是即死/战斗不能
- returntrue
- end
- end
- end
- end
- returnfalse
- end
- end
复制代码
2,一次性装备战斗一次就销毁
3,无法装备的装备,纪念品武器
4,偷取敌人技能为我所用
5,李代桃僵,被攻击的人不受伤,有李代桃僵状态的人受伤,或者一人分摊一半
本帖来自P1论坛作者y967,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址: https://rpg.blue/forum.php?mod=viewthread&tid=498995 若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。 |