* 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
* 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
* 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
* Atmospherics refactor
* META(GAMING)
* Cleanup
* RPD hotfix
* Fox review
* Do this
* Well that escalated
* Repath these
* Ah yes, scope creep
* Remove this comment
* Regression #1
* SSinput Rewrite, Custom Keybindings
* hmm yes, safety
* azerty begone
* address AA and SteelSlayer
* Address the old man
* what
* CI dbconfig too
* Address TM issues
Unicode support
Better numpad support
Fix no perms message
Fix modifier screwing movement
* pre-TM tweak, nitfix
* pre TM change 2
* Display others
* MERGE ME
* unduplicates your rows
* reverts some changes, makes this work for now (not TM safe)
* fixes direction facing, removes hotkey help item
* weird keys
* TM commit revert later
* fixed asay/msay keybind
* adds ALL the emotes
* flip and spin
* makes old people happy
* and fixes admins not being able to msay
* lets borgs stow modules
* saves prefs when someone changes a keybind
* reverts skin changes and manually applies
HEAVEN HELP YOU IF YOU USE THE DM SKIN EDITOR IT BREAKS EVERYTHING
* tidies menu, unduplicates rest
* sql file pls come back
* Update SQL/updates/40-41.sql
* why did you not throw an error?!
* inits keybinds if your prefs somehow fail, i guess
* restores these spaces, i guess
* fixes local testing, i guess
* emote cooldown returns (oops)
* movement lock improvements
* Pageup does Swap Hands
* LOOC
* whisper for living mobs
* oops
* fix dsay
* fix IPC silicon emote hotkeys
* category name
* backspace only clears if input is focused
* Makes TAB and BACKSPACE rebindable
* charlie review
* define move
* yeet
* Lewcc review
* brings back legacy mode
* restores legacy mode
* tell legacy mode what is going on
* Update code/controllers/subsystem/input.dm
* Update code/controllers/subsystem/input.dm
Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com>
* safeties!
* legacy mode is a pref now
* undo TM changes
* null prefs safeties
* Revert "legacy mode is a pref now"
This reverts commit b45af65139.
* revert this too thanks
Co-authored-by: mochi <shenesis@gmail.com>
Co-authored-by: dearmochi <1496804+dearmochi@users.noreply.github.com>
Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com>
* F3 debug menu
* Some tweaks
* So that escalated
* Update code/controllers/subsystem.dm
* Update code/controllers/subsystem/debugview.dm
* Charlie tweaks
* Fixes the sanity check used by atmos to only be run on init
- A few years ago, an optimization was added to cut the list of active
turfs when setup_allturfs was added, which assumed the proc would only
be run once, during atmos initialization. However, at this point in time
this optimization is obsolete, and it's since been changed to a sanity check.
Since this entire aspect of the code expects only to be run once,
during atmos setup, we can safely move it to atmos init instead, which
allows us to use the setup_allturfs function to also load maps without
issue, useful for quick loads like mining capsules or other such
things.
* Affected's tweak
* Fixes my tunnel vision
* Trivial casing tweak
* lessens the use of GLOB.landmarks_list
* delete redundant blob icon
* Apply suggestions from code review
Co-authored-by: moxian <moxian@users.noreply.github.com>
* review part 2
* aa review
Co-authored-by: moxian <moxian@users.noreply.github.com>