**Motivations:** - Ensure lint config is not degraded and fix all lint errors for pousse workflow. **Root causes:** - Unused variables kept with _ prefix instead of removed (_row, _questReward, _i). - getAnimalBlockOrigin had 5 parameters (max 4). - use of continue statement (no-continue rule). **Correctifs:** - ESLint config verified; no eslint-disable in codebase. - Removed unused variable _row (biome-rules); removed dead function _questReward (quests); removed unused map param _i (state.js). - getAnimalBlockOrigin refactored to 4 params (pos object instead of x, y). - Replaced continue with if (cell) block in normalizeLoadedCells (state.js). - JSDoc param names aligned with _height, _y (biome-rules). **Evolutions:** - (none) **Pages affectées:** - web/js/biome-rules.js - web/js/quests.js - web/js/state.js - web/js/placement.js
238 lines
6.6 KiB
JavaScript
238 lines
6.6 KiB
JavaScript
/** @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,
|
|
/** Opening hour (0-24). No new visitors outside [OpenHour, CloseHour). */
|
|
OpenHour: 8,
|
|
CloseHour: 20,
|
|
/** Max new visitors per real second at entry (spec: 1 visiteur/s). */
|
|
MaxEntryPerSecond: 1,
|
|
},
|
|
|
|
/** 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,
|
|
},
|
|
|
|
/** Death cause "seuls": animal dies if no same species in radius for too long. */
|
|
Animal: {
|
|
MinSameSpeciesInRadius: 1,
|
|
RadiusCells: 5,
|
|
MaxSecondsAlone: 300,
|
|
},
|
|
|
|
Events: [],
|
|
|
|
Visitor: {
|
|
BasePaymentPerVisitor: 0.15,
|
|
VisitorsPerAnimal: 1.2,
|
|
PlotLevelBonus: 0.1,
|
|
StagnationDecayAfterSeconds: 60,
|
|
StagnationDecayPerMinute: 0.05,
|
|
CityAttractionScale: 0.002,
|
|
AnimalValueScale: 0.00015,
|
|
MaxSecondsWithoutVisit: 300,
|
|
SouvenirShopBonusPerShop: 0.2,
|
|
LuxuryGuestChance: 0.08,
|
|
LuxuryEntryMultiplier: 3,
|
|
LuxuryShopMultiplier: 2.5,
|
|
AttractivityDeathPenalty: 0.5,
|
|
AttractivityBirthBonus: 0.2,
|
|
StayMultiplierPerShopLevel: 0.15,
|
|
StayMultiplierPerSpecies: 0.02,
|
|
IncidentChanceBase: 0.002,
|
|
IncidentChanceWaitMultiplier: 4,
|
|
IncidentTimeoutSeconds: 45,
|
|
IncidentResolveAttractivityBonus: 0.15,
|
|
IncidentResolveCoinBonus: 8,
|
|
IncidentUnresolvedAttractivityPenalty: 0.2,
|
|
},
|
|
|
|
Nursery: {
|
|
BuildCost: 200,
|
|
MaxLevel: 7,
|
|
BaseUpgradeCost: 180,
|
|
UpgradeGrowth: 1.5,
|
|
GrowthSecondsBase: 40,
|
|
MaxSecondsMatureNotPlaced: 90,
|
|
},
|
|
|
|
/** Reproduction: delay between pair detection and baby birth; reduced by zoo score and biome/temp fit. */
|
|
Reproduction: {
|
|
BaseSeconds: 60,
|
|
MaxDistance: 1,
|
|
},
|
|
|
|
SouvenirShop: {
|
|
BuildCost: 250,
|
|
MaxLevel: 7,
|
|
BaseUpgradeCost: 220,
|
|
UpgradeGrowth: 1.55,
|
|
},
|
|
|
|
Time: {
|
|
DayLengthSeconds: 120,
|
|
PhaseShift: 0,
|
|
},
|
|
|
|
/** 4 seasons: spring, summer, autumn, winter. Each season lasts DaysPerSeason game days. */
|
|
Season: {
|
|
DaysPerSeason: 7,
|
|
TemperatureModifier: { spring: 0, summer: 10, autumn: -2, winter: -15 },
|
|
VisitorMultiplier: { spring: 1, summer: 1.5, autumn: 0.8, winter: 0.6 },
|
|
ReproductionBonus: { spring: 0.2, summer: 0, autumn: 0, winter: -0.5 },
|
|
/** Billeterie: summer +20% ticket price, winter -10%. */
|
|
TicketPriceMultiplier: { spring: 1, summer: 1.2, autumn: 1, winter: 0.9 },
|
|
},
|
|
|
|
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: {
|
|
ListingDurationSeconds: 3600,
|
|
DefaultPrice: 50,
|
|
},
|
|
};
|