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()}`; return `${base} (agotada)${durabilityBar()}`;
} }
if (result.tool.brokenInstance) { 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})` : ""; const multi =
return `${base}${multi} (-${result.tool.durabilityDelta ?? 0} dur.)${durabilityBar()}`; 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: "🗡️" } { fallbackIcon: "🗡️" }
); );
if (result.tool.broken) return `${base} (agotada)${durabilityBar()}`; if (result.tool.broken)
return `${base} (agotada)${durabilityBar()}`;
if (result.tool.brokenInstance) 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 ${
const multi = result.tool.instancesRemaining && result.tool.instancesRemaining > 1 ? ` (x${result.tool.instancesRemaining})` : ""; result.tool.instancesRemaining
return `${base}${multi} (-${result.tool.durabilityDelta ?? 0} dur.)${durabilityBar()}`; }) (-${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 = (() => { const combatSummary = (() => {

View File

@@ -128,11 +128,20 @@ export const command: CommandMessage = {
}, },
{ fallbackIcon: "🎣" } { fallbackIcon: "🎣" }
); );
if (result.tool.broken) return `${base} (agotada)${durabilityBar()}`; if (result.tool.broken)
return `${base} (agotada)${durabilityBar()}`;
if (result.tool.brokenInstance) 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 ${
const multi = result.tool.instancesRemaining && result.tool.instancesRemaining > 1 ? ` (x${result.tool.instancesRemaining})` : ""; result.tool.instancesRemaining
return `${base}${multi} (-${result.tool.durabilityDelta ?? 0} dur.)${durabilityBar()}`; }) (-${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 = (() => { const combatSummary = (() => {

View File

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

View File

@@ -164,7 +164,8 @@ export async function addItemByKey(
// Inicializar durabilidad si corresponde // Inicializar durabilidad si corresponde
const props = parseItemProps(item.props); const props = parseItemProps(item.props);
const breakable = props.breakable; 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++) { for (let i = 0; i < canAdd; i++) {
if (maxDurability && maxDurability > 0) { if (maxDurability && maxDurability > 0) {
state.instances.push({ durability: maxDurability }); 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 // Consideramos "rota" sólo si después de consumir ya no queda ninguna unidad
broken = (updated.quantity ?? 0) <= 0; 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); const state = parseInvState(entry.state);
state.instances ??= [{}]; state.instances ??= [{}];
@@ -259,7 +266,14 @@ async function reduceToolDurability(
`[tool-break] user=${userId} guild=${guildId} toolKey=${toolKey}` `[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 }; export { reduceToolDurability };