作者 主题: TopicBot使用手册及changelog  (阅读 4782 次)

副标题: 2014.11.19更新至ver 1.1

离线 jimraynor

  • 版主
  • *
  • 帖子数: 1005
  • 苹果币: 0
TopicBot使用手册及changelog
« 于: 2011-10-31, 周一 16:30:04 »
TopicBot简介

TopicBot是用于在irc跑团过程中,控制频道标题,记录战斗状态的程序。制作它的目的是希望能够简化dm/pc维护战斗状态和团务的操作

TopicBot目前仅支持DnD 3R

TopicBot目前支持的功能有:地图编辑、维护先攻顺序表,维护受伤、临时生命值状况,维护buff/debuff状况,记录xp、物品和法术,以及日志记录和规则查询功能。DM可以自行决定要使用哪些功能。
使用"/invite <TopicBot名> <#频道名>"邀请TopicBot
TopicBot的命令均以"."或".t "(".t"加一个空格)开头,如".end",或".t init 18 Jim"。其中以".t "开头的命令会在命令执行后更新频道标题。有些命令无论用"."还是".t "都会更新标题。另,有些命令可以接受Oicebot投骰结果。例如".r d+3 init jim"会把投骰结果当作Jim的先攻值加入战斗。
TopicBot可以在小窗和非跑团频道接收命令。若命令有返回消息则将显示在输入命令的频道/小窗中,若命令导致标题更新则将更新至跑团频道的标题。
TopicBot目前工作在两个层面上,团级和遭遇级。除了规则查询外所有的功能都必须在一个团的环境下执行,战斗级别的命令必须在进入战斗环境后执行。
TopicBot只能同时载入一个团。也就是说不管TopicBot在几个频道中,你的所有命令都是针对同一个团的存档执行的。


通用命令

以下是TopicBot目前支持的命令列表。命令格式描述中尖括号(<>)包围的部分是必须提供的,方括号([])包围的部分是可选的。

.rule <规则元素名>:查询规则。如".rule blinded"。目前仅支持traps,会根据跑团需要慢慢增加内容。注意:这条命令通常会导致多于一行的返回信息,所以不建议在跑团频道中使用。

.4df [技能等级] [检定描述]:依照Fudge/Fate/D6s规则投骰。

.startgame <团名>:读取名为<团名>团的存档,如果该团不存在则将创建一个新团并以<团名>命名。之后TopicBot将运行在这个团的环境下。注意:不要在团名中加入特殊字符,尽量避免使用空格,否则可能导致无法保存到文件。


团级命令

以下命令都必须在团环境下(也就是执行.startgame命令之后)执行:

添加/删除PC

.addpc <PC名>:增加一个名为<PC名>的PC。
.removepc <PC名>:从团中去除名为<PC名>的PC。

管理人物名

.rename <人名1> <人名2>:将人名1修改为人名2,用法举例:
.rename Jim JimRaynor:将标题中的Jim改为JimRaynor

.actas <PC名>:将当前昵称与PC绑定。之后如果拥有此昵称的人输入命令则相当于该命令是从<PC名>输入的。
.removealias <昵称>:解除<昵称>与PC的绑定。
注意现在要将一个已经绑定的昵称绑定到另一个PC名上必须首先解除绑定……很糟糕……
.listalias:列出当前所有的昵称绑定关系

PC基本属性

.set [PC名] <属性> <数值>:将PC的<属性>属性修改为<数值>。可用此命令修改的属性包括xp, hp, maxhp, thp, initmod。若命令中提供[PC名]参数则将对该pc进行修改,否则将以输入命令者(以下简称为调用者)的昵称为PC名进行修改。例如:
.set Bairmot maxhp 33:将把Bairmot的最大生命值设置为33.

.charstat [PC名列表]:显示人物的状态明细。可以指定显示一个或多个人物的状态。如果不指定人物名则显示调用者的状态。如果使用ALL(全大写)为参数则显示所有PC的状态。用法举例:
.charstat:显示自身的状态
.charstat ALL:显示所有人物状态
.charstat Jim 昆:显示Jim和昆的人物状态

XP

.xp <xp> [PC名列表]:为所有处于[PC名列表]内的PC增加[xp]点xp。若未指定PC名列表则默认指定所有PC。这一命令也可以用于减少xp,只要将xp变为负数。这个命令同时会产生一条日志。

