feat: 不落红技能调整,miaoTool添加hook功能

This commit is contained in:
539943419 committed 2024-10-27 16:02:37 +08:00
1 parent a228dc94ce
commit 8154291803
2 files changed
+89 -25

No files matched your search

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