diff --git a/card/standard.js b/card/standard.js index 86f11562f..5e55c0a57 100644 --- a/card/standard.js +++ b/card/standard.js @@ -608,6 +608,12 @@ game.import("card", function () { if (target !== _status.event.dying) { if ( !player.isPhaseUsing() || + player.needsToDiscard(0, (i, player) => { + return ( + !player.canIgnoreHandcard(i) && + taos.includes(i) + ); + }) || player.hasSkillTag( "nokeep", true, @@ -619,7 +625,7 @@ game.import("card", function () { ) ) return 2; - let min = 7.2 - (4 * player.hp) / player.maxHp, + let min = 8.1 - (4.5 * player.hp) / player.maxHp, nd = player.needsToDiscard(0, (i, player) => { return ( !player.canIgnoreHandcard(i) && diff --git a/character/diy/skill.js b/character/diy/skill.js index 2db429859..77580b666 100644 --- a/character/diy/skill.js +++ b/character/diy/skill.js @@ -5210,6 +5210,19 @@ const skills = { subSkill: { used: {}, }, + ai: { + effect: { + target(card, player, target) { + if (get.tag(card, "save")) { + if (_status.currentPhase == player) return 0; + if (target.maxHp > 1 && player != target) return 0; + } + if (get.tag(card, "recover")) { + if (_status.currentPhase == player) return 0; + } + }, + }, + } }, nsshishou: { trigger: { player: "loseEnd" }, @@ -5241,18 +5254,7 @@ const skills = { }, }, ai: { - halfneg: true, - effect: { - target(card, player, target) { - if (get.tag(card, "save")) { - if (_status.currentPhase == player) return 0; - if (target.maxHp > 1 && player != target) return 0; - } - if (get.tag(card, "recover")) { - if (_status.currentPhase == player) return 0; - } - }, - }, + neg: true, }, }, nsduijue: { diff --git a/character/extra/skill.js b/character/extra/skill.js index 4fe0692a0..6072b5ce5 100644 --- a/character/extra/skill.js +++ b/character/extra/skill.js @@ -5769,22 +5769,25 @@ const skills = { notemp: true, effect: { target: (card, player, target) => { - if (!get.tag(card, "damage") || !target.hasFriend()) return; - if (player.hasSkillTag("jueqing", null, target)) return 1.7; + if (!target.hasFriend()) return; + let rec = get.tag(card, "recover"), damage = get.tag(card, "damage"); + if (!rec && !damage) return; + if (damage && player.hasSkillTag("jueqing", null, target)) return 1.7; let die = [null, 1], temp; game.filterPlayer(i => { temp = i.countMark("new_wuhun"); if (i === player && target.hp + target.hujia > 1) temp++; - if (temp >= die[1]) { + if (temp > die[1]) die = [i, temp]; + else if (temp === die[1]) { if (!die[0]) die = [i, temp]; - else { - let att = get.attitude(player, i); - if (att < die[1]) die = [i, temp]; - } + else if (get.attitude(target, i) < get.attitude(target, die[0])) die = [i, temp]; } }); - if (die[0]) return [1, 0, 1, (-6 * get.sgnAttitude(player, die[0])) / Math.max(1, target.hp)]; + if (die[0]) { + if (damage) return [1, 0, 1, (-6 * get.sgnAttitude(player, die[0])) / Math.max(1, target.hp)]; + return [1, (6 * get.sgnAttitude(player, die[0])) / Math.max(1, target.hp)]; + } }, }, }, @@ -6733,7 +6736,7 @@ const skills = { target(card, player, target, current) { if (player.getHp() <= 0) return; if (!target.hasFriend()) return; - if (target.hp <= 1 && get.tag(card, "damage")) return [1, 0, 0, -2]; + if (target.hp <= 1 && get.tag(card, "damage")) return [1, 0, 0, -2 * player.getHp()]; }, }, }, diff --git a/character/hearth.js b/character/hearth.js index 61df42fc2..239e44c88 100644 --- a/character/hearth.js +++ b/character/hearth.js @@ -2200,17 +2200,6 @@ game.import("character", function () { content() { trigger.num++; }, - }, - qingtian_old: { - trigger: { player: "recoverBefore" }, - forced: true, - filter(event, player) { - return player.hp > 0 && event.num > 0; - }, - content() { - trigger.cancel(); - player.changeHujia(trigger.num); - }, ai: { neg: true, }, diff --git a/character/mobile/skill.js b/character/mobile/skill.js index f2c1150bd..3f8f03a7d 100644 --- a/character/mobile/skill.js +++ b/character/mobile/skill.js @@ -4049,7 +4049,6 @@ const skills = { }, ai: { threaten: 2.5, - halfneg: true, }, subSkill: { block: { @@ -16128,7 +16127,7 @@ const skills = { player.draw(event.num); }, ai: { - halfneg: true, + neg: true, }, }, yixiang: { diff --git a/character/sb/skill.js b/character/sb/skill.js index b459c8763..646e29a89 100644 --- a/character/sb/skill.js +++ b/character/sb/skill.js @@ -1891,7 +1891,7 @@ const skills = { player.markAuto("sbyijue_effect", [trigger.player]); }, ai: { - halfneg: true, + neg: true, }, marktext: "绝", intro: { content: "已放$一马" }, @@ -7407,7 +7407,6 @@ const skills = { ai: { threaten: 3.5, directHit_ai: true, - halfneg: true, skillTagFilter: function (player, tag, arg) { if (arg && arg.card && arg.card.name == "sha") { var storage = player.getStorage("sbliegong"); diff --git a/character/sp/skill.js b/character/sp/skill.js index 4f4757ef1..39f28f02d 100644 --- a/character/sp/skill.js +++ b/character/sp/skill.js @@ -7399,7 +7399,7 @@ const skills = { }, ai: { threaten: 0.8, - halfneg: true, + neg: true, effect: { player_use(card, player, target) { if ((!card.isCard || !card.cards) && get.itemtype(card) != "card") return; @@ -7751,7 +7751,7 @@ const skills = { } }, ai: { - halfneg: true, + neg: true, }, subSkill: { swap: { @@ -9700,7 +9700,6 @@ const skills = { }, ai: { halfneg: true, - combo: "fenrui", threaten: 3.2, }, }, diff --git a/character/sp2/skill.js b/character/sp2/skill.js index a12da56d3..98b94fcbd 100644 --- a/character/sp2/skill.js +++ b/character/sp2/skill.js @@ -3348,7 +3348,7 @@ const skills = { } }, ai: { - halfneg: true, + neg: true, }, }, xiongrao: { diff --git a/character/yijiang/skill.js b/character/yijiang/skill.js index 729d32cfa..716a85585 100644 --- a/character/yijiang/skill.js +++ b/character/yijiang/skill.js @@ -5963,7 +5963,7 @@ const skills = { trigger.num++; }, ai: { - halfneg: true, + neg: true, }, }, huisheng: {