团队与个人物品

.loot <物品1*数量>[|<物品2*数量>|<物品3*数量>...]:将物品1、物品2、物品3等加入团队loot列表。这个命令同时会产生一条日志。用法举例:
.loot 精致品巨剑:将精致品巨剑加入团队loot
.loot clw棍子*50|ep水*4:将50发clw棍子和4瓶ep水加入团队loot
注意:由于.use命令目前还有bug,请不要在物品名中加入空格

.droploot <物品1*数量>[|<物品2*数量>|<物品3*数量>...]:将物品1、物品2、物品3等从团队loot中移除。这个命令同时会产生一条日志。物品格式如上.loot命令

.takeloot <PC名> <物品1*数量>[|物品2*数量|物品3*数量...]:将物品1、物品2、物品3等从团队loot中转移到PC身上。这个命令同时会产生一条日志。注意这里的PC名不能省略。用法举例:
.takeloot Bairmot clw棍子*50|ep水*2:PC Bairmot从团队loot拿走50发clw棍子和2瓶ep水

.use [PC名] <物品> [数量]:使用[数量]发[PC名]身上的<物品>。若[数量]省略则默认使用一发;若[PC名]省略则默认使用自己身上的物品。用法举例:
.use Jim clw棍子 10:使用10发Jim身上的clw棍子
.use ep水:使用输入命令的PC身上的ep水一瓶

.listloot:显示当前的团队loot
.listitem [PC名列表]:显示某个或某些PC身上的物品。用法举例:
.listitem:显示自身的物品
.listitem ALL:显示团队中所有人物的物品
.listitem Jim 昆:显示Jim和昆身上的物品

法术

.prepare [PC名] <法术等级> <法术1*数量>[|法术2*数量|法术3*数量...]:将法术1、法术2、法术3等记入[PC名]的当日法术中。若[PC名]省略则默认记入命令输入者的当日法术。用法举例:
.prepare Jim lv1 mm*2|grease|sleep:将sleep、grease和两发mm记入Jim的当日法术。

.cast [PC名] <法术>:施展[PC名]已准备的<法术>。施法后<法术>会从当日法术中移除.若[PC名]省略则默认记入命令输入者的当日法术。用法举例:
.cast Jim mm:施展Jim准备的mm。

.listspell [PC名列表]:显示某个或某些PC准备的当日法术。[PC名列表]的格式参见.listitem命令。

日志

.log <日志标题>|<日志内容>:将<日志内容>以<日志标题>为标题记录下来以便查询。例如:
.log 寻找大叔|废柴大叔又把自己搞丢了,我们要到白val镇去把他揪回来。

.log query [字段|][关键字]:按字段和关键字查询日志。目前支持的字段包括"title", "time", "text"和"logger",分别指记录日志时录入的标题、时间、日志内容和记录者的ID。若未指定字段则代表在所有字段中查找。若字段和关键字均未指定则返回所有日志条目。例如:
.log query time|2011-12-29:输出所有记录于2011年12月29日的日志
.log query text|大叔:输出所有在内容中出现“大叔”字样的日志条目
.log query title&text|白val镇:输出所有在内容或标题中出现“大叔”字样的日志条目
.log query:输出所有日志

.log del <标题或时间>:删除一条指定日期或指定标题的日志。注意:不像其他大多数的命令,参数提供的标题或日期必须与日志打印的标题或日期的格式、内容完全相同。这样是为了避免误删。

其他

.undo:取消上一次的操作。

.startbattle:创建一个遭遇,之后Titlebot将运行于该遭遇的环境下。如果团内已经通过addpc命令加入了pc,则这条命令会同时为所有pc投先攻。

遭遇级命令

以下命令都必须在遭遇环境下执行:

增加/删除参战人员

.init <先攻数值> [人物]:将一个人物(这里的“人物”可代表PC或者NPC,下同)加入战斗,并将其按先攻值排进行动顺序表里。如果不提供人物名则使用输入命令的人名代替。用法举例:
.init 10 Jim:新建一个名为Jim的人物,并将其先攻设置为10。假如现在标题中已有两个怪物g1,g2,先攻分别是5和20,则输入这条命令之后标题会变成"g2, Jim, g1"
.init 10:假如Hanbak输入了这个命令,则将会新建人物为Hanbak,且将其先攻设置为10
注意:也可以通过投骰输入这个命令,格式为".r <投骰> init [人物]"例如:
.r d+3 init:假如Hanbak输入了这个命令,则将会新建人物为Hanbak,且将其先攻设置为投骰的结果
.r d+3 init Hanbak:将会新建人物为Hanbak,且将其先攻设置为投骰的结果
注意:为了减少操作,在没有开始遭遇之前输入.init命令也会开始一个遭遇。因此严格来说.init命令也应该属于团级命令。但是由于.init跟遭遇绑定极为紧密,因此列入遭遇级命令。

