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

Project1

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

[原创发布] 赌命轮盘

[复制链接]

Lv4.逐梦者

梦石
0
星屑
16860
在线时间
4199 小时
注册时间
2013-7-18
帖子
2679
跳转到指定楼层
1

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

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

x
1,赌命轮盘

敌我双方同时有状态18,则血量低于50%时,有30%几率即死

RUBY 代码复制
  1. #==============================================================================
  2. # ** Game_Battler
  3. #------------------------------------------------------------------------------
  4. #  本类处理战斗者。此类作为 Game_Actor 类和 Game_Enemy 类的超类使用。
  5. #==============================================================================
  6.  
  7. class Game_Battler
  8.   #--------------------------------------------------------------------------
  9.   # * 判定即死状态 (覆盖原方法以添加自定义逻辑)
  10.   #--------------------------------------------------------------------------
  11.   alias original_slip_damage? slip_damage?
  12.  
  13.   def slip_damage?
  14.     # 首先执行原有的即死/持续伤害判定
  15.     if original_slip_damage?
  16.       return true
  17.     end
  18.  
  19.     # 自定义逻辑:检查状态 18
  20.     # 条件:
  21.     # 1. 当前战斗者拥有状态 18
  22.     # 2. 对手(如果存在)也拥有状态 18
  23.     # 3. 当前 HP < 最大 HP 的 50%
  24.     # 4. 随机数 < 30% (即 0, 1, 2 在 0-9 之间)
  25.  
  26.     if @states.include?(18)
  27.       # 获取对手引用
  28.       opponent = nil
  29.       if self.is_a?(Game_Actor)
  30.         # 如果是演员,对手通常是当前的敌人目标,这里简化为检查是否存在任意敌人也有状态18
  31.         # 在 RMXP 默认战斗中,通常是一对多或多对一,这里假设“双方”指战场上的对立阵营
  32.         $game_troop.enemies.each do |enemy|
  33.           if enemy.exist? && enemy.states.include?(18)
  34.             opponent = enemy
  35.             break
  36.           end
  37.         end
  38.       elsif self.is_a?(Game_Enemy)
  39.         # 如果是敌人,检查演员队伍中是否有状态18
  40.         $game_party.actors.each do |actor|
  41.           if actor.exist? && actor.states.include?(18)
  42.             opponent = actor
  43.             break
  44.           end
  45.         end
  46.       end
  47.  
  48.       # 如果找到了对立阵营也有状态18的单位
  49.       if opponent != nil
  50.         # 检查血量是否低于 50%
  51.         if self.hp > 0 && self.hp < (self.maxhp / 2.0)
  52.           # 30% 几率即死
  53.           if rand(10) < 3
  54.             # 设置为即死状态 (状态 ID 通常为 1,具体取决于数据库设置,这里直接扣血至0或添加即死状态)
  55.             # 更稳妥的方式是添加即死状态,让系统处理死亡
  56.             self.add_state(1) # 假设状态1是即死/战斗不能
  57.             return true
  58.           end
  59.         end
  60.       end
  61.     end
  62.  
  63.     return false
  64.   end
  65. end


2,一次性装备战斗一次就销毁

3,无法装备的装备,纪念品武器

4,偷取敌人技能为我所用

5,李代桃僵,被攻击的人不受伤,有李代桃僵状态的人受伤,或者一人分摊一半

评分

参与人数 1+1 收起 理由
azazaaz13142121 + 1 认可答案

查看全部评分

退隐....

Lv4.逐梦者

素材区好人

梦石
3
星屑
11154
在线时间
4172 小时
注册时间
2011-7-21
帖子
2528

极短27参与极短26参与极短25参与极短24参与极短23参与极短22参与极短21参与

2
发表于 4 天前 | 只看该作者
本帖最后由 无忧谷主幻 于 2026-5-31 08:57 编辑

2,我以前教过你,战斗结束后(无论胜利失败还是逃跑)时执行公共事件
3,所有人可装备的装备中,皆不对这件装备打勾

回复 支持 反对

使用道具 举报

Lv4.逐梦者

素材区好人

梦石
3
星屑
11154
在线时间
4172 小时
注册时间
2011-7-21
帖子
2528

极短27参与极短26参与极短25参与极短24参与极短23参与极短22参与极短21参与

3
发表于 4 天前 | 只看该作者
本帖最后由 无忧谷主幻 于 2026-5-31 11:31 编辑

