Commit Graph

11 Commits

Author SHA1 Message Date
Corback dd985c868c feat: zones sûres + commerce PNJ-à-PNJ + raids factions
encounter_tables.json:
  safe_zones: [independance, nola_vieux_carre, baton_rouge, laplace]
  Zone safe: zone_type=safe, tier_weights sans lambda/group (actif+boss seulement)
  raid_chance: probabilité séparée par zone (0.4-0.8%) indépendante du roll normal
  entity_pools.raid_faction: commando éclaireur + milice faction hostile
  urban_trade_roles: rôles autorisés à faire du commerce en ville
  orientation_reactions: ajout réaction 'trade' pour marchands/doc/tech/passeur/scavenger
  outcomes.trade: success (+caps, stress-1) / failed (aucun effet)

encounter.py:
  _is_safe_zone(): vérifie si zone est dans safe_zones
  should_trigger_raid(): roll séparé par zone pour déclencher un raid
  generate_entity_trade(): cherche un PNJ compatible dans la même zone pour échange
  generate_entity_raid(): génère un commando de faction ennemie avec contexte faction
  _trade_roll(): jet CHA+LCK pour conclure une vente, caps_gain 10-60
  resolve_encounter(): branche 'trade' → caps gagnés si succès
  process_encounters_tick():
    - Roll de raid une fois par zone sûre (pas par PNJ)
    - PNJ en zone raidée → encounter_raid, skip encounter normal ce tick
    - Zone safe + rôle commerçant → priorité generate_entity_trade sur actif
    - Fallback boss en zone safe → None (pas de lambda)

Logique résultante:
  Pearl River (dangerous): alligators, goules, raiders → inchangé
  Independance (safe): un marchand croise un autre PNJ → vente possible
  Raid rare sur independance: commando Union/Ecumeurs → combat ou fuite
  Bêtes en ville: impossible
2026-06-16 08:10:05 +00:00
Corback 1bf0f921b6 feat: dashboard VAULTCOM v4 — onglets session + paramètres
Onglet SIMULATION:
  - Switcher de session en haut (S1 / S2 / ...) avec indicateur status vert/rouge
  - Countdown JS 30s avant auto-refresh (au lieu de meta http-equiv)
  - Filtre cycle_tick des événements (trop verbeux)

Onglet PARAMÈTRES (/params?sid=N):
  - Formulaire config: nom session, mode, tick_sleep, drain_speed, fatigue_hp,
    encounter_rate, caps_multiplier, survie/rencontres activées
  - POST /params/save → écrit sim_001.json / sim_002.json + UPDATE sessions SET mode
  - POST /params/setstatus → active/pause/stop via DB (run.py sort au prochain tick)
  - POST /params/resetday → remet current_day/current_tick en DB
  - Tableau des modes avec drain/encounter/caps pour comparaison rapide
  - Snippet de commande SSH pour relancer chaque session depuis terminal

Docker: monté /home/ubuntu/fallout-venice/src/config en rw dans le container
  → /params/save peut écrire les JSON directement
2026-06-16 00:29:15 +00:00
Corback 62b0e25d1b fix: combat_engine weapon=None crash + init_pnj SESSION_ID depuis env
combat_engine.py: weapon_props = weapon.get('properties') or {} if weapon else {}
  La ligne n'avait pas le guard 'if weapon else' contrairement aux deux lignes précédentes,
  crash AttributeError quand un PNJ attaque sans arme équipée.

init_pnj.py: SESSION_ID = int(os.getenv('SESSION_ID', 1))
  Était hardcodé à 1, empêchait l'init des PNJ de la session 2.
2026-06-16 00:23:24 +00:00
Corback 8b32ea370a feat: système de config externe + multi-instance + modes simulation
sim_config.py (NOUVEAU):
  - Chargeur config JSON avec deep-merge des modes (sim_001/002.json)
  - sim_config.get('survival'), get('encounter'), get('world') depuis n'importe quel module
  - SIM_CONFIG env var ou --config CLI arg

run.py:
  - --config/-c arg, SIM_CONFIG env var, SESSION_ID env var
  - _init_world_state() initialise pop_count depuis config au démarrage
  - Mode actif depuis sim_config (prime sur la DB)

