Merge pull request #911 from PZ157/PR-Branch

bug修复,ai优化
This commit is contained in:
Spmario233 2024-02-05 17:54:06 +08:00 committed by GitHub
commit 541553e8e1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 51 additions and 9 deletions

View File

@ -5699,10 +5699,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
mod:{
aiOrder:(player,card,num)=>{
if(num<=0||typeof card!=='object'||!player.isPhaseUsing()) return num;
if(player.awakenedSkills.includes('sbaiyin')){
if(player.hasSkill('sbaiyin')){
if(player.countMark('renjie')<4&&player.getUseValue(card)<Math.min(4,player.hp*player.hp/4)) return 0;
}
else if(player.hasSkill('jilue')){
if(player.countMark('renjie')<3&&player.getUseValue(card)<Math.min(1.8,0.18*player.hp*player.hp)) return 0;
}
else if(player.countMark('renjie')<4&&player.getUseValue(card)<Math.min(4,player.hp*player.hp/4)) return 0;
}
},
trigger:{

View File

@ -164,7 +164,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ai:{
noh:true,
skillTagFilter(player,tag,arg){
if(player.countCards('h')!=1||(_status.currentPhase&&_status.currentPhase==player)) return false;
if(player===_status.currentPhase||player.countCards('h')!=1) return false;
return game.hasPlayer(current=>{
return current.hasSkill('dcshoucheng')&&get.attitude(current,player)>0;
});

View File

@ -7523,6 +7523,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
//钟会
requanji:{
audio:2,
mod:{
aiOrder:(player,card,num)=>{
if(num<=0||typeof card!=='object'||!player.isPhaseUsing()||!player.hasSkill('zili')||player.needsToDiscard()) return num;
if(player.getExpansions('quanji').length<3&&player.getUseValue(card)<Math.min(4,player.hp*player.hp/4)) return 0;
}
},
trigger:{player:['damageEnd','phaseUseEnd']},
frequent:true,
locked:false,

View File

@ -22765,6 +22765,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audioname:['liushan']
},
shoucheng:{
init(player){
game.addGlobalSkill('shoucheng_draw',player);
},
trigger:{
global:['equipAfter','addJudgeAfter','loseAfter','gainAfter','loseAsyncAfter','addToExpansionAfter'],
},
@ -22796,6 +22799,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 2"
if(result.bool){
player.logSkill(event.name,target);
if(player!==target&&(get.mode()!=='identity'||player.identity!=='nei')) player.addExpose(0.15);
target.draw();
}
"step 3"
@ -22803,8 +22807,28 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
ai:{
threaten:1.3,
expose:0.2,
noh:true,
},
subSkill:{
draw:{
trigger:{player:'dieAfter'},
filter(event,player){
return !game.hasPlayer(current=>{
return current.hasSkill('shoucheng');
},true);
},
content(){
game.removeGlobalSkill('shoucheng_draw');
},
ai:{
noh:true,
skillTagFilter(player,tag,arg){
if(player===_status.currentPhase||player.countCards('h')!==1) return false;
return game.hasPlayer(current=>{
return current.hasSkill('shoucheng')&&player.isFriendOf(current);
});
}
}
}
}
},
hengzheng:{

View File

@ -1049,7 +1049,10 @@ export const Content = {
card.cards = cards.slice(0);
event.card = card;
}
if (!lib.filter.cardEnabled(card, player) || (event.addCount !== false && !lib.filter.cardUsable(card, player))) {
let evt = event.getParent('chooseToUse');
if (get.itemtype(evt) !== 'event') evt = event;
if (!lib.filter.cardEnabled(card, player) || event.addCount !== false &&
!lib.filter.cardUsable(card, player, evt)) {
event.result = { bool: false };
event.finish();
return;

View File

@ -6892,7 +6892,12 @@ export class Player extends HTMLDivElement {
var info = get.info(card);
if (info.multicheck && !info.multicheck(card, this)) return false;
if (!lib.filter.cardEnabled(card, this)) return false;
if (includecard && !lib.filter.cardUsable(card, this)) return false;
if (includecard){
let evt = includecard;
if (typeof evt !== 'object') evt = _status.event.getParent('chooseToUse');
if (get.itemtype(evt) !== 'event') evt = undefined;
if (!lib.filter.cardUsable(card, this, evt)) return false;
}
if (distance !== false && !lib.filter.targetInRange(card, this, target)) return false;
return lib.filter[includecard ? 'targetEnabledx' : 'targetEnabled'](card, this, target);
}

View File

@ -9970,8 +9970,10 @@ export class Library extends Uninstantable {
targetEnabledx: function (card, player, target) {
if (!card) return false;
if (!target || !target.isIn()) return false;
var event = _status.event;
if (event._backup && event._backup.filterCard == lib.filter.filterCard && (!lib.filter.cardEnabled(card, player, event) || !lib.filter.cardUsable(card, player, event))) return false;
let event = _status.event, evt = event.getParent('chooseToUse');
if(get.itemtype(evt) !== 'event') evt = event;
if (event._backup && event._backup.filterCard == lib.filter.filterCard &&
(!lib.filter.cardEnabled(card, player, event) || !lib.filter.cardUsable(card, player, evt))) return false;
if (event.addCount_extra) {
if (!lib.filter.cardUsable2(card, player) && !game.checkMod(card, player, target, false, 'cardUsableTarget', player)) return false;
}