4,我记得柳柳的黑暗圣剑传说有一个共产主义石,就是分担伤害
第一个,根据队伍人数减伤
RUBY 代码复制
  1. if self.armor2_id==150 or self.armor3_id==150 or self.armor4_id==150
  2.               if $message_string != "涉死"
  3.                 case $game_variables[550]
  4.                 when 0
  5.                   self.damage /= [[$game_party.actors.size,4].min-rand(2),1.3].max
  6.                   self.damage = self.damage.to_i
  7.                 when 1
  8.                   self.damage /= [[$game_party.actors.size,4].min,1.3].max
  9.                   self.damage = self.damage.to_i
  10.                 when 2
  11.                   self.damage /= [[$game_party.actors.size,4].min+rand(4),1.3].max
  12.                   self.damage = self.damage.to_i
  13.                 when 3
  14.                   num = 0
  15.                   for enemy in $game_troop.enemies
  16.                     if enemy.exist?
  17.                       num+=1
  18.                     end
  19.                   end
  20.                   self.damage /= [[$game_party.actors.size,4].min+num,1.3].max
  21.                   self.damage = self.damage.to_i
  22.                 $message_string = "共产主义"
  23.                 when 4
  24.                   num = 0
  25.                   for enemy in $game_troop.enemies
  26.                     if enemy.exist?
  27.                       num+=1
  28.                     end
  29.                   end
  30.                   self.damage /= [[$game_party.actors.size,4].min+num+rand(5),1.3].max
  31.                   self.damage = self.damage.to_i
  32.                 end               
  33.               else
  34.                 self.damage /= 10
  35.                 $message_string = "共产主义涉死"
  36.               end
  37.             end

第2步
给全体其他队员同样的伤害
RUBY 代码复制
  1. if target.armor2_id==150 or target.armor3_id==150 or target.armor4_id==150
  2.           if $message_string == "共产主义"
  3.             target.animation_id  = 37
  4.             target.animation_hit = true
  5.             case $game_variables[550]
  6.             when 0
  7.               for j in 0...[$game_party.actors.size,4].min
  8.                 if $game_party.actors[j] != target
  9.                   $game_party.actors[j].animation_id = 155
  10.                   $game_party.actors[j].animation_hit = true
  11.                   $game_party.actors[j].hp -= target.damage
  12.                   $game_party.actors[j].damage = target.damage
  13.                   $game_party.actors[j].damage_pop = true
  14.                 end
  15.               end
  16.             when 1
  17.               for j in 0...[$game_party.actors.size,4].min
  18.                 if $game_party.actors[j] != target
  19.                   $game_party.actors[j].animation_id = 155
  20.                   $game_party.actors[j].animation_hit = true
  21.                   $game_party.actors[j].hp -= target.damage
  22.                   $game_party.actors[j].damage = target.damage
  23.                   $game_party.actors[j].damage_pop = true
  24.                 end
  25.               end
  26.             when 2
  27.               for j in 0...[$game_party.actors.size,4].min
  28.                 if $game_party.actors[j] != target
  29.                   $game_party.actors[j].animation_id = 155
  30.                   $game_party.actors[j].animation_hit = true
  31.                   $game_party.actors[j].hp -= target.damage
  32.                   $game_party.actors[j].damage = target.damage
  33.                   $game_party.actors[j].damage_pop = true
  34.                 end
  35.               end
  36.             when 3
  37.               for j in 0...[$game_party.actors.size,4].min
  38.                 if $game_party.actors[j] != target
  39.                   $game_party.actors[j].animation_id = 155
  40.                   $game_party.actors[j].animation_hit = true
  41.                   $game_party.actors[j].hp -= target.damage
  42.                   $game_party.actors[j].damage = target.damage
  43.                   $game_party.actors[j].damage_pop = true
  44.                 end
  45.               end
  46.               for enemy in $game_troop.enemies
  47.                 if enemy.exist?
  48.                   enemy.animation_id = 155
  49.                   enemy.animation_hit = true
  50.                   enemy.hp -= target.damage
  51.                   enemy.damage = target.damage
  52.                   enemy.damage_pop = true
  53.                 end
  54.               end
  55.             when 4
  56.               for j in 0...[$game_party.actors.size,4].min
  57.                 if $game_party.actors[j] != target
  58.                   $game_party.actors[j].animation_id = 155
  59.                   $game_party.actors[j].animation_hit = true
  60.                   $game_party.actors[j].hp -= target.damage
  61.                   $game_party.actors[j].damage = target.damage
  62.                   $game_party.actors[j].damage_pop = true
  63.                 end
  64.               end
  65.               for enemy in $game_troop.enemies
  66.                 if enemy.exist?
  67.                   enemy.animation_id = 155
  68.                   enemy.animation_hit = true
  69.                   enemy.hp -= target.damage
  70.                   enemy.damage = target.damage
  71.                   enemy.damage_pop = true
  72.                 end
  73.               end
  74.             end
  75.             target.damage_pop = true
  76.             @status_window.refresh
  77.             @status_window.update
  78.             @phase4_step = 6
  79.           end
  80.         end


