1.4.0 • Published 1 month ago

@slk333/lib-ogame v1.4.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 month ago

Various functions and types related to the original Ogame browser game.

costs

mines and facilities

getStructureUpgradeCost("crystalMine", 9)
/* { metalAmount: 2061, crystalAmount: 1030, deuteriumAmount: 0 } */

ships and defenses

getShipCost("lightFighter")
/* { metalAmount: 3000, crystalAmount: 1000, deuteriumAmount: 0 } */

getDefenseCost("rocketLauncher")
/* { metalAmount: 2000, crystalAmount: 0, deuteriumAmount: 0 } */

construction time

mines and facilities

getStructureConstructionTime({
    structureName: "researchLab",
    level: 5,
    roboticsFactory: 3,
    naniteFactory: 0,
})
/* 2304 seconds*/

ships and defenses

getShipConstructionTime({
    shipName: "lightFighter",
    shipyard: 5,
    naniteFactory: 1,
})
/* 480 seconds*/

getDefenseConstructionTime({
    defenseName: "rocketLauncher",
    shipyard: 5,
    naniteFactory: 1,
})
/* 240 seconds*/

// DEPRECATED: Use getShipConstructionTime or getDefenseConstructionTime instead
getShipyardUnitConstructionTime(
    { name: "lightFighter", type: "ship" },
    5, // shipyardLevel
    1 // naniteLevel
)
/* 480 seconds*/

production

getMetalMineProduction_s(25)
/* 2.25694444 metal per second */

getCrystalMineProduction_s(25)
/* 1.50472222 crystal per second */

getDeuteriumProduction_s(25)
/* 1.08333333 deuterium per second */
/* fixed temperature: 0°C */

derive data from planet

resources at date

computeResourcesForPlanetAtDate(planet, date)
/* { metalAmount: 51908, crystalAmount: 25767, deuteriumAmount: 10372 } 
/* expects a Date */

production

computeProductionForPlanet(planet)
/* { metalProduction_s: 0.5302, crystalProduction_s: 0.2133, deuteriumProduction_s: 0.1036 } */

costs and durations

computeStructureUpgradeCostForPlanet(planet, "metalMine")
/* { metalAmount: 26273, crystalAmount: 6568, deuteriumAmount: 0 } */

computeStructureUpgradeTimeForPlanet(planet, "metalMine")
/* 1970 seconds */

planet shape

export interface Planet {
    id: string
    name: string
    owner: {
        id: string
        name: string
    }
    coordinates: Coordinates
    structures: Record<StructureName, PlanetStructure>
    ships: Record<ShipName, { name: ShipName; count: number }>
    resources: ResourcesRecord
    snapshotDate: string
    pendingStructure: {
        name: StructureName
        completionDate: string
    } | null
    pendingShipyardUnit: {
        shipyardUnit: ShipyardUnit
        completionDate: string
    } | null
    structureQueue: StructureName[]
    shipyardQueue: ScheduledShipyardOrder[]
}
const samplePlanet: Planet = {
    id: "planetAlpha",
    name: "Alpha Centauri Bb",
    owner: {
        id: "player123",
        name: "GalacticOverlord",
    },
    coordinates: { galaxy: 1, system: 100, position: 7, type: "planet" },
    structures: {
        metalMine: { name: "metalMine", level: 15 },
        crystalMine: { name: "crystalMine", level: 12 },
        deuteriumSynthesizer: { name: "deuteriumSynthesizer", level: 10 },
        roboticsFactory: { name: "roboticsFactory", level: 5 },
        shipyard: { name: "shipyard", level: 6 },
        researchLab: { name: "researchLab", level: 7 },
        naniteFactory: { name: "naniteFactory", level: 2 },
    },
    ships: {
        lightFighter: { name: "lightFighter", count: 50 },
        heavyFighter: { name: "heavyFighter", count: 0 },
        cruiser: { name: "cruiser", count: 0 },
        /* ... */
    },
    resources: { metalAmount: 50000, crystalAmount: 25000, deuteriumAmount: 10000 },
    snapshotDate: new Date("2025-05-29T10:00:00.000Z").toISOString(),
    pendingStructure: null,
    pendingShipyardUnit: null,
    structureQueue: [],
    shipyardQueue: [],
}

misc

Format resources

formatResourceAmount(1234567)
/* "1.2M" */
1.2.0

2 months ago

1.0.1

2 months ago

1.0.0

2 months ago

1.4.0

1 month ago

0.5.0

8 months ago

0.7.0

4 months ago

0.4.20

8 months ago

1.1.0

2 months ago

0.4.21

8 months ago

1.3.0

2 months ago

0.4.19

8 months ago

0.4.17

8 months ago

0.4.18

8 months ago

0.4.15

8 months ago

0.4.16

8 months ago

0.6.3

8 months ago

0.8.0

2 months ago

0.6.2

8 months ago

0.6.5

8 months ago

0.6.4

8 months ago

0.6.1

8 months ago

0.6.0

8 months ago

0.4.9

10 months ago

0.4.8

10 months ago

0.4.10

10 months ago

0.4.13

10 months ago

0.4.14

10 months ago

0.4.11

10 months ago

0.4.12

10 months ago

0.3.0

11 months ago

0.2.1

11 months ago

0.2.0

11 months ago

0.4.5

11 months ago

0.4.4

11 months ago

0.4.7

11 months ago

0.4.6

11 months ago

0.4.1

11 months ago

0.2.3

11 months ago

0.4.0

11 months ago

0.3.1

11 months ago

0.2.2

11 months ago

0.4.3

11 months ago

0.4.2

11 months ago

0.1.4

2 years ago

0.1.3

2 years ago

0.1.6

2 years ago

0.1.5

2 years ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago