* Implement map tests for catching common errors.
- Adds test runner:
- to make it easier to track things across test types
- for example to ensure a fully specified log can be emitted
- Adds map tile test type:
- when writing a test, coders implement CheckTile, which is
handed a single turf
- when the test runner runs these tests, it iterates over
all turfs in the specified z-level, and runs each test's
CheckTile on each turf in turn.
- Adds two sample map tile tests:
- check to see if a pipe exists on the same tile as a scrubber
or vent
- check to see if a tile contains two cables, each with a center
node
* Review #1:
- Replace nested loops over map tiles with `block`
- Remove check for valid turf in individual tests, I think it's safe to
assume `block` will always return legit turfs
- Added proper duration tracking for old tests
- Gave log file an appropriate extension
- Actually use `Fail` for tests
* whoops
* add more tests suggested by @Vi3trice
* Add some more tests courtesy @Bm0n and @Vi3trice
* windows are okay in space as long as it's nearspace
* Add failure threshold to prevent excessive logging.
Once this threshold is reached, a test will stop being processed for
every tile.
Note that this applies to `log_world` and `text2file` equally when
logging large amounts of failures.
* Document each test.
* Remove unnecessary reboot
* Let all map tests run to completion in CI matrix.
* I know what alphabetical means
* revolvers are balanced now, right?
* decreases metal cost per bullet from 5000 to 4000
* converts bullets to a new ammo box
* shut up Marmite (makes the revolver unrecyclable)
* Refactor announcements.
* Actually make this a unit test
* Dumb
* Remove unnecessary 'as text'
* Reviews:
- Make CSS class a recognizable word
- Flip the defaults for logging
Also:
- Style fixes (default null in fields)
- Fix emergency/crew-transfer shuttle announcement titles
* New jumpsuits
* ... and new softcaps
* New colors for jumpsuits
* New colors for onmob softcaps
* "New" softcap obj sprites
* Un-mirrors the N
* Swaps the green and lightgreen obj sprites around, oops
* Deconflict
* Tweaks obj sprites for softcaps a bit
* New softcaps for corgis
* 1
* expand radius
* added combat droid back, gotta test whether force_modules can let the ERT secborg in
* holy crap i think it might be ready
* Update code/modules/mob/living/silicon/robot/robot.dm
Co-authored-by: Sirryan2002 <80364400+Sirryan2002@users.noreply.github.com>
* Update code/modules/mob/living/silicon/robot/robot.dm
Co-authored-by: Sirryan2002 <80364400+Sirryan2002@users.noreply.github.com>
* change initialise to initialize, and update the sec/combat radial icon's name to be more self-explanatory
Co-authored-by: Sirryan2002 <80364400+Sirryan2002@users.noreply.github.com>
* Gee medbot! How come your mom lets you have 26 extra parentheses?
* Check order consistency
* Avoid searching through viruses if already treated for them
* Simplify assessment logic for custom beakers
* Simplify assessment logic for viruses
* Fix medbots not considering all of patient's viruses
* Bool readability
* Fix medbots ignoring viruses if patient has no damage
* Fix medbots not considering loaded beaker when assessing treatment for viruses
* Fix inconsistent virus check between assessment and medication logic
* Check order consistency 2.0
* Fix medbots getting confused when patient has regular drug but no beaker drugs
* Refactor patient assessment
* Condense a loaded beaker volume check
* Extract virus assessment into separate proc
* move along move along
* Update bot.dm
* Diagonals are now more expensive
* Update path.dm
* Update parrot.dm
* Update path.dm
* Tweaks
* Fix cleanbot, add path safety
* Tweaked, added a safety, removed the previous one
* Update medbot.dm
* path.len isn't very safe as a whole, floorbots also had order of operations wrong
* Update medbot.dm
* clings not even once
* Back to the drawing board
* Update path.dm
* Make mules actually clear the drawn path.
* Make bots use step_towards unconditionally instead of flipping between step_to and Move
* Making extra sure the path is cleared. Somehow path was left over.
* Check for length as get_path_to is always true
* This and that