点评

然后第二段脚本也一样if target.armor2_id==150 or target.armor3_id==150 or target.armor4_id==150改成if target.state?(150)  发表于 4 天前
修改成状态不是基础吗,直接把if self.armor2_id==150 or self.armor3_id==150 or self.armor4_id==150改成if self.state?(150)  发表于 4 天前
这个共产主义石头是装备吧,要是状态呢,当然装备也行,状态的话更灵活一点,可以被消除  发表于 4 天前
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
16860
在线时间
4199 小时
注册时间
2013-7-18
帖子
2679
4
 楼主| 发表于 4 天前 | 只看该作者
本帖最后由 y967 于 2026-5-31 10:53 编辑

1,共情者/高阶共情者

会给与别人同情的角色,类似于奶妈又不是,圣骑,对,圣骑,牺牲自我50%血量,给同伴加血,加血量就是这个数值
,也可以是牺牲自己的四维,给同伴加防御等,高阶的会反噬,同情过头有时候会造成吸血,同伴会不断的吸血,直到死亡
神圣的音乐出来了,牺牲自我给队友双倍四维持续2回合,神性光辉振奋军心最后的挽歌。

2,共爱者
更离谱的角色,敌我双方都加血,钢锯岭?高阶的会牺牲自我,到底给谁加呢,谁是谁的最后的挽歌,会不会被揍呢

3,叛徒
高阶共爱者等同叛徒,拥有18号状态就会有30%叛变,攻击我方,可以是技能,不是混乱状态,是叛变了,必须做掉,可以用毒
寄掉,因为不能干队友,只能毒杀。

4,股子抛抛乐
显示一个随机四位数,伤害就是这个数字,数字可以跳动,轩辕剑三那种

退隐....
回复 支持 反对

使用道具 举报

Lv4.逐梦者

素材区好人

梦石
3
星屑
11154
在线时间
4172 小时
注册时间
2011-7-21
帖子
2528

极短27参与极短26参与极短25参与极短24参与极短23参与极短22参与极短21参与

5
发表于 4 天前 | 只看该作者
本帖最后由 无忧谷主幻 于 2026-5-31 11:31 编辑
y967 发表于 2026-5-31 10:34
1,共情者/高阶共情者

会给与别人同情的角色,类似于奶妈又不是,圣骑,对,圣骑,牺牲自我50%血量,给同 ...


1,扣除1号角色现有hp的50%,并给其他角色增加扣除的hp量
RUBY 代码复制
  1. actor_main = $game_party.actors[0]
  2. return if actor_main.nil? || actor_main.dead?
  3. # 计算转移HP量:1号角色当前HP的50%,保底1点
  4. transfer_hp = (actor_main.hp * 0.5).to_i
  5. transfer_hp = [transfer_hp, 1].max
  6. # 1号角色扣血
  7. actor_main.hp -= transfer_hp
  8. # 其他存活队员加等量HP
  9. for actor in $game_party.actors
  10.   next if actor == actor_main || actor.nil? || actor.dead?
  11.   actor.hp = [actor.hp + transfer_hp, actor.maxhp].min
  12. end

2,加上给敌方也恢复hp的判断即可
RUBY 代码复制
  1. # 敌方全体存活敌人,加等量HP
  2. for enemy in $game_troop.enemies
  3.   next unless enemy.exist? # 仅给存活的敌人生效,跳过已死亡/不存在的
  4.   enemy.hp = [enemy.hp + transfer_hp, enemy.maxhp].min
  5. end

4,这不是纯事件就能做吗,其实之前2个也是纯事件就可以做
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
41773
在线时间
5970 小时
注册时间
2006-11-10
帖子
6962
6
发表于 3 天前 | 只看该作者
本帖最后由 灯笼菜刀王 于 2026-6-1 10:38 编辑

赌命轮盘的效果不应该是这样的么





纯事件就可以做, 不需要状态,而且还能加上转盘表演等

技能目标为无, 动画A摆个pose, 然后公共事件

先随机一个变量A, 它就是轮盘指针,  然后, 拿另一个变量B获取场上的人员

脚本: $game_variables[10086]=($game_party.actors +
$game_troop.enemies).find_all{|i| i.exist?}

这样变量B就是场上所有存活的人的数组

想直接得到结果, 那直接用脚本

a = $game_variables[10085]
b = $game_variables[10086]
c = b[c % b.size]
c.add_state(1)
c.animation_id = 10086

想表演一下轮盘转动, 那就要用到循环和等待了, 然后在准备个变量C, 让C = A, 然后每一次循环都让变量C-1, 然后

c = $game_variables[10087]
b = $game_variables[10086]
d = b[a % b.size]
d.animation_id = 10087

