* 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
The way """we""" currently do it, each time you want to walk the queue
you're forced to make a copy in memory of the whole thing
There's no real reason to want this, so it seems best to just avoid it
entirely. It creates a TON of usage for no reason, and also risks a lot
of overtime since you can't really batch a list copy like that.
So instead let's just iterate over the length of the queue, constant
rather then O(N) time.
Similarly, rather then using an associated list in the form queue[ref] = gc time,
we could store queue entries in what amounts to a tuple.
This means no associated list stuff, so the operation of queuing becomes
cheaper, and pulling gc time similarly goes from O(log n) to constant time
I stole this work from myself and mso, tg pr 55595
I'm pring it here because I keep seeing affected complain about the
garbage subsystem and he refuses to do it himself. No I don't have an
ego problem I swear
* 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