RenPy中文空间

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 961|回复: 2

[有回复] 那个大佬给我搞个简单的战斗系统模板

[复制链接]
发表于 2020-3-23 08:40:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
看别人的战斗系统,数学不好眼花
只要攻击生命值就好
[RenPy] 纯文本查看 复制代码
label hit:[/size]

    $ critroll = renpy.random.randint(1, 5)
    $ missroll = renpy.random.randint(1, 5)
    if missroll == 1:
        "你失手了。"
    elif critroll == 5:
        $ dmg = atk - defe
        $ dmg = (2 * dmg) + renpy.random.randint(0, lvl)
        if dmg <= 0:
            $ dmg = 0
        $ hpe = hpe - dmg
        if hpe <= 0:
            $ hpe = 0
        "命中造成{color=#00ff00}[dmg]{/color} 伤害 ."
    else:
        $ dmg = atk + renpy.random.randint(0, lvl)
        $ dmg = dmg - defe
        if dmg <= 0:
            $ dmg = 0
        $ hpe = hpe - dmg
        if hpe <= 0:
            $ hpe = 0
        "命中造成{color=#00ff00}[dmg]{/color} 伤害。"
    call poisondmg from _call_poisondmg
    return
发表于 2020-3-23 10:47:15 | 显示全部楼层
回合制么?
1v1还是1v多还是多人对多人的?
只有攻击还是还有别的选项?

简单的回合制1v1就是
从获取当前行动对象和目标开始,提取名字作为填入战况描述中的变量(假设为A和B)
然后播报回合开始的描述文字(轮到A开始行动了)
判断当前行动的是npc还是玩家(取决于是否有多个行动可选,攻击、逃跑等)
如果是玩家,进入下一步,如果是npc,开始战斗(通常npc没有逃跑之类的行动吧)
播报行动的描述文字(如A向B发起了攻击)
这里开始进行命中判定,并在没打中的情况下返回miss信息(但是他没打中)
然后是暴击判定(命中要害)
伤害计算
伤害描述(对B造成了xx的伤害)
伤害过后是剩余hp的判断
如果剩余hp小于或等于0 则播报B被打败的文字
判断被打败的是否为玩家,是否满足战败条件,播报战败文字
判断被打败的是否为敌人,是否满足胜利条件,播报胜利文字
如果没触发hp小于等于0的事件,那么回合结束,轮到下一个对象行动
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-23 10:54:26 | 显示全部楼层
763003211 发表于 2020-3-23 10:47
回合制么?
1v1还是1v多还是多人对多人的?
只有攻击还是还有别的选项?

谢谢了!我去试试
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|RenPy中文空间 ( 苏ICP备17067825号 | 苏公网安备 32092302000068号 )

GMT+8, 2020-12-3 17:47 , Processed in 0.032133 second(s), 12 queries , File On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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