Commit Graph

5 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 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 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