酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

生成无名杀技能代码;技能名:符济,技能效果:出牌阶段限一次,你可以展示至多全场存活的其他角色数张牌并交给等量名其他角色,这些牌被称为“符济”牌。 其他角色使用“符济”牌时,获得一张与“符济”牌相同花色的牌。 若“符济”牌为【杀】,则此【杀】的基础伤害值+1;若“符济”牌为【闪】,则此牌结算完毕后使用者摸一张牌。 若你发动此技能后手牌数为全场最少,则你摸一张牌,且直至你的下回合开始前,你使用的第一张【杀】和【闪】带有“符济”牌效果。 语言方向:JavaScript

以下是无名杀"符济"技能的JavaScript实现代码: ```javascript / * 符济技能实现 */ skills.push({ name: "符济", trigger: { player: "phaseUse" }, filter: function(event, player) { return player.phase === "phaseUse" && !player.hasUsedSkill("符济"); }, content: function() { "step 0" let targets = game.filterPlayer(this.player, player => player !== this.player && player.isAlive()); let cards = this.player.selectCards({ num: targets.length, filter: card => true, prompt: "请选择至多" + targets.length + "张牌作为符济牌" }); if (cards.length === 0) return; "step 1" let targetList = this.player.selectTargets(targets, { num: cards.length, forced: false, prompt: "请选择" + cards.length + "名角色分配符济牌" }); if (targetList.length === 0) return; "step 2" let distribute = {}; for (let i = 0; i < cards.length; i++) { let card = cards[i]; let target = targetList[i]; if (!distribute[target.id]) distribute[target.id] = []; distribute[target.id].push(card); card.mark("符济"); } for (let id in distribute) { let target = game.getPlayer(id); let cardsToGive = distribute[id]; this.player.giveCard(cardsToGive, target); } "step 3" let minHand = game.getPlayers().reduce((min, p) => { return p.isAlive() && p.hand.length < min ? p.hand.length : min; }, Infinity); if (this.player.hand.length <= minHand) { this.player.draw(1); this.player.markSkill("符济_加成"); } }, mark: "符济", subSkill: { name: "符济_加成", trigger: { player: ["useCard", "respondCard"] }, filter: function(event, player) { if (!player.hasMark("符济_加成")) return false; let card = event.getCard(); return (card.name === "sha" || card.name === "shan") && !player.hasUsedCard(card.name); }, content: function() { let card = this.event.getCard(); card.mark("符济"); player.removeMark("符济_加成"); } }, onCardUse: function(card, player, target) { if (card.hasMark("符济")) { if (card.name === "sha") { card.damageValue = (card.damageValue || 1) + 1; } } }, onCardRespond: function(card, player, target) { if (card.hasMark("符济") && card.name === "shan") { player.draw(1); } }, onCardObtain: function(card, player, target) { if (card.hasMark("符济")) { let suit = card.suit; player.gainCard(game.createCard(suit)); } } }); ``` 代码逻辑说明: 1. 技能触发在出牌阶段,且每回合限一次 2. 玩家可以选择至多等于其他存活角色数量的牌作为符济牌 3. 符济牌会被标记并分配给其他角色 4. 使用符济牌时根据牌类型触发不同效果 5. 手牌最少时获得额外效果加成 三条额外需要注意的逻辑点: 1. 符济牌的分配需要确保每名角色获得一张牌 2. 手牌数判断需要考虑所有存活角色 3. 加成效果需要在下回合开始前清除 [2025-05-24 22:01:56 | AI写代码神器 | 854点数解答]

相关提问