@@ -510,6 +510,84 @@ game.import("card", function () {
510510 } ,
511511 } ,
512512 } ,
513+ liuyedao : {
514+ fullskin : true ,
515+ type : "equip" ,
516+ subtype : "equip1" ,
517+ distance : { attackFrom : - 1 } ,
518+ ai : {
519+ basic : {
520+ equipValue : 3 ,
521+ } ,
522+ } ,
523+ skills : [ "liuyedao_skill" ] ,
524+ } ,
525+ zj_yexingyi : {
526+ fullskin : true ,
527+ type : "equip" ,
528+ subtype : "equip2" ,
529+ ai : {
530+ basic : {
531+ equipValue : 5.7 ,
532+ } ,
533+ } ,
534+ skills : [ "zj_yexingyi_skill" ] ,
535+ } ,
536+ zj_lianjunshengyan : {
537+ enable : true ,
538+ fullskin : true ,
539+ image : "image/card/lianjunshengyan.png" ,
540+ type : "trick" ,
541+ toself : true ,
542+ filterTarget : lib . filter . notMe ,
543+ selectTarget : ( ) => 1 ,
544+ changeTarget ( player , targets ) {
545+ targets . push ( player ) ;
546+ } ,
547+ modTarget : true ,
548+ async contentBefore ( event , trigger , player ) {
549+ const evt = event . getParent ( ) ;
550+ if ( ! evt . lianjunType ) {
551+ const val = evt . targets . reduce ( ( sum , current ) => {
552+ sum += get . effect ( current , { name : "draw" } , player , player ) ;
553+ sum -= get . recoverEffect ( current , player , player ) ;
554+ return sum ;
555+ } , 0 ) ;
556+ const result = await player
557+ . chooseControl ( "摸一张牌" , "回复1点体力" )
558+ . set ( "prompt" , `联军盛宴:选择一项令所有目标执行` )
559+ . set ( "ai" , ( ) => ( get . event ( "val" ) > 0 ? "摸一张牌" : "回复1点体力" ) )
560+ . set ( "val" , val )
561+ . forResult ( ) ;
562+ if ( result ?. control ) {
563+ player . popup ( result . control == "摸一张牌" ? "摸牌" : "回血" ) ;
564+ evt . lianjunType = result . control == "摸一张牌" ? "draw" : "recover" ;
565+ }
566+ }
567+ } ,
568+ async content ( event , trigger , player ) {
569+ const evt = event . getParent ( ) ,
570+ { target } = event ,
571+ type = evt . lianjunType ;
572+ await target [ type ] ( ) ;
573+ } ,
574+ ai : {
575+ basic : {
576+ useful : 3 ,
577+ value : 3 ,
578+ order : 5 ,
579+ } ,
580+ result : {
581+ target ( player , target , card ) {
582+ return Math . max ( get . effect ( target , { name : "draw" } , player , target ) , get . recoverEffect ( target , player , target ) ) ;
583+ } ,
584+ } ,
585+ tag : {
586+ gain : 1 ,
587+ recover : 1 ,
588+ } ,
589+ } ,
590+ } ,
513591 } ,
514592 skill : {
515593 tiejili_skill : {
@@ -796,6 +874,86 @@ game.import("card", function () {
796874 } ,
797875 log : false ,
798876 } ,
877+ liuyedao_skill : {
878+ equipSkill : true ,
879+ trigger : {
880+ source : "damageBegin1" ,
881+ } ,
882+ filter ( event , player ) {
883+ if ( event . card ?. name !== "sha" ) {
884+ return false ;
885+ }
886+ return player . countDiscardableCards ( player , "h" ) > 1 ;
887+ } ,
888+ async cost ( event , trigger , player ) {
889+ event . result = await player
890+ . chooseToDiscard ( get . prompt2 ( event . skill ) , 2 , "h" )
891+ . set ( "ai" , card => {
892+ if ( get . event ( "val" ) <= 0 ) {
893+ return 0 ;
894+ }
895+ return 6 - get . value ( card ) ;
896+ } )
897+ . set ( "val" , get . damageEffect ( trigger . player , trigger . source , player ) )
898+ . set ( "chooseonly" , true )
899+ . forResult ( ) ;
900+ } ,
901+ async content ( event , trigger , player ) {
902+ await player . modedDiscard ( event . cards ) ;
903+ trigger . num ++ ;
904+ } ,
905+ } ,
906+ zj_yexingyi_skill : {
907+ equipSkill : true ,
908+ trigger : { target : "shaBegin" } ,
909+ forced : true ,
910+ priority : 6 ,
911+ audio : true ,
912+ filter ( event , player ) {
913+ if ( player . hasSkillTag ( "unequip2" ) ) {
914+ return false ;
915+ }
916+ if (
917+ event . player . hasSkillTag ( "unequip" , false , {
918+ name : event . card ? event . card . name : null ,
919+ target : player ,
920+ card : event . card ,
921+ } )
922+ ) {
923+ return false ;
924+ }
925+ return event . card . name === "sha" && get . color ( event . card ) === "red" ;
926+ } ,
927+ async content ( event , trigger , player ) {
928+ trigger . cancel ( ) ;
929+ } ,
930+ ai : {
931+ effect : {
932+ target ( card , player , target ) {
933+ if ( typeof card !== "object" || target . hasSkillTag ( "unequip2" ) ) {
934+ return ;
935+ }
936+ if (
937+ player . hasSkillTag ( "unequip" , false , {
938+ name : card ? card . name : null ,
939+ target : target ,
940+ card : card ,
941+ } ) ||
942+ player . hasSkillTag ( "unequip_ai" , false , {
943+ name : card ? card . name : null ,
944+ target : target ,
945+ card : card ,
946+ } )
947+ ) {
948+ return ;
949+ }
950+ if ( card . name === "sha" && get . color ( card ) === "red" ) {
951+ return "zeroplayertarget" ;
952+ }
953+ } ,
954+ } ,
955+ } ,
956+ } ,
799957 } ,
800958 translate : {
801959 tiejili : "铁蒺藜骨朵" ,
@@ -829,6 +987,16 @@ game.import("card", function () {
829987 dajunyajing_info : "出牌阶段,对一名角色使用。其以外的所有角色依次选择是否将一张牌当无距离限制的【杀】对其使用。" ,
830988 yushijiesui : "玉石皆碎" ,
831989 yushijiesui_info : "出牌阶段,对一名角色使用。你对目标角色造成1点伤害,然后失去1点体力。" ,
990+ liuyedao : "柳叶刀" ,
991+ liuyedao_info : "你使用【杀】造成伤害时,可以弃置两张手牌令此伤害+1。" ,
992+ liuyedao_skill : "柳叶刀" ,
993+ liuyedao_skill_info : "你使用【杀】造成伤害时,可以弃置两张手牌令此伤害+1。" ,
994+ zj_yexingyi : "夜行衣" ,
995+ zj_yexingyi_info : "锁定技,红色的【杀】对你无效。" ,
996+ zj_yexingyi_skill : "夜行衣" ,
997+ zj_yexingyi_skill_info : "锁定技,红色的【杀】对你无效。" ,
998+ zj_lianjunshengyan : "联军盛宴" ,
999+ zj_lianjunshengyan_info : "出牌阶段,对你和一名其他角色使用。选择一项令所有目标执行:1.摸一张牌;2.回复1点体力。" ,
8321000 } ,
8331001 list : [
8341002 [ "diamond" , 6 , "suibozhuliu" ] ,
@@ -839,6 +1007,9 @@ game.import("card", function () {
8391007 [ "spade" , 5 , "qingmingjian" ] ,
8401008 [ "club" , 5 , "mengchong" ] ,
8411009 [ "heart" , 5 , "yushijiesui" ] ,
1010+ [ "spade" , 1 , "liuyedao" ] ,
1011+ [ "spade" , 2 , "zj_yexingyi" ] ,
1012+ [ "heart" , 1 , "zj_lianjunshengyan" ] ,
8421013 ] ,
8431014 } ;
8441015} ) ;
0 commit comments