From d58e623c14b27f7a32a8c846459de92da9d6345c Mon Sep 17 00:00:00 2001 From: root Date: Sun, 8 Mar 2026 21:18:03 +0000 Subject: [PATCH] tweak: reduce stat drift rates and increase social cooldowns - Halve sociability/empathy drift on positive outcome (0.05 -> 0.025) - Halve temperament drift on negative outcome (0.02 -> 0.01) - Increase social global cooldown (50 -> 75 ticks) - Increase social pair cooldown (300 -> 450 ticks) - Increase base proposal cooldown (500 -> 750) Co-Authored-By: Claude Opus 4.6 --- server/src/config/relationshipConfig.ts | 2 +- server/src/systems/socialSystem.ts | 12 ++++++------ shared/src/constants.ts | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/server/src/config/relationshipConfig.ts b/server/src/config/relationshipConfig.ts index 4ffef32..9323dfa 100644 --- a/server/src/config/relationshipConfig.ts +++ b/server/src/config/relationshipConfig.ts @@ -48,7 +48,7 @@ export const relationshipConfig = { proposalAcceptanceBonus: 5, proposalRejectionMultiplier: 2.0, proposalRejectionRejecterMultiplier: 0.5, - baseProposalCooldown: 500, + baseProposalCooldown: 750, courageCooldownWeight: 0.04, proposalAcceptanceSociabilityMod: 2, proposalAcceptanceEmpathyMod: 1, diff --git a/server/src/systems/socialSystem.ts b/server/src/systems/socialSystem.ts index 747d064..97bac5a 100644 --- a/server/src/systems/socialSystem.ts +++ b/server/src/systems/socialSystem.ts @@ -126,19 +126,19 @@ export function socialSystem(world: World): void { const statsA = world.getComponent(e, 'stats'); if (statsA) { if (social.outcome === 'positive') { - statsA.sociability = Math.max(3, Math.min(18, statsA.sociability + 0.05)); - statsA.empathy = Math.max(3, Math.min(18, statsA.empathy + 0.05)); + statsA.sociability = Math.max(3, Math.min(18, statsA.sociability + 0.025)); + statsA.empathy = Math.max(3, Math.min(18, statsA.empathy + 0.025)); } else { - statsA.temperament = Math.max(3, Math.min(18, statsA.temperament + 0.02)); + statsA.temperament = Math.max(3, Math.min(18, statsA.temperament + 0.01)); } } const statsB = world.getComponent(partnerId!, 'stats'); if (statsB) { if (partnerSocial.outcome === 'positive') { - statsB.sociability = Math.max(3, Math.min(18, statsB.sociability + 0.05)); - statsB.empathy = Math.max(3, Math.min(18, statsB.empathy + 0.05)); + statsB.sociability = Math.max(3, Math.min(18, statsB.sociability + 0.025)); + statsB.empathy = Math.max(3, Math.min(18, statsB.empathy + 0.025)); } else { - statsB.temperament = Math.max(3, Math.min(18, statsB.temperament + 0.02)); + statsB.temperament = Math.max(3, Math.min(18, statsB.temperament + 0.01)); } } diff --git a/shared/src/constants.ts b/shared/src/constants.ts index 45a7dd4..ed9edc8 100644 --- a/shared/src/constants.ts +++ b/shared/src/constants.ts @@ -65,8 +65,8 @@ export const AWARENESS_RADIUS = 5; // Manhattan distance in tiles export const FACING_DURATION = 10; // ticks (1s) export const PAUSING_DURATION = 15; // ticks (1.5s) export const EMOTING_DURATION = 20; // ticks (2s) -export const SOCIAL_GLOBAL_COOLDOWN = 50; // ticks (5s) -export const SOCIAL_PAIR_COOLDOWN = 300; // ticks (30s) +export const SOCIAL_GLOBAL_COOLDOWN = 75; // ticks (7.5s) +export const SOCIAL_PAIR_COOLDOWN = 450; // ticks (45s) export const PROPOSAL_EMOTING_DURATION = 30; // 3 seconds - longer for dramatic effect