Open umajho opened 1 year ago
外部变量名称的语义由外部决定。比如配合 rotext
rolludejo
也可以是这样:
所有外部变量(依然)以 $
开头。除去开头的 $
后:
_
的是楼层内的临时变量,如:$_tmp
。.
的是角色所属变量,默认串主和角色持有者可以写入,如:$小明.hp
。.
,如:$.hp
。下面提到的方案已经存在一段时间了,但一直没有放到这里。
这个方案主要配合 rojo
[^1] 的角色系统。
考虑到一个角色名为 小明
,很自然能想到用 @小明
来提及它。
虽然 rojo
目前没打算引入提及系统,但 Dicexp 可以借用这种标记方式。
具体如下:
@_(<name>)
用于访问临时变量,其仅在楼层内有效。(也就是说,角色名(甚至具名)不能以 _
开头。)@(<role name>).(<property name>)
用于访问对应角色拥有的属性(变量)。@.(<property name>)
在发帖者指定了扮演的角色(之前所说的 “主要角色”)时,作为访问那个角色拥有的属性(变量)的简写形式。不过也可能不会实现这个。@@(<name>)
用于访问全局变量。[^1]: rolludejo
太长了,留头存尾去中间得 rojo
。
已于 19f0e78bad1b37bb6662e7732a5c4a7df833f16e 在语法层面上支持引用第一层外部变量。 要完整实现,还剩下:
.
访问 Map 变量的值。parsing
部分提前提取出可能需要的外部变量。(包括分析:使用 .
嵌套的静态访问,以及哪些部分由于可能涉及动态访问而无法分析。)executing
部分支持载入外部变量。(直接全部传进去,还是传入一个按需返回变量对应值的函数?)
以
$
开头的标识符指向外部变量,其标识符中间允许有不连续的.
,在开头的$
后也可以再跟一个$
或.
。外部变量在开始求值之前由外界注入。
配合 rotext,目前设想可以这么做:
{= d100 <= $.luck }
,发串者的主要角色为x
时也可以是{= d100 <= $x.luck}
。{ $.hp = 42 }
,… 时也可以是{ $x.hp = 42 }
。{ $.hp -= d4 }
,… 时也可以是{ $x.hp -= d4 }
。-
也可以是其他二元运算符。{ $_tmp = 42 }
,以$_
开头则只在帖子(楼层)内生效。{ $$day = 42 }
,以$$
开头则属于全局。