Fixed action dialog applying actions

This commit is contained in:
ThaumRystra
2024-04-06 12:41:15 +02:00
parent 1fb1eb83c7
commit 51fa1e7e0b
8 changed files with 24 additions and 16 deletions

View File

@@ -8,7 +8,7 @@ export interface EngineAction {
_id?: string;
_isSimulation?: boolean;
_stepThrough?: boolean;
_choices?: any[],
_decisions?: any[],
creatureId: string;
rootPropId: string;
targetIds?: string[];

View File

@@ -4,8 +4,8 @@ import { getVariables } from '/imports/api/engine/loadCreatures';
// Combine all the action results into the scope at present
export async function getEffectiveActionScope(action: EngineAction) {
const scope = await getVariables(action.creatureId);
delete scope._id;
delete scope._creatureId;
// delete scope._id;
// delete scope._creatureId;
// Combine the applied results
for (const result of action.results) {
// Pop keys that are not longer used by a busy property

View File

@@ -8,17 +8,17 @@ import InputProvider from '/imports/api/engine/action/functions/userInput/InputP
export default function saveInputChoices(action: EngineAction, userInput: InputProvider): InputProvider {
const newInputProvider: Partial<InputProvider> = {};
if (!action._choices) {
action._choices = [];
if (!action._decisions) {
action._decisions = [];
}
// For every function in the given input provider
for (const key in userInput) {
const oldFn = userInput[key];
// Make a new function that does the same thing, but saves the result to action._choices
// Make a new function that does the same thing, but saves the result to action._decisions
const newFn = (...args) => {
const result = oldFn(...args);
action._choices.push(result);
action._decisions.push(result);
return result;
}
newInputProvider[key] = newFn;

View File

@@ -10,12 +10,12 @@ import getReplayChoicesInputProvider from '/imports/api/engine/action/functions/
export const runAction = new ValidatedMethod({
name: 'actions.runAction',
validate: new SimpleSchema({
action: {
type: Object,
blackbox: true,
actionId: {
type: String,
},
decisions: {
type: Array,
optional: true,
},
'decisions.$': {
type: Object,

View File

@@ -22,6 +22,10 @@ export default async function applyDamagePropTask(
const { title, operation } = task.params;
let targetProp = task.params.targetProp;
console.log({ task, action, result, userInput });
if (!targetProp) throw new Meteor.Error('not-found', 'Target property is required')
// Set the scope properties
result.pushScope = {};
if (operation === 'increment') {