survival.py:
  - drain_speed: multiplicateur sur HUNGER/THIRST/SLEEP_TICKS (2.0=2x plus vite)
  - fatigue_hp_per_2pts: dégâts fatigue depuis config
  - survival.enabled: peut désactiver la survie entièrement

tick.py / encounter.py:
  - world params (water/food drain, security delta, pop counts) depuis sim_config
  - encounter.global_rate_multiplier appliqué sur chance_per_tick
  - encounter.enabled: peut désactiver les rencontres

character_creator.py — Caps réalistes (divise par ~4-5):
  pillard 0-60, garde 15-100, marchand 60-400, eclaireur 10-80
  docteur 40-200, technicien 20-150, lieutenant 60-300
  raider_boss 30-200, chasseur_primes 80-350, passeur 30-180
  scavenger 5-70, chef_faction 300-1500, survivant_generique 5-60

sim_001.json: mode=pacifiste (rencontres x0.4, drain x0.7, sécurité stable)
sim_002.json: mode=guerre_commerciale (rencontres x1.2, drain x1.5, caps x1.5)
Modes disponibles: pacifiste, politique, guerre_commerciale, guerre, survie_extreme

init_pnj.py: SESSION_ID depuis os.getenv (était hardcodé à 1)

Multi-instance: SESSION_ID=1 sim_001.json + SESSION_ID=2 sim_002.json en parallèle
2026-06-16 00:16:17 +00:00
Corback 5497f3b5d0 fix: archetypes origin_pool + faction_origin_override + lore corrections
- archetypes.json: origin -> origin_pool (liste), faction_origin_override (CDA->initie_confrerie, grand_krewe->goule)
- passeur_bayou: faction ecumeurs -> grand_krewe (lore: les bayous sont leur territoire)
- messager_faction: location_hints liste réelle (plus 'toutes zones sûres' non parsable)
- fugitif: chased_by_faction_pool ajouté pour narration LLM
- pillard_errant, scavenger, chasseur_primes, passeur: goule ajouté à origin_pool
- pnj_factory.spawn_from_archetype: résolution origin depuis faction_origin_override puis origin_pool
- character_creator._ROLE_TO_ORIGIN: lieutenant/chef_faction/chasseur_primes enrichis avec goule
2026-06-15 23:58:32 +00:00
Corback 96d2df92b2 feat: dashboard VAULTCOM v3 + config.py TICK_SLEEP_SEC + sim_config
- dashboard/app.py: Nouveau dashboard Flask (schéma DB migration_003)
  Affiche PNJ par tier (0/1/2/3), events, rencontres, world_state,
  faction_relations, inventaire boss. Auto-refresh 30s.
  Connecté via tunnel SSH interne vers Vigile:5432
- src/engine/config.py: Fix TICK_SLEEP_SEC depuis env (était hardcodé 0)
- src/config/sim_001.json: Paramètres simulation centralisés
  (tick_speed, difficulty presets, LLM config, multi-session)

Accessible: fallout.coyoteos.ovh
2026-06-15 23:54:40 +00:00
Corback 45f7abc402 feat: combat_engine + generate_pnj_batch + actions/encounter updated 2026-06-15 23:30:51 +00:00
Corback 0a46655e36 feat: encounters 4 tiers + fix actions roles 2026-06-15 23:17:51 +00:00
Corback 873106d5cb feat: systeme tiers PNJ 0-3 + equipment by role + archetype factory
migration_003: tier/archetype_key, boss exclus sim, equipement distinctif
equipment_by_role.json: loadouts par role (armes/armure/consommables)
archetypes.json: 11 archetypes tier3 + lieutenant tier2
pnj_factory.py: spawn_from_archetype, equip_character, spawn_batch
character_creator.py: nouveaux roles + tier + archetype_key dans INSERT
init_pnj.py: 10 PNJ tier1 + 8 lieutenants tier2 par faction
db.py: get_characters(min_tier=1) exclut boss, get_all_characters pour seeds
tick.py: seeds tous tiers, survival/actions tier>=1 seulement

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 23:04:34 +00:00
Corback c422d62f10 Fix forage/find_water : loot réel selon food/water_level de la zone 2026-06-15 22:48:26 +00:00
Corback 3039961b51 Initial commit — Venice of Wasteland sim engine B1-B5 2026-06-15 22:38:35 +00:00