diff --git a/extension.js b/extension.js
index 2b2362b..782f97e 100644
--- a/extension.js
+++ b/extension.js
@@ -9942,7 +9942,7 @@ if(get.type(card)=='basic' && get.type(card)=='trick') flag= true;
zioy_chiqi: {
autoTranslate: {
name: "赤契",
- info: `①游戏开始时,你获得X点体力上限并获得1枚“契月”(X为场上每名角色体力上限的最大值)
②当你拥有“契月”时:你攻击范围+X;你造成的伤害+X;你使用牌无次数限制;当你使用的基本牌结算完成后,你收回此牌;造成伤害后,你移去一枚“契月”标记。
③当你不因〖纵万千生灵生灭〗恢复体力时,取消之。`
+ info: `①游戏开始时,你获得X点体力上限并获得1枚“契月”(X为场上每名角色体力上限的最大值)
②当你拥有“契月”时:你攻击范围+X;你造成的伤害+X/3(向下取整);你使用牌无次数限制;当你于回合外使用或打出基本牌结算完成后,你收回此牌并移去一枚“契月”标记;造成伤害后,你移去一枚“契月”标记。`
},
trigger:{
global:"phaseBefore",
@@ -9983,7 +9983,7 @@ if(get.type(card)=='basic' && get.type(card)=='trick') flag= true;
},
forced:true,
async content(event,trigger,player){
- trigger.num += player.countMark('zioy_chiqi');
+ trigger.num += Math.floor(player.countMark('zioy_chiqi') / 3);
},
"_priority": 6354564654,
},
@@ -10002,13 +10002,14 @@ if(get.type(card)=='basic' && get.type(card)=='trick') flag= true;
},
useCardAfter: {
trigger:{
- player:["useCardAfter"],
+ player:['useCard', 'respond'],
},
- filter:function(event,player){
- return player.countMark('zioy_chiqi') > 0 && get.type(event.card) === 'basic';
+ filter:function (event,player){
+ return player.countMark('zioy_chiqi') > 0 && player!=_status.currentPhase && get.type(event.card) === 'basic';
},
async content(event,trigger,player){
player.gain(trigger.cards)
+ player.removeMark('zioy_chiqi', 1)
},
forced:true,
"_priority":485965631,
@@ -10018,8 +10019,9 @@ if(get.type(card)=='basic' && get.type(card)=='trick') flag= true;
zioy_aici: {
autoTranslate: {
name: "哀慈",
- info: `①出牌阶段,你可选择任意名未拥有“契月”且座次连续的角色。你令其依次获得等同于其体力上限枚“契月”标记,摸等量的牌,并使其依次获得〖赤月东升〗。
②当拥有“契月”标记的角色即将死亡时,你获得其所有“契月”标记。`
+ info: `①出牌阶段,你可选择任意名未拥有“契月”且座次连续的角色。你令其依次获得等同于其体力上限枚“契月”标记(若其为你则获得3枚标记),摸等量的牌,并使其依次获得〖赤月东升〗。
②当拥有“契月”标记的角色即将死亡时,你获得其所有“契月”标记。`
},
+ derivation: ["zioy_chiyuedongsheng"],
locked: false,
mod:{
maxHandcardBase:function(player,num){
@@ -10033,7 +10035,7 @@ if(get.type(card)=='basic' && get.type(card)=='trick') flag= true;
usable:1,
forced: true,
filter(event, player){
- return game.players.filter(t => t.countMark('zioy_chiqi') > 0).length > 0;
+ return game.players.filter(t => t.countMark('zioy_chiqi') === 0).length > 0;
},
filterTarget:function(card,player,target){
// if(player==target) return false;
@@ -10050,13 +10052,19 @@ if(get.type(card)=='basic' && get.type(card)=='trick') flag= true;
async content(event, trigger, player){
const num = event.num
const t = event.targets[num]
- const maxHp = t.maxHp
- t.addMark('zioy_chiqi', maxHp)
- t.draw(maxHp)
+ const getCardNum = t === player ? 3 : t.maxHp
+ t.addMark('zioy_chiqi', getCardNum)
+ t.draw(getCardNum)
t.addSkill('zioy_chiyuedongsheng')
},
ai: {
- threaten: 1
+ threaten: 1,
+ result:{
+ target: function (player, target) {
+ return get.attitude(player, target)
+ },
+ },
+ order:1,
},
_priority: -351651,
},
@@ -10086,7 +10094,7 @@ if(get.type(card)=='basic' && get.type(card)=='trick') flag= true;
zioy_chiyuedongsheng: {
autoTranslate: {
name: "赤月东升",
- info: `①当你即将恢复体力时,取消之,然后你移去一枚“契月”标记。
②回合开始阶段,你移去一枚“契月”标记。
③当你因此技能失去所有“契月”时,你失去此技能并受到1点无来源伤害。`
+ info: `①当你即将恢复体力时,取消之,然后你移去一枚“契月”标记。
②回合开始阶段,你移去一枚“契月”标记。
③当你失去所有“契月”时,你失去此技能并受到1点由你造成伤害。`
},
locked: false,
mod:{
@@ -10095,6 +10103,23 @@ if(get.type(card)=='basic' && get.type(card)=='trick') flag= true;
},
attackRange:(player,num)=>player.hp,
},
+ init: (player) => {
+ const unhook = _mt.other.hook(player, 'removeMark', {
+ after: () => {
+ if(player.countMark('zioy_chiqi') === 0) {
+ unhook()
+ player.damage()
+ player.removeSkill('zioy_chiyuedongsheng')
+ }
+ }
+ })
+ player.storage.zioy_chiyuedongsheng = {
+ unhook
+ }
+ },
+ onremove: (player) => {
+ player.storage.zioy_chiyuedongsheng.unhook()
+ },
autoSubSkill:{
recover: {
trigger: {
@@ -10107,10 +10132,10 @@ if(get.type(card)=='basic' && get.type(card)=='trick') flag= true;
async content(event, trigger, player){
trigger.cancel()
player.removeMark('zioy_chiqi', 1)
- if(player.countMark('zioy_chiqi') === 0) {
- player.damage()
- player.removeSkill('zioy_chiyuedongsheng')
- }
+ // if(player.countMark('zioy_chiqi') === 0) {
+ // player.damage()
+ // player.removeSkill('zioy_chiyuedongsheng')
+ // }
},
ai: {
threaten: 1
@@ -10127,10 +10152,10 @@ if(get.type(card)=='basic' && get.type(card)=='trick') flag= true;
},
async content(event,trigger,player){
player.removeMark('zioy_chiqi', 1)
- if(player.countMark('zioy_chiqi') === 0) {
- player.damage()
- player.removeSkill('zioy_chiyuedongsheng')
- }
+ // if(player.countMark('zioy_chiqi') === 0) {
+ // player.damage()
+ // player.removeSkill('zioy_chiyuedongsheng')
+ // }
},
ai:{
threaten:1.3,
@@ -10145,7 +10170,7 @@ if(get.type(card)=='basic' && get.type(card)=='trick') flag= true;
zioy_zongwanqianshenglingshengmie: {
autoTranslate: {
name: "纵万千生灵生灭",
- info: `限定技。回合开始阶段,你可以弃置你区域内所有牌,然后将其他角色区域内的所有牌移动至你区域内的相应位置,然后你将所有“契月”移动至你的区域内并摸等同于本次移动“契月”数量的牌,然后你移去所有“契月”,恢复等量体力并对所有其他角色造成等同于你当前体力/3的伤害。`
+ info: `限定技。回合开始阶段,你可以弃置你区域内所有牌,然后选择若干名其他角色,依次将其区域内的所有牌移动至你区域内的相应位置,然后你将所有“契月”移动至你的区域内并摸等同于本次移动“契月”数量的牌,然后你移去所有“契月”,恢复等量体力并对所有其他角色造成等同于你当前体力/3(向下取整)的伤害。`
},
trigger: {
player: 'phaseBegin'
@@ -10156,7 +10181,13 @@ if(get.type(card)=='basic' && get.type(card)=='trick') flag= true;
async content(event,trigger,player){
player.awakenSkill('zioy_zongwanqianshenglingshengmie')
player.discard('hej')
- for(const target of game.players) {
+ const {result: { targets }} = (await (player.chooseTarget(get.translation('zioy_zongwanqianshenglingshengmie'), [1,game.players.length - 1], true, (_, player, target)=>{
+ return player !== target
+ }).set("ai", target => {
+ var att = get.attitude(player, target);
+ return -att;
+ })));
+ for(const target of targets) {
if(target === player) {
continue
}
@@ -10177,7 +10208,7 @@ if(get.type(card)=='basic' && get.type(card)=='trick') flag= true;
const count = player.countMark('zioy_chiqi');
player.removeMark('zioy_chiqi', count)
player.recover(count)
- for(const target of game.players) {
+ for(const target of targets) {
if(target === player) {
continue
}
diff --git a/miaoTool.js b/miaoTool.js
index 7f55175..f8d7f73 100644
--- a/miaoTool.js
+++ b/miaoTool.js
@@ -51,7 +51,7 @@ const CSSS = {
};
export default (lib, game, ui, get, ai, _status) => {
- return {
+ const miaoTool = {
/**
* Description 游戏全局相关操作
*/
@@ -166,7 +166,40 @@ export default (lib, game, ui, get, ai, _status) => {
return func.constructor.name === "AsyncFunction";
},
- loadStyleString
+ loadStyleString,
+
+ /**
+ * Description 让一个obj的某一函数执行前后额外执行一些东西
+ * @param {object} target
+ * @param {string} key
+ * @param {{before: () => void; after: () => void}} config
+ * @returns {() => void} unhook
+ */
+ hook(target, key, config) {
+ let enable = true;
+ const originFunc = target[key];
+ const _do = (func, args) => {
+ // if(miaoTool.other.isAsyncFunction) {
+ // await func(...args)
+ // } else {
+ func(...args);
+ // }
+ };
+ target[key] = (...args) => {
+ if (enable && config.before) {
+ _do(config.before, args);
+ }
+ const result = originFunc.call(target, ...args);
+ if (enable && config.after) {
+ _do(config.after, args);
+ }
+ return result;
+ };
+ return () => {
+ enable = false;
+ };
+ }
}
};
+ return miaoTool;
};