.addchar <人物列表>:新建一个或多个人物,并将其添加到行动顺序表的末尾。用法举例:
.addchar g1 g2 g3 g4:添加g1到g4至行动顺序表末尾。

.kill <人物列表>:从行动顺序表中去除一个或多个人物(通常代表脱离战斗)。用法举例:
.kill g1 g2 g3 g4:从行动顺序表中去除g1到g4

行动顺序

.end:结束当前行动者的轮,将当前行动者置为其下一顺位的战斗员。
.pre:将当前行动者置为其上一顺位的战斗员。

.before [人物1] <人物2>:在行动顺序表中将人物1移动到人物2之前。其中人物1可以省略,省略时将用输入命令的人名作为人物1。用法举例:
假如当前的标题为"g1, Jim, g2",则.before g2, Jim将使标题成为g1, g2, Jim
假如当前的标题为"g1, Jim, Han, g2",则Han输入.before Jim将使标题成为g1, Han, Jim, g2

.after [人物1] <人物2>:在行动顺序表中将人物1移动到人物2之后。其中人物1可以省略,省略时将用输入命令的人名作为人物1。用法举例:
假如当前的标题为"g1, Jim, g2",则.after g1, Jim将使标题成为Jim, g1, g2
假如当前的标题为"g1, Jim, Han, g2",则Han输入.after g2将使标题成为g1, Jim, g2, Han

.start [轮数]:从第[轮数]轮开始战斗。若省略[轮数]则默认从第一轮开始。若[轮数]输入为0则从突袭轮开始。此命令会把当前行动者置为行动顺序表上的第一个人物。

.goto <人物> [轮数]:将当前行动者置为指定人物。轮数可省略,若指定轮数则会同时将当前轮数置为指定轮数。0代表突袭轮。用法举例:
.goto Jim:设置轮到Jim行动。
.goto Jim 1:设置轮数为第一轮且轮到Jim行动
注意:使用goto命令不会检查人物buff/debuff状态,即可能需要手动去除需去除的状态,手动扣除dot伤害等。因此不建议使用。使用start令战斗轮数前进也有同样的问题。

伤害与治疗

.-<数值> [人物列表]:对一个或多个人物造成指定数量的伤害。若未指定人物则伤害自身。用法举例:
.-5 Jim:Jim受到5点伤害
.-5:自身受到5点伤害
注意:也可以通过投骰输入这个命令,格式为".r <投骰> - [人物列表]"。例如:
.r 2d6+7 - g1 g2 g3:对g1、g2、g3造成伤害,伤害的数量等于投骰结果
.r 3d12+11 -:对自己造成伤害,伤害的数量等于投骰结果

.+<数值> [人物列表]:为指定一个或多个人物治疗指定数量的hp。若未指定人物则治疗自身。用法举例:
.+5 Jim:Jim治疗5点hp
.+5:自身治疗5点hp
注意:也可以通过投骰输入这个命令,格式为".r <投骰> + [人物]"。例如:
.r d6+11 + Jim:治疗Jim,治疗的数量等于投骰结果
.r d6+11 +:治疗自己,治疗的数量等于投骰结果

.thp<数值> [人物列表]:为每个指定人物增加临时生命值。若不指定人物则为自身增加临时生命值。用法举例:
.thp5 Jim 昆  han:为Jim、昆、han每人增加5点临时生命值
.thp10:为自己增加10点临时生命值
注意:也可以通过投骰输入这个命令,格式为".r <投骰> thp [人物列表]",例如:
.r 1d6+2 thp Jim han 昆:将为Jim、han、昆每人增加临时生命值,其数量为投1d6+2的结果。注意,由于一次投骰只会有一个结果,所以三个人会得到同样数量的临时生命值。如果要每个人获得不同数量的临时生命值则必须为每个人分别投骰。
.r 1d6+2 thp:将为自己增加临时生命值,其数量为投1d6+2的结果。

