前言
- 本篇隨筆的底包采用的是百度爐石兄弟吧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
用於輸出日志以及調試