1. 概览¶
1.1. 绪论¶
以下文档将尽其所能揭示你在游玩莉莉丝的王座时的不同体验。虽然该文档会尽量保证精确,但亲爱的读者,你也可以通过 res/mods/ 文件夹下的现有 xml 文件查看。
如果你有任何疑惑,可以到 Lilith's Throne Discord 寻求帮助!
1.2. 状态效果(status effects)及使用方法¶
我们将效果定义为一组逻辑条件,条件性地应用于角色。定义条件的来源各不相同,最终通过 applyEffect 块生效。大多数可穿戴物品必须被定义于某组套装内,以使用状态效果机制。
可穿戴物品必须被定义为某个套装的组成部分。该套装再根据简单的条件激活状态效果。虽然只有一个物品的套装有些反直觉,但也不是不能接受。不可穿戴物品能够直接调用 applyEffect 块,因此无需引用 statusEffect 。
1.3. 布尔值(Boolean Values)¶
部分元素是布尔开关,其值要么为true,要么为false。元素的名称通常应明确表示它的用途。例如 consumedOnUsed 表示玩家使用某物品后,该物品是否会被消耗。
当元素被确定为布尔类型,它的值应取以下之一:
truefalse
1.5. 物品标识符(Item’s identifier)¶
物品标识符是你对象的内部名称,也是在 xml 文件内引用它们的唯一方式。它是通过以下代码从你的衣物文件夹和 .xml 名称计算得出的:
modAuthorDirectory.getName() + "_"
+ innerChild.getParentFile().getName() + "_"
+ innerChild.getName().split("\\.")[0]
对于 res/mods/innoxia/clothing/template/socks.xml 中的对象将会解析为 innoxia_template_socks 。
你的模组文件夹结构中的每个相关文件都会自动生成一个标识符。需要牢记在心,标识符是由系统生成的,而非用户定义的。如果重命名了任何文件夹或 xml 文件,标识符将发生变化,从而使存在于玩家存档文件中的所有引用失效。
1.7. 价值(value)¶
对象的基础价值。个人粗略认为1火币=10便士,所以10火币=1英镑。(1火币=1人民币)
1.8. 名称(name)¶
名称元素包含了对象名称的单数形态(一只 袜子 ,中文一般不考虑单复数)。
名称元素又是也可以接受变量,请参照想要创建的特定对象的文档获取更多信息。
对于部分对象,名称可能并不会显示给玩家,只用作debug,如套装(outfits),所以也可以比较随意。
1.8.1. 复数名称(plural name)¶
每一个拥有名称的对象同时也有其复数形式。如果想使用非通用的复数形式,请将其填入。
1.9. 冠词(determiner)¶
冠词将会在物品名前出现。通常为“a”或者“an”(中文一般根据物品不同修改量词),而对于袜子或者手套之类,或许应该使用“一双”。所有文本值都应使用 CDATA 标签包裹,保证html标记确保无误地嵌入到游戏中。
该元素未定义时,游戏将基于物品名称,自动选择“a”或“an”。如果该元素传入的值就是“a”或“an”,游戏也会将其无视。
文本示例
Innoxia正拿着 一把 剪刀。
代码示例
<determiner><![CDATA[a pair of]]></determiner>
1.10. 描述(Description)¶
对于物品较长的描述。对于物品分类下的所有对象都应该设置。
1.11. 物品的图像¶
imageName 元素会存在于多种对象中。该元素的内容表明了对象图像的文件路径。所有图像 必须 为.svg格式。所使用的颜色将在其下描述, primaryColours 元素中。通常使用免费程序 InkScape 来制作svg图像。svg图像可以随意缩放大小,当形状为方形时,画布的大小并不重要(个人倾向于使用256 x 256的画布)。
如果该物品可以被装备,那也应该提供 imageEquippedname 。请参见对应文档获取更多信息。
1.12. 稀有度(rarity)¶
可以使用文件: src/com/lilithsthrone/game/inventory/Rarity.java 中的常量列表定义多个物品的稀有度。
请注意,任何设置为传说(LEGENDARY)稀有度的物品都不会在游戏中自然出现,无论是商店还是随机事件。
1.13. 颜色¶
颜色可用于大多数可修改的物品。通常,所有类型的物品遵循的规则都大致相同,武器是个例外,它们会在核心机制上有所扩展。
你的物品可以被染成任意你喜欢的颜色,不过如果你想让玩家也能给你的衣物染色,你可以在这里设置可选择的颜色。 primaryColours , secondaryColours 和 tertiaryColours 都可以作为默认生成颜色,但“染色”项只有在玩家选择把衣物染成该颜色时才会生效。游戏会检测特定颜色值,并将其重置为玩家选择的值,数值如下:
Red 是改变游戏内图形主要颜色的基础颜色,游戏只会识别并更改以下颜色:
#ff2a2a#ff5555#ff8080#ffaaaa#ffd5d5
Orange 是游戏中更改图形次要颜色的基本颜色,游戏只能识别和更改以下颜色:
#ff7f2a#ff9955#ffb380#ffccaa#ffe6d5
Yellow 是游戏中更改图形三级颜色的基本颜色,游戏只能识别和更改以下颜色:
#ffd42a#ffdd55#ffe680#ffeeaa#fff6d5
重要
使用的渐变色应命名为: innoGrad1 , innoGrad2 诸如此类。
这些颜色的直观表示可以在这里查看 wiki 。
可使用颜色列表在这里:src/com/lilithsthrone/utils/colours 。
你可以在颜色定义中忽略属性 recolouringAllowed 。但如果你希望玩家无法染色,则需将其设置为false。这仅在非常特殊的情况下使用(例如小雌驹项圈)。
你也可以定义自己的可使用颜色列表。以下 tertiaryColoursDye 中的颜色都在列表 ALL 中预置,但这只是为了演示。
如果你想包括自定义颜色,那么不要定义 values 属性,而是需要列出每个颜色(Colour)。
重要
请使用以 CLOTHING_ 开头的 Colour 值。
- 代码示例
<primaryColours recolouringAllowed="true" values="JUST_WHITE"/> <primaryColoursDye values="ALL"/> <secondaryColours values="JUST_BLACK"/> <secondaryColoursDye values="ALL"/> <tertiaryColours values="JUST_WHITE"/> <tertiaryColoursDye> <colour>CLOTHING_WHITE</colour> <colour>CLOTHING_BLACK</colour> <colour>CLOTHING_GREY</colour> <colour>CLOTHING_RED</colour> <colour>CLOTHING_RED_BRIGHT</colour> <colour>CLOTHING_RED_DARK</colour> <colour>CLOTHING_ORANGE</colour> <colour>CLOTHING_ORANGE_BRIGHT</colour> <colour>CLOTHING_ORANGE_DARK</colour> <colour>CLOTHING_BROWN</colour> <colour>CLOTHING_TAN</colour> <colour>CLOTHING_YELLOW</colour> <colour>CLOTHING_GREEN_LIME</colour> <colour>CLOTHING_GREEN</colour> <colour>CLOTHING_GREEN_DARK</colour> <colour>CLOTHING_TURQUOISE</colour> <colour>CLOTHING_BLUE_LIGHT</colour> <colour>CLOTHING_BLUE</colour> <colour>CLOTHING_BLUE_DARK</colour> <colour>CLOTHING_PURPLE</colour> <colour>CLOTHING_PURPLE_DARK</colour> <colour>CLOTHING_PURPLE_LIGHT</colour> <colour>CLOTHING_PINK</colour> <colour>CLOTHING_PINK_LIGHT</colour> </tertiaryColoursDye>
1.13.1. 自定义颜色¶
你可以定义任意数量的自定义颜色,以替换为 svg 上色的可使用颜色。
以下示例展示了 copyColourIndex 属性的用途,即定义生成武器时将哪种颜色索引复制到颜色栏位中。对于某个颜色,若其索引为0,那么生成时,该颜色会被作为主要颜色。颜色索引为 0 \(\to\) X ,其中X为已定义颜色的数量。例如,如果你只定义了主要颜色和次要颜色那么第一个自定义颜色的索引即为2。(译者注:在例子中,主要颜色索引为0,次要颜色索引为1,第一个自定义颜色(即第三个被定义的颜色)索引为2。其中 0 \(\to\) X 为左闭右开区间。例子中,X=3。)
属性 c0 \(\to\) c4 是你正在svg图像中使用的颜色,你可以用下面定义的颜色来替换它们。其中 c0 是最深的阴影色。阴影可以被设置为任何数,但只设置5种阴影效果最好。
如果你使用了 primary / secondary / tertiary 元素,那么就不要使用它们关联颜色的十六进制值。(例如:如果你定义了 primaryColours 元素,那么就不要在customColour属性中使用使用 #ff2a2a 、 #ff5555 、 #ff8080 、 #ffaaaa 或 #ffd5d5 中的任何一个。)
你 不能 使用下列颜色,因为它们是图样保留色:
|
|
|
<customColours>
<customColour copyColourIndex="0" c0="#6C5353" c1="#916F6F" c2="#AC9393" c3="#C8B7B7" c4="#E3DBDB"> (ref:cci)
<defaultColours>
<colour>CLOTHING_GREY</colour> <!-- The colours which this clothing should spawn in with. -->
</defaultColours>
<extraColours values="ALL"/> <!-- The colours which this clothing can be dyed to. -->
</customColour>
</customColours>
1.13.2. 状态效果特例¶
状态效果可以接受颜色,但接受度较小。状态效果的颜色用于给图标重新着色,因此最多可接受 primary , secondary 和 tertiary 三种值。
1.14. 解析¶
“莉莉丝的王座”中,内置了简单的富文本解析功能,如果某项内容会被解析,那么就代表你可以使用以下写法。
1.15. 可选项¶
如果一个元素为可选项,假设元素的标签名为 element,那么你可以使用以下写法。
<element/>
或者直接省略该元素。
如果一个属性为可选项,假设属性的名字为 attribute,那么你可以直接省略该属性。