描述

法术迸发 (EN:Spellburst ) 是一种在《通灵学园》中加入的关键字异能,在玩家打出一张法术牌后触发,只能触发一次。

  • 若随从在法术结算过程中死亡,则不会触发效果

思路

首先一定可以从场上随从的entity(实体)上读取GAME_TAG从而读取到是否可以进行法术迸发的状态。

在使用一张法术牌之后遍历一下随从,再检查一下武器的法术迸发状态,从而执行法术迸发操作。故想到添加一个 SimTemplate 可以做到统一写法。

执行

主程序内部添加法术迸发的GAME_TAG

  • Triton.Game.Mapping.GAME_TAG 加入法术迸发的枚举 SPELLBURST = 1427

    这一步的要求是需要有无壳的主程序或有源码,没有无壳主程序可以不做第1步,继续向下做,遇到红色字体时选择对应的其他步骤

    (右键编辑类,加入枚举,然后编译。编译后记得保存。)

2021/1/13补充:贴吧发布的20210109折腾版已经更新当时的最新 GAME_TAG,所以第一步不需要做了

在 CardDB.cs 中添加 Spellburst 属性

  1. 声明属性

    private bool spellburst = false;
    
    public bool Spellburst
    {
    get
    {
    return spellburst;
    }
    set
    {
    spellburst = value;
    }
    }
  2. 添加解析 CardDefs.xml 文件时对 Spellburst 的读取

    case 1427: c.Spellburst = value == 1; break;//法术迸发

在 Minion.cs 中添加 Spellburst 属性

  1. 声明属性,与 CardDB.cs 中相同

  2. 在构造器中添加 Spellburst

    this.Spellburst = m.Spellburst;

  3. setMinionToMinion 方法中添加 Spellburst

    this.Spellburst = m.Spellburst;

在 Weapon.cs 中添加 Spellburst 属性

  1. 声明属性,与 CardDB.cs 中相同

  2. 在构造器中、isEqual 方法中、equip 方法中添加 Spellburst

    仿照其他格式与 Minion.cs 中的添加方式添加即可

在 silverfish_HB.cs 中添加随从和武器法术迸发状态的读取

在这一步中,遇到 GAME_TAG.SPELLBURST 要替换成 (GAME_TAG)1427

//在相应位置添加
ownWeapon.Spellburst = (weapon.GetTag(GAME_TAG.SPELLBURST) == 1) ? true : false; enemyWeapon.Spellburst = (weapon.GetTag(GAME_TAG.SPELLBURST) == 1) ? true : false; m.Spellburst = (entitiy.GetTag(GAME_TAG.SPELLBURST) == 0) ? false : true;
//若Spellburst为true,则打出法术后能触发其法术迸发效果

在 SimTemplate.cs 中添加虚函数

/// <summary>
/// 法术迸发(随从)
/// </summary>
/// <param name="p">场面</param>
/// <param name="m">法术迸发的随从</param>
/// <param name="hc">触发法术迸发的手牌</param>
public virtual void onSpellburst(Playfield p, Minion m, Handmanager.Handcard hc)
{
return;
} /// <summary>
/// 法术迸发(武器)
/// </summary>
/// <param name="p">场面</param>
/// <param name="w">法术迸发的武器</param>
/// <param name="hc">触发法术迸发的手牌</param>
public virtual void onSpellburst(Playfield p, Weapon w, Handmanager.Handcard hc)
{
return;
}

在 Playfield.cs 中添加法术迸发的触发

搜索 onCardplay ,有3处结果,其中有一处是我方打出法术/武器牌的位置,在这之后添加法术迸发的触发

//法术迸发
foreach (Minion m in this.ownMinions.ToArray())
{
if (m.Spellburst == true && !m.silenced)
{
m.handcard.card.sim_card.onSpellburst(this, m, hc);
m.Spellburst = false;
}
}
if (this.ownWeapon.Spellburst == true)
{
this.ownWeapon.card.sim_card.onSpellburst(this, this.ownWeapon, hc);
this.ownWeapon.Spellburst = false;
}

其余内容

  • 沉默使随从的 Spellburst 属性发生改变

    Minion.csbecomeSilence 方法中添加 Spellburst = false;

  • 2021年2月11日补充:在 Playfield.csisEqual 方法中对应处添加

至此添加完毕。

例子

using System;
using System.Collections.Generic;
using System.Text;
namespace HREngine.Bots
{
class Sim_SCH_231 : SimTemplate //* 新生刺头 Intrepid Initiate
{
//<b>Spellburst:</b> Gain +2_Attack.
//<b>法术迸发:</b>获得+2攻击力。
public override void onSpellburst(Playfield p, Minion m,Handmanager.Handcard hc)
{
p.minionGetBuffed(m, 2, 0);
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace HREngine.Bots
{
class Sim_SCH_182 : SimTemplate //* 演讲者吉德拉 Speaker Gidra
{
//[x]<b><b>Rush</b>, Windfury</b><b><b>Spellburst</b>:</b> GainAttackand Health equal tothe spell's Cost.
//<b>突袭,风怒</b><b>法术迸发:</b>获得等同于法术法力值消耗的攻击力和生命值。
public override void onSpellburst(Playfield p, Minion m,Handmanager.Handcard hc)
{
p.minionGetBuffed(m, hc.manacost, hc.manacost);
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace HREngine.Bots
{
class Sim_SCH_248 : SimTemplate //* 甩笔侏儒 Pen Flinger
{
//<b>Battlecry:</b> Deal 1 damage. <b>Spellburst:</b> Return thisto_your hand.
//<b>战吼:</b>造成1点伤害。<b>法术迸发:</b>将该随从移回你的手牌。
public override void getBattlecryEffect(Playfield p, Minion own, Minion
target, int choice)
{
if (target != null) p.minionGetDamageOrHeal(target, 1);
}
public override void onSpellburst(Playfield p, Minion m,Handmanager.Handcard hc)
{
p.minionReturnToHand(m, m.own, 0);
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace HREngine.Bots
{
class Sim_SCH_523 : SimTemplate //* 仪式重槌 Ceremonial Maul
{
//<b>Spellburst</b>: Summon a Student with <b>Taunt</b> and stats equalto the spell's Cost.
//<b>法术迸发:</b>召唤一个属性值等同于法术法力值消耗的并具有<b>嘲讽</b>的学生。
CardDB.Card weapon = CardDB.Instance.getCardDataFromID(CardDB.cardIDEnum.SCH_523);
CardDB.Card kid = CardDB.Instance.getCardDataFromID(CardDB.cardIDEnum.SCH_523t);
public override void onCardPlay(Playfield p, bool ownplay, Minion target, int choice)
{
p.equipWeapon(weapon, ownplay);
}
public override void onSpellburst(Playfield p, Weapon w,Handmanager.Handcard hc)
{
int place = p.ownMinions.Count;
if (place < 7)
{
p.callKid(kid, place, true);
p.minionSetAngrToX(p.ownMinions[place-1], hc.manacost);//有的silverfish里是minionSetAttackToX
p.minionSetLifetoX(p.ownMinions[place-1], hc.manacost);
}
}
}
}

法术迸发(Spellburst)的更多相关文章

  1. 炉石传说 C# 开发笔记 (法术篇)

    炉石的设计,最核心的内容是法术效果. 法术卡牌,无疑是法术的集中体现,但是,法术效果除了在法术卡牌之外,也不除不在. 随从的战吼,亡语,奥秘的揭示等等都是法术效果的体现. 法术卡牌在炉石里面有很多种( ...

  2. 孙悟空的身外身法术使用了Java设计模式:原型模式

    目录 定义 意图 主要解决问题 何时使用 优缺点 结构 简单形式的原型模式 登记形式的原型模式 两种形式比较 浅克隆和深克隆 孙悟空的身外身法术 浅克隆实现 深克隆实现 定义 原型模式属于对象的创建型 ...

  3. 什么是响应式编程——响应式Spring的道法术器

    响应式编程之道 1.1 什么是响应式编程? 在开始讨论响应式编程(Reactive Programming)之前,先来看一个我们经常使用的一款堪称“响应式典范”的强大的生产力工具——电子表格. 举个简 ...

  4. Spring WebFlux快速上手——响应式Spring的道法术器

    https://blog.csdn.net/get_set/article/details/79480233

  5. 加班时的灵感迸发,我用selenium做了个窗口化的爬*宝数据。(附源码链接)

    完整代码&火狐浏览器驱动下载链接:https://pan.baidu.com/s/1pc8HnHNY8BvZLvNOdHwHBw 提取码:4c08 双十一刚过,想着某宝的信息看起来有些少很难做 ...

  6. Hoo Smart Chain 万物生长计划火热报名中,可视化公链迸发勃勃生机

    在DeFi越来越趋向同质化和静态化时,Hoo Smart Chain决定充当破局者,宣布决定All In元宇宙,并于2022年3月份开启面向全球去中心化开发者的奖励计划--「万物生长计划」 目前Ter ...

  7. Asp.Net 操作XML文件的增删改查 利用GridView

    不废话,直接上如何利用Asp.NET操作XML文件,并对其属性进行修改,刚开始的时候,是打算使用JS来控制生成XML文件的,但是最后却是无法创建文件,读取文件则没有使用了 index.aspx 文件 ...

  8. 从零到有——我的OA如何成长

    早前发文说要分享,马上进入了财务系统的开发,拖到现在,见笑了. 我在月初离职了,所以到处跑,找工作,想想南京.苏州.无锡(去玩的).杭州(路过).上海.珠海.深圳.广州.觉得找工作也差不多尾声了,就留 ...

  9. Entity Framework 6 Recipes 2nd Edition(9-5)译->删除一个断开的实体

    9-5. 删除一个断开的实体 问题 我们要把一个把WCF上取回的对象做上删除的标志. 解决方案 假设我们有如Figure 9-5所示实体的支付与票据的模型. Figure 9-5. 一个支付与票据的模 ...

随机推荐

  1. Wireshark过滤器详解

    Wireshark过滤器详解 1.Wireshark主要提供两种主要的过滤器 捕获过滤器:当进行数据包捕获时,只有那些满足给定的包含/排除表达式的数据包会被捕获 显示过滤器:该过滤器根据指定的表达式用 ...

  2. Redis是不是真的变慢了?

    大家好,今天我们来学习一下如何确定Redis是不是真的变慢了. 我们在使用redis时一定会遇到变慢的时候,那我们如何来判断Redis是否真的变慢了呢, 一个最直接的方法就是查看Redis的响应延迟, ...

  3. RabbitMQ的生产者消息确认(Publisher Confirms and Returns)和消费者ACK

    https://www.cnblogs.com/wangzhongqiu/p/7815529.html https://blog.csdn.net/u012129558/article/details ...

  4. SQL 练习14

    查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩 SELECT Student.SId,Student.Sname,t.不及格课程数,t.平均成绩 from Student, (SELECT ...

  5. windows10右键我的电脑,点击管理,提示该文件没有与之关联的应用来执行该操作,请安装应用,若已经安装应用,请在默认应用设置页面中创建关联……

    方法一 1.按WIN+R 调出运行对话框,然后输入bai gpedit.msc 回车:2.展开"计du算机配置"zhi-"Windows设置"-"安全 ...

  6. 腾讯云TDSQL MySQL版 - 开发指南 分布式事务

    由于事务操作的数据通常跨多个物理节点,在分布式数据库中,类似方案即称为分布式事务. TDSQL MySQL版 支持普通分布式事务协议和 XA 分布式事务协议.TDSQL MySQL版(内核5.7或以上 ...

  7. C#与.NET、CLR、CLI是什么关系?什么是.NET框架

    1.C#与.NET.CLR.CLI是什么关系?什么是.NET框架?      这个问题好专业啊!一句话两句话还真不好说清.您听说过C++中有个COM的概念吧?您听说过JAVA里的虚拟机吧?CLR(公共 ...

  8. Redis缓存雪崩、缓存穿透、热点key

    转载自  https://blog.csdn.net/wang0112233/article/details/79558612 https://www.sohu.com/a/230787856_231 ...

  9. redhat9 linux 网卡无法激活排障

    先查看自己的系统版本! [root@localhost root]# uname -a Linux localhost 2.4.20-8 #1 Thu Mar 13 17:54:28 EST 2003 ...

  10. Qt5之正则表达式

    字符 描述 \ 将下一个字符标记为一个特殊字符.或一个原义字符.或一个 向后引用.或一个八进制转义符.例如,'n' 匹配字符 "n".'\n' 匹配一个换行符.序列 '\\' 匹配 ...