@@ -5,6 +5,7 @@ import com.fengsheng.ScoreFactory.logger
5
5
import com.fengsheng.card.Card
6
6
import com.fengsheng.card.count
7
7
import com.fengsheng.card.countTrueCard
8
+ import com.fengsheng.card.filter
8
9
import com.fengsheng.phase.FightPhaseIdle
9
10
import com.fengsheng.protos.Common.*
10
11
import com.fengsheng.protos.Common.card_type.*
@@ -268,7 +269,11 @@ fun Player.calculateMessageCardValue(
268
269
inFrontOfWhom.messageCards.removeLast()
269
270
}
270
271
if (Black in colors && inFrontOfWhom.skills.any { it is ShiSi }) { // 老汉【视死】
271
- v1 + = 20
272
+ if (isPartnerOrSelf(inFrontOfWhom)) {
273
+ v1 + = 20
274
+ } else if (inFrontOfWhom.identity != Black && identity != Black ) { // 自己是神秘人就无视,老汉是神秘人也无视
275
+ v1 - = 20
276
+ }
272
277
}
273
278
if (Black in colors && inFrontOfWhom.skills.any { it is YiXin } && inFrontOfWhom.messageCards.count(Black ) == 2 ) {
274
279
// 李宁玉【遗信】
@@ -606,9 +611,36 @@ fun Player.calSendMessageCard(
606
611
* 是否要救人
607
612
*/
608
613
fun Player.wantToSave (whoseTurn : Player , whoDie : Player ): Boolean {
609
- if (whoDie.skills.any { it is RuGui } && whoDie.messageCards.isNotEmpty() ||
610
- whoDie.skills.any { it is YiXin } && whoDie.cards.isNotEmpty())
611
- return false // 如果李宁玉有手牌|老汉有情报,则所有人都不救
614
+ // 如果死亡的是老汉且有情报
615
+ if (whoDie.skills.any { it is RuGui } && whoDie.messageCards.isNotEmpty()) {
616
+ // 如果老汉和当前回合角色是同一身份+老汉情报区有该颜色情报+当前回合角色听牌
617
+ if (whoDie != = whoseTurn && whoDie.identity == whoseTurn.identity &&
618
+ ! whoDie.messageCards.filter(whoDie.identity).isEmpty() &&
619
+ whoseTurn.messageCards.count(whoseTurn.identity) == 2 ) {
620
+ // 如果自己也是同一阵营,则不救
621
+ if (isPartnerOrSelf(whoDie)) {
622
+ return false
623
+ }
624
+ // 如果自己不是同一阵营,则救(防止发动技能后敌方胜利)
625
+ return true
626
+ }
627
+ }
628
+ // 如果死亡的是李宁玉且有手牌
629
+ if (whoDie.skills.any { it is YiXin } && whoDie.cards.isNotEmpty()) {
630
+ // 如果李宁玉的队友听牌
631
+ if (whoDie.game!! .players.any {
632
+ it!! .alive && it != = whoDie && it.identity == whoDie.identity && it.messageCards.count(whoDie.identity) == 2
633
+ }) {
634
+ // 如果自己也是同一阵营,则不救
635
+ if (isPartnerOrSelf(whoDie)) {
636
+ val stealer = game!! .players.find { it!! .alive && it.identity == Black && it.secretTask == Stealer }
637
+ // 特殊情况:当前回合是篡夺者,则救
638
+ return whoseTurn == = stealer
639
+ }
640
+ // 如果自己不是同一阵营,则救(防止发动技能后敌方胜利)
641
+ return true
642
+ }
643
+ }
612
644
var save = isPartnerOrSelf(whoDie)
613
645
var notSave = false
614
646
val killer = game!! .players.find { it!! .alive && it.identity == Black && it.secretTask == Killer }
0 commit comments