赌命轮盘
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在线咨询功能删除,谢谢。
页:
[1]