Repository navigation
Conversation
A captain whose ship sits in a player outpost's ship bay can spend ship parts to store it in one of three save slots. Saves live in a new player_ship_saves table (schema 5.35) with the map compressed by the database, and only small metadata is cached in the game. Retrieval comes later. A saved hull stores no per-machine data and comes apart into iron: walls and mineral floors drop iron, false walls and mineral doors save as plain iron versions, and valuable structures stay behind. Walls and floors now keep that through shuttle moves, which rebuild each turf from its type. Checkpoints of either kind now keep the ship's crew roster and class name. spend_parts() gives back earlier classes when a later class fails. Setting a new ship join password now costs ship parts; clearing it or entering the current one again stays free.
A save is used once and costs nothing to retrieve. The lobby loads the ship whole and seats the player; a shipyard console has drones rebuild it in the outpost's bay. A lock covers both paths, the console spends the save at the first piece and the lobby once the ship has loaded. The stock scrub and machine restore are now global procs so the lobby can use them. Saved ships come back at default tier with no plasma, no credits, vendors and console matter zeroed, and a default APC cell.
A second save or an in-round checkpoint no longer gives walls and floors their salvage back, mineral airlocks come apart into plain assemblies, and unfinished mineral airlock assemblies are not saved. The construction drone refunds a stripped wall or floor as iron. A room or turf type removed since a save is replaced in the map text with a plain ship room or plating, so the tile still loads. The lobby retrieval now runs on the save controller, so a player who leaves during a long wait cannot stop it before the save is spent. It refuses under the late join lag switch before starting, and reopens the menu if seating fails. A failed save insert logs a short line instead of the whole map. The full-slots text no longer says how many slots there are. Adds an in-game database test for the save store, and tests for the above.
Ship saves are now the only way to keep a ship. The console no longer stores checkpoints for credits or rebuilds them. Every capture strips salvage and keeps nothing per machine, so a rebuilt machine comes back at default tier with charged batteries and engine fuel. Construction builds straight from a snapshot it owns, and retiring the replaced hull moves to retire_replaced_hull() for the lobby to use. The Outpost Manipulator keeps rebuild docked, the free order, rush and the job list.
…loading A save now costs parts in the classes that match the machines on the hull, with a 5 part minimum and no cap. A survey of the hull's owned tiles gives the bill, mass, crew and a plan for the screens, and is kept with the row in a new summary column. Captains choose the slot and can overwrite a used one, which charges again and keeps the old row if the write fails. A slot stays locked while it is retrieved, written or deleted, and a slot that changes while the confirm box is open is refused. A save can be loaded in the round it was made once the ship it came from is lost or abandoned. The console and lobby both retire that hull and move its balance across.
Saved ships now go through crew registration on both load paths, a save made this round restores its own crew, and a refused registration leaves the save unspent.
… ship saves Credits stand in for misc parts only. Weapons, lab and cargo machines still need their parts, and in return a save keeps their stock part upgrades, the ship R&D server's researched nodes and completed experiments, and ship funds bought with trade parts. Also keeps restocked fixtures stocked after master's clear_stock and suit unit changes.
Defines for bands, effect tiers, triggers, energy kinds, pricing, research and dig sites; the artifact and effect types with the shared vars later parts read; the sale value and research point functions; the planet dig reserve and the specimen crate; and empty files for the dig, study, use, trade and Polaris effect parts and their tests.
Fifteen artifact shapes with idle and active states and a label sticker, assembled from NovaSector (artifacts.dmi states 7-13), Polaris (xenoarchaeology.dmi ano10, 70, 80, 120, 130, 140, 150) and Aurora (crystal_madness, with new active frames). All CC BY-SA 3.0. No Goon-derived states.
Artifacts roll a main effect by the band they were dug in and sometimes a minor second effect, each with its own trigger. A stimulus wakes a matching effect for a while; air and proximity triggers hold it awake while they last. Auras spend charge faster than it refills, pulses fire when the store is full, and touch effects act on whoever touches it. Ported from NovaSector with fixes: planet air is only ever read, oxygen and nitrogen triggers are gone, nothing generates free power, helpful effects never burst when smashed, healing shares one cap per person, harmful effects log like weapons, and the scan lock frees itself. Artifacts do nothing when crated or inside a trader outpost, can be bolted down, and are never saved with a ship. Each energy kind has its own glow, particles, light, hum and wake sound. Unit tests cover pricing, the effect catalogue, triggers, the lock, checkpoint exclusion, the healing cap, cleanup and planet air.
A lead-grey recolour of the plain crate with padded straps and a stencilled lid. A shut crate holding a find shows its field tag.
Each buyer gets a large-find row and (Barnaby, Boffin) a curio row on their wanted ledger. A large find sells when the seller hauls it to the counter, loose or in a shut crate: the trader looks it over, pays the sale value into the usual account, hands over a receipt in their own hand and says what they made of it. Vex adds a voucher for an extreme find. Undug finds are refused. Traders remark on finds hauled in. Outpost checkpoints turn back a loose find on the way in, with a line from the guard. Sales record the artifact_sold metric and send COMSIG_ARTIFACT_SOLD.
artifact_capped_heal() always asked for half brute and half burn, so a one-sided wound (most wounds) healed only half the amount asked. It now splits the heal in proportion to the brute and burn the target has. The cap and ledger are unchanged.
Twenty effects rewritten for tg from Polaris 6cd19fe0dec6 and VOREStation 9335d66b9fdf: extinguisher, animate, sweat, electric field, fortify, faraday, sprint, berserk, disarm, force walls, gaia, plasma vent, poltergeist, feysight, sleeping gas, life drain, gravity wave, spines, life steal and resurrect. Polaris modifiers become tg status effects. Gas vents are indoor only with a finite reserve; resurrect gives three lives and only to a body whose player can come back.
Sarge buys none, but now says where to take a find hauled up to her counter. Reword the loaded specimen crate's examine.
The harvester draws one awake effect off an artifact beside it into an exotic battery. Each find gives three harvests; one is spent when the first charge reaches the battery, and the find stays locked for the draw and is released on finish, halt and deletion. A stream of motes in the energy's colour runs from the find to the collector dome while it hums, and its window is a phosphor scope over a glass charge tube. The utilizer runs the battery's effect from the hand: a field or bursts for about six and a half minutes, or ten contact uses. It hums, glows and sounds in the energy's own colour and voice, logs whoever switched it on, and goes dark inside trader outposts. Its window is a single power button ringed by the charge. Batteries and utilizers are items, so ship saves delete them; a saved harvester comes back empty. Both are rated yellow in the gear catalog. Art is Nova's harvester, battery and utilizer sprites with tint masks drawn for the energy colours.
Credited when a Gorilla Arms, Mantis Blades or Widowline finisher lands.
Share one text field between CREWS and HOUSING, route the old join menu's outpost and ship password popups through the lobby code limiter, clear spawning_ship when a new hull can't seat its buyer, keep a refused commission's fit, return SHIPYARD to its front page when pressed again, limit the yard's DB refresh and the client metrics log, and tidy the bezel CSS comments.
…hecklist # Conflicts: # voidcrew/modules/unit_tests/voidcrew_zone_shops.dm
…re/tutorial-checklist
Give the Undertow checkpoint guard a desk instead of a window
…t open, give job names full width
…obby; keep one refund_parts
…ature/lobby-terminal
… failed open While the world initialises, send_assets() can sleep for seconds. Any message that reached the page in that gap rendered tgui before its first update, crashed the Window layout on the empty config and closed the terminal mid-open, so it never showed. The update is now queued first, open() notices a close during the sleep, and a failed open is retried a few times.
…ck terminal Every key, row, field and bezel button takes the focus on hover or with the arrow keys; Enter or Space presses it, Escape or Backspace goes back, Tab and the number keys change tabs. The terminal takes keyboard focus when it shows and hands it back to the map when it hides. The page plays short terminal clicks on each move and press. The crew record lists who is aboard with the captain first. The bill's totals are a parts table that can't overlap, and lists, names and descriptions on every screen are cut, wrapped or paged to their boxes.
The page can report itself visible while open() is still sending assets. Without the UI set, on_window_visible() took that for a stale page and hid the terminal over a working lobby.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Test-merge only. Do not merge.
#522 with #491 (ship saves) and the #520 test patch merged in, so they don't conflict on the test server. Both PRs had changed
spend_parts()and added arefund_parts(); this keeps #522's version and #491's admin alert on a failed refund. Close once #522 or #491 is merged.