Warptorio2 2.0.0 + Planetorio 0.2.0, as one mod. Space Age must be disabled.
Mods introducing new content into the game.
Version: 2.5.2
Date: 12.05.2026
Bug fix: warp loaders with output filters now output matching items
instead of stalling.
- Root cause was a key-type mismatch in the warploader cache. The
distribution path at control_main_helpers_warploader.lua looks up
filtered outputs with the transport-line stack name string
(`storage.warploaders.outputf[stack.name]`). The filter-registration
path in control_main_helpers_caches.lua stored filtered output lanes
under the raw value returned by LuaEntity.get_filter(i). In Factorio
2.0 that value can be an item prototype object, not the item-name
string, so a loader filtered to iron-plate registered under the
prototype object while OutputWarpLoader searched for "iron-plate".
The lane existed, but the lookup could never find it.
- Fixed by normalizing loader filters to item names before indexing
storage.warploaders.outputf. The helper preserves the old string
return shape as well, so this stays compatible if the API or another
context already provides a plain item name.
Bug fix: researching an energy-tier upgrade such as warptorio-energy-5
while harvester portals existed no longer breaks both harvester entry
teleporters until the next planet.
- Root cause was another direct-rebuild vs clone-lifecycle split in
control_class_harvester.lua. Normal harvester deploy/recall clones
the harvestportal entity and the tpharvCache.clone handler relinks
cache.teleport_dest between the two endpoints. Energy upgrades do
not clone: ResearchEffects.upgrade_energy calls
HARV:CheckTeleporterPairs, which replaces the portal prototype in
place when the energy suffix changes. The harvester override did
not relink teleport_dest after that direct rebuild, leaving valid
portal entities that the on_player_changed_position teleporter
probe could see but could not use.
- The same replacement path also destroyed old harvestportals with
raise_destroy=true. For generic warp teleporters that only removes
cache entries, but harvester portal destruction is special:
tpharvCache.destroy treats a raised destroy as a player/mining
action and calls HARV:Recall(). So researching the energy upgrade
could make the mod interpret its own prototype replacement as a
harvester recall, leaving the newly placed pair in stale state
until a later warp/planet rebuild refreshed it.
- Fixed by suppressing raised destroy events for HARV's internal
prototype replacements and by giving HARV:CheckTeleporterPairs the
same teleport_dest relink/clear step that normal TeleporterMeta
already had.
Bug fix: starting or completing a warp while in map mode no longer
evaluates the map camera/control position as if it were the player's
body position.
- Root cause was the main-floor player collection in
control_platform_classic.lua:GetWarpables using LuaPlayer.position
and LuaPlayer.surface for the platform-area test. In normal
character control those point at the character, but in map mode
Factorio can move the player's controller/view center independently
of the physical character. If the map view center was outside the
platform footprint while the character was standing safely on the
platform, the player was omitted from the warp teleport list. Since
character entities are intentionally excluded from the generic
entity clone pass, that omission stranded the body on the old
surface and produced a death on warp.
- Fixed by resolving a valid LuaPlayer.character first and using the
character's surface and position for the platform-presence check
and destination coordinate snapshot. Characterless controller
states keep the old LuaPlayer fallback path.
- The warp-button guard in control_main.lua now follows the same
rule: when a valid character exists, PlayerCanStartWarp checks the
character surface instead of the map/control surface. This keeps
the same-platform UX gate aligned with the actual body that will be
warped.
Bug fix: placing a harvester while flying a spider-vehicle (e.g. the
"Marvin" flying robot from Spidertron-tier mods) over the deploy area
no longer teleports the player into a dark corner of the harvester
floor.
- Root cause was a two-step interaction. Step 1: the harvester
Deploy() function at control_class_harvester.lua:535-540 collects
every entity in the deploy area on the main floor whose type is
not in {construction-robot, logistic-robot, character}, clones
that set onto the harvester floor at offset
(deploy_position - position), and then destroys the originals.
The exclusion list did not cover vehicle types, so cars,
spider-vehicles, locomotives, and wagons parked on the deploy
footprint got swept along with terrain decoration. Step 2: the
on_entity_cloned handler at control_main.lua:1760-1766 (a long-
standing 1.x-era hook, refreshed in v2.4.9 for spidertron-remote
relinking) unconditionally teleports the driver of any cloned
spider-vehicle to the destination and re-seats them. Combined,
placing a harvester on top of a player flying Marvin: cloned
Marvin to the harvester floor, teleported the player to it, and
destroyed the original Marvin on the main floor. The "far off
place" matched the harvester's home-vs-deploy offset; the dark
surroundings matched the largely-untiled harvester floor.
- Fixed by adding {car, spider-vehicle, locomotive, cargo-wagon,
fluid-wagon, artillery-wagon} to the type exclusion lists in
both clone collections that cross main floor -> harvester floor:
Deploy()'s ecs filter (control_class_harvester.lua:535-540) and
Recall()'s ebs filter (control_class_harvester.lua:378-382). The
symmetric Recall()'s ecs filter (line 402-407, harvester floor
-> main floor) is intentionally unchanged: vehicles parked on
the harvester floor while the harvester is deployed should still
be carried back to the main floor on Recall, and the existing
on_entity_cloned driver-follow correctly transports the driver
with them in that direction.
- The on_entity_cloned handler itself is left intact. Its driver-
follow + spidertron-remote-relink behaviour is correct for warp
cloning (warptorio.Warp via Warpout, where the source surface is
destroyed and the player must follow) and for the
harvester->main Recall direction. Gating it on storage.is_warping
would have broken Recall pull-back.
- Pattern reference: warp's GetWarpables at
control_platform_classic.lua:893 already excludes
{car, character, player} from generic cloning and opts in
spider-vehicle explicitly. The fix brings Deploy/Recall in line
with that established pattern.
Version: 2.4.18
Date: 08.05.2026
Code-health pass — no behavior change, no balance change. Pure
refactor + docs release. Splits control_main_helpers.lua (which had
grown to ~1008 lines mixing 5+ concerns) into 4 focused sibling
files matching the project's small-focused-file convention, and
documents two Factorio 2.0 modding footguns in CLAUDE.md that
surfaced during the v2.4.x sessions.
Refactored:
- control_main_helpers.lua reduced to ~218 lines (settings +
blueprint blacklist + misc) with 4 require() lines pulling in
the siblings. Function bodies are moved verbatim — no logic
changes, no rewrites. The audit (docs/superpowers/audits/
2026-05-08-v2.4.14-health-and-release-readiness.md §2c) had
flagged this as the only refactor candidate; the audit
recommended waiting until 1100 lines but this release overrides
that wait while there's no time pressure.
- Created control_main_helpers_loot.lua (~105 lines): GetPossibleLoot,
LootTable, SpawnLootChest, ChunkLootChest, on_chunk_generated
registration.
- Created control_main_helpers_ticks.lua (~115 lines): ClockTick,
ChargeCountdownTick, WarpAlarmTick, PollutionTick, BiterTick,
the inline radar_ability on_tick, and their registrations.
- Created control_main_helpers_caches.lua (~449 lines): 11 local
cache tables (tpCache, tpgateCache, tpharvCache, tppadWestCache,
tppadEastCache, loaderCache, pipeCache, gpipeCache, chestCache,
comboCache, warploader) with their methods and cache.ent /
cache.type registrations. GetTeleporterEntityNames moves with
the cache block since it lives inside that section.
- Created control_main_helpers_warploader.lua (~121 lines):
InsertWarpLane, NextWarploader, DistributeLoaderLine,
OutputWarpLoader, TickWarploaders, TickLogistics, and the
TickLogs on_tick registration.
Documented:
- CLAUDE.md gains two new anti-pattern subsections covering the
cross-surface connect_to(target, false) requirement (root cause
of v2.4.17 hotfix) and the accumulator chest-fallback
circuit_connector recipe (companion to commit 8e58f24).
Verification:
- Per-extraction grep invariants confirmed total `function ` (75),
`events.on_tick(` (7), `events.on_event(` (1), `events.hook(` (1),
`cache.ent(` (9), and `cache.type(` (4) counts equal pre-fix
totals across the 5 resulting files.
Version: 2.4.17
Date: 08.05.2026
Hotfix: cross-floor circuit-network bridge restored.
- In 1.x, paired teleporters on different floors bridged their
circuit networks: signals on one floor's network were visible on
the other floor's network, allowing aggregate views of e.g. total
power consumption across all floors. The 2.0 port translated
`connect_neighbour({target_entity=..., wire=...})` to the 2.0
`LuaWireConnector.connect_to(target)` API correctly, but dropped
the cross-surface enabling parameter: in 2.0 the engine rejects
wire connections between connectors on different surfaces unless
`reach_check=false` is explicitly passed as the second argument.
The default (`true`) silently rejected the call, so paired
teleporters' wires never actually merged their networks. Player
saw two separate circuit networks even with wires plugged in.
- Fixed by passing `reach_check=false` to both `red1.connect_to(red2)`
and `green1.connect_to(green2)` in
control_class_teleporter.lua:ConnectCircuit. This matches the
pattern already used correctly by the chest-swap wire-copy helper
at lib/lib_control.lua:148.
- The data-stage circuit_connector chest fallback added earlier
today (commit 8e58f24) is the necessary precondition: it lets
wires physically attach to the accumulator-based teleporter
prototypes (warptorio-teleporter-0, warptorio-underground-N).
Without that fallback, there's nothing to wire up; without this
fix, wires attach but signals don't bridge. Both are needed.
- The harvester combinator's ConnectCombo function uses the same
`connect_to` API (control_class_harvester.lua:215, 218) but only
fires when the harvester is NOT deployed -- combos[1] and
combos[2] are then on the same surface, so reach_check=true is
fine. No change needed there.
Version: 2.4.16
Date: 08.05.2026
Uniform science pack consumption — modernise to Factorio 2.0 vanilla
convention. Every research project that previously consumed asymmetric
per-pack counts (e.g. 2 red + 1 green, or 5 red + 4 green + 3 blue +
2 purple + 1 yellow) now consumes 1 of each required pack type per
cycle. Tier expression moves entirely onto the cycle count, the cycle
time, and the set of pack types required — exactly how vanilla 2.0
expresses tier across its tech tree. The legacy 1.x asymmetric pattern
was a holdover from when red science was much cheaper to produce than
green, so 2-red + 1-green kept the cost ratio balanced; in 2.0 vanilla
Wube unified everything to "1 of each" for clarity, and this release
brings warptorio in line.
Changed:
- 75 uneven `ExtendTech` pack tables in data_warptorio.lua normalised
to `1` per pack. The set of pack types required by each tech is
preserved; only the per-cycle count drops from whatever-it-was to
`1`. Out of 128 total `ExtendTech` calls, 59 were already uniform
and stay byte-identical; the remaining 69 unique uneven entries
(75 line-level occurrences once duplicate source strings are
counted) were rewritten.
Unchanged:
- Already-uniform entries stay byte-identical, including
uniform-high entries like `{ red = 5, black = 5 }` (reactor
module). The user's intent was to eliminate **uneven** entries,
not eliminate high counts.
- `unit.time` and `unit.count` are NOT touched. Scaling them to
compensate for the cost change would produce ugly fractional
values (22.5s, 33.7s, etc.) that break the round-number aesthetic.
Vanilla 2.0 keeps research time at round numbers (15/30/45/60s)
and warptorio follows.
- Crafting recipes (e.g. the warpspider recipe touched in v2.4.15)
are NOT affected. Recipe ingredient counts can be uneven in
vanilla 2.0 (electric mining drill = 3 iron gears + 5 iron plates
+ 3 circuits, etc.); the uniform-pack rule applies to research
only.
Balance impact:
- Late-game research becomes noticeably cheaper. Examples:
`{ red = 2, green = 1 }` -> 2 packs/cycle (-33%);
`{ red = 5, green = 4, blue = 3, purple = 2, yellow = 1 }` ->
5 packs/cycle (-67%); the highest-tier descending-count entries
drop ~70%. This is by design — the user accepted the side effect
as part of the modernise-to-2.0 move. If post-release feedback
shows late-game progression is too cheap, a follow-up release
can raise specific `unit.count` values, but that's a separate
design problem.
Version: 2.4.15
Date: 08.05.2026
Audit-driven bundle release — resolves 14 of the 16 §3 recommendations
from the v2.4.14 health + release-readiness audit. Two items deferred
per the audit's own recommendations: item 13 (find_non_colliding_position
fallback, parked because 2.0 is already strictly better than 1.x at the
flagged site) and the control_main_helpers.lua refactor (deferred until
the file passes 1100 lines). Full audit report at
docs/superpowers/audits/2026-05-08-v2.4.14-health-and-release-readiness.md.
HIGH:
- Removed 1.x harvester circuit-connector APIs
(`circuit_connector_definitions`, `get_circuit_connector_sprites`)
from prototypes-updates/data_warptorio-harvester.lua. Both removed
in Factorio 2.0; harvester wiring already disabled by
circuit_wire_max_distance=0. Also dropped the dead `cc0()` helper
and the `circuit-connector-sprites` require that referenced them.
- Initialised storage.modtbl in on_init at control_main_remotes.lua.
Fresh install triggers on_init before any on_config event; external
mods calling InsertModTable from their own on_init handler crashed
because storage.modtbl was nil.
- Renamed warptorio.IsWarping field-clobber to storage.is_warping.
The function at control_main.lua:1691 was overwritten with a boolean
inside Warpout(), making any post-warp invocation crash. Remote
interface captures by-reference at load time so external callers
via remote.call were unaffected; the field is nevertheless
inconsistent. Semantic note: pre-fix, the function meant
'warp-charging active'; post-fix, it means 'Warpout function
executing'. The boolean override was always tracking the latter;
the rename collapses both reads to that semantic.
MEDIUM:
- Guarded warpspider tech space-science-pack prereq with
mods["space-age"] check. No-Space-Age (the mod's target audience)
could not research warpspider before this fix.
- Fixed proto.UsedRecipes cache-bust argument scoping in
lib/lib_data.lua. Function accepted a refresh flag but the
parameter was missing from the signature; passing true silently
no-op'd.
- Guarded lib/lib_planets.lua's planetorio remote.calls with an
interface check (early-return when absent). Bundled mod always
provides the interface, but the file is also published standalone
for third-party mod use.
- Switched warptorio_planet_engine.lua's SimpleTemplateRoll from
pairs to table.RankedPairs across all three iteration loops.
pairs over a hash table is non-deterministic across Lua
hash-bucket layouts; in MP this could desync the template roll
between clients.
- Pointed UpdateTemplate's deepmerge target at storage.templates
(was planets.templates, the in-memory cache). Changes via remote
callers now persist across reload.
- Routed on_runtime_mod_setting_changed through events.hook instead
of bare script.on_event at require time, matching the rest of the
mod's event-registration discipline.
LOW:
- Removed six dead warpspider-weapon locale keys from
locale/{en,de}/config.cfg (mirrors v2.4.9's beacon-11-15 cleanup).
- Local-scoped combinator sprites table at
prototypes/data_warptorio-combinator.lua:6 (was bare global).
- Capped warptorio_autowarp_time at maximum_value=600 (10 minutes
in seconds — the setting unit, confirmed by usage-site math) in
settings.lua to prevent integer overflow in downstream tick math.
- Removed abandoned `entTbl` + `entIgnore` scaffolding tables from
data-updates.lua. Tables were defined in v2.4.1 baseline import
but never referenced anywhere; intent was a planned data.raw
iteration pass that never got implemented.
- Deleted unused lib/lib_hide.lua. File contained a __recursive_assign
utility (not hide logic) and was not loaded by lib.lua; grep
confirmed zero callers.
Balance fix (outside the audit list, surfaced during pre-ship test):
- Reduced warpspider recipe's power-armor-mk2 ingredient from 8 to 1.
In Factorio 2.0 most other spidertron-recipe ingredients
(spidertron, satellite, fission-reactor-equipment) fill to 10+ in
an assembler input slot, but power-armor-mk2 still has stack_size=1
with no engine-side bump, so its slot caps at 1. With the recipe
asking for 8, the assembler could never accumulate enough to craft
the warpspider -- the recipe was effectively hand-craft-only, which
was not the intent. 1.x had the same issue but it was never
surfaced. The other six ingredient quantities stay at the v2.4.13
restored 1.x values; only power-armor-mk2 changes, on the assembler-
slot constraint.
Version: 2.4.14
Date: 08.05.2026
Generalize the v2.4.12 Cat 2 defensive fix.
The v2.4.12 audit identified six pmods that wrote to the noise-
expression-referenced property family (moisture, aux, temperature,
elevation, cliffiness, water_level) via the same `tostring(value)`
pattern that caused the v2.4.10 cliffiness=0 -> AB lava-decal-blue
compile crash. The Cat 2 finding fixed only the val=1 corner case
in pmods.water; the other five direct setters (pmods.water_level,
pmods.moisture, pmods.aux, pmods.temperature, pmods.elevation,
pmods.cliffiness) were left exposed on the rationale that no
current template passes 0 to them. Same justification, asymmetric
application -- so this release closes the gap.
Added:
- `planets.SetPropertyExpression(g, key, value)` helper. Coerces
value to string, but skips the write entirely when value
coerces to numeric zero. Named noise-expression strings
("elevation_island", "warptorio_ocean_moisture") are
unaffected because tonumber("name") -> nil; only literal-zero
pins are suppressed.
Changed (no behavior change today, defensive against future
template authors):
- All six property-family pmods now route through the helper:
pmods.water (water_level + the val=0/val>=5 elevation
overrides), pmods.water_level, pmods.moisture, pmods.aux,
pmods.temperature, pmods.elevation, pmods.cliffiness. A
future template author writing `{ "moisture", { value = 0 } }`
or similar to mean "Nauvis default" gets the default they
meant rather than a constant-zero pin that would compile-crash
under AB or any mod that references the property in a
multioctave_noise(octaves=...) chain.
- Templates that genuinely need to pin a property to literal
zero (no current template does, and the cliffiness=0 case was
already converted to cliff_settings.richness=0 in v2.4.10) can
still bypass via the gen.property_expression_names = { foo = "0" }
direct-write path; that route does not run through the helper.
Version: 2.4.13
Date: 06.05.2026
Deferred-list cleanup pass.
Removed:
- Dead feature stub `warptorio.CountPlatformEntities` (always
returned a hardcoded 5 with `-- todo`). The function was used in
the warp-charge-time formula via `(cot / sgFactor)`, which with
the hardcoded 5 collapsed to a constant 0.071 (below the noise
floor of warp timing). The companion runtime setting
`warptorio_warp_charge_factor` is also removed, along with its
en/de locale entries. Saves that toggled the setting away from
default will see it silently revert; the behaviour change is
below the noise floor so this is acceptable.
Restored (1.x parity, balance change):
- Warpspider recipe quantities restored to 1.x values. The 2.0
port silently dropped spidertron / power-armor-mk2 / satellite
from 8 to 1, and raw-fish from 9 to 8. Restored to 1.x's
values: spidertron=8, power-armor-mk2=8,
fission-reactor-equipment=8, raw-fish=9, satellite=8,
artillery-turret=8, rocket-silo=1. (`fission-reactor-equipment`
is the 2.0-renamed equivalent of 1.x's
`fusion-reactor-equipment`; that rename stays.) NOTE: this is a
significant balance change. Players mid-progression toward a
warpspider will need 7 extra spidertrons, 7 extra power armors,
7 extra satellites, and 1 extra fish vs. the 2.0.0-2.4.12
recipe. Existing crafted warpspider entities in saves are
unaffected.
Implemented:
- `warptorio.PlayerCanStartWarp(ply)` now actually does
something. Previously a no-op stub returning unconditional true,
leaving the `else ply.print({ "warptorio.same-planet-error" })`
branch in the warp-button click handler unreachable. Restored
the 1.x-implied semantic from the locale text "You must be on
the same planet as the platform to warp": clicking warp while on
the homeworld surface or a deployed harvester surface now shows
the error and blocks the warp. Vote-warp branches still don't
call this guard (intentional -- votes are aggregated, the
player who completes the threshold can be on any surface). The
function remains a public override hook for third-party mods.
Confirmed (no code change):
- Win condition stays homeworld-only. The 2.0 port's
`set_no_victory(true)` call to silo_script + `HomeSweetHome()`
victory trigger remains the canonical victory path. Rocket
launch does nothing; setting your homeworld is the win
condition. Documented here so future audits don't re-flag it.
Version: 2.4.12
Date: 06.05.2026
1.x -> 2.0 latent-bug sweep — bundle release
Three audit passes proactively scanning for the same class of
bug that produced v2.4.10 (constant-pinned noise expression) and
v2.4.11 (type-gated property access). Audit reports under
docs/superpowers/audits/ and design + plan under
docs/superpowers/specs/ and docs/superpowers/plans/.
Cat 1 (type-gated property access): zero findings.
Codebase scan of every LuaObject property read showed all
type-gated reads are guarded by data flow, cache.ent prototype
filters, universal LuaObject properties, or existing nil/valid
guards. The v2.4.11 connected_entity fix appears to have been the
only such bug.
Cat 2 (constant-pinned noise expressions): one defensive fix.
Zero HIGH findings. One MEDIUM (defensive) — pmods.water at val=1
(Nauvis-default water level) wrote `water_level = "0"` to
property_expression_names, the same anti-pattern that caused the
v2.4.10 cliffiness=0 -> AB lava-decal-blue compile crash. No
current template uses val=1, but a future template author writing
`{ "water", { value = 1 } }` to mean "Nauvis-default water"
explicitly would hit the foot-gun. Fixed: skip the water_level
write entirely when (1-val)*0.5 == 0, so Factorio applies its own
default water_level expression (which is what "Nauvis default"
means anyway).
Cat 3 (renamed/removed APIs and behavior changes): zero findings.
Checklist-driven scan against eight suspicious patterns
(events, data.raw types, prototypes tables, defines.X enums,
rendering API, find_entities_filtered shapes, MapSettings paths,
blueprint methods, victory API, force methods) found everything
already using the canonical Factorio 2.0 API. The 2.0 port was
done methodically and the residual bugs through v2.4.11 were
narrow runtime crashes that hotfix releases handled.
Version: 2.4.11
Date: 06.05.2026
Hotfix: spidertron-remote re-link crashed on the first non-remote stack
- The 2.4.9 spidertron-remote re-link (the 1.x 1.3.5 fix restoration)
crashed on its first call: `LuaItemStack doesn't contain key
connected_entity` while iterating any player's main inventory that
held items other than spidertron remotes. Root cause: the 1.x
port read `stack.connected_entity` directly without a prototype
type guard. In Factorio 1.1 reading that property on a non-remote
item returned nil; in Factorio 2.0 it raises "doesn't contain
key" because the property only exists on spidertron-remote items.
So the very first iron-plate or transport-belt stack iterated by
the relink loop killed the warp event.
Fixed by adding `stack.prototype.type == "spidertron-remote"` as
a guard before reading `.connected_entity`. Ordinary inventory
items now pass through the relink loop without touching the
property; only actual spidertron remotes are checked and rewritten.
Version: 2.4.10
Date: 06.05.2026
Hotfix: ocean-template warp crashed on Alien Biomes saves
- Warping to the ocean template with Alien Biomes loaded crashed
`create_surface` with `MultioctaveNoise::octaves must be > 0 and
can't be infinite` while compiling
`decorative:lava-decal-blue:probability`. Root cause: the ocean
template pinned the cliffiness noise expression to the constant 0
(via `{ "cliffiness", 0 }`, written to
property_expression_names["cliffiness"] as the string "0"). AB's
`lava-decal-blue:probability` references `cliffiness` inside a
`multioctave_noise(octaves=...)` call; the derived octaves count
came out as 0 (or infinity through a 1/cliffiness branch), and the
engine refused to compile the expression -- on every roll of the
ocean template. Fixed by replacing the cliffiness pin with a
`cliff_settings.richness=0` configuration via the `cliffs`
modifier, which achieves the same "no cliffs" gameplay outcome
via the proper Factorio 2.0 API and leaves the cliffiness noise
expression untouched, so AB's downstream expressions compile
normally.
- Updated docs/planet-modifiers.md to flag the same pattern for
authors of third-party templates: don't pin moisture, temperature,
aux, elevation, or cliffiness to the constant 0; use the proper
knob (cliff_settings, water value, or a small nonzero constant)
instead.
Version: 2.4.9
Date: 06.05.2026
"Round" release -- closing the remaining 1.x parity gap and removing
dead-stub surface area that has been sitting in both 1.x and 2.0
unimplemented. A 1.x -> 2.0 audit (spec at
docs/superpowers/specs/2026-05-06-v2.4.9-round-release-design.md)
found that 2.4.8 was already substantially at parity with warptorio2
1.3.10; this release closes the one regression and cleans up the
visible dead-stub items.
Restored regression:
- Spidertron remotes now stay bound across warps. 1.x's
control_main.lua:829-838 (the 1.3.5 fix) walked every player's
main inventory and cursor stack on each spider-vehicle clone and
rewrote stack.connected_entity from the old spidertron to the
new one. The 2.0 port lost this -- the on_entity_cloned handler
only re-seated the driver. Result: every warp left players
holding remotes that had to be re-aimed by hand to re-bind to
the cloned spidertron. Restored in control_main.lua's
on_entity_cloned, with a single relink helper that valid_for_read
guards each stack and works for offline players' stored
inventories too. Spidertrons left behind on abandoned warpzones
(i.e. NOT cloned because they sat outside the warp area) are
not handled -- same behaviour as 1.x.
Implemented:
- warptorio_no_blueprint setting now actually does something. It
was registered in settings.lua and exposed in the locale, but
the handler was commented out in 1.x's control_main_helpers.lua:9-16
and entirely absent from 2.0; toggling the setting was a no-op.
Now: when the setting is on and a player creates or edits a
blueprint, warptorio platform entities (teleporter portals,
undergrounds, harvestpads, harvestportals, warploaders,
warpstation, warpport, warpspider, reactor) are stripped from
the blueprint at setup time. Non-platform warptorio items
(carebear chest, lootchest, combinator, logistics-pipe,
heatpipe, town/home portals, warpnuke ammo, warponium fuel,
warp armor) are NOT blacklisted -- those are ordinary craftable
goods players legitimately want in blueprints.
Cleanup (no behaviour change):
- Removed dead locale entries warptorio-beacon-11 through
warptorio-beacon-15 from locale/en/config.cfg and locale/de/config.cfg.
The beacon prototype loop in data_warptorio.lua only generates
tiers 1 through 10, so locale slots 11-15 had been dangling
since the loop's upper bound was last lowered.
- Updated a leftover docstring in control_main.lua's warp button
handler that referenced the old warptorio.remote.event_warp_started
name (deprecated in 1.x, removed in 2.4.8). Now points at the
canonical remote.call("warptorio", "get_event", "warp_started").
Note on 1.x saves:
- Saves from Warptorio 1.x (Factorio 1.1) cannot be loaded into
Factorio 2.0. This is enforced by the Factorio engine's
factorio_version constraint, not by warptorio. Start a new save
in Factorio 2.0 to use warptorio3_2.
Version: 2.4.8
Date: 04.05.2026
CRITICAL FIX -- entire planets engine event flow was dark:
- planets.GetBySurface(luasurface) returned nil on every call since the
Factorio 2.0 port. The function used `istable(f)` to extract f.index
from a LuaSurface ref, but in Factorio 2.0 LuaObjects are `userdata`,
not `table` -- so istable returned false, the index variable stayed
false, and the storage.worlds[false] lookup always returned nil.
Cascading consequences:
* Every per-planet event hook was silently no-op'd. Templates that
defined on_chunk_generated, on_surface_created, on_pre_surface_cleared,
on_pre_surface_destroyed, or on_biter_base_built never fired their
callbacks, because the engine couldn't resolve the planet record
for the surface the event came from.
* GetMainPlanet always returned nil. Anything using
remote.call("warptorio","GetMainPlanet") -- including the warp
roller's lookup of the previous template's flags -- saw nothing.
* As a direct result, the back-to-back planet rejection rule (no two
rest / resource / aggressive planets in a row, introduced in 2.4.0
and "fixed" in 2.4.6) was actually broken every single warp the
whole time -- 2.4.6's fix made the caller pass the right key, but
the lookup itself silently failed inside GetBySurface, so the
rule never received a non-nil prevplanet template and never
rejected anything. Sequences like resource -> resource -> resource
could (and did) come up freely.
* planets.OnChunkGenerated's enemy-force reassignment (which moves
biters in newly-generated chunks onto the planet's force, when
the template defines one) never fired, so any custom-force biter
planet was using the vanilla enemy force.
Fix is a rewrite of GetBySurface that handles `number`, `string`,
`table`-typed and `userdata`-typed LuaSurface refs explicitly via
direct `.index` access, with a short-circuit nil return when no
index can be resolved. With the fix in place, all of the above
dark-feature classes light up correctly: the back-to-back rule
actually filters resource/resource pairs, GetMainPlanet returns
the current planet, and per-template event callbacks fire as
designed.
Bugfixes from a baseline audit pass:
- Carebear runtime setting toggle no longer crashes when fired
before the platform is fully initialised (or during a teardown /
migration window). The handler now nil-and-valid-checks
storage.floor.main.host before create_entity, and rolls back
storage.carebear if the chest creation itself doesn't return a
valid entity. Previously a misclick on the setting at the wrong
moment could throw on_runtime_mod_setting_changed, which on
multiplayer would leave the toggling client unable to interact
with the rest of the mod's settings until the next reload.
- Train rail logistics no longer crashes when a chest reference in
self.chests[1] becomes invalid mid-tick. SplitItem,
UnloadLogistics, and LoadLogistics now isvalid-guard each chest
and wagon they touch, matching the pattern BalanceChests already
used. Same file: TickLogistics's `local f = storage.floor.main.host`
is now reordered so the validity check happens before the
dereference -- previously the .host index would error before the
`if not f.valid` guard ran, on the rare tick where storage.floor.main
was nil during a teardown.
- The provider/requester chest setting (warptorio_loaderchest_provider
and warptorio_loaderchest_requester) now actually does something
when toggled at runtime. The handler was an empty stub since the
2.0 port -- toggling the chest type silently did nothing until the
next teleporter rebuild. Fixed: the handler now rebuilds logistics
on every active teleporter, the same pattern LoaderSideChanged
already used. Affects only logistics tier 4 (the highest tier in
ChestBeltPairs); lower tiers don't read the setting.
- NewGamePlus integration no longer skips its handler registration
on the very first session of a save. The HookNewGamePlus call was
commented out in on_init, leaving on_load as the only registration
path, which meant the first session of a NewGamePlus save ran
without the hooks (only subsequent reloads picked them up). The
on_init call is restored, on_configuration_changed now also calls
it (so adding NewGamePlus to an existing save takes effect), and
the on_load path is preserved for the standard re-registration
role. The module-level newgameplus flag is what guards against
double-registration within a session; behaviour after the first
tick of any session is unchanged.
Performance:
- The on_position teleporter probe (every player, every position
update) used to scan find_entities_filtered{type="accumulator"}
and then ask cache.get_entity to discard non-warptorio results.
Now it name-filters at the engine level against a list of actual
portal prototypes (warptorio-teleporter-N, warptorio-teleporter-gate-N,
warptorio-underground-N, warptorio-harvestportal-N). The list is
built lazily on first call and filtered against prototypes.entity
so unregistered candidate names (e.g. tier slots beyond what the
data stage actually defines) don't trip find_entities_filtered's
"Unknown entity name" check. Walking near a vanilla solar farm no
longer fires a cache lookup per accumulator; only real warptorio
portals come back from the engine.
- WarpFinished's per-surface character-emptiness scan is now
deferred onto the same one-surface-per-tick drainer that already
handled the actual delete (introduced in 2.4.5). Previously the
scan still ran synchronously in WarpFinished -- meaning each
warp tick paid for an unbounded find_entities_filtered{type="character"}
on every abandoned warpzone, even though the deletion itself was
paced. On saves that have accumulated a lot of warpzones with
many generated chunks, this trims a few ms off the warp tick
itself.
Cleanup (no behaviour change):
- Removed dead helpers in lib/lib_control.lua: surfaces.BlankSurface
(empty stub, unreferenced) and surfaces.spawnbiters (broken in
multiple ways since import: undefined local at line 416,
math.random(0, 2*math.pi) returning ints, set_multi_command
targeting a player character; unreferenced).
- Removed empty warptorio.ValidateWarpBlacklist function and its two
call sites. It was a stub left over from when the warp-blacklist
lived in storage.warp_blacklist; that bucket was replaced by
storage.modtbl years ago and the validate function was never
reimplemented for the new layout.
- Removed three never-defined remote exports
(PlanetEntityIsPlatform, EntityIsPlatform,
BlueprintEntityIsBlacklisted). The fields they pointed at on the
warptorio module never existed, so any external mod calling them
through the remote interface was hitting "Unknown remote
function" errors. Better to not advertise an API that doesn't
exist; if these are needed in future, write the implementation
first and re-register at that time.
- Removed initialisation of storage.Turrets (never read or written
anywhere else; vestigial) and storage.warp_charge reset in
WarpPreBuildPlanet (set but never read; only warp_charging and
warp_charge_time are consumed elsewhere).
Version: 2.4.7
Date: 04.05.2026
Bugfix:
- on_init no longer crashes with "Unknown interface: freeplay"
when the loaded scenario isn't freeplay (custom scenarios,
mod-shipped maps that run their own scenario, etc.). The
"set custom intro message" call is now guarded with
`if remote.interfaces.freeplay then ... end` -- matching the
guard already in place on the silo_script call right below
it. The two other freeplay calls (set_disable_crashsite,
set_skip_intro) were already pcall-wrapped, so this brings
the third one into line with the existing pattern.
Version: 2.4.6
Date: 03.05.2026
Same-category-twice-in-a-row really doesn't happen now:
- The "no two rest planets in a row, no two resource planets
in a row, no two aggressive planets in a row" rule that
2.4.0 introduced has been silently broken since 2.4.0.
WarpBuildPlanet was passing the previous planet's full
object table where the roll function expected a template
key string, so the lookup that determines "what category was
the last warp?" returned nil and the rejection branch was
skipped on every roll. As of this release the right value is
passed and the rule actually filters candidates again --
back-to-back ocean -> ocean (or any other same-category
pair) won't roll unless the candidate pool legitimately
collapses to a single category.
Version: 2.4.5
Date: 03.05.2026
Multiplayer warp lag:
- The connecting player's post-warp freeze is shorter now,
especially on saves where several abandoned warpzones have
accumulated. Cleanup of those abandoned surfaces used to run
synchronously at the end of every warp; on a save with three
or four old warpzones it could add 5-15 seconds to the
post-warp lag the connecting player experiences. The actual
deletion now happens in the background, one surface per
second, outside the warp's host-blocking window. Same end
state, just without the freeze.
- Same pass tightened the surface scan in WarpFinished -- the
check now skips non-warpzone surfaces (platform floors,
boiler, factory, harvester, homeworld) up front instead of
running find_entities_filtered on them only to discover they
weren't deletable anyway.
Version: 2.4.4
Date: 03.05.2026
Ocean planet -- shoreline beach restored on Alien Biomes saves:
- The ocean island's sandy beach disappeared on AB-loaded saves
after the 2.4.3 cleanup. The cleanup had removed the
autoplace_settings.tile.settings pre-population from ocean's
gen field (intended as a redundant defense after engine fixes
made it technically unnecessary). Removing it changed how
sand-1 and grass-2 ended up in autoplace_settings: instead of
empty {} entries (which let each tile's prototype probability
expression fire unchanged), the settings now came in via
pmods.nauvis's tile lookup, which copies the source surface's
autoplace_settings overrides for that tile name. On AB saves
that meant copying AB's biome-system overrides on
mineral-brown-sand-1 -- which suppress vanilla sand-1's
shoreline-firing term -- and the beach silently stopped
forming. The empty-{} pre-population in gen is restored.
Version: 2.4.3
Date: 03.05.2026
Other planets get the same Alien Biomes treatment ocean got:
- Jungle now varies its biome rather than forcing every tile
into the same wet-tropical mix. The previous version pinned
moisture/temperature/aux to flat constants, which on Alien
Biomes saves locked out almost every AB tree variant (each
AB tree gates on a per-variant noise window). The new jungle
biases the noise toward "lush wet" instead of pinning it,
so AB picks tree variants that fit the biome -- and on
vanilla saves the dense forest still reads as a jungle.
- Barren now has dry decoration on the ground (sand decals,
dry vegetation patches) instead of being completely bare
between the rocks. Previously barren only allowed rock
decoratives, so on Alien Biomes saves nothing else placed.
Each decorative still decides whether to fire based on the
biome, so barren stays visibly dry; it just stops looking
sterile.
- Rogue's small ground decoration finally appears too. The
template wanted "sparse non-rock decoration" all along but
a bug in the decoration helper was silently giving the
sparse setting to ROCKS instead, then having it overwritten
by the explicit rock-density modifier two lines later. End
result was no small decoration on rogue at all. Fixed at
the helper level (see below); rogue's own template didn't
need to change.
Engine fixes (relevant to anyone authoring planet templates):
- planets.lookup() now uses literal-substring matching instead
of Lua's pattern-matching. Lua treats `-` as a "0 or more"
quantifier in patterns, so e.g. matching the name "sand-1"
against the cache name "sand-1" actually returned no match,
which silently dropped every hyphenated tile / entity /
decorative name out of every whitelist. Tile names like
grass-2, sand-1, vegetation-green-grass-2,
mineral-brown-sand-1, tree-grassland-c, etc. now match
correctly. (Templates that previously listed bare names like
"tree" or "rock" still work the same way -- those are
substrings that match anything containing them, exactly the
behaviour they had before.)
- The decoratives helper's "all non-rock decoratives" default
selection actually returns non-rock decoratives now. The
previous version had a quiet bug where the inversion flag
was ignored when the pattern was a plain string; the helper
ended up returning rock decoratives instead. Templates like
rogue that asked for "sparse non-rock decoration" were
therefore inadvertently scaling rocks. Both Path 2 templates
that depend on this default (rogue and the new barren
modifier) work as intended.
- pmods.nauvis Path 1 (the full-Nauvis-copy variant used by
most templates) now merges property_expression_names from
Nauvis with whatever the template's gen field set up,
instead of replacing wholesale. Templates that declare
noise overrides via gen (e.g. control-setting biases) now
keep them through the Nauvis copy. Path 2 already worked
this way; this aligns Path 1.
Version: 2.4.2
Date: 03.05.2026
Quality of life:
- The chat message after a warp now always shows the world's
name first, with the description below it. Previously the
name was hidden until you researched Charting, so on early
warps you only saw the description and had to guess which
planet you'd landed on.
Ocean planet -- sandy beaches and a lived-in island:
- The ocean island now has a sandy beach where land meets
water (sand patches along the shoreline rather than a
uniform band -- matches how vanilla Nauvis shorelines look),
grass tufts and small bushes scattered across the grass
interior, and visible tree clusters across the island.
- Works with Alien Biomes loaded, too. The previous template
flattened the underlying noise variables (aux pinned to a
single value), which gated out almost every AB tree variant
and most AB ground decoratives. The new template biases the
noise instead of pinning it, so AB's biome system sees the
variation it expects and picks tree variants and biome-
specific decoratives the way it does on any other surface.
Version: 2.4.1
Date: 03.05.2026
Planet rotation:
- "Normal" worlds now lose 1-2 random resources per warp, so
back-to-back normal warps feel different from each other. The
"uncharted" planet stays as the only template that gives you
your exact starting resource set.
- Jungle has biters again (was peaceful in 2.4.0). The flavour
text -- "trees might be enough to conceal your location from
the natives" -- only makes sense with hostile natives present.
Jungle stays in the peaceful-weight rotation tier, so it still
appears as often as ocean and barren.
- Ocean's 8x ambient fish are back. The small island felt
lifeless without the swirling fish around it.
World generation fixes:
- Trees no longer come out as the dead-tree variants on Nauvis-
style worlds. The bug was that pmods.nauvis was building tree
autoplace settings from scratch instead of inheriting Nauvis's
own moisture/aux-aware tuning. "Normal" planets used to look
empty (sparse trees, no rocks, no cliffs); they now match what
you'd expect from a fresh Nauvis.
- Templates can now layer custom elevation expressions on top of
a high water level without the water modifier overwriting
them. Previously {"water", value=6} silently flattened any
island terrain you'd configured.
- Cliffs, water-frequency, rocks, starting_area, and the noise
that drives tree variant selection are no longer accidentally
stripped from worlds (a leftover from the Factorio 1.x ->
2.0 port).
Settings:
- Category-weight sliders (peaceful, resource, aggressive)
widened from 0.0-1.0 to 0.0-2.0. You can now UPSCALE a
category (e.g. resource = 2.0 makes resource planets roughly
twice as common) instead of only downscaling. Default still
1.0; existing saves unaffected.
Locale:
- Mod-setting tooltips were silently invisible since the
Factorio 2.0 port (~30 settings affected). Tooltips now show
correctly when you hover the setting in the mod settings
menu, in both English and German.
For modders:
- New file docs/planet-modifiers.md documents the public
modifier API for third-party planet packs.
Version: 2.4.0
Date: 02.05.2026
Major changes -- planet rotation:
- New mod settings let you control how often each category of
planet appears:
warptorio_peaceful_weight rest planets (ocean, barren,
jungle)
warptorio_resource_weight resource planets (iron, copper,
coal, stone, oil, uranium, rich)
warptorio_aggressive_weight hostile planets (midnight,
polluted, biter, rogue)
Default 1.0 = unchanged. Set to 0.0 to ban a category outright,
or anywhere in between to dial it down.
- Warps no longer pick two planets from the same category in a
row -- no two rest planets back-to-back, no two resource
planets back-to-back, etc. Falls back gracefully if only one
category is available at your current warp zone.
- Per-planet weight settings (planet_normal, planet_ocean, ...)
are still configurable but no longer clutter the startup
menu (14 entries hidden).
Ocean planet rewritten:
- Replaces the old all-water ocean (which often came out as a
flooded Nauvis with whatever islands the noise happened to
throw up). The new ocean is a small focused grass island in
endless deep water, transcribed from Factorio 2.0's in-game
"Island" map preset. Same warp zone (3) and weight as before.
Other planet tweaks:
- Jungle: biters removed -- jungle is now genuinely peaceful.
(See 2.4.1 -- this was reverted.)
- Dwarf: scaling restored to the original "you are a giant"
intent. Resources back to 0.35x and biters back to 0.5x;
the small map size and tight starting area are kept.
- Barren: warp-zone unlock pushed from 12 to 21 (late mid-game).
New rest-planet progression: ocean (3) -> barren (21) ->
jungle (27).
Locale:
- All planet names and descriptions restored to the original
Planetorio 0.1.5 flavour text (the pun-heavy / Undertale-
referencing in-character lines). Examples: ocean's "the
nearby fish that greet you fills you with determination",
stone's "stuck somewhere between a rock and a hard place".
German translations added (the original mod was English-only).
New game start (intro cinematic):
- Custom 3-phase opening replaces freeplay's native intro:
Phase 1: platform-on-void close-up with siren and screen
shake (~5s).
Phase 2: terrain restored, warp-reactor wreckage spawns
south-west of you, big-explosion plays.
Phase 3: camera zooms out to reveal the full surroundings,
hands control to the player.
Total ~7s. Esc skips. Surrounding terrain (rocks, trees,
decoratives) is preserved through the void/restore cycle.
Version: 2.3.4
Date: 30.04.2026
Cleanup (no visible behaviour change):
- Removed several obsolete Factorio 1.x patterns -- deprecated
"hidden" item flag, 8-step direction helper, no-op nil
assignments. Item visibility, direction handling, and
circuit wires keep working exactly as before.
- Quality is now propagated explicitly when chests are seeded
with starting items (carebear / loot chests). The engine
defaulted to "normal" anyway, but consistent code is easier
to audit.
Version: 2.3.3
Date: 30.04.2026
Bugfixes (Quality):
- Harvester loader belts no longer duplicate items when the
source belt carries non-normal-quality stacks. The forwarding
code was dropping the quality field, so the destination got
a freshly-spawned normal-quality item every tick while the
source was unchanged -- silent infinite duplication on any
harvester pulling uncommon/rare/epic/legendary materials.
- Teleporter chest tier upgrades no longer silently downgrade
every non-normal-quality item to normal quality. When a
logistics tech swapped the chest prototype (e.g. steel-chest
to passive-provider), the chest contents were rebuilt
without forwarding their quality.
Bugfixes (Fluids):
- Heated fluid temperature is now preserved across warp pipes
for any heat-bearing fluid, not just steam. Modded thermal
loops (alternate steam variants, etc.) used to silently
reset to base temperature on every transfer.
Version: 2.3.2
Date: 30.04.2026
Changes:
- Reverted changes from 2.3.1.
Version: 2.2.10
Date: 29.04.2026
Bugfixes (Factorio 2.0 sweep):
- Heat actually flows between adjacent warp-heatpipes again.
The connection edges were rotated 45 degrees (a leftover
from Factorio 1.x's 8-step direction system in 2.0's 16-step
world), so heat-pipes connected on diagonal edges no
orthogonal pipe could ever touch. Existing placed
warptorio-heatpipes may need to be mined and re-placed for
the fix to take effect.
- Teleporter warp-pipe orientation no longer drifts every time
the pipes are destroyed and recreated.
- Teleporter pipes no longer drain entire fluid networks. The
"clear orphan pipe" logic was matching paired pipes too,
which in Factorio 2.0's segment-based fluid model meant
emptying every pipe connected to it.
- The /research-cheat remote now actually completes research
(was a silent no-op).
Tech tree:
- Cleared 14 redundant prerequisites Factorio 2.0 was warning
about on load. No tech-tree shape change -- the prereqs were
duplicate, not load-bearing.
Version: 2.2.9
Date: 29.04.2026
Intro cutscene:
- End-of-cutscene zoom changed from 0.31 (extreme far-out) to
1.0 (normal character view). The cinematic now hands control
back at the same zoom level you'd be at on a fresh game
start, instead of a tiny dot.
Version: 2.2.8
Date: 29.04.2026
Intro cutscene:
- Removed the visible camera bounce when the cutscene ends and
control hands back to the player.
Version: 2.2.7
Date: 29.04.2026
Bugfixes:
- Warp pipes no longer silently delete ~95% of the fluid pumped
through them. A 1200 water/s pump on the ground floor used to
produce only 1-2 water/s in boiler-room storage tanks; now
throughput is bounded by source supply and destination demand
as expected.
Version: 2.2.6
Date: 29.04.2026
Intro cutscene:
- Replaced the two-stage zoom with a single continuous zoom-out.
Camera holds during the void/alarm phase, then after impact
zooms straight out over 3 seconds.
- Lengthened the void/alarm hold from 3s to 5s so the buildup
reads with more weight.
Version: 2.2.5
Date: 29.04.2026
Intro flow polish:
- Phase 1 cutscene zoom widened from 3.0 to 1.8 -- you now see
enough surrounding blackness for the screen-shake to register.
- "CRITICAL MACHINE ERROR" alarm now renders as a framed red
panel pulsing in sync with the siren horn, instead of plain
flying-text.
- Speech bubble copy rewritten with red-bold lede ("Your warp
went wrong."), white body, yellow-bold objective for
readability parity with vanilla tutorial bubbles.
- Alarm uses the standard siren horn sound.
- Speech bubble auto-closes after 15 seconds (was 10).
Locale:
- 13 missing planet RNG settings now have proper labels in the
mod settings menu (were "Unknown key: ..." entries).
- "Planet Clock" -> "Time on Planet" (Planeten-Uhr -> Zeit auf
dem Planeten).
Version: 2.2.4
Date: 29.04.2026
Intro flow / new game start:
- Custom 3-phase opening cinematic replaces freeplay's native
intro.
* Phase 1 (~1.5s): close-up of the platform alone in a
black void, alarm siren, offscreen explosions for
screen-shake.
* Phase 2 (instant): terrain reappears around you, warp-
reactor wreckage spawns south-west, big-explosion plays
for the moment of impact.
* Phase 3 (~4s): camera zooms out to reveal everything,
hands control to the player.
Esc skips. Total ~7s.
- Intro popup is the standard Compilatron speech bubble
floating over your character. Auto-closes after 10s; Tab
also dismisses.
Bugfixes:
- Custom GUI handlers no longer crash when one handler
destroys the GUI element another handler is about to act on.
Version: 2.2.2
Date: 29.04.2026
Worldgen:
- "Basic" planet templates use Factorio's vanilla starting-area
size again, instead of being forced to 0.5x. Templates that
explicitly set their own starting_area (ocean, jungle, dwarf,
biter, rogue) are unchanged.
Cleanup:
- Removed two never-used helpers from the new-game flow.
Version: 2.2.1
Date: 28.04.2026
Lore / new game start (thanks to Shadow_Man):
- Vanilla crashsite (ship + debris + repaired entities + loot
chests) replaced with a "failed warp" opening that fits
Warptorio's lore -- you arrived via warp, not via spaceship.
Scene south-west of spawn: a destroyed warp reactor with
smoke, ~10 platform wreckage pieces in a wide arc, 3 active
fires. A big-explosion plays once at scene-spawn time so
you see the impact bang during the cutscene.
The reactor remnants are mineable but yield nothing -- you
can clear the impact site to tidy up. Wreckage pieces are
mineable with their normal loot.
Worldgen:
- Starting resource patches now sit closer to spawn on basic
templates. Trade-off: smaller biter-free zone, biters spawn
closer too.
Version: 2.2.0
Date: 28.04.2026
Worldgen:
- Jungle planet finally looks like a jungle. Tree clusters are
now 16x larger and overlap to actually cover the map; the
previous setup produced thinly scattered patches.
Cleanup:
- Removed four library files that hadn't been loaded since
Factorio 1.x (~700 lines of dead code). No behaviour change.
- Stripped block-comment dead code carried since pre-2.0.
- De-duplicated the platform's empty-surface and turret-corner
helpers (the bodies were byte-for-byte identical).
Bugfixes:
- Enemy entities inside platform corner-turret radius are now
warped along when biter_warping is enabled. A scoping bug had
been silently dropping them.
Performance:
- Heat balancing moved from per-tick to every 6 ticks (0.1s) on
saves with many warptorio reactors. Power balancing stays
per-tick because it drains accumulator energy for active
abilities.
- Platform tile-laying is faster on retiles (no longer
allocates a substring per entity check; uses a memoised
hash table).
Locale:
- "Warptorio2" -> "Warptorio 3" in the mod description and
victory text. The "Warptorio 2.0.0" version reference in the
description stays (that's the upstream mod version this build
merges).
Known limitations:
- Resource patches can still spawn directly under the platform
on freshly-warped planets. Three different fix attempts were
explored during 2.2 development but none of them worked
against Factorio 2.0's autoplace internals; living with it
for now.
Version: 2.1.5
Date: 27.04.2026
Bugfixes:
- /cheat all no longer destroys warptorio buildings or kills
the player. Platform tile-laying is back to "clear neutral
clutter, lay concrete on top" -- player buildings, warptorio
entities, and resources under the platform are all preserved.
Biter spawners on the platform are still cleaned up.
Version: 2.1.4
Date: 27.04.2026
Bugfixes:
- Heat balancing no longer crashes when heatpipes or reactors
are destroyed mid-tick.
- Researching multiple Warptorio platform-size techs at once
(e.g. via /cheat all) no longer wipes the entire base and
kills the player. Only newly-added platform area is voided
now; the previous footprint is left intact.
- Corner-turret retile only clears the new annulus instead of
the full disk every research effect.
Version: 2.1.3
Date: 26.04.2026
Locale:
- Mod settings menu rewritten for clarity. Every setting now
has a short action-oriented label and a tooltip with concrete
defaults and example values. Setting names, types, and
defaults are unchanged so existing saves keep working.
- Removed an orphan setting locale entry.
- German labels and tooltips rewritten to match.
Version: 2.1.2
Date: 26.04.2026
Bugfixes:
- Hotfix for 2.1.1: a missing local variable was crashing every
warp ("value for required field 'name' is missing").
Version: 2.1.1
Date: 26.04.2026
Bugfixes:
- Biter spawners no longer end up sitting on the warptorio
platform after warping to a planet.
Changes:
- Platform construction now wipes its area by briefly converting
it to out-of-map tiles before laying concrete on top. This is
a clean sweep -- resources, biters, trees, rocks, decoratives
all gone in one shot. Trade-off: if you research a platform-
size upgrade while standing on a planet, anything you built
within the new footprint that didn't fit in the old one will
be wiped. In practice nobody builds into an area that doesn't
exist yet, so this is effectively safe.
Version: 2.1.0
Date: 26.04.2026
Major release rolling up the 2.0.3 - 2.0.28 fixes:
- Factorio 2.0 compatibility: on_load crashes fixed, miniloader/
accumulator data crash fixed, dozens of API fixes.
- World generation: iron / copper / coal / stone / oil / uranium
worlds finally have water on them. Ocean is finally an ocean.
Dwarf is a real bounded mini-world with cliffs and dense
resources.
- Resource exclusion: when the platform sits on a resource
patch, that resource isn't lost any more. The cleared zone
scales with warp count so warp-50 iron won't be eaten by a
future platform-size upgrade.
- HUD: warpzone counter refreshes correctly, autowarp countdown
shows the right time, single-player warp button raises the
warp_started event, respawn doesn't crash.
- Variety: same template never lands twice in a row.
- German translation: full pass against an explicit glossary,
lore rewritten into natural prose, HUD buttons normalised.
Version: 2.0.28
Date: 26.04.2026
Changes:
- Resource exclusion radius around the platform now scales with
your warp count instead of the current platform-research
level. Below warp 5, only the current platform area is
cleared (same as before). From warp 5 to 100 the cleared
radius grows linearly up to the maximum possible platform
footprint. So future research-driven platform expansions can
no longer bury (and lose) resource patches you could already
see.
Version: 2.0.27
Date: 26.04.2026
Bugfixes:
- Resources buried under the warptorio platform are now removed
when the platform tiles are laid down. Previously a generic
"clear all entities in this area" call was missing resource
entities, so as the platform grew with research it would
silently sit on top of iron / copper / coal patches.
Version: 2.0.26
Date: 26.04.2026
Changes:
- Dwarf planet enlarged from 192x192 to 384x384 (12x12 chunks).
At 192x192, biter nests refused to spawn -- between the
starting-area exclusion and the placement algorithm's minimum
chunk requirements there wasn't enough room. 384 keeps the
planet visibly bounded (you walk across it in under 30
seconds) but gives biters enough chunks outside the safe zone
to actually place nests.
Version: 2.0.25
Date: 26.04.2026
Changes:
- Removed back-to-back planet category rejection (was added when
peace and resource planets came out waterless and unusable; no
longer needed now that water generation is fixed). Same-
template-twice-in-a-row guard is kept.
Version: 2.0.24
Date: 26.04.2026
Changes:
- Dwarf no longer overrides biter strength. Biters are at full
Nauvis density again -- the small map is the gimmick on its
own.
Version: 2.0.23
Date: 26.04.2026
Changes:
- Dwarf shrunk to its practical minimum: 192x192 (6x6 chunks).
Resource frequency increased from 0.6 to 1.5 so on a tiny map
all six resource types reliably appear. Safe-zone radius
dropped to 0.1 so biters still get spawn room.
Version: 2.0.22
Date: 26.04.2026
Changes:
- Dwarf shrunk to 256x256 -- 8 chunks across, 4 from spawn. With
the platform on its own surface, dwarf becomes more of an
"extraction outpost": land a few harvesters, grab what you
can, warp away.
Version: 2.0.21
Date: 26.04.2026
Changes:
- Dwarf shrunk further: 1024x1024 (~32 chunks across). The map
edge is now reachable on foot in a reasonable amount of time.
Version: 2.0.20
Date: 26.04.2026
Changes:
- Dwarf redesigned. The previous version was just Nauvis with a
few stat tweaks; the description "compact, claustrophobic"
had nothing in the world to back it up. Dwarf now generates
with a real 2048x2048 bounded surface -- you can see the edge
of the world in any direction. Inside that small space:
denser resources, more frequent cliffs, smaller terrain
features, cramped starting area. Biters are kept at half
strength because there's nowhere to retreat to.
Version: 2.0.19
Date: 26.04.2026
Bugfixes:
- Dwarf no longer comes out 98.8% water. The previous water
formula forced binary results (all water or all land) for
every non-default value, which was fine for ocean and barren
but way too aggressive for "compact world with lakes." Dwarf
should now be Nauvis-style terrain with slightly more lakes
than default.
Version: 2.0.18
Date: 26.04.2026
Bugfixes:
- Built-in planet templates re-sync on every load now, not just
when Factorio detects a configuration change. Saves that
previously migrated under a buggy older version of the
migration logic would otherwise stay frozen on the same
template definitions forever.
Version: 2.0.17
Date: 26.04.2026
Bugfixes:
- Existing saves now actually receive planet template updates.
Until now, changes to dwarf, ocean, etc. only applied to
brand-new games; old saves kept whichever template
definitions were stored the first time they loaded. Mod-
version bumps now refresh every built-in template. Third-
party templates from other mods are left alone.
Version: 2.0.16
Date: 26.04.2026
Bugfixes:
- Ocean is finally an ocean. Water amount is now controlled
through the elevation noise expression (the one Nauvis-style
tile selection actually reads). Side effect: planets that
explicitly request a non-default water amount (ocean, barren,
rogue) get flatter terrain. That's intentional -- water-or-
not is the gimmick on those, not hills.
Version: 2.0.15
Date: 26.04.2026
Bugfixes:
- First attempt at strengthening ocean water generation. Wasn't
enough on its own -- see 2.0.16 for the actual fix.
Version: 2.0.14
Date: 26.04.2026
Code quality:
- Audited every planet modifier for Factorio 2.0 compatibility;
cliff settings, daytime, and pollute are now hardened against
malformed input. Day/night convention is documented (0 =
noon, 0.5 = midnight). No observable change for normal play.
Version: 2.0.13
Date: 26.04.2026
Bugfixes:
- Ocean now writes the water_level expression Factorio 2.0
actually consumes (the legacy "water" field was silently
ignored on surface creation).
- Dwarf finally feels compact: smaller terrain features,
cramped starting area, lots of small lakes. Previously it was
just Nauvis with weaker biters.
Version: 2.0.12
Date: 26.04.2026
Bugfixes:
- Fixed a crash on player respawn (and a few other call sites)
that reported "bool expected, got number". A few legacy calls
passed the number 1 where Factorio 2.0 strictly wants `true`.
Version: 2.0.11
Date: 26.04.2026
Bugfixes:
- More world-generation fixes. Several map settings need string
values where the old code wrote numbers (which 2.0 silently
drops). Affected: starting_area, terrain_segmentation,
jungle's moisture/temperature/aux. Those modifiers now
actually take effect.
Version: 2.0.10
Date: 26.04.2026
Bugfixes:
- The real fix for "iron worlds (and others) had no water." The
internal cache used to look up tile/entity/decorative names
was reading from the wrong tables (runtime settings instead
of prototypes) and silently coming up empty -- so the nauvis
modifier dropped water, grass, dirt, and several other tiles
from generated planets. Cache now reads from the canonical
2.0 prototype tables.
- Existing saves with broken caches will rebuild themselves on
first load after this update.
Version: 2.0.9
Date: 26.04.2026
Bugfixes:
- Ocean had 0 water. The template was asking for water=100000
and Factorio 2.0 silently clamped that to 0. Lowered to value
6 (very-high). (Note: this was an early attempt -- full ocean
fix landed in 2.0.10/2.0.13/2.0.16.)
Version: 2.0.8
Date: 26.04.2026
Changes:
- More variety on consecutive warps. Two new planet-roll flags:
* "peace" prevents two calm worlds (uncharted, average,
barren, ocean, dwarf) back-to-back, so combat is regular
between them.
* "resource" prevents two resource-rich worlds (rich, iron,
copper, coal, stone, oil, uranium) back-to-back.
Version: 2.0.7
Date: 26.04.2026
Code quality:
- Removed a large amount of dead commented-out code left over
from Factorio 1.x. No behaviour change.
Version: 2.0.6
Date: 26.04.2026
Locale:
- Full German translation pass: HUD buttons, mod-setting
descriptions, planet names and descriptions, and the in-game
lore rewritten into natural German with consistent
terminology (Loader -> Lader, Beacon -> Modulträger, Etage/
Deck -> Ebene, Taschendimension -> Erweiterter Stauraum).
Version: 2.0.5
Date: 25.04.2026
Bugfixes:
- Initialisation typo that left the warp-time-left value
uninitialised.
- Inverted votewarp validation that wiped valid players' votes
on init.
- Single-player warp button now fires the warp_started custom
event, so other mods listening for it actually receive it.
- Auto-warp countdown displays the correct time right after a
warp, instead of an absolute tick value for ~1 second.
Version: 2.0.4
Date: 25.04.2026
Bugfixes:
- Warpzone HUD counter no longer goes stale; it refreshes every
tick.
Changes:
- Two consecutive warps will no longer pick the same planet
template.
Version: 2.0.3
Date: 23.04.2026
Bugfixes:
- on_load no longer crashes ("attempt to index global 'game'").
The planet engine was doing too much work during on_load;
storage writes, events, and game access are now restricted
to on_init and on_configuration_changed, as Factorio
requires.
- Data-stage crash when loaded alongside mods like miniloader
that modify accumulator circuit connectors.
Changes:
- Internal mod id renamed to `warptorio3_2` to match info.json.
Requires a new game.
Version: 2.0.0
Date: 09.05.2025
Major changes:
- Updated to Factorio 2.0 (thanks to Shadow_Man).
- Space Age is not supported. Elevated Rails and Quality are
supported.
- New game recommended. No migration support for previous
savegames.
Changes:
- Added custom Warptorio2 intro text and victory screen.
- Some technologies' research costs adjusted to better match
similar vanilla techs.
- Some recipes with non-stacking ingredients now require only 1
of those ingredients.
Version: 1.3.11
Date: 18.2.2024
Changes:
- Added a mod setting to disable stair sprites.
- Changed default provider chest to passive provider by popular demand
- Slightly increased the chance for loot chests to spawn and added a setting for it
- Changed warp reactor specific heat from 10MJ to 1MJ to address heat distribution issues
- Updated heat related code to better respect specific heats (Thanks chingis_khagan!)
Version: 1.3.10
Date: 8.5.2023
Changes:
- Fixed crash when setting warp target to homeworld or nauvis.
- Fixed the Charting ability where the button wasnt adding to the hud and wasnt spawning invisible radars on the factory and boiler floors when the research finishes.
- Fixed two Typ"};o's in the Warptorio Lore messages (Thanks Honktown!)
- Fixed Warp Armor and Warp Accumulator tech icons (Thanks Knofbath!)
- Removed incompatibility flag with Rampant because Rampant now has multi-surface compatibility.
- Removed placeable-by on warp pipes to prevent accidental placement of them.
- Buffed Warponium Fuel Cells, they are now more accurately 4x more powerful than a typical uranium fuel cell as originally intended (Thanks Knofbath!)
- Buffed Stabilizer ability and rephrased its description for clarity
- Updated to Factorio 1.1.80
Version: 1.3.9
Date: 5.7.2022
Changes:
- Fixed a bug with warp pre-charge speed upgrades where upgrading made pre-charging slower
- Fixed the harvester loaders bug + migration with help from community (Thank you!)
Version: 1.3.8
Date: 8.4.2022
Changes:
- Typo
Version: 1.3.7
Date: 7.4.2022
Changes:
- Lib bugfix related to cloning spider legs
Version: 1.3.6
Date: 7.3.2022
Changes:
- Fixed green wire circuits not connecting between stairs + migration
- Fixed void tiles not being placed if the platform warps away without you
- Added fix for crashes related to warp loaders & filters with help from community (Thank you!)
- Teleporter gate now has flying text when logistics cannot be placed instead of a global message.
Version: 1.3.5
Date: 13.3.2021
Changes:
- Fixed multiplayer crash, missing nil check on updating ownership and connection of cloned spidertrons to the remotes in players inventories between warps.
Version: 1.3.4
Date: 30.12.2020
Changes:
- Factorio 1.1.6
Version: 1.3.3
Date: 3.12.2020
Changes:
- Factorio 1.1
Version: 1.3.2
Date: 4.11.2020
Changes:
- Spidertron can now travel through stairs (cloning method)
- Fixed decoupling of spidertron remotes when warping/cloning
- You now remain in your spidertron when warping.
Version: 1.3.1
Date: 25.8.2020
Changes:
- Basic fixes for warp loaders
- Fixed spidertron being lost between warps
- Fixed a crash when using steel loader chests
Version: 1.3.0
Date: 8.8.2020
Changes:
- Fixed rails not being affected by logistics upgrades
- Made hazard tiles accurate and fixed hazard clearing crash
- typo causing crash on warp
Version: 1.2.9
Date: 2.8.2020
Changes:
- Fixed invisible radars & homeworld/platform teleport capsules
- e (typo)
- v (typo)
- Buffed stabilizer to 5% of regular platform pollution
- Fixed ability drain % texts and added setting
- Turned on warp blacklists for harvesters (fixes some mod compatabilities)
- Factorio 0.18.40
Version: 1.2.8
Date: 12.5.2020
Changes:
- Fixed a few bugs
Version: 1.2.7
Date: 7.5.2020
Changes:
- Warptorio Expansion Update
- Large changes to remote interfaces
- Moved planet rng settings to planetorio
- Fixed changing loader directions mid-game (top/bottom halves)
- Fixed a bunch of harvester bugs
Version: 1.2.6
Date: 13.4.2020
Changes:
- Factorio 0.18
- Added /kill command to suicide (if you get stuck on ocean planet)
- Added biter warping difficulty setting
- Added Nauvis to warp target list
- Added warp pipes to the Harvesters
- Full rework of platform tileing/upgrading system enabling the creation of multiple platform layouts.
- Full rework of planets system, exported to standalone library mod Planetorio enabling other mod makers to create new planets and use the planets/surfaces system for their own mods.
- Reworked Abilities: All abilities now use platform electricity (kept in the stairs) to function. Abilities are toggleable and drain energy over time. The amount drained is the same for all abilities, and it increases the longer abilities remain active. The amount of energy drained, and energy drain growth is applied for all abilities active at once (1x for 1 ability active, 3x for 3 abilities active). Drain amounts are based on a % of the total electrical storage capacity.
- Added a Platform Energy bar to the HUD showing electricity balance to help with using the new ability mechanics.
- Reworked Stabilizer Ability: Platform pollution, and pollution growth reduced to 25% while active.
- Reworked Radar Ability: Scans an outer ring every few seconds while active (takes longer each successive scan)
- Fixed a bug with warpchance setting not applying to homeworld rolls
- Fixed a bug with pollution not being removed from harvester floor
- Broke warp loaders
- Broke the Accelerator ability (it does nothing for now)
- Broke the warptorio remote interface (affects cross mod compatabilities)
- Broke functionality related to changing loader directions (top/bottom halves) upon the settings being changed mid-game
- Broke "unstuck" on platform entities, e.g. you can become trapped in teleporters as you unlock them.
- Broke hazard tile accuracy
- Probably broke more things.
Version: 1.2.5
Date: 13.11.2019
Changes:
- Harvester deploy typo x2 (?)
- Harvesters now ignore planet-side logistics/construction robots when deployed
Version: 1.2.4
Date: 13.11.2019
Changes:
- Fixed a divide by zero error
- Harvester deploy typo (?)
Version: 1.2.3
Date: 13.11.2019
Changes:
- Made "invisible" radars unminable
- Removed warpstation, warppipe and harvesters from circuit signals menu
- Added blacklists to harvesters
- Vehicles are now teleported between surfaces instead of cloned (AAI vehicles compatability). Not yet added to harvesters.
- Players are no longer teleported through platform teleporters if they are in a vehicle.
- Optimized teleporter code to save frames
- 10,000 Downloads Special: Compatibility with NewGamePlus courtesy of Bilka <3
Version: 1.2.2
Date: 31.10.2019
Changes:
- Added ability_used and ticktime to remote events
- Added remote functions to recall the harvesters and teleporter gate
- Added robots outside of platform carry between warps difficulty setting (disabled by default).
- Fix for harvesters being permanently lost
- Added Home Portal item that teleports you to homeworld
- Buffed warp module productivity bonus for consistency
- Added new remotes for mod managed tables
- Warp pipes are now automatically emptied if neither side is connected to another pipe
- Added sprite overlays to stairs to reduce confusion on where it will send you (alt-mode only)
Version: 1.2.1
Date: 10.10.2019
Changes:
- Harvesters now prevent players getting stuck when being deployed.
- Another loot chest typo
Version: 1.2.0
Date: 10.10.2019
Changes:
- Typos with loot chests
- Fixed harvesters "moving" players when recalled on warp
- Attempted fixes of harvester deploy bug
Version: 1.1.9
Date: 10.10.2019
Changes:
- Fixed votewarp bug
- Updated logistics research descriptions
- Fixed warp pipe temperature bug
- Added SpawnLootChest to remote interface
- Added setting to turn on/off loot chests
- Fixed a crash related to clearing mod composite entities (eg. mini-loaders)
- Added some missing modifiers to the reach distance research
- Added Warp Striders research
- Made a few early researches require the reactor reassembly project
- Made a few other small research tweaks
- Added steel chest to Requester chest type settings
Version: 1.1.8
Date: 2.10.2019
Changes:
- Attempted fixes of sound stacking problem
- Fixed platform turret warping alignment x2
Version: 1.1.7
Date: 30.09.2019
Changes:
- Reduced cost of Warponium Fuel Cells
- Fixed teleporter sounds
- Fixed warp beacon (?)
- Changed warp pipe pipette
- Fixed player leave/join affecting votewarp
- Increased default votewarp fraction to 0.51 and now rounds up. (2 players in MP requires both players to vote before warping)
- Fixed platform turret warping alignment issue
- Fixed factory floor early research tile alignment issue
Version: 1.1.6
Date: 30.09.2019
Changes:
- Fixed nauvis map gen settings not applying to uncharted planets and added copy_nauvis planet modifier.
- Fixed hazard tile indicator accuracy for stairs
- Fixed a bug with harvester recall and overlapping belts/entities being destroyed
Version: 1.1.5
Date: 30.09.2019
Changes:
- Made rotation checks more efficient
- Fixed Warp Rail logistics not being removed from blueprints.
- Fixed blueprints created from hotbar not being affected by blueprint checks.
- Mod Compatability attempted AAI Vehicles fixes
- Added toolbar and relating research for easy harvester and mobile gate pickup by popular demand
Version: 1.1.4
Date: 29.09.2019
Changes:
- Added "P" Planet Clock timer to Warp Combinator
- Added separate setting to disable biter waves (previously disabled under base expansion rate tickbox)
- Fix for harvester migration issue x3
Version: 1.1.3
Date: 29.09.2019
Changes:
- Fixed red X's in power statistics
- Made factory beacon research a bit more expensive
- Nerfed platform solar power by popular demand and added a difficulty setting
- Fix for harvester migration issue x2
Version: 1.1.2
Date: 29.09.2019
Changes:
- Fixed bug with abilities not resetting on warp
- Attempted more fixes of multiplayer votewarp
- Added some locale to Warp Reactor research level 6 and 8
- Fixed planet target dropdown unlocking early.
- Fix of harvester loaders migration issue
- Picking up harvesters now prevents inventory duplicates
- Tweaked sorting of harvester items and research (left is now on the left)
Version: 1.1.1
Date: 29.09.2019
Changes:
- Migration error x2
Version: 1.1.0
Date: 28.09.2019
Changes:
- Migration error
Version: 1.0.9
Date: 28.09.2019
Changes:
- Attempted fix of loader and boiler floor access migration issues
Version: 1.0.8
Date: 27.09.2019
Changes:
- Cleaned entity spam from circuit signals menu
- Mod compatability with Spell Pack
- Fixed Warp Loaders (old saves may need to rotate them to refresh/update)
Version: 1.0.7
Date: 26.09.2019
Changes:
- Planet API bugfix
- Removed some debug code
- Fixed migration power bug
- Fixed Warp Combinator alignments and bug with offset setting not applying
- Fixed Harvester alignment bug + tile migration
- Fixed bug with Harvester Combinators not moving for size upgrades
Version: 1.0.6
Date: 25.09.2019
Changes:
- Removed unused hazard tiles
- Moved Harvester Floor between boiler and factory, and adjusted research to match.
- Fixed Warp Accumulator recipe and item
- Fixed "Invisible" Radar being hidden by factory beacon/boiler substation upgrades
- Fixed minor factory floor misalignments + tile migration
Version: 1.0.5
Date: 22.09.2019
Changes:
- Fixed crash related to new blueprints thing
- Added Warp Combinators and related research
- Added Harvester Combinators and related research
- Fixed factory giga floors alignments + tile migration
Version: 1.0.4
Date: 22.09.2019
Changes:
- Fixed bug with teleporter gate not receiving power upgrades if logistics is blocked when it's placed
- Planet teleporter gate must now be rebuilt for logistics and loader upgrades to apply (prevents problems related to clearing space)
- Added fix for loader filters being lost between logistics and loader upgrades
- Fixed bug with players being moved between warps
- Fixed clearing bug with platform turrets
- Platform Structures are now removed from blueprints. This is potentially conflicting so there is a setting to disable this.
- New warptorio event handling. See remote.get_events() and remote.get_event(name).
Version: 1.0.3
Date: 21.09.2019
Changes:
- Added a bunch of remote api events for future implementation and slightly adjusted naming of existing ones.
- Fixed harvester logistics research crash
- Fixed boiler floor, water and giga alignment issues + tile migration.
- Mod Compatability bugfix for ModMash
- Fixed tile migrations clearing harvesters
Version: 1.0.2
Date: 18.09.2019
Changes:
- Fixed west harvester bugs
- Fixed east harvester loaders research bug
- Fixed boiler giga floor bridge alignment bugs
- Fixed bug with level 0 (entry) platform turret research not placing tiles on planet
- Fixed bug with harvester logistics not clearing space for loaders correctly
- Fixed boiler water alignment bugs
- Added tile migration. Saves may take a while to load.
Version: 1.0.1
Date: 17.09.2019
Changes:
- Fixed beacon issues
- Fixed carebear chest
- Attempted fix of logistics research occasional crash
- New thumbnail.png
Version: 1.0.0
Date: 15.09.2019
Changes:
- Fixed clearing alignment bug of platform circles
- Added migration to recall harvesters aiming to fix loader and alignment issues
Version: 0.9.9
Date: 15.09.2019
Changes:
- Fixed issue with reactor upgrade destroying teleporter
- Fixed bug with planet teleporter gate not using energy upgrades
Version: 0.9.8
Date: 15.09.2019
Changes:
- Fixed sizing bug for platform circles
Version: 0.9.7
Date: 15.09.2019
Changes:
- Fixed typos with carebear chest
- Adjusted size of harvester platform borders
- Added (up to) 3 loaders to the harvester platforms which are always connected to harvester floor.
- Harvesters are now recalled when the interior portal is mined (if deployed)
Version: 0.9.6
Date: 13.09.2019
Changes:
- Fixed harvester pickup portal bug
- More typos
Version: 0.9.5
Date: 12.09.2019
Changes:
- More typos
- Attempted fix of harvester recall crash
Version: 0.9.4
Date: 12.09.2019
Changes:
- Fixed typos with pipe logistics and warpout
Version: 0.9.3
Date: 12.09.2019
Changes:
- More typos
Version: 0.9.2
Date: 11.09.2019
Changes:
- Fix for pipe logistics issue
- More typo fixes
Version: 0.9.1
Date: 11.09.2019
Changes:
- (Hopefully) fixed a crash relating to fluids
- Added fix for migration bug relating to power between floors
Version: 0.9.0
Date: 11.09.2019
Changes:
- Harvester Platforms now spawn on top of resources instead of transferring them to the harvester floor
- Harvester Platforms will now recall players on them if they're deployed when warping.
Version: 0.8.9
Date: 11.09.2019
Changes:
- Fixed typos breaking planet packs and alien biomes.
- Fixed typo with boiler research
- Fixed typo with autowarp timer
- Added a bunch of various functions to the remote interface.
- Attempted fixes to votewarp for multiplayer (untested)
- Fixed homeworld button
Version: 0.8.8
Date: 10.09.2019
Changes:
- Massive re-write and code cleanup
- Fixed bugs related to multiple planets (eg. homeworld plus platform) with special chunk generation functions interfering with eachother, particularly for multiplayer.
- Tri-loader now adds an extra belt pair to ALL stairs, making the central stairs have 6 belts instead of 4.
- New Harvester Floor below the boiler and a new relating gameplay mechanic.
- Made a bunch of things use locale for translation later
- Fixed the teleporter logistics blocked message on warp
- Moved first boiler room water research to blue science
- Fixed water placement bugs
- Made platform "turrets" research a bit cheaper, and moved the first level to green science.
- Broke Warp Loaders
- Slightly adjusted alignment of warp rails
- Made warp charge timer (entity counter thing) ignore surface/planet entities
Version: 0.8.7
Date: 26.08.2019
Changes:
- Added sound to warp button and a message for multiplayer
- Fixed a bug with planet selector
Version: 0.8.6
Date: 24.08.2019
Changes:
- More pollution nerfs
- Added pollution exponent multiplier setting
- Added pollution tick rate setting
Version: 0.8.5
Date: 22.08.2019
Changes:
- Teleporter hitbox adjustments
Version: 0.8.4
Date: 22.08.2019
Changes:
- Mod Compatability: Von Neumann Mod. Please use v0.0.3 that i have posted if you wish to play that mod with this one: https://github.com/abaines/Von-Neumann/issues/1
Version: 0.8.3
Date: 22.08.2019
Changes:
- Leftover test code
Version: 0.8.2
Date: 22.08.2019
Changes:
- Full mod compatability: Force Fields 2 - https://mods.factorio.com/mod/ForceFields2
Version: 0.8.1
Date: 22.08.2019
Changes:
- Fixed a bug with the Stone planet
- Review for multiplayer planet selection drop-down bug
- Mod Compatability: Added remote interface for other mods to prevent certain entities from being cloned by name
Version: 0.8.0
Date: 21.08.2019
Changes:
- Fixed a bug with circuits and loader chests
Version: 0.7.9
Date: 21.08.2019
Changes:
- New Planet: Smog Planet
- New Planet: Mirror Planet
Version: 0.7.8
Date: 21.08.2019
Changes:
- Mod Compatability: Alien Biomes - bug fixing
- More pollution nerfs (reset settings in existing saves)
Version: 0.7.7
Date: 20.08.2019
Changes:
- Nerfed Pollution Factor
- Fixed a bug with autowarp on/off
- New Planet Expansion Pack: DangOreus Planet
Version: 0.7.6
Date: 19.08.2019
Changes:
- Waterless, Biter, and "Rest" Planets can no longer occur twice in a row respectively.
- Moved the first teleporter research into it's own research
- Mod Compatability: Big Brother radars
- Mod Compatability: Alien Biomes - Fixed a bug with water not spawning on planets
- Mod Compatability: Alien Biomes - Fixed a multiplayer desync issue
Version: 0.7.5
Date: 17.08.2019
Changes:
- Fixed a bug with the warp target dropdown in multiplayer
Version: 0.7.4
Date: 17.08.2019
Changes:
- Added more mod remote commands
- Added tile overrides to disable certain tiles unless otherwise enabled.
Version: 0.7.3
Date: 17.08.2019
Changes:
- migration issues
Version: 0.7.2
Date: 17.08.2019
Changes:
- More bug fix
Version: 0.7.1
Date: 17.08.2019
Changes:
- Progress on mod compatability Alien Biomes
Version: 0.7.0
Date: 17.08.2019
Changes:
- Fixed gui not updating on autowarp settings changes
- Added a fix to make spawn area resources spawn further away from the platform as it gets bigger (this apparently did nothing)
Version: 0.6.9
Date: 17.08.2019
Changes:
- Mod setting for %chance of landing on selected planet
- Added Warp Portal item
Version: 0.6.8
Date: 17.08.2019
Changes:
- Fixed a bug with the warp charge timer
- Fixed a bug with the planets gui dropdown
- Fixed missing ocean planet description
- Planets API tweaks
- Fixed player corpse between warps
Version: 0.6.7
Date: 15.08.2019
Changes:
- Added fix for dropped items being lost on warp
- More 0.6.5 typos
Version: 0.6.6
Date: 15.08.2019
Changes:
- Added missing multiplier for original map settings starting_area and water
- 0.6.5 typo
Version: 0.6.5
Date: 15.08.2019
Changes:
- Fixed a big with picking up warp heatpipes
- Fixed a bug with the early boiler room water setting not working when starting a new map with it enabled (migration for this is done too)
- Added checks to ensure resource specific planets are not spawned if a mod is added that removes base game resources.
- Fixed a bug with modded ores not appearing on any planets
- Fixed interactions with Factorissimo2
- More progress on Alien Biomes compatability (trees and such should spawn now). It should only spawn nauvis-like planets currently.
Version: 0.6.4
Date: 12.08.2019
Changes:
- Fixed typos in 0.6.3
Version: 0.6.3
Date: 12.08.2019
Changes:
- Temporarily disabled loader mod detection
- Re-wrote the planet generator with improved mod compatability and improved api
- Tweaked a bunch of planet generation settings
- Added Uncharted planet
Version: 0.6.2
Date: 12.08.2019
Changes:
- Added mod compatability: Mods that introduce new/faster loaders will replace the existing platform loaders at logistics level 4. Exception: miniloaders
- Prep for mod compatible planet generator update
Version: 0.6.1
Date: 11.08.2019
Changes:
- Fixed a crash related to Alien Biomes
Version: 0.6.0
Date: 10.08.2019
Changes:
- Bug Fix
- More progress on mod compatability: Alien Biomes
Version: 0.5.9
Date: 10.08.2019
Changes:
- Completed Mod Extendable Planets.
- Official Warptorio2 Planet Pack: https://mods.factorio.com/mod/warptorio_planet_pack
- Progress on mod compatability: Alien Biomes.
- Progress on mod compatability for modded ores
Version: 0.5.8
Date: 10.08.2019
Changes:
- Added Biter Waves, ensuring biter attacks always happen
- Added Biter Wave difficulty settings
- Added a tiny bit of pollution to everything (such as chests, inserters)
Version: 0.5.7
Date: 10.08.2019
Changes:
- Adjusted spawn settings of the Barren planet
- Added Rogue planet
Version: 0.5.6
Date: 10.08.2019
Changes:
- Added votewarp multiplier mod setting
Version: 0.5.5
Date: 10.08.2019
Changes:
- Added nauvis_override to the modded planet api
- Added votewarp for multiplayer (untested)
- Reversed direction of logistics on north half of platform.
- Added mod settings allowing you to set the direction of platform logistics (north and south halves)
Version: 0.5.4
Date: 10.08.2019
Changes:
- Full factorissimo mod support
- Fixed a bug with the southeast and southwest warp rails
- Fixed a bug with corner stairs not benefiting from stairs energy research
- Known Issue: Multiplayer Desync related to cloning accumulators. This is a factorio bug: https://forums.factorio.com/viewtopic.php?f=7&t=74363
Version: 0.5.3
Date: 09.08.2019
Changes:
- Minor bug fixing
Version: 0.5.2
Date: 09.08.2019
Changes:
- Minor bug fix
Version: 0.5.1
Date: 09.08.2019
Changes:
- Minor bug fix
Version: 0.5.0
Date: 09.08.2019
Changes:
- Added expert difficulty mod setting: autowarp is always on
- Added more mod settings for pollution factor and biter expansion rates
- Small nerf to biter expansion rates
- Added auto warp time mod setting
Version: 0.4.9
Date: 09.08.2019
Changes:
- More work on remote interface for other mods to expand the warptorio planets table. Please refer to FAQ.
Version: 0.4.8
Date: 09.08.2019
Changes:
- Mod compatability with Dirt Path
- Added remote interface for other mods to expand the warptorio planets table
Version: 0.4.7
Date: 09.08.2019
Changes:
- Added mod settings weighted planet probability of occurrence
- Fixed a crash related to loot chests
Version: 0.4.6
Date: 09.08.2019
Changes:
- Added carebear difficulty mod setting: Early boiler room water
Version: 0.4.5
Date: 08.08.2019
Changes:
- Added carebear difficulty mod setting: spawns a loot chest of items you'll need to get you through the first few planets alive for those that need help.
- Reduced base autowarp timer to 20 mins to better match biter evolution in the early game.
Version: 0.4.4
Date: 08.08.2019
Changes:
- General code cleanup and organising
- Added mod setting to turn off autowarp earlier than reactor level 6.
- Added mod settings to change warp charge time calculations and ability cooldowns.
Version: 0.4.3
Date: 06.08.2019
Changes:
- Fixed mp issue
- Added more provider chest options
Version: 0.4.2
Date: 06.08.2019
Changes:
- Miniaturized the "invisible" radar.
- Added mod settings allowing selection of requester/provider chests used with teleporter and stairs loaders.
Version: 0.4.1
Date: 06.08.2019
Changes:
- Fixed a bug with warp rail loaders and chests not switching direction
Version: 0.4.0
Date: 06.08.2019
Changes:
- Reduced warp charge time growth
- Fixed a bunch of sizing and alignment issues
- Big code cleanup intended for improved mod compatability, performance and reliability.
- Reactor research tweaks
- Invisible radar to factory and boiler floors (requires charting).
- Fixed a multiplayer crash
Version: 0.3.9
Date: 06.08.2019
Changes:
- Fixed missing beacon levels
- Fixed some lag issues when staying on a planet for too long
Version: 0.3.8
Date: 05.08.2019
Changes:
- Added crash protection for mods that remove base game resources
Version: 0.3.7
Date: 04.08.2019
Changes:
- Fixed a bug with reactor removing itself between warps
- Fixed factory beacon placement issues
- Added changelog formatting for in-game viewing
Version: 0.3.6
Date: 04.08.2019
Changes:
- Slightly reduced final platform size upgrade
Version: 0.3.5
Date: 04.08.2019
Changes:
- More research tweaks
- Fixed a crash caused by even distribution mod
Version: 0.3.4
Date: 2019.08.03
Changes:
- Added homeworld
- Tweaked beacon research
Version: 0.3.3
Date: 03.08.2019
Changes:
- Pumps are now correctly removed from platform between warps
- Removed additional stairs belts, max is now 4.
- New space science: Warp Loaders.
Version: 0.3.2
Date: 03.08.2019
Changes:
- Fixed bug with giga boiler floors unlocking early
- Reduced cost of research
Version: 0.3.1
Date: 01.08.2019
Changes:
- Added caching for warp accumulators and heatpipes to save frames
- Added missing purple science packs to logistics research
- Fixed sizing and alignment of boiler giga floors
Version: 0.3.0
Date: 01.08.2019
Changes:
- Tweaked occurrence rate and zones of planets
- More pollution tweaks
- Tweaked axe speed, physical damage and warp beacon research
- Fixed random deaths when warping while you're standing on the edge of the platform
- Planets will now correctly copy settings from original map generation.
Version: 0.2.9
Date: 31.07.2019
Changes:
- Added Warp Accumulators
- Further tweaks to pollution settings
- Added alarm to auto-warp
- fixed logistics bots between warps
Version: 0.2.8
Date: 30.07.2019
Changes:
- Added some vanilla bullet damage upgrades
- Tweaked initial and stabilizer pollution settings
Version: 0.2.7
Date: 29.07.2019
Changes:
- Tweaked the Polluted planet
- Added Dwarf Planet
- Changed some planet descriptions
- Fixed a bug with logistics chests not functioning correctly between floors
Version: 0.2.6
Date: 29.07.2019
Changes:
- Reduced warp multipliers for end game planets
- Tweaked resource spawning on specialized planets and disabled spawn area resource removal
Version: 0.2.5
Date: 27.07.2019
Changes:
- Fixed a bug with placing the teleporter gate causes the platform teleporter chests to empty
- Slightly reduced warp robot speed bonus
- Fixed a bug with dual loader research not applying to boiler floor
Version: 0.2.4
Date: 27.07.2019
Changes:
- Fixed a bug with upgrading energy causing loss of logistics in boiler room.
- Made early game research slightly more expensive
Version: 0.2.3
Date: 27.07.2019
Changes:
- Mic Drop
Version: 0.2.2
Date: 27.07.2019
Changes:
- Major Branch split from warptorio_0.2.1. Credit to Nonoce https://mods.factorio.com/mod/warptorio
- Updated everything
- Fixed everything
- Finished everything
- Polished everything