refactor: avoid globalThis
This commit is contained in:
parent
03add589c6
commit
e46822b45b
|
|
@ -9,8 +9,10 @@ import { EffectData } from "@/samples/slay-the-spire-like/system/types";
|
|||
import { GameCard } from "@/samples/slay-the-spire-like/system/deck";
|
||||
import { getAdjacentItems } from "@/samples/slay-the-spire-like/system/grid-inventory";
|
||||
import { GameItemMeta } from "@/samples/slay-the-spire-like/system/progress";
|
||||
import getEffects from "../effect.csv";
|
||||
|
||||
export function addEffectTriggers(triggers: Triggers) {
|
||||
const effects = getEffects();
|
||||
// ========== instant effects ==========
|
||||
triggers.onEffectApplied.use(async (ctx, next) => {
|
||||
if (ctx.effect.id === "attack") {
|
||||
|
|
@ -239,7 +241,7 @@ export function addEffectTriggers(triggers: Triggers) {
|
|||
if (storm > 0) {
|
||||
for (let i = 0; i < storm; i++) {
|
||||
await triggers.onEffectApplied.execute(ctx.game, {
|
||||
effect: findEffect(ctx.game, "static"),
|
||||
effect: findEffect("static"),
|
||||
entityKey: "player",
|
||||
stacks: 1,
|
||||
sourceEntityKey: ctx.enemyId,
|
||||
|
|
@ -321,7 +323,7 @@ export function addEffectTriggers(triggers: Triggers) {
|
|||
const defendNext = ctx.game.value.player.effects.defendNext;
|
||||
if (defendNext && defendNext.stacks > 0) {
|
||||
await ctx.game.produceAsync(draft => {
|
||||
addEntityEffect(draft.player, findEffect(ctx.game, "defend"), defendNext.stacks);
|
||||
addEntityEffect(draft.player, findEffect("defend"), defendNext.stacks);
|
||||
addEntityEffect(draft.player, defendNext.data, -defendNext.stacks);
|
||||
});
|
||||
}
|
||||
|
|
@ -386,7 +388,7 @@ export function addEffectTriggers(triggers: Triggers) {
|
|||
const rollDamage = Math.floor(roll / 10) * 10;
|
||||
ctx.amount += rollDamage;
|
||||
await ctx.game.produceAsync(draft => {
|
||||
addEntityEffect(draft.player, findEffect(ctx.game, "roll"), -rollDamage);
|
||||
addEntityEffect(draft.player, findEffect("roll"), -rollDamage);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -419,7 +421,7 @@ export function addEffectTriggers(triggers: Triggers) {
|
|||
if (consumed > 0) {
|
||||
await ctx.game.produceAsync(draft => {
|
||||
const e = getCombatEntity(draft, ctx.entityKey);
|
||||
if (e) addEntityEffect(e, findEffect(ctx.game, "charge"), -consumed);
|
||||
if (e) addEntityEffect(e, findEffect("charge"), -consumed);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -438,7 +440,7 @@ export function addEffectTriggers(triggers: Triggers) {
|
|||
if (consumed > 0) {
|
||||
await ctx.game.produceAsync(draft => {
|
||||
const a = getCombatEntity(draft, ctx.sourceEntityKey!);
|
||||
if (a) addEntityEffect(a, findEffect(ctx.game, "charge"), -consumed);
|
||||
if (a) addEntityEffect(a, findEffect("charge"), -consumed);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -526,13 +528,12 @@ export function addEffectTriggers(triggers: Triggers) {
|
|||
if (!attacker || !("enemy" in attacker) || attacker.enemy.id !== "秃鹫") return;
|
||||
|
||||
await triggers.onEffectApplied.execute(ctx.game, {
|
||||
effect: findEffect(ctx.game, "vultureEye"),
|
||||
effect: findEffect("vultureEye"),
|
||||
entityKey: "player",
|
||||
stacks: 1,
|
||||
sourceEntityKey: ctx.sourceEntityKey,
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function getAllEnemyData(game: CombatGameContext) {
|
||||
const seen = new Set<string>();
|
||||
|
|
@ -546,12 +547,9 @@ function getAllEnemyData(game: CombatGameContext) {
|
|||
return result;
|
||||
}
|
||||
|
||||
function findEffect(game: CombatGameContext | { value: CombatGameContext["value"] }, id: string): EffectData {
|
||||
const value = "value" in game ? game.value : game;
|
||||
const dataModule = (globalThis as any).__desertEffects;
|
||||
if (dataModule) {
|
||||
const found = dataModule.find((e: EffectData) => e.id === id);
|
||||
function findEffect(id: string): EffectData {
|
||||
const found = effects.find((e: EffectData) => e.id === id);
|
||||
if (found) return found;
|
||||
}
|
||||
return { id, name: id, description: "", lifecycle: "instant" } as EffectData;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue