mirror of
https://github.com/Shu-Ying/noname-shuying.git
synced 2026-10-18 13:20:02 +08:00
feat # 继续补全遗物系统
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
import { applyMengsanDebuff } from "../monsters/artifact-status.js";
|
||||
import { ironcladBlocksEnergy, ironcladStrengthPenalty } from "../cards/ironclad-hooks.js";
|
||||
import { isAttackCard } from "../monsters/vine-tangled.js";
|
||||
|
||||
export function createOpeningEffects(game, owner, refreshEnergy) {
|
||||
export function createOpeningEffects(game, owner, refreshEnergy, random = Math.random) {
|
||||
const enemies = () => game.players.filter(player =>
|
||||
player !== owner && player.isAlive() &&
|
||||
player.storage?.mengsanCamp_shuying === "enemy");
|
||||
@@ -16,6 +17,22 @@ export function createOpeningEffects(game, owner, refreshEnergy) {
|
||||
if (relic.effect === "firstTurnEnergy") {
|
||||
if (!ironcladBlocksEnergy(owner)) owner.storage.mengsanEnergy_shuying += relic.amount;
|
||||
refreshEnergy();
|
||||
} else if (relic.effect === "energy" || relic.effect === "nextEnergy") {
|
||||
if (!ironcladBlocksEnergy(owner)) owner.storage.mengsanEnergy_shuying = Math.max(0,(owner.storage.mengsanEnergy_shuying || 0)+relic.amount);
|
||||
refreshEnergy();
|
||||
} else if (["openingBlock","nextBlock","plating"].includes(relic.effect)) {
|
||||
await owner.changeHujia(relic.amount);
|
||||
} else if (relic.effect === "openingHeal" || relic.effect === "healAbsolute") {
|
||||
await owner.recover(relic.amount);
|
||||
} else if (relic.effect === "openingLoseHp") {
|
||||
await owner.loseHp(relic.amount);
|
||||
} else if (relic.effect === "targetDamage") {
|
||||
if (relic.target?.isAlive()) {
|
||||
const damage=relic.target.damage(relic.amount,owner,"nocard"); damage.mengsanScriptedSkill_shuying=true; await damage;
|
||||
}
|
||||
} else if (relic.effect === "randomDamage") {
|
||||
const targets=enemies(),target=targets[Math.floor(random()*targets.length)];
|
||||
if(target){const damage=target.damage(relic.amount,owner,"nocard");damage.mengsanScriptedSkill_shuying=true;await damage;}
|
||||
} else if (relic.effect === "openingStrength") {
|
||||
addStatus(owner, "mengsanStrength_shuying",
|
||||
"mengsan_raider_strength_shuying", relic.amount);
|
||||
@@ -29,6 +46,8 @@ export function createOpeningEffects(game, owner, refreshEnergy) {
|
||||
} else if (relic.effect === "openingWeak") {
|
||||
addStatus(target, "mengsanWeak_shuying",
|
||||
"mengsan_weak_shuying", relic.amount);
|
||||
} else if (relic.effect === "openingEnemyStrength") {
|
||||
addStatus(target,"mengsanStrength_shuying","mengsan_raider_strength_shuying",relic.amount);
|
||||
} else if (relic.effect === "openingDamage") {
|
||||
const damage = target.damage(relic.amount, owner, "nocard");
|
||||
damage.mengsanScriptedSkill_shuying = true;
|
||||
@@ -46,22 +65,27 @@ export function createRelicCombatSkills(getBattle, getOwner) {
|
||||
forced: true, silent: true, popup: false, priority: 80,
|
||||
filter(event) {
|
||||
const source = event.source;
|
||||
return Boolean(getBattle()?.session.active && event.card &&
|
||||
return Boolean(getBattle()?.session.active && (isAttackCard(event.card) || event.mengsanAttack_shuying) &&
|
||||
!event.mengsanScriptedSkill_shuying &&
|
||||
((source === getOwner() &&
|
||||
(source?.storage?.mengsanStrength_shuying > 0 || ironcladStrengthPenalty(source) > 0)) ||
|
||||
(source === getOwner() ||
|
||||
source?.storage?.mengsanWeak_shuying > 0));
|
||||
},
|
||||
async content(event, trigger) {
|
||||
const source = trigger.source;
|
||||
if (source === getOwner()) {
|
||||
trigger.num = Math.max(0, trigger.num + (source.storage.mengsanStrength_shuying || 0) - ironcladStrengthPenalty(source));
|
||||
trigger.num = getBattle().relics?.outgoingDamage(trigger) ?? trigger.num;
|
||||
}
|
||||
if (source.storage.mengsanWeak_shuying > 0) {
|
||||
trigger.num = Math.floor(trigger.num * 0.75);
|
||||
trigger.num = Math.floor(trigger.num * (source !== getOwner() && getBattle().relics?.has("paper_krane") ? 0.6 : 0.75));
|
||||
}
|
||||
},
|
||||
},
|
||||
mengsan_relic_boot_shuying: {
|
||||
trigger:{global:"damageBegin2"},forced:true,silent:true,popup:false,priority:-1000,
|
||||
filter(event){return Boolean(getBattle()?.session.active && event.source===getOwner() && (isAttackCard(event.card) || event.mengsanAttack_shuying) && !event.mengsanScriptedSkill_shuying);},
|
||||
async content(event,trigger){trigger.num=getBattle().relics?.lateOutgoingDamage(trigger) ?? trigger.num;},
|
||||
},
|
||||
mengsan_weak_shuying: {
|
||||
mark: true, marktext: "弱",
|
||||
onremove(player) { delete player.storage.mengsanWeak_shuying; },
|
||||
|
||||
Reference in New Issue
Block a user