战斗卡牌Mod-进阶指南

0 点赞
电竞教父
转载

战斗卡牌mod的进阶指南,不适合入门。 需要先了解官方卡牌示例的源码 序言 游戏的战斗卡牌一共由以下的几个部分组成 1. 卡牌基础信息 2. 卡牌的费用&入场时机 3. 卡牌的关键词设定 4. 卡牌的目标选择设定 5. 卡牌的效果器编写 6. 卡牌的ai设定 在阅读本篇指南前,请先阅读卡牌示例的源代码官方卡牌示例 并且在创意工坊订阅以下工具模组 本地化提取器 实体设定提取器 一. 卡牌的基础信息 首先是我们创建战斗卡的设定对象时需要设置的几个属性

(1)战斗卡牌类型【battleCardType】这个属性是一个枚举值。 如果想要为英雄卡组添加卡牌,那么卡牌类型设置为【Hero】。 如果想要为选手特性添加卡牌,或想要让选手能够学习到该卡牌,设定为【Trait】。 如果是战斗规则附带的卡牌,那么设定为【Strategy】。

(2)Id类型为Guid,若使用Windows系统,可直接在PowerShell中使用New-Guid生成。注意:不允许重复!!! (3)设定名称name类型为字符串,同样不允许重复。我们需要通过它为这个设定添加展示的文本信息。 (4)卡牌系列cardSeries为暂时无用属性,设置为空字符串即可。 (5)卡面图片cardCoverUrl放置在该mod项目的Content文件夹的Texture文件中,若不存在则手动创建。路径参考章节开头的截图。(6)卡牌AI类型 battleCardAIType 这个属性是一个枚举值,若希望AI能够使用该卡牌则需要进行设置: ● 若希望AI必定会出这张牌,设定为【最高优先】 ● 若希望AI优先出这种牌,设定为【优先】 ● 若是移动卡,需要设定【战斗移动】 ● 若是消耗卡,需要设定【消耗】 ● 若是回复血量或添加护盾的卡,需要设定【防止突袭】 ● 造成血量变动的卡牌,都需要设定【战斗改变评分】 ● 若是抽牌或回复战术点,需要设定【卡组】 以此类推....

(7)卡牌目标选择类型 battleCardTargetSelectType 这个属性是一个枚举值,设定为【普通】即可

(8)范围颜色类型【cardRangeColorType】这个属性是一个枚举值,对应的是卡牌选择目标时的范围提示。

二.卡牌的费用&入场时机

(1)卡牌费用 类型为整数,卡牌的基础战术点费用 (2)卡牌尺寸 类型为整数,卡牌占用的手牌数量,设定为1即可。 (3)入场时间 类型为整数,游戏开始时进入牌堆为0,-1为不加入牌堆 如果是通过效果衍生的卡牌,设定为-1 三.卡牌的关键词设定

卡牌上可以添加多个关键词,部分关键词会附带效果。我们可以通过关键词对应的【Key】,获取到设定对象并将其添加到卡牌设定对象上。

四.卡牌的目标选择设定 在游戏中,有些卡牌需要选择目标,有些卡牌则不需要。 (1)不需要选择目标:不需要选择目标的卡牌设定比较简单,只需设定目标类型数量为0。

(2)需要选择目标

如果要选择目标,那么需要配置的参数会比较多 1.目标类型【TargetType】和收集目标0类型【Collect_Target0_TargetType】这两个属性都是枚举值,设定的是打出卡牌前需要选择的目标所对应的类型。

2.目标范围形状【CellRangeType】和收集目标0范围形状【Collect_Target0_Shape】这两个属性均为枚举值,用于设定选择目标时范围的几何形状。

3. 单元格选择范围半径(CellRange1)和收集目标0选择范围半径(Collect_Target0_Radius):这两个属性的类型为整数,用于设定选择目标时的范围半径。 4. 收集目标0起点类型(Collect_Target0_StartType):该属性是枚举值,用于设定选择目标时的范围中心点。常用的是以当前英雄为中心点,此时设置为【Hero】。若范围为全地图,则设置为【All】。设置为全地图时,无需设置范围半径和形状。

5. 收集目标0筛选目标类型【Collect_Target0_FilterTargetType】这个属性是枚举值,在设定选择目标的类型后可以对目标先进行预设的条件筛选。 例如: ● 选择我方队伍的存活英雄【UnitSelfAlive】 ● 选择敌方队伍的存活英雄【UnitEnemyAlive】 ● 选择双方队伍的存活英雄【UnitAnyAlive】

五.卡牌效果器编写 卡牌效果执行的监听有如下三个,可配置对应的回调函数: ● 效果触发时(OnEffect_On) ● 效果结束时(OnEffect_End) ● 直接效果触发时(OnDIrectlyEffect)

如果需要获取到选择的目标,可以模仿以下代码 在这里我选择的是战斗单元格,所以对应的逻辑实体是【LogicEntity_BattleCell】。 需要替换为选择目标所对应的逻辑实体类型,比如英雄单位【LogicEntity_Unit】

如果在效果的回调函数中,有多个任务操作需要执行,可以模仿以下代码

六.卡牌的AI设定 最后是AI的设定,如果不想让AI也使用卡牌,此处可以略过。 (1)属性配置

在AI进行卡牌权重判定时,并不能直接知道效果影响到了哪些目标,所以需要设置这些参数来收集卡牌效果影响到的目标。 1. 效果影响开始目标【Collect_Effect_StartType】:这个属性是枚举值,设定是效果执行影响时的范围中心点。 如果卡牌不需要选择目标直接执行,设置为卡牌英雄【Hero】 如果卡牌需要选择目标,通常设置为目标【Target0】

2. 效果影响范围半径【Collect_Effect_Radius】:该属性类型为整数,用于设定效果影响的范围半径。若选择目标与效果影响目标一致,则无需设置此属性。 3. 效果影响形状【Collect_Effect_Shape】:该属性为枚举值,用于设定效果影响范围的几何形状。若选择目标与效果影响目标一致,则无需设置此属性。

4. 效果影响目标类型【Collect_Effect_TargetType】:该属性为枚举值,用于设定卡牌效果所影响目标的对应类型。

5.效果影响目标过滤类型【Collect_Effect_FilterTargetType】这个属性是枚举值,用于对效果影响目标进行条件筛选。如果选择时的目标就是效果影响的目标,设定为仅起点目标【OnlyStartTarget】。

(2)AI权重属性演算 通过前面的配置,AI在权重判断时就能够获取到被效果影响的目标对象。最后要做的就是AI权重的属性演算,能够影响AI对卡牌的选择。 1. 抽牌或回复战术点

CardAI_Group_NumCards 表示抽牌数量 CardAI_Group_EnergyValue 表示回复战术点数量 2.战斗移动卡

Move_TargetMode 表示的是被移动的对象,该属性为枚举值。通常情况下设定为自身【Self】。

Move_DestinationIndex 表示移动目的地序号,该属性为枚举值。通常情况下设定为目标0 战斗卡牌效果目标序号类型(BattleCardEffectTargetIndexTypes)

3.使单位血量发生变化的卡牌

CardAI_Fight_HeroScoreTargetsType 表示的是血量变动的单位类型,通常情况下设置为 EffectTargets

CardAI_Fight_PanelDefenceScoreDelta 表示的是预计变化的血量。正数值代表回复或添加护盾,负数值表示造成伤害。4.发育卡

CardAI_Farming_TargetType 表示的是发育卡的目标类型,该属性是枚举值。如果是为卡牌所属英雄设置,则选择【Self】;如果需要选择目标,则选择【EffectTargets】。

CardAI_Farming_Duration 打钱效果持续的回合数,该属性为整数 CardAI_Farming_Efficiency 提升的打钱效率,浮点数(例如:0.3) CardAI_Farming_DirectGold 打钱增长金钱,直接获取的金钱收益或属性折算为金钱收益 (3)AI目标权重属性演算

AI决定使用这张卡牌时,需要根据权重对可选目标进行排序。 【CardAISelectTargetWeight】表示AI选择某个目标的权重。 七、完整的代码示例