fix: add effect triggering fixes
This commit is contained in:
@@ -1,5 +1,11 @@
|
||||
import {CombatEntity, CombatState, EffectTable, PlayerEntity} from "./types";
|
||||
import {CardData, EffectData} from "@/samples/slay-the-spire-like/system/types";
|
||||
import {CombatEntity, CombatGameContext, CombatState, EffectTable, PlayerEntity} from "./types";
|
||||
import {
|
||||
CardData,
|
||||
CardEffectTarget,
|
||||
CardTargetType,
|
||||
EffectData,
|
||||
EffectTarget
|
||||
} from "@/samples/slay-the-spire-like/system/types";
|
||||
import {GameItemMeta} from "@/samples/slay-the-spire-like/system/progress/types";
|
||||
import {GridInventory} from "@/samples/slay-the-spire-like/system/grid-inventory/types";
|
||||
|
||||
@@ -80,6 +86,25 @@ export function* getAliveEnemies(state: CombatState) {
|
||||
}
|
||||
}
|
||||
|
||||
export function* getEffectTargets(target: CardEffectTarget | EffectTarget, game: CombatGameContext, targetId?: string){
|
||||
if(target === 'all' || target === 'team'){
|
||||
for(const enemy of getAliveEnemies(game.value)){
|
||||
yield enemy;
|
||||
}
|
||||
} else if(target === 'self') {
|
||||
yield game.value.player;
|
||||
} else if(target === 'target'){
|
||||
if(!targetId) return;
|
||||
const entity = getCombatEntity(game.value, targetId);
|
||||
if(entity) yield entity;
|
||||
} else if(target === 'random'){
|
||||
const aliveEnemies = [...getAliveEnemies(game.value)];
|
||||
if(aliveEnemies.length === 0) return;
|
||||
const index = game.rng.nextInt(aliveEnemies.length);
|
||||
yield aliveEnemies[index];
|
||||
}
|
||||
}
|
||||
|
||||
export function getCombatEntity(state: CombatState, entityKey: string){
|
||||
return entityKey === 'player' ? state.player : state.enemies.find(e => e.id === entityKey);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user