卡牌
卡牌是酒馆的核心,而商店中的所有卡牌都是基于卡牌模板生成的。为了能让玩家找到并购买卡牌,我们首先需要设计卡牌的卡牌模板。
添加一个卡牌模板
我们以创建非拓展包的人族卡牌为例,首先找到动作核心人族初始化
位置
商店阶段>卡牌模板>模板初始化>卡牌数据>核心人族初始化
可以看到,我们是通过动作添加一个卡牌模板
来创建卡牌模板的。下面我们来简述这个动作所有参数的作用:
- 卡牌名称:只用于展示,无法根据卡牌名称区分卡牌。
- 卡牌识别符:用于赋予卡牌一些特性,比如当你希望你的卡牌无法三连时,可将此参数改为“无法三连”。
- 卡牌子类:卡牌子类跟卡牌识别符类似,也用于识别和区分卡牌。其主要功能是标识卡牌的子种族或阵营(如“原始虫群”、“塔达林”、“埃蒙”等)。
- 卡牌种族:用来设置卡牌所属种族。
- 初始单位:用来设置卡牌的初始单位。
- 特效字符串:为了让卡牌具有特定的功能,我们必须使用“特效字符串”。这也是制作卡牌最重要的环节。
- 词条说明字符串:如下图所示的词条提示,它就是根据“词条说明字符串”自动生成的。
- 虚空投影:值为
真
时,卡牌将自带虚空投影。 - 卡牌自定义描述:值为
无文本
时,将自动生成描述。否则卡牌描述将变为此值。 - 卡牌自定义描述(三连后):与“卡牌自定义描述”类似,不过是三连后的描述。
- 卡牌星级:1-6星的卡牌可进入商店。
卡牌识别符
用于赋予卡牌一些特性。
所有卡牌识别符
- 无法三连:参考卡牌「挖宝奇兵」。令卡牌无法三连并且显示为暗金色。暗金色具体说明请参考“金色卡牌与三连”。
- 无法进入卡池:这样的卡牌无法在商店中找到,出售后也不会补充到商店中。
- 无:无特性
- 建筑卡:参考角色“行星要塞”的特殊卡牌,包含了“无法进入卡池”的特性。
- 红卡:将卡牌变为红色,并没有具体作用。你可以根据自己的想法赋予特性。
- 辅助卡:参考角色“诺娃”的特殊卡牌,无法进入卡池,并且出售无法获得晶体矿。
- 出售免费。
- 虫卵:用于识别卡牌是否为虫卵。
- 比赛冠军:本是用于制作寿仙杯冠军的卡牌,现在也可以用来制作特典卡牌。其特性是:每局游戏初始化时,有一定概率为卡池添加1张此卡牌,否则无法找到该卡牌。
自制卡牌识别符
假如我想做一个卡牌识别符,让进场的卡牌无法被出售(只能被摧毁)。请参考以下步骤
- 创建卡牌识别符
找到预设类型卡牌识别符在其中创建新的识别符即可。位置
卡牌>卡牌识别符
- 使用卡牌识别符
找到动作尝试出售卡牌
然后添加以下代码:位置
玩家>玩家牌库>尝试出售卡牌
我们只需判断玩家已选择的卡牌
的成员卡牌识别符
是否为进场无法出售
即可。
卡牌子类
卡牌子类跟卡牌识别符类似,也用于识别和区分卡牌。
所有卡牌子类
UED:废案阵营。- 原始虫群:参考卡牌「原始刺蛇」,选择此子类的卡牌可以发现原始专有升级,并且可以跟“供养”联动。
佣兵:废案阵营。- 无:无特性。
- 塔达林:目前无特性,可以考虑为其添加专属升级。
- 刀锋女王:用于识别卡牌是否为「刀锋女王」。
- 埃蒙:选择此子类的卡牌可以发现黑暗专有升级(目前只有“虚空能量”)。
想要实现“卡牌子类”具有专属升级,请参考“升级池”。
卡牌种族
类型为整数,实际上只有4个值,我们用4个常量表示:
_Terran
值为0,表示人族卡牌。_Zerg
值为1,表示虫族卡牌。_Protoss
值为2,表示神族卡牌。_Void
值为3,表示中立卡牌。
注意
无法添加新的种族,请使用卡牌子类来细分种族的阵营。
初始单位
如果你的单位种类超过了3,请使用动作为刚才的模板补充额外单位
,参考卡牌「步兵联队」。
词条说明字符串
词条说明字符串由a-z
26个字母组成。每一个字母对应一个词条。找到动作初始化特殊词条
在此添加或修改词条。
位置
玩家卡牌特效>特殊词条>初始化特殊词条
注意
必须使用一个字符代表一个词条,切记不要用多字符代表一个词条。如果你不满足于26个词条的上限,请找到常量_特殊词条数量上限
和函数特殊词条索引字符对应
进行修改。
自动补充词条说明
一些子特效字符串将自动为卡牌的“词条说明字符串”添加词条。你只需要手动补充那些遗漏的词条即可。你也可以修改函数自动填充左侧特殊词条
,来修改自动补充功能。
自制词条
目前酒馆最多支持26个词条,因此不推荐新建词条,而是更改目前一些不再被使用的废弃词条。修改步骤如下:
- 在动作
初始化特殊词条
中修改动作添加一个特殊词条
,来修改词条。其参数如下:
- 名称
- 字符代号:用一个字母表示该词条。仅做修改时,不需要修改此参数。
- 标志颜色
- 介绍
- 对话框中显示高度
- 可简化:参考下图,值为
真
时,购买后的卡牌将只显示一个“感叹号图标”。 - 简化后标题宽度:用于确定“感叹号图标”的位置。
- 按照
1
对应a
、2
对应b
...的关系。根据你修改词条的字符代号
,在文件夹“玩家卡牌特效>特殊词条>变量/常量”找到对应的常量。比如c
对应的常量是_特殊词条 - 空投索引
。然后将常量名称修改为你需要的名称。这些常量就是词条对应的索引。
提示
你可以使用函数特殊词条索引字符对应
,来自根据“词条索引”为“词条说明字符串”添加词条。 也可使用函数获得特殊词条名称
和获得特殊词条名称带冒号
快速获取词条名称。
卡牌描述
卡牌自动生成描述的规则为:
- 卡牌自定义描述为
无文本
,则自动生成普通描述文本。 - 卡牌自定义描述(三连后)为
无文本
且卡牌自定义描述也为无文本
,则自动生成三连描述文本。 - 卡牌自定义描述(三连后)为
无文本
且卡牌自定义描述不是无文本
,则三连描述文本和普通描述文本相同。
想知道“特效字符串”如何自动生成卡牌描述请参考自动生成描述。
想要自动生成又想自己加东西?
- 你可以使用动作
卡牌自动描述的补充描述
来既保证卡牌能自动生成描述,又能在其后面补充自定义的描述。可参考卡牌「暗影卫队」中如何使用的。 - 或者使用函数
根据特效字符串生成描述文本
,你可以自定义描述文本的时候,不用浪费时间写一些可以自动生成的文本。参考卡牌「阿塔尼斯」的卡牌自定义描述。
金色卡牌与三连
卡牌的金色分为普通金色和暗金色。判断规则为:
卡牌识别符
值为无法三连
,则卡牌是暗金色卡牌。- 卡牌变量的成员
金色
为真
且卡牌识别符
值不为无法三连
,则是金色卡牌。
三连卡牌的过程为:将卡牌变为“金色”卡牌,合并场上两张卡牌的单位,并给玩家三连奖励。因此我们可以知道,一张卡牌只要是金色
为真
,且卡牌识别符
的值不是无法三连
那它就具有三连效果。
提示
想将一张非金卡牌变为金色,只需要修改全局数组玩家的卡牌
中对应卡牌的金色
为真
。
熟练使用卡牌模板
如果你想了解更深层次的机制,请往下看。
卡牌模板索引
当动作添加一个卡牌模板
运行后,它会将卡牌模板的数据存入一个全局数组变量卡牌所有模板
。这个数组保存了所有卡牌模板的数据,因此我需要某个卡牌模板的数据时,只需要知道它在卡牌所有模板
中的索引(也就是“卡牌模板索引”),然后就能得到卡牌模板的数据。
卡池
我们将“卡牌模板索引”塞入卡池,让玩家可以在商店中找到并购买它所对应的卡牌。这一步将是自动完成的,我们无需操作。
卡池初始化
具体如何把“卡牌模板索引”塞入卡池,请参考:商店阶段>卡池>卡池初始化
商店卡牌和暂存区卡牌
商店运作的机制
- 从卡池中抽取“卡牌模板索引”。
- 根据“卡牌模板索引”创建卡牌,陈列在商店中。
- 玩家购买卡牌,获得该商品的“卡牌模板索引”。
- 根据被购买商品的“卡牌模板索引”,生成卡牌到玩家手里。
我们从这个机制中可以知道,商店中的卡牌只是“卡牌模板索引”的体现,你是无法修改商店卡牌的具体数据的。
陈列的商品的卡牌模板
为了手动获取商店中某个玩家的某张卡牌的“卡牌模板索引”,我们可以找到全局数组变量陈列的商品的卡牌模板
,我们可以看到这是一个二维数组。为了根据索引获取数据,我们还需要全局数组变量卡牌所有模板
。比如我们想知道玩家2的商店中,在5号位摆放的卡牌的种族是不是人族时,我们可以这样写:
值得注意的是,暂存卡牌的“卡牌模板索引”也储存在陈列的商品的卡牌模板
中。比如我们想知道玩家3的暂存4号位的卡牌模板索引,我们可以这样写:
你可以直接认为:“暂存区中的卡牌”和“商店中的卡牌”唯一的区别是“进场和三连”前者不需要花钱。 因此你完全可以把它们等同看待。
索引
陈列的商品的卡牌模板
中索引1到_陈列商品数量上限
储存的是“商店中的卡牌”的“卡牌模板索引”;(_陈列商品数量上限
+1)到_陈列商品数量+手牌数量上限
是“暂存的卡牌”的“卡牌模板索引”。
卡牌模板索引为0
当陈列的商品的卡牌模板
储存的某个值为0时,表示此玩家的此位置是一个空位。
玩家已选择的陈列商品
变量玩家已选择的陈列商品
表示当前玩家选择的“商店中卡牌的位置”或者“暂存卡牌的位置”。(注意,如果是观战玩家,那他选择的位置是观看对象的卡牌位置)。
参考
函数获取玩家商店中卡牌的数量
是如何实现的:
玩家的卡牌
玩家的卡牌特指已进场的卡牌,因此不包括暂存卡牌。当商店卡牌或暂存卡牌进场时,会根据进场卡牌的“卡牌模板索引”获取到卡牌模板数据,然后克隆一个卡牌出来。我们用全局数组变量玩家的卡牌
储存玩家卡牌的所有数据。不同于陈列的商品的卡牌模板
只储存“卡牌模板索引”,玩家的卡牌
储存卡牌的所有数据。
玩家已选择的卡牌
变量玩家已选择的卡牌
表示当前玩家选择的卡牌位置(注意,如果是观战玩家,那他选择的位置是观看对象的卡牌位置)。
卡牌模板索引为0
当玩家的卡牌
的成员模板索引
为0时,表示此玩家的此位置没有卡牌。如果为负则表示是特殊卡牌(如虫卵牌的卡牌模板索引
为-1)
遍历玩家的卡牌
使用动作为玩家每张卡牌执行
来遍历玩家所有已进场的卡牌。该动作将自动忽略模板索引
为0的空卡牌。使用函数触发卡牌索引
来获取当前遍历到的索引。
运用卡牌模板
记录并获取卡牌模板索引
卡牌模板初始化后,全局数组变量卡牌所有模板
会进行一次重新排序。我设计了一个卡牌模板,那么如何知道这个卡牌模板的“卡牌模板索引”具体是多少呢?为此我们需要使用动作记录刚才添加的卡牌模板的索引
和函数获取卡牌模板索引
。参考「原始刺蛇」的记录和使用:
- 使用动作
记录刚才添加的卡牌模板的索引
于添加一个卡牌模板
下方,用创建的常量_模板ID - 原始刺蛇
作为模板id。
- 使用函数
获取卡牌模板索引
,用对应的模板id,即_模板ID - 原始刺蛇
来获取“卡牌模板索引”。
手动给玩家添加卡牌
使用动作塞给玩家一张卡
可为玩家立即添加一张卡牌。默认添加到暂存区,如果暂存区满则直接进场(有定点部署的卡牌依然会让玩家选择部署位置)。如果场上卡牌也满了,则作废。参数只允许暂存
为真
时,暂存区满则不会直接进场。