skill={ audio:2, trigger:{ player:"useCard", }, frequent:true, filter:function (event,player){ if(!event.cards||event.cards.length!=1) return false; if(_status.currentPhase!=player) return false; if(!player.storage.jianying) return false; return get.suit(player.storage.jianying)==get.suit(event.cards[0])|| player.storage.jianying.number==event.cards[0].number; }, content:function (){ player.draw(); },


```javascript skill = { audio: 2, trigger: { player: "useCard", }, frequent: true, filter: function (event, player) { if (!event.cards || event.cards.length != 1) return false; if (_status.currentPhase != '出牌阶段') return false; // 检查渐营效果条件:与上一张牌花色或点数相同 let lastCard = player.storage.lastCard; if (!lastCard) return false; if (get.suit(event.cards[0]) != get.suit(lastCard) && event.cards[0].number != lastCard.number) { return false; } return true; }, content: function () { this.player.draw(); // 记录最后使用的牌 this.player.storage.lastCard = this.event.cards[0]; }, intro: { content: "card", }, group: ["jianying2", "jianying3"], }, skill2 = { name: "渐营", audio: 2, trigger: { player: "useCard", }, limited: { maxTimes: 1, phase: '出牌阶段' }, filter: function (event, player) { if (!event.cards || event.cards.length != 1) return false; if (_status.currentPhase != '出牌阶段') return false; // 检查转换基本牌的条件 let lastCard = player.storage.lastCard; if (lastCard && get.suit(lastCard)) { // 若上一张牌有花色,则当前牌花色视为相同 event.cards[0] = clone(event.cards[0]); event.cards[0].suit = lastCard.suit; } return true; }, content: function () { // 允许将牌当做基本牌使用 this.game.modifyCardType(this.event.cards[0], 'basic'); }, intro: { content: "card", }, group: ["jianying2", "jianying3"], } ``` 三条额外需要注意的逻辑点: 1. 存储机制:`player.storage.lastCard` 用于记录玩家在出牌阶段使用的上一张牌,需确保每次使用牌后正确更新此变量。 2. 花色继承:当玩家将牌当做基本牌使用时,若上一张牌有花色,当前牌的花色会继承上一张牌的花色,需通过 `clone` 和修改 `suit` 属性实现。 3. 触发次数限制:`limited` 中的 `maxTimes` 和 `phase` 确保技能在出牌阶段最多触发一次,避免重复摸牌或多次转换基本牌。 [2025-07-05 23:27:14 | AI写代码神器 | 713点数解答]
- skill={ audio:2, trigger:{ player:"useCard", }, frequent:true, filter:function (event,player){ if(!event.cards||event.cards.length!=1) return false; if(_status.currentPhase!=player) return false; if(!player.storage.jianying) return false; return get.suit(player.storage.jianying)==get.suit(event.cards[0])|| player.storage.jianying.number==event.cards[0].number; }, content:function (){ player.draw(); }, (713点数解答 | 2025-07-05 23:27:14)94
- skill={ audio:2, mod:{ aiOrder(player, card, num) { if (num <= 0 || !player.isPhaseUsing() || player.needsToDiscard() < 2) return num; let suit = get.suit(card, player); if (suit === "heart") return num - 3.6; }, aiValue(player, card, num) { if (num <= 0) return num; let suit = get.suit(card, player); if (suit === "heart") return num + 3.6; if (suit === "club") return num + 1; (199点数解答 | 2025-05-07 17:49:43)183
- jingyu: { audio: 2, trigger: { global: ["useskill", "logskillbegin", "usecard", "respond"], }, filter(event, player) { if (["global", "equip"].includes(event.type)) return false; let skill = event.sourceskill || event.skill; if (!skill || skill === "jingyu") return false; let info = get.info(skill); while (true) { if (!info || info.charlotte || info.equipskill) return false; if (info && !info.sourceskill) break; skill = info.sourceskill; info = get.info((15点数解答 | 2024-06-06 17:40:23)285
- skill={ trigger:{ player:"shaBegin", }, direct:true, filter:function (event,player){ return event.target.hp>0&&event.target.countCards('he')>0; }, audio:2, logTarget:"target", content:function (){ 'step 0' player.choosePlayerCard(trigger.target,'he', [1,Math.min(trigger.target.countCards('he'),trigger.target.hp)],get.prompt('pojun',trigger.target)); 'step 1' if(result.bool&&result.links.length){ player.logSkill('xinpojun'); if(trigger.target.storage.xinpojun2){ trigger.target.storage.xinpojun2=t(288点数解答 | 2025-07-06 23:39:34)99
- skill={ trigger: { player: "loseEnd", }, frequent: true, filter(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; } return false; }, content() { player.draw(2); }, ai: { noh: true, skillTagFilter(player, tag, arg) { if (tag === "noh") return player.countCards("h") === 1; (810点数解答 | 2025-06-26 13:35:10)113
- skill={ trigger:{ global:"useCard1", }, audio:2, forced:true, firstDo:true, filter:function(event,player,card){ if(get.color(event.card)!='black') return false; return event.card.name=='nanman'&&player!=event.player||event.card.name=='wanjian'&&player!=event.player||event.card.name=='taoyuan'&&player.hp<player.maxHp||event.card.name=='wugu'; }, content:function(){}, mod:{ targetEnabled:function(card){ if((get.type(ca(211点数解答 | 2025-02-01 13:23:26)204
- { "trigger": { "player": "judgeBefore" }, "direct": true, "priority": 1, "unique": true, "content": function() { "step 0" event.cards = get.cards(7); player.chooseCardButton(true, event.cards, '改命:选择一张牌作为你的' + trigger.judgestr + '判定结果').ai = function(button) { if (get.attitude(player, trigger.player) > 0) { return 1 + trigger.judge(button.link); } if (get.attitude(player, trigger.player) <(1113点数解答 | 2025-09-23 23:08:45)17
- "trigger": { "player": "judgeBefore" }, "direct": true, "priority": 1, "unique": true, "content": function() { "step 0" event.cards = get.cards(7); player.chooseCardButton(true, event.cards, '改命:选择一张牌作为你的' + trigger.judgestr + '判定结果').ai = function(button) { if (get.attitude(player, trigger.player) > 0) { return 1 + trigger.judge(button.link); } if (get.attitude(player, trigger.player) < 0) { (925点数解答 | 2025-09-24 00:15:05)18
- skill={ audio:"ext:我的扩展:2", trigger:{ player:"damageEnd", }, filter:function(event,player){ for(var i of lib.skill.谋攻.derivation){ if(!player.hasSkill(i,null,null,false)) return true; } return false; }, forced:true, content:function(){ for(var i of lib.skill.谋攻.derivation){ if(!player.hasSkill(i,null,null,false)){ randomGets(result.cards.length) player.addSkillLog(i); (589点数解答 | 2025-08-14 11:20:36)54
- skill={ audio:"ext:我的扩展:2", trigger:{ player:"damageEnd", }, filter:function(event,player){ for(var i of lib.skill.谋攻.derivation){ if(!player.hasSkill(i,null,null,false)) return true; } return false; }, forced:true, content:function(){ for(var i of lib.skill.谋攻.derivation){ if(!player.hasSkill(i,null,null,false)){ randomGets(result.cards.length) player.addSkillLog(i); (692点数解答 | 2025-08-14 11:22:49)68
- skill={ audio:2, trigger:{ player:["loseEnd","changeHp"], }, forced:true, filter:function (event,player){ return (player.countCards('h')<Math.min(3,player.maxHp-player.hp)); }, content:function (){ player.draw(Math.min(3,player.maxHp-player.hp)-player.countCards('h')); }, ai:{ noh:true, skillTagFilter:function (player,tag){ if(tag=='noh'&&player.maxHp-player.hp<player.countCards('h')){ return (331点数解答 | 2025-07-01 12:15:43)89
- if (card) { trigger.cancel(); trigger.result = { card: card, judge: trigger.judge(card), node: node, number: get.number(card), suit: get.suit(card), color: get.color(card), }; if (trigger.result.judge > 0) { trigger.result.bool = true; trigger.player.popup('洗具'); } if (trigger.result.judge < 0) { (793点数解答 | 2025-09-24 00:09:00)12