新增OL孟达,同时修改changeGroup为事件并记录至actionHistory.custom;解禁张楚;bug修复

This commit is contained in:
copcap 2023-07-22 06:27:08 +08:00
parent 574719e773
commit 58c9d65abd
12 changed files with 271 additions and 33 deletions

View File

@ -546,7 +546,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
return 0;
},
ai2:function(target){
return -get.attitude(_status.event.player,target);
return -get.attitude(_status.event.player,target)+0.01;
},
});
'step 2'

View File

@ -1110,6 +1110,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
group:'twwuhun_gain',
subSkill:{
gain:{
audio:'twwuhun',
trigger:{
player:'damageEnd',
source:'damageSource',

View File

@ -18393,7 +18393,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
heji_info:'当有角色使用的【决斗】或红色【杀】结算完成后若此牌对应的目标数为1则你可以对相同的目标使用一张【杀】或【决斗】无距离和次数限制。若你以此法使用的牌不为转化牌则你从牌堆中随机获得一张红色牌。',
liubing:'流兵',
liubing_info:'锁定技。①当你声明使用【杀】后,若此牌是你本回合使用的第一张有唯一对应实体牌的【杀】,则你将此牌的花色改为♦。②其他角色于其出牌阶段内使用的非转化黑色杀结算结束后,若此【杀】未造成伤害,则你获得之。',
sp_mifuren:'糜夫人',
sp_mifuren:'手杀糜夫人',
spcunsi:'存嗣',
spcunsi2:'存嗣',
spcunsi_info:'出牌阶段限一次,你可将武将牌翻至背面并选择一名其他角色。其从牌堆或弃牌堆中获得一张【杀】,且下一张杀的伤害值基数+1。',

View File

@ -924,6 +924,7 @@ window.noname_character_rank={
'vtb_xiaole',
'vtb_xiaojiu',
'ol_zhangzhang',
'ol_mengda',
],
b:[
'diy_feishi',
@ -1212,6 +1213,7 @@ window.noname_character_rank={
'sb_zhurong',
'vtb_xiaoshan',
'vtb_xiaotao',
'zhangchu',
],
bm:[
'diy_xizhenxihong',

View File

@ -9845,9 +9845,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.storage.rehuashen.current=event.card;
game.broadcastAll(function(character,player){
player.sex=lib.character[character][0];
player.group=lib.character[character][1];
player.node.name.dataset.nature=get.groupnature(player.group);
//player.group=lib.character[character][1];
//player.node.name.dataset.nature=get.groupnature(player.group);
},event.card,player);
player.changeGroup(lib.character[event.card][1],false);
}
var link=result.control;
player.storage.rehuashen.current2=link;

View File

@ -4494,8 +4494,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.markSkill('huashen');
game.broadcastAll(function(character,player){
player.sex=lib.character[character][0];
player.group=lib.character[character][1];
player.node.name.dataset.nature=get.groupnature(player.group);
//player.group=lib.character[character][1];
//player.node.name.dataset.nature=get.groupnature(player.group);
var mark=player.marks.huashen;
if(mark){
mark.style.transition='all 0.3s';
@ -4513,6 +4513,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},200);
}
},character,player);
player.changeGroup(lib.character[character][1],false);
}
player.storage.huashen.current2=skill;
if(!player.additionalSkills.huashen||!player.additionalSkills.huashen.contains(skill)){

View File

@ -13,7 +13,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_huben:["caohong","xiahouba","zhugeke","zumao","wenpin","litong","mazhong","heqi","quyi","luzhi","zangba","yuejin","dingfeng","wuyan","ol_zhuling","tianyu","huojun",'zhaoyǎn','dengzhong','ol_furong','macheng','ol_zhangyì','ol_zhujun','maxiumatie','luoxian'],
sp_liesi:['mizhu','weizi','ol_liuba','zhangshiping'],
sp_default:["sp_diaochan","sp_zhaoyun","sp_sunshangxiang","sp_caoren","sp_jiangwei","sp_machao","sp_caiwenji","jsp_guanyu","jsp_huangyueying","sp_pangde","sp_jiaxu","yuanshu",'sp_zhangliao','sp_ol_zhanghe','sp_menghuo'],
sp_waitforsort:['ol_huban'],
sp_waitforsort:['ol_huban','ol_mengda'],
sp_qifu:["caoying",'panshu',"caochun","yuantanyuanshang",'caoshuang','wolongfengchu','guansuo','baosanniang','fengfangnv','jin_zhouchu'],
sp_wanglang:['ol_wanglang'],
sp_zhongdan:["cuiyan","huangfusong"],
@ -28,6 +28,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
character:{
ol_mengda:['male','shu',4,['olgoude']],
ol_wanglang:['male','wei',3,['gushe','oljici']],
ol_liuyan:['male','qun','4/6',['olpianan','olyinji','olkuisi'],['unseen']],
lushi:['female','qun',3,['olzhuyan','olleijie']],
@ -683,6 +684,208 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
skill:{
//OL孟达
olgoude:{
audio:2,
trigger:{
global:'phaseEnd',
},
filter:function(event,player){
var list=[];
game.countPlayer(current=>{
if(current.group!=player.group) return false;
var listx=lib.skill.olgoude.getActed(current);
list.addArray(listx);
});
return list.length&&list.length<4;
},
getActed:function(target){
var list=[];
if(target.hasHistory('gain',evt=>{
return evt.getParent().name=='draw'&&evt.cards.length==1;
})){
list.push(1);
}
if(game.hasPlayer2(current=>{
return current.hasHistory('lose',evt=>{
if(evt.type!='discard') return false;
if((evt.discarder||evt.getParent(2).player)!=target) return false;
var evtx=evt.getl(current);
if(!evtx||evtx.hs.length!=1) return false;
return true;
});
})){
list.push(2);
}
if(target.hasHistory('useCard',evt=>{
if(evt.card.name=='sha'&&evt.cards&&!evt.cards.length) return true;
return false;
})){
list.push(3);
}
if(target.hasHistory('custom',evt=>{
return evt.name=='changeGroup';
})){
list.push(4);
}
return list;
},
direct:true,
content:function(){
'step 0'
var list=[1,2,3,4];
game.countPlayer(current=>{
if(current.group!=player.group) return false;
var listx=lib.skill.olgoude.getActed(current);
list.removeArray(listx);
});
var list2=list.slice();
var nochai=false,nosha=false;
if(!game.hasPlayer(current=>{
return current.countDiscardableCards(player,'h');
})){
nochai=true;
list2.remove(2);
}
if(!game.hasPlayer(current=>{
return player.canUse({name:'sha',isCard:true},current,true,false);
})){
nosha=true;
list2.remove(3);
}
var choices=list2.map(i=>{
return '选项'+get.cnNumber(i,true);
});
var choiceList=[
'摸一张牌',
'弃置一名角色的一张手牌',
'视为使用一张【杀】',
'将势力改为任意一个势力'
].map((text,ind)=>{
var hint='';
if(list.contains(ind+1)){
return text;
}
else{
hint+='已被执行过且';
}
if(ind==1&&nochai&&!list2.contains(ind+1)) hint+='无有手牌角色且';
if(ind==2&&nosha&&!list2.contains(ind+1)) hint+='无可选目标且';
hint=hint.slice(0,-1);
return '<span style="opacity:0.5">'+text+''+hint+'</span>';
});
choices.push('cancel2');
if(_status.connectMode) game.broadcastAll(function(){_status.noclearcountdown=true});
player.chooseControl(choices).set('choiceList',choiceList).set('prompt',get.prompt('olgoude')).set('ai',()=>{
return _status.event.choice;
}).set('choice',function(){
var fn=function(control){
switch(control){
case '选项一':
return player.getUseValue({name:'wuzhong'})/2;
case '选项二':
return Math.max.apply(Math,game.filterPlayer().map(current=>{
if(current.hasSkillTag('noh')) return -1;
return -1.5*get.attitude(player,current)-Math.max(0,current.countCards('h')-2)/3;
}));
case '选项三':
return player.getUseValue({name:'sha'});
case '选项四':
var myPopulation=game.countPlayer(current=>{
return current.group==player.group;
})-1;
var value=Math.max.apply(Math,lib.group.map(group=>{
return game.countPlayer(current=>{
return current.group==group&&current!=player;
})-myPopulation;
}));
return 10*value+0.1*(Math.random()-0.5);
case 'cancel2':
return 0;
}
}
var choicesx=choices.map(choice=>{
return [choice,fn(choice)];
});
choicesx=choicesx.sort((a,b)=>{
return b[1]-a[1];
});
var choice=choicesx[0];
if(choice[1]<0) return 'cancel2';
return choice[0];
}());
'step 1'
if(result.control=='cancel2'){
event.finish();
return;
}
var contents={
选项一:function(){
player.logSkill('olgoude');
player.draw();
},
选项二:function(){
'step 0'
player.chooseTarget('苟得:弃置一名角色的一张手牌',true,(card,player,target)=>{
return target.countDiscardableCards(player,'h');
}).set('ai',target=>{
if(target.hasSkillTag('noh')) return 0;
return -get.attitude(_status.event.player,target);
});
'step 1'
if(result.bool){
var target=result.targets[0];
if(_status.connectMode){game.broadcastAll(function(){delete _status.noclearcountdown;game.stopCountChoose()});}
player.logSkill('olgoude',target);
player.discardPlayerCard(target,true,'h');
}
},
选项三:function(){
player.chooseUseTarget('sha',true,false).set('logSkill','olgoude');
},
选项四:function(){
'step 0'
var list=lib.group.slice();
var maxGroup=list.slice().sort((a,b)=>{
return game.countPlayer(current=>{
return current.group==b&&current!=player;
})-game.countPlayer(current=>{
return current.group==a&&current!=player;
});
})[0];
player.chooseControl(list).set('prompt','苟得:请选择要变更为的势力').set('ai',()=>{
return _status.event.choice;
}).set('choice',maxGroup);
'step 1'
if(_status.connectMode){game.broadcastAll(function(){delete _status.noclearcountdown;game.stopCountChoose()});}
var group=result.control;
player.logSkill('olgoude');
player.changeGroup(group);
player.popup(group+'2',get.groupnature(group,'raw'));
},
}
var next=game.createEvent('olgoude_'+result.control);
next.player=player;
next.setContent(contents[result.control]);
},
ai:{
threaten:3,
effect:{
player_use:function(card,player,target){
if(typeof card=='object'&&card.cards&&card.cards.some(card=>{
return get.position(card)=='h';
})&&!get.tag(card,'draw')&&!get.tag(card,'gain')&&!get.tag(card,'discard')&&
player==_status.currentPhase&&player.needsToDiscard()==1&&game.countPlayer(current=>{
return current.group==player.group&&current!=player;
})<=1&&lib.group.some(group=>{
return game.countPlayer(current=>{
return current.group==group&&current!=player;
})>2;
})) return 'zeroplayertarget';
},
},
},
},
//OL新改王朗
oljici:{
audio:'jici',
@ -22098,7 +22301,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhugejin:'诸葛瑾',
zhugeke:'诸葛恪',
guanyinping:'关银屏',
ganfuren:'甘夫人',
ganfuren:'SP甘夫人',
sunhao:'孙皓',
chengyu:'程昱',
simalang:'司马朗',
@ -23095,6 +23298,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ol_wanglang:'OL王朗',
oljici:'激词',
oljici_info:'当你的拼点牌亮出后若点数不大于X你可令点数+X并令〖鼓舌〗视为未发动过X为你的“饶舌”标记数。',
ol_mengda:'OL孟达',
olgoude:'苟得',
olgoude_info:'一名角色的回合结束时若有与你势力相同的角色执行过以下项则你可以执行这些角色未执行过的一项1.摸一张牌2.弃置一名角色的一张手牌3.使用一张无对应实体牌的【杀】4.变更势力。',
sp_tianji:'天极·皇室宗亲',
sp_sibi:'四弼·辅国文曲',

View File

@ -32,7 +32,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xielingyu:['female','wu',3,['dcyuandi','dcxinyou']],
yuanyin:['male','qun',3,['dcmoshou','dcyunjiu'],['unseen']],
dongwan:['female','qun',3,['dcshengdu','dcxianjiao'],['unseen']],
zhangchu:['female','qun',3,['dcjizhong','dcjucheng','dcguangshi'],['unseen']],
zhangchu:['female','qun',3,['dcjizhong','dcrihui','dcguangshi']],
peiyuanshao:['male','qun',4,['dcmoyu'],['unseen']],
mengjie:['male','qun',3,['dcyinlu','dcyouqi']],
//dc_fuwan:['male','qun',4,['dcmoukui']],
@ -3243,7 +3243,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
}
},
dcjucheng:{
dcrihui:{
audio:2,
trigger:{player:'useCardAfter'},
usable:1,
@ -3262,9 +3262,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var card={name:trigger.card.name,nature:trigger.card.nature,isCard:true};
event.target=target;
event.card=card;
if(target.hasMark('dcjizhong')) player.gainPlayerCard(get.prompt('dcjucheng',target),target,'hej').set('logSkill',['dcjucheng',target]);
if(target.hasMark('dcjizhong')) player.gainPlayerCard(get.prompt('dcrihui',target),target,'hej').set('logSkill',['dcrihui',target]);
else{
player.chooseBool(get.prompt('dcjucheng',target),'令所有有“信众”的角色依次视为对其使用一张'+get.translation(card)).set('ai',()=>{
player.chooseBool(get.prompt('dcrihui',target),'令所有有“信众”的角色依次视为对其使用一张'+get.translation(card)).set('ai',()=>{
return _status.event.bool;
}).set('bool',function(){
var eff=0;
@ -3277,13 +3277,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
'step 1'
if(!result.bool){
player.storage.counttrigger.dcjucheng--;
player.storage.counttrigger.dcrihui--;
return;
}
if(target.hasMark('dcjizhong')) event.finish();
else{
player.logSkill('dcjucheng',target);
player.logSkill('dcrihui',target);
event.targets=game.filterPlayer(current=>current.hasMark('dcjizhong'));
event.targets.sortBySeat(_status.currentPhase);
}
'step 2'
var current=event.targets.shift();
@ -10033,6 +10034,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
group:'dcfuxue_draw',
subSkill:{
draw:{
audio:'dcfuxue',
trigger:{player:'phaseJieshuBegin'},
forced:true,
locked:false,
@ -28146,6 +28148,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
check:function(event,player){
return get.value(event.cards)+player.maxHp*2-18>0;
},
prompt2:function(event,player){
return '你可以减1点体力上限然后获得'+get.translation(event.cards.filterInD())+'。';
},
filter:function(event,player){
return player.isPhaseUsing()&&get.type(event.card)=='trick'&&event.cards.filterInD().length>0;
},
@ -29464,7 +29469,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
mushun:'穆顺,小说《三国演义》中的人物,男,东汉末宦官。献帝欲修书与国舅伏完,共谋图曹公。因顺为宦官中之忠义可托者,乃命顺往送书。顺藏书于发中,潜出禁宫,径至完宅,将书呈上。及完回书付顺,顺乃藏于头髻内,辞完回宫。然公闻信,先于宫门等候,顺回遇公,公喝左右,遍搜身上,并无夹带,放行。忽然风吹落其帽。公又唤回,取帽视之,遍观无物,还帽令戴。顺双手倒戴其帽。公心疑,令左右搜其头发中,搜出伏完书来。公见书大怒,执下顺于密室问之,顺不肯招。当晚将顺、完等宗族二百余口,皆斩于市。',
jsp_guanyu:'关羽,字云长。曾水淹七军、擒于禁、斩庞德、威震华夏,吓得曹操差点迁都躲避,但是东吴偷袭荆州,关羽兵败被害。后传说吕蒙因关羽之魂索命而死。',
ruanji:'阮籍公元210年263年字嗣宗陈留尉氏今河南省开封市三国时期魏国诗人、竹林七贤之一。阮瑀之子门荫入仕累迁步兵校尉世称阮步兵。崇奉老庄之学政治上则采取谨慎避祸的态度。景元四年公元263年阮籍去世享年五十三岁。作为“正始之音”的代表著有《咏怀八十二首》、《大人先生传》等其著作收录在《阮籍集》中。',
ganfurenmifuren:'甘夫人,刘备起兵后于沛城娶之为妾。后来,甘夫人随刘备到荆州,生了阿斗(也就是后主刘禅)。223年四月刘备病死于白帝城追谥甘夫人为“昭烈皇后”。<br>刘备夫人。徐州别驾糜竺之妹。长坂兵败,她怀抱年仅两岁的刘禅在乱军中走散,被赵云发现;但麋夫人因为赵云只有一匹马,不肯上马,在将阿斗托付给赵云后投井而亡。'
ganfurenmifuren:'甘夫人,刘备起兵后于沛城娶之为妾。后来,甘夫人随刘备到荆州,生了阿斗(也就是后主刘禅)。223年四月刘备病死于白帝城追谥甘夫人为“昭烈皇后”。<br>糜夫人,刘备夫人。徐州别驾糜竺之妹。长坂兵败,她怀抱年仅两岁的刘禅在乱军中走散,被赵云发现;但麋夫人因为赵云只有一匹马,不肯上马,在将阿斗托付给赵云后投井而亡。'
},
characterTitle:{
// wulan:'#b对决限定武将',
@ -29633,7 +29638,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
duanwei:['duanwei','junk_duanwei'],
xushao:['xushao','jsrg_xushao'],
huban:['dc_huban','ol_huban'],
mengda:['dc_mengda','pe_mengda'],
mengda:['dc_mengda','ol_mengda','pe_mengda'],
jsp_guanyu:['dc_jsp_guanyu','jsp_guanyu'],
mushun:['mushun','sp_mushun'],
},
@ -30812,8 +30817,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhangchu:'张楚',
dcjizhong:'集众',
dcjizhong_info:'出牌阶段限一次。你可以令一名其他角色摸两张牌然后其选择一项1.若其没有“信众”标记其获得“信众”标记2.弃置三张手牌。',
dcjucheng:'聚逞',
dcjucheng_info:'每回合限一次。当你使用普通锦囊牌或黑色基本牌结算结束后若此牌的目标数为1且目标不为你且其没有“信众”所有有“信众”的角色依次视为对其使用一张与此牌牌名和属性相同的牌;有“信众”,你可以获得其区域里的一张牌。',
dcrihui:'日慧',
dcrihui_info:'每回合限一次。当你使用普通锦囊牌或黑色基本牌结算结束后若此牌的目标数为1且目标不为你且其没有“信众”所有有“信众”的角色依次视为对其使用一张与此牌牌名和属性相同的牌;有“信众”,你可以获得其区域里的一张牌。',
dcguangshi:'光噬',
dcguangshi_info:'锁定技。准备阶段若所有其他角色均有“信众”你失去1点体力并摸两张牌。',
dongwan:'董绾',

View File

@ -6707,7 +6707,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
logTarget:'player',
content:function(){
trigger.cancel();
target.damage(trigger.source?trigger.source:'nosource',trigger.nature,trigger.num).set('card',trigger.card).set('cards',trigger.cards).twgonghuan=true;
player.damage(trigger.source?trigger.source:'nosource',trigger.nature,trigger.num).set('card',trigger.card).set('cards',trigger.cards).twgonghuan=true;
},
},
//桥蕤

View File

@ -10543,6 +10543,21 @@
emptyEvent:function(){
event.trigger(event.name);
},
changeGroup:function(){
'step 0'
if(!event.group) event.group=player.group;
var group=event.group;
player.getHistory('custom').push(event);
if(event.broadcast!==false){
game.broadcast(function(player,group){
player.group=group;
player.node.name.dataset.nature=get.groupnature(group);
},player,group);
}
player.group=group;
player.node.name.dataset.nature=get.groupnature(group);
if(event.log!==false) game.log(player,'将势力变为了','#y'+get.translation(group+2));
},
chooseToDebate:function(){
'step 0'
event.targets=event.list.filter(function(i){
@ -18296,16 +18311,23 @@
return this.maxHp-Math.max(0,this.hp);
},
changeGroup:function(group,log,broadcast){
var player=this;
if(broadcast!==false){
game.broadcast(function(player,group){
player.group=group;
player.node.name.dataset.nature=get.groupnature(group);
},player,group);
var next=game.createEvent('changeGroup');
next.player=this;
next.log=true;
for(var i=0;i<arguments.length;i++){
var arg=arguments[i];
if(lib.group.contains(arg)){
next.group=arg;
}
else if(typeof arg==='boolean'){
next.log=arg;
}
else if(arg==='nobroadcast'){
next.broadcast=false;
}
}
player.group=group;
player.node.name.dataset.nature=get.groupnature(group);
if(log!==false) game.log(this,'将势力变为了','#y'+get.translation(group+2));
next.setContent('changeGroup');
return next;
},
chooseToDuiben:function(target){
var next=game.createEvent('chooseToDuiben');
@ -30175,7 +30197,7 @@
}
player.playerid=i;
player.nickname=info.nickname;
player.changeGroup(info.group,false,false);
player.changeGroup(info.group,false,'nobroadcast');
player.identity=info.identity;
player.identityShown=info.identityShown;
player.hp=info.hp;
@ -47618,10 +47640,10 @@
for(var i of game.connectPlayers){
if(!i.nickname&&!i.classList.contains('unselectable2')) num++;
}
if(num>=lib.configOL.number-1){
alert('至少要有两名玩家才能开始游戏!');
return;
}
// if(num>=lib.configOL.number-1){
// alert('至少要有两名玩家才能开始游戏!');
// return;
// }
game.resume();
}
button.delete();

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB