Files
Paradise/code/modules/buildmode
Charlie Nolan d3584b1d1c LINDA -> MILLA (#25328)
* LINDA -> MILLA

* Tiles now change their atmos mode properly.

* Fixed a bug that made walls generate supercold air when deconstructed/destroyed.

* Apply suggestions from code review

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
Co-authored-by: GDN <96800819+GDNgit@users.noreply.github.com>
Signed-off-by: Charlie Nolan <funnyman3595@gmail.com>

* Begone, var!

* MILLA -> milla

* Lint.

* More lint.

* Prevent negative/NaN atmos from spreading.

* Made fires start more reliably.

* Undef what the rest should not see.

* Enums are nice.

* Match LINDA better.

* Debugging verbs.

* Debug verb fixes.

* Labelled more lavaland stuff with ATMOS_MODE_LAVALAND

* Block superconductivity on a couple more things for Lavaland.

* Updated milla.dll

* Lavaland map fixes.

* Missed a spot.

* Begone, var! (again)

* Add libmilla_ci.so for continuous integration tests.

* Install/contributing instructions for MILLA.

* Directional plasmaglass windows on shuttles shouldn't stop protecting from heat after moving.

* Banish bad naming.

* Better naming and debug stats for SSair.

* Apply suggestions from code review

Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com>
Signed-off-by: Charlie Nolan <funnyman3595@gmail.com>

* Magic numbers and formatting.

* Don't screw up the temperature during reactions.

* Efficiency and readability.

* Fix hotspots.

* Removed redundant safety (MILLA will already output an error)

* Optimizations.

* oops

* TGS build script update.

* Change API of gas_mixture and how you get one from a turf.

* Get in there.

* so many vars

* MILLA binary updates.

* Lint

* Made MT cost more honest.

* Gave MILLA a read-only mode.

* More read-only vs synchronized mode work.

* Even more.

* Synchronize disposals.

* Updated a bunch of stuff to use SSair.synchronize or GM.synchronize.

* MILLA <3 Tracy

* lint

* cargo fmt

* more lint

* Test needed MILLA sync.

* Silence atmos machinery that's behaving as intended, but continue objecting to other potential failures to synchronize.

* Push new MILLA DLL

* Build MILLA

* Update PR instructions for MILLA.

* Add some fancy plasmaglass windows to the Lifebringers' ship.

* The golems remembered that they should insulate *all* their engines.

* First round of TM bugfixes.

* Build MILLA

* fix two lavaland ruin turf types

* bunch more maps

* fixes milla ci and makes the interesting turf verb better

* Solid turfs can no longer conduct heat (for now...)

* Made indoor tiles in beach and winter biodomes not lavaland air.

* Re-added random IT teleport, adjusted warning message

* Fixed a tinted window on Lavaland to be a plasglass window instead.

* Made firelocks and holofans heatproof

* Made RPD auto-wrench pipes if you have a wrench in your offhand.

* Runtime fixes.

* Made visuals update more reliably.

* Lint

* Update .github/CONTRIBUTING.md

Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com>
Signed-off-by: Charlie Nolan <funnyman3595@gmail.com>

* Build MILLA

* The Syndicate have installed tiny fans on their research base.

* The syndicate have figured out how to make plastitanium windows heatproof.

* This is getting out of hand. Now there are two of them.

* Un-break the auto-wrenching that I broke before committing.

* Build MILLA

* Build MILLA

* Massive MILLA refactor, assorted bugfixes.

* Build MILLA

* Explicit typing.

* Less sleeping/blocking.

* Build MILLA

* Yes, yes, this part can sleep.

* Build MILLA

* SSair reporting improvements.

* Build MILLA

* Please do not dock twice and splat yourself.

* Build MILLA

* Pls to not make SM go nuts.

* Build MILLA

* Build MILLA

* Added stricter lower bounds on plasmafire, fixing perpetually-burning SM.

* Build MILLA

* Lint

* Temporary logging, begone.

* Build MILLA

* Prevent hotspot strobing.

* Add in radiate_to_spess behavior.

* Build MILLA

* progress

* Compiling is good.

* bugfixes

* Progress.

* Ruins update.

* This one exists.

* Fixup temporary hotspots to last longer than one tick.

* Add/fix comments.

* Cut the slash.

* Fix test.

* No sleep for you.

* Build MILLA

* Prevent nested MILLA safety from runtiming.

* Build MILLA

* Runtime fix.

* Build MILLA

* Fix canisters not updating icon when gas contents change.

* Build MILLA

* Build MILLA

* Fixed an issue that made mechs very cold on environment air.

* Build MILLA

* oops

* Build MILLA

* Walls can make loud noises again.

* Build MILLA

* Fixes a rare runtime.

* Build MILLA

* Update .github/DOWNLOADING.md

Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com>
Signed-off-by: Charlie Nolan <funnyman3595@gmail.com>

* Review suggestions

* Lint

* Build MILLA

* bound_mixtures now only contains mixtures that can be written

* Build MILLA

* Apply suggestions from code review

Co-authored-by: Matt <116982774+Burzah@users.noreply.github.com>
Signed-off-by: Charlie Nolan <funnyman3595@gmail.com>

* Build MILLA

* Restore the original async behavior of pyro anomalies.

* Build MILLA

* Build MILLA

* Make the safety assertion in /datum/milla_safe safer.

* Build MILLA

---------

Signed-off-by: Charlie Nolan <funnyman3595@gmail.com>
Co-authored-by: FunnyMan3595 (Charlie Nolan) <funnyman@google.com>
Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
Co-authored-by: GDN <96800819+GDNgit@users.noreply.github.com>
Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com>
Co-authored-by: paradisess13[bot] <165046124+paradisess13[bot]@users.noreply.github.com>
Co-authored-by: warriorstar-orion <orion@snowfrost.garden>
Co-authored-by: GDN <Roanrichards1@Gmail.com>
2024-06-09 07:18:11 +00:00
..
2024-06-09 07:18:11 +00:00
2020-03-17 18:08:51 -04:00

Buildmode

Code layout

Buildmode

Manager for buildmode modes. Contains logic to manage switching between each mode, and presenting a suitable user interface.

Effects

Special graphics used by buildmode modes for user interface purposes.

Buildmode Mode

Implementer of buildmode behaviors.

Existing varieties:

  • Basic

    Description:

    Allows creation of simple structures consisting of floors, walls, windows, and airlocks.

    Controls:

    • Left click a turf:

      "Upgrades" the turf based on the following rules below:

      • Space -> Tiled floor
      • Simulated floor -> Regular wall
      • Wall -> Reinforced wall
    • Right click a turf:

      "Downgrades" the turf based on the following rules below:

      • Reinforced wall -> Regular wall
      • Wall -> Tiled floor
      • Simulated floor -> Space
    • Right click an object:

      Deletes the clicked object.

    • Alt+Left click a location:

      Places an airlock at the clicked location.

    • Ctrl+Left click a location:

      Places a window at the clicked location.

  • Advanced

    Description:

    Creates an instance of a configurable atom path where you click.

    Controls:

    • Right click on the mode selector:

      Choose a path to spawn.

    • Alt+Left click a turf, object, or mob:

      Select the type of the object clicked.

    • Left click a location (requires chosen path):

      Place an instance of the chosen path at the location.

    • Right click an object:

      Delete the object.

  • Fill

    Description:

    Creates an instance of an atom path on every tile in a chosen region.

    With a special control input, instead deletes everything within the region.

    Controls:

    • Right click on the mode selector:

      Choose a path to spawn.

    • Left click on a region (requires chosen path):

      Fill the region with the chosen path.

    • Alt+Left click on a region:

      Deletes everything within the region.

    • Right click during region selection:

      Cancel region selection.

  • Atmos

    Description:

    Fills a region with configurable atmos. By default, ignores unsimulated turfs, but is able to "overwrite" the atmos of unsimulated turfs with a special control input.

    By default, fills a region with a breathable, standard atmosphere.

    Controls:

    • Right click on the mode selector icon:

      Set the following traits:

      • Total Pressure
      • Temperature
      • Partial Pressure Ratio (PPR) Oxygen
      • PPR Nitrogen
      • PPR Plasma
      • PPR CO2
      • PPR N2O
    • Left click a region:

      Fill the region with the configured atmos.

    • Control+Left click a region:

      As with the regular left click, but also "overwrites" the base atmos of any unsimulated turfs in the region - such as space turfs.

    • Right click during region selection:

      Cancel region selection.

  • Copy

    Description:

    Take an existing object in the world, and place duplicates with identical attributes where you click.

    May not always work nicely - "deep" variables such as lists or datums may malfunction.

    Controls:

    • Right click an existing object:

      Select the clicked object as a template.

    • Left click a location (Requires a selected object as template):

      Place a duplicate of the template at the clicked location.

  • Link

    Description:

    Form links between door control buttons and either airlocks or pod bay doors.

    The selected button will be highlighted, and visible lines will be drawn between the doors it is linked to and itself.

    Controls:

    • Left click a door control button:

      Makes the button active, and show what doors it is linked to.

    • Right click an airlock (requires active button):

      Links the airlock to the active button. Will remove all links from the button first, if the button is linked to pod bay doors.

    • Right click a pod bay door (requires active button):

      Links the pod bay door to the active button. Will remove all links from the button first, if the button is linked to regular airlocks.

  • Area Edit

    Description:

    Modifies and creates areas.

    The active area will be highlighted in yellow.

    Controls:

    • Right click the mode selector:

      Create a new area, and make it active.

    • Right click an existing area:

      Make the clicked area active.

    • Left click a turf:

      When an area is active, adds the turf to the active area.

  • Var Edit

    Description:

    Allows for setting and resetting variables of objects with a click.

    If the object does not have the var, will do nothing and print a warning message.

    Controls:

    • Right click the mode selector:

      Choose which variable to set, and what to set it to.

    • Left click an atom:

      Change the clicked atom's variables as configured.

    • Right click an atom:

      Reset the targeted variable to its original value in the code.

  • Map Generator

    Description:

    Fills rectangular regions with algorithmically generated content. Right click during region selection to cancel.

    See the procedural_mapping module for the generators themselves.

    Controls:

    • Right-click on the mode selector:

      Select a map generator from all the generators present in the codebase.

    • Left click two corners of an area:

      Use the generator to populate the region.

    • Right click during region selection:

      Cancel region selection.

  • Save

    Description:

    Captures a rectangular region in a .dmm format, which can be loaded back later using the "Place Map Template" debug verb.

    Keep in mind this feature is somewhat experimental, and may not always work.

    Controls:

    • Right click on the mode selector:

      Configure whether to save in either JSON mode or not.

    • Left click two corners of an area:

      Save the region to a .dmm file. You will be prompted for where to save this - a copy will be saved in the _maps/quicksave folder.

    • Right click during region selection:

      Cancel region selection.

  • Throwing

    Description:

    Select an object with left click, and right click to throw it towards where you clicked.

    Controls:

    • Left click on a movable atom:

      Select the atom for throwing.

    • Right click on a location:

      Throw the selected atom towards that location.

  • Boom

    Description:

    Make explosions where you click.

    Controls:

    • Right click the mode selector:

      Configure the explosion size.

    • Left click a location:

      Cause an explosion where you clicked.