Project1
标题: 几个脑洞 [打印本页]
作者: y967 时间: 2026-4-29 12:18
标题: 几个脑洞
本帖最后由 y967 于 2026-4-29 18:24 编辑
我有很多脑洞由于脚本废物,从而搁置了,技术大牛总是令人神往
1,状态或装备无视防御
需要一个装备,然后无视魔防50%,想做一个神通天赋,可以装备,或者带状态也行,物防就不用了。
2,败者组荣耀
就来个败者组荣耀好了,比如不破防就加攻击,或者打不够10%就加攻击,这种弱者神通天赋保命技能,当然不能无限加,上限加到100攻击力
3,封印和解除封印
BOSS被封印技能后如何自救,被硬控只能小怪救,封印技能后自救,即给自己一个标记,当被封印技能后有一次50%机会突破封印,完成自救
主角同理,当然这里就不用了,因为有队友,队友死了怎么办,那就团灭。
4,回合数满就暴走
这个简单,10回合打不掉半血就加50%攻击,败者食尘,败者翻身,难为了。新手期不好过,为免弃坑。
5,回合加攻击/防御
降低难度的方法当然也很多,每5个回合就加一点攻击或防御,不破防的日子很难过的,破防就几下解决了,平衡不容易做的
6,抽蓝
也可以是抽蓝或BOSS防御一次就减攻击,减防御,反正在队伍里都可以设置,可以用脚本,调戏BOSS
7,隐身
替身有了,隐身呢,隐身可以攻击,敌人几回合不能攻击我,如聋如哑
8,舍身精灵
替身娃娃,代替自己死一次,也可以是背包物品
9,守护精灵
死之前一击恢复满血,单次战斗只能触发一次,也可以和上面合并
作者: 无忧谷主幻 时间: 2026-4-29 20:04
本帖最后由 无忧谷主幻 于 2026-4-29 20:19 编辑
问的有些多了,我先从好回答的开始回答吧
3,纯事件就能做
4,依旧算纯事件吧
在条件分歧中输入
$game_troop.enemies[0] && $game_troop.enemies[0].hp > $game_troop.enemies[0].maxhp * 0.5
$game_troop.enemies[0] && $game_troop.enemies[0].hp > $game_troop.enemies[0].maxhp * 0.5
敌人数组从 0 开始计数的
1号敌人 → enemies[0]
2号敌人 → enemies[1]
(注意区分战斗和回合,战斗是满足条件也只执行一次,回合是满足挑战每回合执行一次)
5,我们依旧用变量来解决
之前需要带有固定状态才生效,现在取消掉
# ● 获取力量
def str
n = [[base_str + @str_plus, 1].max, 999].min
for i in @states
n *= $data_states[i].str_rate / 100.0
end
# 力量固定增加变量1的数值
n += $game_variables[1]
n = [[Integer(n), 1].max, 999].min
return n
end
# ● 获取力量
def str
n = [[base_str + @str_plus, 1].max, 999].min
for i in @states
n *= $data_states[i].str_rate / 100.0
end
# 力量固定增加变量1的数值
n += $game_variables[1]
n = [[Integer(n), 1].max, 999].min
return n
end
6,抽蓝直接在公共事件中选择增减敌人SP就好
7,这个应该有人做过了吧,请善用搜索
我把自用的给你吧,不知道你能不能用
嘲讽加盲点整合
8&9
这个也是我之前做过的,第一个就是
https://rpg.blue/thread-498382-1-1.html
把 @hp+=1改成 @hp+=9999就好了
作者: 无忧谷主幻 时间: 2026-4-29 21:44
本帖最后由 无忧谷主幻 于 2026-4-29 21:46 编辑
无敌脚本,经过soulsaga修改,已经加上可以被状态变化解除来解除无敌
无敌
2我也帮你弄好了
if self.damage == 0 && $game_variables[1] < 100
$game_variables[1] += 1
end
if self.damage == 0 && $game_variables[1] < 100
$game_variables[1] += 1
end
只有伤害等于0(不破防)变量才会增加,且增加的数值不会超过100
之后代入即可
作者: 灯笼菜刀王 时间: 2026-4-30 11:12
本帖最后由 灯笼菜刀王 于 2026-4-30 11:27 编辑
1, 直接在公式里判断攻方持有对应的状态, 然后让防御减半就行了
找到 power -= self.mdef * skill.mdef_f / 200 这句
改成 power -= (user.state?(10086) ? self.mdef / 2 : self.mdef) * skill.mdef_f / 200
涉及战斗公式方面全可以这样改, 你这些脑洞大部分都是在公式里增加判断, 然后改变某个参数值就可以实现了
--------想实现脑洞, 对脚本小幅度修改是必备的技能---
更高级的做法, 开放式的设置方式
这样就可以持有多种比例的词条/被动了, 笑
作者: 灯笼菜刀王 时间: 2026-4-30 11:49
3, 状态可以增加一个"自解除概率"的设置, 也就是在状态持续期间, 有一定概率自动解除, 这样就可以避免无限控的情况, 当然可以给boss特权, 自解除概率翻倍之类的
不过, XP的数据库没有备注栏, 所以要增加新的参数比较麻烦, 最终还是要抛弃数据库才能解除你的洪荒之力, 笑
目前, 就在状态名称后面备注吧, 毒<A10> 这样写, 表示 中毒后每回合有10%的概率会自行解除
- module RPG
- class State
- def name ;return @name.sub(/\<A(\d+)\>/,"") ;end
- def 自解率 ;@name[/\<A(\d+)\>/] ;return $1.to_i ;end
- end
- end
- class Game_Battler
- def remove_states_auto
- for i in @states_turn.keys.clone
- if @states_turn[i] > 0
- @states_turn[i] -= 1
- remove_state(i) if rand(100) < $data_states[i].自解率
- elsif rand(100) < $data_states[i].auto_release_prob
- remove_state(i)
- end
- end
- end
- end
复制代码
脚本, 把它塞到main前
-----------------
我的做法, 状态除了有自动解除概率, 还有最大持续回合, 超过这个回合就算解除概率不是100%也必定解除, 这样做那种 持续时间结束后不是100%解除的状态就有个保底了, 笑
当然, 像增加解除概率, 缩短持续回合之类的 词条/被动 也是有的, 笑
作者: 灯笼菜刀王 时间: 2026-4-30 12:14
7, 隐身, 隐身的做法不难, 判断有该状态的时候, 不把单位放入 @target_battlers 就行了
找到 if (not hp0 and actor.exist?) or (hp0 and actor.hp0?) 这句, 下面加一句 next if actor.state?(10086) #10086为隐身状态id
这样就可以实现单体攻击的时候都不会打隐身的人(群体攻击可以)
但是, 有个表演上的问题, 就是如果我方只有一个隐身人, 那敌方除非使用群体攻击, 否则就直接结束本回合, 观感上会莫名其妙的, 笑
所以重点上是要怎么表演
我的做法~
当然, 这就不是简单的修改就可以实现的了, 笑
作者: 灯笼菜刀王 时间: 2026-4-30 16:24
本帖最后由 灯笼菜刀王 于 2026-4-30 16:27 编辑
要隐身能不被群攻攻击也不难, 找到
when 2 # 敌全体
for actor in $game_party.actors
if actor.exist? and !actor.state?(10086)
加上红色部分就行了
我设计的隐身能被群攻攻击到是避免隐身变成无敌, 笑, 而且我的隐身也是可以让敌人用的, 群攻则可以作为对付隐身的敌人的反制手段
单体攻击无法选择隐身的敌人
当然想让隐身也能被敌人使用, 就要改操作逻辑了,这部分就要对脚本有些理解喽
作者: 灯笼菜刀王 时间: 2026-4-30 17:19
8, 救命符, 这个实现方法不难, 按无忧谷的做法来就行了 , 但是直接在脚本里处理其实并不理想, 因为这样做, 显示的是, UI显示还剩1血, 然后敌人一刀砍过来, 变成满血
尤其是给敌人使用, 玩家根本感觉不到这个效果, 毕竟默认是看不到敌人剩多少血的, 笑
所以这种触发型特效, 主要还是要考虑如何表演, 尤其是强力效果,更是要用表演来体现牛X
作者: 灯笼菜刀王 时间: 2026-4-30 17:58
本帖最后由 灯笼菜刀王 于 2026-4-30 20:02 编辑
如果不需要表现"死而复活", 那可以直接播放个动画, 如果需要先躺下去,然后再站起来, 那就比较麻烦喽, 笑
RPG最好用状态, 毕竟如果用道具的话, 那塞99个, boss要砍多久, 笑
不过直接播放动画也需要处理"公式结算在动画表演之前"的问题
我使用的方法是, 用公共事件来复活, 在hp判断为0时, 在公共事件里添加动画和加血复活, 当然, 这个添加事件我是用脚本写的, 笑
你可以用状态法, 在需要播放动画的地方先附加一个没卵用的状态(定量设置为0就不会显示了), 然后找个"行动后执行指定公共事件"的脚本, 在这个公共事件里, 每个单位都判断一次是否有对应状态, 有的话就播放动画, 然后解除状态, 这样就可以实现"行动后再播放动画了"(需要在行动后表演的都可以用这个方法)
作者: y967 时间: 2026-5-2 10:05
本帖最后由 y967 于 2026-5-3 07:16 编辑
10,攻击平衡球
如果我方8回合内杀不掉敌人,那么就增加攻击力,每回合增加20,这个攻击力不用抹掉了,可以带到下一场,如果四回合就干掉了,那么开始减攻击力,每次减10。
11,防御平衡球
如果不破防,已经做过了,如果敌人频繁防御,打出伤害不足200,那么开始增加我方攻击力每回合20,或者减去敌人防御力每次减掉10.
12,啃咬者幻想
敌人单次伤害超过本方1/4血的时候,造成啃咬对方20%血效果,此招对付BOSS。
13,最终杀
敌人大招杀死我方前,我方爆起怒杀对方50-70%血,然后我方死去,不留血。
14,领头羊荣耀
如果6回合我方解决不掉敌人,则搜索敌方攻击力最高的那个,减去攻击最高的敌方攻击力20,腐蚀他。还可以控制他两个回合,不管减速还是定住,还是封印技能都行。一般游戏都有这种削弱机制。
15,软猬甲/反射镜像
伤我100,自扣50,自穿软猬甲,敌人也穿,镜像无限反射
16,抗性叠叠乐
抗性数字化,火抗5,可以叠,叠一次5,叠到50,火伤害就减50。百分比也可以。
| 欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |