Skip to content

游戏逻辑 - 文档

单位名称对照

  1. 剑士(Swordsman)
  2. 弓箭手(Archer)
  3. 黑蝙蝠(BlackBat)
  4. 牧师(Priest)
  5. 火山之龙(VolcanoDragon)
  6. 海洋之龙(FrostDragon)

神器名称对照

  1. 塞瓦哈拉的圣光之耀(HolyLight)
  2. 洛古萨斯的地狱之火(InfernoFlame)
  3. 衍生的地狱火(Inferno)
  4. 马尔瑞恩的阳炎之盾(SalamanderShield)

单位(Unit)

单位的属性

  1. id:全局唯一的ID,依据召唤顺序生成,召唤顺序靠前的ID小
  2. camp:单位所属阵营,一般情况下为0或者1
  3. level:单位的等级
  4. type:单位的类型
  5. name:单位的名字,组成为“[类型] (level [等级])”
  6. cost:单位的召唤花费
  7. atk:单位的攻击力
  8. max_hp:单位的血量上限
  9. hp:单位的血量
  10. atk_range:是一个二元元组,第一个数是单位攻击距离的最小值,第二个是最大值
  11. max_move:是一个二元元组,第一个数是单位移动距离的最小值,第二个是最大值
  12. cool_down:单位死亡后所需的冷却时间
  13. pos:是一个三元元组,表示单位在地图上的坐标
  14. flying:布尔类型,表示单位是否为飞行单位
  15. atk_flying:布尔类型,表示单位是否能攻击飞行单位
  16. agility:布尔类型,表示单位是否具有迅捷词条
  17. holy_shield:布尔类型,表示单位是否具有圣盾
  18. can_move:布尔类型,表示单位是否可以移动
  19. can_atk:布尔类型,表示单位是否可以攻击

单位具有的默认监听器

  1. 伤害监听器
  2. 攻击监听器
  3. 移动监听器
  4. 反击监听器
  5. 治疗监听器
  6. 圣盾加持监听器
  7. 圣盾破坏监听器
  8. 刷新攻击移动监听器
  9. 每回合动作限制监听器

部分单位具有的特殊监听器

  1. 牧师会根据等级获得治疗光环监听器或者攻击光环监听器
  2. 火山之龙会获得攻击溅射监听器

事件(Event)与监听器(EventListener)

事件采取堆的形式存储,每个事件都有一个优先级和时间戳,两件事件中优先级高的事件或者相同优先度先触发的事件会先被广播并由监听器作出反应。

默认优先度为0,优先度数字越小越优先执行

事件会带有一些参数,以便监听器使用

监听器列表

[监听器名称]([监听事件名称])

伤害监听器(Damage)

一个单位受到伤害,如果该单位有圣盾,伤害置0且破除圣盾,触发HolyShieldBreak事件 目前的伤害类型有:Attack,AttackBack,VolcanoDragonSplash,InfernoFlameActivate

Buff获得(BuffAdd)

一个单位获得Buff 类型:BaseBuff,PriestAtkBuff,HolyShield,HolyLightAtkBuff,SalamanderShieldBuff

Buff失去(BuffRemove)

一个单位失去Buff

攻击监听器(Attack)

一个单位发动攻击

流程如下

  1. 触发Attacking事件,表示发动攻击
  2. 触发Damage事件,造成伤害
  3. 触发Attacked事件,表示受到攻击
  4. 触发优先度为4CheckDeath事件,与整个攻击流程结束后检查单位死亡情况

反击监听器(Attacked)

一个单位发动反击

如果本单位可以攻击到伤害来源,则对伤害来源触发Damage事件

治疗监听器(Heal)

一个单位受到治疗

回血

刷新攻击移动监听器(Refresh)

单位在自己本回合开始时获得可以移动和攻击的属性

刚召唤的单位默认不能移动和攻击,因为没有经历过Refresh事件

每回合动作限制监听器(Arrive/Attack)

