noname/character/swd.js

10981 lines
336 KiB
JavaScript
Raw Normal View History

2024-04-15 18:10:02 +00:00
import { lib, game, ui, get, ai, _status } from "../noname.js";
game.import("character", function () {
2018-04-17 07:32:43 +00:00
return {
2024-04-15 18:10:02 +00:00
name: "swd",
character: {
swd_huzhongxian: ["male", "wu", 3, ["daofa", "xielv", "hujing"]],
2024-04-15 18:10:02 +00:00
swd_anka: ["male", "qun", 3, ["songci", "anlianying"]],
swd_septem: ["male", "qun", 4, ["jiying", "liaoyuan", "yishan"]],
swd_kama: ["female", "qun", 3, ["yueren", "shangshi"]],
2018-04-17 07:32:43 +00:00
// swd_miles:['male','qun',4,['aojian','miles_xueyi','mohua2']],
2024-04-15 18:10:02 +00:00
swd_nicole: ["female", "qun", 3, ["huanjian", "lingwu", "minjing"]],
swd_wangsiyue: ["female", "wei", 3, ["duishi", "biyue"]],
swd_weida: ["female", "qun", 3, ["yueren", "zhenlie", "duijue"]],
swd_xuanyuanjianxian: ["male", "qun", 4, ["pozhou", "huajian", "xuanyuan"]],
2024-04-15 18:10:02 +00:00
swd_chenjingchou: ["male", "wu", 3, ["youyin", "yihua"]],
swd_duguningke: ["female", "qun", 3, ["nlianji", "touxi"]],
swd_guyue: ["male", "wei", 3, ["gtiandao", "gxianyin", "wangchen"]],
swd_tuobayuer: ["female", "shu", 4, ["swdliuhong", "poyue", "niepan"]],
swd_yuwentuo: ["male", "shu", 4, ["wushuang", "xielei", "kunlunjing"]],
swd_yuxiaoxue: ["female", "wei", 3, ["huanhun", "daixing", "yinyue"]],
2024-04-15 18:10:02 +00:00
swd_jiliang: ["male", "wu", 3, ["yunchou", "gongxin", "jqimou"]],
swd_shuijing: ["female", "qun", 4, ["mojian", "duanyue", "tuzhen"]],
swd_quxian: ["female", "qun", 3, ["mojian", "huanxia"]],
swd_xiyan: ["male", "qun", 3, ["jiefen", "datong"]],
swd_cheyun: ["female", "wu", 3, ["cyxianjiang", "cyqiaoxie", "shengong"]],
swd_huanyuanzhi: ["male", "qun", 3, ["swdtianshu", "lanzhi", "mufeng"]],
swd_murongshi: ["female", "shu", 4, ["duanyi", "guxing"]],
swd_jipeng: ["male", "wu", 3, ["reyingzi", "guozao"]],
swd_qi: ["male", "qun", 3, ["yaotong", "heihuo", "pojian"]],
2024-04-15 18:10:02 +00:00
swd_luchengxuan: ["male", "wu", 4, ["ljifeng", "lxianglong"]],
swd_xiarou: ["female", "shu", 3, ["xianghui", "huiqi"]],
swd_moye: ["female", "wu", 3, ["rexue", "liuli", "senluo"]],
2024-04-15 18:10:02 +00:00
swd_zhaoyun: ["male", "shu", 4, ["longdan", "pozhen", "tanlin"]],
swd_hengai: ["female", "shu", 3, ["funiao", "ningxian", "hlingbo"]],
swd_duanmeng: ["female", "shu", 4, ["xuanying", "lieren"]],
swd_jiangwu: ["male", "shu", 4, ["yijue", "dangping"]],
swd_tuwei: ["male", "shu", 3, ["zhanlu", "susheng"]],
swd_yeyaxi: ["female", "shu", 3, ["rexue", "huopu", "shenyan"]],
2024-04-15 18:10:02 +00:00
swd_muyun: ["male", "wei", 4, ["zhuhai", "polang", "jikong"]],
swd_lanyin: ["female", "wei", 3, ["xingdian", "yulin", "luomei"]],
swd_zhiyin: ["female", "wei", 3, ["xuehuang", "ningshuang", "zhuyu"]],
swd_qiner: ["female", "wei", 3, ["huanyin", "tianhuo", "xuanzhou"]],
swd_jiuyou: ["male", "wei", 3, ["lexue"]],
swd_duopeng: ["male", "wu", 3, ["luanji", "reyingzi"]],
2024-04-15 18:10:02 +00:00
swd_fengtianling: ["male", "shu", 4, ["guiyan", "jiang"]],
swd_huyue: ["female", "wu", 3, ["hyunshen", "fengming"]],
swd_jialanduo: ["male", "qun", 4, ["xianyin", "mailun"]],
swd_rongshuang: ["female", "wu", 3, ["suiyan", "duanxing"]],
swd_zhuoshanzhu: ["male", "wu", 4, ["suiyan", "wanjun"]],
swd_jiting: ["female", "wei", 4, ["guanhu", "lingshi"]],
2024-04-15 18:10:02 +00:00
swd_sikongyu: ["male", "wu", 4, ["sliufeng", "linyun", "hutian"]],
swd_muyue: ["female", "wei", 3, ["xingzhui", "lingxian", "shouyin"]],
swd_ziqiao: ["female", "shu", 3, ["guaili", "fuyan"]],
swd_fengyu: ["male", "shu", 4, ["fzhenwei", "shangxi"]],
2018-04-17 07:32:43 +00:00
// swd_wushi:['male','wei',3,['zhoufu','yingbin','xuying']],
// swd_lanmoshen:['female','wei',3,['bingjian','lieren']],
2024-04-15 18:10:02 +00:00
swd_huanglei: ["male", "qun", 3, ["jilve", "gongshen", "gaizao"]],
2018-04-17 07:32:43 +00:00
// swd_libai:['female','qun',3,['miaobi','zhexian']],
2024-04-15 18:10:02 +00:00
swd_kendi: ["male", "qun", 3, ["zhanxing", "kbolan"]],
2018-04-17 07:32:43 +00:00
// swd_lijing:['male','qun',4,['tianyi','zhuhai']],
2024-04-15 18:10:02 +00:00
swd_lilian: ["female", "qun", 3, ["swd_wuxie", "lqingcheng"]],
2018-04-17 07:32:43 +00:00
// swd_linming:['male','qun',3,['shelie','bifa']],
// swd_philis:['male','qun',4,['yicong','wangxi']],
// swd_pepin:['male','qun',4,['rejianxiong','quhu']],
2024-04-15 18:10:02 +00:00
swd_kangnalishi: ["male", "qun", 1, ["busi", "xuying", "yinguo"]],
swd_xuanyuanjiantong: ["male", "qun", 3, ["chengjian", "huanling"]],
swd_huiyan: ["male", "qun", 4, ["hwendao", "lingfeng", "hxunzhi"]],
2018-04-17 07:32:43 +00:00
// swd_chenfu:['male','qun',4,['xuanzhou','bingfeng']],
// swd_chengyaojin:['male','qun',4,['jiuchi','jufu']],
2024-04-15 18:10:02 +00:00
swd_shanxiaoxiao: ["female", "wu", 3, ["shehun", "xiaomoyu"]],
swd_yuchiyanhong: ["female", "shu", 3, ["huanxing", "meihuo"]],
2018-04-17 07:32:43 +00:00
// swd_hanteng:['male','qun',4,['kuangfu']],
// swd_heran:['male','qun',3,['yujian','guiyin','shejie']],
// swd_xingtian:['male','qun',8,[]],
// swd_qinshubao:['male','qun',3,['huajing','pingxu']],
// swd_tuobayueer:['female','shu',3,['shushen','biyue']],
// swd_yangshuo:['male','qun',4,['longdan','luomu']],
// swd_zhanglie:['male','qun',4,['huajin','poxiao']],
2024-04-15 18:10:02 +00:00
swd_hanluo: ["male", "qun", 5, ["tiebi"]],
swd_fu: ["male", "qun", 5, ["yudun"]],
swd_linyue: ["male", "wei", 3, ["zhenjiu", "lmazui"]],
swd_zidashu: ["male", "wu", 3, ["shoulie", "hudun"]],
swd_maixing: ["male", "wu", 3, ["toudan", "shending"]],
swd_fuyan: ["male", "qun", 4, ["lianda"]],
swd_haidapang: ["female", "wu", 3, ["bingjian", "rumeng"]],
swd_shaowei: ["female", "shu", 3, ["jianji", "huangyu"]],
2024-04-15 18:10:02 +00:00
swd_youzhao: ["male", "shu", 4, ["longdan", "yuchen"]],
swd_shangzhang: ["male", "shu", 4, ["lianwu"]],
swd_situqiang: ["female", "shu", 3, ["fengze", "lingyue", "jinlin"]],
2024-04-15 18:10:02 +00:00
swd_chunyuheng: ["male", "wei", 2, ["jueqing", "shengshou", "xuying"]],
swd_hanlong: ["male", "wei", 4, ["ciqiu", "siji"]],
swd_yuli: ["female", "wu", 3, ["lingxin", "tianxiang"]],
swd_zhanggao: ["male", "wei", 4, ["yicong", "poxing"]],
swd_shuwaner: ["female", "shu", 3, ["sxianjing", "huodan"]],
swd_xiaohuanglong: ["male", "wei", 3, ["yeying", "juxi"]],
2024-04-15 18:10:02 +00:00
swd_hupo: ["male", "wu", 3, ["dunxing", "guiying"]],
swd_jiangziya: ["male", "wu", 3, ["mingfu", "tianlun"]],
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
characterIntro: {
swd_kendi:
"占星大师老肯迪的孙子,老肯迪死后,他也自称肯迪,伪装成老肯迪,以保护老肯迪的藏书。肯迪平常以接受委托抄书与翻译拉丁文书籍为业,除了占星术以外,其余知识也相当广博。为了增长见闻,什么可怕的地方都敢去,所以认识薇达与不少的军官。后来,肯迪的子孙成为伊斯兰地区的大学者,以因果定律的学说著名于世。",
swd_shuwaner:
"第一代祝犁黄汉卿的妻子,二代祝犁黄采儿的母亲。陷阱机关师,擅长火系陷阱,并能驱使一种可爆裂来杀敌之神秘「火丹」技术。",
swd_xiaohuanglong: "龙族之幻兽,后土之神将它送给兰茵避险,以保护她安全。",
swd_huzhongxian:
"炼妖壶是女娲神所创,是以开天辟地创造生命的工具,开创出万物后即遗留于某一处水底神殿中。由巴蛇及蛟龟守护该神器,过了约莫千年之久,炼妖壶已可幻化成人形,即为壶中仙。此时正因人类对异类的排斥,巴蛇对此愤愤不平,壶中仙与巴蛇讨论人魔共存的方法,但巴蛇觉得壶中仙是另有所图。自不采用,一日趁壶中仙不注意,将炼妖壶的妖怪全数释放,留下蛟龟看守练妖壶,巴蛇率领魔族大军反攻人类,从此人魔之战一直持续着。",
swd_anka:
"安卡在数千年前,曾经是法老王的宠物。在法老王过世后,本来要当陪葬品,却被一位也要被陪葬的祭司带着逃走,安卡借着长期跟随祭司,学得不少后来传到欧洲的黑魔法,成了一只猫精。但在欧洲黑猫很不受欢迎,之后遇上卡玛,成为共患难的好友。安卡有许多癖好,像是收集漂亮的石头把它藏起来,若是日后又发现会很高兴。",
swd_septem:
"欧洲梅罗文加王朝高卢出生的东方人与日耳曼混血儿,宇文拓的后人。深受丕平三世的器重,主要担任收集情报等工作,因为屡立大功而被受封为骑士。后因接受丕平三世的任务而秘密离开高卢前往东方寻找所谓的战争不败之术,由此踏上漫漫征途。",
swd_kama:
"来自印度的爱情精灵,与一只来自埃及的有翼黑猫一同旅行,黑猫名叫安卡。数百年来,卡玛跟人类有数不尽的爱情故事,大部分都以悲剧收场,她不断的在人间徘徊,为的是寻找永恒的知己。",
swd_nicole:
"前世是独孤宁珂,灵魂被古月仙人用伏羲琴净化,因此未受到魔界污染。她没有过去的记忆,因此个性单纯,对许多事都好奇。后来受撒旦派遣来引导赛特,希望赛特能加入撒旦的阵营。",
swd_wangsiyue:
"长安名士的孙女,熟读四书以及佛经,有才女之称,还没出嫁就有大批追求者,她的字画就能在市集上以高价卖出。她非常喜欢诗,特别是古朴的诗经的诗句,遇到说不出口的事,就用吟诗的方式表达。",
swd_weida:
"阿拉伯女性,凯利宾瓦力德之后裔,女中豪杰,做事干脆利落,不喜欢拖拖拉拉。长期的军旅生涯,使她的行事作风与一般女性不同。阿拉伯世界的女子长年戴着面纱,不能与男子一起走路,薇达则是通通不遵守。",
swd_xuanyuanjianxian:
"东汉末年,年幼的徐暮云的神识被应龙之女分离出来时附于野狼尸体上,化作金狼。因总想夺回成年徐暮云神识所控制的肉身而时常袭击徐暮云。在木门道获得剑气后化为人形,前往遥远的云和山的彼端,归隐为轩辕剑仙。平常能言善道,出口成章,甚至杀人出血成“书画”为其一绝。",
swd_xuanyuanjiantong:
"由轩辕剑鞘幻化而成的仙童,好奇心很重,完全是个小孩子的心,跟轩辕剑仙成一老一少的对比。",
swd_chenjingchou:
"为陈朝后裔。忠臣陈辅以“靖北虏,复国仇”为他命名“靖仇”。将所有的复国重任全都寄托于他身上。虽然师傅对其寄予厚望,但长大后的陈靖仇却个性温柔,只喜欢诗词与音乐,非常讨厌杀戮,无心复国,一心只想过着与世无争的平静生活。因这样的性格,被其师责为软弱无能、胸无大志。",
swd_duguningke:
"西方魔王撒旦手下的女魔将。由撒旦派往神州目的是扩大赤贯星在神州九天结界上所划开的裂痕。是撒旦侵略神州的前锋。与宇文拓自幼相识对他怀有感情。因不愿在宇文拓面前吃下撒旦之果而变得丑陋在赤贯星上败给陈靖仇一行人后悲凉死去后古月圣将她的魂魄放入伏羲琴中净化99年宇文拓带着她的魂魄一路西行回到欧洲。经过净化后忘记前世记忆转世成为妮可。",
swd_guyue:
"仙山岛最深处隐居的年轻仙人,飘逸潇洒,气质不凡。据说他的医术在仙界,也堪称是第一、第二位之绝。真身为一只白狐,后与修炼成仙的何然同归仙山岛隐居,二人经常在对弈亭对弈,不问世事。",
swd_tuobayuer:
"本是拓跋部落(鲜卑)遗民,世世代代保护拓跋族神器“神农鼎”。年幼的她有一次随族人外出游牧时,隋炀帝为凸显天威而发兵侵略冲袭留守的部民,父母惨死,神鼎被夺。自此对隋人产生极深敌意,苦苦恳求姐夫张烈教她武艺,日夜勤练,打算伺机南下找回神鼎,并替父母报仇。",
swd_yuwentuo:
"又名杨拓本是北周皇室后裔因国家被隋朝所篡他自小流落於民间。幸好隋朝名将杨素发现了他看出他的素质就收他为徒并让自己师弟杨义臣收他为义子。12岁那年曾用轩辕剑歼灭南陈旧部叛乱杨素死後宇文拓就担负起继续捍卫杨家天下的重责大任。后通过昆仑镜预见未来得知赤贯将要划破九天神州结界决定再也不管隋家天下安危转而全心寻找上古神器只想阻止这场危机担负起挽救神州的重任。",
swd_yuxiaoxue:
"女娲石转世,自幼孤儿,由月河村客栈老板贺老伯抚养,满头白发被当地村人认为是不祥的象征,备受歧视。后来她村子被村人祭祀的河神所摧毁,村人把责任全归咎于她,她因而被永远逐出了自己故乡。",
swd_jiliang:
"故韩王国贵族出身,世代公卿,祖父被封于张邑,因此也以张为氏。喜好思考,心思敏捷聪慧,好奇心非常旺盛。尽管看来手无缚鸡之力,但却能以过人的智慧,凭藉著最少的情报,而去推演出全局;以一人之力,而胜过千军万马。",
swd_shuijing:
"墨家的年轻女弟子,故赵王国人。亲人在秦战火中丧生,被协防赵国的墨家弟子在废墟之中发现,带回交由墨家夫人收容抚养。",
swd_quxian:
"墨家年轻女弟子,故楚王国人。出身贵族,带有独特高贵气质。由于亲眼目睹全家死于秦人机关部队,心中有难以抹灭之阴影。",
swd_xiyan: "来自云中界的灵犀族,被壶中仙选中做为入室弟子,由他负责整合云中界的种族纠纷。",
swd_cheyun:
"令狐国人,祖父是令狐国的大夫。但昔日由于研究“御木为兵”的“木甲术”而被政敌北宫大夫构陷,最后遭到抄家灭族;车芸年幼,因之只被处以刖刑,需以木制义肢来行走。由家臣端木氏抚养,之后她继续秘密研究祖父的木甲术,誓要效忠国家,为祖父及家人平反。",
swd_huanyuanzhi:
"东晋名将桓温的亲属,为了改变淝水之战秦灭晋的结局而来到春秋时代,成为了晋国太辰宫的“九龙子”祭司之一,人称“肆龙子”,代号为 “负屃”。设置五岳阵法把王霸之气汇聚晋国,好让一千年后变成晋灭秦,和四百年以前来自不同时空的土耀使者墨老先生是同一个灵魂。",
swd_murongshi:
"自称昔日夏朝时负责保管「夏后祭器」的涂山氏后人,实际是从经桓远之改动的历史中穿越回来,目的是在太一之轮上刻下秦克晋生克从而改变历史。和车芸、苻殷是不同历史中同一灵魂的人。",
swd_jipeng:
"聒噪自大的鹦鹉国王,鹦鹉王国「多毛国」国王。原是野心家蜀桑子部下,被壶中仙丢入「云中界」后,在那里建立了自己的鹦鹉王国。由于曾偷吃壶中仙的长生丹药,因此老化速度变慢,聒噪威力不减当年。为了保护老主人女儿(墨家夫人),随同水镜返回人间,参与对抗赤松子的战争。",
swd_qi: "上古文明的术者,沉睡千年后醒来,梦想重建古代王朝。古代蜀国的科学家,是一个天才少年。",
swd_luchengxuan:
"从小便拥有着强大的力量,可是不懂得控制,被周遭的人当成怪物般的看待,导致养成阴郁犹疑不轻易吐露心声的性格,后来在探索自己拥有力量与生命意义的旅程中,逐渐历练成熟,进而立志发挥自己的力量协助他人。",
swd_xiarou:
"纯洁无瑕的气质与温柔婉约的外表,让人以为她手无缚鸡之力,但其实体内蕴藏有相当强的灵力,与生俱来个性温柔娴静,聪慧坚强,带领着族人勇敢面对他族的侵略,希望苍生皆能过着和平安稳的生活。",
swd_moye:
"青龙圣者手下,对于青龙圣者有着莫名崇拜,常因沉不住气而搞砸许多事,不过还是很受族人的喜爱,单纯的个性让她丝毫不会烦恼任何事太久。后奉青龙圣者委派携带圣宇盘前往山海界西方寻找继任青龙圣者。",
swd_zhaoyun:
"朝云出生于三国时期普通的民家,荆州襄阳人。父亲皇甫疾,乃昔日刘表麾下的水师参军,荆州投降后,被曹魏所征召,后惨死于赤壁,母亲韩氏,则于关羽北伐时,死于逃难途中。朝云为把剩余不多的干粮留给一起逃难的姊弟,决心自我牺牲,趁夜偷偷离开他们,躲在荒野中,后来在饥寒交迫之中昏死,为路过的名将赵云救起。赵云将他带至一收容战火孤儿的组织,让他有栖身之所。后来,朝云在一次支援粮秣运输工作中,意外以剑气救了误入曹贼陷阱中的赵云及所属部队,此后,赵云便夜夜蒙面,把朝云带至营后的山上,传授枪戟武术。最终朝云在天干十杰选拔中获得首位拿下“焉逢”称号,成为蜀汉精英部队“飞羽”的“羽之部”领导人。",
swd_hengai:
"充满神秘色彩之女子。聪明而慧黠,凡事颇有自己见地。携上古神器「炼妖壶」在身,不时会同情敌人,又不喜杀戮的姑娘。擅法术,一头异于常人之蓝色长发,据说乃昔日为修练高深法术所造成。她对焉逢甚有好感,却又保持距离,态度甚为微妙。",
swd_duanmeng:
"马良之女,本名马蕴。马良死后流落南蛮,后在诸葛亮平定南中时被马良之弟马谡找到并收为义女。马谡因街亭失守被斩,马蕴认为父亲是优秀幕僚而非将帅之才,街亭失守主因在于诸葛亮用人不当。为建立功勋,洗刷父亲的污名,马蕴加入飞羽部队,在「天干十杰」选拔中获得第二名「端蒙」称号,成为飞之部领导人",
swd_jiangwu:
"故巴东郡主簿严函之子,因诸葛亮曾为父亲严函洗脱冤情,故对其为人与公忠体国的精神十分景仰,因此将报效朝廷一事,置于个人一己的功业之上。左手持巨弓,右手配强弩,擅远距离攻击,有百步穿杨能力。他与焉逢乃是战场上一起出生入死之多年至交,二人情深谊厚,因此平日彼此之间从不以代号互称,而皆直称对方本名。以自己能身为「飞羽」一员而深深自豪。",
swd_tuwei:
"容貌清秀,但沉默寡言的青年。平日常闭目若有所思,偶一说话,也仅简单几个字回应而已。与横艾为同门之师姊弟,但飞羽「十杰」排名却意外地在横艾之上。他与横艾一样,坚不透露所属之道术门派,来历神秘。擅长疗愈系之法术",
swd_yeyaxi:
"孙尚香的义女,深色肌肤,大眼睛,天真无邪。是吴帝孙权派人出海寻找传说中之夷洲、亶洲时,所掳回之夷洲当地原住民少女。耶亚希心里偷恋焉逢,于是在孙尚香请托下,随焉逢一行人共同旅行历练。",
swd_muyun:
"皇甫朝云之弟,幼时遭逢变故,流落荒野,幸得魏国前御史中丞徐庶所救,将之收为养子,抚养成人。在洛阳的那段童年时光中,暮云与青梅竹马兰茵、以及魏国名将张郃之孙张诰相交甚笃,一同习剑成长。十年匆匆,暮云如今已是英姿焕发、名满洛阳的少年剑客,但为求精进,暮云始终勤练剑术,希望有朝一日能以一身武艺协助恩师张郃,报效朝廷。",
swd_lanyin:
"魏国名将张郃,府中之女剑僮。性格温婉可人,剑术高超,身手利落,深为张郃所赏识。与暮云为青梅竹马,二人情投意合,经常一起行动。真实身份为应龙之女。",
swd_zhiyin:
"女性法师,自称多年前随师父旅行至洛阳时与兰茵相遇,认作姊妹,实际与兰茵均为应龙之女的分身。个性果决,伶俐慧黠。于并西胡匈之地修习道术、降妖伏魔。",
swd_qiner:
"「铜雀尊者」之副领导人,赤衣尊者,虽年纪轻轻,却有着令人难以置信之惊人实力,能施展许多强大而罕见的术法。随身总是抱着一只琵琶,以音律操纵幻术、幻兽来进行各式各样之攻击。天女青儿赠予巫山女神瑶姬的四样乐器中的磬所化。",
swd_jiuyou:
"本名久须毗呼,来自东方邪马台国之清秀少年。他乃是多年前邪马台国领袖日御子(卑弥呼)私下派遣至辽东接触的使臣之一,由于对中原风土民情、文化制度深为着迷,便决定留下游历。身手非凡能使术法与剑术,持有剑、镜、玉三大法器。",
swd_duopeng:
"来自桃源界之多毛民,自称是多毛国疾鹏大王驾前第一勇士「禽灵天尊铁爪无敌啸风攫魂多毛翔鹏大元帅」。多鹏不小心打碎了留侯夫人夫君(姬良)送给她的最喜爱的琉璃花瓶,担心被留侯夫人(水镜)宰了煮了吃。于是逃离了桃源仙境,来到了轩辕界。遇见了寻找盘古斧的兰茵,带领兰茵到云中界寻找盘古斧。",
swd_fengtianling:
"商朝东方最强大的诸侯国──奄国大夫凤千平之子,外貌不俗,时刻流露出强烈的贵族气质与自信,但他脸上仍保有些许少年之青涩。从小生长在商民大族中的凤天凌,家中有一位哥哥,两人从小跟随住在太山上的师父习剑,剑术天分十分被肯定。",
swd_huyue:
"九尾狐妖,商亡后狐妖一族被商朝太师诛灭,因年幼未被发现而逃过一劫。与幼时的凤天凌因巧合相遇,与其成为好友。",
swd_jialanduo:
"迦兰多来自遥远的身毒国,身为身毒皇室的后裔,他却只身一人千里迢迢来到中原,只为了寻找昔日比他更早之前便独自前来中原、但如今却音信全无的亲姐姐。",
swd_rongshuang:
"蓉霜来自中原西南方的古蜀国,是师承古蜀文明“战甲”一派的谜样少女。由于蓉霜初懂中原语言,因此在战甲师群中战力不算特别强大的她,也一起被派遣前来中原执行任务。",
swd_zhuoshanzhu:
"战甲技能非常优秀的浊山铸,深受黑火门掌门师尊的重视,并有意指定他为自己的继承人。当师尊得知中原曾出现黑火踪迹,便下令浊山铸率领众徒前往中原,务必将黑火带回蜀国。任务途中,浊山铸为了保蓉霜周全,惨遭敌对门派痛下杀手,被埋葬在异国他乡黄土之下。",
swd_jiting:
"周朝王姬,好武且崇尚英雄,擅长于箭术与驭车。其人飒爽英姿、风华绝代,以长弓为贴身武器。逃不开政治婚姻的宿命,因对未来夫君充满好奇并且不愿盲目嫁人,遂毅然离开镐京去寻求真相。",
swd_sikongyu:
"来自有熊村,祖先自夏朝被灭后一直四处迁徙躲避战乱。习练的武功是司空一家代代相传的棍术,但也痴迷于研究陷阱、鸣竹等防御外来者入侵的机关,希望通过自己的本领使族人过上安稳的生活。",
swd_muyue:
"华胥人,千年前,颛顼帝与华胥国主联手施行“绝地天通”之阵关闭天门,以绝世人登天之妄想,平天下之乱。“绝地天通”阵势浩大,需以华胥族人的魂灵为祭,沐月本欲替代被选为做辅祭的姐姐入阵,却在最后时刻因信念不够坚定,错过了施术时间。最终,天门关闭,华胥国被建木托升至天际,沐月独自留守在华胥。千年后,相柳为重开天门,借助青榆和伏羲琴之力试图破坏结界,沐月因此坠入人间。",
swd_ziqiao:
"子国巫人之女,拥有凭神的体质。身材虽然娇小,却拥有常人所没有的力量,能够轻易的挥动巨斧作战。",
swd_fengyu: "商朝王子,化名凤煜四处游历,希望能找到解决商朝内忧外患的局面的方法",
swd_huanglei:
"擅长古传的机关术(鲁班一脉),曾经在任官于唐朝政府少府监,因为被李林甫排挤而对政府怀恨在心。他出任高仙芝的参谋,出了主意灭掉石国,又企图干扰大食(阿拉伯)改朝换代,引起怛罗斯之战。当高仙芝返回长安,听其余的部属劝告,又因怛罗斯之战失利跟黄雷脱不了关系,疏远黄雷。黄雷转而投靠安禄山,想藉安禄山的叛乱取得势力。",
swd_lilian:
"生长在一个贵族家庭,是第三千金,她父亲已经许婚给其他贵族,但她却迷恋上来做客的骑士麦尔斯,之后麦尔斯出任务到威尼斯,莉莲也偷偷的带着她的爱犬波尔去追随他。",
swd_kangnalishi:
"梅罗文加护教骑士的指导教士,直属罗马教皇。在高卢没有一个人喜欢这个神情诡异的人。讲话都会带给人恐惧感。他称麦尔斯是他教出来最完美的骑士。",
swd_huiyan:
"慧彦俗名刘书经,从小被誉为神童,一心想金榜题名,由于过于狂妄自大,在考场取笑主考官而被逐出考场,觉得了无生趣,也不敢回乡面对乡亲父老,游荡到嵩山时,对那些会武术的和尚发生兴趣,于是就在少林寺出家。慧彦天资聪颖,无论在武术、佛学上几乎凌驾师辈后来对少林祖师达摩的事迹产生兴趣。当时唐僧玄奘去天竺取经的事迹为世人尊崇,而从天竺来到达摩所教的(禅宗)却还有些出入,于是想亲身去天竺求证,获得唐玄宗支持,让他持使节信符出关。但唐玄宗额外交代一些军事上的任务,慧彦必须协助探查远至大食附近诸国的军事情势。",
swd_shanxiaoxiao: "独孤宁珂的婢女,是宁珂来到中原之后收伏的千年琵琶精。",
swd_yuchiyanhong: "独孤宁珂的婢女,是宁珂来到中原之后收伏之千年狐狸精。",
swd_hanluo: "寒洛是玄武国世子,因与知盈的婚事遭其父玄武侯反对,而与之私奔。",
swd_fu: "福来自毛民国,因助陆承轩、夏柔搭救被毛民抓来做祭品的莫耶而得罪族人,而后随陆承轩等人离开。",
swd_linyue:
"来自氐人国的老医生,医术高明。醉心于各种医学技术,因此常外出云游,四处学习。随遇而安的个性让他不过于担心身边的人事物。",
swd_zidashu: "周侥国王子,十分仰慕陆承轩等人的高超武艺,故随其一同游历,磨练自己。",
swd_maixing:
"奇肱国老神丁的徒弟。虽然是奇肱族近来难见的天才,但好胜的个性,让他常与旁人发生争执,孤独的他在没有比较之下更以为自己技术高超,另急躁的个性也让他急于试验自己未完成的工艺品,以致于常造成大乌龙。",
swd_fuyan: "俱有满腔的热血与爱国心,外表虽然像其他白虎族人一样勇猛,其实是自幼常生病的药罐子。",
swd_haidapang:
"一目民,能在远处就注意到周遭的状况,一有危险马上逃跑!过于小心翼翼的性格,对于外界既害怕又好奇,总是张着大眼睛四处观望,又像惊弓之鸟似的随时保持警戒,做好逃跑的准备。",
swd_shaowei:
"生在朱雀国,个性高傲、善变,因与主角战斗受伤,因而忘记过去的朱雀族少女。时而天真迷惘、时而冷漠无情、时而阴狠狡诈,不知何者是她的本性。",
swd_youzhao:
"名将赵云之孙,枪法凛冽,胆识过人。一心追求建立不世之功业,期许自己能协助大汉讨灭曹贼,克复中原,以光耀祖先之名声。性格冷傲孤高,对自己在「天干十杰」名次排行战之中,竟输给了籍籍无名之孤儿焉逢,暗自耿耿为怀不已。执行任务时,出手迅疾猛狠,对敌人毫不留情,是极出色之菁英战士。",
swd_shangzhang:
"端蒙之弟,马谡之子。由于姊姊不顾家族劝阻,坚持加入飞羽,他十分担忧她的安危,便努力苦练武艺,历经艰难之后,终于在高手如林的飞羽「天干十杰」争夺战之中,以遍体鳞伤却仍力战不懈之姿,撼动所有战友,最后如愿挤入了十天干最末一个名位。他配属于「飞之部」,在姊姊身边默默守护她。",
swd_situqiang:
"原籍长安,父亲原是魏国医官,后因治疫不力遭罢,举家放逐。父亲死后,司徒蔷便想运用其自幼所习的知识,行走各地教授防疫知识。",
swd_chunyuheng:
"字长生。身拥承袭淳于一脉的绝顶医术,却不轻易替人治病。因淳于一族不长命且无法治好自己的怪病,导致性情古怪孤僻,且言谈之间尽是轻生之词,让人难以亲近。最后知晓原因后,得同伴帮助,消除诅咒。",
swd_hanlong:
"魁梧高大,身手矫健,能单手持巨刃而面不改色,是一本事卓绝之勇士。原为并西之地的胡族,因该地官员贪暴,其父反抗却遭杀害,他为照顾母亲,无奈沦为草莽盗匪,靠打劫路过达官显贵以维生。",
swd_yuli:
"他人以为是鱼妖而自称是鱼仙的混仙。在徐暮云等人追查鱼妖传闻的真相时,与其相遇,却从此成为助她成仙的伙伴。",
swd_zhanggao:
"字柏乔,为大魏名将张郃之孙,同时亦是徐暮云情谊深笃之挚友。暮云视他彷若兄长,十分尊敬。不时与暮云切磋剑术,互相砥砺,同为洛阳著名之少年剑客。",
swd_hupo:
"属于山林鬼神一族,全身雪白,眼睛碧蓝,一对长而尖细的耳朵,长着一簇蓬松的大尾巴。它的同族都是力量强大的山林鬼魅,但一般人并看不到它们,只有拥有特殊能力的人才能看得见。",
swd_jiangziya:
"周军统帅、周朝开国元勋,是一位尤其擅长法术攻击的权谋大家。曾修改了用于记载宇宙间万物生克关系的神器“太一之轮”,并留下了“周克商”的生克,造就牧野之战的胜利。",
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
perfectPair: {
swd_fengtianling: ["swd_huyue", "swd_jiting"],
swd_rongshuang: ["swd_zhuoshanzhu"],
swd_jialanduo: ["swd_zhuoshanzhu"],
swd_sikongyu: ["swd_muyue"],
swd_fengyu: ["swd_ziqiao"],
swd_zhaoyun: ["swd_hengai", "swd_yeyaxi", "zhaoyun"],
swd_hengai: ["zhugeliang", "sp_zhugeliang"],
swd_duanmeng: ["swd_shangzhang"],
swd_shangzhang: ["swd_situqiang"],
swd_tuwei: ["swd_hengai"],
swd_jiangwu: ["swd_zhaoyun"],
swd_muyun: ["swd_lanyin", "swd_zhiyin", "swd_zhanggao", "xushu"],
swd_lanyin: ["swd_zhiyin"],
swd_yuli: ["swd_chunyuheng"],
swd_jiuyou: ["swd_zhiyin"],
swd_qiner: ["swd_hengai"],
swd_huzhongxian: ["swd_jiliang", "swd_jipeng", "swd_xiyan"],
swd_anka: ["swd_kama"],
swd_septem: ["swd_nicole", "swd_kama", "swd_weida", "swd_wangsiyue", "swd_huiyan"],
swd_nicole: ["swd_lilian"],
swd_xuanyuanjianxian: ["swd_xuanyuanjiantong"],
swd_chenjingchou: ["swd_yuxiaoxue", "swd_tuobayuer"],
swd_yuxiaoxue: ["swd_yuwentuo"],
swd_zhanglie: ["swd_tuobayuer"],
swd_duguningke: ["swd_yuwentuo", "swd_shanxiaoxiao", "swd_yuchiyanhong"],
swd_jiliang: ["swd_shuijing", "swd_jipeng"],
swd_jipeng: ["swd_duopeng"],
swd_cheyun: ["swd_huanyuanzhi", "swd_murongshi"],
swd_murongshi: ["swd_huanyuanzhi", "swd_shuijing"],
swd_huanyuanzhi: ["swd_jipeng"],
swd_qi: ["swd_huzhongxian"],
swd_luchengxuan: ["swd_xiarou"],
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
skill: {
cyqiaoxie: {
trigger: { player: "loseEnd" },
frequent: true,
2019-06-07 03:46:13 +00:00
// alter:true,
2024-04-15 18:10:02 +00:00
filter: function (event, player) {
if (event.type == "use") return false;
for (var i = 0; i < event.cards.length; i++) {
if (get.type(event.cards[i]) == "equip") return true;
2018-04-17 07:32:43 +00:00
}
return false;
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
event.num = 0;
for (var i = 0; i < trigger.cards.length; i++) {
if (get.type(trigger.cards[i]) == "equip") {
2019-06-07 03:46:13 +00:00
event.num++;
2018-04-17 07:32:43 +00:00
}
}
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
var list = get.inpile("jiguan", function (name) {
2018-04-17 07:32:43 +00:00
return player.hasUseTarget(name);
});
2024-04-15 18:10:02 +00:00
if (list.length) {
var prompt = get.prompt("cyqiaoxie");
if (event.num > 1) {
prompt = "###" + prompt + "###(剩余" + get.cnNumber(event.num) + "次)";
2019-06-07 03:46:13 +00:00
}
2024-04-15 18:10:02 +00:00
player.chooseVCardButton(list.randomGets(3), prompt);
} else {
2018-04-17 07:32:43 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.chooseUseTarget(true, game.createCard(result.links[0][2]));
2018-04-17 07:32:43 +00:00
}
2019-06-07 03:46:13 +00:00
event.num--;
2024-04-15 18:10:02 +00:00
if (event.num > 0) {
2019-06-07 03:46:13 +00:00
event.goto(1);
}
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
noe: true,
reverseEquip: true,
effect: {
target: function (card, player, target, current) {
if (get.type(card) == "equip") return [1, 3];
},
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
cyxianjiang: {
trigger: { player: "useCardToBegin" },
init: function (player) {
player.storage.cyxianjiang = [];
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filter: function (event, player) {
if (event.target != player && event.targets && event.targets.length == 1) {
if (player.storage.cyxianjiang.includes(event.target)) return false;
return event.target.countCards("e", function (card) {
return !player.countCards("he", card.name);
2018-04-17 07:32:43 +00:00
});
}
return false;
},
2024-04-15 18:10:02 +00:00
direct: true,
content: function () {
"step 0";
player
.choosePlayerCard(trigger.target, "e", get.prompt("cyxianjiang"))
.set("ai", get.buttonValue)
.set("filterButton", function (button) {
return !player.countCards("he", button.link.name);
});
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.logSkill("cyxianjiang");
var card = result.links[0];
player.equip(game.createCard(card), true);
2018-04-17 07:32:43 +00:00
player.storage.cyxianjiang.add(trigger.target);
}
},
2024-04-15 18:10:02 +00:00
group: "cyxianjiang_clear",
subSkill: {
clear: {
trigger: { global: "phaseAfter" },
silent: true,
content: function () {
player.storage.cyxianjiang.length = 0;
},
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
cyzhencha: {
enable: "phaseUse",
usable: 1,
filter: function (event, player) {
if (
!game.hasPlayer(function (current) {
return current != player && current.countCards("h");
})
) {
2018-04-17 07:32:43 +00:00
return false;
}
2024-04-15 18:10:02 +00:00
if (!player.countCards("h", { type: "basic" })) return false;
var es = player.getCards("e");
for (var i = 0; i < es.length; i++) {
if (
!es[i].classList.contains("epic") &&
!es[i].classList.contains("legend") &&
!es[i].classList.contains("gold")
) {
2018-04-17 07:32:43 +00:00
return true;
}
}
return false;
},
2024-04-15 18:10:02 +00:00
filterCard: { type: "basic" },
filterTarget: function (card, player, target) {
return target != player && target.countCards("h");
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
check: function (card) {
return 7 - get.value(card);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
2018-04-17 07:32:43 +00:00
player.viewHandcards(target);
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (target.countCards("h", { color: get.color(cards[0]) })) {
var es = player.getCards("e");
2018-04-17 07:32:43 +00:00
es.randomSort();
2024-04-15 18:10:02 +00:00
for (var i = 0; i < es.length; i++) {
if (
!es[i].classList.contains("epic") &&
!es[i].classList.contains("legend") &&
!es[i].classList.contains("gold")
) {
es[i].classList.add("gold");
es[i].nopower = true;
es[i].storage.cyzhencha = true;
2018-04-17 07:32:43 +00:00
break;
}
}
2024-04-15 18:10:02 +00:00
var num = 0;
for (var i = 0; i < es.length; i++) {
if (es[i].storage.cyzhencha) {
2018-04-17 07:32:43 +00:00
num++;
}
}
2024-04-15 18:10:02 +00:00
var list = ["shuiyun", "liuzi", "yijin", "qingling", "qiandian"];
for (var i = 0; i < list.length; i++) {
if (i < num) {
player.addSkill("cyzhencha_" + list[i]);
2018-04-17 07:32:43 +00:00
}
}
2024-04-15 18:10:02 +00:00
} else {
2018-04-17 07:32:43 +00:00
player.draw();
}
},
2024-04-15 18:10:02 +00:00
ai: {
order: 2,
result: {
player: function (player, target) {
return target.countCards("h");
},
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
cyzhencha_shuiyun: {
trigger: { player: "phaseBegin" },
direct: true,
thundertext: true,
content: function () {
"step 0";
player
.chooseTarget(
[1, 1],
"水云:你可以弃置一名角色的一张牌",
function (card, player, target) {
if (player == target) return false;
return target.countCards("he") > 0;
}
)
.set("autodelay", 0.5).ai = function (target) {
return -get.attitude(player, target);
2018-04-17 07:32:43 +00:00
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.logSkill("cyzhencha_shuiyun", result.targets);
player.discardPlayerCard(result.targets[0], "he", true);
} else {
2018-04-17 07:32:43 +00:00
event.finish();
}
},
2024-04-15 18:10:02 +00:00
onremove: function (player) {
_status.event.insert(lib.skill.cyzhencha_shuiyun.content, { player: player });
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
cyzhencha_liuzi: {
trigger: { player: "phaseDrawBegin" },
frequent: true,
thundertext: true,
content: function () {
2018-04-17 07:32:43 +00:00
trigger.num++;
},
2024-04-15 18:10:02 +00:00
onremove: function (player) {
2018-04-17 07:32:43 +00:00
player.draw();
2024-04-15 18:10:02 +00:00
},
},
cyzhencha_yijin: {
trigger: { player: "phaseBegin" },
direct: true,
thundertext: true,
content: function () {
"step 0";
player
.chooseTarget(
[1, 1],
"水云:你可以弃置一名角色的一张牌",
function (card, player, target) {
if (player == target) return false;
return target.countCards("he") > 0;
}
)
.set("autodelay", 0.5).ai = function (target) {
return -get.attitude(player, target);
2018-04-17 07:32:43 +00:00
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.logSkill("cyzhencha_shuiyun", result.targets);
player.discardPlayerCard(result.targets[0], "he", true);
} else {
2018-04-17 07:32:43 +00:00
event.finish();
}
},
2024-04-15 18:10:02 +00:00
onremove: function (player) {
_status.event.insert(lib.skill.cyzhencha_shuiyun.content, { player: player });
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
cyzhencha_qingling: {
inhert: "cyzhencha_shuiyun",
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
cyzhencha_qiandian: {
inhert: "cyzhencha_shuiyun",
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
cyqiaoxie_old: {
enable: "phaseUse",
filterCard: function (card) {
return get.type(card, "trick") == "trick";
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
usable: 1,
filter: function (event, player) {
var current = [];
var es = player.getCards("e");
for (var i = 0; i < es.length; i++) {
2018-04-17 07:32:43 +00:00
current.add(get.subtype(es[i]));
}
2024-04-15 18:10:02 +00:00
if (current.length == 5) return false;
2018-04-17 07:32:43 +00:00
// if(get.is.altered('xianjiang')&&player.countCards('e')) return false;
2024-04-15 18:10:02 +00:00
if (player.countCards("h", { type: "trick" })) return true;
if (player.countCards("h", { type: "delay" })) return true;
2018-04-17 07:32:43 +00:00
return false;
},
2024-04-15 18:10:02 +00:00
selectCard: 1,
check: function (card) {
return 8 - get.value(card);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
var current = [];
var es = player.getCards("e");
for (var i = 0; i < es.length; i++) {
2018-04-17 07:32:43 +00:00
current.add(get.subtype(es[i]));
}
2024-04-15 18:10:02 +00:00
var list = get.inpile("equip", function (name) {
return !current.includes(lib.card[name].subtype);
2018-04-17 07:32:43 +00:00
});
2024-04-15 18:10:02 +00:00
if (list.length) {
player.equip(game.createCard(list.randomGet()), true);
}
},
ai: {
result: {
player: 1,
},
order: 9,
},
},
gxianyin: {
enable: "phaseUse",
usable: 1,
delay: 0,
filter: function (event, player) {
return player.countCards("h");
},
content: function () {
"step 0";
var max = 0;
var choice = "club";
var map = {
club: 0,
heart: 0,
diamond: 0,
spade: 0,
2018-04-17 07:32:43 +00:00
};
2024-04-15 18:10:02 +00:00
for (var i in map) {
var hs = player.getCards("h", { suit: i });
for (var j = 0; j < hs.length; j++) {
var val = get.value(hs[j], player, "raw");
if (val > 7) {
map[i] = 0;
break;
} else if (val <= 5) {
2018-04-17 07:32:43 +00:00
map[i]++;
2024-04-15 18:10:02 +00:00
if (val <= 4) {
map[i] += 0.5;
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
if (val < 0) {
map[i] += 2;
2018-04-17 07:32:43 +00:00
}
}
}
2024-04-15 18:10:02 +00:00
if (map[i] > max) {
choice = i;
max = map[i];
2018-04-17 07:32:43 +00:00
}
}
2024-04-15 18:10:02 +00:00
var controls = ["heart2", "spade2", "diamond2", "club2"];
for (var i = 0; i < controls.length; i++) {
if (!player.countCards("h", { suit: controls[i].slice(0, controls[i].length - 1) })) {
controls.splice(i--, 1);
2018-04-17 07:32:43 +00:00
}
}
2024-04-15 18:10:02 +00:00
if (!controls.includes(choice)) {
choice = controls.randomGet();
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
player
.chooseControl(controls, function () {
return choice;
})
.set("prompt", "移去一种花色的手牌");
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
var hs = player.getCards("h", {
suit: result.control.slice(0, result.control.length - 1),
});
if (hs.length) {
player.lose(hs, ui.discardPile)._triggered = null;
2018-04-17 07:32:43 +00:00
player.$throw(hs);
2024-04-15 18:10:02 +00:00
game.log(player, "移去了", hs);
} else {
2018-04-17 07:32:43 +00:00
event.finish();
return;
}
2024-04-15 18:10:02 +00:00
var controls = ["heart2", "spade2", "diamond2", "club2"];
2018-04-17 07:32:43 +00:00
controls.remove(result.control);
2024-04-15 18:10:02 +00:00
var rand = Math.random();
var list = controls.slice(0);
if (player.hasShan()) {
list.remove("diamond2");
}
player
.chooseControl(controls, function () {
if (!player.hasShan() && controls.includes("diamond2")) {
return "diamond2";
}
if (rand < 0.5) {
return list[0];
}
if (rand < 0.8) {
return list[1];
}
if (list.length >= 3) {
return controls[2];
} else {
return controls[0];
}
})
.set("prompt", "选择一个花色从牌堆中获得" + hs.length + "张该花色的牌");
event.num = hs.length;
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (result.control) {
var suit = result.control.slice(0, result.control.length - 1);
var cards = [];
for (var i = 0; i < event.num; i++) {
var card = get.cardPile(function (card) {
return get.suit(card) == suit;
2018-04-17 07:32:43 +00:00
});
2024-04-15 18:10:02 +00:00
if (card) {
2018-04-17 07:32:43 +00:00
ui.special.appendChild(card);
cards.push(card);
2024-04-15 18:10:02 +00:00
} else {
2018-04-17 07:32:43 +00:00
break;
}
}
2024-04-15 18:10:02 +00:00
if (cards.length) {
2018-04-17 07:32:43 +00:00
player.directgain(cards);
player.$draw(cards.length);
game.delay();
2024-04-15 18:10:02 +00:00
game.log(
player,
"获得了" + get.cnNumber(cards.length) + "张",
"#y" + get.translation(suit + "2") + "牌"
);
}
}
},
ai: {
order: 7,
result: {
player: function (player) {
var list = ["club", "heart", "diamond", "spade"];
for (var i = 0; i < list.length; i++) {
var hs = player.getCards("h", { suit: list[i] });
var bool = false;
for (var j = 0; j < hs.length; j++) {
var val = get.value(hs[j], player);
if (val > 7) {
bool = false;
break;
} else if (val <= 4) {
bool = true;
2018-04-17 07:32:43 +00:00
}
}
2024-04-15 18:10:02 +00:00
if (bool) {
2018-04-17 07:32:43 +00:00
return 1;
}
}
return 0;
2024-04-15 18:10:02 +00:00
},
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
yeying: {
enable: "phaseUse",
usable: 1,
viewAs: { name: "qiankunbiao" },
viewAsFilter: function (player) {
return player.countCards("he", { color: "black" });
},
filterCard: { color: "black" },
position: "he",
check: function (card) {
return 7 - get.value(card);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 1.5,
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
juxi: {
enable: "phaseUse",
usable: 1,
filter: function (event, player) {
return player.storage.juxi >= game.countPlayer();
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterTarget: true,
init: function (player) {
player.storage.juxi = 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
init2: function (player) {
if (get.mode() == "guozhan") {
player.logSkill("juxi");
2018-04-17 07:32:43 +00:00
}
},
2024-04-15 18:10:02 +00:00
intro: {
content: "mark",
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
player.storage.juxi -= game.countPlayer();
player.syncStorage("juxi");
if (player.storage.juxi <= 0) {
player.unmarkSkill("juxi");
} else {
2018-04-17 07:32:43 +00:00
player.updateMarks();
}
2024-04-15 18:10:02 +00:00
if (target.isDamaged()) {
player
.chooseControl(function () {
if (get.attitude(player, target) > 0) return 1;
return 0;
})
.set("choiceList", [
"对" + get.translation(target) + "造成1点伤害",
"令" + get.translation(target) + "回复1点体力",
]);
} else {
2018-04-17 07:32:43 +00:00
target.damage();
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.control == "选项一") {
2018-04-17 07:32:43 +00:00
target.damage();
2024-04-15 18:10:02 +00:00
} else {
2018-04-17 07:32:43 +00:00
target.recover();
}
},
2024-04-15 18:10:02 +00:00
ai: {
order: 7,
result: {
target: function (player, target) {
if (get.attitude(player, target) > 0) {
if (target.isDamaged()) return get.recoverEffect(target, player, target);
2018-04-17 07:32:43 +00:00
return 0;
2024-04-15 18:10:02 +00:00
} else {
return get.damageEffect(target, player, target);
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
group: "juxi_count",
subSkill: {
count: {
trigger: { global: "discardAfter" },
forced: true,
popup: false,
filter: function (event, player) {
return _status.currentPhase != event.player;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
2018-04-17 07:32:43 +00:00
player.storage.juxi++;
2024-04-15 18:10:02 +00:00
player.syncStorage("juxi");
player.markSkill("juxi");
2018-04-17 07:32:43 +00:00
player.updateMarks();
},
2024-04-15 18:10:02 +00:00
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
jiefen: {
enable: "phaseUse",
usable: 1,
filterTarget: function (card, player, target) {
return target.countCards("h") > player.countCards("h");
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filter: function (event, player) {
2018-04-17 07:32:43 +00:00
return !player.isMaxHandcard();
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
target.chooseCard("h", true, "交给" + get.translation(player) + "一张牌");
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.gain(result.cards, target);
target.$giveAuto(result.cards, player);
} else {
2018-04-17 07:32:43 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
var nh = player.countCards("h");
if (
game.hasPlayer(function (current) {
return current.countCards("h") < nh;
})
) {
2018-04-17 07:32:43 +00:00
player.chooseCardTarget({
2024-04-15 18:10:02 +00:00
forced: true,
filterTarget: function (card, player, target) {
return target.countCards("h") < nh;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterCard: true,
ai1: function (card) {
return 9 - get.value(card);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai2: function (target) {
return get.attitude(player, target) / Math.sqrt(target.countCards("h") + 1);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
prompt: "交给一名手牌数少于你的角色一张牌",
2018-04-17 07:32:43 +00:00
});
2024-04-15 18:10:02 +00:00
} else {
2018-04-17 07:32:43 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 3";
2024-04-15 18:10:02 +00:00
if (result.bool && result.targets && result.targets.length) {
result.targets[0].gain(result.cards, player);
player.$giveAuto(result.cards, result.targets[0]);
player.line(result.targets, "green");
2018-04-17 07:32:43 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
order: 7,
result: {
target: -1,
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
datong: {
trigger: { global: "phaseEnd" },
frequent: true,
filter: function (event, player) {
var max = player.countCards("h");
var min = max;
game.countPlayer(function (current) {
var nh = current.countCards("h");
if (nh > max) {
max = nh;
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
if (nh < min) {
min = nh;
2018-04-17 07:32:43 +00:00
}
});
2024-04-15 18:10:02 +00:00
return max - min <= 1;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
2018-04-17 07:32:43 +00:00
player.draw(2);
2024-04-15 18:10:02 +00:00
},
},
huodan: {
enable: "phaseUse",
usable: 1,
filterCard: { color: "red" },
filter: function (event, player) {
return player.countCards("he", { color: "red" }) > 0;
},
filterTarget: true,
selectTarget: [1, 2],
position: "he",
check: function (card) {
return 7 - get.value(card);
},
contentBefore: function () {
2018-04-17 07:32:43 +00:00
player.loseHp();
},
2019-06-07 03:46:13 +00:00
// alter:true,
2024-04-15 18:10:02 +00:00
content: function () {
if (targets.length == 1) {
target.damage("fire", 2);
if (get.is.altered("huodan")) target.draw();
} else {
target.damage("fire");
}
},
line: "fire",
ai: {
order: 15,
expose: 0.2,
threaten: 1.5,
result: {
target: function (player, target) {
if (player.hp < 2) return 0;
if (get.attitude(player, target) >= 0) return 0;
if (target.hp > player.hp) return 0;
var eff = get.damageEffect(target, player, target, "fire");
if (eff < 0) {
if (
ui.selected.targets.length &&
target.hp > 1 &&
ui.selected.targets[0].hp > 1
) {
2018-04-17 07:32:43 +00:00
return 0;
}
2024-04-15 18:10:02 +00:00
if (target.nodying) return eff / 10;
return eff / Math.sqrt(target.hp);
2018-04-17 07:32:43 +00:00
}
return 0;
2024-04-15 18:10:02 +00:00
},
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
sxianjing: {
enable: "phaseUse",
filter: function (event, player) {
var suits = [];
for (var i = 0; i < player.storage.sxianjing.length; i++) {
2018-04-17 07:32:43 +00:00
suits.add(get.suit(player.storage.sxianjing[i]));
}
2024-04-15 18:10:02 +00:00
return player.hasCard(function (card) {
return !suits.includes(get.suit(card));
2018-04-17 07:32:43 +00:00
});
},
2024-04-15 18:10:02 +00:00
init: function (player) {
player.storage.sxianjing = [];
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterCard: function (card, player) {
var suits = [];
for (var i = 0; i < player.storage.sxianjing.length; i++) {
2018-04-17 07:32:43 +00:00
suits.add(get.suit(player.storage.sxianjing[i]));
}
return !suits.includes(get.suit(card));
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
check: function (card) {
return 7 - get.value(card);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
discard: false,
prepare: function (cards, player) {
player.$give(1, player, false);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
2018-04-17 07:32:43 +00:00
player.storage.sxianjing.add(cards[0]);
2024-04-15 18:10:02 +00:00
player.syncStorage("sxianjing");
player.markSkill("sxianjing");
2018-04-17 07:32:43 +00:00
player.updateMarks();
},
2024-04-15 18:10:02 +00:00
ai: {
order: 1,
result: {
player: 1,
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
threaten: function (player, target) {
if (target.storage.sxianjing && target.storage.sxianjing.length) {
return Math.sqrt(1.6 / (target.storage.sxianjing.length + 1));
} else {
return 1.6;
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
intro: {
mark: function (dialog, content, player) {
if (player.isUnderControl(true)) {
2018-04-17 07:32:43 +00:00
dialog.add(player.storage.sxianjing);
2024-04-15 18:10:02 +00:00
} else {
return "已有" + get.cnNumber(player.storage.sxianjing.length) + "张“陷阱”牌";
2018-04-17 07:32:43 +00:00
}
},
2024-04-15 18:10:02 +00:00
content: function (content, player) {
if (player.isUnderControl(true)) {
2018-04-17 07:32:43 +00:00
return get.translation(player.storage.sxianjing);
}
2024-04-15 18:10:02 +00:00
return "已有" + get.cnNumber(player.storage.sxianjing.length) + "张“陷阱”牌";
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
group: ["sxianjing_gain", "sxianjing_damage"],
subSkill: {
gain: {
trigger: { target: "useCardToBegin" },
forced: true,
filter: function (event, player) {
if (event.player == player || !event.player.countCards("he")) return false;
var suit = get.suit(event.card);
for (var i = 0; i < player.storage.sxianjing.length; i++) {
if (get.suit(player.storage.sxianjing[i]) == suit) {
2018-04-17 07:32:43 +00:00
return true;
}
}
return false;
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
var suit = get.suit(trigger.card);
var card = null;
for (var i = 0; i < player.storage.sxianjing.length; i++) {
if (get.suit(player.storage.sxianjing[i]) == suit) {
card = player.storage.sxianjing[i];
break;
2018-04-17 07:32:43 +00:00
}
}
2024-04-15 18:10:02 +00:00
if (card) {
player.showCards(card, get.translation(player) + "发动了【陷阱】");
2018-04-17 07:32:43 +00:00
player.storage.sxianjing.remove(card);
card.discard();
2024-04-15 18:10:02 +00:00
player.syncStorage("sxianjing");
if (player.storage.sxianjing.length) {
2018-04-17 07:32:43 +00:00
player.updateMarks();
2024-04-15 18:10:02 +00:00
} else {
player.unmarkSkill("sxianjing");
2018-04-17 07:32:43 +00:00
}
}
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
player.randomGain(trigger.player, true);
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
damage: {
trigger: { player: "damageEnd" },
forced: true,
filter: function (event, player) {
return player.storage.sxianjing.length > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
var card = player.storage.sxianjing.randomGet();
2018-04-17 07:32:43 +00:00
player.storage.sxianjing.remove(card);
2024-04-15 18:10:02 +00:00
player.gain(card, "draw");
player.syncStorage("sxianjing");
if (player.storage.sxianjing.length) {
2018-04-17 07:32:43 +00:00
player.updateMarks();
2024-04-15 18:10:02 +00:00
} else {
player.unmarkSkill("sxianjing");
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
},
zhanxing: {
enable: "phaseUse",
usable: 1,
position: "he",
filterCard: true,
selectCard: [1, Infinity],
filter: function (event, player) {
return player.countCards("he") > 0;
},
check: function (card) {
switch (ui.selected.cards.length) {
case 0:
return 8 - get.value(card);
case 1:
return 6 - get.value(card);
case 2:
return 3 - get.value(card);
2018-04-17 07:32:43 +00:00
}
return 0;
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
var list = get.cards(cards.length);
event.list = list;
2018-04-17 07:32:43 +00:00
player.showCards(list);
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
var suits = [];
event.suits = suits;
for (var i = 0; i < event.list.length; i++) {
2018-04-17 07:32:43 +00:00
suits.add(get.suit(event.list[i]));
event.list[i].discard();
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (event.suits.includes("diamond")) {
2018-04-17 07:32:43 +00:00
player.draw(2);
}
2024-04-15 18:31:36 +00:00
"step 3";
2024-04-15 18:10:02 +00:00
if (event.suits.includes("heart")) {
if (player.isDamaged()) {
2018-04-17 07:32:43 +00:00
player.recover();
2024-04-15 18:10:02 +00:00
} else {
2018-04-17 07:32:43 +00:00
player.changeHujia();
}
}
2024-04-15 18:31:36 +00:00
"step 4";
2024-04-15 18:10:02 +00:00
if (event.suits.includes("club")) {
var enemies = player.getEnemies();
for (var i = 0; i < enemies.length; i++) {
2018-04-17 07:32:43 +00:00
enemies[i].randomDiscard();
enemies[i].addExpose(0.1);
2024-04-15 18:10:02 +00:00
player.line(enemies[i], "green");
2018-04-17 07:32:43 +00:00
}
}
2024-04-15 18:31:36 +00:00
"step 5";
2024-04-15 18:10:02 +00:00
if (event.suits.includes("spade")) {
player.chooseTarget("令一名角色受到1点无来源的雷属性伤害").ai = function (target) {
return get.damageEffect(target, target, player, "thunder");
};
} else {
2018-04-17 07:32:43 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 6";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.line(result.targets[0], "thunder");
result.targets[0].damage("thunder", "nosource", "nocard");
2018-04-17 07:32:43 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
order: 5,
result: {
player: 1,
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
threaten: 1.5,
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
kbolan: {
trigger: { player: "drawBegin" },
frequent: true,
priority: 5,
content: function () {
2018-04-17 07:32:43 +00:00
trigger.num++;
2024-04-15 18:10:02 +00:00
trigger.id = trigger.id || get.id();
player.storage.kbolan2 = trigger.id;
player.addTempSkill("kbolan2");
},
},
kbolan2: {
trigger: { player: "drawEnd" },
filter: function (event, player) {
return player.storage.kbolan2 == event.id;
},
silent: true,
onremove: true,
content: function () {
"step 0";
player.removeSkill("kbolan2");
if (player.countCards("h")) {
player.chooseCard("h", true, "将一张手牌置于牌堆顶").ai = function (card) {
2018-04-17 07:32:43 +00:00
return -get.value(card);
};
2024-04-15 18:10:02 +00:00
} else {
2018-04-17 07:32:43 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result && result.cards) {
event.card = result.cards[0];
player.lose(result.cards, ui.special);
var cardx = ui.create.card();
cardx.classList.add("infohidden");
cardx.classList.add("infoflip");
player.$throw(cardx, 1000, "nobroadcast");
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (event.player == game.me) game.delay(0.5);
2024-04-15 18:31:36 +00:00
"step 3";
2024-04-15 18:10:02 +00:00
if (event.card) {
2018-04-17 07:32:43 +00:00
event.card.fix();
2024-04-15 18:10:02 +00:00
ui.cardPile.insertBefore(event.card, ui.cardPile.firstChild);
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
hujing: {
trigger: { player: "phaseBegin" },
forced: true,
filter: function (event, player) {
return get.discardPile("lianyaohu") ? true : false;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
var card = get.discardPile("lianyaohu");
if (card) {
2018-04-17 07:32:43 +00:00
player.equip(card);
player.$gain2(card);
game.delayx();
}
},
2024-04-15 18:10:02 +00:00
mod: {
maxHandcard: function (player, num) {
if (player.getEquip("lianyaohu")) return num + 2;
},
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
gaizao: {
trigger: { player: "useCardToBegin" },
filter: function (event, player) {
if (player != event.target && player.countCards("e") == 5) return false;
return lib.skill.gaizao.filterx(event.card, player) && event.target == player;
},
direct: true,
filterx: function (card, player) {
if (!lib.inpile.includes(card.name)) return false;
var info = get.info(card);
if (info.type != "equip") return false;
if (info.nomod) return false;
if (info.unique) return false;
if (!info.subtype) return false;
if (!player.getEquip(info.subtype)) return false;
2018-04-17 07:32:43 +00:00
return true;
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
var list = ["equip1", "equip2", "equip3", "equip4", "equip5"];
for (var i = 0; i < list.length; i++) {
if (player.getEquip(list[i])) {
list.splice(i--, 1);
2018-04-17 07:32:43 +00:00
}
}
2024-04-15 18:10:02 +00:00
list.push("cancel2");
player.chooseControl(list, function () {
2018-04-17 07:32:43 +00:00
return list.randomGet();
2024-04-15 18:10:02 +00:00
}).prompt = "改造:是否改变" + get.translation(trigger.card.name) + "的装备类型?";
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.control && result.control != "cancel2") {
player.logSkill("gaizao");
var name = trigger.card.name + "_gaizao_" + result.control;
if (!lib.card[name]) {
lib.card[name] = get.copy(get.info(trigger.card));
lib.card[name].subtype = result.control;
lib.card[name].epic = true;
lib.card[name].cardimage = trigger.card.name;
lib.card[name].source = [trigger.card.name];
lib.translate[name] = lib.translate[trigger.card.name];
lib.translate[name + "_info"] = lib.translate[trigger.card.name + "_info"];
}
trigger.card.name = name;
trigger.cards[0].init([
trigger.card.suit,
trigger.card.number,
name,
trigger.card.nature,
]);
}
},
ai: {
effect: {
target: function (card, player, target, current) {
if (
target == player &&
lib.skill.gaizao.filterx(card, target) &&
target.countCards("e") < 5
) {
return [1, 3];
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
},
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
lingshi: {
mod: {
attackFrom: function (from, to, distance) {
return distance - from.countCards("e") * 2;
},
cardUsable: function (card, player, num) {
if (card.name == "sha" && player.getEquip(5)) return num + 1;
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
group: ["lingshi_hit", "lingshi_draw"],
subSkill: {
hit: {
trigger: { player: "shaBegin" },
filter: function (event, player) {
return player.getEquip(1) || player.getEquip(2);
},
forced: true,
content: function () {
trigger.directHit = true;
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
draw: {
trigger: { player: "phaseDrawBegin" },
filter: function (event, player) {
return player.getEquip(3) || player.getEquip(4);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
forced: true,
content: function () {
2018-04-17 07:32:43 +00:00
trigger.num++;
2024-04-15 18:10:02 +00:00
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
},
tiebi: {
trigger: { global: "shaBegin" },
filter: function (event, player) {
return (
player.countCards("h", { color: "black" }) &&
!event.target.hujia &&
get.distance(player, event.target) <= 1
);
},
direct: true,
content: function () {
"step 0";
var next = player.chooseToDiscard(get.prompt("tiebi", trigger.target), {
color: "black",
});
var goon =
get.attitude(player, trigger.target) > 2 &&
get.damageEffect(trigger.target, trigger.player, player) < 0;
next.ai = function (card) {
if (goon) {
if (trigger.target.hp == 1) return 10 - get.value(card);
return 7 - get.value(card);
2018-04-17 07:32:43 +00:00
}
return 0;
};
2024-04-15 18:10:02 +00:00
next.logSkill = ["tiebi", trigger.target];
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
2018-04-17 07:32:43 +00:00
trigger.target.changeHujia();
}
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 1.1,
},
},
shenyan: {
trigger: { source: "damageBegin" },
skillAnimation: true,
animationColor: "fire",
filter: function (event, player) {
return !player.storage.shenyan && event.hasNature("fire");
},
intro: {
content: "limited",
},
mark: true,
logTarget: "player",
init: function (player) {
player.storage.shenyan = false;
},
check: function (event, player) {
if (get.attitude(player, event.player) >= 0) return 0;
if (player.hasUnknown()) return 0;
var num = 0,
players = game.filterPlayer();
for (var i = 0; i < players.length; i++) {
if (
players[i] != player &&
players[i] != event.player &&
get.distance(event.player, players[i]) <= 1
) {
var eff = get.damageEffect(players[i], player, player, "fire");
if (eff > 0) {
2018-04-17 07:32:43 +00:00
num++;
2024-04-15 18:10:02 +00:00
} else if (eff < 0) {
2018-04-17 07:32:43 +00:00
num--;
}
}
}
2024-04-15 18:10:02 +00:00
return num > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
2018-04-17 07:32:43 +00:00
trigger.num++;
2024-04-15 18:10:02 +00:00
player.addSkill("shenyan2");
player.storage.shenyan = true;
player.awakenSkill("shenyan");
player.storage.shenyan2 = [];
var players = game.filterPlayer();
for (var i = 0; i < players.length; i++) {
if (
players[i] != player &&
players[i] != trigger.player &&
get.distance(trigger.player, players[i]) <= 1
) {
2018-04-17 07:32:43 +00:00
player.storage.shenyan2.push(players[i]);
}
}
player.storage.shenyan2.sort(lib.sort.seat);
2024-04-15 18:10:02 +00:00
},
},
shenyan2: {
trigger: { global: "damageAfter" },
forced: true,
popup: false,
content: function () {
"step 0";
if (player.storage.shenyan2 && player.storage.shenyan2.length) {
var target = player.storage.shenyan2.shift();
player.line(target, "fire");
target.damage("fire");
2018-04-17 07:32:43 +00:00
event.redo();
}
2024-04-15 18:31:36 +00:00
"step 1";
2018-04-17 07:32:43 +00:00
delete player.storage.shenyan2;
2024-04-15 18:10:02 +00:00
player.removeSkill("shenyan2");
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
senluo: {
enable: "phaseUse",
usable: 1,
filter: function (event, player) {
2018-04-17 07:32:43 +00:00
return player.isMinHandcard();
},
2024-04-15 18:10:02 +00:00
filterTarget: function (card, player, target) {
return target != player && target.countCards("h") > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
target.chooseToDiscard(2, "h", true).delay = false;
2024-04-15 18:31:36 +00:00
"step 1";
2018-04-17 07:32:43 +00:00
target.draw();
},
2024-04-15 18:10:02 +00:00
selectTarget: -1,
ai: {
order: 9,
result: {
target: -1,
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
xuanying: {
subSkill: {
sha: {
enable: "chooseToUse",
viewAs: { name: "sha" },
viewAsFilter: function (player) {
if (player.isLinked()) return false;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
precontent: function () {
2018-04-17 07:32:43 +00:00
player.link();
// player.getStat().card.sha--;
},
2024-04-15 18:10:02 +00:00
filterCard: function () {
return false;
},
selectCard: -1,
prompt: "横置武将牌,视为使用一张无视距离的杀",
ai: {
order: function () {
2018-04-17 07:32:43 +00:00
// if(_status.event.player.countCards('h',{type:'equip'})) return 9;
return 3.15;
},
2024-04-15 18:10:02 +00:00
skillTagFilter: function (player, tag, arg) {
if (arg != "use") return false;
if (player.isLinked()) return false;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
respondSha: true,
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
mod: {
targetInRange: function (card) {
if (_status.event.skill == "xuanying_sha") return true;
},
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
shan: {
trigger: { player: ["chooseToRespondBegin", "chooseToUseBegin"] },
filter: function (event, player) {
if (!player.isLinked()) return false;
if (event.responded) return false;
if (!event.filterCard({ name: "shan" }, player, event)) return false;
2018-04-17 07:32:43 +00:00
return true;
},
2024-04-15 18:10:02 +00:00
check: function (event, player) {
if (get.damageEffect(player, event.player, player) >= 0) return false;
2018-04-17 07:32:43 +00:00
return true;
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
2018-04-17 07:32:43 +00:00
player.link();
2024-04-15 18:31:36 +00:00
"step 1";
2018-04-17 07:32:43 +00:00
trigger.untrigger();
2024-04-15 18:10:02 +00:00
trigger.responded = true;
trigger.result = { bool: true, card: { name: "shan" } };
},
ai: {
respondShan: true,
target: function (card, player, target, current) {
if (!player.isLinked() && current < 0) return 1.5;
if (!target.hasFriend()) return;
if (
get.tag(card, "loseCard") &&
_status.currentPhase != target &&
target.countCards("he")
) {
return [0.5, Math.max(2, target.countCards("h"))];
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
if (get.tag(card, "respondSha") || get.tag(card, "respondShan")) {
if (get.attitude(player, target) > 0 && card.name == "juedou") return;
return [
0.5,
target.countCards("h", "sha") + target.countCards("h", "shan"),
];
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
damage: {
trigger: { player: "damageEnd" },
filter: function (event, player) {
return (
event.source &&
event.source.isAlive() &&
player.isLinked() &&
lib.filter.targetEnabled({ name: "sha" }, player, event.source)
);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
check: function (event, player) {
return get.effect(event.source, { name: "sha" }, player, player) > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
logTarget: "source",
content: function () {
"step 0";
2018-04-17 07:32:43 +00:00
player.link();
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
player.useCard({ name: "sha" }, trigger.source);
},
},
use: {
trigger: { player: "loseEnd" },
direct: true,
filter: function (event, player) {
return (
_status.currentPhase != player &&
player.isLinked() &&
event.cards &&
event.cards.length
);
},
content: function () {
"step 0";
player
.chooseTarget(get.prompt("xuanying"), function (card, player, target) {
return lib.filter.targetEnabled({ name: "sha" }, player, target);
})
.set("ai", function (target) {
return get.effect(target, { name: "sha" }, _status.event.player);
})
.set("autodelay", 0.5);
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.logSkill("xuanying");
2018-04-17 07:32:43 +00:00
player.link();
2024-04-15 18:10:02 +00:00
player.useCard({ name: "sha" }, result.targets, false);
2018-04-17 07:32:43 +00:00
}
},
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
group: ["xuanying_sha", "xuanying_use"],
ai: {
threaten: function (player, target) {
if (target.isLinked()) return 0.7;
2018-04-17 07:32:43 +00:00
return 1.4;
2024-04-15 18:10:02 +00:00
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
hwendao: {
trigger: { player: ["useCardAfter", "respondAfter"] },
check: function (event, player) {
return get.attitude(player, _status.currentPhase) <= 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
logTarget: function () {
2018-04-17 07:32:43 +00:00
return _status.currentPhase;
},
2024-04-15 18:10:02 +00:00
filter: function (event, player) {
if (player == _status.currentPhase) return false;
if (!_status.currentPhase.countCards("he")) return false;
return event.cards && event.cards.length == 1;
},
content: function () {
"step 0";
var suit = get.suit(trigger.cards[0]);
var goon = get.attitude(_status.currentPhase, player) <= 0;
_status.currentPhase.chooseToDiscard(
"弃置一张" +
get.translation(suit + "2") +
"牌,或令" +
get.translation(player) +
"获得你的一张牌",
{ suit: suit }
).ai = function (card) {
if (goon) return 8 - get.value(card);
2018-04-17 07:32:43 +00:00
return 0;
2024-04-15 18:10:02 +00:00
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (!result.bool) {
player.gainPlayerCard(_status.currentPhase, "he", true);
}
},
ai: {
threaten: 0.7,
},
},
lingfeng: {
trigger: { player: "phaseEnd" },
frequent: true,
filter: function (event, player) {
return player.countUsed() >= Math.min(3, player.hp);
},
content: function () {
"step 0";
player
.chooseTarget("凌锋", function (card, player, target) {
return player != target && get.distance(player, target, "attack") <= 1;
})
.set("prompt2", "造成1点伤害或取消并获得1点护甲").ai = function (target) {
if (player.hp == 1) return 0;
if (player.hp == 2 && target.hp >= 3) return 0;
return get.damageEffect(target, player, player);
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
2018-04-17 07:32:43 +00:00
player.line(result.targets[0]);
result.targets[0].damage();
2024-04-15 18:10:02 +00:00
} else {
2018-04-17 07:32:43 +00:00
player.changeHujia();
}
},
2024-04-15 18:10:02 +00:00
ai: {
order: -10,
result: {
target: 2,
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
threaten: 1.5,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
hxunzhi: {
unique: true,
enable: "phaseUse",
derivation: ["wusheng", "paoxiao"],
filter: function (event, player) {
2018-04-17 07:32:43 +00:00
return !player.storage.hxunzhi;
},
2019-06-07 03:46:13 +00:00
// alter:true,
2024-04-15 18:10:02 +00:00
init: function (player) {
player.storage.hxunzhi = false;
},
mark: true,
intro: {
content: "limited",
},
skillAnimation: true,
animationColor: "fire",
content: function () {
"step 0";
player.awakenSkill("hxunzhi");
player.storage.hxunzhi = true;
if (!get.is.altered("hxunzhi")) {
var targets = game.filterPlayer(function (current) {
return player.canUse("wanjian", current);
2018-04-17 07:32:43 +00:00
});
targets.sort(lib.sort.seat);
2024-04-15 18:10:02 +00:00
player.useCard({ name: "wanjian" }, targets);
}
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
player.addSkill("wusheng");
player.addSkill("paoxiao");
player.addSkill("hxunzhi2");
},
ai: {
order: 2,
result: {
player: function (player) {
if (get.mode() == "identity") {
if (player.identity == "zhu") return 0;
if (player.identity == "nei") return 0;
} else if (get.mode() == "guozhan") {
if (player.identity == "ye") return 0;
if (player.isUnseen()) return 0;
}
if (player.hp == 1) return 1;
if (player.hasUnknown()) return 0;
if (!player.hasFriend()) return 0;
var enemies = player.getEnemies();
if (enemies.length + 1 == game.players.length) return 0;
var num = player.hasCard(function (card) {
return card.name == "sha" || get.color(card) == "red";
2018-04-17 07:32:43 +00:00
});
2024-04-15 18:10:02 +00:00
if (num < 2) return 0;
for (var i = 0; i < enemies.length; i++) {
if (
player.canUse("sha", enemies[i]) &&
get.effect(enemies[i], { name: "sha" }, player, player) > 0 &&
!enemies[i].getEquip(2) &&
num > enemies[i].hp &&
enemies[i].hp <= 2
) {
2018-04-17 07:32:43 +00:00
return 1;
}
}
return 0;
2024-04-15 18:10:02 +00:00
},
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
hxunzhi2: {
trigger: { player: "phaseUseEnd" },
forced: true,
popup: false,
content: function () {
player.removeSkill("xunzhi2");
2018-04-17 07:32:43 +00:00
player.die();
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
hjifeng: {
enable: "phaseUse",
filter: function (event, player) {
if (!player.countCards("h")) return false;
if (player.countCards("h", { type: "jiqi" })) return false;
2018-04-17 07:32:43 +00:00
return true;
},
2024-04-15 18:10:02 +00:00
discard: false,
prepare: "throw2",
usable: 1,
check: function (card) {
return 6 - get.value(card);
},
filterCard: true,
content: function () {
var name = get.suit(cards[0]);
ui.cardPile.insertBefore(cards[0], ui.cardPile.firstChild);
switch (name) {
case "spade":
name = "qinglongzhigui";
break;
case "club":
name = "baishouzhihu";
break;
case "diamond":
name = "zhuquezhizhang";
break;
case "heart":
name = "xuanwuzhihuang";
break;
}
player.gain(get.cardPile(name) || game.createCard(name), "draw");
},
ai: {
order: 4,
result: {
player: 1,
},
},
},
hjifeng_old: {
trigger: { player: "phaseEnd" },
filter: function (event, player) {
if (!player.countCards("he", { type: "equip" })) return false;
if (player.countCards("h", { type: "jiqi" })) return false;
if (
get.cardPile(function (card) {
return get.type(card) == "jiqi";
})
)
return true;
2018-04-17 07:32:43 +00:00
return false;
},
2024-04-15 18:10:02 +00:00
direct: true,
content: function () {
"step 0";
player
.chooseToDiscard("he", "祭风:是否弃置一张装备牌并获得一张祭器牌?", {
type: "equip",
})
.set("ai", function (card) {
return 6 - get.value(card);
}).logSkill = "hjifeng";
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
var card =
get.cardPile(function (card) {
return get.type(card) == "jiqi" && card.name.indexOf("yuchan") != 0;
}) ||
get.cardPile(function (card) {
return get.type(card) == "jiqi";
});
if (card) {
player.gain(card, "draw");
}
}
},
},
lmazui: {
audio: "mazui",
enable: "phaseUse",
usable: 1,
filterCard: { color: "black" },
filterTarget: function (card, player, target) {
return !target.hasSkill("lmazui2");
},
check: function (card) {
return 6 - get.value(card);
},
discard: false,
prepare: "give",
content: function () {
target.storage.lmazui2 = cards[0];
target.addSkill("lmazui2");
game.addVideo("storage", target, [
"lmazui2",
get.cardInfo(target.storage.lmazui2),
"card",
]);
},
ai: {
expose: 0.2,
result: {
target: function (player, target) {
2018-04-17 07:32:43 +00:00
return -target.hp;
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
order: 4,
threaten: 1.2,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
lmazui2: {
trigger: { source: "damageBegin" },
forced: true,
mark: "card",
filter: function (event) {
return event.num > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
2018-04-17 07:32:43 +00:00
trigger.num--;
2024-04-15 18:10:02 +00:00
player.addSkill("lmazui3");
player.removeSkill("lmazui2");
},
intro: {
content: "card",
},
},
lmazui3: {
trigger: { source: ["damageEnd", "damageZero"] },
forced: true,
popup: false,
content: function () {
player.gain(player.storage.lmazui2, "gain2", "log");
player.removeSkill("lmazui3");
2018-04-17 07:32:43 +00:00
delete player.storage.lmazui2;
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
hyunshen: {
trigger: { player: ["respond", "useCard"] },
filter: function (event, player) {
return event.card.name == "shan";
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
frequent: true,
init: function (player) {
player.storage.hyunshen = 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
2018-04-17 07:32:43 +00:00
player.storage.hyunshen++;
2024-04-15 18:10:02 +00:00
player.markSkill("hyunshen");
},
ai: {
effect: {
target: function (card, player, target) {
if (get.tag(card, "respondShan")) {
var shans = target.countCards("h", "shan");
var hs = target.countCards("h");
if (shans > 1) return [1, 1];
if (shans && hs > 2) return [1, 1];
if (shans) return [1, 0.5];
if (hs > 2) return [1, 0.3];
if (hs > 1) return [1, 0.2];
return [1.2, 0];
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
threaten: 0.8,
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
intro: {
content: "mark",
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
group: "hyunshen2",
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
hyunshen2: {
trigger: { player: "phaseBegin" },
forced: true,
filter: function (event, player) {
return player.storage.hyunshen > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
2018-04-17 07:32:43 +00:00
player.draw(player.storage.hyunshen);
2024-04-15 18:10:02 +00:00
player.storage.hyunshen = 0;
player.unmarkSkill("hyunshen");
},
mod: {
globalTo: function (from, to, distance) {
if (typeof to.storage.hyunshen == "number") return distance + to.storage.hyunshen;
},
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
hlingbo: {
audio: ["lingbo", 2],
trigger: { player: ["respond", "useCard"] },
filter: function (event, player) {
return event.card.name == "shan";
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
frequent: true,
content: function () {
2018-04-17 07:32:43 +00:00
player.draw(2);
},
2024-04-15 18:10:02 +00:00
ai: {
mingzhi: false,
useShan: true,
effect: {
target: function (card, player, target) {
if (get.tag(card, "respondShan")) {
var shans = target.countCards("h", "shan");
var hs = target.countCards("h");
if (shans > 1) return [0, 1];
if (shans && hs > 2) return [0, 1];
if (shans) return [0, 0];
if (hs > 2) return [0, 0];
if (hs > 1) return [1, 0.5];
return [1.5, 0];
}
},
},
threaten: 0.8,
},
},
gtiandao: {
audio: true,
trigger: { global: "judge" },
direct: true,
filter: function (event, player) {
return player.countCards("he") > 0;
},
content: function () {
"step 0";
player.chooseCard(
get.translation(trigger.player) +
"的" +
(trigger.judgestr || "") +
"判定为" +
get.translation(trigger.player.judging[0]) +
"" +
get.prompt("gtiandao"),
"he"
).ai = function (card) {
var trigger = _status.event.parent._trigger;
var player = _status.event.player;
var result = trigger.judge(card) - trigger.judge(trigger.player.judging[0]);
var attitude = get.attitude(player, trigger.player);
if (attitude == 0 || result == 0) return 0;
if (attitude > 0) {
2018-04-17 07:32:43 +00:00
return result;
2024-04-15 18:10:02 +00:00
} else {
2018-04-17 07:32:43 +00:00
return -result;
}
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.respond(result.cards, "highlight");
} else {
2018-04-17 07:32:43 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.logSkill("gtiandao");
2018-04-17 07:32:43 +00:00
player.$gain2(trigger.player.judging[0]);
player.gain(trigger.player.judging[0]);
2024-04-15 18:10:02 +00:00
trigger.player.judging[0] = result.cards[0];
2018-04-17 07:32:43 +00:00
trigger.position.appendChild(result.cards[0]);
2024-04-15 18:10:02 +00:00
game.log(trigger.player, "的判定牌改为", result.cards[0]);
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:31:36 +00:00
"step 3";
2018-04-17 07:32:43 +00:00
game.delay(2);
},
2024-04-15 18:10:02 +00:00
ai: {
tag: {
rejudge: 1,
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
threaten: 1.5,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
jinlin: {
enable: "phaseUse",
unique: true,
mark: true,
skillAnimation: true,
animationColor: "metal",
init: function (player) {
player.storage.jinlin = false;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filter: function (event, player) {
if (player.storage.jinlin) return false;
2018-04-17 07:32:43 +00:00
return true;
},
2024-04-15 18:10:02 +00:00
filterTarget: true,
selectTarget: [1, Infinity],
contentBefore: function () {
player.awakenSkill("jinlin");
player.storage.jinlin = true;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
2018-04-17 07:32:43 +00:00
target.changeHujia(3);
2024-04-15 18:10:02 +00:00
target.addSkill("jinlin2");
target.storage.jinlin2 = 3;
},
ai: {
order: 1,
result: {
target: function (player, target) {
if (player.hp == 1) return 1;
var num = 0;
var players = game.filterPlayer();
for (var i = 0; i < players.length; i++) {
if (get.attitude(player, players[i]) > 2) {
if (players[i].hp == 1) return 1;
if (players[i].hp == 2) {
if (players[i].countCards("h") == 0) return 1;
2019-06-07 03:46:13 +00:00
num++;
}
2018-04-17 07:32:43 +00:00
}
}
2024-04-15 18:10:02 +00:00
if (player.hasUnknown()) return 0;
if (num > 1) return 1;
2018-04-17 07:32:43 +00:00
return 0;
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
intro: {
content: "limited",
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
jinlin2: {
trigger: { player: "phaseBegin" },
silent: true,
content: function () {
if (player.hujia > 0) {
2018-04-17 07:32:43 +00:00
player.changeHujia(-1);
}
player.storage.jinlin2--;
2024-04-15 18:10:02 +00:00
if (player.hujia == 0 || player.storage.jinlin2 == 0) {
player.removeSkill("jinlin2");
2018-04-17 07:32:43 +00:00
delete player.storage.jinlin2;
}
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 0.8,
},
},
lingyue: {
trigger: { player: "shaBegin" },
check: function (event, player) {
return get.attitude(player, event.target) < 0;
},
logTarget: "target",
filter: function (event, player) {
return event.target.countCards("he") > 0;
},
content: function () {
trigger.target.chooseToDiscard("he", true);
},
},
fengze: {
enable: "phaseUse",
filterCard: { color: "black" },
selectCard: 1,
position: "he",
usable: 1,
viewAs: { name: "taoyuan" },
filter: function (event, player) {
return player.countCards("he", { color: "black" }) > 0;
},
audio: true,
prompt: "将一张黑色牌当作桃园结义使用",
check: function (card) {
return 7 - get.useful(card);
},
ai: {
threaten: 1.5,
},
},
zaowu: {
enable: "phaseUse",
usable: 1,
filter: function (event, player) {
return player.countCards("h", { suit: ["spade", "heart"] }) > 0;
},
filterCard: { suit: ["spade", "heart"] },
viewAs: { name: "fengyinzhidan" },
check: function (card) {
return 7 - get.value(card);
},
ai: {
order: 8.5,
},
},
huanxia: {
enable: "chooseToUse",
filterCard: function (card) {
return get.color(card) == "red";
},
position: "he",
viewAs: { name: "sha" },
viewAsFilter: function (player) {
if (!player.countCards("he", { color: "red" })) return false;
},
prompt: "将一张红色牌当杀使用",
check: function (card) {
return 5 - get.value(card);
},
ai: {
order: function () {
return get.order({ name: "sha" }) + 0.1;
},
respondSha: true,
skillTagFilter: function (player, tag, arg) {
if (arg != "use") return false;
if (!player.countCards("he", { color: "red" })) return false;
},
},
group: ["huanxia_expire", "huanxia_draw", "huanxia_gain"],
subSkill: {
expire: {
trigger: { source: "damageAfter" },
forced: true,
popup: false,
filter: function (event) {
return event.parent.skill == "huanxia";
},
content: function () {
player.storage.huanxia = true;
},
},
draw: {
trigger: { player: "shaAfter" },
forced: true,
popup: false,
content: function () {
if (trigger.parent.skill == "huanxia") {
var card = trigger.cards[0];
if (
get.itemtype(card) == "card" &&
get.position(card) == "d" &&
!player.storage.huanxia
) {
2018-04-17 07:32:43 +00:00
ui.special.appendChild(card);
2024-04-15 18:10:02 +00:00
if (!player.storage.huanxia_draw) {
player.storage.huanxia_draw = [];
2018-04-17 07:32:43 +00:00
}
player.storage.huanxia_draw.push(card);
}
}
delete player.storage.huanxia;
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
gain: {
trigger: { player: "phaseEnd" },
forced: true,
filter: function (event, player) {
2018-04-17 07:32:43 +00:00
return player.storage.huanxia_draw;
},
2024-04-15 18:10:02 +00:00
content: function () {
player.gain(player.storage.huanxia_draw, "gain2");
2018-04-17 07:32:43 +00:00
delete player.storage.huanxia_draw;
2024-04-15 18:10:02 +00:00
},
},
},
},
kongmo: {
trigger: { player: "useCardAfter" },
forced: true,
filter: function (event, player) {
if (event.parent.name == "kongmo") return false;
if (!event.targets || !event.card) return false;
var type = get.type(event.card);
if (type != "basic" && type != "trick") return false;
var card = game.createCard(event.card.name, event.card.suit, event.card.number);
for (var i = 0; i < event.targets.length; i++) {
if (!event.targets[i].isAlive()) return false;
if (!player.canUse({ name: event.card.name }, event.targets[i], false, false)) {
2018-04-17 07:32:43 +00:00
return false;
}
}
return true;
},
2024-04-15 18:10:02 +00:00
content: function () {
var card = game.createCard(trigger.card.name, trigger.card.suit, trigger.card.number);
player.useCard(card, trigger.targets);
},
ai: {
threaten: 2,
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
huajing: {
trigger: { source: "damageEnd" },
filter: function (event, player) {
return event.card && get.type(event.card, "trick") == "trick";
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
frequent: true,
content: function () {
2018-04-17 07:32:43 +00:00
player.recover();
player.draw();
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
pingxu: {
mod: {
globalFrom: function (from, to, current) {
if (!from.getEquip(1)) return current - 1;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
globalTo: function (from, to, current) {
if (!to.getEquip(2)) return current + 1;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
jufu: {
trigger: { source: "damageBegin" },
filter: function (event, player) {
if (event.card && event.card.name == "sha" && player.getEquip(1)) return true;
2018-04-17 07:32:43 +00:00
return false;
},
2024-04-15 18:10:02 +00:00
forced: true,
content: function () {
2018-04-17 07:32:43 +00:00
trigger.num++;
2024-04-15 18:10:02 +00:00
},
},
bingfeng: {
skillAnimation: "epic",
animationColor: "water",
unique: true,
enable: "phaseUse",
filter: function (event, player) {
2018-04-17 07:32:43 +00:00
return !player.storage.bingfeng;
},
2024-04-15 18:10:02 +00:00
init: function (player) {
player.storage.bingfeng = false;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterTarget: function (card, player, target) {
return player != target && !target.isTurnedOver();
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
mark: true,
multitarget: true,
multiline: true,
selectTarget: [1, 3],
content: function () {
"step 0";
player.awakenSkill("bingfeng");
player.removeSkill("xuanzhou");
2018-04-17 07:32:43 +00:00
player.loseMaxHp();
2024-04-15 18:10:02 +00:00
player.storage.bingfeng = true;
event.num = 0;
2018-04-17 07:32:43 +00:00
player.turnOver();
2024-04-15 18:10:02 +00:00
player.addSkill("bingfeng2");
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (num < targets.length) {
var target = targets[num];
if (!target.isTurnedOver()) {
2018-04-17 07:32:43 +00:00
target.turnOver();
}
2024-04-15 18:10:02 +00:00
target.addSkill("bingfeng2");
2018-04-17 07:32:43 +00:00
event.num++;
event.redo();
}
},
2024-04-15 18:10:02 +00:00
intro: {
content: "limited",
},
ai: {
order: 1,
result: {
target: function (player, target) {
if (target.hasSkillTag("noturn")) return 0;
if (game.phaseNumber < game.players.length) return 0;
if (game.phaseNumber < game.players.length * 2 && player.hp == player.maxHp)
return 0;
if (player.hasUnknown()) return 0;
switch (lib.config.mode) {
case "identity": {
switch (player.identity) {
case "zhu": {
if (get.situation() >= 0) return 0;
if (get.population("fan") < 3) return 0;
2018-04-17 07:32:43 +00:00
return -1;
}
2024-04-15 18:10:02 +00:00
case "zhong": {
if (get.population("fan") < 3) return 0;
2018-04-17 07:32:43 +00:00
return -1;
}
2024-04-15 18:10:02 +00:00
case "nei":
return 0;
case "fan": {
if (get.population("fan") == 0) return 0;
if (get.population("zhong") < 2) return 0;
2018-04-17 07:32:43 +00:00
return -1;
}
}
break;
}
2024-04-15 18:10:02 +00:00
case "guozhan": {
if (player.identity == "unknown") return 0;
return get.population(player.identity) >= 3 ? -1 : 0;
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
default: {
2018-04-17 07:32:43 +00:00
return -1;
}
}
},
2024-04-15 18:10:02 +00:00
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
bingfeng2: {
mod: {
cardEnabled: function () {
2018-04-17 07:32:43 +00:00
return false;
},
2024-04-15 18:10:02 +00:00
cardUsable: function () {
2018-04-17 07:32:43 +00:00
return false;
},
2024-04-15 18:10:02 +00:00
cardRespondable: function () {
2018-04-17 07:32:43 +00:00
return false;
},
2024-04-15 18:10:02 +00:00
cardSavable: function () {
2018-04-17 07:32:43 +00:00
return false;
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
trigger: { player: "turnOverAfter" },
forced: true,
filter: function (event, player) {
2018-04-17 07:32:43 +00:00
return !player.isTurnedOver();
},
2024-04-15 18:10:02 +00:00
content: function () {
player.removeSkill("bingfeng2");
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
yudun: {
mod: {
cardEnabled: function (card, player) {
if (get.type(card, "trick") == "trick") return false;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
cardRespondable: function (card, player) {
if (get.type(card, "trick") == "trick") return false;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
cardSavable: function (card, player) {
if (get.type(card, "trick") == "trick") return false;
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
enable: "chooseToUse",
filterCard: function (card) {
return get.type(card, "trick") == "trick";
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
selectCard: 2,
viewAs: { name: "sha" },
viewAsFilter: function (player) {
if (player.countCards("h", { type: ["trick", "delay"] }) < 2) return false;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
check: function () {
return 1;
},
ai: {
skillTagFilter: function (player, tag, arg) {
if (arg != "use") return false;
if (player.countCards("h", { type: ["trick", "delay"] }) < 2) return false;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
respondSha: true,
order: function () {
return get.order({ name: "sha" }) + 0.1;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
useful: -1,
value: -1,
},
group: "yudun_count",
subSkill: {
count: {
trigger: { player: "useCard" },
forced: true,
popup: false,
filter: function (event, player) {
return event.skill == "yudun" && _status.currentPhase == player;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
2018-04-17 07:32:43 +00:00
player.getStat().card.sha--;
2024-04-15 18:10:02 +00:00
},
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
guozao: {
trigger: { global: "damageEnd" },
forced: true,
logv: false,
2019-06-07 03:46:13 +00:00
// alter:true,
2024-04-15 18:10:02 +00:00
check: function (event, player) {
return game.hasPlayer(function (current) {
return get.attitude(player, current) > 2 && current.countCards("h") == 1;
2018-04-17 07:32:43 +00:00
});
},
2024-04-15 18:10:02 +00:00
filter: function (event, player) {
if (event.source == player) return false;
if (get.distance(player, event.player) > 1) return false;
return game.hasPlayer(function (current) {
return current.countCards("h");
2018-04-17 07:32:43 +00:00
});
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
var cards = [];
if (ui.cardPile.childNodes.length < 3) {
var discardcards = get.cards(3);
for (var i = 0; i < discardcards.length; i++) {
2018-04-17 07:32:43 +00:00
discardcards[i].discard();
}
}
2024-04-15 18:10:02 +00:00
for (var i = 0; i < 3; i++) {
2018-04-17 07:32:43 +00:00
cards.push(ui.cardPile.childNodes[i]);
}
2024-04-15 18:10:02 +00:00
event.cards = cards;
var dialog = ui.create.dialog("聒噪:选择一个目标将手牌替换", cards, "hidden");
dialog.classList.add("noselect");
var dist = 2;
if (get.is.altered("guozao")) {
dist = 1;
}
var next = (player.chooseTarget(true, dialog, function (card, player, target) {
return target.countCards("h") > 0 && get.distance(player, target) <= dist;
}).ai = function (target) {
var att = get.attitude(player, target);
var hs = target.getCards("h");
var num = hs.length;
if (num <= 1) return att * 2;
if (num == 2) {
for (var i = 0; i < cards.length; i++) {
if (get.value(cards[i], target, "raw") > 6) return att;
}
if (target == player) {
for (var i = 0; i < 2; i++) {
if (get.value(cards[i], target, "raw") > 6) return -1;
2018-04-17 07:32:43 +00:00
}
}
2024-04-15 18:10:02 +00:00
return att / 2;
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
if (num == 3) {
if (target == player) {
var num2 = 0;
for (var i = 0; i < 3; i++) {
num2 += get.value(cards[i], player, "raw");
num2 -= get.value(hs[i], player, "raw");
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
if (num2 > 0) return 0.5;
if (num2 < 0) return -0.5;
2018-04-17 07:32:43 +00:00
}
return 0;
}
2024-04-15 18:10:02 +00:00
return -att / 2;
});
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool && result.targets[0]) {
var target = result.targets[0];
player.line(target, "green");
2018-04-17 07:32:43 +00:00
// player.logSkill('guozao',target,'green',true);
2024-04-15 18:10:02 +00:00
var cards = target.getCards("h");
target.lose(cards)._triggered = null;
game.log(target, "弃置了", cards, ",并获得三张牌");
2018-04-17 07:32:43 +00:00
// target.$draw(3);
target.$throw(cards);
2024-04-15 18:10:02 +00:00
target.gain(event.cards, "draw")._triggered = null;
} else {
2018-04-17 07:32:43 +00:00
event.finish();
}
},
2024-04-15 18:10:02 +00:00
ai: {
expose: 0.1,
},
},
heihuo: {
enable: "phaseUse",
filter: function (event, player) {
return (
player.countCards("h") > 0 &&
player.countCards("he", { type: "equip" }) > 0 &&
!player.hasSkill("heihuo2")
);
},
filterCard: function (card) {
return get.type(card) == "equip";
},
position: "he",
check: function (card) {
var player = _status.currentPhase;
var nh = player.countCards("h");
var pos = get.position(card);
if (nh < 2) return 0;
if (nh > 4) return 0;
if (nh == 4 && pos == "e") return 0;
if (player.countCards("he", { subtype: get.subtype(card) }) > 1) {
return 11 - get.equipValue(card) + (pos == "e" ? 0.4 : 0);
}
return 5.5 - get.value(card) + (pos == "e" ? 0.4 : 0);
},
content: function () {
"step 0";
player.draw(player.countCards("h"));
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (player.countCards("h") >= 8) {
player.damage(3, "fire");
player.addTempSkill("heihuo2");
}
},
ai: {
order: 10,
threaten: 1.4,
result: {
player: 1,
},
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
heihuo2: {},
yaotong: {
2019-06-07 03:46:13 +00:00
// alter:true,
2024-04-15 18:10:02 +00:00
group: ["yaotong1", "yaotong2", "yaotong3"],
ai: {
respondSha: true,
respondShan: true,
skillTagFilter: function (player, tag) {
if (tag == "respondShan" && get.is.altered("yaotong")) return false;
if (player.countCards("h") % 2 == 0) return false;
},
},
threaten: 1.3,
},
yaotong1: {
enable: ["chooseToRespond", "chooseToUse"],
filterCard: true,
viewAs: { name: "sha" },
filter: function (event, player) {
var num = player.countCards("h");
if (num == 0) return false;
return num % 2 == 1;
},
prompt: "将一张手牌当作杀使用或打出",
check: function (card) {
return 6 - get.value(card);
},
},
yaotong2: {
enable: ["chooseToRespond", "chooseToUse"],
filterCard: true,
viewAs: { name: "shan" },
filter: function (event, player) {
if (get.is.altered("yaotong")) return false;
var num = player.countCards("h");
if (num == 0) return false;
return num % 2 == 1;
},
prompt: "将一张手牌当作闪使用或打出",
check: function (card) {
return 6 - get.value(card);
},
},
yaotong3: {
enable: "chooseToUse",
filterCard: true,
viewAs: { name: "wuxie" },
filter: function (event, player) {
var num = player.countCards("h");
if (num == 0) return false;
return num % 2 == 0;
},
viewAsFilter: function (player) {
var num = player.countCards("h");
if (num == 0) return false;
return num % 2 == 0;
},
prompt: "将一张手牌当作无懈可击使用",
check: function (card) {
return 7 - get.value(card);
},
},
yaotong4: {
enable: "chooseToUse",
filterCard: true,
viewAs: { name: "tao" },
filter: function (event, player) {
var num = player.countCards("h");
if (num == 0) return false;
return num % 2 == 0;
},
viewAsFilter: function (player) {
var num = player.countCards("h");
if (num == 0) return false;
return num % 2 == 0;
},
prompt: "将一张手牌当作桃使用",
check: function (card) {
return 9 - get.value(card);
},
},
pojian: {
trigger: { player: "loseEnd" },
filter: function (event, player) {
if (player.countCards("h")) return false;
for (var i = 0; i < event.cards.length; i++) {
if (event.cards[i].original == "h") return true;
2018-04-17 07:32:43 +00:00
}
return false;
},
2024-04-15 18:10:02 +00:00
content: function () {
for (var i = 0; i < ui.cardPile.childNodes.length; i++) {
if (get.type(ui.cardPile.childNodes[i]) == "equip") {
2018-04-17 07:32:43 +00:00
player.equip(ui.cardPile.childNodes[i]);
player.$gain2(ui.cardPile.childNodes[i]);
game.delay();
event.finish();
return;
}
}
2024-04-15 18:10:02 +00:00
for (var i = 0; i < ui.discardPile.childNodes.length; i++) {
if (get.type(ui.discardPile.childNodes[i]) == "equip") {
2018-04-17 07:32:43 +00:00
player.equip(ui.discardPile.childNodes[i]);
player.$gain2(ui.discardPile.childNodes[i]);
game.delay();
event.finish();
return;
}
}
},
},
2024-04-15 18:10:02 +00:00
huajin: {
enable: "phaseUse",
usable: 1,
filter: function (event, player) {
return player.countCards("he") > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterCard: true,
position: "he",
content: function () {
player.addSkill("huajin2");
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
check: function (card) {
return 5 - get.value(card);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
order: 10,
result: {
player: function (player) {
if (player.countCards("h", "juedou")) return 1;
if (player.countCards("h", "sha") == 0) return 0;
var players = game.filterPlayer();
for (var i = 0; i < players.length; i++) {
if (
player.canUse("sha", players[i]) &&
get.effect(players[i], { name: "sha" }, player, player) > 0
) {
2018-04-17 07:32:43 +00:00
return 1;
}
}
return 0;
2024-04-15 18:10:02 +00:00
},
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
huajin2: {
trigger: { source: "damageBegin" },
forced: true,
content: function () {
2018-04-17 07:32:43 +00:00
trigger.num++;
},
2024-04-15 18:10:02 +00:00
group: "huajin3",
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
huajin3: {
trigger: { player: "phaseBegin" },
forced: true,
popup: false,
content: function () {
player.removeSkill("huajin2");
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
yuchen: {
trigger: { player: ["useCard", "respondAfter"] },
direct: true,
filter: function (event, player) {
if (player == _status.currentPhase) return false;
if (event.cards) {
for (var i = 0; i < event.cards.length; i++) {
if (get.color(event.cards[i]) == "black") return true;
2018-04-17 07:32:43 +00:00
}
}
return false;
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
player
.chooseTarget(get.prompt("yuchen"), function (card, player, target) {
return player != target && target.countCards("he") > 0;
})
.set("autodelay", trigger.name == "respond" ? 0.5 : 1).ai = function (target) {
return -get.attitude(player, target);
2018-04-17 07:32:43 +00:00
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.logSkill("yuchen", result.targets);
player.discardPlayerCard(result.targets[0], true);
2018-04-17 07:32:43 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 0.7,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
bingjian: {
enable: "phaseUse",
usable: 1,
filter: function (event, player) {
return player.countCards("he", { color: "black", name: "sha" }) > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterCard: function (card) {
return card.name == "sha" && get.color(card) == "black";
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterTarget: function (card, player, target) {
return player != target && target.countCards("h") > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
line: "thunder",
content: function () {
"step 0";
2018-04-17 07:32:43 +00:00
target.showHandcards();
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
var cards = target.getCards("h", "shan");
if (cards.length) {
2018-04-17 07:32:43 +00:00
target.discard(cards);
2024-04-15 18:10:02 +00:00
} else {
target.damage("thunder");
2018-04-17 07:32:43 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
order: 5,
result: {
target: function (player, target) {
return get.damageEffect(target, player, target, "thunder");
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
expose: 0.2,
},
},
rumeng: {
trigger: { global: "phaseUseBefore" },
direct: true,
filter: function (event, player) {
return (
event.player != player &&
player.countCards("he", { type: "basic" }) < player.countCards("he")
);
},
content: function () {
"step 0";
var yep = get.attitude(player, trigger.player) < 0 && trigger.player.countCards("h") > 2;
var next = player.chooseToDiscard(
function (card) {
return get.type(card) != "basic";
},
get.prompt("rumeng", trigger.player),
"he"
);
next.logSkill = ["rumeng", trigger.player];
next.ai = function (card) {
if (yep) {
return 6 - get.value(card);
2018-04-17 07:32:43 +00:00
}
return 0;
2024-04-15 18:10:02 +00:00
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
trigger.player.chooseToDiscard(
{ type: "basic" },
"入梦:弃置一张基本牌或跳过出牌及弃牌阶段"
).ai = function (card) {
return 5 - get.value(card);
};
} else {
2018-04-17 07:32:43 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (!result.bool) {
2018-04-17 07:32:43 +00:00
trigger.cancel();
2024-04-15 18:10:02 +00:00
trigger.player.skip("phaseDiscard");
2018-04-17 07:32:43 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
expose: 0.1,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
lianda: {
trigger: { player: "shaAfter" },
direct: true,
filter: function (event, player) {
return (
event.target.isAlive() && player.countCards("he") > 0 && !player.hasSkill("lianda2")
);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
var next = player.chooseToDiscard("he", get.prompt("lianda"));
next.ai = function (card) {
if (get.effect(trigger.target, { name: "sha" }, player, player) > 0) {
return 7 - get.value(card);
2018-04-17 07:32:43 +00:00
}
return 0;
2024-04-15 18:10:02 +00:00
};
next.logSkill = "lianda";
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.addTempSkill("lianda2");
player.useCard({ name: "sha" }, trigger.target);
}
},
},
lianda2: {},
huiqi: {
trigger: { player: "damageEnd" },
direct: true,
filter: function (event, player) {
return player.hp < player.maxHp;
},
content: function () {
"step 0";
player.chooseTarget(get.prompt("huiqi"), function (card, player, target) {
return player != target;
}).ai = function (target) {
var att = get.attitude(player, target);
if (player.hp <= 0) {
if (player == target) {
2018-04-17 07:32:43 +00:00
return 1;
}
2024-04-15 18:10:02 +00:00
if (att > 3) {
return att + Math.max(0, 5 - target.countCards("h"));
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
return att / 4;
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
if (att > 3) {
return att + Math.max(0, 5 - target.countCards("h"));
2018-04-17 07:32:43 +00:00
}
return att;
2024-04-15 18:10:02 +00:00
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.logSkill("huiqi", result.targets);
result.targets[0].draw(player.maxHp - player.hp);
2018-04-17 07:32:43 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
expose: 0.2,
effect: {
target: function (card, player, target) {
if (get.tag(card, "damage")) {
return [1, 0.5];
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
},
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
xianghui: {
enable: "phaseUse",
usable: 1,
filterCard: { color: "red" },
filter: function (event, player) {
if (!player.countCards("h", { color: "red" })) return false;
var players = game.filterPlayer();
var min = players[0].hp;
for (var i = 0; i < players.length; i++) {
min = Math.min(min, players[i].hp);
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
for (var i = 0; i < players.length; i++) {
if (players[i].hp == min && players[i].isDamaged()) return true;
2018-04-17 07:32:43 +00:00
}
return false;
},
2024-04-15 18:10:02 +00:00
prompt: function () {
var players = game.filterPlayer();
var targets = [];
var min = players[0].hp;
for (var i = 0; i < players.length; i++) {
min = Math.min(min, players[i].hp);
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
for (var i = 0; i < players.length; i++) {
if (players[i].hp == min && players[i].hp < players[i].maxHp) {
2018-04-17 07:32:43 +00:00
targets.push(players[i]);
}
}
2024-04-15 18:10:02 +00:00
return "令" + get.translation(targets) + "回复1点体力";
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
check: function (card) {
return 8 - get.value(card);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterTarget: function (card, player, target) {
return target.isDamaged() && target.isMinHp();
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
selectTarget: -1,
content: function () {
2018-04-17 07:32:43 +00:00
target.recover();
},
2024-04-15 18:10:02 +00:00
ai: {
expose: 0.1,
order: 9,
threaten: 1.4,
result: {
player: function (player, target) {
var players = game.filterPlayer();
var num = 0;
var min = players[0].hp;
for (var i = 0; i < players.length; i++) {
min = Math.min(min, players[i].hp);
}
for (var i = 0; i < players.length; i++) {
if (players[i].hp == min && players[i].hp < players[i].maxHp) {
num += get.recoverEffect(players[i], player, player);
2018-04-17 07:32:43 +00:00
}
}
return num;
2024-04-15 18:10:02 +00:00
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
},
hzhenwei: {
trigger: { global: "shaBefore" },
direct: true,
priority: 5,
filter: function (event, player) {
if (player == event.target || player == event.player) return false;
if (!player.countCards("he")) return false;
return get.distance(event.player, player, "attack") <= 1;
},
content: function () {
"step 0";
var save = false;
if (get.attitude(player, trigger.target) > 2) {
if (
player.countCards("h", "shan") ||
player.getEquip(2) ||
trigger.target.hp == 1 ||
player.hp > trigger.target.hp + 1
) {
if (
!trigger.target.countCards("h", "shan") ||
trigger.target.countCards("h") < player.countCards("h")
) {
save = true;
}
}
}
var next = player.chooseToDiscard("he", get.prompt("hzhenwei"));
next.logSkill = ["hzhenwei", trigger.target];
next.ai = function (card) {
if (save) {
return 7 - get.value(card);
2018-04-17 07:32:43 +00:00
}
return 0;
2024-04-15 18:10:02 +00:00
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
trigger.target = player;
player.addSkill("hzhenwei2");
2018-04-17 07:32:43 +00:00
game.delay();
}
},
2024-04-15 18:10:02 +00:00
ai: {
effect: {
target: function (card) {
if (card.name == "sha") return 1.3;
},
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
hzhenwei2: {
trigger: { target: "shaAfter" },
forced: true,
popup: false,
content: function () {
2018-04-17 07:32:43 +00:00
player.draw();
2024-04-15 18:10:02 +00:00
player.removeSkill("hzhenwei2");
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
fzhenwei: {
trigger: { global: "respondEnd" },
filter: function (event, player) {
if (_status.currentPhase != player) return false;
if (event.player == player) return false;
if (event.cards) {
for (var i = 0; i < event.cards.length; i++) {
if (get.position(event.cards[i]) == "d") return true;
2018-04-17 07:32:43 +00:00
}
}
return false;
},
2024-04-15 18:10:02 +00:00
direct: true,
content: function () {
"step 0";
var cards = trigger.cards.slice(0);
for (var i = 0; i < cards.length; i++) {
if (get.position(cards[i]) != "d") {
cards.splice(i--, 1);
}
}
event.cards = cards;
player
.chooseTarget(get.prompt("fzhenwei"), function (card, player, target) {
return target != trigger.player;
})
.set("autodelay", 0.5).ai = function (target) {
var att = get.attitude(player, target);
if (att <= 0) return 0;
if (att > 3) {
return 100 - target.countCards("h");
2018-04-17 07:32:43 +00:00
}
return att;
2024-04-15 18:10:02 +00:00
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.logSkill("fzhenwei", result.targets);
result.targets[0].gain(event.cards, "gain2", "log");
}
},
ai: {
expose: 0.1,
threaten: 1.6,
},
},
shangxi: {
trigger: { player: "phaseUseBegin" },
direct: true,
filter: function (event, player) {
if (player.countCards("he") == 0) return false;
return game.hasPlayer(function (current) {
return (
current != player &&
get.distance(player, current, "attack") <= 1 &&
player.hp <= current.hp
);
2018-04-17 07:32:43 +00:00
});
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
var next = player.chooseCardTarget({
position: "he",
filterTarget: function (card, player, target) {
return (
get.distance(player, target, "attack") <= 1 &&
player != target &&
player.hp <= target.hp
);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterCard: lib.filter.cardDiscardable,
ai1: function (card) {
return 9 - get.value(card);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai2: function (target) {
return get.damageEffect(target, player, player);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
prompt: get.prompt("shangxi"),
2018-04-17 07:32:43 +00:00
});
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
2018-04-17 07:32:43 +00:00
player.discard(result.cards);
2024-04-15 18:10:02 +00:00
player.logSkill("shangxi", result.targets);
2018-04-17 07:32:43 +00:00
result.targets[0].damage();
}
},
2024-04-15 18:10:02 +00:00
ai: {
expose: 0.3,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
fuyan: {
trigger: { player: "damageEnd" },
direct: true,
filter: function (event) {
return event.num > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
player.chooseTarget(get.prompt("fuyan"), function (card, player, target) {
2018-04-17 07:32:43 +00:00
return !target.hujia;
2024-04-15 18:10:02 +00:00
}).ai = function (target) {
if (get.attitude(player, target) <= 0) return 0;
var eff = -get.damageEffect(target, target, player) + (player == target ? 2 : 0);
if (target.hp == 1) eff += 2;
return Math.min(1, eff);
2018-04-17 07:32:43 +00:00
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.logSkill("fuyan", result.targets);
var target = result.targets[0];
2018-04-17 07:32:43 +00:00
target.changeHujia();
}
},
2024-04-15 18:10:02 +00:00
ai: {
effect: {
target: function (card, player, target) {
if (get.tag(card, "damage")) {
if (player.hasSkillTag("jueqing", false, target)) return [1, -2];
2018-04-17 07:32:43 +00:00
return 0.7;
}
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
expose: 0.2,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
fuyan2: {
trigger: { player: "damageBegin" },
filter: function (event, player) {
return event.num > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
forced: true,
mark: "card",
content: function () {
2018-04-17 07:32:43 +00:00
trigger.num--;
2024-04-15 18:10:02 +00:00
player.removeSkill("fuyan2");
2018-04-17 07:32:43 +00:00
player.storage.fuyan2.discard();
delete player.storage.fuyan2;
},
2024-04-15 18:10:02 +00:00
intro: {
content: "card",
},
},
pingshen: {
trigger: { source: "damageBegin" },
unique: true,
silent: true,
content: function () {
trigger.player.addSkill("pingshen2");
trigger.player.storage.pingshen = player;
},
},
pingshen2: {
enable: "phaseUse",
unique: true,
mark: true,
init: function (player) {
player.storage.pingshen2 = false;
},
filter: function (event, player) {
return !player.storage.pingshen2 && player.storage.pingshen.isAlive();
},
filterCard: true,
filterTarget: function (card, player, target) {
return target == player.storage.pingshen;
},
selectTarget: -1,
position: "he",
content: function () {
player.storage.pingshen2 = true;
player.unmarkSkill("pingshen2");
player.gain(target.getCards("h"), target);
target.$give(target.countCards("h"), player);
2018-04-17 07:32:43 +00:00
player.turnOver();
2024-04-15 18:10:02 +00:00
player.addSkill("pingshen3");
},
check: function (card) {
return 8 - get.value(card);
},
intro: {
content: "limited",
},
ai: {
order: 10,
result: {
player: function (player) {
if (player.classList.contains("turnedover")) return 10;
if (get.attitude(player, player.storage.pingshen) >= 0) {
2018-04-17 07:32:43 +00:00
return 0;
}
2024-04-15 18:10:02 +00:00
if (player.storage.pingshen.countCards("h") > player.storage.pingshen.hp)
return 1;
2018-04-17 07:32:43 +00:00
return 0;
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
effect: {
target: function (card, player, target) {
if (!target.storage.pingshen2) {
if (card.name == "guiyoujie") return [0, 1];
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
},
},
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
pingshen3: {
trigger: { player: "phaseUseEnd" },
forced: true,
popup: false,
content: function () {
"step 0";
player.removeSkill("pingshen3");
if (player.storage.pingshen.classList.contains("dead")) {
2018-04-17 07:32:43 +00:00
event.finish();
2024-04-15 18:10:02 +00:00
} else {
player.chooseCard("he", true, player.storage.pingshen.hp);
}
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
player.storage.pingshen.gain(result.cards, player);
player.$give(result.cards.length, player.storage.pingshen);
},
},
guaili: {
trigger: { source: "damageBegin" },
filter: function (event) {
return (
event.card &&
event.card.name == "sha" &&
event.parent.name != "_lianhuan" &&
event.parent.name != "_lianhuan2"
);
},
forced: true,
content: function () {
2018-04-17 07:32:43 +00:00
trigger.num++;
2024-04-15 18:10:02 +00:00
player.addSkill("guaili2");
},
},
guaili2: {
trigger: { source: "damageEnd" },
forced: true,
popup: false,
content: function () {
player.removeSkill("guaili2");
player.chooseToDiscard(2, true);
},
},
xingzhui: {
enable: "phaseUse",
usable: 1,
filterCard: true,
position: "he",
filterTarget: function (card, player, target) {
return player != target && target.countCards("he") > 0;
},
check: function (card) {
if (get.type(card) == "equip") {
var distance = get.info(card).distance;
if (distance) {
if (distance.attackFrom < 0 || distance.globalFrom < 0) return 10;
}
}
return 7 - get.value(card);
},
content: function () {
"step 0";
event.type = get.type(cards[0], "trick");
var dme = get.damageEffect(target, player, target);
target.chooseToDiscard(
"he",
function (card) {
return get.type(card, "trick") == event.type;
},
"弃置一张牌" + get.translation(event.type) + "牌或受到1点伤害"
).ai = function (card) {
if (dme < 0) {
return 8 - get.value(card);
2018-04-17 07:32:43 +00:00
}
return 0;
2024-04-15 18:10:02 +00:00
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (!result.bool) {
2018-04-17 07:32:43 +00:00
target.damage();
}
},
2024-04-15 18:10:02 +00:00
ai: {
order: 9,
result: {
target: function (player, target) {
return get.damageEffect(target, player);
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
threaten: 2,
expose: 0.2,
},
},
lingxian: {
trigger: { player: ["respond", "useCard"] },
direct: true,
filter: function (event, player) {
if (player == _status.currentPhase) return false;
if (get.itemtype(event.cards) != "cards") return false;
return game.hasPlayer(function (current) {
return get.distance(player, current, "attack") > 1 && player != current;
2018-04-17 07:32:43 +00:00
});
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
player.chooseTarget(get.prompt("lingxian"), function (card, player, target) {
return get.distance(player, target, "attack") > 1 && player != target;
}).ai = function (target) {
var att = get.attitude(player, target);
if (att <= -0.5) return 0;
if (att <= 3) return att + 0.5;
return att + Math.min(0.5, 5 - target.countCards("h"));
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
game.asyncDraw([player, result.targets[0]]);
player.logSkill("lingxian", result.targets);
}
},
ai: {
mingzhi: false,
effect: {
target: function (card, player, target) {
if (player == _status.currentPhase) return;
if (
!game.hasPlayer(function (current) {
return (
get.distance(player, current, "attack") > 1 &&
player != current &&
get.attitude(player, current) >= 0
);
})
) {
2018-04-17 07:32:43 +00:00
return;
}
2024-04-15 18:10:02 +00:00
if (get.type(card) == "equip" && player == target) {
var distance = get.info(card).distance;
if (distance) {
if (distance.attackFrom < 0 || distance.globalFrom < 0) return 0;
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
} else {
if (!target.hasFriend()) return;
var hs = target.countCards("h");
if (get.tag(card, "respondShan")) {
var shans = target.countCards("h", "shan");
if (shans > 1) return [0, 1];
if (shans && hs > 2) return [0, 1];
if (shans) return [0, 0];
if (hs > 2) return [0, 0];
if (hs > 1) return [1, 0.5];
return [1.5, 0];
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
if (get.tag(card, "respondSha")) {
var shas = target.countCards("h", "sha");
if (shas > 1) return [0, 1];
if (shas && hs > 2) return [0, 1];
if (shas) return [0, 0];
if (hs > 2) return [0, 0];
if (hs > 1) return [1, 0.5];
return [1.5, 0];
2018-04-17 07:32:43 +00:00
}
}
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
threaten: 0.8,
expose: 0.1,
},
},
shouyin: {
skillAnimation: "epic",
animationColor: "water",
unique: true,
enable: "chooseToUse",
init: function (player) {
player.storage.shouyin = false;
},
mark: true,
filter: function (event, player) {
if (event.type != "dying") return false;
if (player.storage.shouyin) return false;
if (player.isTurnedOver()) return false;
2018-04-17 07:32:43 +00:00
return true;
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
player.awakenSkill("shouyin");
player.storage.shouyin = true;
2018-04-17 07:32:43 +00:00
player.turnOver();
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
event.targets = game.filterPlayer();
2018-04-17 07:32:43 +00:00
event.targets.sort(lib.sort.seat);
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (event.targets.length) {
var target = event.targets.shift();
if (target.hp < target.maxHp) {
var num = target.maxHp - target.hp;
if (get.is.altered("shouyin")) num = Math.min(2, num);
2018-04-17 07:32:43 +00:00
target.recover(num);
2024-04-15 18:10:02 +00:00
player.line(target, "green");
2018-04-17 07:32:43 +00:00
}
event.redo();
}
},
2019-06-07 03:46:13 +00:00
// alter:true,
2024-04-15 18:10:02 +00:00
ai: {
skillTagFilter: function (player) {
if (player.storage.shouyin) return false;
},
expose: 0.3,
save: true,
result: {
player: function (player) {
if (
_status.event.dying != player &&
get.attitude(player, _status.event.dying) <= 0
) {
2018-04-17 07:32:43 +00:00
return 0;
}
2024-04-15 18:10:02 +00:00
var num = 0;
var players = game.filterPlayer();
for (var i = 0; i < players.length; i++) {
var del = players[i].maxHp - players[i].hp;
if (get.is.altered("shouyin")) del = Math.min(2, del);
del /= Math.pow(1 + players[i].hp, 0.2);
num += get.sgnAttitude(player, players[i]) * del;
2018-04-17 07:32:43 +00:00
}
return num;
2024-04-15 18:10:02 +00:00
},
},
},
intro: {
content: "limited",
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
sliufeng: {
mod: {
targetInRange: function (card, player, target) {
if (card.name == "sha" && player.hp >= target.hp) {
2018-04-17 07:32:43 +00:00
return true;
}
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
linyun: {
enable: "chooseToUse",
filterCard: true,
selectCard: 2,
position: "he",
viewAs: { name: "sha" },
prompt: "将两张牌当杀使用",
check: function (card) {
if (_status.event.player.countCards("h") < 4) return 6 - get.useful(card);
return 7 - get.useful(card);
},
ai: {
order: function () {
return get.order({ name: "sha" }) + 0.1;
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
group: ["linyun2"],
},
linyun2: {
trigger: { player: "shaBegin" },
filter: function (event) {
return event.skill == "linyun";
},
forced: true,
popup: false,
content: function () {
"step 0";
var next = trigger.target.chooseToRespond({ name: "shan" });
next.autochoose = lib.filter.autoRespondShan;
next.ai = function (card) {
if (trigger.target.countCards("h", "shan") > 1) {
2018-04-17 07:32:43 +00:00
return get.unuseful2(card);
}
return -1;
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool == false) {
2018-04-17 07:32:43 +00:00
trigger.untrigger();
2024-04-15 18:10:02 +00:00
trigger.directHit = true;
2018-04-17 07:32:43 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 1.3,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
linyun3: {
trigger: { source: "damageAfter" },
forced: true,
popup: false,
filter: function (event, player) {
return event.parent.skill == "linyun" && !player.hasSkill("linyun4");
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
2018-04-17 07:32:43 +00:00
player.draw();
2024-04-15 18:10:02 +00:00
player.addTempSkill("linyun4", "shaAfter");
},
},
linyun4: {},
bofeng: {
mod: {
targetInRange: function (card, player, target) {
if (card.name == "sha" && player.hp >= target.hp) {
2018-04-17 07:32:43 +00:00
return true;
}
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
trigger: { player: "shaBegin" },
check: function (event, player) {
return get.attitude(player, event.target) < 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
trigger.target.chooseToRespond({ name: "shan" });
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool == false) {
2018-04-17 07:32:43 +00:00
trigger.untrigger();
2024-04-15 18:10:02 +00:00
trigger.directHit = true;
player.addTempSkill("bofeng2", "shaEnd");
2018-04-17 07:32:43 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 1.3,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
bofeng2: {
trigger: { source: "damageBegin" },
filter: function (event) {
return (
event.card &&
event.card.name == "sha" &&
event.parent.name != "_lianhuan" &&
event.parent.name != "_lianhuan2"
);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
forced: true,
popup: false,
content: function () {
2018-04-17 07:32:43 +00:00
trigger.num++;
},
},
2024-04-15 18:10:02 +00:00
hutian: {
trigger: { player: "phaseEnd" },
direct: true,
filter: function (event, player) {
return player.countCards("h") > 0 && !player.storage.hutian;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
var next = player.chooseCardTarget({
filterTarget: function (card, player, target) {
return target.maxHp >= ui.selected.cards.length;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterCard: true,
selectCard: [1, player.countCards("he")],
ai1: function (card) {
var useful = get.useful(card);
if (card.name == "du") {
useful = -5;
}
if (ui.selected.cards.length == 0 && player.hp == 1) return 11 - useful;
if (ui.selected.cards.length > 1) return 0;
return 7 - useful;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai2: function (target) {
if (target.hp > ui.selected.cards.length) {
2018-04-17 07:32:43 +00:00
return 0;
}
2024-04-15 18:10:02 +00:00
return get.attitude(player, target);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
position: "he",
prompt: get.prompt("hutian"),
2018-04-17 07:32:43 +00:00
});
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
var target = result.targets[0];
event.target = target;
player.$give(result.cards, target);
player.lose(result.cards, ui.special);
player.storage.hutian = target;
player.logSkill("hutian", result.targets);
player.addTempSkill("hutian4");
target.addSkill("hutian2");
target.storage.hutian2 = result.cards;
game.addVideo("storage", target, ["hutian2", get.cardsInfo(result.cards), "cards"]);
} else {
2018-04-17 07:32:43 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
var target = event.target;
if (target.storage.hutian2 && target.hp < target.storage.hutian2.length) {
target.recover(target.storage.hutian2.length - target.hp);
2018-04-17 07:32:43 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
expose: 0.2,
threaten: 1.5,
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
group: "hutian3",
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
hutian2: {
trigger: { player: ["damageBegin", "loseHpBegin"] },
forced: true,
priority: -55,
mark: true,
filter: function (event, player) {
return player.hp - event.num < player.storage.hutian2.length;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
trigger.num = player.hp - player.storage.hutian2.length;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
intro: {
content: "cards",
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
effect: {
target: function (card, player, target) {
if (get.tag(card, "damage") || get.tag(card, "loseHp")) {
if (target.hp <= target.storage.hutian2.length) return 0;
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
},
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
hutian3: {
trigger: { player: ["phaseEnd", "dieBegin"] },
forced: true,
filter: function (event, player) {
if (player.hasSkill("hutian4")) return false;
return player.storage.hutian ? true : false;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
priority: -1,
content: function () {
var target = player.storage.hutian;
target.gain(target.storage.hutian2, "gain2");
2018-04-17 07:32:43 +00:00
delete target.storage.hutian2;
delete player.storage.hutian;
2024-04-15 18:10:02 +00:00
target.removeSkill("hutian2");
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
hutian4: {},
chengjian: {
trigger: { global: "damageEnd" },
check: function (event, player) {
return get.attitude(player, event.source) > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filter: function (event, player) {
return event.source && event.card && event.card.name == "sha" && event.source != player;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
logTarget: "source",
content: function () {
2018-04-17 07:32:43 +00:00
trigger.source.draw();
},
2024-04-15 18:10:02 +00:00
ai: {
expose: 0.1,
threaten: 1.2,
},
},
huanxing: {
trigger: { player: "phaseBegin" },
group: "huanxing2",
direct: true,
content: function () {
"step 0";
if (player.countCards("he")) {
2018-04-17 07:32:43 +00:00
player.chooseCardTarget({
2024-04-15 18:10:02 +00:00
prompt: get.prompt("huanxing"),
filterCard: lib.filter.cardDiscardable,
position: "he",
filterTarget: function (card, player, target) {
if (target == player) return false;
if (target.sex != "male") return false;
var name = target.name.indexOf("unknown") == 0 ? target.name2 : target.name;
if (name == player.storage.huanxing) return false;
var info = lib.character[name];
if (info) {
var skills = info[3];
for (var j = 0; j < skills.length; j++) {
if (
lib.translate[skills[j] + "_info"] &&
lib.skill[skills[j]] &&
!lib.skill[skills[j]].unique &&
!player.hasSkill(skills[j])
) {
2018-04-17 07:32:43 +00:00
return true;
}
}
}
return false;
},
2024-04-15 18:10:02 +00:00
ai1: function (card) {
if (
player.additionalSkills.huanxing &&
player.additionalSkills.huanxing.length > 0
)
return 0;
return 7 - get.value(card);
},
ai2: function (target) {
if (target.isMin()) return 0;
return 6 - target.maxHp;
2018-04-17 07:32:43 +00:00
},
});
2024-04-15 18:10:02 +00:00
} else {
2018-04-17 07:32:43 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.unmark(player.storage.huanxing + "_charactermark");
2018-04-17 07:32:43 +00:00
player.discard(result.cards);
2024-04-15 18:10:02 +00:00
player.logSkill("huanxing", result.targets);
var name = result.targets[0].name;
if (name.indexOf("unknown") == 0) {
name = result.targets[0].name2;
}
var list = [];
var skills = lib.character[name][3];
for (var j = 0; j < skills.length; j++) {
if (
lib.translate[skills[j] + "_info"] &&
lib.skill[skills[j]] &&
!lib.skill[skills[j]].unique &&
!player.hasSkill(skills[j])
) {
2018-04-17 07:32:43 +00:00
list.push(skills[j]);
}
}
2024-04-15 18:10:02 +00:00
player.addAdditionalSkill("huanxing", list);
player.markCharacter(name, null, true, true);
game.addVideo("markCharacter", player, {
name: "幻形",
content: "",
id: "huanxing",
target: name,
2018-04-17 07:32:43 +00:00
});
2024-04-15 18:10:02 +00:00
player.storage.huanxing = name;
2018-04-17 07:32:43 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 1.5,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
huanxing2: {
trigger: { player: "damageAfter" },
priority: -15,
forced: true,
filter: function (event, player) {
return player.additionalSkills.huanxing && player.additionalSkills.huanxing.length > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
player.unmark(player.storage.huanxing + "_charactermark");
player.removeAdditionalSkill("huanxing");
2018-04-17 07:32:43 +00:00
delete player.storage.huanxing;
player.checkMarks();
2024-04-15 18:10:02 +00:00
},
},
guiying: {
enable: "chooseToUse",
filterCard: { color: "black" },
position: "he",
viewAs: { name: "toulianghuanzhu" },
prompt: "将一张黑色牌当作偷梁换柱使用",
check: function (card) {
if (_status.event.player.countCards("h") > _status.event.player.hp) {
return 5 - get.value(card);
2018-04-17 07:32:43 +00:00
}
return 0;
},
},
2024-04-15 18:10:02 +00:00
suiyan: {
trigger: { source: "damageEnd" },
direct: true,
filter: function (event, player) {
if (event._notrigger.includes(event.player)) return false;
return event.player.countCards("e");
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
var att = get.attitude(player, trigger.player);
var next = player.chooseToDiscard("he", get.prompt("suiyan"));
next.ai = function (card) {
if (att < 0) return 7 - get.value(card);
2018-04-17 07:32:43 +00:00
return -1;
2024-04-15 18:10:02 +00:00
};
next.logSkill = ["suiyan", trigger.player];
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
trigger.player.discard(trigger.player.getCards("e"));
2018-04-17 07:32:43 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
expose: 0.3,
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
ningxian: {
trigger: { player: "damageEnd" },
direct: true,
filter: function (event, player) {
return player.countCards("he", { color: "black" }) > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
var enemy = game.countPlayer(function (current) {
return current != player && get.damageEffect(current, player, player) > 0;
2018-04-17 07:32:43 +00:00
});
2024-04-15 18:10:02 +00:00
var next = player.chooseCardTarget({
position: "he",
filterTarget: function (card, player, target) {
return player != target;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
selectCard: [1, player.countCards("he", { color: "black" })],
selectTarget: function () {
if (ui.selected.targets.length > ui.selected.cards.length) {
game.uncheck("target");
2018-04-17 07:32:43 +00:00
}
return ui.selected.cards.length;
},
2024-04-15 18:10:02 +00:00
filterCard: function (card, player) {
return get.color(card) == "black" && lib.filter.cardDiscardable(card, player);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai1: function (card) {
if (ui.selected.cards.length >= enemy) return 0;
return 9 - get.value(card);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai2: function (target) {
return get.damageEffect(target, player, player);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
prompt: get.prompt("ningxian"),
2018-04-17 07:32:43 +00:00
});
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
2018-04-17 07:32:43 +00:00
player.discard(result.cards);
2024-04-15 18:10:02 +00:00
player.logSkill("ningxian", result.targets);
event.targets = result.targets;
2018-04-17 07:32:43 +00:00
event.targets.sort(lib.sort.seat);
2024-04-15 18:10:02 +00:00
} else {
2018-04-17 07:32:43 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (event.targets.length) {
2018-04-17 07:32:43 +00:00
event.targets.shift().damage();
event.redo();
}
},
2024-04-15 18:10:02 +00:00
ai: {
maixie: true,
maixie_hp: true,
effect: function (card, player, target) {
if (get.tag(card, "damage")) {
if (player.hasSkillTag("jueqing", false, target)) return [1, -0.5];
if (!target.hasFriend()) {
if (get.mode() == "guozhan") {
if (!player.hasFriend()) return;
} else {
2018-04-17 07:32:43 +00:00
return;
}
}
2024-04-15 18:10:02 +00:00
if (target.countCards("h") > 2 || target.countCards("e", { color: "black" })) {
return [1, 0, 0, -1];
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
return [1, -0.5];
2018-04-17 07:32:43 +00:00
}
},
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
xuanyuan: {
trigger: { player: "phaseEnd" },
unique: true,
forceunique: true,
direct: true,
filter: function (event, player) {
if (!player.countCards("he", { suit: "spade" })) return false;
for (var i = 0; i < ui.discardPile.childElementCount; i++) {
if (ui.discardPile.childNodes[i].name == "xuanyuanjian") return true;
2018-04-17 07:32:43 +00:00
}
2019-06-07 03:46:13 +00:00
return false;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
player
.chooseToDiscard("he", { suit: "spade" }, get.prompt2("xuanyuan"))
.set("ai", function (card) {
return 8 - get.value(card);
});
2024-04-15 18:31:36 +00:00
"step 1";
2018-04-17 07:32:43 +00:00
var card;
2024-04-15 18:10:02 +00:00
for (var i = 0; i < ui.discardPile.childElementCount; i++) {
if (ui.discardPile.childNodes[i].name == "xuanyuanjian") {
card = ui.discardPile.childNodes[i];
2019-06-07 03:46:13 +00:00
break;
2018-04-17 07:32:43 +00:00
}
}
2024-04-15 18:10:02 +00:00
if (card) {
player.equip(card, true);
2018-04-17 07:32:43 +00:00
}
},
2024-04-15 18:10:02 +00:00
global: "xuanyuan_ai",
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
xuanyuan_ai: {
ai: {
effect: {
player: function (card, player) {
if (player.hasSkill("xuanyuan")) return;
if (
card.name == "xuanyuanjian" &&
game.hasPlayer(function (current) {
return current.hasSkill("xuanyuan") && get.attitude(player, current) <= 0;
})
) {
return [0, 0, 0, 0];
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
},
},
2024-04-15 18:10:02 +00:00
jilve: {
enable: "phaseUse",
usable: 3,
2019-06-07 03:46:13 +00:00
// alter:true,
2024-04-15 18:10:02 +00:00
onChooseToUse: function (event) {
var cards = [];
var num = 3;
if (get.is.altered("jilve")) {
num = 2;
}
if (ui.cardPile.childNodes.length < num) {
var discardcards = get.cards(num);
for (var i = 0; i < discardcards.length; i++) {
2018-04-17 07:32:43 +00:00
discardcards[i].discard();
}
}
2024-04-15 18:10:02 +00:00
for (var i = 0; i < num; i++) {
2018-04-17 07:32:43 +00:00
cards.push(ui.cardPile.childNodes[i]);
}
2024-04-15 18:10:02 +00:00
event.set("jilvecards", cards);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
chooseButton: {
dialog: function (event, player) {
return ui.create.dialog("极略:选择一张基本牌或锦囊牌使用", event.jilvecards);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filter: function (button, player) {
var evt = _status.event.getParent();
if (evt && evt.filterCard) {
var type = get.type(button.link, "trick");
return (type != "equip") & evt.filterCard(button.link, player, evt);
2018-04-17 07:32:43 +00:00
}
return false;
},
2024-04-15 18:10:02 +00:00
check: function (button) {
if (button.link.name == "du") return 0;
2018-04-17 07:32:43 +00:00
return 1;
},
2024-04-15 18:10:02 +00:00
backup: function (links, player) {
2018-04-17 07:32:43 +00:00
return {
2024-04-15 18:10:02 +00:00
filterCard: function () {
return false;
},
selectCard: -1,
viewAs: links[0],
};
},
prompt: function (links, player) {
return "选择" + get.translation(links) + "的目标";
},
},
ai: {
order: 12,
result: {
player: 1,
},
threaten: 1.7,
},
},
jilve_old: {
enable: "phaseUse",
group: "jilve6",
direct: true,
usable: 3,
delay: 0,
content: function () {
"step 0";
player.getStat("skill").jilve--;
var cards = [];
var max = Math.min(2, ui.cardPile.childNodes.length);
for (var i = 0; i < max; i++) {
2018-04-17 07:32:43 +00:00
cards.push(ui.cardPile.childNodes[i]);
}
2024-04-15 18:10:02 +00:00
for (var i = max; i < 2; i++) {
2018-04-17 07:32:43 +00:00
cards.push(ui.discardPile.childNodes[i]);
}
2024-04-15 18:10:02 +00:00
var dialog = ui.create.dialog("极略:选择一张基本牌或锦囊牌牌使用", cards);
var trigger = event.parent.parent;
player.chooseButton(dialog, function (card) {
if (card.name == "du") return 0;
return 1;
}).filterButton = function (button) {
var type = get.type(button.link, "trick");
return (
(type == "trick" || type == "basic") &&
trigger.filterCard(button.link, player, trigger)
);
2018-04-17 07:32:43 +00:00
};
2024-04-15 18:10:02 +00:00
player.addTempSkill("jilve3", ["useCardAfter", "phaseAfter"]);
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
2018-04-17 07:32:43 +00:00
// player.getStat('skill').jilve++;
2024-04-15 18:10:02 +00:00
lib.skill.jilve2.viewAs = result.buttons[0].link;
event.parent.parent.backup("jilve2");
event.parent.parent.step = 0;
if (event.isMine()) {
event.parent.parent.openskilldialog =
"选择" + get.translation(result.buttons[0].link) + "的目标";
2018-04-17 07:32:43 +00:00
}
}
},
2024-04-15 18:10:02 +00:00
ai: {
order: 12,
result: {
player: function (player) {
if (player.tempSkills.jilve3) return 0;
if (_status.event.dying) return get.attitude(player, _status.event.dying);
2018-04-17 07:32:43 +00:00
return 1;
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
threaten: 1.7,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
jilve6: {
trigger: { player: "useCardBefore" },
forced: true,
popup: false,
filter: function (event, player) {
return event.skill == "jilve2";
},
content: function () {
player.getStat("skill").jilve++;
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
jilve2: {
filterCard: function () {
return false;
},
selectCard: -1,
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
jilve3: {},
jilve4: {
trigger: { player: "useCard" },
forced: true,
popup: false,
filter: function (event) {
return event.skill == "jilve2";
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
2018-04-17 07:32:43 +00:00
player.storage.jilve++;
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
jilve5: {
trigger: { player: "phaseUseBegin" },
forced: true,
popup: false,
content: function () {
player.storage.jilve = 0;
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
pozhou: {
unique: true,
trigger: { player: "damageEnd" },
forced: true,
init: function (player) {
player.storage.pozhou = 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
if (typeof trigger.num == "number") {
player.storage.pozhou += trigger.num;
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
if (player.storage.pozhou) {
player.markSkill("pozhou");
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
game.addVideo("storage", player, ["pozhou", player.storage.pozhou]);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
intro: {
content: "mark",
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
group: "pozhou2",
ai: {
maixie: true,
maixie_hp: true,
effect: {
target: function (card, player, target) {
if (get.tag(card, "damage")) {
if (player.hasSkillTag("jueqing", false, target)) return [1, -1.5];
if (player.hp >= 4) return [1, 1.5];
if (target.hp == 3) return [1, 1];
if (target.hp == 2) return [1, 0.5];
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
},
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
pozhou2: {
enable: "phaseUse",
filter: function (event, player) {
return player.storage.pozhou > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterTarget: function (card, player, target) {
return target != player && !target.hasSkill("fengyin");
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
selectTarget: function () {
return [1, _status.event.player.storage.pozhou];
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
prompt: "出牌阶段,你可以指定任意名其他角色并弃置等量的破咒标记,令目标的非锁定技失效直到其下一回合结束",
content: function () {
2018-04-17 07:32:43 +00:00
player.storage.pozhou--;
2024-04-15 18:10:02 +00:00
if (!player.storage.pozhou) {
player.unmarkSkill("pozhou");
} else {
2018-04-17 07:32:43 +00:00
player.updateMarks();
}
2024-04-15 18:10:02 +00:00
target.addTempSkill("fengyin", { player: "phaseAfter" });
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
order: 11,
result: {
target: function (player, target) {
var skills = target.getSkills();
for (var i = 0; i < skills.length; i++) {
if (!get.is.locked(skills[i])) {
if (target.hasSkillTag("maixie")) return -2;
2018-04-17 07:32:43 +00:00
return -get.threaten(target);
}
}
return 0;
2024-04-15 18:10:02 +00:00
},
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
pozhou2_old: {
trigger: { global: "phaseBegin" },
priority: -5,
check: function (event, player) {
if (event.player.isMin()) return false;
return get.attitude(player, event.player) < -3;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filter: function (event, player) {
return player.storage.pozhou > 0 && player != event.player;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
prompt: function (event, player) {
return (
"###是否弃置一枚破咒标记令" +
get.translation(event.player) +
"的非锁定技失效?###(剩余" +
player.storage.pozhou +
"枚)"
);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
logTarget: "player",
content: function () {
2018-04-17 07:32:43 +00:00
player.storage.pozhou--;
2024-04-15 18:10:02 +00:00
if (!player.storage.pozhou) {
player.unmarkSkill("pozhou");
} else {
2018-04-17 07:32:43 +00:00
player.updateMarks();
}
2024-04-15 18:10:02 +00:00
trigger.player.addTempSkill("fengyin", { player: "phaseBegin" });
},
},
fengmo: {
enable: "phaseUse",
usable: 1,
filter: function () {
return (
game.countPlayer(function (current) {
return current.getEquip(1);
}) >= 1
);
},
filterTarget: function (card, player, target) {
return player != target && !target.isTurnedOver();
},
content: function () {
"step 0";
event.targets = [];
event.num = 0;
var players = game.filterPlayer();
for (var i = 0; i < players.length; i++) {
if (players[i].getEquip(1)) {
2018-04-17 07:32:43 +00:00
event.targets.push(players[i]);
}
}
event.targets.sort(lib.sort.seat);
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (num < event.targets.length) {
var targetn = event.targets[num];
var card = targetn.getEquip(1);
if (card) {
2018-04-17 07:32:43 +00:00
targetn.discard(card);
}
event.num++;
event.redo();
}
2024-04-15 18:31:36 +00:00
"step 2";
2018-04-17 07:32:43 +00:00
target.draw(event.targets.length);
2024-04-15 18:31:36 +00:00
"step 3";
2018-04-17 07:32:43 +00:00
target.turnOver();
},
2024-04-15 18:10:02 +00:00
ai: {
result: {
target: function (player, target) {
if (target.hasSkillTag("noturn")) return 0;
var num = game.countPlayer(function (current) {
2018-04-17 07:32:43 +00:00
return current.getEquip(1);
});
2024-04-15 18:10:02 +00:00
if (target.hp == 1 && num < 3) {
return (num - 3) / 1.5;
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
return num - 3;
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
order: 10,
expose: 0.1,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
duanyue: {
enable: "phaseUse",
usable: 1,
position: "he",
filterCard: { type: "equip" },
check: function (card) {
var player = _status.currentPhase;
if (player.countCards("he", { subtype: get.subtype(card) }) > 1) {
return 12 - get.equipValue(card);
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
return 8 - get.equipValue(card);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filter: function (event, player) {
return player.countCards("he", { type: "equip" });
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterTarget: function (card, player, target) {
return player != target;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
2018-04-17 07:32:43 +00:00
target.damage();
},
2024-04-15 18:10:02 +00:00
ai: {
order: 9.5,
expose: 0.2,
result: {
player: function (player, target) {
return get.damageEffect(target, player, player);
},
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
tuzhen: {
trigger: { source: "damageAfter" },
filter: function (event, player) {
return (
event.player.isIn() &&
event.player != player &&
event.player.hasCard(function (card) {
return get.type(card) != "basic";
})
);
2018-04-17 07:32:43 +00:00
},
2019-06-07 03:46:13 +00:00
// alter:true,
2024-04-15 18:10:02 +00:00
logTarget: "player",
check: function (event, player) {
return get.attitude(player, event.player) < 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
var hs = trigger.player.getCards("h", function (card) {
return get.type(card) != "basic";
2018-04-17 07:32:43 +00:00
});
2024-04-15 18:10:02 +00:00
if (get.is.altered("tuzhen")) {
hs = hs.randomGet();
2018-04-17 07:32:43 +00:00
}
trigger.player.discard(hs);
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
mojian: {
trigger: { player: "shaBegin" },
check: function (event, player) {
if (get.attitude(player, event.target) > 0) return true;
return player.hp < player.maxHp;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
logTarget: "target",
content: function () {
"step 0";
2018-04-17 07:32:43 +00:00
trigger.target.draw();
2024-04-15 18:31:36 +00:00
"step 1";
2018-04-17 07:32:43 +00:00
player.recover();
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
swdliuhong: {
trigger: { player: ["useCard"] },
frequent: true,
filter: function (event) {
return event.card && event.card.name == "sha";
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
2018-04-17 07:32:43 +00:00
player.draw();
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
poyue: {
mod: {
targetInRange: function (card, player) {
if (card.name == "sha" && get.color(card) == "black") return true;
},
cardUsable: function (card) {
if (get.is.altered("poyue")) return;
if (card.name == "sha" && get.color(card) == "red") return Infinity;
2018-04-17 07:32:43 +00:00
},
},
2019-06-07 03:46:13 +00:00
// alter:true,
2024-04-15 18:10:02 +00:00
trigger: { player: "useCard" },
filter: function (event, player) {
if (get.is.altered("poyue")) return false;
return event.card.name == "sha" && get.color(event.card) == "red";
},
forced: true,
content: function () {
if (player.stat[player.stat.length - 1].card.sha > 0) {
player.stat[player.stat.length - 1].card.sha--;
}
},
group: "poyue2",
},
poyue2: {
trigger: { player: "shaBegin" },
forced: true,
popup: false,
filter: function (event, player) {
return event.card && get.color(event.card) == "red";
},
content: function () {
trigger.directHit = true;
},
},
jianji: {
enable: "phaseUse",
filter: function (event, player) {
return (
player.countCards("he", { type: "equip" }) > 0 &&
lib.filter.cardEnabled({ name: "sha" }, player)
);
},
usable: 1,
filterCard: { type: "equip" },
position: "he",
check: function (card) {
var player = _status.currentPhase;
if (player.countCards("he", { subtype: get.subtype(card) }) > 1) {
return 11 - get.equipValue(card);
}
return 6 - get.equipValue(card);
},
discard: false,
prepare: "throw",
delay: false,
filterTarget: function (card, player, target) {
return lib.filter.targetEnabled({ name: "sha" }, player, target);
},
content: function () {
"step 0";
player.addAdditionalSkill("jianji", "unequip");
2018-04-17 07:32:43 +00:00
player.draw();
2024-04-15 18:10:02 +00:00
player.useCard({ name: "sha" }, cards, targets, false).animate = false;
player.line(targets, "fire");
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
player.removeAdditionalSkill("jianji");
},
ai: {
order: function () {
return get.order({ name: "sha" }) + 0.1;
},
result: {
target: function (player, target) {
player.addAdditionalSkill("jianji_ai", "unequip");
var eff = get.effect(target, { name: "sha" }, player, target);
player.removeAdditionalSkill("jianji_ai");
2018-04-17 07:32:43 +00:00
return eff;
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
effect: {
player: function (card, player) {
if (_status.currentPhase != player) return;
if (
get.type(card) == "equip" &&
player.countCards("e", { subtype: get.subtype(card) }) &&
lib.filter.filterCard({ name: "sha" }, player)
) {
2018-04-17 07:32:43 +00:00
return 0;
}
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
threaten: 1.3,
},
},
huangyu: {
enable: "phaseUse",
filter: function (event, player) {
if (!lib.card.chiyuxi) return false;
return !player.getStat("skill").huangyu && player.countCards("he", { color: "red" }) > 1;
},
filterCard: { color: "red" },
selectCard: 2,
position: "he",
viewAs: { name: "chiyuxi", nature: "fire" },
check: function (card) {
var player = _status.event.player;
if (
player.hasSkill("jianji") &&
get.type(card) == "equip" &&
lib.filter.filterCard({ name: "sha" }, player)
) {
2018-04-17 07:32:43 +00:00
return 0;
}
2024-04-15 18:10:02 +00:00
return 6 - get.value(card);
},
ai: {
order: 8,
expose: 0.2,
threaten: 1.2,
},
},
gongshen: {
trigger: { global: "useCard" },
priority: 15,
filter: function (event, player) {
var type = get.type(event.card, "trick");
if (type != "basic" && type != "trick") return false;
return (
event.player != player &&
player.countCards("he", { type: "equip" }) > 0 &&
event.targets &&
event.targets.length > 0
);
},
direct: true,
content: function () {
"step 0";
var effect = 0;
for (var i = 0; i < trigger.targets.length; i++) {
effect += get.effect(trigger.targets[i], trigger.card, trigger.player, player);
}
var str = "弃置一张装备牌令" + get.translation(trigger.player);
if (trigger.targets && trigger.targets.length) {
str += "对" + get.translation(trigger.targets);
}
str += "的" + get.translation(trigger.card) + "失效";
var next = player.chooseToDiscard("he", { type: "equip" }, get.prompt("gongshen"));
next.prompt2 = str;
next.logSkill = ["gongshen", trigger.player];
next.autodelay = true;
next.ai = function (card) {
if (effect < 0) {
var val = 9 - get.value(card);
var nme = trigger.card.name;
if (get.value(trigger.card) >= 7 && get.type(trigger.card) == "trick") return val;
if (nme == "tao") return val;
if (nme == "wuzhong") return val;
if (nme == "zengbin") return val;
if (nme == "wangmeizhike") return val;
if (nme == "shunshou" && player == trigger.targets[0]) return val;
if (nme == "guohe" && player == trigger.targets[0]) return val;
if (nme == "liuxinghuoyu") return val;
if (nme == "nanman") return val;
if (nme == "wanjian") return val;
if (nme == "jingleishan") return val;
if (nme == "chiyuxi") return val;
if (
nme == "juedou" &&
(player == trigger.targets[0] || trigger.targets[0].hp == 1)
)
return val;
if (nme == "chenhuodajie") return val;
if (nme == "lebu" && trigger.targets[0].countCards("h") > trigger.targets[0].hp)
return val;
if (nme == "sha" && trigger.targets[0].hp == 1 && !trigger.targets[0].hasShan())
return val;
if (nme == "jiedao" && trigger.targets[0] == player) return val;
if (nme == "yihuajiemu" && trigger.targets[0] == player) return val;
if (nme == "shuiyanqijun" && trigger.targets.includes(player)) return val;
2018-04-17 07:32:43 +00:00
return 0;
}
return -1;
2024-04-15 18:10:02 +00:00
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
2018-04-17 07:32:43 +00:00
// game.delay(2);
trigger.cancel();
}
},
2024-04-15 18:10:02 +00:00
ai: {
effect: {
player: function (card, player, target) {
if (player != target) return;
if (get.type(card) == "equip" && !player.needsToDiscard()) {
return [0, 0, 0, 0];
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
threaten: 2,
expose: 0.3,
},
},
xiaozhan: {
trigger: { global: "useCard" },
priority: 15,
filter: function (event, player) {
return (
event.card.name == "sha" &&
event.player != player &&
player.countCards("h", "sha") > 0 &&
event.targets.includes(player) == false
);
},
direct: true,
content: function () {
"step 0";
var effect = 0;
for (var i = 0; i < trigger.targets.length; i++) {
effect += get.effect(trigger.targets[i], trigger.card, trigger.player, player);
}
var str = "是否弃置一张杀令" + get.translation(trigger.player);
if (trigger.targets && trigger.targets.length) {
str += "对" + get.translation(trigger.targets);
}
str += "的" + get.translation(trigger.card) + "失效?";
player.chooseToDiscard("h", { name: "sha" }, str).ai = function (card) {
if (effect < 0) {
return 9 - get.value(card);
2018-04-17 07:32:43 +00:00
}
return -1;
2024-04-15 18:10:02 +00:00
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
2018-04-17 07:32:43 +00:00
trigger.cancel();
2024-04-15 18:10:02 +00:00
player.logSkill("xiaozhan");
2018-04-17 07:32:43 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 1.2,
expose: 0.1,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
chuanyue: {
enable: "phaseUse",
usable: 1,
filter: function (event, player) {
return player.countCards("h") > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
selectCard: 2,
filterCard: true,
discard: false,
prepare: "throw",
filterTarget: function (card, player, target) {
return lib.filter.targetEnabled({ name: "juedou" }, player, target);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
check: function (card) {
return Math.max(7 - get.value(card), 7 - get.useful(card));
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
player.useCard({ name: "juedou" }, targets, cards).animate = false;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
result: {
target: function (player, target) {
return get.effect(target, { name: "juedou" }, player, target);
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
order: 8,
},
},
dangping: {
trigger: { source: "damageAfter" },
direct: true,
filter: function (event, player) {
return (
event.parent.name != "dangping" &&
!player.hasSkill("dangping2") &&
player.countCards("he") > 0
);
},
content: function () {
"step 0";
var next = player.chooseCardTarget({
position: "he",
filterTarget: function (card, player, target) {
return (
player != target &&
trigger.player != target &&
get.distance(trigger.player, target) <= 1
);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterCard: lib.filter.cardDiscardable,
ai1: function (card) {
return get.unuseful(card) + 9;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai2: function (target) {
return get.damageEffect(target, player, player);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
prompt: get.prompt("dangping"),
2018-04-17 07:32:43 +00:00
});
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
2018-04-17 07:32:43 +00:00
player.discard(result.cards);
2024-04-15 18:10:02 +00:00
player.logSkill("dangping", result.targets);
player.addTempSkill("dangping2");
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (result.bool) {
2018-04-17 07:32:43 +00:00
result.targets[0].damage();
}
2024-04-15 18:10:02 +00:00
},
},
dangping2: {},
duishi: {
enable: "phaseUse",
filter: function (event, player) {
return player.countCards("h") > 0 && !player.hasSkill("duishi2");
},
filterTarget: function (card, player, target) {
return player != target && target.countCards("h") > 0 && !target.hasSkill("duishi3");
},
filterCard: true,
check: function (card) {
return 8 - get.value(card);
},
content: function () {
"step 0";
var suit = get.suit(cards[0]);
target.chooseToDiscard(
{ suit: suit },
"h",
"对诗:弃置一张" +
get.translation(suit) +
"牌,或令" +
get.translation(player) +
"获得你一张牌"
).ai = function (card) {
if (get.attitude(target, player) > 0) return 0;
return 9 - get.value(card);
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
target.addTempSkill("duishi3");
} else {
player.gainPlayerCard(target, "he", true);
player.addTempSkill("duishi2");
}
},
ai: {
order: 9,
threaten: 1.5,
result: {
target: -2,
player: 0.5,
},
expose: 0.2,
},
},
duishi2: {},
duishi3: {},
guisi: {
trigger: { target: "shaBefore" },
popup: false,
direct: true,
filter: function (event, player) {
return player.countCards("h");
},
content: function () {
"step 0";
player.chooseCard(
"是否交给" + get.translation(trigger.player) + "一张牌并取消此杀?"
).ai = function (card) {
if (get.attitude(player, trigger.player) > 0) {
return 9 - get.value(card);
}
if (player.countCards("h", { name: "shan" })) return -1;
return 7 - get.value(card);
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.logSkill("guisi");
trigger.player.gain(result.cards, player);
player.$give(result.cards, trigger.player);
2018-04-17 07:32:43 +00:00
trigger.cancel();
}
},
},
2024-04-15 18:10:02 +00:00
lianwu: {
mod: {
selectTarget: function (card, player, range) {
if (card.name == "sha" && range[1] != -1) range[1]++;
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
trigger: { player: "shaBegin" },
forced: true,
filter: function (event, player) {
return event.card && get.color(event.card) == "red";
},
content: function () {
trigger.directHit = true;
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
mingfu: {
enable: "phaseUse",
usable: 1,
filter: function (event, player) {
return player.countCards("he", { suit: "club" }) > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
position: "he",
filterCard: { suit: "club" },
discard: false,
prepare: "throw",
filterTarget: function (card, player, target) {
return lib.filter.targetEnabled({ name: "guiyoujie" }, player, target);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
check: function (card) {
if (card.name == "du") return 20;
return Math.max(7 - get.value(card), 7 - get.useful(card));
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
target.addJudge("guiyoujie", cards);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
result: {
target: function (player, target) {
return get.effect(target, { name: "guiyoujie" }, player, target);
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
order: 8,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
mufeng_old: {
init: function (player) {
player.storage.mufeng = 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
group: ["mufeng_gain", "mufeng_lose"],
mark: true,
intro: {
content: function (storage) {
if (storage > 0) {
return "防御距离+" + storage;
} else if (storage < 0) {
return "防御距离" + storage;
} else {
return "无距离变化";
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
subSkill: {
lose: {
trigger: { global: "dieAfter" },
forced: true,
filter: function (event, player) {
return player.storage.mufeng > game.players.length / 2;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
player.storage.mufeng = 0;
2018-04-17 07:32:43 +00:00
player.updateMarks();
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
gain: {
trigger: { player: "loseEnd" },
forced: true,
filter: function (event, player) {
return _status.currentPhase != player;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
2018-04-17 07:32:43 +00:00
player.storage.mufeng++;
2024-04-15 18:10:02 +00:00
if (player.storage.mufeng > game.players.length / 2) {
player.storage.mufeng = 0;
2018-04-17 07:32:43 +00:00
}
player.updateMarks();
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
mod: {
globalTo: function (from, to, distance) {
if (typeof to.storage.mufeng == "number") {
return distance + to.storage.mufeng;
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
mufeng: {
trigger: { player: "phaseEnd" },
frequent: true,
filter: function (event, player) {
return player.hasSkill("mufeng_used");
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
2019-06-07 03:46:13 +00:00
player.discoverCard();
},
2024-04-15 18:10:02 +00:00
subSkill: {
used: {},
count: {
trigger: { player: "useCard" },
silent: true,
filter: function (event, player) {
return _status.currentPhase == player && get.type(event.card) == "basic";
2019-06-07 03:46:13 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
player.addTempSkill("mufeng_used");
},
},
2019-06-07 03:46:13 +00:00
},
2024-04-15 18:10:02 +00:00
group: "mufeng_count",
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
mufeng_old2: {
trigger: { global: "phaseEnd" },
filter: function (event, player) {
return (
!player.hasSkill("mufeng2") &&
event.player != player &&
Math.min(5, event.player.countCards("h")) > player.countCards("h")
);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
player.draw(Math.min(5, trigger.player.countCards("h")) - player.countCards("h"));
player.addTempSkill("mufeng2", { player: "phaseBegin" });
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
mufeng2: {},
jiying: {
mod: {
targetInRange: function (card) {
if (card.name == "sha") return true;
},
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
minjing: {
trigger: { player: "damageBegin" },
forced: true,
filter: function (event, player) {
if (player.getEquip(2)) return false;
return lib.skill.guangshatianyi.filter(event, player);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
2018-04-17 07:32:43 +00:00
trigger.num--;
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 0.8,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
touxi: {
trigger: { global: "phaseEnd" },
check: function (event, player) {
if (get.damageEffect(event.player, player, player, "thunder") > 0) {
if (
get.is.altered("touxi") &&
get.attitude(player, event.player) < 0 &&
player.countCards("he")
) {
if (event.player.hp == 1 && player.hp > 1) {
2018-04-17 07:32:43 +00:00
return true;
}
2024-04-15 18:10:02 +00:00
} else {
2018-04-17 07:32:43 +00:00
return true;
}
}
return false;
},
2019-06-07 03:46:13 +00:00
// alter:true,
2024-04-15 18:10:02 +00:00
filter: function (event, player) {
return event.player != player && !player.hasSkill("touxi2") && event.player.isAlive();
},
logTarget: "player",
content: function () {
"step 0";
player.judge(function (card) {
if (get.color(card) == "black") return 1;
2018-04-17 07:32:43 +00:00
return -1;
});
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
trigger.player.damage("thunder");
player.addSkill("touxi2");
2018-04-17 07:32:43 +00:00
event.finish();
2024-04-15 18:10:02 +00:00
} else {
if (player.countCards("he")) {
var att = get.attitude(trigger.player, player);
trigger.player[get.is.altered("touxi") ? "gainPlayerCard" : "discardPlayerCard"](
player,
"he",
function (button) {
if (att > 0) return 0;
return get.buttonValue(button);
}
);
2018-04-17 07:32:43 +00:00
}
}
},
2024-04-15 18:10:02 +00:00
ai: {
expose: 0.3,
threaten: 1.2,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
touxi2: {
trigger: { player: "phaseBegin" },
forced: true,
popup: false,
content: function () {
player.removeSkill("touxi2");
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
nlianji: {
audio: "lianji",
enable: "phaseUse",
usable: 1,
filterTarget: function (card, player, target) {
if (player == target) return false;
if (!ui.selected.targets.length) return target.countCards("h") > 0;
2020-03-19 13:24:54 +00:00
return ui.selected.targets[0].canCompare(target);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
selectTarget: 2,
multitarget: true,
multiline: true,
filter: function (event, player) {
return player.countCards("h") > 0;
},
prepare: "throw",
discard: false,
filterCard: true,
check: function (card) {
return 6 - get.value(card);
},
content: function () {
"step 0";
if (targets[0].canCompare(targets[1])) {
2018-04-17 07:32:43 +00:00
targets[0].chooseToCompare(targets[1]);
2024-04-15 18:10:02 +00:00
} else {
2018-04-17 07:32:43 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
targets[0].gain(cards, "log");
2018-04-17 07:32:43 +00:00
targets[0].$gain2(cards);
targets[1].damage(targets[0]);
2024-04-15 18:10:02 +00:00
} else if (!result.tie) {
targets[1].gain(cards, "log");
2018-04-17 07:32:43 +00:00
targets[1].$gain2(cards);
targets[0].damage(targets[1]);
}
},
2024-04-15 18:10:02 +00:00
ai: {
expose: 0.3,
threaten: 2,
order: 9,
result: {
target: -1,
},
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
lianji2: {
group: ["lianji3", "lianji4"],
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
lianji3: {
trigger: { player: "shaHit" },
forced: true,
popup: false,
content: function () {
player.storage.lianji2 = true;
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
lianji4: {
trigger: { player: "shaAfter" },
forced: true,
popup: false,
content: function () {
if (!player.storage.lianji2) {
player.damage("thunder", player.storage.lianji);
2018-04-17 07:32:43 +00:00
}
delete player.storage.lianji;
delete player.storage.lianji2;
2024-04-15 18:10:02 +00:00
player.removeSkill("lianji2");
},
},
yinmo: {},
miedao: {
group: ["miedao1", "miedao2"],
ai: {
threaten: 1.4,
},
},
miedao1: {
trigger: { player: "phaseDrawBegin" },
forced: true,
filter: function (event, player) {
return player.hp < player.maxHp;
},
content: function () {
trigger.num += player.maxHp - player.hp;
},
},
miedao2: {
trigger: { player: "phaseDiscardBegin" },
forced: true,
filter: function (event, player) {
return player.hp < player.maxHp;
},
content: function () {
player.chooseToDiscard(player.maxHp - player.hp, "he", true);
},
},
milesxiehun: {
trigger: { player: "phaseEnd" },
forced: true,
content: function () {
"step 0";
event.num = 0;
event.targets = game.filterPlayer();
2018-04-17 07:32:43 +00:00
event.targets.remove(player);
2024-04-15 18:10:02 +00:00
for (var i = 0; i < event.targets.length; i++) {
2018-04-17 07:32:43 +00:00
event.targets.sort(lib.sort.random);
}
2024-04-15 18:10:02 +00:00
event.targets.splice(Math.max(1, player.maxHp - player.hp));
2018-04-17 07:32:43 +00:00
//event.targets.unshift(player);
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (event.num < event.targets.length) {
var target = event.targets[event.num];
target.discard(target.getCards("he").randomGet());
2018-04-17 07:32:43 +00:00
event.num++;
event.redo();
}
},
},
2024-04-15 18:10:02 +00:00
liaochen: {
trigger: { player: "phaseEnd" },
forced: true,
content: function () {
"step 0";
event.num = 0;
event.targets = game.filterPlayer();
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (event.num < event.targets.length) {
if (event.targets[event.num].countCards("he")) {
event.targets[event.num].chooseToDiscard(true, "he");
2018-04-17 07:32:43 +00:00
}
event.num++;
event.redo();
}
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
aojian: {
enable: "phaseUse",
usable: 1,
filter: function (event, player) {
return player.hp < player.maxHp;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterTarget: function (card, player, target) {
return player != target && get.distance(player, target, "attack") <= 1;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
selectTarget: function () {
2018-04-17 07:32:43 +00:00
return ui.selected.cards.length;
},
2024-04-15 18:10:02 +00:00
selectCard: function () {
var player = _status.currentPhase;
return [1, Math.min(game.players.length - 1, player.maxHp - player.hp)];
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterCard: true,
check: function (card) {
if (ui.selected.cards.length == 0) {
return 8 - get.value(card);
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
return 5 - get.value(card);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
2018-04-17 07:32:43 +00:00
target.damage();
2024-04-15 18:31:36 +00:00
"step 1";
2018-04-17 07:32:43 +00:00
// target.draw();
},
2024-04-15 18:10:02 +00:00
ai: {
order: 9,
result: {
target: function (player, target) {
return get.damageEffect(target, player, target);
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
threaten: function (player, target) {
if (target.hp == 1) return 2;
if (target.hp == 2) return 1.5;
2018-04-17 07:32:43 +00:00
return 0.5;
},
2024-04-15 18:10:02 +00:00
maixie: true,
effect: {
target: function (card, player, target) {
if (get.tag(card, "damage")) {
if (target.hp == target.maxHp) return [0, 1];
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
if (get.tag(card, "recover") && player.hp >= player.maxHp - 1) return [0, 0];
},
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
moyan: {
enable: "phaseUse",
usable: 1,
filter: function (event, player) {
return player.hp < player.maxHp && player.countCards("h", { color: "red" }) > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterTarget: function (card, player, target) {
return player != target; //&&get.distance(player,target,'attack')<=1;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
selectTarget: function () {
2018-04-17 07:32:43 +00:00
return ui.selected.cards.length;
},
2024-04-15 18:10:02 +00:00
selectCard: function () {
var player = _status.currentPhase;
return [1, Math.min(game.players.length - 1, player.maxHp - player.hp)];
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterCard: function (card) {
return get.color(card) == "red";
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
check: function (card) {
if (ui.selected.cards.length == 0) {
return 8 - get.value(card);
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
return 6 - get.value(card);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
line: "fire",
content: function () {
"step 0";
target.damage("fire");
2024-04-15 18:31:36 +00:00
"step 1";
2018-04-17 07:32:43 +00:00
// target.draw();
},
2024-04-15 18:10:02 +00:00
ai: {
order: 9,
result: {
target: function (player, target) {
return get.damageEffect(target, player, target, "fire");
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
threaten: function (player, target) {
if (target.hp == 1) return 2;
if (target.hp == 2) return 1.5;
2018-04-17 07:32:43 +00:00
return 0.5;
},
2024-04-15 18:10:02 +00:00
maixie: true,
effect: {
target: function (card, player, target) {
if (get.tag(card, "damage")) {
if (target.hp == target.maxHp) return [0, 1];
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
if (get.tag(card, "recover") && player.hp >= player.maxHp - 1) return [0, 0];
},
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
shejie: {
trigger: { player: "damageEnd" },
priority: 9,
check: function (event, player) {
return get.attitude(player, event.source) < 0;
},
filter: function (event) {
return event && event.source;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
trigger.source.addSkill("shejie2");
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 0.4,
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
shejie2: {
unique: true,
trigger: { player: "phaseBegin" },
forced: true,
priority: 10,
mod: {
cardEnabled: function () {
2018-04-17 07:32:43 +00:00
return false;
},
2024-04-15 18:10:02 +00:00
cardUsable: function () {
2018-04-17 07:32:43 +00:00
return false;
},
2024-04-15 18:10:02 +00:00
cardRespondable: function () {
2018-04-17 07:32:43 +00:00
return false;
},
2024-04-15 18:10:02 +00:00
cardSavable: function () {
2018-04-17 07:32:43 +00:00
return false;
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
player.removeSkill("shejie2");
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
guiyin: {
trigger: { player: "phaseDiscardEnd" },
frequent: true,
filter: function (event, player) {
return event.cards && event.cards.length > 1;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
2018-04-17 07:32:43 +00:00
player.draw(2);
},
},
2024-04-15 18:10:02 +00:00
wangchen: {
trigger: { player: "phaseDiscardEnd" },
direct: true,
filter: function (event, player) {
if (event.cards) {
2018-04-17 07:32:43 +00:00
// if(!get.is.altered('wangchen')) return true;
2024-04-15 18:10:02 +00:00
for (var i = 0; i < event.cards.length; i++) {
if (get.type(event.cards[i]) == "basic") return true;
2018-04-17 07:32:43 +00:00
}
}
return false;
},
2019-06-07 03:46:13 +00:00
// alter:true,
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
player.chooseTarget(get.prompt("wangchen"), function (card, player, target) {
return target != player;
}).ai = function (target) {
2018-04-17 07:32:43 +00:00
// if(get.is.altered('wangchen')){
// return -get.attitude(player,target)/Math.sqrt(target.hp);
// }
2024-04-15 18:10:02 +00:00
if (target.hasSkillTag("noturn")) return 0;
return get.attitude(player, target) * (target.isTurnedOver() ? 1 : -1);
2018-04-17 07:32:43 +00:00
// return -get.attitude(player,target)*get.threaten(target,player);
2024-04-15 18:10:02 +00:00
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
var target = result.targets[0];
player.logSkill("wangchen", target);
2018-04-17 07:32:43 +00:00
// target.out('wangchen');
// if(!player.storage.wangchen){
// player.storage.wangchen=[];
// }
// player.storage.wangchen.push(target);
target.turnOver();
2024-04-15 18:10:02 +00:00
if (get.is.altered("wangchen")) {
2018-04-17 07:32:43 +00:00
target.changeHujia();
}
}
},
// group:'wangchen_in',
// onremove:function(player){
// for(var i=0;i<player.storage.wangchen.length;i++){
// player.storage.wangchen[i].in('wangchen');
// }
// delete player.storage.wangchen;
// },
// subSkill:{
// in:{
// trigger:{player:['phaseBegin','dieBegin']},
// direct:true,
// filter:function(event,player){
// return Array.isArray(player.storage.wangchen);
// },
// content:function(){
// for(var i=0;i<player.storage.wangchen.length;i++){
// player.storage.wangchen[i].in('wangchen');
// }
// }
// }
// },
2024-04-15 18:10:02 +00:00
ai: {
expose: 0.5,
threaten: 2,
},
},
wangchen2: {
trigger: { player: "phaseBefore" },
forced: true,
popup: false,
filter: function (event, player) {
var prev = player.previous;
if (prev.storage.wangchen == prev) {
2018-04-17 07:32:43 +00:00
return true;
}
},
2024-04-15 18:10:02 +00:00
content: function () {
2018-04-17 07:32:43 +00:00
player.previous.out();
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
wangchen3: {
trigger: { player: "dieBegin" },
forced: true,
popup: false,
filter: function (event, player) {
return player.storage.wangchen && player.storage.wangchen.isOut();
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
2018-04-17 07:32:43 +00:00
player.storage.wangchen.out();
2024-04-15 18:10:02 +00:00
},
},
yihua: {
trigger: { target: "useCardToBefore" },
popup: false,
direct: true,
filter: function (event, player) {
if (event.addedTargets) return false;
2018-04-17 07:32:43 +00:00
// return event.card&&get.color(event.card)=='red'&&event.player!=player;
2024-04-15 18:10:02 +00:00
return event.targets.length == 1 && event.player != player && player.countCards("h") >= 2;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
var next = player.chooseToDiscard(get.prompt("yihua", trigger.player), 2);
next.ai = function (card) {
if (get.effect(player, trigger.card) < 0) {
if (card.name == "liuxinghuoyu") return 7 - get.value(card);
return 5 - get.value(card);
2018-04-17 07:32:43 +00:00
}
return 0;
};
2024-04-15 18:10:02 +00:00
next.prompt2 =
"反弹" + get.translation(trigger.player) + "的" + get.translation(trigger.card);
next.logSkill = ["yihua", trigger.player];
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
2018-04-17 07:32:43 +00:00
// player.discard(result.cards);
2024-04-15 18:10:02 +00:00
trigger.target = trigger.player;
trigger.player = player;
2018-04-17 07:32:43 +00:00
trigger.untrigger();
2024-04-15 18:10:02 +00:00
trigger.trigger("useCardToBefore");
2018-04-17 07:32:43 +00:00
}
// "step 2"
// if(result.bool){
// trigger.target=result.targets[0];
// trigger.untrigger;
// trigger.trigger('shaBefore');
// game.delay();
// }
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: function (player, target) {
if (target.countCards("h") <= 2) {
2018-04-17 07:32:43 +00:00
return 2;
}
2024-04-15 18:10:02 +00:00
return 2 / (target.countCards("h") - 1);
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
youyin: {
trigger: { global: "discardAfter" },
filter: function (event, player) {
if (event.player == player) return false;
if (player.countCards("h") >= 5) return false;
for (var i = 0; i < event.cards.length; i++) {
if (get.type(event.cards[i]) != "basic") {
2018-04-17 07:32:43 +00:00
return true;
}
}
return false;
},
2024-04-15 18:10:02 +00:00
frequent: true,
content: function () {
"step 0";
if (trigger.delay == false) game.delay();
2024-04-15 18:31:36 +00:00
"step 1";
2018-04-17 07:32:43 +00:00
player.draw();
},
},
2024-04-15 18:10:02 +00:00
anlianying: {
trigger: { player: "loseEnd" },
frequent: true,
filter: function (event, player) {
if (player.countCards("h")) return false;
for (var i = 0; i < event.cards.length; i++) {
if (event.cards[i].original == "h") return true;
2018-04-17 07:32:43 +00:00
}
return false;
},
2024-04-15 18:10:02 +00:00
content: function () {
2018-04-17 07:32:43 +00:00
player.draw(2);
},
2024-04-15 18:10:02 +00:00
ai: {
effect: {
target: function (card) {
if (card.name == "guohe" || card.name == "liuxinghuoyu") return 0.5;
},
},
noh: true,
},
},
miejing: {
init: function (player) {
player.storage.miejing = false;
},
enable: "phaseUse",
filter: function (event, player) {
//if(player.maxHp<=1) return false;
return !player.storage.miejing;
},
intro: {
content: "limited",
},
mark: true,
line: "thunder",
filterTarget: function (card, player, target) {
return player != target;
},
selectTarget: -1,
delay: false,
contentBefore: function () {
"step 0";
game.delayx();
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
var cards = player.getCards("hej");
for (var i = 0; i < cards.length; i++) {
if (get.color(cards[i]) != "black") {
cards.splice(i, 1);
i--;
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
}
cards.sort(lib.sort.random);
player.discard(cards);
player.storage.miejing = true;
player.unmarkSkill("miejing");
},
content: function () {
target.damage("thunder");
},
},
zhanlu: {
enable: "phaseUse",
filterCard: function (card) {
var suit = get.suit(card);
return suit == "spade";
},
position: "he",
usable: 1,
filter: function (event, player) {
return player.countCards("he", { suit: "spade" }) > 0;
},
check: function (card) {
return 10 - get.value(card);
},
filterTarget: function (card, player, target) {
if (target.hp >= target.maxHp) return false;
return true;
},
selectTarget: [1, 3],
content: function () {
target.recover();
},
ai: {
order: 10,
result: {
target: function (player, target) {
if (player == target && player.countCards("h") > player.hp) return 20;
return get.recoverEffect(target, player, target);
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
threaten: 2,
},
},
huopu: {
enable: "phaseUse",
usable: 1,
position: "he",
filterCard: function (card) {
return get.suit(card) == "heart";
},
viewAs: { name: "liuxinghuoyu" },
viewAsFilter: function (player) {
if (!player.countCards("he", { suit: "heart" })) return false;
},
prompt: "将一张红桃手牌当作流星火羽使用",
check: function (card) {
return 6 - get.value(card);
},
ai: {
threaten: 1.4,
order: 9,
},
},
rexue: {
trigger: { global: "phaseBegin" },
direct: true,
filter: function (event, player) {
return (
lib.filter.targetEnabled({ name: "sha" }, player, event.player) &&
player.hasSha(null, true)
);
},
content: function () {
var next = player.chooseToUse(
{ name: "sha" },
"热血:是否对" + get.translation(trigger.player) + "使用一张杀",
trigger.player,
-1
);
next.logSkill = "rexue";
next.oncard = function () {
player.draw();
};
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
shengshou: {
enable: "phaseUse",
filterCard: function (card) {
return get.color(card) == "black";
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
viewAs: { name: "caoyao" },
prompt: "将一张黑色手牌当作草药使用",
check: function (card) {
return 6 - get.value(card);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 1.6,
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
},
huanjian: {
enable: "phaseUse",
filterCard: function (card) {
return get.color(card) == "black";
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
viewAs: { name: "bingpotong" },
position: "he",
filter: function (event, player) {
return player.countCards("h", { color: "black" }) > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
viewAsFilter: function (player) {
if (!player.countCards("he", { color: "black" })) return false;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
prompt: "将一张黑色牌当作冰魄针使用",
check: function (card) {
return 5 - get.value(card);
},
ai: {
threaten: 1.1,
},
},
benlei: {
enable: "phaseUse",
viewAs: { name: "jingleishan", nature: "thunder" },
filterCard: function (card, player) {
2018-04-17 07:32:43 +00:00
return true;
},
2024-04-15 18:10:02 +00:00
selectCard: 3,
position: "he",
prompt: "将三张牌当作惊雷闪使用",
check: function (card) {
return 4 - get.value(card);
},
group: "benlei2",
ai: {
basic: {
order: 10,
},
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
benlei2: {
trigger: { source: "damageAfter" },
filter: function (event, player) {
return event.hasNature("thunder") && player.hp < player.maxHp;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
forced: true,
content: function () {
2018-04-17 07:32:43 +00:00
player.recover();
},
},
2024-04-15 18:10:02 +00:00
moyu: {
trigger: { source: "dieAfter" },
filter: function (event, player) {
return player.hp < player.maxHp;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
frequent: true,
content: function () {
player.recover(player.maxHp - player.hp);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
threaten: 1.2,
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
susheng: {
trigger: { global: "dieBefore" },
direct: true,
2019-06-07 03:46:13 +00:00
// alter:true,
2024-04-15 18:10:02 +00:00
filter: function (event, player) {
if (player.hasSkill("susheng2")) return false;
if (get.is.altered("susheng")) {
return player.countCards("h", { color: "red" }) > 0;
} else {
return player.countCards("h") > 0;
}
},
content: function () {
"step 0";
var att = get.attitude(player, trigger.player);
var nh = player.countCards("h");
2018-04-17 07:32:43 +00:00
var next;
2024-04-15 18:10:02 +00:00
if (get.is.altered("susheng")) {
next = player.chooseToDiscard(get.prompt("susheng", trigger.player), {
color: "red",
});
} else {
next = player.chooseToDiscard(get.prompt("susheng", trigger.player));
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
next.logSkill = ["susheng", trigger.player];
next.ai = function (card) {
if (att > 3 || (att > 1 && nh > 2)) {
2018-04-17 07:32:43 +00:00
return get.unuseful2(card);
}
return 0;
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
2018-04-17 07:32:43 +00:00
// player.chooseToDiscard('h',true);
trigger.cancel();
2024-04-15 18:10:02 +00:00
trigger.player.hp = 1;
if (trigger.player.maxHp < 1) trigger.player.maxHp = 1;
2018-04-17 07:32:43 +00:00
trigger.player.update();
2024-04-15 18:10:02 +00:00
player.addTempSkill("susheng2");
2018-04-17 07:32:43 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 2,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
susheng2: {},
kunlunjing: {
unique: true,
2019-06-07 03:46:13 +00:00
// alter:true,
2024-04-15 18:10:02 +00:00
group: ["kunlunjing1", "kunlunjing2"],
video: function (player, data) {
for (var i in data) {
var current = game.playerMap[i];
current.node.handcards1.innerHTML = "";
current.node.handcards2.innerHTML = "";
current.node.equips.innerHTML = "";
current.node.judges.innerHTML = "";
2018-04-17 07:32:43 +00:00
current.directgain(get.infoCards(data[i].h));
2024-04-15 18:10:02 +00:00
var es = get.infoCards(data[i].e);
for (var j = 0; j < es.length; j++) {
2018-04-17 07:32:43 +00:00
current.$equip(es[j]);
}
2024-04-15 18:10:02 +00:00
var js = get.infoCards(data[i].j);
for (var j = 0; j < js.length; j++) {
2018-04-17 07:32:43 +00:00
current.node.judges.appendChild(js[j]);
}
}
},
},
2024-04-15 18:10:02 +00:00
kunlunjing1: {
trigger: { player: "phaseBegin" },
priority: 10,
filter: function (event, player) {
if (!player.storage.kunlunjing) return false;
return player.hp < player.storage.kunlunjing2;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
onremove: ["kunlunjing", "kunlunjing2"],
check: function (event, player) {
if (get.is.altered("kunlunjing")) return false;
var storage = player.storage.kunlunjing;
var num = 0;
for (var i = 0; i < storage.length; i++) {
if (game.players.includes(storage[i].player)) {
var att = get.attitude(player, storage[i].player);
var num2 =
storage[i].value -
storage[i].player.countCards("he") +
storage[i].player.countCards("j");
if (att > 0) {
num += num2;
} else if (att < 0) {
num -= num2;
2018-04-17 07:32:43 +00:00
}
}
}
2024-04-15 18:10:02 +00:00
return num > Math.min(2, game.players.length / 2);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
2018-04-17 07:32:43 +00:00
game.delay(0.5);
2024-04-15 18:31:36 +00:00
"step 1";
2018-04-17 07:32:43 +00:00
game.animate.window(1);
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
var storage = event.player.storage.kunlunjing;
for (var i = 0; i < storage.length; i++) {
var player = storage[i].player;
if (player.isAlive()) {
var cards = player.getCards("hej");
for (var j = 0; j < cards.length; j++) {
2018-04-17 07:32:43 +00:00
cards[j].discard();
}
player.removeEquipTrigger();
}
}
2024-04-15 18:31:36 +00:00
"step 3";
2024-04-15 18:10:02 +00:00
var storage = event.player.storage.kunlunjing;
2018-04-17 07:32:43 +00:00
var player;
2024-04-15 18:10:02 +00:00
var i, j;
for (i = 0; i < storage.length; i++) {
player = storage[i].player;
if (player.isAlive()) {
for (j = 0; j < storage[i].handcards1.length; j++) {
if (
storage[i].handcards1[j].parentNode == ui.discardPile ||
storage[i].handcards1[j].parentNode == ui.cardPile
) {
2018-04-17 07:32:43 +00:00
player.node.handcards1.appendChild(storage[i].handcards1[j]);
2024-04-15 18:10:02 +00:00
} else {
player.node.handcards1.appendChild(
game.createCard(storage[i].handcards1[j])
);
2018-04-17 07:32:43 +00:00
}
}
2024-04-15 18:10:02 +00:00
for (j = 0; j < storage[i].handcards2.length; j++) {
if (
storage[i].handcards2[j].parentNode == ui.discardPile ||
storage[i].handcards2[j].parentNode == ui.cardPile
) {
2018-04-17 07:32:43 +00:00
player.node.handcards2.appendChild(storage[i].handcards2[j]);
2024-04-15 18:10:02 +00:00
} else {
player.node.handcards2.appendChild(
game.createCard(storage[i].handcards2[j])
);
2018-04-17 07:32:43 +00:00
}
}
2024-04-15 18:10:02 +00:00
for (j = 0; j < storage[i].equips.length; j++) {
if (
storage[i].equips[j].parentNode == ui.discardPile ||
storage[i].equips[j].parentNode == ui.cardPile
) {
storage[i].equips[j].style.transform = "";
2018-04-17 07:32:43 +00:00
player.$equip(storage[i].equips[j]);
2024-04-15 18:10:02 +00:00
} else {
2018-04-17 07:32:43 +00:00
player.$equip(game.createCard(storage[i].equips[j]));
}
}
2024-04-15 18:10:02 +00:00
for (j = 0; j < storage[i].judges.length; j++) {
if (
storage[i].judges[j].parentNode == ui.discardPile ||
storage[i].judges[j].parentNode == ui.cardPile
) {
storage[i].judges[j].style.transform = "";
storage[i].judges[j].viewAs = storage[i].viewAs[j];
if (
storage[i].judges[j].viewAs &&
storage[i].judges[j].viewAs != storage[i].judges[j].name &&
storage[i].judges[j].classList.contains("fullskin")
) {
storage[i].judges[j].classList.add("fakejudge");
storage[i].judges[j].node.background.innerHTML =
lib.translate[storage[i].judges[j].viewAs + "_bg"] ||
get.translation(storage[i].judges[j].viewAs)[0];
2018-04-17 07:32:43 +00:00
}
player.node.judges.appendChild(storage[i].judges[j]);
}
}
player.update();
}
}
2024-04-15 18:10:02 +00:00
var data = {};
for (var i = 0; i < game.players.length; i++) {
data[game.players[i].dataset.position] = {
h: get.cardsInfo(game.players[i].getCards("h")),
e: get.cardsInfo(game.players[i].getCards("e")),
j: get.cardsInfo(game.players[i].getCards("j")),
};
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
game.addVideo("skill", event.player, ["kunlunjing", data]);
2018-04-17 07:32:43 +00:00
game.animate.window(2);
ui.updatehl();
2024-04-15 18:31:36 +00:00
"step 4";
2024-04-15 18:10:02 +00:00
if (get.is.altered("kunlunjing")) {
2018-04-17 07:32:43 +00:00
player.loseHp();
}
2024-04-15 18:10:02 +00:00
},
},
kunlunjing2: {
trigger: { player: "phaseAfter" },
silent: true,
content: function () {
var handcards1, handcards2, judges, equips, viewAs, i, j;
player.storage.kunlunjing = [];
player.storage.kunlunjing2 = player.hp;
for (i = 0; i < game.players.length; i++) {
viewAs = [];
handcards1 = [];
handcards2 = [];
judges = [];
equips = [];
for (j = 0; j < game.players[i].node.handcards1.childNodes.length; j++)
2018-04-17 07:32:43 +00:00
handcards1.push(game.players[i].node.handcards1.childNodes[j]);
2024-04-15 18:10:02 +00:00
for (j = 0; j < game.players[i].node.handcards2.childNodes.length; j++)
2018-04-17 07:32:43 +00:00
handcards2.push(game.players[i].node.handcards2.childNodes[j]);
2024-04-15 18:10:02 +00:00
for (j = 0; j < game.players[i].node.judges.childNodes.length; j++) {
2018-04-17 07:32:43 +00:00
viewAs.push(game.players[i].node.judges.childNodes[j].viewAs);
judges.push(game.players[i].node.judges.childNodes[j]);
}
2024-04-15 18:10:02 +00:00
for (j = 0; j < game.players[i].node.equips.childNodes.length; j++)
2018-04-17 07:32:43 +00:00
equips.push(game.players[i].node.equips.childNodes[j]);
2018-04-17 07:32:43 +00:00
player.storage.kunlunjing.push({
2024-04-15 18:10:02 +00:00
player: game.players[i],
handcards1: handcards1,
handcards2: handcards2,
judges: judges,
equips: equips,
viewAs: viewAs,
value: handcards1.length + handcards2.length + equips.length - judges.length,
2018-04-17 07:32:43 +00:00
});
}
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
oldliaoyuan: {
enable: "phaseUse",
usable: 1,
filter: function (event, player) {
return player.countCards("h") > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterTarget: function (card, player, target) {
return player != target;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterCard: function (card, player) {
if (ui.selected.cards.length) {
return get.suit(card) == get.suit(ui.selected.cards[0]);
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
var cards = player.getCards("h");
for (var i = 0; i < cards.length; i++) {
if (card != cards[i]) {
if (get.suit(card) == get.suit(cards[i])) return true;
2018-04-17 07:32:43 +00:00
}
}
return false;
},
2024-04-15 18:10:02 +00:00
prepare: "throw",
2018-04-17 07:32:43 +00:00
// selectTarget:[1,2],
2024-04-15 18:10:02 +00:00
selectCard: [2, 2],
check: function (card) {
return 6 - get.useful(card);
},
prompt: "弃置两张相同花色的手牌,选择一名角色弃置其一张牌,并视为对其使用一张火杀",
content: function () {
"step 0";
if (target.countCards("he")) {
player.discardPlayerCard(target, "he");
}
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
player.useCard(
{ name: "sha", nature: "fire" },
target,
false,
"oldliaoyuan"
).animate = false;
},
ai: {
order: 3,
result: {
target: function (player, target) {
return get.effect(target, { name: "sha", nature: "fire" }, player, target) - 1;
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
expose: 0.2,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
oldliaoyuan2: {
enable: "phaseUse",
usable: 1,
filter: function (event, player) {
return player.countCards("h") > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterTarget: function (card, player, target) {
return player != target;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterCard: function (card, player) {
if (ui.selected.cards.length) {
return get.suit(card) == get.suit(ui.selected.cards[0]);
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
var cards = player.getCards("h");
for (var i = 0; i < cards.length; i++) {
if (card != cards[i]) {
if (get.suit(card) == get.suit(cards[i])) return true;
2018-04-17 07:32:43 +00:00
}
}
return false;
},
2024-04-15 18:10:02 +00:00
delay: false,
discard: false,
selectCard: [2, 2],
check: function (card) {
return 7 - get.value(card);
},
content: function () {
"step 0";
player.useCard({ name: "sha" }, [cards[0]], target, false, "liaoyuan");
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
player.useCard({ name: "sha" }, [cards[1]], target, false, "liaoyuan");
},
ai: {
order: 6,
result: {
target: function (player, target) {
return get.effect(target, { name: "sha" }, player, target) * 2;
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
expose: 0.2,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
shehun: {
enable: "phaseUse",
usable: 1,
filter: function (event, player) {
return player.countCards("h") > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterTarget: function (card, player, target) {
return player != target && target.countCards("he") > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterCard: function (card) {
var suit = get.suit(card);
for (var i = 0; i < ui.selected.cards.length; i++) {
if (get.suit(ui.selected.cards[i]) == suit) return false;
2018-04-17 07:32:43 +00:00
}
return true;
},
2024-04-15 18:10:02 +00:00
complexCard: true,
selectCard: [1, 4],
check: function (card) {
return 7 - get.value(card);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
var suits = [];
event.suits = suits;
for (var i = 0; i < cards.length; i++) {
2018-04-17 07:32:43 +00:00
suits.push(get.suit(cards[i]));
}
2024-04-15 18:10:02 +00:00
var hs = target.getCards("he");
var hss = {
club: [],
diamond: [],
spade: [],
heart: [],
};
var choice = [];
for (var i = 0; i < hs.length; i++) {
var suity = get.suit(hs[i]);
if (hss[suity]) {
2018-04-17 07:32:43 +00:00
hss[suity].push(hs[i]);
}
}
2024-04-15 18:10:02 +00:00
for (var i in hss) {
if (!suits.includes(i)) {
choice = choice.concat(hss[i]);
2018-04-17 07:32:43 +00:00
delete hss[i];
}
}
2024-04-15 18:10:02 +00:00
if (choice.length < cards.length) {
choice.length = 0;
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
target.chooseToDiscard(cards.length, true, "he").ai = function (card) {
var num = choice.includes(card) ? 20 : 0;
return num - get.value(card);
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
var damage = false;
for (var i = 0; i < result.cards.length; i++) {
if (event.suits.includes(get.suit(result.cards[i]))) {
damage = true;
break;
2018-04-17 07:32:43 +00:00
}
}
2024-04-15 18:10:02 +00:00
if (damage) {
2018-04-17 07:32:43 +00:00
target.damage();
}
},
2024-04-15 18:10:02 +00:00
ai: {
order: 6,
result: {
target: function (player, target) {
var eff = get.damageEffect(target, player);
var num = target.countCards("he");
var length = ui.selected.cards.length;
if (num == length) return -2 + eff;
if (num > length) return -1.5 + eff;
return -1 + eff;
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
expose: 0.2,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
liaoyuan: {
trigger: { player: "shaBegin" },
direct: true,
filter: function (event, player) {
if (get.itemtype(event.cards) != "cards") return false;
return player.countCards("he", { suit: get.suit(event.cards) }) > 0;
2018-04-17 07:32:43 +00:00
},
2019-06-07 03:46:13 +00:00
// alter:true,
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
player.storage.liaoyuan = 0;
event.num = 0;
event.cards = [];
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
var suit = get.suit(trigger.cards);
event.suit = suit;
player.chooseCard("he", get.prompt("liaoyuan"), function (card, player) {
return get.suit(card) == suit && lib.filter.cardDiscardable(card, player);
}).ai = function (card) {
if (get.attitude(player, trigger.target) >= 0) return 0;
if (get.effect(trigger.target, { name: "sha" }, player, player) > 0) {
return 7 - get.value(card);
2018-04-17 07:32:43 +00:00
}
return 0;
2024-04-15 18:10:02 +00:00
};
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (result.bool) {
if (event.num == 0) {
player.logSkill("liaoyuan");
2018-04-17 07:32:43 +00:00
}
player.discard(result.cards);
event.num++;
2024-04-15 18:10:02 +00:00
if (
player.countCards("he", { suit: event.suit }) > 1 &&
!get.is.altered("liaoyuan")
) {
2018-04-17 07:32:43 +00:00
event.goto(1);
}
}
2024-04-15 18:31:36 +00:00
"step 3";
2024-04-15 18:10:02 +00:00
if (event.num) {
var next = trigger.target.chooseToRespond({ name: "shan" }, "请打出一张闪响应燎原");
next.ai = get.unuseful2;
if (event.num > 1) next.set("prompt2", "共需额外打出" + event.num + "张闪");
} else {
2018-04-17 07:32:43 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 4";
2024-04-15 18:10:02 +00:00
if (result.bool) {
2018-04-17 07:32:43 +00:00
event.num--;
event.goto(3);
2024-04-15 18:10:02 +00:00
} else {
2018-04-17 07:32:43 +00:00
trigger.untrigger();
2024-04-15 18:10:02 +00:00
trigger.directHit = true;
player.storage.liaoyuan = event.num;
}
},
group: ["liaoyuan2", "liaoyuan3"],
},
liaoyuan2: {
trigger: { source: "damageBegin" },
forced: true,
popup: false,
filter: function (event, player) {
return (
event.card &&
event.card.name == "sha" &&
player.storage.liaoyuan > 0 &&
event.parent.name != "_lianhuan" &&
event.parent.name != "_lianhuan2"
);
},
content: function () {
trigger.num += player.storage.liaoyuan;
player.storage.liaoyuan = 0;
},
},
liaoyuan3: {
trigger: { player: "shaEnd" },
silent: true,
content: function () {
player.storage.liaoyuan = 0;
},
},
dunxing: {
direct: true,
filter: function (event, player) {
if (event.player == player) return false;
return player.countCards("he") > 0;
},
trigger: { target: "useCardToBefore" },
content: function () {
"step 0";
var next = player.chooseToDiscard("he", get.prompt(event.name));
next.logSkill = event.name;
next.ai = function (card) {
if (get.tag(trigger.card, "multitarget") && !get.tag(card, "multineg")) return 0;
if (get.value(trigger.card, trigger.player, "raw") < 5) return 0;
if (get.tag(trigger.card, "respondSha") && player.hasSha()) return 0;
if (get.tag(trigger.card, "respondShan") && player.hasShan()) return 0;
if (get.effect(player, trigger.card, trigger.player, player) < 0) {
return 7 - get.value(card);
2018-04-17 07:32:43 +00:00
}
return 0;
2024-04-15 18:10:02 +00:00
};
next.prompt2 =
"弃置一张牌并进行一次判定,若结果不为红桃则" + get.translation(trigger.card) + "失效";
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.judge(function (card) {
return get.suit(card) == "heart" ? -1 : 1;
2018-04-17 07:32:43 +00:00
});
2024-04-15 18:10:02 +00:00
} else {
2018-04-17 07:32:43 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (result.suit != "heart") {
2018-04-17 07:32:43 +00:00
trigger.cancel();
}
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
qiaoxie: {
group: ["qiaoxie2", "qiaoxie3"],
ai: {
effect: {
target: function (card, player, target, current) {
if (get.type(card) == "equip") return [1, 3];
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
reverseEquip: true,
noe: true,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
qiaoxie2: {
trigger: { player: "equipEnd" },
frequent: true,
2018-04-17 07:32:43 +00:00
//filter:function(event,player){
// for(var i=0;i<event.cards.length;i++){
// if(event.cards[i].original=='e') return true;
// }
// return false;
//},
2024-04-15 18:10:02 +00:00
content: function () {
2018-04-17 07:32:43 +00:00
//var num=0;
//for(var i=0;i<trigger.cards.length;i++){
// if(trigger.cards[i].original=='e') num++;
//}
player.draw();
},
//effect:{
// target:function(card,player,target,current){
// if(get.type(card)=='equip') return [1,1];
// }
//}
},
2024-04-15 18:10:02 +00:00
duanxing: {
trigger: { player: "equipEnd" },
direct: true,
filter: function (event) {
return lib.inpile.includes(event.card.name);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
player.chooseTarget(get.prompt("duanxing"), function (card, player, target) {
return lib.filter.targetEnabled({ name: "sha" }, player, target);
}).ai = function (target) {
return get.effect(target, { name: "sha" }, player);
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.logSkill("duanxing");
player.useCard({ name: "sha" }, result.targets, false);
2018-04-17 07:32:43 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
expose: 0.2,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
qiaoxie3: {
trigger: { player: ["loseEnd"] },
direct: true,
filter: function (event, player) {
if (player.equiping) return false;
for (var i = 0; i < event.cards.length; i++) {
if (event.cards[i].original == "e") return true;
2018-04-17 07:32:43 +00:00
}
return false;
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
player
.chooseTarget([1, 1], "请选择巧械的目标", function (card, player, target) {
if (player == target) return false;
return target.countCards("he") > 0;
})
.set("autodelay", 0.5).ai = function (target) {
return -get.attitude(player, target);
2018-04-17 07:32:43 +00:00
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.logSkill("qiaoxie3", result.targets);
player.discardPlayerCard(result.targets[0], "he", true);
} else {
2018-04-17 07:32:43 +00:00
event.finish();
}
},
},
2024-04-15 18:10:02 +00:00
qiaoxie4: {
trigger: { player: ["loseEnd"] },
frequent: true,
filter: function (event, player) {
if (typeof lib.cardType.hslingjian != "number") return false;
if (!player.equiping) return false;
for (var i = 0; i < event.cards.length; i++) {
if (event.cards[i].original == "e") return true;
2018-04-17 07:32:43 +00:00
}
return false;
},
2024-04-15 18:10:02 +00:00
content: function () {
var list = get.typeCard("hslingjian");
if (!list.length) {
2018-04-17 07:32:43 +00:00
return;
}
2024-04-15 18:10:02 +00:00
player.gain(game.createCard(list.randomGet()), "gain2");
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
meihuo: {
trigger: { player: ["loseEnd"] },
direct: true,
filter: function (event, player) {
if (player.equiping) return false;
if (player.countCards("e")) return false;
for (var i = 0; i < event.cards.length; i++) {
if (event.cards[i].original == "e") return true;
2018-04-17 07:32:43 +00:00
}
return false;
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
player.chooseTarget([1, 1], get.prompt("meihuo"), function (card, player, target) {
if (player == target) return false;
return target.countCards("he") > 0;
}).ai = function (target) {
var att = get.attitude(player, target);
if (att <= 0) {
return 1 - att + (target.countCards("e") ? 2 : 0);
2018-04-17 07:32:43 +00:00
}
return 0;
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
event.target = result.targets[0];
player.logSkill("meihuo", event.target);
player.choosePlayerCard(event.target, "he", true).ai = function (button) {
var card = button.link;
if (get.position(card) == "e") return get.equipValue(card);
2018-04-17 07:32:43 +00:00
return 5;
};
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (result.bool) {
if (get.position(result.buttons[0].link) == "e") {
2018-04-17 07:32:43 +00:00
player.equip(result.buttons[0].link);
2024-04-15 18:10:02 +00:00
} else {
player.gain(result.buttons[0].link, event.target);
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
event.target.$giveAuto(result.buttons[0].link, player);
2018-04-17 07:32:43 +00:00
}
},
},
2024-04-15 18:10:02 +00:00
yishan: {
group: "yishan2",
notemp: true,
trigger: { player: "damageEnd" },
filter: function (event, player) {
var content = player.storage.yishan;
for (var i = 0; i < content.length; i++) {
if (get.owner(content[i]) != player && get.position(content[i]) != "s") {
2018-04-17 07:32:43 +00:00
return true;
}
}
return false;
},
2024-04-15 18:10:02 +00:00
init: function (player) {
player.storage.yishan = [];
game.addVideo("storage", player, [
"yishan",
get.cardsInfo(player.storage.yishan),
"cards",
]);
},
mark: true,
content: function () {
for (var i = 0; i < player.storage.yishan.length; i++) {
if (
get.owner(player.storage.yishan[i]) == player ||
get.position(player.storage.yishan[i]) == "s"
) {
player.storage.yishan.splice(i, 1);
2018-04-17 07:32:43 +00:00
i--;
}
}
2024-04-15 18:10:02 +00:00
var cards = player.storage.yishan.splice(0, 2);
player.gain(cards, "log");
2018-04-17 07:32:43 +00:00
player.$gain2(cards);
},
2024-04-15 18:10:02 +00:00
ai: {
maixie: true,
maixie_hp: true,
effect: {
target: function (card, player, target) {
if (get.tag(card, "damage")) {
if (player.hasSkillTag("jueqing", false, target)) return [1, -2];
if (target.storage.yishan.length == 0) return 1.5;
if (target.storage.yishan[0] == "tao" || target.storage.yishan[1] == "tao") {
return [0, 2];
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
return [1, 1];
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
intro: {
nocount: true,
onunmark: function (content, player) {
player.storage.yishan.length = 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
mark: function (dialog, content, player) {
2018-04-17 07:32:43 +00:00
dialog.add('<div class="text center">最近失去的牌</div>');
2024-04-15 18:10:02 +00:00
var cards = [];
for (var i = 0; i < content.length; i++) {
if (get.owner(content[i]) != player && get.position(content[i]) != "s") {
2018-04-17 07:32:43 +00:00
cards.push(content[i]);
2024-04-15 18:10:02 +00:00
if (cards.length >= 4) break;
2018-04-17 07:32:43 +00:00
}
}
2024-04-15 18:10:02 +00:00
if (cards.length) {
2018-04-17 07:32:43 +00:00
dialog.add(cards);
2024-04-15 18:10:02 +00:00
} else {
dialog.add("(无)");
2018-04-17 07:32:43 +00:00
}
},
2024-04-15 18:10:02 +00:00
content: function (content, player) {
var str = "最近失去的牌:";
var cards = [];
for (var i = 0; i < content.length; i++) {
if (get.owner(content[i]) != player && get.position(content[i]) != "s") {
2018-04-17 07:32:43 +00:00
cards.push(content[i]);
2024-04-15 18:10:02 +00:00
if (cards.length >= 4) break;
2018-04-17 07:32:43 +00:00
}
}
2024-04-15 18:10:02 +00:00
if (cards.length) {
str += get.translation(cards);
} else {
str += "无";
2018-04-17 07:32:43 +00:00
}
return str;
2024-04-15 18:10:02 +00:00
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
yishan2: {
trigger: { player: "loseEnd" },
silent: true,
content: function () {
for (var i = 0; i < trigger.cards.length; i++) {
2018-04-17 07:32:43 +00:00
player.storage.yishan.unshift(trigger.cards[i]);
}
2024-04-15 18:10:02 +00:00
game.addVideo("storage", player, [
"yishan",
get.cardsInfo(player.storage.yishan),
"cards",
]);
},
},
guanhu: {
trigger: { source: "damageEnd" },
direct: true,
filter: function (event) {
if (event._notrigger.includes(event.player)) return false;
return event.card && event.card.name == "sha" && event.player.countCards("he");
},
content: function () {
var num = 1;
if (trigger.player.countCards("e") && trigger.player.countCards("h")) {
num = 2;
}
var next = player.discardPlayerCard(
trigger.player,
[1, num],
get.prompt("guanhu", trigger.player)
);
next.logSkill = ["guanhu", trigger.player];
next.filterButton = function (button) {
if (ui.selected.buttons.length)
return get.position(button.link) != get.position(ui.selected.buttons[0].link);
2018-04-17 07:32:43 +00:00
return true;
2024-04-15 18:10:02 +00:00
};
},
ai: {
expose: 0.2,
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
chuanyang: {
trigger: { player: "shaBegin" },
check: function (event, player) {
return get.attitude(player, event.player) < 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filter: function (event, player) {
2018-04-17 07:32:43 +00:00
// if(event.card&&get.color(event.card)=='red') return true;
// return false;
2024-04-15 18:10:02 +00:00
return get.distance(event.target, player, "attack") > 1;
},
content: function () {
trigger.directHit = true;
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
poxing: {
trigger: { source: "damageBegin" },
filter: function (trigger, player) {
return trigger.player.hp > player.hp;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
forced: true,
content: function () {
2018-04-17 07:32:43 +00:00
trigger.num++;
2024-04-15 18:10:02 +00:00
},
},
luomu: {
trigger: { source: "damageEnd" },
forced: true,
filter: function (event, player) {
if (event._notrigger.includes(event.player)) return false;
return event.player.countCards("hej");
},
content: function () {
trigger.player.discard(trigger.player.getCards("hej").randomGet());
},
},
huanhun: {
trigger: { global: "dying" },
priority: 6,
filter: function (event, player) {
if (event.player.hp > 0) return false;
if (get.is.altered("huanhun")) return player.countCards("h", { color: "red" }) > 0;
return player.countCards("he") > 0;
2018-04-17 07:32:43 +00:00
},
2019-06-07 03:46:13 +00:00
// alter:true,
2024-04-15 18:10:02 +00:00
direct: true,
content: function () {
"step 0";
var next = player.chooseToDiscard(
get.is.altered("huanhun") ? "h" : "he",
get.prompt2("huanhun", trigger.player),
function (card) {
if (get.is.altered("huanhun")) {
return get.color(card) == "red";
} else {
return true;
}
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
);
next.logSkill = ["huanhun", trigger.player];
next.ai = function (card) {
if (card.name == "tao") return 0;
if (get.attitude(player, trigger.player) > 0) {
return 8 - get.value(card);
2018-04-17 07:32:43 +00:00
}
return 0;
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
event.card = result.cards[0];
trigger.player.judge(function (card) {
return get.color(card) == "red" ? 1 : 0;
2018-04-17 07:32:43 +00:00
});
2024-04-15 18:10:02 +00:00
} else {
2018-04-17 07:32:43 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (result.bool) {
2018-04-17 07:32:43 +00:00
trigger.player.recover();
2024-04-15 18:10:02 +00:00
} else if (event.card.isInPile()) {
trigger.player.gain(event.card, "gain2");
2018-04-17 07:32:43 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 1.6,
expose: 0.2,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
huanhun_old: {
enable: "phaseUse",
forbid: ["versus"],
filter: function () {
return game.dead.length > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
usable: 1,
filterCard: function (card) {
return get.suit(card) == "heart";
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
direct: true,
content: function () {
"step 0";
var list = [];
for (var i = 0; i < game.dead.length; i++) {
2018-04-17 07:32:43 +00:00
list.push(game.dead[i].name);
}
2024-04-15 18:10:02 +00:00
player.chooseButton(
ui.create.dialog([list, "character"]),
function (button) {
for (var i = 0; i < game.dead.length && game.dead[i].name != button.link; i++);
return get.attitude(_status.event.player, game.dead[i]) - 2;
},
true
);
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
for (
var i = 0;
i < game.dead.length && game.dead[i].name != result.buttons[0].link;
i++
);
var dead = game.dead[i];
dead.hp = 1;
2018-04-17 07:32:43 +00:00
dead.revive();
2024-04-15 18:10:02 +00:00
event.dead = dead;
player.logSkill("huanhun", dead);
} else {
2018-04-17 07:32:43 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (event.dead) event.dead.draw(2);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
order: 10,
result: {
player: function (player) {
for (var i = 0; i < game.dead.length; i++) {
if (get.attitude(player, game.dead[i]) > 2) return 3;
2018-04-17 07:32:43 +00:00
}
return 0;
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
threaten: 2,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
yinyue: {
trigger: { global: "recoverAfter" },
check: function (event, player) {
return get.attitude(player, event.player) > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
logTarget: "player",
2018-04-17 07:32:43 +00:00
// alter:true,
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
2018-04-17 07:32:43 +00:00
// if(get.is.altered('yinyue')){
// trigger.player.draw();
// event.finish();
// }
// else
2024-04-15 18:10:02 +00:00
if (
trigger.player != player &&
trigger.player.countCards("h") >= player.countCards("h")
) {
game.asyncDraw([trigger.player, player]);
} else {
2018-04-17 07:32:43 +00:00
trigger.player.draw();
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 1";
2018-04-17 07:32:43 +00:00
game.delay();
},
2024-04-15 18:10:02 +00:00
ai: {
expose: 0.2,
},
},
daofa: {
trigger: { global: "damageAfter" },
check: function (event, player) {
return event.source && get.attitude(player, event.source) < 0;
},
filter: function (event, player) {
return event.source && event.source != player && event.source.countCards("he");
},
logTarget: "source",
content: function () {
trigger.source.chooseToDiscard("he", true);
},
ai: {
expose: 0.2,
threaten: 1.5,
},
},
daixing: {
group: ["daixing2", "daixing3"],
trigger: { player: "phaseEnd" },
direct: true,
filter: function (event, player) {
return player.countCards("he") > 0;
},
content: function () {
"step 0";
var next = player.chooseToDiscard(get.prompt2("daixing"), "he", [
1,
player.countCards("he"),
]);
next.logSkill = "daixing";
next.ai = function (card) {
if (ui.selected.cards.length >= 2) return 0;
if (ui.selected.cards.length == 1) {
if (player.countCards("h") > player.hp) {
return 3 - get.value(card);
2018-04-17 07:32:43 +00:00
}
return 0;
}
2024-04-15 18:10:02 +00:00
return 6 - get.value(card);
2018-04-17 07:32:43 +00:00
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
2018-04-17 07:32:43 +00:00
player.changeHujia(result.cards.length);
2024-04-15 18:10:02 +00:00
player.storage.daixing = result.cards.length;
2018-04-17 07:32:43 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
effect: {
target: function (card, player, target) {
if (get.tag(card, "damage")) {
if (player.hasSkillTag("jueqing", false, target)) return;
if (target.storage.daixing > 1) return 0.1;
if (target.storage.daixing == 1) return 0.5;
2018-04-17 07:32:43 +00:00
}
return 1.5;
2024-04-15 18:10:02 +00:00
},
},
},
intro: {
content: "mark",
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
daixing2: {
trigger: { player: "phaseBegin" },
silent: true,
content: function () {
if (player.storage.daixing) {
2018-04-17 07:32:43 +00:00
player.changeHujia(-player.storage.daixing);
2024-04-15 18:10:02 +00:00
player.storage.daixing = 0;
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
daixing3: {
trigger: { player: ["damageEnd", "damageZero"] },
silent: true,
filter: function (event, player) {
return player.storage.daixing > 0 && event.hujia > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
player.storage.daixing -= trigger.hujia;
if (player.storage.daixing < 0) {
player.storage.daixing = 0;
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
swd_wuxie: {
mod: {
targetEnabled: function (card, player, target) {
if (get.type(card) == "delay" && player != target) {
2018-04-17 07:32:43 +00:00
return false;
}
2024-04-15 18:10:02 +00:00
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
lqingcheng: {
trigger: { player: "phaseEnd" },
frequent: true,
content: function () {
"step 0";
if (event.cards == undefined) event.cards = [];
player.judge(function (card) {
if (get.color(card) == "red") return 1.5;
2018-04-17 07:32:43 +00:00
return -1.5;
2024-04-15 18:10:02 +00:00
}, ui.special);
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.judge > 0) {
2018-04-17 07:32:43 +00:00
event.cards.push(result.card);
2024-04-15 18:10:02 +00:00
if (event.cards.length == 3) {
2018-04-17 07:32:43 +00:00
player.gain(event.cards);
2024-04-15 18:10:02 +00:00
if (event.cards.length) {
2018-04-17 07:32:43 +00:00
player.$draw(event.cards);
}
event.finish();
2024-04-15 18:10:02 +00:00
} else if (lib.config.autoskilllist.includes("lqingcheng")) {
player.chooseBool("是否再次发动【倾城】?");
} else {
event._result = { bool: true };
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
} else {
2018-04-17 07:32:43 +00:00
player.gain(event.cards);
2024-04-15 18:10:02 +00:00
if (event.cards.length) {
2018-04-17 07:32:43 +00:00
player.$draw(event.cards);
}
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (result.bool) {
2018-04-17 07:32:43 +00:00
event.goto(0);
2024-04-15 18:10:02 +00:00
} else {
2018-04-17 07:32:43 +00:00
player.gain(event.cards);
2024-04-15 18:10:02 +00:00
if (event.cards.length) {
2018-04-17 07:32:43 +00:00
player.$draw(event.cards);
}
}
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 1.4,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
lingxin: {
trigger: { player: "phaseEnd" },
frequent: true,
content: function () {
"step 0";
event.cards = get.cards(3);
2018-04-17 07:32:43 +00:00
player.showCards(event.cards);
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
for (var i = 0; i < cards.length; i++) {
if (get.suit(event.cards[i]) != "heart") {
2018-04-17 07:32:43 +00:00
cards[i].discard();
2024-04-15 18:10:02 +00:00
event.cards.splice(i--, 1);
2018-04-17 07:32:43 +00:00
}
}
2024-04-15 18:10:02 +00:00
if (event.cards.length == 0) {
2018-04-17 07:32:43 +00:00
event.finish();
2024-04-15 18:10:02 +00:00
} else {
game.delay(0, 1000);
2018-04-17 07:32:43 +00:00
player.$gain2(event.cards);
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
player.gain(event.cards, "log");
},
ai: {
result: {
target: 2,
},
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
lingwu: {
trigger: { player: "phaseAfter" },
frequent: true,
filter: function (event, player) {
return player.countUsed() >= player.hp && event.skill != "lingwu";
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
2018-04-17 07:32:43 +00:00
player.insertPhase();
},
2024-04-15 18:10:02 +00:00
ai: {
order: -10,
result: {
target: 2,
},
threaten: 1.5,
},
},
xianjiang_old: {
enable: "phaseUse",
position: "he",
usable: 1,
filterCard: function (card, player) {
if (player.storage.xianjiang && player.storage.xianjiang.includes(card)) return false;
return get.type(card) == "equip";
},
init: function (player) {
player.storage.xianjiang = [];
},
check: function (card) {
return 10 - get.value(card);
},
prompt: "将一张装备牌永久转化为任意一张装备牌",
content: function () {
"step 0";
var list = [];
var suit = get.suit(cards[0]);
var number = get.number(cards[0]);
for (var i in lib.card) {
if (lib.card[i].mode && lib.card[i].mode.includes(lib.config.mode) == false) continue;
if (lib.card[i].type == "equip" && cards[0].name != i) {
if (get.equipValue({ name: i }) < 10) list.push([suit, number, i]);
}
}
var dialog = ui.create.dialog([list, "vcard"]);
player.chooseButton(dialog, true, function (button) {
return get.value({ name: button.link[2] }, player);
2018-04-17 07:32:43 +00:00
});
2024-04-15 18:31:36 +00:00
"step 1";
2018-04-17 07:32:43 +00:00
cards[0].init(result.buttons[0].link);
player.gain(cards[0]);
player.$gain(cards[0]);
game.delay();
player.storage.xianjiang.add(cards[0]);
},
2024-04-15 18:10:02 +00:00
ai: {
order: 9,
result: {
player: 1,
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
threaten: 2,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
xianjiang2: {
trigger: { player: "phaseUseBegin" },
forced: true,
popup: false,
filter: function (event, player) {
return player.hasSkill("xianjiang");
},
content: function () {
player.storage.xianjiang = [];
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
xianjiang: {
enable: "phaseUse",
2019-06-07 03:46:13 +00:00
// alter:true,
2024-04-15 18:10:02 +00:00
filterCard: function (card) {
return get.type(card, "trick") == "trick";
},
usable: 1,
filter: function (event, player) {
if (get.is.altered("xianjiang") && player.countCards("e")) return false;
if (player.countCards("h", { type: "trick" })) return true;
if (player.countCards("h", { type: "delay" })) return true;
2018-04-17 07:32:43 +00:00
return false;
},
2024-04-15 18:10:02 +00:00
selectCard: 1,
check: function (card) {
return 8 - get.value(card);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
var card = game.createCard(get.inpile("equip").randomGet());
2018-04-17 07:32:43 +00:00
player.equip(card);
player.$gain2(card);
game.delay();
},
2024-04-15 18:10:02 +00:00
ai: {
result: {
player: 1,
},
order: 9,
},
},
shengong: {
trigger: { player: ["chooseToRespondBegin"] },
filter: function (event, player) {
if (event.responded) return false;
if (!player.countCards("he")) return false;
if (event.filterCard({ name: "shan" })) {
if (
game.hasPlayer(function (current) {
return current != player && current.getEquip(2);
})
) {
2018-04-17 07:32:43 +00:00
return true;
}
}
2024-04-15 18:10:02 +00:00
if (event.filterCard({ name: "sha" })) {
if (
game.hasPlayer(function (current) {
return current != player && current.getEquip(1);
})
) {
2018-04-17 07:32:43 +00:00
return true;
}
}
return false;
},
2024-04-15 18:10:02 +00:00
direct: true,
content: function () {
"step 0";
var list = [];
var players = game.filterPlayer();
if (trigger.filterCard({ name: "shan" })) {
for (var i = 0; i < players.length; i++) {
if (players[i] != player && players[i].getEquip(2))
list.push(players[i].getEquip(2));
2018-04-17 07:32:43 +00:00
}
}
2024-04-15 18:10:02 +00:00
if (trigger.filterCard({ name: "sha" })) {
for (var i = 0; i < players.length; i++) {
if (players[i] != player && players[i].getEquip(1))
list.push(players[i].getEquip(1));
2018-04-17 07:32:43 +00:00
}
}
2024-04-15 18:10:02 +00:00
var dialog = ui.create.dialog(get.prompt("shengong"), list);
for (var i = 0; i < dialog.buttons.length; i++) {
dialog.buttons[i].querySelector(".info").innerHTML = get.translation(
get.owner(dialog.buttons[i].link)
);
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
player.chooseButton(dialog, function (button) {
var player = get.owner(button.link);
if (get.subtype(button.link) == "equip2" && !player.hasShan()) {
return 11 - get.attitude(_status.event.player, player);
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
if (get.subtype(button.link) == "equip1" && !player.hasSha()) {
return 11 - get.attitude(_status.event.player, player);
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
return 5 - get.attitude(_status.event.player, player);
2018-04-17 07:32:43 +00:00
});
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
2018-04-17 07:32:43 +00:00
trigger.untrigger();
2024-04-15 18:10:02 +00:00
trigger.responded = true;
trigger.result = { bool: true, card: {} };
if (get.subtype(result.buttons[0].link) == "equip1") trigger.result.card.name = "sha";
else trigger.result.card.name = "shan";
var target = get.owner(result.buttons[0].link);
2018-04-17 07:32:43 +00:00
target.discard(result.buttons[0].link);
target.draw();
2024-04-15 18:10:02 +00:00
if (player.countCards("he")) player.chooseToDiscard(true, "he");
player.logSkill("shengong", target);
}
},
ai: {
effect: {
target: function (card, player, target, current) {
var he = target.countCards("he");
if (!he) return 1.5;
if (he <= 1) return;
if (get.tag(card, "respondShan")) {
if (
game.hasPlayer(function (current) {
return (
current != target &&
current.getEquip(2) &&
get.attitude(target, current) <= 0
);
})
) {
return 0.6 / he;
2018-04-17 07:32:43 +00:00
}
}
2024-04-15 18:10:02 +00:00
if (get.tag(card, "respondSha")) {
if (
game.hasPlayer(function (current) {
return (
current != target &&
current.getEquip(2) &&
get.attitude(target, current) <= 0
);
})
) {
return 0.6 / he;
2018-04-17 07:32:43 +00:00
}
}
2024-04-15 18:10:02 +00:00
},
},
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
huajian: {
trigger: { player: "phaseUseEnd" },
direct: true,
filter: function (event, player) {
return player.countCards("he") > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
var next = player.chooseCardTarget({
position: "he",
filterTarget: function (card, player, target) {
return lib.filter.targetEnabled({ name: "sha" }, player, target);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterCard: true,
ai1: function (card) {
return get.unuseful(card) + 9;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai2: function (target) {
return get.effect(target, { name: "sha" }, player);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
prompt: get.prompt("huajian"),
2018-04-17 07:32:43 +00:00
});
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.logSkill("huajian");
player.useCard({ name: "sha" }, result.cards, result.targets, false);
2018-04-17 07:32:43 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
expose: 0.2,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
polang: {
trigger: { source: "damageEnd" },
filter: function (event, player) {
if (event._notrigger.includes(event.player)) return false;
return event.player.countCards("e");
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
direct: true,
logTarget: "player",
content: function () {
player.discardPlayerCard(
trigger.player,
"e",
get.prompt("polang", trigger.player)
).logSkill = "polang";
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
expose: 0.3,
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
jikong: {
trigger: { player: ["loseEnd", "phaseBegin"] },
direct: true,
usable: 1,
2019-06-07 03:46:13 +00:00
// alter:true,
2024-04-15 18:10:02 +00:00
filter: function (event, player) {
if (event.name == "phase") return true;
if (get.is.altered("jikong")) return false;
if (player.countCards("h")) return false;
for (var i = 0; i < event.cards.length; i++) {
if (event.cards[i].original == "h") return true;
2018-04-17 07:32:43 +00:00
}
return false;
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
player.chooseTarget(get.prompt("jikong"), function (card, player, target) {
return lib.filter.targetEnabled({ name: "sha", nature: "thunder" }, player, target);
}).ai = function (target) {
return get.effect(target, { name: "sha", nature: "thunder" }, player);
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.logSkill("jikong");
player.useCard({ name: "sha", nature: "thunder" }, result.targets, false);
} else {
2018-04-17 07:32:43 +00:00
player.storage.counttrigger.jikong--;
}
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: function (player, target) {
if (target.countCards("h")) return 0.8;
2018-04-17 07:32:43 +00:00
return 2;
2024-04-15 18:10:02 +00:00
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
xielei: {
trigger: { player: ["useCard", "respondAfter"] },
direct: true,
filter: function (event) {
return game.countPlayer() > 2 && event.card && event.card.name == "sha";
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
2018-04-17 07:32:43 +00:00
player.chooseCardTarget({
2024-04-15 18:10:02 +00:00
prompt: get.prompt("xielei"),
filterCard: lib.filter.cardDiscardable,
position: "he",
filterTarget: function (card, player, target) {
if (player == target) return false;
if (trigger.name == "respond") {
return trigger.source != target;
} else {
return !trigger.targets.includes(target);
2018-04-17 07:32:43 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai1: function (card) {
return 8 - get.value(card);
},
ai2: function (target) {
return get.damageEffect(target, player, player, "thunder");
2018-04-17 07:32:43 +00:00
},
});
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool && !event.isMine()) {
2018-04-17 07:32:43 +00:00
game.delayx();
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.logSkill("xielei", result.targets, "thunder");
2018-04-17 07:32:43 +00:00
player.discard(result.cards);
2024-04-15 18:10:02 +00:00
result.targets[0].damage("thunder");
2018-04-17 07:32:43 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
expose: 0.3,
threaten: 1.6,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
jingjie: {
enable: "phaseUse",
init: function (player) {
player.storage.jingjie = false;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
mark: true,
intro: {
content: "limited",
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filter: function (event, player) {
2018-04-17 07:32:43 +00:00
return !player.storage.jingjie;
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
player.storage.jingjie = true;
player.unmarkSkill("jingjie");
event.targets = game.filterPlayer();
for (var i = 0; i < event.targets.length; i++) {
event.targets[i].discard(event.targets[i].getCards("hej"))._triggered = null;
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
for (var i = 0; i < event.targets.length; i++) {
2018-04-17 07:32:43 +00:00
event.targets[i].directgain(get.cards(2));
event.targets[i].$draw(2);
}
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 1.3,
order: 1,
result: {
player: function (player) {
var num = 0,
players = game.filterPlayer();
for (var i = 0; i < players.length; i++) {
var att = get.attitude(player, players[i]);
if (att > 0) {
num -= players[i].countCards("he") - 2;
} else if (att < 0) {
num += players[i].countCards("he") - 2;
2018-04-17 07:32:43 +00:00
}
}
2024-04-15 18:10:02 +00:00
if (player.hp == 1) return num - 1;
return num - players.length / 2;
},
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ningjian: {
group: ["ningjian1", "ningjian2"],
ai: {
effect: {
target: function (card, player, target) {
if (
target.countCards("he") &&
(get.tag(card, "respondShan") || get.tag(card, "respondSha"))
)
return 0.6;
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
respondSha: true,
respondShan: true,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ningjian1: {
enable: ["chooseToRespond", "chooseToUse"],
filterCard: { color: "black" },
viewAs: { name: "sha" },
position: "he",
prompt: "将一张黑色牌当杀打出",
check: function (card) {
return 6 - get.value(card);
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ningjian2: {
enable: ["chooseToRespond", "chooseToUse"],
filterCard: { color: "red" },
viewAs: { name: "shan" },
position: "he",
prompt: "将一张红色牌当闪使用或打出",
check: function (card) {
return 6 - get.value(card);
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
duoren: {
trigger: { target: "shaMiss" },
filter: function (event) {
return event.player.getEquip(1) != undefined;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
check: function (event, player) {
return get.attitude(player, event.player) < 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
priority: 5,
content: function () {
trigger.player.$give(trigger.player.getEquip(1), player);
player.gain(trigger.player.getEquip(1), trigger.player);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
effect: {
target: function (card, player, target, current) {
if (card.name == "sha" && target.countCards("h") > 1 && player.getEquip(1)) {
return [1, 0.5, 0, -0.5];
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
},
},
},
2018-04-17 07:32:43 +00:00
// filter:function(event){
// return event.player.countCards('e')>0;
// },
// content:function(){
// "step 0"
// player.choosePlayerCard('是否获得'+get.translation(trigger.player)+'的一张装备牌?',
// 'e',trigger.player).ai=get.buttonValue;
// "step 1"
// if(result.bool){
// var card=result.buttons[0].link;
// trigger.player.$give(card,player);
// player.gain(card);
// }
// },
},
2024-04-15 18:10:02 +00:00
taixu: {
enable: "phaseUse",
filter: function (event, player) {
return !player.storage.taixu && player.countCards("hej");
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterTarget: function (card, player, target) {
return player != target && target.hp > 1;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
player.discard(player.getCards("hej"));
player.storage.taixu = true;
target.damage(player.maxHp - player.hp);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
basic: {
order: 1,
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
result: {
target: function (player, target) {
if (player.maxHp - player.hp < 2) return 0;
2018-04-17 07:32:43 +00:00
return -2;
},
2024-04-15 18:10:02 +00:00
player: function (player, target) {
return -0.5 * player.countCards("he");
},
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
pozhen: {
trigger: { player: "damageEnd" },
filter: function (event, player) {
if (!event.source) return false;
if (get.is.altered("pozhen")) {
return event.source.countCards("h") > player.countCards("h");
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
return event.source.countCards("h") != player.countCards("h");
2018-04-17 07:32:43 +00:00
},
2019-06-07 03:46:13 +00:00
// alter:true,
2018-04-17 07:32:43 +00:00
// check:function(event,player){
// return get.attitude(player,event.source)<0;
// },
2024-04-15 18:10:02 +00:00
direct: true,
content: function () {
"step 0";
var num = player.countCards("h") - trigger.source.countCards("h");
event.num = num;
if (num > 0) {
var next = player.chooseToDiscard(
num,
get.prompt("pozhen", trigger.source),
"弃置" + num + "张手牌,并对" + get.translation(trigger.source) + "造成1点伤害"
);
next.logSkill = ["pozhen", trigger.source];
next.ai = function (card) {
if (get.damageEffect(trigger.source, player, player) > 0 && num <= 2) {
return 6 - get.value(card);
2018-04-17 07:32:43 +00:00
}
return -1;
2024-04-15 18:10:02 +00:00
};
} else if (num < 0) {
player.chooseBool(
get.prompt("pozhen", trigger.source),
"弃置" + get.translation(trigger.source) + -num + "张手牌"
).ai = function () {
return get.attitude(player, trigger.source) < 0;
};
} else {
2018-04-17 07:32:43 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
if (event.num > 0) {
2018-04-17 07:32:43 +00:00
trigger.source.damage();
2024-04-15 18:10:02 +00:00
} else {
player.logSkill("pozhen", trigger.source);
var cards = trigger.source.getCards("h");
2018-04-17 07:32:43 +00:00
cards.sort(lib.sort.random);
2024-04-15 18:10:02 +00:00
trigger.source.discard(cards.slice(0, -event.num));
2018-04-17 07:32:43 +00:00
}
}
},
2024-04-15 18:10:02 +00:00
ai: {
maixie_defend: true,
effect: {
target: function (card, player, target) {
if (get.tag(card, "damage")) {
if (player.hasSkillTag("jueqing", false, target)) return [1, -1];
var num = player.countCards("h") - target.countCards("h");
if (num > 0) {
return [1, 0, 0, -num / 2];
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
if (num < 0 && !get.is.altered("pozhen")) {
return [1, 0, 0, -0.5];
2018-04-17 07:32:43 +00:00
}
}
2024-04-15 18:10:02 +00:00
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
},
tanlin_defence: {
trigger: { player: "damageEnd" },
filter: function (event, player) {
return player.countCards("h") && event.source && event.source.countCards("h");
},
direct: true,
content: function () {
"step 0";
player.chooseToDiscard(
[1, trigger.source.countCards("h")],
"弃置任意张手牌并令伤害来源弃置等量手牌"
).ai = function (card) {
if (ui.selected.cards.length >= trigger.source.countCards("h")) return -1;
if (ui.selected.cards.length == 0) return 8 - get.value(card);
return 4 - get.value(card);
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.logSkill("tanlin");
trigger.source.randomDiscard("h", result.cards.length);
} else {
2018-04-17 07:32:43 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 2";
2018-04-17 07:32:43 +00:00
player.draw();
},
2024-04-15 18:10:02 +00:00
ai: {
effect: {
target: function (card, player, target) {
if (
get.tag(card, "damage") &&
target.countCards("h") &&
target.hp > 1 &&
player != target
)
return [1, 0.2, 0, -0.2];
},
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
tanlin: {
enable: "phaseUse",
usable: 1,
group: "tanlin4",
2019-06-07 03:46:13 +00:00
// alter:true,
2024-04-15 18:10:02 +00:00
filterTarget: function (card, player, target) {
return player != target && target.countCards("h");
},
filter: function (event, player) {
return player.countCards("h") > 0;
},
content: function () {
"step 0";
player.chooseToCompare(target).set("preserve", "win");
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
if (target.hasSkill("tanlin2") == false) {
target.addSkill("tanlin2");
player.addSkill("tanlin3");
if (get.is.altered("tanlin")) {
2018-04-17 07:32:43 +00:00
player.gain([result.target]);
player.$gain2([result.target]);
2024-04-15 18:10:02 +00:00
} else {
player.gain([result.player, result.target]);
player.$gain2([result.player, result.target]);
2018-04-17 07:32:43 +00:00
}
}
2024-04-15 18:10:02 +00:00
} else {
2018-04-17 07:32:43 +00:00
player.damage(target);
}
},
2024-04-15 18:10:02 +00:00
ai: {
result: {
target: function (player, target) {
var cards = player.getCards("h");
var num = target.countCards("h");
if (num > cards.length + 3 && player.hp > 1) return -2;
if (num > cards.length + 1 && player.hp > 1) return -1;
if (num == cards.length - 1 && player.hp > 1 && !get.is.altered("pozhen"))
return -1;
for (var i = 0; i < cards.length; i++) {
if (cards[i].number > 9) return num == 1 ? -1 : -0.5;
2018-04-17 07:32:43 +00:00
}
return 0;
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
order: 9,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
tanlin2: {
trigger: { global: "phaseAfter" },
forced: true,
content: function () {
player.removeSkill("tanlin2");
2018-04-17 07:32:43 +00:00
},
// mod:{
// cardEnabled:function(){
// return false;
// },
// cardUsable:function(){
// return false;
// },
// cardRespondable:function(){
// return false;
// },
// cardSavable:function(){
// return false;
// }
// },
},
2024-04-15 18:10:02 +00:00
tanlin3: {
trigger: { global: "phaseAfter" },
forced: true,
popup: false,
content: function () {
player.removeSkill("tanlin3");
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
mod: {
cardUsable: function (card, player, num) {
if (card.name == "sha") return num + 1;
},
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
tanlin4: {
mod: {
targetInRange: function (card, player, target, now) {
if (target.hasSkill("tanlin2")) return true;
2018-04-17 07:32:43 +00:00
},
},
},
2024-04-15 18:10:02 +00:00
yunchou_old: {
enable: "phaseUse",
usable: 1,
filterTarget: function (card, player, target) {
return player != target && target.countCards("h");
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterCard: true,
selectCard: [1, Infinity],
content: function () {
"step 0";
var card = target.getCards("h").randomGet();
if (!card) {
2018-04-17 07:32:43 +00:00
event.finish();
return;
}
target.discard(card);
2024-04-15 18:10:02 +00:00
var color = get.color(card);
var suit = get.suit(card);
var num1 = 0,
num2 = 0;
for (var i = 0; i < cards.length; i++) {
if (get.color(cards[i]) == color) num1++;
2018-04-17 07:32:43 +00:00
else num2++;
// if(get.suit(cards[i])==suit) num1++;
}
2024-04-15 18:10:02 +00:00
event.num1 = num1;
event.num2 = num2;
2024-04-15 18:31:36 +00:00
"step 1";
2018-04-17 07:32:43 +00:00
player.draw(event.num1);
2024-04-15 18:31:36 +00:00
"step 2";
2018-04-17 07:32:43 +00:00
target.draw(event.num2);
},
2024-04-15 18:10:02 +00:00
check: function (card) {
if (ui.selected.cards.length) return 0;
return 4 - get.value(card);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
order: 5,
result: {
target: -0.5,
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
threaten: 1.3,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
yunchou: {
enable: "phaseUse",
usable: 1,
filterTarget: function (card, player, target) {
return player != target && target.countCards("h");
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterCard: function (card) {
if (get.is.altered("yunchou")) {
return get.type(card) != "basic";
2018-04-17 07:32:43 +00:00
}
return true;
},
2024-04-15 18:10:02 +00:00
filter: function (event, player) {
if (get.is.altered("yunchou")) {
return player.hasCard(function (card) {
return get.type(card) != "basic";
2018-04-17 07:32:43 +00:00
});
}
return true;
},
2019-06-07 03:46:13 +00:00
// alter:true,
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
var card = target.getCards("h").randomGet();
if (!card) {
2018-04-17 07:32:43 +00:00
event.finish();
return;
}
target.discard(card);
2024-04-15 18:10:02 +00:00
if (get.color(card) == get.color(cards[0])) {
event.bool = true;
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (event.bool) {
2018-04-17 07:32:43 +00:00
player.draw();
2024-04-15 18:10:02 +00:00
} else if (player.countCards("he")) {
2018-04-17 07:32:43 +00:00
target.draw();
}
},
2024-04-15 18:10:02 +00:00
check: function (card) {
return 7 - get.value(card);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
order: 5,
result: {
target: function (player, target) {
if (target.hasSkillTag("noh")) return 0;
2018-04-17 07:32:43 +00:00
return -1;
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
threaten: 1.3,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
jqimou: {
trigger: { player: "damageEnd" },
frequent: true,
filter: function (event, player) {
return _status.currentPhase != player;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
2018-04-17 07:32:43 +00:00
player.draw();
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
player.chooseToUse("是否使用一张牌?");
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
effect: {
target: function (card, player, target) {
if (get.tag(card, "damage") && _status.currentPhase != target) {
if (player.hasSkillTag("jueqing", false, target)) return [1, -1.5];
return [1, 0.5];
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
},
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
lexue: {
group: ["lexue1", "lexue2"],
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
lexue1: {
trigger: { player: "phaseBegin" },
forced: true,
popup: false,
content: function () {
2018-04-17 07:32:43 +00:00
player.removeSkill(player.storage.lexue);
2024-04-15 18:10:02 +00:00
switch (Math.floor(Math.random() * 4)) {
case 0:
if (lib.skill.zhiheng) {
player.addSkill("zhiheng");
player.storage.lexue = "zhiheng";
player.popup("zhiheng");
}
break;
case 1:
if (lib.skill.jizhi) {
player.addSkill("jizhi");
player.storage.lexue = "jizhi";
player.popup("jizhi");
}
break;
case 2:
if (lib.skill.dimeng) {
player.addSkill("dimeng");
player.storage.lexue = "dimeng";
player.popup("dimeng");
}
break;
case 3:
if (lib.skill.quhu) {
player.addSkill("quhu");
player.storage.lexue = "quhu";
player.popup("quhu");
}
break;
}
},
},
lexue2: {
trigger: { player: "phaseEnd" },
forced: true,
popup: false,
content: function () {
2018-04-17 07:32:43 +00:00
player.removeSkill(player.storage.lexue);
2024-04-15 18:10:02 +00:00
switch (Math.floor(Math.random() * 4)) {
case 0:
if (lib.skill.yiji) {
player.addSkill("yiji");
player.storage.lexue = "yiji";
player.popup("yiji");
}
break;
case 1:
if (lib.skill.jijiu) {
player.addSkill("jijiu");
player.storage.lexue = "jijiu";
player.popup("jijiu");
}
break;
case 2:
if (lib.skill.guidao) {
player.addSkill("guidao");
player.storage.lexue = "guidao";
player.popup("guidao");
}
break;
case 3:
if (lib.skill.fankui) {
player.addSkill("fankui");
player.storage.lexue = "fankui";
player.popup("fankui");
}
break;
}
},
},
swdtianshu_old: {
unique: true,
trigger: { player: "phaseEnd" },
direct: true,
init: function (player) {
player.storage.swdtianshu = [];
player.storage.swdtianshu2 = {};
},
intro: {
content: function (storage) {
if (storage && storage.length) {
var str = "已学习技能:";
for (var i = 0; i < storage.length; i++) {
if (i) {
str += "、";
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
str += get.translation(storage[i]);
2018-04-17 07:32:43 +00:00
}
return str;
2024-04-15 18:10:02 +00:00
} else {
return "暂无已学习技能";
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
},
},
mark: true,
filter: function (event, player) {
return player.countCards("he") > 0;
},
content: function () {
"step 0";
player.chooseToDiscard("he", get.prompt("swdtianshu")).ai = function (card) {
if (get.position(card) == "h") return 5 - get.useful(card);
return 4 - get.value(card);
}.logSkill = "swdtianshu";
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
var list = [];
for (var i in lib.character) {
if (
lib.character[i][4] &&
(lib.character[i][4].includes("boss") ||
lib.character[i][4].includes("hiddenboss"))
)
continue;
if (i == player.name || i == player.name1 || i == player.name2) continue;
for (var j = 0; j < lib.character[i][3].length; j++) {
if (!lib.skill[lib.character[i][3][j]].unique) {
list.push(i);
break;
2018-04-17 07:32:43 +00:00
}
}
}
2024-04-15 18:10:02 +00:00
player.chooseButton(["选择角色", [list.randomGets(3), "character"]], true);
} else {
2018-04-17 07:32:43 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
player.storage.swdtianshu_learn = result.links[0];
2018-04-17 07:32:43 +00:00
//
// var target=trigger.targets[0];
// var names=[];
// var list=[];
// if(target.name&&!target.isUnseen(0)) names.add(target.name);
// if(target.name1&&!target.isUnseen(0)) names.add(target.name1);
// if(target.name2&&!target.isUnseen(1)) names.add(target.name2);
// var pss=player.getSkills();
// for(var i=0;i<names.length;i++){
// var info=lib.character[names[i]];
// if(info){
// var skills=info[3];
// for(var j=0;j<skills.length;j++){
// if(player.storage.swdtianshu.includes(skills[j])) continue;
2018-04-17 07:32:43 +00:00
// if(lib.translate[skills[j]+'_info']&&lib.skill[skills[j]]&&
// !lib.skill[skills[j]].unique&&!pss.includes(skills[j])){
2018-04-17 07:32:43 +00:00
// list.add(skills[j]);
// }
// }
// }
// }
// var skill=list.randomGet();
2021-05-18 07:57:26 +00:00
// player.storage.swdtianshu.push(skill);
// player.storage.swdtianshu2.push(target);
2018-04-17 07:32:43 +00:00
// player.popup(skill);
2021-05-18 07:57:26 +00:00
// player.syncStorage('swdtianshu');
2018-04-17 07:32:43 +00:00
// player.updateMarks();
// game.log(player,'学习了','【'+get.translation(skill)+'】');
},
2024-04-15 18:10:02 +00:00
group: "swdtianshu2",
ai: {
threaten: 2,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
swdtianshu2: {
enable: "phaseUse",
filter: function (event, player) {
return (
!player.hasSkill("swdtianshu3") &&
player.storage.swdtianshu &&
player.storage.swdtianshu.length > 0
);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
intro: {
nocount: true,
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
delay: 0,
content: function () {
"step 0";
var list = player.storage.swdtianshu;
if (player.additionalSkills.swdtianshu) {
2021-05-18 07:57:26 +00:00
player.removeSkill(player.additionalSkills.swdtianshu);
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
event.skillai = function (list) {
return get.max(list, get.skillRank, "item");
2018-04-17 07:32:43 +00:00
};
2024-04-15 18:10:02 +00:00
if (event.isMine()) {
var dialog = ui.create.dialog("forcebutton");
dialog.add("选择获得一项技能");
_status.event.list = list;
var clickItem = function () {
_status.event._result = this.link;
2018-04-17 07:32:43 +00:00
game.resume();
};
2024-04-15 18:10:02 +00:00
for (var i = 0; i < list.length; i++) {
if (lib.translate[list[i] + "_info"]) {
var translation = get.translation(list[i]);
if (translation[0] == "新" && translation.length == 3) {
translation = translation.slice(1, 3);
} else {
translation = translation.slice(0, 2);
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
var item = dialog.add(
'<div class="popup pointerdiv" style="width:80%;display:inline-block"><div class="skill">【' +
translation +
"】</div><div>" +
lib.translate[list[i] + "_info"] +
"</div></div>"
);
item.firstChild.addEventListener("click", clickItem);
item.firstChild.link = list[i];
}
}
dialog.add(ui.create.div(".placeholder"));
event.dialog = dialog;
event.switchToAuto = function () {
event._result = event.skillai(list);
2018-04-17 07:32:43 +00:00
game.resume();
};
game.pause();
2024-04-15 18:10:02 +00:00
_status.imchoosing = true;
} else {
event._result = event.skillai(list);
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
_status.imchoosing = false;
if (event.dialog) {
2018-04-17 07:32:43 +00:00
event.dialog.close();
}
2024-04-15 18:10:02 +00:00
var link = result;
2018-04-17 07:32:43 +00:00
player.addSkill(link);
player.skills.remove(link);
2024-04-15 18:10:02 +00:00
player.additionalSkills.swdtianshu = link;
2018-04-17 07:32:43 +00:00
player.popup(link);
2024-04-15 18:10:02 +00:00
var target = player.storage.swdtianshu2[player.storage.swdtianshu.indexOf(link)];
player.markSkillCharacter(
"swdtianshu2",
target,
get.translation(link),
lib.translate[link + "_info"]
);
2018-04-17 07:32:43 +00:00
player.checkMarks();
2024-04-15 18:10:02 +00:00
player.addSkill("swdtianshu3");
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
order: 10,
result: {
player: function (player) {
2018-04-17 07:32:43 +00:00
return 1;
2024-04-15 18:10:02 +00:00
},
},
},
},
swdtianshu3: {
trigger: { global: ["useCardAfter", "useSkillAfter", "phaseAfter"] },
silent: true,
filter: function (event) {
return event.skill != "swdtianshu2";
},
content: function () {
player.removeSkill("swdtianshu3");
},
},
swdtianshu: {
unique: true,
enable: "phaseUse",
filterCard: function (card) {
return get.type(card, "trick") == "trick";
},
filter: function (event, player) {
return player.countCards("h", { type: ["trick", "delay"] }) > 0;
},
filterTarget: function (card, player, target) {
var names = [];
if (target.name && !target.isUnseen(0)) names.add(target.name);
if (target.name1 && !target.isUnseen(0)) names.add(target.name1);
if (target.name2 && !target.isUnseen(1)) names.add(target.name2);
var pss = player.getSkills();
for (var i = 0; i < names.length; i++) {
var info = lib.character[names[i]];
if (info) {
var skills = info[3];
for (var j = 0; j < skills.length; j++) {
if (
lib.translate[skills[j] + "_info"] &&
lib.skill[skills[j]] &&
!lib.skill[skills[j]].unique &&
!pss.includes(skills[j])
) {
2018-04-17 07:32:43 +00:00
return true;
}
}
}
return false;
}
},
2024-04-15 18:10:02 +00:00
group: "swdtianshu_remove",
createDialog: function (player, target, onlylist) {
var names = [];
var list = [];
if (target.name && !target.isUnseen(0)) names.add(target.name);
if (target.name1 && !target.isUnseen(0)) names.add(target.name1);
if (target.name2 && !target.isUnseen(1)) names.add(target.name2);
var pss = player.getSkills();
for (var i = 0; i < names.length; i++) {
var info = lib.character[names[i]];
if (info) {
var skills = info[3];
for (var j = 0; j < skills.length; j++) {
if (
lib.translate[skills[j] + "_info"] &&
lib.skill[skills[j]] &&
!lib.skill[skills[j]].unique &&
!pss.includes(skills[j])
) {
2018-04-17 07:32:43 +00:00
list.push(skills[j]);
}
}
}
}
2024-04-15 18:10:02 +00:00
if (onlylist) return list;
var dialog = ui.create.dialog("forcebutton");
dialog.add("选择获得一项技能");
_status.event.list = list;
var clickItem = function () {
_status.event._result = this.link;
2018-04-17 07:32:43 +00:00
game.resume();
};
2024-04-15 18:10:02 +00:00
for (i = 0; i < list.length; i++) {
if (lib.translate[list[i] + "_info"]) {
var translation = get.translation(list[i]);
if (translation[0] == "新" && translation.length == 3) {
translation = translation.slice(1, 3);
} else {
translation = translation.slice(0, 2);
}
var item = dialog.add(
'<div class="popup pointerdiv" style="width:80%;display:inline-block"><div class="skill">【' +
translation +
"】</div><div>" +
lib.translate[list[i] + "_info"] +
"</div></div>"
);
item.firstChild.addEventListener("click", clickItem);
item.firstChild.link = list[i];
}
}
dialog.add(ui.create.div(".placeholder"));
2018-04-17 07:32:43 +00:00
return dialog;
},
2024-04-15 18:10:02 +00:00
check: function (card) {
return 5 - get.value(card);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
2018-04-17 07:32:43 +00:00
// target.gain(cards,player);
2024-04-15 18:10:02 +00:00
event.skillai = function (list) {
return get.max(list, get.skillRank, "item");
2018-04-17 07:32:43 +00:00
};
2024-04-15 18:10:02 +00:00
if (event.isMine()) {
event.dialog = lib.skill.swdtianshu.createDialog(player, target);
event.switchToAuto = function () {
event._result = event.skillai(event.list);
2018-04-17 07:32:43 +00:00
game.resume();
};
2024-04-15 18:10:02 +00:00
_status.imchoosing = true;
2018-04-17 07:32:43 +00:00
game.pause();
2024-04-15 18:10:02 +00:00
} else {
event._result = event.skillai(
lib.skill.swdtianshu.createDialog(player, target, true)
);
}
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
_status.imchoosing = false;
if (event.dialog) {
2018-04-17 07:32:43 +00:00
event.dialog.close();
}
2024-04-15 18:10:02 +00:00
var link = result;
player.addAdditionalSkill("swdtianshu", link);
2018-04-17 07:32:43 +00:00
player.popup(link);
2024-04-15 18:10:02 +00:00
player.markSkillCharacter(
"swdtianshu",
target,
get.translation(link),
lib.translate[link + "_info"]
);
player.storage.swdtianshu = target;
2018-04-17 07:32:43 +00:00
player.checkMarks();
2024-04-15 18:10:02 +00:00
game.log(player, "获得了技能", "【" + get.translation(link) + "】");
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
order: 1,
result: {
player: function (player, target) {
if (player.countCards("h") > player.hp) return 1;
2018-04-17 07:32:43 +00:00
return 0;
2024-04-15 18:10:02 +00:00
},
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
swdtianshu_remove: {
trigger: { global: "dieAfter" },
silent: true,
filter: function (event, player) {
return event.player == player.storage.swdtianshu;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
player.unmarkSkill("swdtianshu");
player.removeAdditionalSkill("swdtianshu");
2021-05-18 07:57:26 +00:00
delete player.storage.swdtianshu;
2024-04-15 18:10:02 +00:00
},
},
swdtianshu2_old: {
trigger: { player: "phaseBegin" },
direct: true,
priority: -9,
content: function () {
"step 0";
player.chooseTarget(get.prompt("swdtianshu"), lib.skill.swdtianshu.filterTarget).ai =
function (target) {
if (target.maxHp < 5) return Math.random() * (5 - target.maxHp);
return -1;
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.logSkill("swdtianshu", result.targets);
event.target = result.targets[0];
if (event.isMine()) {
2018-04-17 07:32:43 +00:00
ui.auto.hide();
2024-04-15 18:10:02 +00:00
event.dialog = lib.skill.swdtianshu.createDialog(player, result.targets[0]);
2018-04-17 07:32:43 +00:00
game.pause();
2024-04-15 18:10:02 +00:00
} else {
var target = result.targets[0];
var names = [];
var list = [];
if (target.name && !target.isUnseen(0)) names.add(target.name);
if (target.name1 && !target.isUnseen(0)) names.add(target.name1);
if (target.name2 && !target.isUnseen(1)) names.add(target.name2);
var pss = player.getSkills();
for (var i = 0; i < names.length; i++) {
var info = lib.character[names[i]];
if (info) {
var skills = info[3];
for (var j = 0; j < skills.length; j++) {
if (
lib.translate[skills[j] + "_info"] &&
lib.skill[skills[j]] &&
!lib.skill[skills[j]].unique &&
!pss.includes(skills[j])
) {
2018-04-17 07:32:43 +00:00
list.push(skills[j]);
}
}
}
}
2024-04-15 18:10:02 +00:00
if (!list.length) {
2018-04-17 07:32:43 +00:00
event.finish();
2024-04-15 18:10:02 +00:00
} else {
event._result = list.randomGet();
2018-04-17 07:32:43 +00:00
}
}
2024-04-15 18:10:02 +00:00
} else {
2018-04-17 07:32:43 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (player.storage.swdtianshu) {
player.unmark(player.storage.swdtianshu + "_charactermark");
2018-04-17 07:32:43 +00:00
}
ui.auto.show();
2024-04-15 18:10:02 +00:00
if (event.dialog) {
2018-04-17 07:32:43 +00:00
event.dialog.close();
}
2024-04-15 18:10:02 +00:00
var link = result;
var target = event.target;
2018-04-17 07:32:43 +00:00
player.addSkill(link);
player.skills.remove(link);
2024-04-15 18:10:02 +00:00
player.additionalSkills.swdtianshu = link;
player.markCharacter(target.name, {
name: get.translation(link),
content: lib.translate[link + "_info"],
2018-04-17 07:32:43 +00:00
});
2024-04-15 18:10:02 +00:00
game.addVideo("markCharacter", player, {
name: "get.translation(link)",
content: lib.translate[link + "_info"],
id: "swdtianshu",
target: target.name,
2018-04-17 07:32:43 +00:00
});
2024-04-15 18:10:02 +00:00
player.storage.swdtianshu = target.name;
2018-04-17 07:32:43 +00:00
player.checkMarks();
player.popup(link);
},
2024-04-15 18:10:02 +00:00
ai: {
expose: 0.2,
threaten: 2,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
luomei: {
trigger: { player: ["useCard", "respond"] },
frequent: true,
filter: function (event, player) {
if (!event.cards) return false;
if (event.cards.length != 1) return false;
for (var i = 0; i < event.cards.length; i++) {
if (get.suit(event.cards[i]) == "club") return true;
2018-04-17 07:32:43 +00:00
}
return false;
},
2024-04-15 18:10:02 +00:00
content: function () {
var num = 0;
for (var i = 0; i < trigger.cards.length; i++) {
if (get.suit(trigger.cards[i]) == "club") num++;
2018-04-17 07:32:43 +00:00
}
player.draw(num);
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
xingdian: {
enable: "phaseUse",
usable: 1,
filterCard: true,
filter: function (event, player) {
return player.countCards("h") > 0;
2018-04-17 07:32:43 +00:00
},
2019-06-07 03:46:13 +00:00
// filterTarget:function(card,player,target){
// return player!=target&&target.countCards('h')>0;
// },
2024-04-15 18:10:02 +00:00
check: function (card) {
return 7 - get.value(card);
2018-04-17 07:32:43 +00:00
},
2019-06-07 03:46:13 +00:00
// selectTarget:[1,2],
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
event.list = game
.filterPlayer(function (current) {
return current.isEnemyOf(player) && current.countCards("he");
})
.randomGets(2)
.sortBySeat();
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (event.list.length) {
var target = event.list.shift();
player.line(target, "green");
if (event.list.length) {
target.randomDiscard("he", false);
} else {
target.randomDiscard("he");
2019-06-07 03:46:13 +00:00
}
event.redo();
}
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
order: 9,
result: {
player: function (player) {
if (
game.countPlayer(function (current) {
return current.isEnemyOf(player) && current.countCards("he");
}) >= 2
) {
2019-06-07 03:46:13 +00:00
return 1;
}
return 0;
2024-04-15 18:10:02 +00:00
},
2019-06-07 03:46:13 +00:00
// target:function(player,target){
// if(target.countCards('h')==1) return -1.5;
// return -1;
// }
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
yulin: {
trigger: { player: "damageBefore" },
priority: -10,
filter: function (event, player) {
return player.countCards("he", { type: "equip" });
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
direct: true,
content: function () {
"step 0";
var next = player.chooseToDiscard(
"he",
"是否弃置一张装备牌抵消伤害?",
function (card, player) {
return get.type(card) == "equip";
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
);
next.logSkill = "yulin";
next.ai = function (card) {
if (player.hp == 1 || trigger.num > 1) {
return 9 - get.value(card);
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
if (player.hp == 2) {
return 8 - get.value(card);
}
return 7 - get.value(card);
2018-04-17 07:32:43 +00:00
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
2018-04-17 07:32:43 +00:00
game.delay();
trigger.cancel();
}
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
funiao: {
enable: "phaseUse",
usable: 1,
prepare: "give2",
filterTarget: function (card, player, target) {
if (player == target) return false;
2018-04-17 07:32:43 +00:00
return true;
},
2024-04-15 18:10:02 +00:00
filter: function (event, player) {
return player.countCards("h") > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterCard: true,
check: function (card) {
if (card.name == "du") return 20;
return 7 - get.value(card);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
discard: false,
content: function () {
"step 0";
target.gain(cards, player).delay = false;
2018-04-17 07:32:43 +00:00
player.draw();
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (target.countCards("h")) {
2019-06-07 03:46:13 +00:00
player.viewHandcards(target);
}
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
result: {
target: function (player, target) {
if (ui.selected.cards.length && ui.selected.cards[0].name == "du") {
2018-04-17 07:32:43 +00:00
return -1;
}
return 1;
},
},
2024-04-15 18:10:02 +00:00
order: 2,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
funiao_old: {
enable: "phaseUse",
discard: false,
prepare: "give2",
filterTarget: function (card, player, target) {
if (player == target) return false;
if (player.countCards("h") == 0) return false;
if (target.storage.funiao) return false;
2018-04-17 07:32:43 +00:00
return true;
},
2024-04-15 18:10:02 +00:00
filterCard: true,
check: function (card) {
if (card.name == "du") return 20;
if (get.owner(card).countCards("h") < get.owner(card).hp) return 0;
return 4 - get.value(card);
},
content: function () {
"step 0";
target.gain(cards, player);
target.storage.funiao = true;
target.addSkill("funiao2");
2018-04-17 07:32:43 +00:00
// game.delay();
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (event.isMine()) {
event.dialog = ui.create.dialog(
get.translation(target.name) + "的手牌",
target.getCards("h")
);
2018-04-17 07:32:43 +00:00
game.pause();
2024-04-15 18:10:02 +00:00
ui.create.confirm("o");
} else {
2018-04-17 07:32:43 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 2";
2018-04-17 07:32:43 +00:00
event.dialog.close();
},
2024-04-15 18:10:02 +00:00
ai: {
result: {
target: function (player, target) {
if (ui.selected.cards.length && ui.selected.cards[0].name == "du") {
2018-04-17 07:32:43 +00:00
return -1;
}
return 1;
},
},
2024-04-15 18:10:02 +00:00
order: 1,
},
},
funiao2: {
trigger: { global: "phaseUseEnd" },
forced: true,
popup: false,
content: function () {
player.storage.funiao = false;
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
xuehuang_old: {
enable: "phaseUse",
usable: 1,
filterCard: { color: "red" },
nodelay: true,
check: function (card) {
return 6 - get.value(card);
},
filterTarget: function (card, player, target) {
return get.distance(player, target) <= 1 || player == target;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filter: function (event, player) {
return player.countCards("h", { color: "red" }) > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
selectTarget: -1,
content: function () {
target.damage("fire");
},
line: "fire",
ai: {
order: 1,
result: {
target: function (player, target) {
var eff = get.damageEffect(target, player, target, "fire");
if (player == target && player.hp <= 1 && eff < 0) {
eff * 10;
}
return eff;
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
},
xuehuang: {
enable: "phaseUse",
init: function (player) {
player.storage.xuehuang = false;
},
intro: {
content: "limited",
},
mark: true,
unique: true,
skillAnimation: true,
animationColor: "fire",
line: "fire",
filter: function (event, player) {
return (
!player.storage.xuehuang &&
player.countCards("h", { color: "red" }) > 0 &&
player.countCards("h", { color: "black" }) == 0
);
},
content: function () {
"step 0";
player.storage.xuehuang = true;
player.awakenSkill("xuehuang");
2018-04-17 07:32:43 +00:00
player.showHandcards();
2024-04-15 18:10:02 +00:00
var cards = player.getCards("h");
2018-04-17 07:32:43 +00:00
player.discard(cards);
2024-04-15 18:10:02 +00:00
event.num = cards.length;
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (event.num) {
var targets = player.getEnemies().randomGets(2);
if (!targets.length) {
2018-04-17 07:32:43 +00:00
event.finish();
return;
}
2024-04-15 18:10:02 +00:00
player.useCard({ name: "sha", nature: "fire" }, targets);
2018-04-17 07:32:43 +00:00
event.num--;
event.redo();
}
},
2024-04-15 18:10:02 +00:00
ai: {
order: 9,
result: {
player: function (player) {
if (player.countCards("h", { color: "red" }) < 2) return 0;
if (
player.hasCard(function (card) {
return get.color(card) == "red" && get.value(card) > 8;
})
) {
2018-04-17 07:32:43 +00:00
return 0;
}
return 1;
2024-04-15 18:10:02 +00:00
},
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
zhuyu: {
trigger: { global: "damageBegin" },
filter: function (event, player) {
if (!event.player.isLinked()) return false;
if (!event.notLink()) return false;
if (player.countCards("he", { color: "red" })) return true;
2018-04-17 07:32:43 +00:00
return false;
},
2024-04-15 18:10:02 +00:00
direct: true,
content: function () {
"step 0";
var next = player.chooseToDiscard(
"朱羽:是否弃置一张红色牌使" + get.translation(trigger.player) + "受到的伤害+1",
"he",
function (card) {
return get.color(card) == "red";
}
);
next.logSkill = ["zhuyu", trigger.player, "fire"];
var num = game.countPlayer(function (current) {
if (current.isLinked()) {
if (trigger.hasNature()) {
return get.sgn(get.damageEffect(current, player, player, "fire"));
} else {
if (current == trigger.player) {
return get.sgn(get.damageEffect(current, player, player, "fire"));
} else {
return 2 * get.sgn(get.damageEffect(current, player, player, "fire"));
2018-04-17 07:32:43 +00:00
}
}
}
});
2024-04-15 18:10:02 +00:00
next.ai = function (card) {
if (trigger.player.hasSkillTag("nofire")) return 0;
if (num > 0) {
return 9 - get.value(card);
2018-04-17 07:32:43 +00:00
}
return 0;
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
2018-04-17 07:32:43 +00:00
trigger.num++;
2024-04-15 18:10:02 +00:00
game.setNature(trigger, "fire");
}
},
},
ningshuang: {
trigger: { target: "useCardToBegin" },
filter: function (event, player) {
if (get.color(event.card) != "black") return false;
if (!event.player) return false;
if (event.player == player) return false;
if (event.player.isLinked() && event.player.isTurnedOver()) return false;
if (player.countCards("he", { color: "black" })) return true;
2018-04-17 07:32:43 +00:00
return false;
},
2024-04-15 18:10:02 +00:00
direct: true,
content: function () {
"step 0";
var next = player.chooseToDiscard(
"凝霜:是否弃置一张黑色牌使" + get.translation(trigger.player) + "横置或翻面?",
"he",
function (card) {
return get.color(card) == "black";
}
);
next.logSkill = ["ningshuang", trigger.player];
next.ai = function (card) {
if (trigger.player.hasSkillTag("noturn") && trigger.player.isLinked()) return 0;
if (get.attitude(player, trigger.player) < 0) {
return 9 - get.value(card);
2018-04-17 07:32:43 +00:00
}
return 0;
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
if (trigger.player.isTurnedOver()) {
2018-04-17 07:32:43 +00:00
trigger.player.loseHp();
}
2024-04-15 18:10:02 +00:00
if (trigger.player.isLinked()) {
2018-04-17 07:32:43 +00:00
trigger.player.turnOver();
2024-04-15 18:10:02 +00:00
} else {
2018-04-17 07:32:43 +00:00
trigger.player.link();
player.draw();
}
}
},
2024-04-15 18:10:02 +00:00
ai: {
effect: {
target: function (card, player, target) {
if (
get.color(card) == "black" &&
get.attitude(target, player) < 0 &&
target.countCards("h") > 0
) {
return [1, 0.1, 0, -target.countCards("h") / 4];
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
},
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
zaowu_old: {
enable: "phaseUse",
usable: 1,
position: "he",
filterCard: function (card, player, target) {
if (ui.selected.cards.length == 0) return true;
for (var i = 0; i < ui.selected.cards.length; i++) {
if (get.type(ui.selected.cards[i], "trick") == get.type(card, "trick")) return false;
2018-04-17 07:32:43 +00:00
}
return true;
},
2024-04-15 18:10:02 +00:00
selectCard: 3,
check: function (card) {
return 10 - get.value(card);
},
content: function () {
"step 0";
var list = [];
var suit = ["heart", "diamond", "club", "spade"].randomGet();
var number = Math.floor(Math.random() * 13) + 1;
for (var i in lib.card) {
if (lib.card[i].mode && lib.card[i].mode.includes(lib.config.mode) == false) continue;
if (get.value({ name: i }) >= 10) continue;
if (i != "list") list.push([suit, number, i]);
}
var dialog = ui.create.dialog([list, "vcard"]);
player.chooseButton(dialog, 2, true, function (button) {
return get.value({ name: button.link[2] }, player);
2018-04-17 07:32:43 +00:00
});
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
var cards = [ui.create.card(), ui.create.card()];
2018-04-17 07:32:43 +00:00
cards[0].init(result.buttons[0].link);
cards[1].init(result.buttons[1].link);
player.gain(cards);
player.$gain(cards);
game.delay();
},
2024-04-15 18:10:02 +00:00
ai: {
order: 8,
result: {
player: 1,
},
threaten: 1.6,
},
},
xielv: {
trigger: { player: "phaseDiscardEnd" },
filter: function (event, player) {
var cards = player.getCards("h");
if (cards.length < 2) return false;
var color = get.color(cards[0]);
for (var i = 1; i < cards.length; i++) {
if (get.color(cards[i]) != color) return false;
}
if (player.isDamaged()) return true;
return game.hasPlayer(function (current) {
return current.countCards("j");
2018-04-17 07:32:43 +00:00
});
},
2024-04-15 18:10:02 +00:00
check: function (event, player) {
if (player.isDamaged()) return true;
return (
game.countPlayer(function (current) {
if (current.countCards("j")) return get.sgn(get.attitude(player, current));
}) > 0
);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
2018-04-17 07:32:43 +00:00
player.showHandcards();
2024-04-15 18:31:36 +00:00
"step 1";
2018-04-17 07:32:43 +00:00
player.recover();
2024-04-15 18:10:02 +00:00
event.targets = game.filterPlayer(function (current) {
return current.countCards("j");
2018-04-17 07:32:43 +00:00
});
event.targets.sortBySeat();
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (event.targets.length) {
var current = event.targets.shift();
var js = current.getCards("j");
if (js.length) {
2018-04-17 07:32:43 +00:00
current.discard(js);
2024-04-15 18:10:02 +00:00
player.line(current, "green");
2018-04-17 07:32:43 +00:00
}
event.redo();
}
},
2024-04-15 18:10:02 +00:00
ai: {
expose: 0.1,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
xiaomoyu: {
trigger: { source: "damageEnd" },
priority: 1,
forced: true,
filter: function (event, player) {
return !player.hasSkill("xiaomoyu2");
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
player.addTempSkill("xiaomoyu2");
if (player.hp < player.maxHp) {
2018-04-17 07:32:43 +00:00
player.recover();
event.finish();
2024-04-15 18:10:02 +00:00
} else {
2018-04-17 07:32:43 +00:00
player.draw();
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.control == "draw_card") {
2018-04-17 07:32:43 +00:00
player.draw();
2024-04-15 18:10:02 +00:00
} else {
2018-04-17 07:32:43 +00:00
player.recover();
}
},
2024-04-15 18:10:02 +00:00
ai: {
effect: {
target: function (card, player, target, current) {
if (card.name == "sha" && get.color(card) == "red") {
return [1, -2];
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
},
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
xiaomoyu2: {},
xielv_old: {
trigger: { player: "phaseDiscardEnd" },
filter: function (event, player) {
var cards = player.getCards("h");
if (cards.length < 2) return false;
var color = get.color(cards[0]);
for (var i = 1; i < cards.length; i++) {
if (get.color(cards[i]) != color) return false;
2018-04-17 07:32:43 +00:00
}
return true;
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
2018-04-17 07:32:43 +00:00
player.showHandcards();
2024-04-15 18:31:36 +00:00
"step 1";
"step 2";
2024-04-15 18:10:02 +00:00
var num = player.countCards("h");
event.color = get.color(player.getCards("h")[0]);
player.chooseTarget(
"选择至多" + num + "名角色各摸一张牌",
[1, num],
function (card, player, target) {
return true;
}
).ai = function (target) {
return get.attitude(player, target);
};
2024-04-15 18:31:36 +00:00
"step 3";
2024-04-15 18:10:02 +00:00
if (result.bool) {
event.num = 0;
event.targets = result.targets;
} else {
2018-04-17 07:32:43 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 4";
2024-04-15 18:10:02 +00:00
if (event.num < event.targets.length) {
event.current = event.targets[event.num];
2018-04-17 07:32:43 +00:00
event.current.draw();
2024-04-15 18:10:02 +00:00
} else {
2018-04-17 07:32:43 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 5";
2024-04-15 18:10:02 +00:00
var renum = event.current.countCards("e", { color: event.color });
if (renum) {
2018-04-17 07:32:43 +00:00
event.current.recover();
}
event.num++;
event.goto(4);
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 1.4,
expose: 0.1,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
xiangu: {
mod: {
maxHandcard: function (player, num) {
if (player.hp < player.maxHp) return num + player.maxHp - player.hp;
},
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
tianhuo: {
enable: "phaseUse",
filterTarget: function (card, player, target) {
return target.countCards("j") > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
usable: 1,
selectTarget: -1,
filter: function () {
return game.hasPlayer(function (current) {
return current.countCards("j");
2018-04-17 07:32:43 +00:00
});
},
2024-04-15 18:10:02 +00:00
line: "fire",
content: function () {
"step 0";
event.num = target.countCards("j");
target.discard(target.getCards("j"));
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
target.damage(event.num, "fire", "nosource");
},
ai: {
order: 1,
result: {
target: function (player, target) {
var eff = get.damageEffect(target, player, target, "fire");
if (eff >= 0) return eff + 1;
var judges = target.getCards("j");
if (!judges.length) return 0;
if (target.hp == 1 || judges.length > 1) return -judges.length;
var name = judges[0].viewAs || judges[0].name;
if (name == "shandian" || name == "huoshan" || name == "hongshui")
return -judges.length;
2018-04-17 07:32:43 +00:00
return 0;
2024-04-15 18:10:02 +00:00
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
},
huanyin: {
trigger: { target: "useCardToBefore" },
forced: true,
priority: 5.9,
filter: function (event, player) {
return event.player != player;
},
content: function () {
"step 0";
var effect = get.effect(player, trigger.card, trigger.player, player);
player.judge(function (card) {
switch (get.suit(card)) {
case "spade":
return -effect;
case "heart":
return 1;
default:
return 0;
2018-04-17 07:32:43 +00:00
}
});
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
switch (result.suit) {
case "spade": {
2018-04-17 07:32:43 +00:00
trigger.cancel();
break;
}
2024-04-15 18:10:02 +00:00
case "heart": {
2018-04-17 07:32:43 +00:00
player.draw();
break;
2017-05-06 07:44:42 +00:00
}
}
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
effect: {
target: function (card, player, target) {
return 0.7;
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
threaten: 0.8,
},
},
xuanzhou: {
enable: "phaseUse",
usable: 1,
discard: false,
filter: function (event, player) {
return player.countCards("he", { type: "trick" }) > 0;
},
prepare: "throw",
position: "he",
filterCard: { type: "trick" },
filterTarget: function (card, player, target) {
return player != target;
},
check: function (card) {
return 7 - get.value(card);
},
content: function () {
"step 0";
var list = [];
for (var i in lib.card) {
if (lib.card[i].mode && lib.card[i].mode.includes(lib.config.mode) == false) continue;
if (lib.card[i].type == "delay") list.push([cards[0].suit, cards[0].number, i]);
}
var dialog = ui.create.dialog("玄咒", [list, "vcard"]);
var bing = target.countCards("h") <= 1;
player.chooseButton(dialog, true, function (button) {
if (get.effect(target, { name: button.link[2] }, player, player) > 0) {
if (button.link[2] == "bingliang") {
if (bing) return 2;
2018-04-17 07:32:43 +00:00
return 0.7;
}
2024-04-15 18:10:02 +00:00
if (button.link[2] == "lebu") {
2018-04-17 07:32:43 +00:00
return 1;
}
2024-04-15 18:10:02 +00:00
if (button.link[2] == "guiyoujie") {
2018-04-17 07:32:43 +00:00
return 0.5;
}
2024-04-15 18:10:02 +00:00
if (button.link[2] == "caomu") {
2018-04-17 07:32:43 +00:00
return 0.3;
}
return 0.2;
}
return 0;
2024-04-15 18:10:02 +00:00
}).filterButton = function (button) {
2018-04-17 07:32:43 +00:00
return !target.hasJudge(button.link[2]);
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
target.addJudge(result.links[0][2], cards);
},
ai: {
result: {
player: function (player, target) {
var eff = 0;
for (var i in lib.card) {
if (lib.card[i].type == "delay") {
var current = get.effect(target, { name: i }, player, player);
if (current > eff) {
eff = current;
2017-05-10 19:08:28 +00:00
}
}
}
return eff;
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
order: 9.5,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
tianlun: {
unique: true,
trigger: { global: "judge" },
direct: true,
filter: function (event) {
if (event.card) return true;
return game.hasPlayer(function (current) {
return current.countCards("j");
2018-04-17 07:32:43 +00:00
});
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
var list = [];
if (trigger.card) list.push(trigger.card);
var players = game.filterPlayer();
for (var i = 0; i < players.length; i++) {
list = list.concat(players[i].getCards("j"));
}
var dialog = ui.create.dialog(
get.translation(trigger.player) +
"的" +
(trigger.judgestr || "") +
"判定为" +
get.translation(trigger.player.judging[0]) +
"" +
get.prompt("tianlun"),
list,
"hidden"
);
player.chooseButton(dialog, function (button) {
var card = button.link;
var trigger = _status.event.parent._trigger;
var player = _status.event.player;
var result = trigger.judge(card) - trigger.judge(trigger.player.judging[0]);
var attitude = get.attitude(player, trigger.player);
return result * attitude;
2018-04-17 07:32:43 +00:00
});
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
event.card = result.buttons[0].link;
if (get.owner(event.card)) get.owner(event.card).discard(event.card);
else trigger.player.$throw(event.card, 1000);
if (event.card.clone) {
event.card.clone.classList.add("thrownhighlight");
game.addVideo("highlightnode", player, get.cardInfo(event.card));
}
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (event.card) {
player.logSkill("tianlun", trigger.player);
2018-04-17 07:32:43 +00:00
trigger.player.judging[0].discard();
2024-04-15 18:10:02 +00:00
trigger.player.judging[0] = event.card;
2018-04-17 07:32:43 +00:00
trigger.position.appendChild(event.card);
2024-04-15 18:10:02 +00:00
game.log(trigger.player, "的判定牌改为", event.card);
event.card.expired = true;
2018-04-17 07:32:43 +00:00
game.delay(2);
}
},
2024-04-15 18:10:02 +00:00
ai: {
tag: {
rejudge: 0.6,
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
lanzhi_old: {
trigger: { source: "damageBefore" },
logTarget: "player",
check: function (event, player) {
if (player.hp == 1 && event.player.hp > 1) return true;
var eff = get.damageEffect(event.player, player, player);
if (player.hp == player.maxHp) return eff < 0;
return eff <= 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
2018-04-17 07:32:43 +00:00
trigger.cancel();
player.recover();
},
},
2024-04-15 18:10:02 +00:00
lanzhi: {
trigger: { player: "useCard" },
filter: function (event, player) {
if (get.suit(event.card) == "club") {
return game.hasPlayer(function (current) {
return current.hp <= player.hp && current.isDamaged();
2018-04-17 07:32:43 +00:00
});
}
return false;
},
2024-04-15 18:10:02 +00:00
prompt: function (event, player) {
var list = game.filterPlayer(function (current) {
return current.hp <= player.hp && current.isDamaged();
2018-04-17 07:32:43 +00:00
});
2024-04-15 18:10:02 +00:00
return get.prompt("lanzhi", list);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
check: function (event, player) {
var list = game.filterPlayer(function (current) {
return current.hp <= player.hp && current.isDamaged();
2018-04-17 07:32:43 +00:00
});
2024-04-15 18:10:02 +00:00
var num = 0;
for (var i = 0; i < list.length; i++) {
var eff = get.recoverEffect(list[i], player, player);
if (eff > 0) {
2018-04-17 07:32:43 +00:00
num++;
2024-04-15 18:10:02 +00:00
} else {
2018-04-17 07:32:43 +00:00
num--;
}
}
2024-04-15 18:10:02 +00:00
return num > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
var list = game.filterPlayer(function (current) {
return current.hp <= player.hp && current.isDamaged();
2018-04-17 07:32:43 +00:00
});
2024-04-15 18:10:02 +00:00
player.line(list, "green");
2018-04-17 07:32:43 +00:00
list.sort(lib.sort.seat);
2024-04-15 18:10:02 +00:00
event.list = list;
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (event.list.length) {
2018-04-17 07:32:43 +00:00
event.list.shift().recover();
event.redo();
}
},
2024-04-15 18:10:02 +00:00
ai: {
expose: 0.3,
threaten: 1.5,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
lanzhi2: {},
duanyi: {
enable: "phaseUse",
usable: 1,
2019-06-07 03:46:13 +00:00
// alter:true,
2024-04-15 18:10:02 +00:00
filter: function (event, player) {
return player.countCards("h", "sha") > 1;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterCard: { name: "sha" },
selectCard: 2,
filterTarget: function (card, player, target) {
return player != target;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
check: function (card) {
return 10 - get.value(card);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
2018-04-17 07:32:43 +00:00
target.damage();
2024-04-15 18:10:02 +00:00
if (get.is.altered("duanyi")) {
2018-04-17 07:32:43 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
var he = target.getCards("he");
target.discard(he.randomGets(target.maxHp - target.hp));
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
expose: 0.3,
result: {
target: function (player, target) {
return get.damageEffect(target, player) - (target.maxHp - target.hp) / 2;
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
order: 5,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
guxing: {
group: ["guxing1", "guxing3"],
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
guxing1: {
enable: "phaseUse",
usable: 1,
filter: function (event, player) {
var min = Math.max(1, player.maxHp - player.hp);
return (
player.countCards("h") <= min &&
player.countCards("h") > 0 &&
lib.filter.filterCard({ name: "sha" }, player)
);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterCard: true,
selectCard: -1,
2018-04-17 07:32:43 +00:00
// viewAs:{name:'sha'},
2024-04-15 18:10:02 +00:00
discard: false,
prepare: "throw",
filterTarget: function (card, player, target) {
return lib.filter.targetEnabled({ name: "sha" }, player, target);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
2018-04-17 07:32:43 +00:00
delete player.storage.guxing;
targets.sort(lib.sort.seat);
2024-04-15 18:10:02 +00:00
player.useCard({ name: "sha" }, cards, targets, "guxing").animate = false;
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (player.storage.guxing) {
2018-04-17 07:32:43 +00:00
player.draw(player.storage.guxing);
delete player.storage.guxing;
}
},
2024-04-15 18:10:02 +00:00
multitarget: true,
multiline: true,
selectTarget: [1, 3],
ai: {
order: function () {
if (_status.event.player.countCards("h") == 1) return 10;
return get.order({ name: "sha" }) + 0.1;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
result: {
target: function (player, target) {
return get.effect(target, { name: "sha" }, player, target);
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
threaten: function (player, target) {
if (target.hp < target.maxHp - 1) return 1.5;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
pretao: true,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
guxing3: {
trigger: { source: "damageAfter" },
forced: true,
popup: false,
filter: function (event) {
return event.parent.skill == "guxing";
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
if (!player.storage.guxing) {
player.storage.guxing = 1;
} else {
2018-04-17 07:32:43 +00:00
player.storage.guxing++;
}
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
miles_xueyi: {
trigger: { player: "damageBefore" },
forced: true,
priority: 10,
content: function () {
2018-04-17 07:32:43 +00:00
trigger.cancel();
player.loseHp();
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
swdxueyi: {
trigger: { player: "phaseDrawBegin" },
frequent: true,
content: function () {
trigger.num += player.maxHp - player.hp;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
effect: {
target: function (card, player, target) {
if (get.tag(card, "damage")) {
if (target.hp == target.maxHp) return [0, 1];
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
if (get.tag(card, "recover") && player.hp >= player.maxHp - 1) return [0, 0];
},
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
jifeng: {
mod: {
selectTarget: function (card, player, range) {
if (range[0] != 1 || range[1] != 1) return;
var range2 = get.select(get.info(card).selectTarget);
if (range2[0] != 1 && range2[1] != 1) return;
if (card.name == "sha" || get.type(card) == "trick") range[1] = Infinity;
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
trigger: { player: "useCardToBefore" },
priority: 6,
forced: true,
popup: false,
filter: function (event, player) {
if (event.targets.length <= 1) return false;
if (event.card.name == "sha") return true;
else if (get.type(event.card) == "trick") {
var range = get.select(get.info(event.card).selectTarget);
if (range[0] == 1 && range[1] == 1) return true;
2018-04-17 07:32:43 +00:00
}
return false;
},
2024-04-15 18:10:02 +00:00
content: function () {
if (Math.random() > (1.3 + trigger.targets.length / 5) / trigger.targets.length) {
trigger.target.popup("失误");
2018-04-17 07:32:43 +00:00
trigger.cancel();
}
2024-04-15 18:10:02 +00:00
},
},
mohua2: {
unique: true,
trigger: { player: "dying" },
priority: 10,
forced: true,
content: function () {
"step 0";
player.removeSkill("miles_xueyi");
player.removeSkill("aojian");
player.removeSkill("mohua2");
player.addSkill("moyan");
player.addSkill("miedao");
player.addSkill("jifeng");
player.addSkill("swd_xiuluo");
2024-04-15 18:10:02 +00:00
lib.character.swd_satan = [
"",
"qun",
4,
["moyan", "miedao", "jifeng", "swd_xiuluo"],
["temp"],
];
if (player.name == "swd_miles") player.name = "swd_satan";
if (player.name1 == "swd_miles") player.name1 = "swd_satan";
if (player.name2 == "swd_miles") {
player.name2 = "swd_satan";
player.node.avatar2.setBackground("swd_satan", "character");
} else {
player.node.avatar.setBackground("swd_satan", "character");
}
2024-04-15 18:31:36 +00:00
"step 1";
2018-04-17 07:32:43 +00:00
player.recover(2);
2024-04-15 18:31:36 +00:00
"step 2";
2018-04-17 07:32:43 +00:00
player.draw(2);
},
},
2024-04-15 18:10:02 +00:00
liexin: {
trigger: { source: "damageBegin" },
direct: true,
content: function () {
"step 0";
player.chooseToDiscard("是否弃置一张牌使伤害+1", "he").ai = function (card) {
if (get.attitude(player, trigger.player) < 0) {
return 7 - get.value(card);
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.logSkill("liexin");
2018-04-17 07:32:43 +00:00
trigger.num++;
}
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 1.8,
},
},
mohua: {
trigger: { player: "dying" },
priority: 10,
forced: true,
mode: ["identity"],
content: function () {
"step 0";
var skills = ["wuying", "xiehun", "jumo"];
if (lib.config.mode_choice.double_character) {
skills.push("swd_xiuluo");
}
lib.character.swd_satan = ["", "qun", 6, skills, ["temp"]];
if (!_status.ai.customAttitude) _status.ai.customAttitude = [];
_status.ai.customAttitude.push(function (from, to) {
if (from.storage.xiehun) {
if (to == game.zhu) return 10;
2018-04-17 07:32:43 +00:00
return -10;
}
2024-04-15 18:10:02 +00:00
if (to.storage.xiehun) {
2018-04-17 07:32:43 +00:00
return 0;
}
});
player.uninit();
2024-04-15 18:10:02 +00:00
player.init("swd_satan");
player.hp = game.players.length;
2018-04-17 07:32:43 +00:00
player.update();
2024-04-15 18:10:02 +00:00
game.zhu = player;
player.identity = "zhu";
player.setIdentity("魔");
player.identityShown = true;
var players = get.players(false, true);
for (var i = 0; i < players.length; i++) {
if (players[i] != player) {
players[i].identity = "fan";
players[i].setIdentity("人");
players[i].identityShown = true;
2018-04-17 07:32:43 +00:00
}
}
player.draw(2);
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
while (_status.event.name != "phaseLoop") {
_status.event = _status.event.parent;
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
_status.event.player = player;
_status.event.step = 0;
2018-04-17 07:32:43 +00:00
ui.clear();
2024-04-15 18:10:02 +00:00
},
},
wuying: {
mod: {
selectTarget: function (card, player, range) {
if (card.name == "sha") {
range[0] = -1;
range[1] = -1;
}
if (get.type(card) == "trick" && (range[0] == 1) & (range[1] == 1)) {
range[0] = -1;
range[1] = -1;
}
},
},
},
xiehun: {
group: ["xiehun1", "xiehun2"],
intro: {
content: "已陷入混乱状态",
show: true,
},
},
xiehun1: {
trigger: { player: "phaseBegin" },
forced: true,
popup: false,
content: function () {
if (game.me.storage.xiehun) ui.auto.show();
for (var i = 0; i < game.players.length; i++) {
2018-04-17 07:32:43 +00:00
delete game.players[i].storage.xiehun;
}
2024-04-15 18:10:02 +00:00
if (ui.auto.innerHTML == "托管") _status.auto = false;
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
xiehun2: {
trigger: { source: "damageBegin" },
filter: function (event, player) {
return event.player != player;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
forced: true,
content: function () {
trigger.player.storage.xiehun = true;
if (trigger.player == game.me) {
_status.auto = true;
2018-04-17 07:32:43 +00:00
ui.auto.hide();
}
// player.chooseToDiscard(true,'h');
2024-04-15 18:10:02 +00:00
},
},
jumo2: {
trigger: { player: "phaseDrawBegin" },
forced: true,
priority: -10,
content: function () {
var num = Math.max(2, game.players.length - 1);
if (lib.config.mode_choice.double_character) {
2018-04-17 07:32:43 +00:00
num++;
}
2024-04-15 18:10:02 +00:00
trigger.num = Math.min(4, num);
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
jumo: {
trigger: { player: "phaseEnd" },
forced: true,
content: function () {
var num = 0;
for (var i = 0; i < game.players.length; i++) {
if (player != game.players[i] && !game.players[i].storage.xiehun) num++;
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
num = 2 * num - game.players.length;
if (get.config("double_character")) {
2018-04-17 07:32:43 +00:00
num++;
}
2024-04-15 18:10:02 +00:00
if (num > 0) {
2018-04-17 07:32:43 +00:00
player.draw(num);
}
},
},
2024-04-15 18:10:02 +00:00
duijue: {
enable: "phaseUse",
mark: true,
unique: true,
forceunique: true,
skillAnimation: true,
filter: function (event, player) {
if (event.skill) return false;
2018-04-17 07:32:43 +00:00
return !player.storage.duijue;
},
2024-04-15 18:10:02 +00:00
filterTarget: function (card, player, target) {
if (target.hp <= 1) return false;
2018-04-17 07:32:43 +00:00
// if(get.mode()=='identity'&&_status.mode=='zhong'&&game.zhu&&!game.zhu.isZhu){
// return target==game.zhong;
// }
// if(target.identity=='zhu'||get.is.jun(target)) return false;
2024-04-15 18:10:02 +00:00
return player != target;
},
content: function () {
player.storage.duijue = true;
player.awakenSkill("duijue");
var evt = _status.event;
for (var i = 0; i < 10; i++) {
if (evt && evt.getParent) {
evt = evt.getParent();
}
if (evt.name == "phaseUse") {
evt.skipped = true;
2018-04-17 07:32:43 +00:00
break;
}
}
2024-04-15 18:10:02 +00:00
player.storage.duijue3 = target;
player.addSkill("duijue3");
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
duijueLoop: function () {
"step 0";
targets[0].phase("duijue");
2024-04-15 18:31:36 +00:00
"step 1";
2018-04-17 07:32:43 +00:00
ui.duijueLoop.round--;
2024-04-15 18:10:02 +00:00
ui.duijueLoop.innerHTML = get.cnNumber(ui.duijueLoop.round) + "回合";
if (targets[0].isDead() || targets[1].isDead() || ui.duijueLoop.round == 0) {
2018-04-17 07:32:43 +00:00
event.goto(3);
2024-04-15 18:10:02 +00:00
} else {
targets[1].phase("duijue");
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:31:36 +00:00
"step 2";
2018-04-17 07:32:43 +00:00
ui.duijueLoop.round--;
2024-04-15 18:10:02 +00:00
ui.duijueLoop.innerHTML = get.cnNumber(ui.duijueLoop.round) + "回合";
if (targets[0].isDead() || targets[1].isDead() || ui.duijueLoop.round == 0) {
2018-04-17 07:32:43 +00:00
event.goto(3);
2024-04-15 18:10:02 +00:00
} else {
2018-04-17 07:32:43 +00:00
event.goto(0);
}
2024-04-15 18:31:36 +00:00
"step 3";
2024-04-15 18:10:02 +00:00
for (var i = 0; i < event.backup.length; i++) {
event.backup[i].in("duijue");
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
if (ui.duijueLoop) {
2018-04-17 07:32:43 +00:00
ui.duijueLoop.remove();
delete ui.duijueLoop;
}
},
2024-04-15 18:10:02 +00:00
init: function (player) {
player.storage.duijue = false;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
intro: {
content: "limited",
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
order: 1,
result: {
target: function (player, target) {
if (target.hp == 1 && player.hp >= 3) return -1;
if (target.hp < player.hp && target.countCards("h") <= player.countCards("h"))
return -1;
2018-04-17 07:32:43 +00:00
return 0;
2024-04-15 18:10:02 +00:00
},
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
duijue3: {
trigger: { player: "phaseAfter" },
forced: true,
popup: false,
priority: -50,
content: function () {
var target = player.storage.duijue3;
2018-04-17 07:32:43 +00:00
delete player.storage.duijue3;
2024-04-15 18:10:02 +00:00
player.removeSkill("duijue3");
if (!target.isAlive()) {
2018-04-17 07:32:43 +00:00
event.finish();
return;
}
2024-04-15 18:10:02 +00:00
var next = player.insertEvent("duijueLoop", lib.skill.duijue.duijueLoop, {
targets: [target, player],
num: 0,
backup: [],
source: player,
2018-04-17 07:32:43 +00:00
});
2024-04-15 18:10:02 +00:00
next.forceDie = true;
for (var i = 0; i < game.players.length; i++) {
if (game.players[i] != player && game.players[i] != target) {
game.players[i].out("duijue");
2018-04-17 07:32:43 +00:00
next.backup.push(game.players[i]);
}
}
2024-04-15 18:10:02 +00:00
if (!ui.duijueLoop) {
ui.duijueLoop = ui.create.system("六回合", null, true);
lib.setPopped(
ui.duijueLoop,
function () {
var uiintro = ui.create.dialog("hidden");
uiintro.add("对决");
uiintro.addText(get.cnNumber(ui.duijueLoop.round) + "回合后结束");
uiintro.add(ui.create.div(".placeholder.slim"));
return uiintro;
},
180
);
ui.duijueLoop.round = 6;
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
duijue2: {
mod: {
cardEnabled: function () {
2018-04-17 07:32:43 +00:00
return false;
},
2024-04-15 18:10:02 +00:00
cardSavable: function () {
2018-04-17 07:32:43 +00:00
return false;
},
2024-04-15 18:10:02 +00:00
targetEnabled: function () {
2018-04-17 07:32:43 +00:00
return false;
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
init: function (player) {
player.classList.add("transparent");
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
onremove: function (player) {
player.classList.remove("transparent");
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
intro: {
content: "不计入距离的计算且不能使用牌且不是牌的合法目标",
},
group: "undist",
trigger: { global: "dieAfter" },
forced: true,
popup: false,
content: function () {
player.removeSkill("duijue2");
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
yueren: {
trigger: { player: "shaBegin" },
filter: function (event, player) {
return !player.hasSkill("yueren2");
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
check: function (event, player) {
return get.attitude(player, event.target) <= 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
logTarget: "target",
content: function () {
"step 0";
player.judge(function () {
2018-04-17 07:32:43 +00:00
return 0;
});
2024-04-15 18:10:02 +00:00
player.addTempSkill("yueren2");
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (get.color(result.card) == "black") {
if (trigger.target.countCards("he")) {
player.discardPlayerCard(true, trigger.target, "he");
2018-04-17 07:32:43 +00:00
// trigger.target.discard(trigger.target.getCards('he').randomGet());
}
2024-04-15 18:10:02 +00:00
} else if (trigger.cards && trigger.cards.length) {
2018-04-17 07:32:43 +00:00
player.gain(trigger.cards);
player.$gain2(trigger.cards);
2024-04-15 18:10:02 +00:00
game.log(player, "收回了", trigger.cards);
}
},
},
yueren2: {},
busi: {
trigger: { player: "dying" },
priority: 7,
unique: true,
forced: true,
filter: function (event, player) {
return player.hp <= 0;
},
content: function () {
"step 0";
player.judge(function (card) {
return get.suit(card) == "spade" ? -1 : 1;
2018-04-17 07:32:43 +00:00
});
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.recover(1 - player.hp);
2018-04-17 07:32:43 +00:00
player.turnOver(true);
}
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 0.8,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
busi_old: {
unique: true,
global: "busi2",
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
busi_old2: {
trigger: { player: "phaseAfter" },
forced: true,
popup: false,
content: function () {
var target = player.nextSeat;
while (target.isDead() && target.hasSkill("busi") == false) {
target = target.nextSeat;
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
if (target.isDead()) {
2018-04-17 07:32:43 +00:00
target.revive(1);
2024-04-15 18:10:02 +00:00
target.classList.add("turnedover");
target.logSkill("busi");
2018-04-17 07:32:43 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 0.5,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
xuying: {
unique: true,
trigger: { player: "damageBefore" },
forced: true,
content: function () {
2018-04-17 07:32:43 +00:00
trigger.cancel();
2024-04-15 18:10:02 +00:00
if (player.countCards("h")) player.loseHp();
},
ai: {
effect: {
target: function (card, player, target) {
if (get.tag(card, "damage") && target.countCards("h") == 0) return 0;
},
},
},
},
yinguo: {
unique: true,
trigger: { global: "damageBefore" },
priority: 6,
direct: true,
filter: function (event, player) {
if (event.player == player || event.source == player) return false;
if (!event.source) return false;
if (player.countCards("he") == 0) return false;
if (player.hasSkill("yinguo2")) return false;
2018-04-17 07:32:43 +00:00
return true;
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
var go =
get.attitude(player, trigger.player) > 0 &&
get.attitude(player, trigger.source) < 0 &&
get.damageEffect(trigger.player, trigger.source, player) <
get.damageEffect(trigger.source, trigger.player, player);
var next = player.chooseToDiscard(
"是否将伤害来源(" +
get.translation(trigger.source) +
")和目标(" +
get.translation(trigger.player) +
")对调?",
"he"
);
next.ai = function (card) {
if (go) {
return 10 - get.value(card);
2018-04-17 07:32:43 +00:00
}
return 0;
};
2024-04-15 18:10:02 +00:00
next.logSkill = "yinguo";
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
var target = trigger.player;
trigger.player = trigger.source;
trigger.source = target;
trigger.trigger("damageBefore");
player.addTempSkill("yinguo2", ["damageAfter", "damageCancelled"]);
}
},
ai: {
threaten: 10,
expose: 0.5,
},
global: "yinguo3",
},
yinguo2: {},
yinguo3: {
ai: {
effect: {
target: function (card, player, target) {
if (!get.tag(card, "damage")) return;
if (target.hasSkill("yinguo")) return;
var source = game.findPlayer(function (current) {
return current.hasSkill("yinguo");
2018-04-17 07:32:43 +00:00
});
2024-04-15 18:10:02 +00:00
if (source && source.countCards("he")) {
if (get.attitude(source, player) < 0 && get.attitude(source, target) > 0) {
return [0, 0, 0, -1];
2018-04-17 07:32:43 +00:00
}
}
2024-04-15 18:10:02 +00:00
},
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
guiyan: {
unique: true,
enable: "phaseUse",
usable: 1,
intro: {
content: "濒死时回复1点体力并失去鬼眼",
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
mark: true,
filterTarget: function (card, player, target) {
return player != target && target.countCards("h");
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
player.chooseCardButton(target, target.getCards("h")).set("ai", function (button) {
2018-04-17 07:32:43 +00:00
return get.value(button.link);
2024-04-15 18:10:02 +00:00
}).filterButton = function (button) {
return get.suit(button.link) == "club";
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.gain(result.links[0], target);
target.$giveAuto(result.links[0], player);
2018-04-17 07:32:43 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
order: 11,
result: {
target: -1,
player: 1,
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
threaten: 1.3,
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
group: ["guiyan2"],
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
guiyan2: {
trigger: { player: "dying" },
priority: 6,
forced: true,
content: function () {
2018-04-17 07:32:43 +00:00
player.recover();
2024-04-15 18:10:02 +00:00
player.removeSkill("guiyan");
player.removeSkill("guiyan2");
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
yunshen_old: {
mod: {
globalFrom: function (from, to, distance) {
if (!from.getEquip(1)) return distance - 1;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
globalTo: function (from, to, distance) {
if (!to.getEquip(2)) return distance + 1;
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
suiyan_old: {
enable: "phaseUse",
usable: 1,
filterCard: function (card) {
return get.type(card) == "basic";
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterTarget: function (card, player, target) {
return player != target && target.countCards("e");
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
var num = Math.floor(Math.random() * 3);
if (num == 0) {
2018-04-17 07:32:43 +00:00
player.draw();
2024-04-15 18:10:02 +00:00
} else {
target.discard(target.getCards("e").sort(lib.sort.random).splice(0, num));
2018-04-17 07:32:43 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
order: 7,
result: {
target: -1,
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
threaten: 1.2,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
xianyin: {
enable: "phaseUse",
filter: function (event, player) {
return game.hasPlayer(function (current) {
return current.countCards("j") && current != player;
2018-04-17 07:32:43 +00:00
});
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
event.targets = game.filterPlayer(function (current) {
return current.countCards("j") && current != player;
2018-04-17 07:32:43 +00:00
});
event.targets.sort(lib.sort.seat);
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (event.targets.length) {
event.target = event.targets.shift();
event.target.discard(event.target.getCards("j"));
player.line(event.target, "green");
} else {
2018-04-17 07:32:43 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (event.target.countCards("h")) {
event.target.chooseCard("选择一张手牌交给" + get.translation(player), true).ai =
function (card) {
return -get.value(card);
};
} else {
2018-04-17 07:32:43 +00:00
event.goto(1);
}
2024-04-15 18:31:36 +00:00
"step 3";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.gain(result.cards[0], target);
target.$give(1, player);
2018-04-17 07:32:43 +00:00
}
event.goto(1);
},
2024-04-15 18:10:02 +00:00
ai: {
order: 9,
result: {
player: function (player) {
var num = 0,
players = game.filterPlayer();
for (var i = 0; i < players.length; i++) {
if (players[i] != player && players[i].countCards("j")) {
if (
get.attitude(player, players[i]) >= 0 &&
get.attitude(players[i], player) >= 0
) {
2018-04-17 07:32:43 +00:00
num++;
2024-04-15 18:10:02 +00:00
} else {
2018-04-17 07:32:43 +00:00
num--;
}
}
}
return num;
2024-04-15 18:10:02 +00:00
},
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
mailun: {
unique: true,
trigger: { player: "phaseBegin" },
direct: true,
intro: {
content: function (storage) {
if (!storage) return "无";
return lib.skill.mailun.effects[storage - 1];
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
effects: [
"减少1点体力并增加1点体力上限",
"增加1点体力并减少1点体力上限",
"令你即将造成和即将受到的首次伤害-1",
"令你即将造成和即将受到的首次伤害+1",
"少摸一张牌并令手牌上限+1",
"多摸一张牌并令手牌上限-1",
"进攻距离+1防御距离-1",
"进攻距离-1防御距离+1",
2018-04-17 07:32:43 +00:00
],
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
player.removeSkill("mailun31");
player.removeSkill("mailun32");
player.removeSkill("mailun41");
player.removeSkill("mailun42");
player.removeSkill("mailun5");
player.removeSkill("mailun6");
player.removeSkill("mailun7");
player.removeSkill("mailun8");
if (event.isMine()) {
2018-04-17 07:32:43 +00:00
ui.auto.hide();
2024-04-15 18:10:02 +00:00
event.dialog = ui.create.dialog("脉轮:选择一个效果", "forcebutton");
var effects = lib.skill.mailun.effects;
var clickItem = function () {
event.choice = this.link;
2018-04-17 07:32:43 +00:00
game.resume();
2024-04-15 18:10:02 +00:00
};
for (var i = 0; i < 8; i++) {
if (i == 0 && player.maxHp == 6) continue;
var item = event.dialog.add(
'<div class="popup pointerdiv" style="width:70%;display:inline-block"><div class="skill">【' +
get.cnNumber(i + 1, true) +
"】</div><div>" +
effects[i] +
"</div></div>"
);
item.addEventListener("click", clickItem);
item.link = i + 1;
}
event.control = ui.create.control("取消", function () {
event.choice = 0;
2018-04-17 07:32:43 +00:00
game.resume();
});
2024-04-15 18:10:02 +00:00
event.dialog.add(ui.create.div(".placeholder"));
event.dialog.add(ui.create.div(".placeholder"));
event.dialog.add(ui.create.div(".placeholder"));
2018-04-17 07:32:43 +00:00
game.pause();
2024-04-15 18:10:02 +00:00
} else {
2018-04-17 07:32:43 +00:00
var ctrl;
2024-04-15 18:10:02 +00:00
if (player.hp <= 1) {
if (player.maxHp > 3) {
ctrl = 2;
} else {
ctrl = 3;
}
} else if (player.hp == 2) {
if (player.maxHp > 4) {
ctrl = 2;
} else if (player.countCards("h") == 0) {
ctrl = 6;
} else {
ctrl = 3;
}
} else if (player.countCards("h") < player.hp) {
ctrl = 6;
} else if (player.countCards("h") > player.hp + 1) {
ctrl = 5;
}
event.choice = ctrl;
}
2024-04-15 18:31:36 +00:00
"step 1";
2018-04-17 07:32:43 +00:00
ui.auto.show();
2024-04-15 18:10:02 +00:00
player.storage.mailun = event.choice;
game.addVideo("storage", player, ["mailun", player.storage.mailun]);
if (event.choice) {
player.logSkill("mailun");
player.markSkill("mailun");
switch (event.choice) {
case 1: {
2018-04-17 07:32:43 +00:00
player.loseHp();
player.gainMaxHp();
break;
}
2024-04-15 18:10:02 +00:00
case 2: {
2018-04-17 07:32:43 +00:00
player.recover();
player.loseMaxHp();
break;
}
2024-04-15 18:10:02 +00:00
case 3: {
player.addSkill("mailun31");
player.addSkill("mailun32");
2018-04-17 07:32:43 +00:00
break;
}
2024-04-15 18:10:02 +00:00
case 4: {
player.addSkill("mailun41");
player.addSkill("mailun42");
2018-04-17 07:32:43 +00:00
break;
}
2024-04-15 18:10:02 +00:00
case 5: {
player.addSkill("mailun5");
2018-04-17 07:32:43 +00:00
break;
}
2024-04-15 18:10:02 +00:00
case 6: {
player.addSkill("mailun6");
2018-04-17 07:32:43 +00:00
break;
}
2024-04-15 18:10:02 +00:00
case 7: {
player.addSkill("mailun7");
2018-04-17 07:32:43 +00:00
break;
}
2024-04-15 18:10:02 +00:00
case 8: {
player.addSkill("mailun8");
2018-04-17 07:32:43 +00:00
break;
}
}
2024-04-15 18:10:02 +00:00
} else {
player.unmarkSkill("mailun");
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
if (event.dialog) {
2018-04-17 07:32:43 +00:00
event.dialog.close();
}
2024-04-15 18:10:02 +00:00
if (event.control) {
2018-04-17 07:32:43 +00:00
event.control.close();
}
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
mailun31: {
trigger: { source: "damageBegin" },
forced: true,
content: function () {
2018-04-17 07:32:43 +00:00
trigger.num--;
2024-04-15 18:10:02 +00:00
player.removeSkill("mailun31");
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
mailun32: {
trigger: { player: "damageBegin" },
forced: true,
content: function () {
2018-04-17 07:32:43 +00:00
trigger.num--;
2024-04-15 18:10:02 +00:00
player.removeSkill("mailun32");
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
mailun41: {
trigger: { source: "damageBegin" },
forced: true,
content: function () {
2018-04-17 07:32:43 +00:00
trigger.num++;
2024-04-15 18:10:02 +00:00
player.removeSkill("mailun41");
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
mailun42: {
trigger: { player: "damageBegin" },
forced: true,
content: function () {
2018-04-17 07:32:43 +00:00
trigger.num++;
2024-04-15 18:10:02 +00:00
player.removeSkill("mailun42");
},
},
mailun5: {
trigger: { player: "phaseDrawBegin" },
forced: true,
popup: false,
content: function () {
2018-04-17 07:32:43 +00:00
trigger.num--;
},
2024-04-15 18:10:02 +00:00
mod: {
maxHandcard: function (player, num) {
return num + 1;
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
mailun6: {
trigger: { player: "phaseDrawBegin" },
forced: true,
popup: false,
content: function () {
2018-04-17 07:32:43 +00:00
trigger.num++;
},
2024-04-15 18:10:02 +00:00
mod: {
maxHandcard: function (player, num) {
return num - 1;
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
mailun7: {
mod: {
globalFrom: function (from, to, distance) {
return distance - 1;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
globalTo: function (from, to, distance) {
return distance - 1;
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
mailun8: {
mod: {
globalFrom: function (from, to, distance) {
return distance + 1;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
globalTo: function (from, to, distance) {
return distance + 1;
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
fengming: {
enable: "phaseUse",
usable: 1,
filter: function (event, player) {
return player.countCards("he", { type: "equip" }) > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterCard: { type: "equip" },
position: "he",
filterTarget: true,
content: function () {
"step 0";
2018-04-17 07:32:43 +00:00
target.recover();
2024-04-15 18:31:36 +00:00
"step 1";
2018-04-17 07:32:43 +00:00
target.draw();
},
2024-04-15 18:10:02 +00:00
ai: {
order: 9,
result: {
target: function (player, target) {
if (target.hp < target.maxHp) {
2018-04-17 07:32:43 +00:00
return get.recoverEffect(target);
}
2024-04-15 18:10:02 +00:00
},
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
wanjun: {
enable: "chooseToUse",
filter: function (event, player) {
return player.countCards("he", { type: "equip" }) > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterCard: function (card) {
return get.type(card) == "equip";
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
position: "he",
viewAs: { name: "nanman" },
prompt: "将一张装备牌当南蛮入侵使用",
check: function (card) {
var player = _status.currentPhase;
if (player.countCards("he", { subtype: get.subtype(card) }) > 1) {
return 11 - get.equipValue(card);
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
if (player.countCards("h") < player.hp) {
return 6 - get.value(card);
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
return 2 - get.equipValue(card);
},
ai: {
order: 9,
threaten: 1.1,
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
huanling: {
trigger: { player: "phaseEnd" },
direct: true,
content: function () {
"step 0";
player.chooseTarget(get.prompt("huanling"), function (card, player, target) {
return player != target;
}).ai = function (target) {
if (target.hasSkillTag("noturn")) return 0;
var att = get.attitude(player, target);
if (target.isTurnedOver()) {
if (att > 0) {
return att + 5;
2018-04-17 07:32:43 +00:00
}
return -1;
}
2024-04-15 18:10:02 +00:00
if (player.isTurnedOver()) {
return 5 - att;
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
if (att <= -3) {
2018-04-17 07:32:43 +00:00
return -att;
}
return 0;
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.logSkill("huanling", result.targets);
2018-04-17 07:32:43 +00:00
player.turnOver();
result.targets[0].turnOver();
}
},
2024-04-15 18:10:02 +00:00
group: "huanling2",
ai: {
effect: {
target: function (card, player, target, current) {
if (card.name == "guiyoujie") return [0, 2];
if (target.isTurnedOver()) {
if (get.tag(card, "damage")) return 0;
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
expose: 0.2,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
huanling2: {
trigger: { player: "damageBefore" },
filter: function (event, player) {
2018-04-17 07:32:43 +00:00
return player.isTurnedOver();
},
2024-04-15 18:10:02 +00:00
forced: true,
content: function () {
2018-04-17 07:32:43 +00:00
trigger.cancel();
},
},
2024-04-15 18:10:02 +00:00
ljifeng: {
mod: {
selectTarget: function (card, player, range) {
if (card.name == "sha" && range[1] != -1) range[1] += player.maxHp - player.hp;
},
attackFrom: function (from, to, distance) {
return distance + from.hp - from.maxHp;
2018-04-17 07:32:43 +00:00
},
},
},
2024-04-15 18:10:02 +00:00
ljifeng_old: {
trigger: { player: "phaseUseBefore" },
direct: true,
filter: function (event, player) {
return player.countCards("h") > 0;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
"step 0";
var check = player.countCards("h") <= player.hp + (player.hp > 2 ? 2 : 1);
2018-04-17 07:32:43 +00:00
player.chooseCardTarget({
2024-04-15 18:10:02 +00:00
prompt: get.prompt("ljifeng"),
filterCard: lib.filter.cardDiscardable,
filterTarget: function (card, player, target) {
if (player == target) return false;
return player.canUse({ name: "sha" }, target, false);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
selectTarget: [1, 2],
ai1: function (card) {
if (!check) return 0;
return 8 - get.value(card);
},
ai2: function (target) {
if (!check) return 0;
return get.effect(target, { name: "sha" }, player);
2018-04-17 07:32:43 +00:00
},
});
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.logSkill("ljifeng", result.targets);
2018-04-17 07:32:43 +00:00
player.discard(result.cards);
2024-04-15 18:10:02 +00:00
player.useCard({ name: "sha" }, result.targets).animate = false;
2018-04-17 07:32:43 +00:00
trigger.cancel();
}
},
},
2024-04-15 18:10:02 +00:00
lxianglong: {
trigger: { target: "shaMiss" },
priority: 5,
direct: true,
content: function () {
"step 0";
player.chooseTarget(function (card, player, target) {
return player.canUse("sha", target);
}, get.prompt("lxianglong")).ai = function (target) {
return get.effect(target, { name: "sha" }, player, player);
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.logSkill("lxianglong", result.targets);
player.useCard({ name: "sha" }, trigger.cards, result.targets).animate = false;
game.delay();
}
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
effect: {
target: function (card, player, target) {
if (card.name == "sha" && target.countCards("h")) return 0.7;
},
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
},
zhenjiu: {
enable: "phaseUse",
usable: 1,
filterCard: { color: "red" },
filterTarget: function (card, player, target) {
return !target.hasSkill("zhenjiu2");
},
check: function (card) {
return 8 - get.value(card);
},
discard: false,
prepare: "give",
content: function () {
target.storage.zhenjiu2 = cards[0];
game.addVideo("storage", target, [
"zhenjiu2",
get.cardInfo(target.storage.zhenjiu2),
"card",
]);
target.addSkill("zhenjiu2");
},
ai: {
result: {
target: function (player, target) {
if (target.hp < target.maxHp) {
return target == player ? 1 : 1.5;
}
if (player.countCards("h") > player.hp) return 0.5;
2018-04-17 07:32:43 +00:00
return 0;
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
order: 9,
threaten: 1.7,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
zhenjiu2: {
trigger: { player: "phaseBegin" },
forced: true,
mark: "card",
content: function () {
2018-04-17 07:32:43 +00:00
player.recover();
2024-04-15 18:10:02 +00:00
player.gain(player.storage.zhenjiu2, "gain2", "log");
player.removeSkill("zhenjiu2");
2018-04-17 07:32:43 +00:00
delete player.storage.zhenjiu2;
},
2024-04-15 18:10:02 +00:00
intro: {
content: "card",
},
},
shoulie: {
trigger: { player: "shaBegin" },
direct: true,
content: function () {
"step 0";
var dis =
trigger.target.countCards("h", "shan") ||
trigger.target.hasSkillTag(
"freeShan",
false,
{
player: player,
card: trigger.card,
},
true
) ||
trigger.target.countCards("h") > 2;
var next = player.chooseToDiscard(get.prompt("shoulie", trigger.target));
next.ai = function (card) {
if (dis) return 7 - get.value(card);
2018-04-17 07:32:43 +00:00
return 0;
2024-04-15 18:10:02 +00:00
};
next.logSkill = "shoulie";
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
trigger.directHit = true;
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
hudun: {
trigger: { source: "damageEnd" },
forced: true,
filter: function (event, player) {
return !player.hujia && event.player != player;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
content: function () {
2018-04-17 07:32:43 +00:00
player.changeHujia();
player.update();
},
},
2024-04-15 18:10:02 +00:00
toudan: {
enable: "phaseUse",
usable: 1,
filter: function (event, player) {
return player.countCards("he", { suit: "spade" });
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterTarget: function (card, player, target) {
return player != target;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterCard: { suit: "spade" },
check: function (card) {
return 10 - get.value(card);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
position: "he",
line: "fire",
content: function () {
"step 0";
target.damage("fire");
event.targets = game.filterPlayer(function (current) {
return get.distance(target, current) <= 1;
2018-04-17 07:32:43 +00:00
});
event.targets.sortBySeat(event.target);
event.targets.unshift(player);
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (event.targets.length) {
var current = event.targets.shift();
if (current.countCards("he")) {
current.chooseToDiscard("he", true);
2018-04-17 07:32:43 +00:00
}
event.redo();
}
},
2024-04-15 18:10:02 +00:00
ai: {
result: {
target: function (player, target) {
return get.damageEffect(target, player, target, "fire");
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
order: 10,
threaten: 1.5,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
shending: {
inherit: "longfan",
filter: function (event, player) {
2018-04-17 07:32:43 +00:00
return !player.getEquip(5);
},
2024-04-15 18:10:02 +00:00
ai: {
order: 11,
result: {
player: 1,
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
effect: {
target: function (card, player, target) {
if (player != target) return;
if (get.subtype(card) == "equip5") {
if (get.equipValue(card) <= 7) return 0;
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
threaten: 1.2,
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
poxiao: {
mod: {
attackFrom: function (from, to, distance) {
if (!from.getEquip(1)) return distance - 1;
},
selectTarget: function (card, player, range) {
if (!player.getEquip(1) && card.name == "sha") range[1]++;
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
enable: "chooseToUse",
filterCard: { type: "equip" },
filter: function (event, player) {
return player.countCards("he", { type: "equip" });
},
position: "he",
viewAs: { name: "sha" },
prompt: "将一张闪当杀使用或打出",
check: function (card) {
if (get.subtype(card) == "equip1") return 10 - get.value(card);
return 7 - get.equipValue(card);
},
ai: {
order: function () {
return get.order({ name: "sha" }) + 0.1;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
effect: {
target: function (card, player) {
if (get.subtype(card) == "equip1") {
var num = 0,
players = game.filterPlayer();
for (var i = 0; i < players.length; i++) {
if (get.attitude(player, players[i]) < 0) {
2018-04-17 07:32:43 +00:00
num++;
2024-04-15 18:10:02 +00:00
if (num > 1) return "zeroplayertarget";
2018-04-17 07:32:43 +00:00
}
}
}
2024-04-15 18:10:02 +00:00
},
},
},
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
translate: {
swd_yangshuo: "杨硕",
swd_septem: "赛特",
swd_yuxiaoxue: "于小雪",
swd_lilian: "莉莲",
swd_cheyun: "车芸",
swd_jipeng: "疾鹏",
swd_muyun: "徐暮云",
swd_zhaoyun: "皇甫朝云",
swd_jiliang: "姬良",
swd_lanyin: "兰茵",
swd_zhiyin: "芝茵",
swd_hengai: "横艾",
swd_huzhongxian: "壶中仙",
swd_qiner: "磬儿",
swd_huanyuanzhi: "桓远之",
swd_murongshi: "慕容诗",
swd_hupo: "琥珀",
swd_miles: "麦尔斯",
swd_kangnalishi: "康那里士",
swd_satan: "撒旦",
swd_philis: "菲力斯",
swd_weida: "薇达",
swd_fengtianling: "凤天凌",
swd_huyue: "瑚月",
swd_jiting: "姬亭",
swd_rongshuang: "蓉霜",
swd_zhuoshanzhu: "浊山铸",
swd_jialanduo: "迦兰多",
swd_linming: "林明",
swd_duanmeng: "端蒙",
swd_nicole: "妮可",
swd_kendi: "肯迪",
swd_lijing: "李靖",
swd_hanteng: "韩腾",
swd_yuwentuo: "宇文拓",
swd_shanxiaoxiao: "单小小",
swd_yuchiyanhong: "尉迟嫣红",
swd_pepin: "丕平",
swd_anka: "安卡",
swd_jiangwu: "疆梧",
swd_situqiang: "司徒蔷",
swd_tuwei: "徒维",
swd_yeyaxi: "耶亚希",
swd_chunyuheng: "淳于恒",
swd_duguningke: "独孤宁珂",
swd_duguningke2: "魔化宁珂",
swd_chenjingchou: "陈靖仇",
swd_zhanglie: "张烈",
swd_guyue: "古月圣",
swd_kama: "卡玛",
swd_yuli: "玉澧",
swd_duopeng: "多鹏",
swd_jiangziya: "姜子牙",
swd_heran: "何然",
swd_zhanggao: "张诰",
swd_hanlong: "韩龙",
swd_jiuyou: "久悠",
swd_qingming: "青冥",
swd_shangzhang: "尚章",
swd_youzhao: "游兆",
swd_wangsiyue: "王思月",
swd_huanglei: "黄雷",
swd_tuobayuer: "拓跋玉儿",
swd_tuobayueer: "拓跋月儿",
swd_chengyaojin: "程咬金",
swd_qinshubao: "秦叔宝",
swd_lishimin: "李世民",
swd_shuijing: "水镜",
swd_xuanyuanjianxian: "轩辕剑仙",
swd_xuanyuanjiantong: "轩辕剑童",
swd_luchengxuan: "陆承轩",
swd_xiarou: "夏柔",
swd_moye: "莫耶",
swd_fu: "毛民·福",
swd_hanluo: "寒洛",
swd_linyue: "临月",
swd_zidashu: "子大暑",
swd_maixing: "麦星",
swd_haidapang: "海大胖",
swd_shaowei: "少微",
swd_fuyan: "符验",
swd_huiyan: "慧彦",
swd_sikongyu: "司空宇",
swd_muyue: "沐月",
swd_ziqiao: "子巧",
swd_fengyu: "凤煜",
swd_qi: "柒",
swd_chenfu: "陈辅",
swd_libai: "李白",
swd_xingtian: "刑天",
swd_lanmoshen: "蓝魔神",
swd_wushi: "巫师",
swd_quxian: "屈娴",
swd_xiyan: "犀衍",
swd_shuwaner: "舒莞儿",
swd_xiaohuanglong: "小黄龙",
2024-04-15 18:10:02 +00:00
cyshuiyun: "水云",
cyshuiyun_info:
"准备阶段,你可以弃置一名其他角色的一张牌;每当你失去此技能,你可以弃置一名其他角色的一张牌。",
cyliuzi: "流紫",
cyliuzi_info: "摸牌阶段,你可以额外摸一张牌;每当你失去此技能,你可以摸一张牌。",
cyyijin: "异金",
cyyijin_info:
"出牌阶段你可以对一名体力值为全场最多的角色造成1点伤害每当你失去此技能你可以对一名体力值为全场最多的角色造成1点伤害。",
cyqingling: "青凌",
cyqingling_info:
"弃牌阶段若你弃置了至少一张牌你可以获得1点护甲每当你失去此技能你可以获得1点护甲。",
cyqiandian: "千靛",
cyqiandian_info:
"结束阶段,你可以视为使用一张惊雷闪;每当你失去此技能,你可以视为使用一张惊雷闪。",
gxianyin: "仙音",
gxianyin_info:
"出牌阶段限一次,你可以选择一种花色,将你的手牌中该花色的牌移至弃牌堆,然后选择另一种花色,从牌堆中获得等量的该花色的牌。",
2018-04-17 07:32:43 +00:00
// gxianyin_info_alter:'',
2024-04-15 18:10:02 +00:00
cyxianjiang: "仙匠",
cyxianjiang_info:
"每当你使用一张牌指定唯一目标时,你可以复制对方装备区内的一张你没有的牌,并置入你的装备区,每回合对一名角色最多发动一次。",
cyqiaoxie: "巧械",
cyqiaoxie_info: "每当你失去一张装备牌(使用除外),你可以随机观看三张机关牌,并使用其中一张。",
cyqiaoxie_info_alter:
"每当你装备一件装备若你的手牌数不大于体力值你可以摸一张牌每当你失去一件装备牌你可以随机观看2张机关牌并使用其中一张。",
cyzhencha: "侦察",
cyzhencha_info:
"出牌阶段限一次,若你的装备区内的可强化装备,你可以弃置一张基本牌并观看一名其他角色的手牌,若其中有与你弃置的牌颜色相同的牌,你随机升级装备区内的一件装备,否则你摸一张牌;你根据装备区内升级的装备数获得额外技能。",
cylingjia: "灵甲",
cylingjia_info:
"出牌阶段限一次,你可以弃置一张装备牌,然后令云狐随机装备一件装备(不替换现有装备)并将其强化。",
cyqiaobo: "巧补",
cyqiaobo_info: "出牌阶段限一次你可以弃置一张锦囊牌然后令云狐回复1点体力。",
cqiaoxie: "巧械",
cqiaoxie_info:
"出牌阶段限一次你可以将一张锦囊牌当作零件袋使用每当你使用一张零件牌你获得1点技能点数。",
xiufu: "修复",
xiufu_info: "出牌阶段你可以弃置一张装备牌或机关牌令云狐回复1点体力。",
yhshengong: "神工",
yhshengong_info:
"游戏开始时你获得3点技能点数每当你造成1点伤害你获得1点技能点数出牌阶段你可以通过消耗技能点令云狐获得新的技能云狐体力为0时无法学习或发动技能。",
juxi: "聚息",
juxi_info:
"锁定技每当一名角色于其回合外弃置牌你获得一枚聚息标记出牌阶段限一次你可以移去X枚聚息标记然后选择一项对一名角造成1点伤害或令一名角色回复1点体力X为存活角色数。",
yeying: "曳影",
yeying_info: "出牌阶段限一次,你可以将一张黑色牌当作乾坤镖使用。",
jiefen: "解纷",
jiefen_info:
"出牌阶段限一次,你可以令一名手牌数多于你的角色交给你一张牌,然后你交给一名手牌数少于你的角色一张牌。",
datong: "大同",
datong_info:
"任意一名角色的结束阶段若全场手牌数最多和最少的角色手牌数之差不超过1你摸两张牌。",
huodan: "火丹",
huodan_info:
"出牌阶段限一次你可以弃置一张红色牌并失去1点体力然后将2点火属性伤害分配给1~2名角色。",
huodan_info_alter:
"出牌阶段限一次你可以弃置一张红色牌并失去1点体力然后将2点火属性伤害分配给1~2名角色若你只分配了一名角色该角色在结算后摸一张牌。",
sxianjing: "陷阱",
sxianjing_bg: "阱",
sxianjing_info:
"出牌阶段,你可以将一张手牌背面朝上置于你的武将牌上(不能与已有花色相同)。当一名其他角色使用与一张“陷阱”牌花色相同的牌指定你为目标时,你移去对应的“陷阱”牌,然后随机获得该角色的一张牌。每当你受到一次伤害,你随机将一张“陷阱”牌返回手牌。",
zhanxing: "占星",
zhanxing_info:
"出牌阶段限一次你可以弃置任意张牌并亮出牌堆顶的等量的牌并根据亮出的牌包含的花色执行以下效果摸两张牌♥回复1点体力若未损失体力改为获得1点护甲♣令所有敌人随机弃置一张牌♠令一名角色受到1点无来源的雷属性伤害。",
kbolan: "博览",
kbolan_info: "每当你摸牌时,你可以额外摸一张牌,然后摸牌结束时将一张手牌置于牌堆顶。",
gaizao: "改造",
gaizao_info:
"每当你即将装备一张牌(特殊类装备除外),若你的装备区内对应位置已有牌,你可以永久改变此牌的装备类型使其装备在装备区内的空余位置。",
lingshi: "灵矢",
lingshi_info:
"你的装备区内每有一张牌,你的攻击范围+2当你的装备区内有武器牌或防具牌时你的杀不可闪避当你的装备区内有马时你摸牌阶段额外摸一张牌当你的装备内的宝物牌时你回合内可以额外使用一张杀。",
tiebi: "铁壁",
tiebi_info:
"当距离你1以内的一名角色成为杀的目标时若其没有护甲你可以弃置一张黑色手牌使其获得1点护甲。",
shenyan: "神炎",
shenyan_bg: "炎",
shenyan_info:
"限定技,当你即将造成火焰伤害时,你可以令此伤害+1并对目标距离1以内的所有其他角色各造成1点火焰伤害。",
xuanying: "旋影",
xuanying_info:
"你可以横置你的武将牌,视为使用一张无视距离的杀;每当你于回合外失去牌,你可以竖置你的武将牌,视为使用一张无视距离的杀。",
hwendao: "问道",
hwendao_info:
"每当你于回合外使用或打出一张牌,你可以令当前回合角色弃置一张与之花色相同的牌,否则你获得其一张牌。",
lingfeng: "凌锋",
lingfeng_info:
"结束阶段若你本回合内使用了至少X张牌你可以选择一项获得1点护甲或对攻击范围内的一名角色造成1点伤害X为你当前的体力值且最多为3。",
hxunzhi: "殉志",
hxunzhi_info:
"限定技,出牌阶段,你可以视为使用一张万箭齐发并获得技能武圣、咆哮,若如此做,你在此阶段结束时死亡。",
hxunzhi_info_alter:
"限定技,出牌阶段,你可以获得技能武圣、咆哮,若如此做,你在此阶段结束时死亡。",
lmazui: "麻醉",
lmazui2: "麻醉",
lmazui_info:
"出牌阶段限一次,你可以将一张黑色手牌置于一名角色的武将牌上,该角色造成的下一次伤害-1然后获得此牌。",
hyunshen: "云身",
hyunshen2: "云身",
hyunshen_info:
"每当你打出一张闪,你可以令你的防御距离+1准备阶段你将累计的防御距离清零然后摸等量的牌。",
hlingbo: "凌波",
hlingbo_info: "每当你使用或打出一张闪,你可以摸两张牌。",
gtiandao: "天道",
gtiandao_info: "任意一名角色的判定生效前,你可以打出一张牌替换之。",
nlianji: "连计",
nlianji_info:
"出牌阶段限一次你可以选择一张手牌并指定两名角色进行拼点。若拼点结果不为平局拼点赢的角色获得此牌并对没赢的角色造成1点伤害。",
fengze: "风泽",
fengze_info: "出牌阶段限一次,你可以将一张黑色牌当作桃园结义使用。",
lingyue: "凌月",
lingyue_info: "每当你使用一张杀,你可以令目标弃置一张牌。",
jinlin: "金鳞",
jinlin_info:
"限定技出牌阶段你可以令任意名角色各获得3点护甲获得护甲的角色于每个准备阶段失去1点护甲直到首次失去所有护甲或累计以此法失去3点护甲。",
huanxia: "幻霞",
huanxia_info: "你可以将一张红色牌当作杀使用,若此杀未造成伤害,你在结束阶段收回此牌。",
jingjie: "幻镜",
jingjie_info: "限定技,出牌阶段,你可以令所有角色弃置所有牌,然后摸两张牌(不触发任何技能)。",
kongmo: "恐魔",
kongmo_info: "锁定技,你使用基本牌或普通锦囊牌后将额外结算一次卡牌效果。",
jufu: "巨斧",
jufu_info: "锁定技,当你有武器牌时,杀造成的伤害+1。",
huajing: "化精",
huajing_info: "每当你使用锦囊牌造成伤害可以回复1点体力并摸一张牌。",
pingxu: "冯虚",
pingxu_info: "锁定技,当你没有武器牌时,你的进攻距离+1当你没有防具牌时你的防御距离+1。",
yudun: "愚钝",
yudun_info: "锁定技,你无法使用锦囊牌;你可以将两张锦囊牌当作一张不计入出杀次数的杀使用。",
bingfeng: "冰封",
bingfeng2: "冰封",
bingfeng2_info: "不能使用或打出手牌。",
bingfeng_info:
"限定技出牌阶段你可以指定至多三个目标与其一同翻面且处于翻面状态时不能使用或打出手牌若如此做你失去技能玄咒并减少1点体力上限。",
guozao: "聒噪",
guozao_info:
"锁定技每当距离你1以内的角色受到一次伤害若伤害来源不你你须观看牌堆顶的三张牌然后指定距离2以内的一名有手牌角色将手牌与这些牌交换。",
guozao_info_alter:
"锁定技每当距离你1以内的角色受到一次伤害若伤害来源不你你须观看牌堆顶的三张牌然后指定距离1以内的一名有手牌角色将手牌与这些牌交换。",
heihuo: "黑火",
heihuo_info:
"出牌阶段你可以弃置一张装备牌令你的手牌数加倍若你的手牌因此达到8张或更多你立即受到3点火焰伤害且本回合内不能再次发动黑火。",
yaotong: "妖瞳",
yaotong1: "妖瞳",
yaotong2: "妖瞳",
yaotong3: "妖瞳",
yaotong4: "妖瞳",
yaotong_info:
"当你的手牌数为奇数时,你可以将一张手牌当作杀或闪使用或打出,当你的手牌数为偶数时,你可以将一张手牌当作无懈可击使用。",
yaotong_info_alter:
"当你的手牌数为奇数时,你可以将一张手牌当作杀使用或打出,当你的手牌数为偶数时,你可以将一张手牌当作无懈可击使用。",
pojian: "破茧",
pojian_info: "每当你失去最后一张手牌,可以从牌堆中获得一张装备牌并装备之。",
huajin: "化金",
huajin2: "化金",
huajin_info: "出牌阶段限一次,你可以弃置一张牌令你造成的伤害+1直到你的下一回合开始。",
poxiao: "破霄",
poxiao_info:
"你可以将一张装备牌当杀使用;当你没有武器牌时,你的攻击范围+1杀可以额外指定一个目标。",
jianji: "箭疾",
jianji_info:
"你可以将一张装备牌当杀使用,然后摸一张牌,此杀无视距离和防具,且不计入回合内出杀限制。",
yuchen: "浴尘",
yuchen_info: "每当你于回合外使用或打出一张黑色牌,你可以弃置一名角色的一张牌。",
huangyu: "凰羽",
huangyu_info: "出牌阶段限一次,你可以将两张红色牌当炽羽袭使用。",
bingjian: "冰箭",
bingjian_info:
"出牌阶段限一次你可以弃置一张黑色的杀令一名有手牌的其他角色展示手牌并弃置其中的所有闪若其没有闪则受到1点雷电伤害。",
rumeng: "入梦",
rumeng_info:
"其他角色的出牌阶段前,你可以弃置一张非基本牌,并令其选择一项:弃置一张基本牌,或跳过出牌及弃牌阶段。",
lianda: "连打",
lianda_info: "当你使用一杀结算完毕后,可以弃置一张牌视为对目标再使用一张杀。",
xianghui: "祥晖",
xianghui_info:
"出牌阶段限一次你可以弃置一张红色手牌然后令场上体力值最少的角色各回复1点体力。",
huiqi: "回气",
huiqi_info: "每当你受到一次伤害可令一名其他角色摸X张牌X为你已损失的体力值。",
toudan: "投弹",
toudan_info:
"出牌阶段限一次你可以弃置一张黑桃牌对一名其他角色造成1点火焰伤害然后你与距离该角色1以内的所有角色各弃置一张牌。",
shending: "神丁",
shending_info: "锁定技,若你没有宝物牌,视为装备了蓝格怪衣。",
hzhenwei: "镇卫",
hzhenwei_info:
"当一名其他角色成为杀的目标后,若你在杀的使用者的攻击范围内,你可以弃置一张牌将此杀转移给自己,并在杀结算完毕后摸一张牌。",
shoulie: "狩猎",
shoulie_info: "当你使用一张杀指定目标后,可以弃置一张手牌令此杀不可闪避。",
hudun: "盾甲",
hudun_bg: "盾",
hudun2: "盾甲",
hudun_info: "锁定技当你对其他角色造成伤害后若你没有护甲你获得1点护甲值。",
zhenjiu: "针灸",
zhenjiu2: "针灸",
zhenjiu_info:
"出牌阶段限一次你可以将一张红色手牌置于一名角色的武将牌上该角色于下一个准备阶段回复1点体力然后获得此牌。",
ljifeng: "疾风",
ljifeng_info: "锁定技,你的攻击范围+X杀可以额外指定X个目标X为你已损失的体力值。",
lxianglong: "翔龙",
lxianglong_info: "每当你闪避一张杀,你可以视为使用一张杀。",
shangxi: "伤袭",
shangxi_info:
"准备阶段你可以弃置一张牌并对攻击范围内一名体力值不小于你的其他角色造成1点伤害。",
fzhenwei: "镇威",
fzhenwei_info: "在你的回合内,你可以将其他角色打出的卡牌交给除该角色外的任意一名角色。",
fuyan: "覆岩",
fuyan2: "覆岩",
fuyan_info: "每当你受到一次伤害可以令一名没有护甲的角色获得1点护甲值。",
guaili: "怪力",
guaili_info: "锁定技,你的杀造成的伤害+1造成伤害后需弃置两张手牌。",
pingshen: "凭神",
pingshen2: "凭神",
pingshen_info: "锁定技,受到过你的伤害的角色可在回合内对你发动一次【离魂】(每局限发动一次)。",
xingzhui: "星坠",
xingzhui_info:
"出牌阶段限一次你可以弃置一张牌并令一名有牌的其他角色弃置一张类别相同的牌否则受到1点伤害。",
lingxian: "凌仙",
lingxian_info:
"每当你于回合外使用或打出一张手牌,你可以选择攻击范围外的一名其他角色与你各摸一张牌。",
shouyin: "守印",
shouyin_info:
"限定技,当任意一名角色处于濒死状态时,若你的武将牌正朝上,可以将武将牌翻面,然后令场上所有存活角色将体力回复至体力上限。",
shouyin_info_alter:
"限定技当任意一名角色处于濒死状态时若你的武将牌正朝上可以将武将牌翻面然后令场上所有存活角色回复2点体力。",
bofeng: "搏风",
bofeng_info:
"锁定技,体力值不大于你的角色视为在你的攻击范围;当你使用杀指定目标时,可令目标额外打出一张闪,否则此杀不可闪避且造成的伤害+1。",
hutian: "护天",
hutian2: "护天",
hutian3: "护天",
hutian_info:
"结束阶段,你可以将任意张牌置于一名角色的武将牌上,则该角色的体力值始终不能小于“护天”牌数;在你的下一个结束阶段,该角色获得武将牌上的“护天”牌(在此回合不能再次发动)。",
linyun: "凌云",
linyun_info: "你可以将两张牌当作杀使用,此杀需要额外一张闪才能闪避。",
sliufeng: "流风",
sliufeng_info: "锁定技,体力值不大于你的角色视为在你的攻击范围。",
chengjian: "承剑",
chengjian_info: "每当其他角色使用杀造成一次伤害,你可以令其摸一张牌。",
huanling: "幻灵",
huanling2: "幻灵",
huanling_info: "结束阶段,你可以选择一名角色与你同时翻面;翻面状态下,你防止一切伤害。",
xiaozhan: "消战",
xiaozhan_info: "其他角色使用杀时,若你不是杀的目标,可以弃置一张杀取消之。",
xielei: "挟雷",
xielei_info: "每当你使用或打出一张杀可以弃置一张牌并对目标以外的一名角色造成1点雷电伤害。",
dangping: "荡平",
dangping_info:
"每当你造成一次伤害可以弃置一张手牌对其距离1以内的另一名角色造成1点伤害每回合限一次。",
guisi: "归思",
guisi_info: "每当你成为杀的目标,你可以交给对方一张手牌并取消之。",
duishi: "对诗",
duishi_info:
"出牌阶段你可以弃置一张手牌并指定一名有手牌的角色选择一项1)弃置一张与之花色相同的手牌本回合内对诗不能再次指定其为目标2)令你获得其一张牌,对诗失效直到回合结束。",
anlianying: "连营",
anlianying_info: "每当你失去最后一张手牌,可摸两张牌。",
lianwu: "连舞",
lianwu_info: "锁定技,你的杀可以额外指定一个目标,你的红杀不可被闪避。",
jiying: "疾鹰",
jiying_info: "锁定技,你使用杀无视距离。",
daofa: "道法",
daofa_info: "每当有一名其他角色造成伤害,你可以令其弃置一张牌。",
xiaomoyu: "魔愈",
xiaomoyu_info:
"锁定技每当你于一个回合内首次造成伤害你回复1点体力若你没有受伤则改为摸一张牌。",
yihua: "移花",
yihua_info: "每当你成为其他角色的某张卡牌的唯一目标时,你可以弃置两张手牌,将使用者与目标对调。",
youyin: "游吟",
youyin_info: "每当有其他角色弃置卡牌时若其中有非基本牌且你的手牌数不超过5你可以摸一张牌。",
rexue: "热血",
rexue_info: "任意一名角色的准备阶段,你可以对其使用一张杀,并摸一张牌。",
huopu: "火瀑",
huopu_info: "出牌阶段限一次,你可以将一张红桃牌当作流星火羽使用。",
benlei: "奔雷",
benlei2: "奔雷",
benlei_info: "你可以将三张牌当惊雷闪使用每当你造成一次雷属性伤害你回复1点体力。",
lingwu: "灵舞",
lingwu_info:
"回合结束后,若你在本回合内使用的牌数不少于当前体力值,你可以进行一个额外的回合(不可重复发动)。",
miejing: "灭境",
miejing_info: "限制技你可以弃置所有黑色牌然后令所有其他角色受到1点雷电伤害。",
lingxin: "灵心",
lingxin_info: "结束阶段,你可以亮出牌堆顶的三张牌,然后获得其中的红桃牌。",
fushen: "附身",
fushen_info: "回合开始前你可以将自己移出游戏并代替另一名角色进行一回合然后失去1点体力。",
fushen2: "附身",
wangchen: "忘尘",
wangchen_info: "弃牌阶段结束时,若你于此阶段弃置了基本牌,你可以令一名角色翻面。",
wangchen_info_alter:
"弃牌阶段结束时若你于此阶段弃置了基本牌你可以令一名角色翻面并获得1点护甲。",
2023-12-05 12:27:19 +00:00
// wangchen_info:'若你于弃牌阶段弃置了基本牌,可令一名角色翻面。',
// wangchen_info:'弃牌阶段结束时,若你于此阶段弃置了基本牌,可将一名其他角色移出游戏直到你死亡或下一回合开始。',
2024-04-15 18:10:02 +00:00
guiyin: "归隐",
guiyin_info: "若你于弃牌阶段弃置了至少两张牌,你可以摸两张牌。",
shejie: "设界",
shejie2: "设界",
shejie_info: "每当你受到一次伤害,可以令伤害来源不能使用或打出其手牌,直到其下一回合开始。",
shejie2_info: "不能使用或打出手牌,直到下一回合开始。",
yinyue: "引月",
yinyue_info:
"每当有一名角色回复一次体力,你可以令其摸一张牌,若该角色不是你且你的手牌数不大于该角色,你也摸一张牌。",
yinyue_info_alter: "每当有一名角色回复一次体力,你可以令其摸一张牌。",
mohua2: "魔化",
mohua2_info: "锁定技,当你进入濒死状态时,你立即变身为撒旦,将体力回复至2,然后摸两张牌。",
liexin: "裂心",
liexin_info: "每当你即将造成伤害,你可以弃置一张牌令伤害+1。",
swdxueyi: "血裔",
swdxueyi_info: "锁定技你摸牌阶段额外摸X张牌X为你已损失的体力值。",
moyan: "血焰",
moyan_info:
"出牌阶段你可以弃置X张红色手牌然后对至多X名角色各造成1点火焰伤害X为你已损失的体力值。每阶段限一次。",
aojian: "傲剑",
aojian_info:
"出牌阶段你可以弃置X张手牌然后对攻击范围内至多X名角色各造成1点伤害X为你已损失的体力值。每阶段限一次。",
milesxiehun: "邪魂",
milesxiehun_info:
"锁定技出牌阶段结束后你令随机名角色各弃置一张牌为你已损失的体力值且至少为1。",
liaochen: "撩尘",
liaochen_info: "锁定技,出牌阶段结束后,所有角色需弃置一张牌。",
yinmo: "引魔",
yinmo_info:
"锁定技当你对场上所有角色发动〖连计〗后你立即变身为魔化宁珂然后对所有其他角色造成1点雷电伤害。",
huanxing: "幻形",
huanxing2: "幻形",
huanxing_info:
"准备阶段,你可以弃置一张牌并选择一名男性角色,获得其所有技能,直到你首次受到伤害。",
meihuo: "魅惑",
meihuo_info:
"每当你失去最后一张装备牌,你可以获得一名其他角色的一张牌,若此牌来自装备区,你立即装备之。",
2024-04-15 18:10:02 +00:00
touxi: "偷袭",
touxi_info:
"在其他角色的结束阶段你可以进行一次判定若结果为黑色你对其造成1点雷电伤害且直到下一回合开始不能再次发动偷袭若结果为红色对方可以弃置你的一张牌。",
touxi_info_alter:
"在其他角色的结束阶段你可以进行一次判定若结果为黑色你对其造成1点雷电伤害且直到下一回合开始不能再次发动偷袭若结果为红色对方可以获得你的一张牌。",
minjing: "明镜",
minjing_info: "若你没有防具牌,你视为装备了光纱天衣。",
jqimou: "奇谋",
jqimou_info: "每当你于回合外受到一次伤害,你可以摸一张牌,并可以使用一张牌。",
mufeng: "沐风",
mufeng_info: "结束阶段,若你本回合使用过基本牌,则可发现一张牌。",
mufeng_info_alter: "结束阶段,你可以将手牌数补至当前体力值。",
mufeng_old2_info:
"在一名角色的结束阶段若你的手牌数比其少你可以将手牌补至与该角色相同最多补至5每轮限一次。",
hjifeng: "祭风",
hjifeng_info:
"出牌阶段限一次,若你手牌中没有祭器牌,你可以将一张手牌置于牌堆顶,并根据其花色获得对应祭器:黑桃-青龙之圭;梅花-白兽之琥;方片-朱雀之璋;红桃-玄武之璜。",
mufeng_old_info:
"锁定技,每当你于回合外失去牌,你的防御距离+1若防御距离的变化值超过了存活角色数的一半则降至0。",
lexue: "乐学",
lexue_info:
"回合内,你随机获得制衡、集智、缔盟、驱虎中的一个技能;回合外,你随机获得遗计、急救、鬼道、反馈中的一个技能。",
mingfu: "冥缚",
mingfu_info: "出牌阶段限一次,你可以将一张梅花牌当鬼幽结使用。",
chuanyue: "穿月",
chuanyue_info: "出牌阶段限一次,你可以将两张手牌当决斗使用。",
2024-04-15 18:10:02 +00:00
miedao: "灭道",
miedao1: "灭道",
miedao2: "灭道",
miedao_info:
"锁定技摸牌阶段你额外摸X张牌弃牌阶段你至少须弃X张牌不足则全弃X为你已损失的体力值。",
2024-04-15 18:10:02 +00:00
senluo: "森罗",
senluo_info:
"出牌阶段限一次,若你的手牌数为全场最少或之一,你可以令所有有手牌的其他角色弃置两张手牌然后摸一张牌。",
polang: "破浪",
polang_info: "每当你造成一次伤害,可以一张对方的装备牌。",
jikong: "亟空",
jikong2: "亟空",
jikong_info:
"准备阶段,你可以指定一名角色视为对其使用一张雷杀;每当你失去最后一张手牌,你可以指定一名角色视为对其使用一张雷杀(每回合限发动一次)。",
jikong_info_alter: "准备阶段,你可以指定一名角色视为对其使用一张雷杀。",
xiangu: "仙骨",
xiangu_info: "锁定技,你的手牌上限不会因体力值的减少而减少。",
hujing: "壶境",
hujing_info:
"锁定技,准备阶段,若弃牌堆中有炼妖壶,你装备之;当你的装备区内有炼妖壶时,你的手牌上限+2。",
huajian: "化剑",
huajian_info: "出牌阶段结束时,你可以将一张牌当作杀对任意一名角色使用。",
xuanyuan: "轩辕",
xuanyuan_info:
"锁定技,你无视【轩辕剑】的装备条件及失去体力的效果;结束阶段,你可以弃置一张黑桃牌从弃牌堆中获得【轩辕剑】并装备之。",
jilve: "极略",
jilve_backup: "极略",
jilve2: "极略",
jilve_info: "出牌阶段,你可以观看牌堆顶的三张牌,然后使用其中的非装备牌。每回合最多发动三次。",
jilve_info_alter:
"出牌阶段,你可以观看牌堆顶的两张牌,然后使用其中的非装备牌。每回合最多发动三次。",
gongshen: "工神",
gongshen_info: "任意一名其他角色使用一张基本牌或锦囊牌指定目标后,你可以弃置一张装备牌令其失效。",
2024-04-15 18:10:02 +00:00
swdliuhong: "流虹",
swdliuhong_info: "每当你使用一张杀,可以摸一张牌。",
poyue: "破月",
poyue_info: "锁定技,你的黑杀无视距离,红色杀不计入回合内的出杀限制且不可闪避。",
poyue_info_alter: "锁定技,你的黑杀无视距离,红色杀不可闪避。",
mojian: "墨剑",
mojian_info: "每当你使用杀并指定目标后你可以令其摸一张牌然后你回复1点体力。",
duanyue: "断月",
duanyue_info: "出牌阶段限一次你可以弃置一张装备牌对一名其他角色造成1点伤害。",
tuzhen: "突阵",
tuzhen_info: "当你造成一次伤害后,你可以弃置对方手牌中的非基本牌。",
tuzhen_info_alter: "当你造成一次伤害后,你可以弃置对方手牌中的一张非基本牌。",
fengmo: "封魔",
fengmo_info:
"出牌阶段限一次,你可以弃置场所有武器牌(至少两张),然后令一名未翻面的角色摸等量的牌并翻面。",
pozhou: "破咒",
pozhou_bg: "破",
pozhou2: "破咒",
pozhou_info:
"每当你受到一次伤害,你获得一枚破咒标记。出牌阶段,你可以指定任意名其他角色并弃置等量的破咒标记,令目标的非锁定技失效直到其下一回合结束。",
xuanzhou: "玄咒",
xuanzhou_info:
"出牌阶段限一次,你可以将一张普通锦囊牌当作任意一张延时锦囊,对任意一名角色使用(无视锦囊使用范围限制)。",
ningxian: "凝霰",
ningxian_info: "每当你受到一次伤害你可以弃置任意张黑色牌并选择等量其他角色对其各造成1点伤害。",
guanhu: "贯鹄",
guanhu_info: "每当你使用杀造成伤害,你可以弃置对方一张手牌和一张装备牌。",
chuanyang: "穿杨",
chuanyang_info: "每当你使用一张杀,若你不在目标的攻击范围,你可以令此杀不可闪避。",
fengming: "凤鸣",
fengming_info: "出牌阶段限一次你可以弃置一张装备牌令一名角色恢复1点体力并摸一张牌。",
duanxing: "锻星",
duanxing_info: "每当你装备一张未强化的装备牌,可以视为一名角色使用一张杀。",
wanjun: "万钧",
wanjun_info: "你可以将一张装备牌当作南蛮入侵使用。",
dunxing: "遁形",
dunxing_info:
"当你成为其他角色卡牌的目标时,你可以弃置一张牌并进行一次判定,若不为红桃,则取消之。",
guiying: "鬼影",
guiying_info: "你可以将一张黑色牌当偷梁换柱使用。",
shehun: "摄魂",
shehun_info:
"出牌阶段限一次你可以弃置任意张花色不同的牌另一名其他角色弃置等量的牌若其弃置的牌中有牌的花色与你弃置的牌相同你对其造成1点伤害。",
2024-04-15 18:10:02 +00:00
zhanlu: "沾露",
luomu: "落木",
jifeng: "魔影",
liaoyuan: "燎原",
huanhun: "唤魂",
daixing: "代形",
yishan: "异闪",
yishan2: "异闪",
swd_wuxie: "无邪",
lqingcheng: "倾城",
xianjiang: "仙匠",
xianjiang3: "仙匠",
shengong: "神工",
ningjian: "凝剑",
ningjian1: "凝剑",
ningjian2: "凝剑",
taixu: "太虚",
duoren: "夺刃",
tanlin: "探麟",
tanlin2: "探麟",
pozhen: "破阵",
yunchou: "运筹",
swdtianshu: "天书",
swdtianshu_bg: "书",
swdtianshu2: "天书",
xingdian: "星点",
luomei: "落梅",
yulin: "玉鳞",
funiao: "符鸟",
xuehuang: "血凰",
xuehuang_bg: "凰",
zhuyu: "朱羽",
ningshuang: "凝霜",
zaowu: "造物",
2018-04-17 07:32:43 +00:00
// shouhua:'收化',
2024-04-15 18:10:02 +00:00
xielv: "谐率",
tianhuo: "天火",
huanyin: "幻音",
tianlun: "天轮",
hlongyin: "龙吟",
lanzhi: "兰芷",
duanyi: "断意",
miesheng: "灭生",
guxing: "孤星",
guxing1: "孤星",
guxing2: "孤星",
poxing: "破星",
mohua: "魔化",
miles_xueyi: "血裔",
wuying: "无影",
xiehun: "邪魂",
xiehun1: "邪魂",
xiehun2: "邪魂",
xiehun3: "邪魂",
jumo: "聚魔",
duijue: "对决",
duijue_bg: "决",
yueren: "月刃",
busi: "不死",
xuying: "虚影",
yinguo: "因果",
guiyan: "鬼眼",
guiyan2: "鬼眼",
swd_xiuluo: "修罗",
suiyan: "碎岩",
suiyan_info: "每当你造成一次伤害,可以弃置一张牌并弃置对方的全部装备牌。",
xianyin: "散结",
qiaoxie: "巧械",
qiaoxie2: "巧械",
qiaoxie3: "巧械",
qiaoxie4: "巧械",
mailun: "脉轮",
mailun31: "脉轮",
mailun32: "脉轮",
mailun41: "脉轮",
mailun42: "脉轮",
kunlunjing: "幻镜",
kunlunjing1: "幻镜",
kunlunjing2: "幻镜",
susheng: "苏生",
shengshou: "圣手",
huanjian: "幻箭",
huanjian_info: "出牌阶段,你可以将一张黑色牌当作冰魄针使用。",
shengshou_info: "你可以将一张黑色手牌当作草药使用。",
susheng_info:
"在任意一名角色即将死亡时你可以弃置一张手牌防止其死亡并将其体力回复至1每回合限发动一次。",
susheng_info_alter:
"在任意一名角色即将死亡时你可以弃置一张红色手牌防止其死亡并将其体力回复至1每回合限发动一次。",
zhanlu_info: "出牌阶段限一次你可以弃置一张黑桃牌令至多3名角色各回复1点体力。",
kunlunjing_info:
"准备阶段,若你的体力值小于上回合结束时的体力值,你可以将场上所有牌还原到你上一回合结束时的位置。",
kunlunjing_info_alter:
"准备阶段若你的体力值小于上回合结束时的体力值你可以将场上所有牌还原到你上一回合结束时的位置然后失去1点体力。",
swd_xiuluo_info: "准备阶段,你可以弃一张手牌来弃置你判断区里的一张延时类锦囊(必须花色相同)。",
xianyin_info: "出牌阶段,你可以令所有判定区内有牌的角色弃置判定区内的牌,然后交给你一张手牌。",
qiaoxie_info:
"每当你装备一张牌,可摸一张牌;每当你失去一张装备牌(不含替换),你可以弃置其他角色的一张牌。",
mailun_info: "准备阶段,你可以选择一个脉轮效果直到下一回合开始。",
guiyan_info:
"出牌阶段你可以观看一名角色的手牌并获得其中一张梅花牌每阶段限一次。当你首次进入濒死状态时你须回复1点体力并失去技能鬼眼。",
busi_info:
"锁定技当你进入濒死状态时你进行一次判定若结果不为黑桃你将体力回复至1并将武将牌翻至背面。",
xuying_info: "锁定技每当你即将受到伤害你防止此伤害若你此时有手牌你失去1点体力。",
yinguo_info:
"除你之外的任意一名角色即将受到受到伤害时,若有伤害来源,你可以弃置一张牌将伤害来源和目标对调。",
yueren_info:
"每当你使用一张杀,可以进行一次判定,若结果为黑色,你弃置目标一张牌,若结果为红色,你将此杀收回,每回合限发动一次。",
duijue_info:
"限定技出牌阶段你可以指定一名体力值大于1的其他角色你结束出牌阶段并在回合结束后将所有其他角色移出游戏然后该角色与你轮流进行回合直到有一方死亡或一共进行六个回合为止。",
wuying_info: "锁定技你的杀和单体x锦囊目标锁定为范围内的所有角色。",
xiehun_info:
"锁定技,受到来自你伤害的角色进入混乱状态,行为不受控制,且会攻击队友,直到你的下一回合开始。",
jumo_info:
"锁定技结束阶段你摸X-1张牌X为未进入混乱状态的角色数与进入混乱状态的角色数之差若为双将则改为X。",
jifeng_info:
"你的杀和单体锦囊可以额外指定任意个目标,若如此做,此卡牌有一定机率失效,指定的目标越多失效的概率越大。",
mohua_info:
"锁定技在身份局中当你进入濒死状态时你立即变身为撒旦体力上限变为现存角色数至少为4并成为其他所有角色的共同敌人。",
miles_xueyi_info: "锁定技你防止即将受到的伤害然后失去1点体力。",
duanyi_info:
"出牌阶段限一次你可以弃置两张杀对一名角色造成1点伤害然后其随机弃置X张牌X为其已损失的体力值。",
duanyi_info_alter: "出牌阶段限一次你可以弃置两张杀并对一名角色造成1点伤害。",
guxing_info:
"出牌阶段你可以将最后至多X张手牌当杀使用此杀无视距离且可以指定至多3个目标每造成一次伤害你摸一张牌为你已损失的体力值且至少为。",
tianlun_info: "任意一名角色的判定牌生效前,你可以弃置一张场上角色的判定牌代替之。",
hlongyin_info:
"出牌阶段,你可以弃置任意张颜色相同且点数不同的牌,并获得逆时针座位距离与卡牌点数相同的角色区域内的一张牌。每阶段限一次。",
lanzhi_info: "每当你使用一张梅花牌你可以令所有体力值不大于你的角色回复1点体力。",
lanzhi_old_info: "每当你即将造成伤害,可以防止此伤害,然后摸两张牌。每回合限发动一次。",
tianhuo_info:
"出牌阶段,你可以令所有角色弃置其判定区域内的牌,并受到没有来源的等量火焰伤害,每阶段限一次。",
huanyin_info:
"锁定技,每当你成为其他角色的卡牌的目标时,你进行一次判定,若为黑桃则取消之,若为红桃你摸一张牌。",
luomu_info: "锁定技,每当你造成伤害时,受伤害角色随机弃置一张牌。",
poxing_info: "锁定技,每当你即将造成伤害,若目标的体力值大于你,你令伤害+1。",
liaoyuan_info:
"每当你使用一张杀指定目标后,你可以弃置任意张与此杀花色相同的牌,若如此做,目标需额外打出等量的闪,每少打出一张闪,此杀的伤害+1。",
liaoyuan_info_alter:
"每当你使用一张杀指定目标后,你可以弃置一张与此杀花色相同的牌,若如此做,目标需额外打出一张闪,若目标没打出闪,此杀的伤害+1。",
yishan_info: "每当你受到一次伤害,你可以重新获得最近失去的两张牌。",
huanhun_info:
"当一名角色进入濒死状态时你可以弃置一张牌并令其进行一次判定若结果为红色其回复1点体力否则其获得你弃置的牌。",
huanhun_info_alter:
"当一名角色进入濒死状态时你可以弃置一张红色手牌并令其进行一次判定若结果为红色其回复1点体力否则其获得你弃置的牌。",
daixing_info: "结束阶段,你可以弃置任意张牌并获得等量的护甲;这些护甲将在你的下个准备阶段消失。",
swd_wuxie_info: "锁定技,你不能成为其他角色的延时锦囊的目标。",
lqingcheng_info:
"结束阶段你可以进行判定若为红色则可以继续判定最多判定3次判定结束后将判定成功的牌收入手牌。",
xianjiang_old_info:
"出牌阶段,你可以将一张装备牌永久转化为任意一张其它装备牌,一张牌在一个阶段只能转化一次。",
xianjiang_info: "出牌阶段限一次,你可以弃置一张锦囊牌并随机装备一件装备。",
xianjiang_info_alter:
"出牌阶段限一次,若你装备内没有牌,你可以弃置一张锦囊牌并随机装备一件装备。",
shengong_info:
"每当你需要打出一张杀或闪时,你可以弃置一名其他角色装备区内的一张武器牌或防具牌,视为打出一张杀或闪,然后该角色摸一张牌,你弃一张牌。",
ningjian_info: "你可以将一张红色牌当闪、黑色牌当杀使用或打出。",
taixu_info:
"限定技你可以弃置你的所有牌至少1张并对一名体力值大于1为其他角色造成X点火焰伤害X为你已损失的体力值且至少为1。",
duoren_info: "每当你闪避一张杀,你可以立即获得来源的武器牌。",
tanlin_info:
"出牌阶段限一次你可以与一名其他角色进行拼点若你赢你获得双方拼点牌、对该角色使用卡牌无视距离且可以额外使用一张杀直到回合结束若你没赢你受到该角色的1点伤害。",
tanlin_info_alter:
"出牌阶段限一次你可以与一名其他角色进行拼点若你赢你获得对方拼点牌、对该角色使用卡牌无视距离且可以额外使用一张杀直到回合结束若你没赢你受到该角色的1点伤害。",
pozhen_info:
"每当你受到一次伤害若你的手牌数大于伤害来源你可以弃置X张手牌对其造成1点伤害若你的手牌数小于伤害来源你可以弃置其X张手牌。X为你与伤害来源的手牌数之差。",
pozhen_info_alter:
"每当你受到一次伤害若你的手牌数小于伤害来源你可以弃置其X张手牌。X为你与伤害来源的手牌数之差。",
yunchou_info:
"出牌阶段限一次,你可以弃置一张手牌,并弃置一名其他角色的一张手牌,若两张牌颜色相同,你摸一张牌,否则对方摸一张牌。",
yunchou_info_alter:
"出牌阶段限一次,你可以弃置一张非基本手牌,并弃置一名其他角色的一张手牌,若两张牌颜色相同,你摸一张牌,否则对方摸一张牌。",
swdtianshu_old_info:
"结束阶段你可以弃置一张牌并从三名随机武将中选择一个在2X回合后你将其所有技能加入你的天书列表X为其技能数在技能加入天书列表时或于出牌阶段你可以装备一项天书列表中的技能。",
swdtianshu_info:
"出牌阶段,你可以弃置一张锦囊牌,然后获得一名其他角色的一项技能直到该角色死亡(替换以此法获得的前一个技能)。",
zaowu_info: "出牌阶段限一次,你可以将一张黑桃或红桃手牌当作封印之蛋使用。",
luomei_info: "每当你使用或打出一张梅花花色的牌,你可以摸一张牌。",
xingdian_info: "出牌阶段限一次,你可以弃置一张手牌,然后随机弃置两名敌人各一张牌。",
yulin_info: "每当你即将受到伤害,你可以弃置一张装备牌抵消此伤害。",
funiao_info: "出牌阶段限一次,你可以将一张手牌交给一名其他角色,然后摸一张牌并观看其手牌。",
funiao_old_info:
"出牌阶段,你可以交给一名角色一张手牌,然后观看其手牌,每个阶段对一名角色只能发动一次。",
xuehuang_info:
"限定技,出牌阶段,若你没有黑色手牌,你可以展示并弃置所有手牌,每弃置一张牌视为使用一张火杀,随机指定两名敌人为目标。",
zhuyu_info: "每当一名横置的角色即将受到伤害时,你可以弃置一张红色牌令此伤害+1并变为火属性。",
ningshuang_info:
"每当你成为黑色牌的目标,你可以弃置一张黑色牌将其横置,并摸一张牌,若其已经模置则改为将其翻面。",
zaowu_old_info: "出牌阶段,你可以弃置三张不同类型的牌,创造任意两张牌并获得之。",
xielv_info:
"弃牌阶段结束后若你的所有手牌至少两张颜色均相同你可以展示所有手牌然后回复1点体力并弃置场上的所有判定牌。",
2018-04-17 07:32:43 +00:00
},
};
2017-04-14 23:35:56 +00:00
});