Skip to content

Commit e8f3ae7

Browse files
committed
Fix some pressure effect toggling issues
1 parent c3367ab commit e8f3ae7

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

module/pipelines/damage-pipeline.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ function resolveAffinity(context) {
259259

260260
if (context.actor.type === 'npc') {
261261
// Pressure System Support
262-
if (game.settings.get(SYSTEM, SETTINGS.pressureSystem)) {
262+
if (game.settings.get(SYSTEM, SETTINGS.pressureSystem) && context.actor.resolveEffect('pressure')) {
263263
let pressurePointTriggered = false;
264264

265265
// Check if the damage type hit a vulnerable affinity

module/systems/pressure-system.mjs

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -85,16 +85,20 @@ async function onCombatEvent(event) {
8585
switch (event.type) {
8686
case FU.combatEvent.endOfRound:
8787
for (const actor of event.actors.filter((a) => a.type === 'npc')) {
88-
const se = actor.resolveEffect('stagger');
89-
if (se) {
90-
// Delete the stagger effect
91-
se.delete();
92-
// Reset pressure
88+
const stagger = actor.resolveEffect('stagger');
89+
if (stagger) {
90+
stagger.delete();
9391
const pressure = actor.resolveProgress('pressure');
9492
await actor.updateProgress('pressure', -pressure.current);
9593
}
9694
}
9795
break;
96+
97+
case FU.combatEvent.endOfCombat:
98+
for (const actor of event.actors.filter((a) => a.type === 'npc')) {
99+
await removePressureEffect(actor);
100+
}
101+
break;
98102
}
99103
}
100104

@@ -104,8 +108,15 @@ async function applyPressureEffect(actor) {
104108
case 'champion':
105109
case 'elite':
106110
{
111+
// If they somehow already have the pressure effect
112+
const pressure = actor.resolveEffect('pressure');
113+
if (pressure) {
114+
await pressure.delete();
115+
}
116+
// Toggle it on
117+
const segments = rank.value === 'champion' ? 2 + rank.replacedSoldiers * 2 : 4;
107118
const pressureData = await Effects.getEffectData('pressure');
108-
pressureData.system.rules.progress.max = rank.value === 'champion' ? 2 + rank.replacedSoldiers * 2 : 4;
119+
pressureData.system.rules.progress.max = segments;
109120
if (pressureData) {
110121
await Effects.toggleStatusEffect(actor, 'pressure', InlineSourceInfo.scene);
111122
}

0 commit comments

Comments
 (0)