# MOBA lanes (moba.lanes) ## What it is for Runs a lane match with minion waves, towers, inhibitors, a nexus, jungle camps, bots, gold, farming, levels, respawns and a fountain, on a full five-versus-five map or shorter arenas. It needs `combat.attacks`, `combat.health`, `combat.damage`, `minion.waves`, `game.engine`; installing it brings them in. ## Turn it on Install the kit in a project, then change a setting (the values shown are its defaults): ```text gripforge_gamekit_install { project_id: "gkp_…", id: "moba.lanes" } gripforge_gamekit_configure { project_id: "gkp_…", id: "moba.lanes", config: { "map": "lane_arena", "teamSize": 3 } } ``` ## First example The kit has no dedicated test yet; this installs it and sets two of its settings to their defaults. ```text gripforge_gamekit_install { project_id: "gkp_…", id: "moba.lanes" } gripforge_gamekit_configure { project_id: "gkp_…", id: "moba.lanes", config: { "map": "lane_arena", "teamSize": 3 } } ``` ## Settings and defaults Descriptions come from the kit manifest and stay in English. | Setting | Type | Default | Range or values | Meaning | |---|---|---|---|---| | `map` | string | `"lane_arena"` | | moba_maps id: rift_valley (full 5v5), lane_arena (1 lane, 3v3), three_lanes (5v5) or a project map. | | `teamSize` | integer | `3` | 1–5 | Heroes per team (the player takes one). | | `botRetreatHealth` | number | `0.3` | 0.05–0.8 | | | `botReturnHealth` | number | `0.9` | 0.3–1 | | | `monsterLeash` | number | `10` | 3–40 | | | `unitSeparation` | number | `1.35` | 0–4 | Local separation in metres; respects navigation walls. | | `bots` | boolean | `true` | | Fill both teams with bot heroes. | | `playerTeam` | string | `"blue"` | `blue`, `red` | | | `heroHealth` | number | `620` | 50–10000 | | | `heroDamage` | number | `32` | 1–1000 | | | `heroRange` | number | `2.2` | 1–12 | Basic attack reach of bot heroes (m). | | `heroSpeed` | number | `5` | 1–12 | | | `respawnBase` | number | `6` | 0–60 | Respawn seconds at level 1 (+2 per level). | | `heroScale` | number | `1.7` | 0.3–5 | Hero size, a factor over the 1.8 m standard character (top-down MOBAs read best around 1.5-2). | | `monsterScale` | number | `1.5` | 0.3–6 | Jungle monster size (epic x1.6). | | `firstWave` | number | — | 0–600 | Deprecated: set firstWave on minion.waves. | | `waveInterval` | number | — | 1–600 | Deprecated: set interval on minion.waves. | | `siegeEvery` | number | — | 0–50 | Deprecated: set composition on minion.waves. | | `waveGrowth` | number | — | 0–2 | Deprecated: set scaling on minion.waves. | | `minionScale` | number | — | 0.2–6 | Deprecated: set scale on minion.waves. | | `minionSpacing` | number | — | 0.5–6 | Deprecated: set spacing on minion.waves. | | `teamRings` | boolean | `false` | | A team-coloured ring on the ground under every unit (off: health bar colours tell the teams apart). | | `goldPerSecond` | number | `2` | 0–100 | Passive gold of every hero per second, from the first wave. | | `startingGold` | integer | `500` | 0–10000 | Gold available for a starter item at the fountain. | | `pathfinding` | string | `"grid"` | `grid`, `navigation` | world.navigation path and next: grid, the walk grid A* (as 1.8.0); navigation asks the ai.navigation service (when mounted) for a… | ## Services, events, variables - Service `lanes.routes`: The lanes as routes and the two teams, for the minion kit. - Service `world.navigation`: walkable, project and clear on the map's walk grid; path and next (the next corner to head for) by the walk grid A*, or routed by ai.navigation when it is mounted and config pathfinding is navigation. - Service `world.waterways`: The divider as a water body (a river, or lava) for the Water kit. - Service `world.thickets`: The stealth bushes as thickets, for the Grass kit (tall grass grows there). - Service `world.occluders`: The jungle walls as sight blockers, for the Vision kit. - Service `world.clearings`: Bases, buildings and camps a scenery kit keeps clear. - Service `combat.targeting`: canTarget (protected structures, neutral camps), radius, category. - Service `moba.match`: map, teams, heroes (level, gold, dead), structures (alive, vulnerable), wave, winner, spendGold, marks() → { rings, bars } (the health bar over every living unit the player sees, a team ring under it with teamRings: what every renderer marks). - Service `world.ground`: The shared arena height, its bounds and the player spawn at their fountain. - Events emitted: - `moba.wave` (`wave`, `lanes`) — A minion wave left (minion.wave repeated with the number of lanes of the map). - `moba.attack` (`source`, `target`, `ranged`, `synchronized`, `kind`) — Every basic attack of a minion, tower, monster or bot (animation, projectile, sound). - `moba.structure.destroyed` (`structure`, `kind`, `team`, `lane`) - `moba.hero.killed` (`hero`, `by`, `team`) - `moba.levelup` (`hero`, `level`) - `moba.item.bought` (`hero`, `item`, `cost`) - `moba.last_hit` (`hero`, `gold`, `player`) — The player took the last hit on a minion that paid gold. - `moba.victory` (`team`, `player`) - Events listened to: `combat.killed`, `combat.damaged`, `minion.wave`, `minion.killed` - Variables: - `moba.gold` (number) — Gold - `moba.cs` (number) — Minion last hits - `moba.items` (string) — Items (ids, comma separated) - `moba.level` (number) — Level - `moba.xp` (number) — Experience - `moba.xp.next` (number) — Experience to next level - `moba.respawn` (number) — Respawn in - `moba.time` (number) — Match time - `moba.wave` (number) — Wave - `moba.score.blue` (number) — Blue kills - `moba.score.red` (number) — Red kills - `moba.towers.blue` (number) — Blue towers - `moba.towers.red` (number) — Red towers - `moba.winner` (string) — Winner ## Hooks and modding - Hooks (a game or a mod can intercept them): - `moba.match.end` (fields a tap may change: `team`; cancellable) — A nexus fell (structure is its map id, by the killer entity or an empty string) and the match is about to end with team as the winner. - `moba.reinforce` (fields a tap may change: `count`; cancellable) — An inhibitor fell (structure) and the attackers (team) are about to get count super minions at the head of every wave of that lane (minion.waves.setReinforcements). - `moba.reward` (fields a tap may change: `gold`, `xp`; cancellable) — A hero killed a unit of the match (kind: tower, inhibitor, nexus, small, epic or hero; minions are paid by minion.waves) and is about to receive gold, and xp shared with the allied heroes nearby. - `moba.hero.respawn` (fields a tap may change: `delay`) — A hero died (by is the killer entity or an empty string) and is about to wait delay seconds before coming back at the fountain (respawnBase + 2 per level). - `moba.item.buy` (fields a tap may change: `cost`; cancellable) — A hero (bot or player) is about to buy item for cost, with gold in hand: asked once the hero, the item, the fountain and the free slot are checked, before the gold check (a lowered cost may become… - Moddable settings: `map`, `teamSize`, `bots`, `playerTeam`, `botRetreatHealth`, `botReturnHealth`, `monsterLeash`, `unitSeparation`, `heroHealth`, `heroDamage`, `heroRange`, `heroSpeed`, `respawnBase`, `heroScale`, `monsterScale`, `teamRings`, `goldPerSecond`, `startingGold`, `pathfinding` - Moddable collections: `moba_maps`, `moba_items` ## Engines Declared targets: `web`, `rust`. `gripforge kit api moba.lanes` lists the exact settings and services of your version. ## Versions Kit version 1.10.0.