refactor: mejorar la legibilidad del código en los comandos de mina, pelear y pescar; ajustar formato en la función de durabilidad de herramientas

This commit is contained in:
2025-10-09 00:14:07 -05:00
parent 1c086ec025
commit b66379d790
6 changed files with 56 additions and 18 deletions

View File

@@ -138,10 +138,18 @@ export const command: CommandMessage = {
return `${base} (agotada)${durabilityBar()}`;
}
if (result.tool.brokenInstance) {
return `${base} (se rompió una instancia, quedan ${result.tool.instancesRemaining}) (-${result.tool.durabilityDelta ?? 0} dur.)${durabilityBar()}`;
return `${base} (se rompió una instancia, quedan ${
result.tool.instancesRemaining
}) (-${result.tool.durabilityDelta ?? 0} dur.)${durabilityBar()}`;
}
const multi = result.tool.instancesRemaining && result.tool.instancesRemaining > 1 ? ` (x${result.tool.instancesRemaining})` : "";
return `${base}${multi} (-${result.tool.durabilityDelta ?? 0} dur.)${durabilityBar()}`;
const multi =
result.tool.instancesRemaining &&
result.tool.instancesRemaining > 1
? ` (x${result.tool.instancesRemaining})`
: "";
return `${base}${multi} (-${
result.tool.durabilityDelta ?? 0
} dur.)${durabilityBar()}`;
})()
: "—";

View File

@@ -142,11 +142,20 @@ export const command: CommandMessage = {
},
{ fallbackIcon: "🗡️" }
);
if (result.tool.broken) return `${base} (agotada)${durabilityBar()}`;
if (result.tool.broken)
return `${base} (agotada)${durabilityBar()}`;
if (result.tool.brokenInstance)
return `${base} (se rompió una instancia, quedan ${result.tool.instancesRemaining}) (-${result.tool.durabilityDelta ?? 0} dur.)${durabilityBar()}`;
const multi = result.tool.instancesRemaining && result.tool.instancesRemaining > 1 ? ` (x${result.tool.instancesRemaining})` : "";
return `${base}${multi} (-${result.tool.durabilityDelta ?? 0} dur.)${durabilityBar()}`;
return `${base} (se rompió una instancia, quedan ${
result.tool.instancesRemaining
}) (-${result.tool.durabilityDelta ?? 0} dur.)${durabilityBar()}`;
const multi =
result.tool.instancesRemaining &&
result.tool.instancesRemaining > 1
? ` (x${result.tool.instancesRemaining})`
: "";
return `${base}${multi} (-${
result.tool.durabilityDelta ?? 0
} dur.)${durabilityBar()}`;
})()
: "—";
const combatSummary = (() => {

View File

@@ -128,11 +128,20 @@ export const command: CommandMessage = {
},
{ fallbackIcon: "🎣" }
);
if (result.tool.broken) return `${base} (agotada)${durabilityBar()}`;
if (result.tool.broken)
return `${base} (agotada)${durabilityBar()}`;
if (result.tool.brokenInstance)
return `${base} (se rompió una instancia, quedan ${result.tool.instancesRemaining}) (-${result.tool.durabilityDelta ?? 0} dur.)${durabilityBar()}`;
const multi = result.tool.instancesRemaining && result.tool.instancesRemaining > 1 ? ` (x${result.tool.instancesRemaining})` : "";
return `${base}${multi} (-${result.tool.durabilityDelta ?? 0} dur.)${durabilityBar()}`;
return `${base} (se rompió una instancia, quedan ${
result.tool.instancesRemaining
}) (-${result.tool.durabilityDelta ?? 0} dur.)${durabilityBar()}`;
const multi =
result.tool.instancesRemaining &&
result.tool.instancesRemaining > 1
? ` (x${result.tool.instancesRemaining})`
: "";
return `${base}${multi} (-${
result.tool.durabilityDelta ?? 0
} dur.)${durabilityBar()}`;
})()
: "—";
const combatSummary = (() => {

View File

@@ -68,10 +68,7 @@ export const command: CommandMessage = {
const durLines = instances.length
? instances
.map((inst, idx) => {
const cur = Math.min(
Math.max(0, inst?.durability ?? max),
max
);
const cur = Math.min(Math.max(0, inst?.durability ?? max), max);
return `#${idx + 1} [${renderBar(cur)}] ${cur}/${max}`;
})
.join("\n")

View File

@@ -164,7 +164,8 @@ export async function addItemByKey(
// Inicializar durabilidad si corresponde
const props = parseItemProps(item.props);
const breakable = props.breakable;
const maxDurability = breakable?.enabled !== false ? breakable?.maxDurability : undefined;
const maxDurability =
breakable?.enabled !== false ? breakable?.maxDurability : undefined;
for (let i = 0; i < canAdd; i++) {
if (maxDurability && maxDurability > 0) {
state.instances.push({ durability: maxDurability });

View File

@@ -222,7 +222,14 @@ async function reduceToolDurability(
// Consideramos "rota" sólo si después de consumir ya no queda ninguna unidad
broken = (updated.quantity ?? 0) <= 0;
}
return { broken, brokenInstance: broken, delta, remaining: undefined, max: maxConfigured, instancesRemaining: broken ? 0 : (entry.quantity ?? 1) - 1 } as const;
return {
broken,
brokenInstance: broken,
delta,
remaining: undefined,
max: maxConfigured,
instancesRemaining: broken ? 0 : (entry.quantity ?? 1) - 1,
} as const;
}
const state = parseInvState(entry.state);
state.instances ??= [{}];
@@ -259,7 +266,14 @@ async function reduceToolDurability(
`[tool-break] user=${userId} guild=${guildId} toolKey=${toolKey}`
);
}
return { broken, brokenInstance, delta, remaining: broken ? 0 : next, max, instancesRemaining } as const;
return {
broken,
brokenInstance,
delta,
remaining: broken ? 0 : next,
max,
instancesRemaining,
} as const;
}
export { reduceToolDurability };