单位移动完成/发动攻击后会触发并且标记为不可移动/不可攻击,如果没有迅捷属性会同时标记为不能攻击/不能移动

牧师治疗光环监听器(TurnEnd)

牧师治疗光环在回合结束发动

对光环范围内所有友方单位触发Heal事件

牧师攻击光环监听器(UpdateRingBuff)

牧师攻击力光环的更新

对新进入光环范围单位加持光环

对离开光环范围的单位删除光环

火山之龙攻击监听器(Attacked)

火山之龙攻击的溅射

对被攻击的目标周围敌方单位触发Damage事件

回合开始玩家的刷新监听器(Refresh)

玩家在回合开始更新自己的法力上限与恢复所有法力值

玩家冷却中的生物单元和神器冷却一次

玩家的“新召唤”列表清空

生物进入冷却的监听器(Death)

玩家检测到自己的单位死亡,则将其置入冷却状态

召唤完成监听器(Spawn)

玩家召唤一个生物完成后更新自己的法力值、生物单元状况和“新召唤”列表

触发神器监听器(ActiveArtifact)

玩家激活自己的神器

状态系统召唤监听器(Summon)

状态系统召唤一个单位,之后发出Spawn事件

死亡检查监听器(CheckDeath)

状态系统检测地图上所有生命小于等于零的生物,对其打上死亡标记并发出Death事件

在当前事件循环结束后状态系统会把所有被标记死亡的生物删除

驻扎点占领监听器(CheckBarrack)

状态系统更新地图上全部驻扎点的占领情况

回合开始监听器(TurnStart)

状态系统对当前回合玩家发出Refresh事件

状态系统发出优先度为4CheckBarrack事件

状态系统发出优先度为4NewTurn事件

当前回合玩家交换监听器(TurnEnd)

状态系统切换当前回合玩家

游戏开始监听器(GameStart)

状态系统根据事件参数初始化玩家卡组

操作合法性检测

合法性检测中将会依据所列顺序依次进行操作合法性的检测,在进入检测之前会首先验证收到的指令是对当前回合的指令

游戏开始


选手分别初始化(Init)

  1. 规定选择一张神器卡,三张生物卡

  2. 生物卡不能有重复

  3. 生物卡在游戏中存在

  4. 神器卡在游戏中存在

游戏中


开始回合(StartRound)

无合法性检测

结束回合(EndRound)

无合法性检测

移动(Move)

  1. 移动的是否为己方生物
  2. 终点是否会和别的生物产生重叠
  3. 是否有从起点到终点的道路
  4. 移动者最大移动距离应大于等于路径长度
  5. 移动者不应是本回合召唤的(除非有特殊词条,目前未加)
  6. 移动者本回合未 移动 或 攻击过(除非有特殊词条,目前有迅捷)
  7. 不处于一些导致无法移动的状态中(目前未加)

召唤(出兵)(Summon)

  1. 玩家持有该种生物的生物卡
  2. 生物星级合法
  3. 召唤点在出兵点
  4. 在召唤点召唤不会造成生物单位重叠
  5. 该生物卡牌不处于冷却状态
  6. 法力值大于等于所需消耗

攻击(Attack)

  1. 攻击者是否为己方生物
  2. 攻击者攻击力>0
  3. 攻击者非本回合召唤(除非有特殊词条,目前未加)
  4. 攻击者本回合未 移动 或 攻击过(除非有特殊词条,目前有迅捷)
  5. 攻击者不处于一些导致无法攻击的状态中(目前未加)
  6. 被攻击者处于攻击者攻击距离内
  7. 被攻击者生命值>0
  8. 被攻击者为空中生物时攻击者应有 飞行 或 对空 词条
  9. 被攻击者不处于一些导致无法被攻击的状态中(目前未加)

使用神器(Use)

  1. 操作的是本方的神器
  2. 神器不处于再装填状态
  3. 法力值大于等于所需消耗
  4. 部分神器的特殊检测

投降(Surrender)

无合法性检测