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