Playfield 类方法的注释
前言
- 本篇随笔的底包采用的是百度炉石兄弟吧20200109折腾版中自带的 routines 文件。
- 本次仅为绝大多数方法添加 xml 注释和简单解析,没有具体解析与重构。
Playfield
类方法众多,欢迎指出我的注解错误。有任何问题或建议可以在下方进行评论。
正文
1. addMinionsReal, addCardsReal
#region 初始化时使用,合并两个列表
private void addMinionsReal(List<Minion> source, List<Minion> trgt)
private void addCardsReal(List<Handmanager.Handcard> source)
#endregion
2. copyValuesFrom
方法体为空
3. isEqual
/// <summary>
/// 比较两个Playfield是否相同,用于AI计算,若不相同则会重新计算
/// </summary>
/// <param name="p">被比较的playfield</param>
/// <param name="logg">是否输出log</param>
/// <returns></returns>
public bool isEqual(Playfield p, bool logg)
建议添加新字段后,在这个方法内部的对应位置判断是否前后相同,可以及时发现模拟的错误,并进行重新计算。
卡组随机效果多导致总是需要重新计算就是这个原因。这也注定了兄弟玩不好随机效果多的卡组。
4.isEqualf
/// <summary>
/// 比较两个Playfield是否相同,用于silverfish
/// </summary>
/// <param name="p">被比较的playfield</param>
/// <returns></returns>
public bool isEqualf(Playfield p)
5.GetPHash
/// <summary>
/// 当前Playfield的唯一标识码
/// </summary>
/// <returns></returns>
public Int64 GetPHash()
6.enemyPlaysAoe, EnemyCardPlaying, EnemyPlaysACard
#region stuff for playing around enemy aoes
public void enemyPlaysAoe(int pprob, int pprob2)
public int EnemyCardPlaying(TAG_CLASS enemyHeroStrtClass, int currmana, int cardcount, int playAroundProb, int pap2)
public int EnemyPlaysACard(CardDB.cardName cardname, int currmana, int playAroundProb, int pap2)
#endregion
大概与 behabior - settings 文件有关。
对应参数: playaround
playaroundprob
playaroundprob2
7.getNextEntity
/// <summary>
/// 取下一个entity
/// </summary>
/// <remarks>随机取一个entity,防止与当前已有的entity重复。(建议打开看看这个程序员写的哈哈哈哈)</remarks>
/// <returns></returns>
public int getNextEntity()
8.getAttackTargets
/// <summary>
/// 获得可以被攻击的角色列表
/// </summary>
/// <param name="own">我方进行攻击true/敌方进行攻击false</param>
/// <param name="isLethalCheck">是否已经可以斩杀</param>
/// <returns>可以被攻击的角色列表</returns>
public List<Minion> getAttackTargets(bool own, bool isLethalCheck)
9.getBestPlace
/// <summary>
/// 获得随从最好的放置位置
/// </summary>
/// <param name="card">放置的随从卡牌</param>
/// <param name="lethal"></param>
/// <returns></returns>
public int getBestPlace(CardDB.Card card, bool lethal)
10.getBestAdapt
/// <summary>
/// 得到最合适的“进化”选择
/// </summary>
/// <param name="m">进化的随从</param>
/// <returns>1:+1/+1 | 2:angr | 3:hp | 4:taunt | 5:divine | 6:poison</returns>
public int getBestAdapt(Minion m)
11.guessEnemyHeroLethalMissing
/// <summary>
/// 计算如果我方随从都打脸,最终将会差多少伤害斩杀
/// </summary>
/// <returns>所差伤害</returns>
public int guessEnemyHeroLethalMissing()
12.guessHeroDamage
/// <summary>
/// 更新字段guessingHeroHP
/// </summary>
public void guessHeroDamage()
13.ownHeroHasDirectLethal
/// <summary>
/// 我方英雄是否已经能够被斩杀
/// </summary>
/// <returns></returns>
public bool ownHeroHasDirectLethal()
14.simulateTrapsStartEnemyTurn
/// <summary>
/// 在敌方回合开始时模拟触发我方奥秘
/// </summary>
public void simulateTrapsStartEnemyTurn()
15.simulateTrapsEndEnemyTurn
/// <summary>
/// 在敌方回合结束时进行模拟触发我方奥秘
/// </summary>
public void simulateTrapsEndEnemyTurn()
16.endTurn
/// <summary>
/// 结束回合
/// </summary>
public void endTurn()
17.startTurn
/// <summary>
/// 开始回合
/// </summary>
public void startTurn()
18.unlockMana
/// <summary>
/// 解锁过载的法力水晶
/// </summary>
public void unlockMana()
19.getHeroPowerDamage
/// <summary>
/// 计算英雄技能伤害
/// </summary>
/// <remarks>如AT_003,会使英雄技能额外造成伤害</remarks>
/// <param name="dmg">原伤害</param>
/// <returns>获得加成后的伤害</returns>
public int getHeroPowerDamage(int dmg)
20.getEnemyHeroPowerDamage
/// <summary>
/// 计算敌方英雄技能伤害
/// </summary>
/// <remarks>如AT_003,会使英雄技能额外造成伤害</remarks>
/// <param name="dmg">原伤害</param>
/// <returns>获得加成后的伤害</returns>
public int getEnemyHeroPowerDamage(int dmg)
21.getSpellDamageDamage
/// <summary>
/// 计算我方法术造成的伤害
/// </summary>
/// <remarks>如维伦、法术强度等,会使法术额外造成伤害</remarks>
/// <param name="dmg">原伤害</param>
/// <returns>获得加成后的伤害</returns>
public int getSpellDamageDamage(int dmg)
22.getSpellHeal
/// <summary>
/// 计算我方法术造成的治疗量
/// </summary>
/// <remarks>可能受到奥金尼、法强等影响</remarks>
/// <param name="heal">原治疗量</param>
/// <returns>影响后的治疗量(可能由于奥金尼导致返回一个负数)</returns>
public int getSpellHeal(int heal)
23.applySpellLifesteal
/// <summary>
/// 法术造成吸血
/// </summary>
/// <param name="heal">吸血量</param>
/// <param name="own">我方true/敌方false</param>
public void applySpellLifesteal(int heal, bool own)
24.getMinionHeal
/// <summary>
/// 计算我方随从造成的治疗量
/// </summary>
/// <remarks>受到奥金尼的影响</remarks>
/// <param name="heal">原治疗量</param>
/// <returns>影响后的治疗量(可能由于奥金尼导致返回一个负数)</returns>
public int getMinionHeal(int heal)
25.getEnemySpellDamageDamage
/// <summary>
/// 计算敌方法术造成的伤害
/// </summary>
/// <remarks>如维伦、法术强度等,会使法术额外造成伤害</remarks>
/// <param name="dmg">原伤害</param>
/// <returns>获得加成后的伤害</returns>
public int getEnemySpellDamageDamage(int dmg)
26.getEnemySpellHeal
/// <summary>
/// 计算敌方法术造成的治疗量
/// </summary>
/// <remarks>可能受到奥金尼、法强等影响</remarks>
/// <param name="heal">原治疗量</param>
/// <returns>影响后的治疗量(可能由于奥金尼导致返回一个负数)</returns>
public int getEnemySpellHeal(int heal)
27.getEnemyMinionHeal
/// <summary>
/// 计算敌方随从造成的治疗量
/// </summary>
/// <remarks>受到奥金尼的影响</remarks>
/// <param name="heal">原治疗量</param>
/// <returns>影响后的治疗量(可能由于奥金尼导致返回一个负数)</returns>
public int getEnemyMinionHeal(int heal)
28.doAction
/// <summary>
/// 执行Action
/// </summary>
/// <param name="aa">被执行的Action</param>
public void doAction(Action aa)
29.minionAttacksMinion
/// <summary>
/// 角色攻击
/// </summary>
/// <param name="attacker">攻击者</param>
/// <param name="defender">攻击目标(防御者)</param>
/// <param name="dontcount">是否不计攻击次数,如盗贼奥秘背叛、攻击同时对相邻随从造成伤害等</param>
public void minionAttacksMinion(Minion attacker, Minion defender, bool dontcount = false)
30.attackWithWeapon
/// <summary>
/// 某一方英雄用武器攻击(存疑:本回合攻击力)
/// </summary>
/// <param name="hero">攻击者</param>
/// <param name="target">攻击目标</param>
/// <param name="penality">惩罚值</param>
public void attackWithWeapon(Minion hero, Minion target, int penality)
31.playACard
/// <summary>
/// 我方打出一张卡牌
/// </summary>
/// <param name="hc">打出的卡牌</param>
/// <param name="target">目标</param>
/// <param name="position">如果为随从牌,放置的位置</param>
/// <param name="choice">抉择参数</param>
/// <param name="penality">惩罚值</param>
public void playACard(Handmanager.Handcard hc, Minion target, int position, int choice, int penality)
32.enemyplaysACard
/// <summary>
/// 敌方打出一张牌(无引用)
/// </summary>
/// <param name="c">打出的牌</param>
/// <param name="target">目标</param>
/// <param name="position"></param>
/// <param name="choice">抉择参数</param>
/// <param name="penality">惩罚值</param>
public void enemyplaysACard(CardDB.Card c, Minion target, int position, int choice, int penality)
33.playHeroPower
/// <summary>
/// 使用英雄技能
/// </summary>
/// <param name="target">目标</param>
/// <param name="penality">惩罚值</param>
/// <param name="ownturn">我方true/敌方false</param>
/// <param name="choice">抉择参数</param>
public void playHeroPower(Minion target, int penality, bool ownturn, int choice)
34.lowerWeaponDurability
/// <summary>
/// 使某一方武器失去N点耐久度
/// </summary>
/// <param name="value">失去的耐久度</param>
/// <param name="own">我方true/敌方false</param>
public void lowerWeaponDurability(int value, bool own)
35.doDmgTriggers
/// <summary>
/// 造成伤害扳机
/// </summary>
public void doDmgTriggers()
扳机效果通常由其他方法进行调用,而不会直接调用。
下面是来自灰机wiki的炉石中文维基对扳机翻译的讨论。具体释义点击查看。
「扳机」一词是从英文版进阶规则集的「trigger」一词直译而来,用于表示因某事件发生而触发的效果。在使用规则集的过程中,有很多人向我们提出这个翻译难以理解。实际上,我们使用该翻译主要有以下原因:
- 明确。英文 trigger 一词是明确的(虽然会与表示触发的动词 trigger 混淆,但是这问题不大)。扳机一词虽然稍微难以理解,但是它不会与其它的用词产生混淆。
- 简洁。使用「扳机」而非「触发器」或「触发效果」的主要原因是该词长度较短,且不具有可分解的结构。因此「治疗扳机」相比「治疗触发器」或「治疗触发效果」更加流畅且不易产生歧义。
36.triggerACharGotHealed
/// <summary>
/// 某角色获得治疗扳机
/// </summary>
public void triggerACharGotHealed()
37.triggerAMinionGotHealed
/// <summary>
/// 某随从获得治疗扳机
/// </summary>
public void triggerAMinionGotHealed()
38.triggerAMinionGotDmg
/// <summary>
/// 某随从受到伤害扳机
/// </summary>
public void triggerAMinionGotDmg()
39.triggerAMinionLosesDivineShield
/// <summary>
/// 某随从失去圣盾扳机
/// </summary>
public void triggerAMinionLosesDivineShield()
40.triggerAMinionDied
/// <summary>
/// 某随从死亡扳机
/// </summary>
public void triggerAMinionDied()
41.triggerAMinionIsGoingToAttack
/// <summary>
/// 某随从被攻击扳机
/// </summary>
/// <param name="attacker">攻击者</param>
/// <param name="target">攻击目标</param>
public void triggerAMinionIsGoingToAttack(Minion attacker, Minion target)
42.triggerAMinionDealedDmg
/// <summary>
/// 随从造成伤害扳机
/// </summary>
/// <param name="m">造成伤害的随从</param>
/// <param name="dmgDone">造成的伤害</param>
/// <param name="isAttacker"></param>
public void triggerAMinionDealedDmg(Minion m, int dmgDone, bool isAttacker)
43.triggerACardWillBePlayed
/// <summary>
/// 打出卡牌扳机
/// </summary>
/// <param name="hc">打出的卡牌</param>
/// <param name="own">我方true/敌方false</param>
public void triggerACardWillBePlayed(Handmanager.Handcard hc, bool own)
44.triggerAMinionIsSummoned
/// <summary>
/// 随从置入战场时扳机
/// </summary>
/// <param name="m">随从</param>
public void triggerAMinionIsSummoned(Minion m)
45.triggerAMinionWasSummoned
/// <summary>
/// 随从置入战场后扳机
/// </summary>
/// <param name="mnn">随从</param>
public void triggerAMinionWasSummoned(Minion mnn)
46.triggerEndTurn
/// <summary>
/// 回合结束扳机
/// </summary>
/// <param name="ownturn">我方回合true/敌方回合false</param>
public void triggerEndTurn(bool ownturn)
47.triggerStartTurn
/// <summary>
/// 回合开始扳机
/// </summary>
/// <param name="ownturn">我方回合true/敌方回合false</param>
public void triggerStartTurn(bool ownturn)
48.triggerAHeroGotArmor
/// <summary>
/// 英雄获得护甲扳机
/// </summary>
/// <param name="ownHero">我方英雄true/敌方英雄false</param>
public void triggerAHeroGotArmor(bool ownHero)
49.triggerCardsChanged
/// <summary>
/// 卡牌发生变化扳机
/// </summary>
/// <param name="own">我方true/敌方false</param>
public void triggerCardsChanged(bool own)
50.triggerInspire
/// <summary>
/// 激励扳机
/// </summary>
/// <param name="ownturn">我方true/敌方false</param>
public void triggerInspire(bool ownturn)
51.secretTrigger_CharIsAttacked
/// <summary>
/// 触发敌方奥秘——当某角色进行攻击
/// </summary>
/// <param name="attacker">攻击者</param>
/// <param name="defender">攻击目标(防御者)</param>
/// <returns></returns>
public int secretTrigger_CharIsAttacked(Minion attacker, Minion defender)
52.secretTrigger_HeroGotDmg
/// <summary>
/// 触发敌方奥秘——英雄受到伤害时
/// </summary>
/// <param name="own">受伤害的英雄归属,我方true/敌方false</param>
/// <param name="dmg">受到的伤害</param>
public void secretTrigger_HeroGotDmg(bool own, int dmg)
53.secretTrigger_MinionIsPlayed
/// <summary>
/// 触发敌方奥秘——使用一张随从牌后
/// </summary>
/// <param name="playedMinion"></param>
public void secretTrigger_MinionIsPlayed(Minion playedMinion)
54.secretTrigger_SpellIsPlayed
/// <summary>
/// 触发敌方奥秘——施放一个法术后
/// </summary>
/// <param name="target">法术目标</param>
/// <param name="c">施放的法术牌</param>
/// <returns></returns>
public int secretTrigger_SpellIsPlayed(Minion target, CardDB.Card c)
55.secretTrigger_MinionDied
/// <summary>
/// 触发敌方奥秘——当某随从死亡后
/// </summary>
/// <param name="own">死亡的随从归属,我方true/敌方false</param>
public void secretTrigger_MinionDied(bool own)
56.secretTrigger_HeroPowerUsed
/// <summary>
/// 触发敌方奥秘——在我方使用英雄技能后
/// </summary>
public void secretTrigger_HeroPowerUsed()
57.getSecretTriggersByType
/// <summary>
/// 获得某行为将可能触发敌方奥秘的个数
/// </summary>
/// <param name="type">行为类型,0-使用随从牌,1-施放法术,2-攻击英雄,3-英雄受到伤害,4-随从死亡,5-使用英雄技能</param>
/// <param name="actedMinionOwn">进行攻击的角色归属,我方true/敌方false</param>
/// <param name="actedMinionIsHero">进行攻击的角色是否为随从</param>
/// <param name="target">法术/攻击的目标</param>
/// <returns></returns>
public int getSecretTriggersByType(int type, bool actedMinionOwn, bool actedMinionIsHero, Minion target)
58.doDeathrattles
/// <summary>
/// 执行亡语效果
/// </summary>
/// <param name="deathrattleMinions">待执行亡语效果的随从列表</param>
public void doDeathrattles(List<Minion> deathrattleMinions)
59.updateBoards
/// <summary>
/// 更新面板
/// </summary>
/// <remarks>较为复杂,通常用于触发扳机后更新</remarks>
public void updateBoards()
60.minionGetOrEraseAllAreaBuffs
/// <summary>
/// 使某随从获得或失去光环buff
/// </summary>
/// <param name="m">获得或失去光环buff的随从</param>
/// <param name="get">获得true/失去false</param>
public void minionGetOrEraseAllAreaBuffs(Minion m, bool get)
61.updateAdjacentBuffs
/// <summary>
/// 更新相邻种类buff(存疑)
/// </summary>
/// <param name="own">我方true/敌方false</param>
public void updateAdjacentBuffs(bool own)
62.createNewMinion
/// <summary>
/// 创造一个新随从
/// </summary>
/// <remarks>会触发光环入场效果</remarks>
/// <param name="hc">由哪张手牌创造</param>
/// <param name="zonepos">所在位置</param>
/// <param name="own">属于我方true/敌方false</param>
/// <returns></returns>
public Minion createNewMinion(Handmanager.Handcard hc, int zonepos, bool own)
62、63、64这几个比较复杂,我还没具体看。总的来说就是从手牌打出一张随从到战场的步骤。
63.placeAmobSomewhere
/// <summary>
/// 打出一张随从牌
/// </summary>
/// <param name="hc">打出的随从牌</param>
/// <param name="choice">抉择参数,用于sim</param>
/// <param name="zonepos">放入战场中的位置</param>
public void placeAmobSomewhere(Handmanager.Handcard hc, int choice, int zonepos)
64.addMinionToBattlefield
/// <summary>
/// 将随从置入战场
/// </summary>
/// <param name="m">随从</param>
/// <param name="isSummon">无用的参数</param>
public void addMinionToBattlefield(Minion m, bool isSummon = true)
65.equipWeapon
/// <summary>
/// 为某一方英雄装备一把武器
/// </summary>
/// <param name="c">武器卡牌</param>
/// <param name="own">我方true/敌方false</param>
public void equipWeapon(CardDB.Card c, bool own)
66.callKid
/// <summary>
/// 召唤一个随从
/// </summary>
/// <param name="c">所召唤随从的Card</param>
/// <param name="zonepos">召唤随从的位置</param>
/// <param name="own">我方true,敌方true</param>
/// <param name="spawnKid">是否为不重要的衍生随从。仅在随从达到上限时用以添加惩罚。</param>
/// <param name="oneMoreIsAllowed">随从达到上限后是否仍可召唤。通常用于亡语召唤随从或先消灭再召唤。</param>
public void callKid(CardDB.Card c, int zonepos, bool own, bool spawnKid = true, bool oneMoreIsAllowed = false)
67.minionGetFrozen
/// <summary>
/// 冻结某角色(随从/英雄)
/// </summary>
/// <param name="target">被冻结的目标</param>
public void minionGetFrozen(Minion target)
68.minionGetSilenced
/// <summary>
/// 沉默某随从
/// </summary>
/// <param name="m">将被沉默的随从</param>
public void minionGetSilenced(Minion m)
69.allMinionsGetSilenced
/// <summary>
/// 沉默所有随从
/// </summary>
/// <param name="own"></param>
public void allMinionsGetSilenced(bool own)
70.drawACard
/// <summary>
/// 抽一张牌/发现一张牌
/// </summary>
/// <param name="ss">抽到卡牌的cardName</param>
/// <param name="own">我方true/敌方false</param>
/// <param name="nopen">是否不从牌库抽出,如发现一张牌、抽某张牌的复制,默认为false从牌库抽出</param>
public void drawACard(CardDB.cardName ss, bool own, bool nopen = false)
71.drawACard
/// <summary>
/// 抽一张牌/发现一张牌
/// </summary>
/// <param name="ss">抽到卡牌的cardIDEnum</param>
/// <param name="own">我方true/敌方false</param>
/// <param name="nopen">是否不从牌库抽出,如发现一张牌、抽某张牌的复制,默认为false从牌库抽出</param>
public void drawACard(CardDB.cardIDEnum ss, bool own, bool nopen = false)
72.removeCard
/// <summary>
/// 弃掉我方某张手牌
/// </summary>
/// <param name="hcc">弃掉的手牌</param>
public void removeCard(Handmanager.Handcard hcc)
73.renumHandCards
/// <summary>
/// 为Handcard的position重新编号
/// </summary>
/// 用于卡牌移除后或添加后,整理卡牌的position
/// <param name="list">某方手牌</param>
public void renumHandCards(List<Handmanager.Handcard> list)
74.attackEnemyHeroWithoutKill
/// <summary>
/// 保证不斩杀对面的情况下对敌方英雄造成伤害
/// </summary>
/// <remarks>用于敌方回合的模拟</remarks>
/// <param name="dmg">造成的伤害</param>
public void attackEnemyHeroWithoutKill(int dmg)
75.minionGetDestroyed
/// <summary>
/// 消灭某随从
/// </summary>
/// <param name="m">将被消灭的随从</param>
public void minionGetDestroyed(Minion m)
76.allMinionsGetDestroyed
/// <summary>
/// 消灭所有随从
/// </summary>
public void allMinionsGetDestroyed()
77.minionGetArmor
/// <summary>
/// 英雄获得护甲
/// </summary>
/// <param name="m">Minion类型的英雄</param>
/// <param name="armor">护甲值</param>
public void minionGetArmor(Minion m, int armor)
78.minionReturnToHand
/// <summary>
/// 将某随从移回手牌
/// </summary>
/// <param name="m">将被操作的随从</param>
/// <param name="own">移回哪一方手牌,我方true/敌方false</param>
/// <param name="manachange">法力值消耗变化</param>
public void minionReturnToHand(Minion m, bool own, int manachange)
79.minionReturnToDeck
/// <summary>
/// 将某随从洗入某一方的牌库
/// </summary>
/// <param name="m">将被操作的随从</param>
/// <param name="own">将要洗入哪一方牌库,我方true/敌方false</param>
public void minionReturnToDeck(Minion m, bool own)
80.minionTransform
/// <summary>
/// 随从变形
/// </summary>
/// <remarks>如变羊术</remarks>
/// <param name="m">要变形的随从</param>
/// <param name="c">将会变成的卡牌</param>
public void minionTransform(Minion m, CardDB.Card c)
81.getRandomCardForManaMinion
/// <summary>
/// 得到一个法力值消耗为(X)的随机随从Card
/// </summary>
/// <remarks>实际就是身材符合费用的白板</remarks>
/// <param name="manaCost">X</param>
/// <returns>随从的CardDB.Card类型</returns>
public CardDB.Card getRandomCardForManaMinion(int manaCost)
82.getEnemyCharTargetForRandomSingleDamage
/// <summary>
/// 获取随机造成X点伤害的最佳目标
/// </summary>
/// <remarks>如果自己能先于敌方斩杀对手,则选择敌方英雄,否则根据伤害数选择最消极的情况(伤害高则选择血量最低的,伤害低则选择血量最高的)</remarks>
/// <param name="damage">X点伤害</param>
/// <param name="onlyMinions">是否不包含英雄,默认false包含英雄</param>
/// <returns></returns>
public Minion getEnemyCharTargetForRandomSingleDamage(int damage, bool onlyMinions = false)
83.minionGetControlled
/// <summary>
/// 随从被某方获得控制权
/// </summary>
/// <param name="m">被操作的随从</param>
/// <param name="newOwner">新的控制者,我方true/敌方false</param>
/// <param name="canAttack">能否进行攻击</param>
/// <param name="forced"></param>
public void minionGetControlled(Minion m, bool newOwner, bool canAttack, bool forced = false)
84.Magnetic
/// <summary>
/// 使某随从磁力吸附到其他机械随从上
/// </summary>
/// <param name="mOwn">磁力随从</param>
public void Magnetic(Minion mOwn)
85.minionGetWindfurry
/// <summary>
/// 使某随从获得风怒
/// </summary>
/// <param name="m">获得风怒的随从</param>
public void minionGetWindfurry(Minion m)
86.minionGetCharge
/// <summary>
/// 使某随从获得冲锋
/// </summary>
/// <param name="m">获得冲锋的随从</param>
public void minionGetCharge(Minion m)
87.minionGetRush
/// <summary>
/// 使某随从获得突袭
/// </summary>
/// <param name="m">获得突袭的随从</param>
public void minionGetRush(Minion m)
88.minionLostCharge
/// <summary>
/// 使某随从失去冲锋
/// </summary>
/// <param name="m">失去冲锋的随从</param>
public void minionLostCharge(Minion m)
89.minionGetTempBuff
/// <summary>
/// 使某角色获得本回合buff
/// </summary>
/// <remarks>暂时只有角色获得本回合攻击力buff的引用</remarks>
/// <param name="m">获得buff的角色</param>
/// <param name="tempAttack">本回合攻击buff</param>
/// <param name="tempHp">本回合血量buff</param>
public void minionGetTempBuff(Minion m, int tempAttack, int tempHp)
90.minionGetAdjacentBuff
/// <summary>
/// 使某随从获得相邻类型buff
/// </summary>
/// <param name="m">获得buff的随从</param>
/// <param name="angr">获得攻击buff</param>
/// <param name="vert">获得血量buff</param>
public void minionGetAdjacentBuff(Minion m, int angr, int vert)
91.allMinionOfASideGetBuffed
/// <summary>
/// 使某一方所有随从获得buff
/// </summary>
/// <param name="own">我方true/敌方false</param>
/// <param name="attackbuff">攻击buff</param>
/// <param name="hpbuff">血量buff</param>
public void allMinionOfASideGetBuffed(bool own, int attackbuff, int hpbuff)
92.minionGetBuffed
/// <summary>
/// 使某随从获得buff
/// </summary>
/// <param name="m">获得buff的随从</param>
/// <param name="attackbuff">攻击buff</param>
/// <param name="hpbuff"></param>
public void minionGetBuffed(Minion m, int attackbuff, int hpbuff)
93.cthunGetBuffed
/// <summary>
/// 使你的克苏恩获得buff
/// </summary>
/// <param name="attackbuff">攻击buff</param>
/// <param name="hpbuff">血量buff</param>
/// <param name="tauntbuff">嘲讽buff</param>
public void cthunGetBuffed(int attackbuff, int hpbuff, int tauntbuff)
94.minionLosesDivineShield
/// <summary>
/// 使某随从失去圣盾
/// </summary>
/// <param name="m">失去圣盾的随从</param>
public void minionLosesDivineShield(Minion m)
95.discardCards
/// <summary>
/// 使某方弃掉N张手牌
/// </summary>
/// <param name="num">弃牌数</param>
/// <param name="own">我方true/敌方false</param>
public void discardCards(int num, bool own)
96.lethalMissing
/// <summary>
/// 距离斩杀所相差伤害数
/// </summary>
/// <returns></returns>
public int lethalMissing()
97.nextTurnWin
/// <summary>
/// 依照当前场面随从,下回是否可以斩杀
/// </summary>
/// <remarks>通常只用于回合结束之前的一个Playfield,仅在特定的场合使用</remarks>
/// <returns>下回可是否可以斩杀</returns>
public bool nextTurnWin()
98.minionSetAngrToX
/// <summary>
/// 将某随从的攻击力变为X
/// </summary>
/// <param name="m">所操作的随从</param>
/// <param name="newAngr">X</param>
public void minionSetAngrToX(Minion m, int newAngr)
99.minionSetLifetoX
/// <summary>
/// 将某随从的生命值变为X
/// </summary>
/// <remarks>如守日者塔林姆的效,,变化后无激怒状态。</remarks>
/// <param name="m">所操作的随从</param>
/// <param name="newHp">X</param>
public void minionSetLifetoX(Minion m, int newHp)
100.minionSetAngrToHP
/// <summary>
/// 使一个随从的攻击力等同于其生命值
/// </summary>
/// <remarks>目前仅用于心灵之火</remarks>
/// <param name="m">所操作的随从</param>
public void minionSetAngrToHP(Minion m)
101.minionSwapAngrAndHP
/// <summary>
/// 互换一个随从的攻击力和生命值
/// </summary>
/// <param name="m">被互换攻击力和生命值的随从</param>
public void minionSwapAngrAndHP(Minion m)
102.minionGetDamageOrHeal
/// <summary>
/// 某随从受到伤害/治疗
/// </summary>
/// <param name="m">受到伤害/治疗的随从</param>
/// <param name="dmgOrHeal">伤害量/治疗量</param>
/// <param name="dontDmgLoss">是否不计损失,默认为false即计算损失量,用于计算behavior价值使用。like killing a 2/1 with an 3/3 -> => lostdamage = 2</param>
public void minionGetDamageOrHeal(Minion m, int dmgOrHeal, bool dontDmgLoss = false)
103.allMinionOfASideGetDamage
/// <summary>
/// 某一方所有随从受到伤害/治疗
/// </summary>
/// <remarks>当damages为负数时为治疗</remarks>
/// <param name="own">我方true/敌方false</param>
/// <param name="damages">伤害量/治疗量</param>
public void allMinionOfASideGetDamage(bool own, int damages, bool frozen = false)
104.allCharsOfASideGetDamage
/// <summary>
/// 某一方所有角色受到伤害/治疗
/// </summary>
/// <remarks>当damages为负数时为治疗</remarks>
/// <param name="own">我方true/敌方false</param>
/// <param name="damages">伤害量/治疗量</param>
public void allCharsOfASideGetDamage(bool own, int damages)
105.allCharsOfASideGetRandomDamage
/// <summary>
/// 某一方所有角色受到随机分配的N点伤害
/// </summary>
/// <param name="ownSide">受到伤害的一方</param>
/// <param name="times">伤害量</param>
public void allCharsOfASideGetRandomDamage(bool ownSide, int times)
106.allCharsGetDamage
/// <summary>
/// 所有角色受到伤害/治疗
/// </summary>
/// <remarks>当damages为负数时为治疗</remarks>
/// <param name="damages">伤害量/治疗量</param>
/// <param name="exceptID">不受伤害/治疗随从的entity,通常用于“对其他角色造成伤害”</param>
public void allCharsGetDamage(int damages, int exceptID = -1)
107.allMinionsGetDamage
/// <summary>
/// 所有随从受到伤害/治疗
/// </summary>
/// <remarks>当damages为负数时为治疗</remarks>
/// <param name="damages">伤害量/治疗量</param>
/// <param name="exceptID">不受伤害/治疗随从的entity,通常用于“对其他随从造成伤害”</param>
public void allMinionsGetDamage(int damages, int exceptID = -1)
108.setNewHeroPower
/// <summary>
/// 设定新的英雄技能
/// </summary>
/// <param name="newHeroPower">新的英雄技能的cardIDenum</param>
/// <param name="own">我方true/敌方false</param>
public void setNewHeroPower(CardDB.cardIDEnum newHeroPower, bool own)
109.getHandcardsByType
/// <summary>
/// 为符合条件的卡牌做标记
/// </summary>
/// <remarks>将符合条件的Handmanager.Handcard的extraParam3置为true,暂时仅供Playfield.searchRandomMinionInHand方法使用</remarks>
/// <param name="cards">标记范围</param>
/// <param name="tag">GAME_TAGs条件,如法术、武器或随从等</param>
/// <param name="race">种族条件,当GAME_TAGs为CARDRACE时进行限定,如野兽、海盗等</param>
private void getHandcardsByType(List<Handmanager.Handcard> cards, GAME_TAGs tag, TAG_RACE race = TAG_RACE.INVALID)
110.searchRandomMinionInHand
/// <summary>
/// 在给定手牌范围内寻找一个随机随从
/// </summary>
/// <param name="cards">寻找范围</param>
/// <param name="mode">寻找模式</param>
/// <param name="tag">GAME_TAGs条件,如法术、武器或随从等</param>
/// <param name="race">种族条件,当GAME_TAGs为CARDRACE时进行限定,如野兽、海盗等</param>
/// <returns></returns>
public Handmanager.Handcard searchRandomMinionInHand(List<Handmanager.Handcard> cards, searchmode mode, GAME_TAGs tag = GAME_TAGs.None, TAG_RACE race = TAG_RACE.INVALID)
111.searchRandomMinion
/// <summary>
/// 在给定随从范围内寻找一个随机随从
/// </summary>
/// <param name="minions">寻找范围</param>
/// <param name="mode">寻找模式</param>
/// <returns>所找到的最后一个随从</returns>
public Minion searchRandomMinion(List<Minion> minions, searchmode mode)
112.searchRandomMinionByMaxHP
/// <summary>
/// 在给定随从范围内寻找一个随机随从(血量小于等于MaxHP)
/// </summary>
/// <param name="minions">寻找范围</param>
/// <param name="mode">寻找模式</param>
/// <param name="maxHP">限定随从的最大血量</param>
/// <returns>所找到的最后一个随从</returns>
public Minion searchRandomMinionByMaxHP(List<Minion> minions, searchmode mode, int maxHP)
113.getNextJadeGolem
/// <summary>
/// 获得下一张CardDB.Card类型的青玉魔像
/// </summary>
/// <param name="own">我方true/敌方false</param>
/// <returns>下一张CardDB.Card类型的青玉魔像</returns>
public CardDB.Card getNextJadeGolem(bool own)
114.debugMinions, printBoard, printBoardString, printBoardDebug, printActions, printActionforDummies
用于输出日志以及调试