A null entry somehow got into ```player_list```, which caused an important proc called ```get_mobs_and_objs_in_view_fast()``` to fail. The cause appeared to be a brain mob failing to qdel, then failing to ```logout()```, leaving a null entry in ```player_list```.
```get_mobs_and_objs_in_view_fast()``` now makes sure every entry it iterates over exists, and this should fix the qdel issue as well.
As requested by a few staff members, this serves to keep the staffwho list more representative of who is actually available to help.
The current inactivity timer is rather generous so hopefully this won't impede admins who are actually there.
AOOC can be granted on a per-antag type basis. If the type has can_use_aooc equal to true, they can both use and see AOOC. It is true by default to allow for the upcoming Infiltrator type to automatically be able to use it.
The types disallowed from AOOC are ERT, Traders, and Renegades. This means admins can now use AOOC to talk to the real antags and not the ERT.
- Fixes pirate gun not getting 12g caliber correctly.
- Fixes .357 caliber not being named consistently with everything else.
(Do not merge this until
https://github.com/PolarisSS13/Polaris/pull/3533 is merged pls, unless
Yosh fixes his caliber to be correct also.)
- Changes .50AE ammo to .44 because that's more consistent with what the
gun is capable of in-game, because it uses the same damage values as the
.357 and not a bullet that shoots through through your fridge, through
your house, and hits your neighbor's home invader like a .50AE is IRL.
The fact that it's .44 makes much more sense. This is purely a fluff
change because it annoyed me.
- Fixes a bunch of ammo.dmi icon names and makes the file not a jumbled
fucking mess. This means now your 762 mags and the newly renamed 44 mags
will not be broken anymore.
Gives the research borg module the rapid part exchange device so it can
easily upgrade machines without having to take it apart and slowly put
the pieces back in (with some of these machines being bugged and unable
to be deconstructed like the circuit imprinter).
* Okay evidently walk_to(A, B) doesn't stop when A reaches B, but keeps running in the background forever until it is manually canceled! Therefore in order to be garbage collected, we must cancel walking on any object that might have initiated it.
* Fixes this on chemsmoke and spiders.
* The same story applies to walk_towards; fixed for dust, meteors and immovablerod, and also to walk_away; fixed for flashbangs.
* Also fixed chemsmoke actually getting qdeled at the right time.
In addition to fixing the problem, it makes sense. The observer pattern is overkill for an object type we own; doing it directly in Destroy() is more efficient.
I like the ones I wrote, but these are proooobably better.
They have normal units, which are worn on the back and you can grab the paddles out of to shock people.
Then there's compact units, which are worn as a belt, and serve the same purpose.
And finally there's the combat units, which allow revives through spacesuits, and have no safety so you can zap living people on harm intent (good for antags? CMO?).
These appropriately check for blood, a heart, etc. So, in that way, they're a bit more realisic than my original ones which I was sorta lazy in writing.
Emagging them turns off the safeties, allowing them to zap people who are still alive.
I actually cleaned up their sprite choice code a little and added a sprite for the 'combat' one since previously it was just the emagged sprite (flashing exclamation point). Now it's just got a red heart monitor, and the emagged ones keeps the exclamation.
Did make one balance change in that compact ones use twice the power (inefficient small capacitors? or something?).
* Fixes Baystation12/Baystation12/issues/17443 - Runtime in radiation.dm,30: illegal: sqrt(-2.857143)
* Updating radiation power to below zero should simply delete the source.
* Fixes at least one cause of Runtime in radiation.dm,41: Cannot read null.z in an effort to fix Baystation12/Baystation12/issues/17411
Shuttles now set themselves up upon being instantiated instead of relying on a monolithic proc in the shuttle controller.
Shuttles can now be defined more cleanly on a per-map basis, as well.
Accidentally fixes a broken admin shuttle.
* Hooks up informing Master the gameticker actually starts and stops the round subsystems will actually fire! What ho!
* We should convert the gameticker as an MC subsystem someday, and probably completely rewrite it while we are at it becuase it is crazy. But this should bridge the gap until then.