Commit Graph

83 Commits

Author SHA1 Message Date
Aronai Sieyes
6ebd249748 Rewrite examine() to pass a list around 2020-04-29 16:42:50 -04:00
Aronai Sieyes
0d39c5535e Merge pull request #7200 from VOREStation/aro-offmap-rebase2
ITV Talon offmap spawn jobs
2020-04-13 09:28:19 -04:00
Leshana
865303e481 Removed area.uid var and /area/New()
- var/uid was used in only a handful of places.  Because areas are singletons
  it is safe to replace the uid with \ref, areas don't get deleted.
- And with that /area/New() is empty, we can remove it!
2020-04-12 18:05:09 -04:00
Aronai Sieyes
05f1aa7356 Convert some telecomms constants into defines 2020-04-11 12:03:10 -04:00
Atermonera
cbb40196fc Machinery: Always use update_use_power() 2020-03-23 23:21:10 -04:00
Arokha Sieyes
47ccc655db Deprecate the stream operator 2020-02-12 19:38:43 -05:00
Anewbe
f452e66934 Scrubbers no longer automatically scrub phoron (#5512) 2018-09-06 15:51:58 -07:00
Anewbe
729ce71aa0 Converts most istype(thing,tool) procs into an appropriate thing.is_tool() format 2018-08-02 21:45:15 -05:00
Leshana
776b221828 Rewrite pipe construction
- Moved pipe construction defines into __defines/construction.dm
- Unified pipe *unwrenching* by creating a standard proc along with the `construction_type` var.
- Eliminated the pipe fitting name & icon_state lookup tables by adding `pipe_state` var on atmos machinery and referencing that.
    - Each pipe which can be made from a fitting object should override `pipe_state` with the icon state to be used on the pipe fitting object.
- Eliminated the giant switch statement of doom in pipe construction by delegating that work to `on_construction` proc.
    - To make this work, every pipe must implement `get_neighbor_nodes_for_init` which returns a list of nodes which should be re-initialized on that pipe's construction.
- Combined the SCRUBBERS, SUPPLY and REGULAR pipe fitting classes together by storing the `piping_layer` variable and using the `setPipingLayer` procs
- Standardized the code for searching for node neighbors into the `can_be_node` proc.
    - This proc is also improved in that is a mutual check, `check_connectable` is called on BOTH objects, so they have to mutually agree to connect as nodes. Eliminates lots of special edge case logic.
    - Updated all the `amos_init` procs to use `can_be_node`.  In the most common cases, even that boilerplate code is consolidated into the `STANDARD_ATMOS_CHOOSE_NODE` macro.
- Implemented `pipe_flags` which lets pipes declare (or override) certain requirements.
- Adds a "pipe_recipe" datum to help out things that construct pipes.  By taking it out of the dispenser, we open the road for multiple dispenser types.  No, no RPD yet.  Soon.
    - Enhances the pipe dispenser to operate on pipe recipe datums instead of hard coded lists of pipes it can construct.   These datums are also (partially) initialized from the pipe machine types themselves, reducing having to define stuff in multiple places.
    - Switched pipe dispenser UI to use browse().   Not a NanoUI, but makes it a bit prettier with low effort.
    - Changed pipe dispenser to use a button selector to switch between Regular/Scrubbers/Supply instead of having separate list items.
- Added icon states to HE pipes to support the "connected on neither side" state.
2018-03-20 23:29:27 -04:00
Leshana
ab87edeae9 Fix construction of HE pipes, Vents, and Scrubbers Plus qdel issues.
The initialize() routines of HE pipes, vents an scrubbers need to be atmos_init() after all.
If you register yourself with radio controller you need to de-register yourself too.
2018-01-19 23:45:40 -05:00
Leshana
224fe42e77 Prepare Atmospherics Machinery for SSatoms (#4501)
* to_chat() replacement.

* Revert calling target.init_dir() before connecting.

* This change was added in https://github.com/PolarisSS13/Polaris/pull/3775 to counteract `dir` not being set prior to New() for dynamically loaded maps.  The root cause was /atom/New() not calling _preloader.load().  Undoing the change now that /atom/New() is fixed.
* The addition of the init_dir() proc itself however, is useful, because there ARE other times some atmos machinery will want to re-initialize its dir, specifically whenever it is rotated.
* init_dir() must be called in the constructor of all atmospherics machines capable of connecting to another.   Since it has to happen for ALL machines, lets move that call to /obj/machinery/atmospherics/New()

* Rename /obj/machinery/atmospherics initialize() to atmos_init()

* These days `initialize()` is used to handle general object initialization that is moved outside of New().  The node connection discovery of atmos machinery needs to happen after all that, and so needs to be in a separate proc.
* Make sure to actually call atmos_init during system startup.
2018-01-06 10:52:56 -06:00
Cyantime
82626c6936 Removes pipe pressure check copypaste. Fixes pipe caps to always be removable. 2017-09-09 21:24:52 -04:00
Neerti
99eb6f9404 Updates Tools
Adds toolspeed var, which is a multiplier on how 'fast' the tool works.  0.5 means it goes twice as fast.
Adds usesound var, which determines what sound is used when a tool is being used.
Changes a lot of code to use those two vars instead.
Adds 'ayyy' tools, which are ported from /tg/'s abductor gamemode.  They're currently admin only but I might make them obtainable by xenoarch later.
Adds powertools, also from /tg/.  CE starts with them in a new toolbelt that spawns in their locker, ported from (you guessed it) /tg/.
Changes welder sprites to look nicer, ported yet again from /tg/.  Modified the blue welder slightly so it can be the electric welder sprite.
Adds various sounds from /tg/, for tools and welders.
2017-08-03 04:49:23 -04:00
silveryferret
de8619bb11 Lets scrubbers scrub volatile fuel 2017-07-29 21:54:49 -04:00
Leshana
8752999a14 Atmospherics Destroy() cleanup - return qdel hints. 2017-06-05 23:01:39 -04:00
Yoshax
91e060621d Fixes scrubber Phoron scrubbing 2017-04-13 22:32:40 +01:00
Zuhayr
3b712adb5f Removed intact var in favour of is_plating() proc, fixed issues with invisible initialized pipes. 2015-08-16 17:51:19 -07:00
GinjaNinja32
63ea8338fb Merge remote-tracking branch 'upstream/dev' into span_class=notice
Conflicts:
	code/ZAS/Diagnostic.dm
	code/game/machinery/computer3/laptop.dm
	code/game/machinery/requests_console.dm
	code/game/objects/items/stacks/tiles/plasteel.dm
2015-06-05 00:49:13 +01:00
PsiOmegaDelta
6c903907c0 Merge remote-tracking branch 'upstream/master' into dev-freeze 2015-06-04 08:10:49 +02:00
mwerezak
17008aa7ed Copies vent pump hibernation over to scrubbers 2015-06-02 22:51:45 -04:00
GinjaNinja32
81d23c85cc code/ATMOSPHERICS \red \blue etc to span classes 2015-05-29 19:36:15 +01:00
Chinsky
ad67215b08 Merge pull request #9073 from PsiOmegaDelta/QDels
Implementing Destroy():s
2015-05-12 18:26:57 +03:00
PsiOmega
66ead991e7 Terminals, scrubbers, airlocks, and alarms get a Destroy() review. 2015-05-12 08:16:30 +02:00
Mloc
e602a7e286 remove the sub-area system
Removes area/list/related and area/master.
They were only used by the old lighting subarea system.

Signed-off-by: Mloc <colmohici@gmail.com>
2015-05-10 17:06:29 +01:00
PsiOmega
fcfdcecd3a initialize() should now always be called, be it on game starting up or object being created after game start.
Partially fixes #9036.
2015-04-30 19:28:35 +02:00
PsiOmega
1ae0ad6d92 Updates the atom_pool, now datum_pool, to handle any datum object.
Makes the garbage collector similarly robust. Continues the whole Destroy/qdel porting.
2015-04-24 09:59:05 +02:00
PsiOmega
d8a6576f36 Examination fixes.
Fixes #8491.
Fixes #8579.
2015-04-06 10:46:19 +02:00
Chinsky
2d03c412f7 Merge pull request #8182 from Neerti/2_20_2015_examine_tab_refactor
Examine Tab 2: Revenge of the Refactor: Reloaded
2015-02-22 11:32:32 +03:00
Neerti
3f16754e89 Third refactor for examine system! This time we go back to atom-var based system, but because strings are tabled, it's apparently okay.
The entire system is now self-contained inside a module folder.
Also fixes a runtime I made because ghosts lack a mind (and so do I)
2015-02-20 08:04:17 -05:00
PsiOmega
d32cffaefe NanoUI air alarm interface. Remote support lost. 2015-02-19 18:23:25 +01:00
Kelenius
37962065ae Adds oxygen and nitrogen to air alarm scrubber list 2015-01-16 23:02:55 +03:00
mwerezak
f9344a5a2d Atmos machine update
Takes a pass at updating ATMOSPHERICS to take advantage of the new powernet changes.

Also removes var/on definitions from many atmos machines. Machines generally shouldn't
be doing "on" things if they aren't using power, and most players don't expect a machine
to use power if it isn't "on," so I guess this is fair game.

Also, further refactoring.
2015-01-02 01:46:18 -05:00
mwerezak
d4a193808b Replaces awful connect type system with bitflags 2014-12-23 18:59:54 -05:00
PsiOmega
7ff2e4547b Scrubber Icons
Gives online scrubbers a slightly more appropriate icon while viewed in the map.
2014-11-14 18:48:56 +01:00
PsiOmega
bc438e21ad All the relevant examine changes. 2014-11-05 12:44:23 +01:00
PsiOmega
93ef5dbe2f Map fixes
Restores maintenance areas to the new variants.
The HoP's office is no longer a crew sleeping quarter.
Fixes disconnected power cables all over the place.
Connects the engineering power monitor to the main/red power grid.
Emergency shutters.
New icon for the research dock.
2014-09-24 15:59:08 +02:00
Zuhayr
0c83a95b90 Large merge resultion. Used remote for map conflicts. 2014-09-23 21:41:54 +09:30
mwerezak
aa46da51db Fixes #6419 2014-09-16 22:52:09 -04:00
RavingManiac
9801dfa9a9 NewPipe
-Supply and scrubber pipes can be run in parallel without connecting to each other
-Supply pipes will only connect to supply pipes, vents and Universal Pipe Adapters(UPAs)
-Scrubber pipes will only connect to scrubber pipes, scrubbers and UPAs
-Supply and scrubber pipes are offset along the x and y axes to prevent sprite overlap
-UPAs will connect to regular, scrubber and supply pipes, as well as anything else that connects to a regular pipe. UPAs will be used to interface between the supply/scrubber loops and atmos
2014-09-05 00:18:33 +08:00
mwerezak
018079beb5 Fixes gas mixture bugs, other bugs, and cleanup
In particular, gas_mixture/remove() was not accounting for
group_multiplier when determining the maximum amount of gas to remove
Also cleans up the interface for gas_mixture/heat_capacity().
2014-08-05 17:04:17 -04:00
mwerezak
b7c13bc4b6 Allows atmos helpers to be used with portable_atmos 2014-08-04 16:53:13 -04:00
mwerezak
a772d9094c Optimizes pipe network updating 2014-08-04 13:29:09 -04:00
mwerezak
14b57e3560 Pipe networks now cache their total volume 2014-08-03 22:41:31 -04:00
mwerezak
6eb2fe3028 Device working volumes are configurable from setup 2014-08-03 22:11:45 -04:00
mwerezak
3647fa4d7d Adds gas mixing proc and updates gas mixer
Also includes a whole bunch of fixes and updates for atmos machinery
2014-08-02 18:35:57 -04:00
mwerezak
d034511ee6 Updates gas filter 2014-08-01 22:59:13 -04:00
mwerezak
400c1b5cf6 Fixes mistake in scrubbing calculation 2014-08-01 19:33:57 -04:00
mwerezak
cb413454a3 Optimizes atmos machine power updates
Makes power usage but atmos machinery less accurate but reduces lag
somewhat.
2014-07-27 03:35:25 -04:00
mwerezak
293855c48e Generalizes pumping and filtering
So that people can pump and filter gasses without worrying about the
thermodynamics too much.
2014-07-26 16:15:40 -04:00
mwerezak
3f6c1ff622 Cleanup, adds setup parameters for atmos machinery
Allows atmos machinery efficiency to be adjusted in setup.dm
Limits flow rates when moving gas from a turf to avoid very high pressures being created when they shouldn't be.
Attempts to limit processing when there isn't much gas to be moved, for performance.
Reverts all changes to _gas_mixture.dm
2014-07-26 13:50:25 -04:00