2022-05-16 02:19:31 +02:00
|
|
|
// SPDX-FileCopyrightText: 2022 Johannes Loher
|
|
|
|
//
|
|
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
|
2022-05-16 02:08:27 +02:00
|
|
|
import { packageId } from '../constants';
|
|
|
|
|
|
|
|
import type { TickwerkCombatant } from '../data/documents/combatant';
|
|
|
|
|
|
|
|
export const registerDS4SpecificFunctionality = () => {
|
|
|
|
if (CONFIG.tickwerk === undefined) CONFIG.tickwerk = {};
|
|
|
|
foundry.utils.mergeObject(CONFIG.tickwerk, { getTieBreaker, getInitiativeFormula });
|
|
|
|
};
|
|
|
|
|
|
|
|
const getTieBreaker = async (combatant: TickwerkCombatant, combatants: TickwerkCombatant[]): Promise<number> => {
|
|
|
|
if (combatants.length === 0) return 0;
|
|
|
|
const tieBreakers = combatants.map((combatant) => {
|
|
|
|
return (
|
|
|
|
(combatant._newTieBreaker !== undefined
|
|
|
|
? combatant._newTieBreaker
|
|
|
|
: combatant.getFlag(packageId, 'tieBreaker')) ?? 0
|
|
|
|
);
|
|
|
|
});
|
|
|
|
return Math.max(...tieBreakers) + 1;
|
|
|
|
};
|
|
|
|
|
|
|
|
const getInitiativeFormula = (combatant: TickwerkCombatant) => {
|
|
|
|
const started = combatant.combat?.started ?? false;
|
|
|
|
if (!started) return '-@combatValues.initiative.total';
|
|
|
|
const tickValue = combatant.combat?.round ?? 0;
|
|
|
|
return `max(${tickValue} + 10 - @combatValues.initiative.total, ${tickValue})`;
|
|
|
|
};
|