feat: agregar lógica de penalización por fatiga en recompensas; actualizar tipos de recompensa para incluir monedas base y monedas después de la penalización

This commit is contained in:
2025-10-09 01:57:58 -05:00
parent 0b0a73d114
commit 3a311c8bb6
4 changed files with 38 additions and 24 deletions

View File

@@ -103,14 +103,18 @@ export const command: CommandMessage = {
}) })
.join("\n") .join("\n")
: "• —"; : "• —";
if (result.rewardModifiers?.baseCoinsAwarded != null) {
const { baseCoinsAwarded, coinsAfterPenalty, fatigueCoinMultiplier } =
result.rewardModifiers;
if ( if (
result.rewardModifiers?.fatigueCoinMultiplier != null && fatigueCoinMultiplier != null &&
result.rewardModifiers.fatigueCoinMultiplier < 1 fatigueCoinMultiplier < 1 &&
baseCoinsAwarded != null &&
coinsAfterPenalty != null
) { ) {
const pct = Math.round( const pct = Math.round((1 - fatigueCoinMultiplier) * 100);
(1 - result.rewardModifiers.fatigueCoinMultiplier) * 100 rewardLines += `\n (⚠️ Fatiga: monedas base ${baseCoinsAwarded}${coinsAfterPenalty} (-${pct}%) )`;
); }
rewardLines += `\n (⚠️ Fatiga -${pct}% monedas)`;
} }
const mobsLines = result.mobs.length const mobsLines = result.mobs.length
? result.mobs.map((m) => `${m}`).join("\n") ? result.mobs.map((m) => `${m}`).join("\n")

View File

@@ -113,14 +113,18 @@ export const command: CommandMessage = {
}) })
.join("\n") .join("\n")
: "• —"; : "• —";
if (result.rewardModifiers?.baseCoinsAwarded != null) {
const { baseCoinsAwarded, coinsAfterPenalty, fatigueCoinMultiplier } =
result.rewardModifiers;
if ( if (
result.rewardModifiers?.fatigueCoinMultiplier != null && fatigueCoinMultiplier != null &&
result.rewardModifiers.fatigueCoinMultiplier < 1 fatigueCoinMultiplier < 1 &&
baseCoinsAwarded != null &&
coinsAfterPenalty != null
) { ) {
const pct = Math.round( const pct = Math.round((1 - fatigueCoinMultiplier) * 100);
(1 - result.rewardModifiers.fatigueCoinMultiplier) * 100 rewardLines += `\n (⚠️ Fatiga: monedas base ${baseCoinsAwarded}${coinsAfterPenalty} (-${pct}%) )`;
); }
rewardLines += `\n (⚠️ Fatiga -${pct}% monedas)`;
} }
const mobsLines = result.mobs.length const mobsLines = result.mobs.length
? result.mobs.map((m) => `${m}`).join("\n") ? result.mobs.map((m) => `${m}`).join("\n")

View File

@@ -99,14 +99,18 @@ export const command: CommandMessage = {
}) })
.join("\n") .join("\n")
: "• —"; : "• —";
if (result.rewardModifiers?.baseCoinsAwarded != null) {
const { baseCoinsAwarded, coinsAfterPenalty, fatigueCoinMultiplier } =
result.rewardModifiers;
if ( if (
result.rewardModifiers?.fatigueCoinMultiplier != null && fatigueCoinMultiplier != null &&
result.rewardModifiers.fatigueCoinMultiplier < 1 fatigueCoinMultiplier < 1 &&
baseCoinsAwarded != null &&
coinsAfterPenalty != null
) { ) {
const pct = Math.round( const pct = Math.round((1 - fatigueCoinMultiplier) * 100);
(1 - result.rewardModifiers.fatigueCoinMultiplier) * 100 rewardLines += `\n (⚠️ Fatiga: monedas base ${baseCoinsAwarded}${coinsAfterPenalty} (-${pct}%) )`;
); }
rewardLines += `\n (⚠️ Fatiga -${pct}% monedas)`;
} }
const mobsLines = result.mobs.length const mobsLines = result.mobs.length
? result.mobs.map((m) => `${m}`).join("\n") ? result.mobs.map((m) => `${m}`).join("\n")

View File

@@ -66,6 +66,8 @@ export type RunResult = {
rewardModifiers?: { rewardModifiers?: {
fatigueCoinMultiplier?: number; // 0.85 si hay -15% fatigueCoinMultiplier?: number; // 0.85 si hay -15%
fatigueMagnitude?: number; // magnitud original del efecto fatigueMagnitude?: number; // magnitud original del efecto
baseCoinsAwarded?: number; // suma antes de aplicar multiplicador de fatiga
coinsAfterPenalty?: number; // suma final depositada en wallet
}; };
}; };