状态

+<状态> [人物列表]:为一个或多个人物附加指定的状态。若未指定人物则附加到自身。用法举例:
+slow Jim:为Jim附加slow
+daze|4:为自身附加daze并标明4轮后结束
注意:附加状态时会记录附加状态所在的轮和回合。所以一定要在当轮要附加的状态全部加完之后再.end,否则自动结算时就会按下一个行动的人物的轮来结算状态了。
注意:状态的格式为<状态名>[|持续轮数]。分为状态名和持续轮数两部分,以"|"分隔。如果省略结束条件则TopicBot会按永久存在处理。
在回合开始时TopicBot会自动减少状态持续轮数和取消过期的状态。另外一些特殊的状态也会自动触发某些事件。目前TitleBot支持的特殊状态有dot、regen(regeneration)和fh(fast healing)。用法如下:
+dot5 Jim:为Jim附加5点dot。在之后每个回合进行到施加该状态的轮的时候Jim都会受到5点伤害。
+fh5|4 Jim:为Jim附加5点fast healing,持续4轮。在之后每个回合进行到施加该状态的轮的时候Jim都会获得5点治疗。
+regen5 Jim:为Jim附加5点regeneration。在之后每个回合进行到施加该状态的轮的时候Jim都会恢复5点瘀伤。

.nl<数值> [人物列表]:对每个指定人物造成瘀伤。若不指定人物则对自身造成瘀伤。瘀伤在标题中用括号里的负数表示。用法举例:
.nl5 Jim 昆  han:对Jim、昆、han每人造成5点瘀伤
.nl10:对自己造成10点瘀伤
注意:也可以通过投骰输入这个命令,格式为".r <投骰> nl [人物列表]",例如:
.r 1d6+2 nl Jim han 昆:将对Jim、han、昆每人造成瘀伤,其数量为投1d6+2的结果。注意,由于一次投骰只会有一个结果,所以三个人会受到同样数量的瘀伤。如果要每个人受到不同数量的瘀伤则必须为每个人分别投骰。
.r 1d6+2 nl:将对自己造成瘀伤,其数量为投1d6+2的结果。

-<状态> [人物列表]:从一个或多个人物身上解除指定的状态。若未指定人物则解除自身。用法举例:
-slow Jim:为Jim解除slow
-daze|4:为自身解除daze|4

其他

.endbattle:结束当前遭遇,退出当前遭遇环境。
« 上次编辑: 2014-11-19, 周三 11:25:53 由 jimraynor »
以下引自全能的羊姐姐:
挑出最優解不是容易的事。很多四版戰鬥時間就是花在等待或討論最優解之上的... 戰:"我應該把他打倒地還是推開他?" 賊:"別推別推我要夾擊" 牧:"可是不推的話他一快步我們就全體吃光環" 賊:"那麼你別動,我用換位打?" 法:"我也可以拉人." 戰:"不可以那是牆角你不能鈄拉" 法:"如果我這樣走的話好像可以拉了但牧師要讓路" 牧:"我走開就罩不住賊?" 然後,過了十多分鐘,大家談好了,戰士投骰,打失... "是時候重新想了."

离线 jimraynor

  • 版主
  • *
  • 帖子数: 1005
  • 苹果币: 0
Re: TopicBot使用手册及changelog
« 回帖 #1 于: 2011-10-31, 周一 17:00:09 »
change log:

2014.11.19 - ver 1.1
优化界面,重构部分代码。增加离线模式。

2014.10.30 - ver 0.14.0
修改先攻算法和事件触发方式,现在状态的持续时间可以正确的跟随.start/.goto命令进行变化了。
修正了.before和.after在多个先攻相同的人物之间不起作用的bug。
增加了瘀伤管理和瘀伤命令。
取消了.heal .dmg等命令,统一由.+/.-来调用,避免误伤自己。

2014.10.29 - ver 0.13.0
代码重构

2014.08.17 - ver 0.12.0
为竞技场重新启动项目。力争推广到小群体范围……

2013.05.19 - ver 0.11.0
为即将开始的昆团增加D6s投骰功能

2012.01.28 - ver 0.10.0
地图编辑器基础功能完成
增加pc自动投先攻的功能
多个小bug修复