d 就是当前指针所指向的目标, 给它播放一个没中的动画, 直到变量C <= 0 ,退出循环, 然后调用之前的命中脚本, 这就是我上面的GIF表演效果

※ 不建议直接用1号状态作为即死状态, 去新建个其他的状态, 把当做HP为0勾起来, 用它作为即死状态比较好, 因为1号状态是系统默认死亡状态, 如果免疫它, 那就永远死不掉了, 笑
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
41773
在线时间
5970 小时
注册时间
2006-11-10
帖子
6962
7
发表于 3 天前 | 只看该作者
偷技能, 偷技能本身很容易做, 主要是设计问题,  如果你的技能绑定了角色动作表演, 那当然不能给别人用, 这种技能就偷不了

还有一些特殊效果的技能没有针对双方处理(比如你之前搞的一堆只限定角色使用的技能, 笑),这类的当然也不能给敌人或者我方偷

所以, 想玩偷技能, 要么限定只有某些技能能偷(青魔法), 要么所有技能都做好考虑敌我双方都能用的情况(百变怪), 要么,去做AB技能,相同名字的技能区分敌我双方

而选择做青魔法, 而且还是"用主动技能来偷', 那只要用技能的公共事件去用 受方.id == XXX 去搞一堆分歧就行了, 如果要像FF那样挨到特定技能才能学会, 那就做AB技能, 给每个可以学的敌人技能里附带公共事件, 里面判断 受方.id == 指定角色 时,给他学会技能
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
41773
在线时间
5970 小时
注册时间
2006-11-10
帖子
6962
8
发表于 3 天前 | 只看该作者


技能伤害固定数值随机, 不如倍率随机, 这样一样"赌脸" ,但是又有成长性, 不至于前期SL高数值秒天秒地, 后期就算给你高数字也是抓痒成为鸡肋

我这招加了个暗门, 每场战斗第一次用只会在50-120%之间随机, 免得给人的感觉太超模或者太废

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
16860
在线时间
4199 小时
注册时间
2013-7-18
帖子
2679
9
 楼主| 发表于 3 天前 | 只看该作者
1,大姐姐的爱

奶你等于毒死你,毒奶,不不,是奶你,还要让你中毒,只对18号叛变者有效,其他人就是正常的奶,配合叛变者使用

2,真心话大冒险

技能弹出真心话,如果敌人答错了,就会造成伤害,随机数好了,反正敌人没有智力,没那么简单,一旦答对了呢,你偷看过寡妇洗澡吗,

那你怎么知道河里不深的,答对两次就得放大招了,诡计而已,答题是一个噱头,组合法才是精髓

3,天工开物

好吧,祭出一点好玩的,12个符/咒/图腾,组合法,打出三个一组,组成一个阵法,效果是攻击阵或防御阵,自定,敌人也有效,比如敌人也打出猛攻阵的时候,我方才打出两个符,可以临时组成防御阵,前两个符定属性,威力,比如火,2,第三个定是攻击/防御/速度,就灵活机动。如果简单点,直接打出攻击或防御也可以。也可以是一个机关图,可以做动画,每个做一个,三个做一个组合动画显示机关/图腾巧妙,出现组合图。

4,公平决斗

战斗时,强制攻防双方的速度差距不超过10,其他就不动了,毕竟CP制很吃速度的,先手一方优势很大,经常打不到人几个回合下来就失去平衡了
退隐....
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
41773
在线时间
5970 小时
注册时间
2006-11-10
帖子
6962
10
发表于 3 天前 | 只看该作者
本帖最后由 灯笼菜刀王 于 2026-6-1 16:29 编辑

2.类似这些"契约系"技能吧



继承合约: 给自己以外的友方一个状态, 当一方挂掉的时候, 剩余的TP和MP都会加给对方

互不攻击协议: 给目标一个状态, 持有这个状态的敌人如果攻击自己, 就会"违约",然后受到2倍伤害的反伤,同时附带 [丢脸]debuff(四维降低5%) ,当然, 如果自己攻击该敌人也一样"违约" 笑

不耗蓝协议: 给全场一个状态, 如果有出现消耗MP的行为, 那就"违约", 终止行动且当前MP减半

死斗宣言: 2回合内,全场任何恢复技能和药品都禁止使用

不设防宣章: 2回合内, 全场防御和魔防为0

这类的技能特点是: 效果不是立即出现, 而是通过特定行为触发的.效果也比较强力, 自己不留心也会中招, 当然, 因为参考的是"美国", 所以当然己方会有各种手段"双标", 也不算自爆技, 笑

而且, 像互不攻击协议,不耗蓝协议这种, 敌人是有概率会"异议"的(逆转裁判梗), 所以也不是能随心所欲的用, 笑








回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

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

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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