Files
builazoo/web/js/config.js
Nicolas Cantu e031c9a1d2 Initial commit
**Motivations:**
- Initialisation du versionning git pour le projet

**Root causes:**
- N/A (Nouveau projet)

**Correctifs:**
- N/A

**Evolutions:**
- Structure initiale du projet
- Ajout du .gitignore

**Pages affectées:**
- Tous les fichiers
2026-03-03 22:24:17 +01:00

237 lines
7.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/** @type {{ DataStoreName: string, StateVersion: number, IncomeTickMs: number, SaveIntervalMs: number, Plot: object, Conveyor: object, Mutation: object, Events: object, Visitor: object, Time: object, Weather: object, Quests: object, Prestige: object }} */
export const GameConfig = {
DataStoreName: "BuildAZooWeb_v1",
StateVersion: 2,
/** Game loop interval (ms). Minimum 5000 to limit DB/API load. */
IncomeTickMs: 5000,
/** Save to localStorage/API at most every this many ms. */
SaveIntervalMs: 5000,
Plot: {
BaseWidth: 6,
BaseHeight: 6,
MaxLevel: 8,
ExpandByLevel: 2,
BaseUpgradeCost: 300,
UpgradeGrowth: 1.7,
},
Conveyor: {
MaxLevel: 8,
BaseUpgradeCost: 250,
UpgradeGrowth: 1.65,
OfferCount: 3,
/** Min seconds between conveyor offer refresh. >= 5 to limit load. */
RefreshSeconds: 8,
},
WorldMap: {
Zoos: [
{ id: "player", name: "Mon zoo", x: 25, y: 50, animalWeights: { Basic: 1, Ocean: 0, Mountain: 0 } },
{ id: "zoo_nord", name: "Zoo du Nord", x: 75, y: 15, animalWeights: { Basic: 2, Ocean: 1, Mountain: 1 } },
{ id: "zoo_est", name: "Zoo de l'Est", x: 85, y: 55, animalWeights: { Basic: 1, Ocean: 2, Mountain: 0 } },
{ id: "zoo_sud", name: "Zoo du Sud", x: 50, y: 85, animalWeights: { Basic: 1, Ocean: 1, Mountain: 2 } },
{ id: "zoo_ouest", name: "Zoo de l'Ouest", x: 15, y: 25, animalWeights: { Basic: 2, Ocean: 0, Mountain: 1 } },
],
Cities: [
{ id: "ville_nord", name: "Ville du Nord", x: 80, y: 10, maxVisitorsTowardZoos: 80 },
{ id: "ville_sud", name: "Ville du Sud", x: 45, y: 90, maxVisitorsTowardZoos: 80 },
{ id: "ville_centre", name: "Ville centrale", x: 50, y: 50, maxVisitorsTowardZoos: 100 },
],
Laboratory: { x: 50, y: 20, name: "Laboratoire" },
TruckAnimationMs: 2500,
NpcTruckIntervalMs: 8000,
MapUpgrade: {
MaxLevel: 5,
BaseUpgradeCost: 350,
UpgradeGrowth: 1.5,
/** Cost in research points per level (agrandissement carte). */
BaseResearchCost: 15,
ResearchUpgradeGrowth: 1.6,
},
},
Bots: {
/** Max distance (in map %) to consider a zoo as neighbor for color weights. */
NeighborMaxDistance: 35,
/** Min seconds between two decision ticks per bot. */
TickIntervalMinSeconds: 8,
TickIntervalMaxSeconds: 25,
/** Initial coins range for new bots. */
InitialCoinsMin: 150,
InitialCoinsMax: 450,
},
Truck: {
MaxLevel: 7,
BaseUpgradeCost: 400,
UpgradeGrowth: 1.5,
},
School: {
MaxLevel: 8,
BaseUpgradeCost: 250,
UpgradeGrowth: 1.65,
},
/** Centre de recherche (Rappel grandes règles): 7 niveaux, unités de recherche pour agrandir la carte, 10 zoos/unité. */
Research: {
MaxLevel: 7,
ZoosPerUnit: 10,
BuildCost: 300,
BaseUpgradeCost: 320,
UpgradeGrowth: 1.6,
PointsPerTickPerLevel: 0.1,
},
/** Billeterie: 7 niveaux, 20 visiteurs/unité en simultané. */
Billeterie: {
MaxLevel: 7,
VisitorsPerUnit: 20,
BuildCost: 280,
BaseUpgradeCost: 280,
UpgradeGrowth: 1.55,
},
/** Nourriture: 7 niveaux, 5 animaux/unité. */
Food: {
MaxLevel: 7,
AnimalsPerUnit: 5,
BuildCost: 260,
BaseUpgradeCost: 260,
UpgradeGrowth: 1.5,
/** Seconds without being fed before the animal dies. */
MaxSecondsWithoutFood: 120,
},
/** Accueil nouveaux animaux: 7 niveaux, 1 animal/unité. */
Reception: {
MaxLevel: 7,
AnimalsPerUnit: 1,
BuildCost: 240,
BaseUpgradeCost: 240,
UpgradeGrowth: 1.55,
AcclimatationSecondsBase: 45,
/** Seconds a ready animal can wait without being placed before dying. */
MaxSecondsReadyNotPlaced: 90,
},
/** Changement de milieu (couleur): 7 niveaux, payant. */
BiomeChangeColor: {
MaxLevel: 7,
BuildCost: 340,
BaseUpgradeCost: 350,
UpgradeGrowth: 1.6,
},
/** Changement de milieu (température): 7 niveaux, payant. */
BiomeChangeTemp: {
MaxLevel: 7,
BuildCost: 340,
BaseUpgradeCost: 350,
UpgradeGrowth: 1.6,
},
Mutation: {
BaseChance: 0.06,
},
Events: [],
Visitor: {
BasePaymentPerVisitor: 0.15,
VisitorsPerAnimal: 1.2,
PlotLevelBonus: 0.1,
StagnationDecayAfterSeconds: 60,
StagnationDecayPerMinute: 0.05,
CityAttractionScale: 0.002,
AnimalValueScale: 0.00015,
/** Seconds without any visitor on the cell before the animal disappears. */
MaxSecondsWithoutVisit: 300,
/** Multiplier bonus per souvenir shop level applied to payment per visitor (e.g. 0.2 = +20% per shop). */
SouvenirShopBonusPerShop: 0.2,
/** Chance per visitor to be a luxury guest (01). */
LuxuryGuestChance: 0.08,
/** Entry payment multiplier for luxury guests. */
LuxuryEntryMultiplier: 3,
/** Extra shop spending multiplier for luxury guests (applied on top of normal shop bonus). */
LuxuryShopMultiplier: 2.5,
/** Attractivity: penalty per recent death (subtracted from score). */
AttractivityDeathPenalty: 0.5,
/** Attractivity: bonus per birth (added to score). */
AttractivityBirthBonus: 0.2,
/** Extra stay time per souvenir shop level (e.g. 0.15 = +15% per level). Uses Time.DayLengthSeconds for base 1 day. */
StayMultiplierPerShopLevel: 0.15,
/** Extra stay time per distinct animal species (e.g. 0.02 = +2% per species). */
StayMultiplierPerSpecies: 0.02,
/** Incident (soif, poubelle, banc, animal loin, photo): base chance per visitor per tick when not in wait phase. */
IncidentChanceBase: 0.002,
/** Multiplier to incident chance when in wait phase (truck, sale pending, etc.). */
IncidentChanceWaitMultiplier: 4,
/** Seconds before unresolved incident: visitor leaves and attractivity penalty applied. */
IncidentTimeoutSeconds: 45,
/** Attractivity bonus when player resolves an incident. */
IncidentResolveAttractivityBonus: 0.15,
/** Coin bonus when player resolves an incident. */
IncidentResolveCoinBonus: 8,
/** Attractivity penalty when incident times out unresolved. */
IncidentUnresolvedAttractivityPenalty: 0.2,
},
Nursery: {
BuildCost: 200,
MaxLevel: 7,
BaseUpgradeCost: 180,
UpgradeGrowth: 1.5,
/** Seconds for a baby to become mature (divided by nursery level). */
GrowthSecondsBase: 40,
/** Seconds a mature baby can wait without being placed before dying. */
MaxSecondsMatureNotPlaced: 90,
},
/** Reproduction: delay between pair detection and baby birth; reduced by zoo score and biome/temp fit. */
Reproduction: {
/** Base seconds until baby is born for an eligible pair. */
BaseSeconds: 60,
/** Max Manhattan distance between blocks to count as adjacent (1 = edge-adjacent only). */
MaxDistance: 1,
},
SouvenirShop: {
BuildCost: 250,
MaxLevel: 7,
BaseUpgradeCost: 220,
UpgradeGrowth: 1.55,
},
Time: {
DayLengthSeconds: 120,
PhaseShift: 0,
},
Weather: {
ChangeIntervalSeconds: 45,
RainChance: 0.25,
CloudyChance: 0.35,
},
Quests: {
CountPerDay: 3,
RewardBase: 50,
RewardPerLevel: 20,
},
Prestige: {
IncomeBonusPerLevel: 0.15,
MinCoinsToReset: 5000,
},
/** Phase 10: sale listings (baby/animal on truck → world map). Bébé invendu meurt après ce délai. */
Sale: {
/** Seconds until a listing expires if not sold. After expiry, baby dies (deathCountRecent). */
ListingDurationSeconds: 3600,
/** Default asking price for a baby or animal put on sale. */
DefaultPrice: 50,
},
};