2012.01.02 - ver 0.9.1
因为charstat太容易误操作以导致刷屏,将其默认参数改为调用者的ID
client与server的连接改为TCP连接以降低响应时间。增加命令/ensureConnection重置TCP连接,用于修复断开的连接。目前这个命令必须在topicbot实例中调用。

2011.12.29 - ver 0.9.0
Titlebot现在能够自动存储上一个团的结束状态了
Titlebot现在能够记录团中每个pc的xp,hp,surge,ap,encounter和daily powers的状态
增加了日志功能,PC和DM可以自行记录认为需要记录以便日后查找的内容(loot、xp发放、重要的线索、任务描述等等),并可以按日期或关键字检索。
增加了规则查询功能
« 上次编辑: 2014-11-19, 周三 11:24:25 由 jimraynor »
以下引自全能的羊姐姐:
挑出最優解不是容易的事。很多四版戰鬥時間就是花在等待或討論最優解之上的... 戰:"我應該把他打倒地還是推開他?" 賊:"別推別推我要夾擊" 牧:"可是不推的話他一快步我們就全體吃光環" 賊:"那麼你別動,我用換位打?" 法:"我也可以拉人." 戰:"不可以那是牆角你不能鈄拉" 法:"如果我這樣走的話好像可以拉了但牧師要讓路" 牧:"我走開就罩不住賊?" 然後,過了十多分鐘,大家談好了,戰士投骰,打失... "是時候重新想了."

离线 s.fish

  • Guard
  • **
  • 帖子数: 115
  • 苹果币: 0
Re: TopicBot使用手册及changelog
« 回帖 #2 于: 2011-10-31, 周一 19:14:56 »
刚看到先攻的记录和维护就已经湿了
世界征服

离线 Snow Patrol

  • 破邪显正
  • Diver
  • ******
  • 帖子数: 3473
  • 苹果币: 0
    • weibo
Re: TopicBot使用手册及changelog
« 回帖 #3 于: 2013-05-18, 周六 15:48:55 »
这个bot是怎么启用的呢?
M: I don't know how to put this to you, but trainspotters do have a certain reputation.
T: Which reputation are you thinking of?
M: Well... maybe for being a little bit dull?
T: I think you become involved to an extent that you ignore the real world outside. You come into your own little world and you have many people who join you in that, whether they're interested in mechanics, interested in the actual observations, interested in the operations. They all have their own little interest. But it means that we're committed to what we enjoy.
M: A little obsessive, then? You will admit to a little obsessive, would you?
T: I think obsessive, possibly, yes. Certainly not dull.

离线 jimraynor

  • 版主
  • *
  • 帖子数: 1005
  • 苹果币: 0
Re: TopicBot使用手册及changelog
« 回帖 #4 于: 2013-05-18, 周六 17:03:06 »
啊……其实是个桌面应用……而且实际上还在源码阶段……暂时没有外放的版本……谢谢关注……
以下引自全能的羊姐姐:
挑出最優解不是容易的事。很多四版戰鬥時間就是花在等待或討論最優解之上的... 戰:"我應該把他打倒地還是推開他?" 賊:"別推別推我要夾擊" 牧:"可是不推的話他一快步我們就全體吃光環" 賊:"那麼你別動,我用換位打?" 法:"我也可以拉人." 戰:"不可以那是牆角你不能鈄拉" 法:"如果我這樣走的話好像可以拉了但牧師要讓路" 牧:"我走開就罩不住賊?" 然後,過了十多分鐘,大家談好了,戰士投骰,打失... "是時候重新想了."

离线 Snow Patrol

  • 破邪显正
  • Diver
  • ******
  • 帖子数: 3473
  • 苹果币: 0
    • weibo
Re: TopicBot使用手册及changelog
« 回帖 #5 于: 2013-05-18, 周六 17:11:11 »
那么期待一下,楼主加油!
M: I don't know how to put this to you, but trainspotters do have a certain reputation.
T: Which reputation are you thinking of?
M: Well... maybe for being a little bit dull?
T: I think you become involved to an extent that you ignore the real world outside. You come into your own little world and you have many people who join you in that, whether they're interested in mechanics, interested in the actual observations, interested in the operations. They all have their own little interest. But it means that we're committed to what we enjoy.
M: A little obsessive, then? You will admit to a little obsessive, would you?
T: I think obsessive, possibly, yes. Certainly not dull.