Turns the z-level restriction procs into macros
Changes z-level restrictions to use the macros
Use contact_levels for announcements (instead of player_levels)
Restricts the teleporter to station_levels instead of player_levels
Restricts AI tracking to station_levels instead of player_levels
Mechs only get tracking beacons if they are on station_levels (instead of player_levels)
Construction Drones gib if they enter a station level
Mining Drones gib if they leave the station levels
Removes the mining equipment vendor from the scrapheap
Changed the spawning mechanics of hivebots and expanded their roster with three new types, Bomber, Guardian and Harvester.
Tweaked the slime infestation event to be a bit more colorful and spawn a couple more slimes than currently.
Made it so infestation events no longer trigger outside the station at shuttle docks,, inside xenobiology cells, substations, at centcomm or outside etc.
Fixed the prison break event from not working correctly with virology, added a chance for it to happen at the bridge.
Fixed some announcements missing their custom titles. Particularly those used by random events. Tweaked their font and size.
The evil will finally be defeated.
This takes security borgs out of the game entirely. They bring pretty much nothing to the table, in terms of either roleplay or positive influence to the station.
Also, combat and syndicate modules now have cuffs.
Replaced the hivebot sprites (Thanks to Kyres1) as suggested in this thread. https://forums.aurorastation.org/topic/11610-hivebotspace-bear-resprite/
Hivebot beacons now spawn in as one of three different variants, their only difference right now is the type of defensive weaponry they use. (Rapid firing taser, Radioactive/toxic beam or an incendiary beam)
Hivebot beacons keep track of their spawned bots, halting further spawns if the number of existing bots becomes that of the max allowed.
Added a red variant of the hivebot sprite, to easily differentiate between the melee and ranged variants
Hivebots are now affected by emps.
The timer now works properly, the hivebots will all not spawn at once.
New: Added a snoozing var, that if set to 1 will not allow the beacon to spawn bots until it has spotted an enemy. Will possibly be used in future mapping stuff related to dungeons and the like.
The balancing is something I'm torn on and will likely tinker with further in the future, pending feedback.
This PR will lead us towards the Promised Day, for in its wake there shall be much celebration and ecstasy as this world becomes a world suitable for developer hegemony. The first strike is thusly;
All << is converted into to_chat().
Adds a helper proc for money transfers between two accounts.
Cleans up the EFTPOS and cargo delivery code to use said helper proc.
Changes SSEconomy to use indexed lists for accounts and look up the accounts by accessing it via the index.
This PR makes it so that random lethal viruses can only occur if there is a virologist to cure them. This PR also makes it so the viruses themselfs don't have completely random effects, but effects that make sense together by adding a new system.
Okay, this update is kinda big. Summary:
- Trimmed unused keys in Exodus telecomms
- Adds script that will run mapmerge2 on Travis to check branch for unused keys or key overflow, etc.
- Fixes matching indentation style in tag-matcher and converts it to use Python 3.6
- Converts mapmerge2 to be used by Python 3.4 and above. Instead of 3.6
- Removes Windows 1252 characters from Communication-blackout.dm that were not able to be seen in UTF-8 format.
Note: the last commit will fail because currently main level is broken
Example of no map issues:

Example of issues:

Overview
Makes it so that the infestation overhaul is better coded and works better with any station. Instead of picking from a set of 8 areas (2 which don't exist) it picks from any of the station areas without players currently in them.
It also removes some of the more dumber spawns (yithians who exist in the sea, and diyaabs which I don't fucking know.), and replaces them with even dumber spawns such as BLUESPACE BEARS and HIVEBOTS.
Details
Spawns are based on event severity. A minor severity spawns mice and lizards. A moderate one spawns space bats and baby slimes. A major one spawns bluespace bears and hivebots. The chosen spawns can be any area on the station, however some places are limited. The limitation is based on area as well as if there are any players currently present in the area. Don't want bluespace bears to teleport on people.
-fixes #3766
-fixes #4619
-fixes #4842
-fixes #4948
-fixes #4439
-fixes some extra white pixels on the dead spider icon
-fixes the hacker event not taking people's money if it is a success
-fixes an oversight that allowed people to explode emmaged cyborgs using the robot console
-fixes messed up shotgun icons when wielded
-fixes the butcher knife sprite being messed up
-replaces all userdanger span class with danger, since userdanger is not really a thing
-vaurca should now spawn with proper survival gear, as requested by their lore person
-cleans up some martial art texts and logging
Converts the news network into a subsystem
Loads news from a database at the start of the round
No longer ties the PDAs to the tcoms system to access the news (which was broken anyway)
Removes the trivial news event
Adds the already existing virology / xenobiology containment events to the rotation
PROPERLY allows unathi to wear boxing gloves.
PROPERLY and completely removed the buckle resist cooldown by fixing code oversights.
Removes duplicate definition of ethanol in the scrubber alert reagent table.
Fixes Xenoarch floating light and clean tiles outside the airlock.
Overview
Now that when scrubbers hit you, you will breathe in the reagents along with digesting and touching them. Since breathing in is 50% more effective than digesting, this nerfs scrubber reagent potency by reducing the amount of chemicals each smokecloud has.
Also added the following reagents to reagent scrubber RNG:
paint, luminol, fuel, blood, sterilizine, ipecac
* Repaths eyes, observers, dview, and new_players to /mob/abstract subtypes.
* Adds /mob/abstract, a base type for 'abstract' mobs that aren't meant to be directly affected by the game world.
changes:
Maps are no longer compiled in, instead loaded directly from the DMMs at runtime.
Z level defines have been moved from the config to map datums.
Unit tests now use typecaches.
DMMS now actually works.
DMMS has been updated slightly.
DMMS is now capable of loading simple lists of non-text types.
DMMS is now faster when loading many types without mapped in attributes and when loading area instances.
Asteroid generation is now defined on the map datum instead of being hard-coded in SSasteroid.
Holodeck presets are now defined on the map datum.
Atmos machinery now uses Initialize().
Changes cargo to be based on credits instead of items
The following is still ToDo:
Test SQL Loading + Add flyway migration
Add changelog
Restore the PDA Application
changes:
Fixed#3203.
Tajara or Unathi CEs now get gloves that actually fit them.
OOs now respect direction changes from their mimicked object.
Replaced all references to trange() with RANGE_TURFS().
Replaced all references to is_type_in_oview() with locate() in oview().
Fixed a runtime caused by recursive explosions falling off the edges of the map.
Carp despawn now works properly with the new asteroid turfs.
Carp despawn now uses WEAKREF instead of SOFTREF.
Added tick-checks to the carp migration event.
Vaurca now have the IS_VAURCA reagent_tag.
Cleaned up butanol alien handling a bit.
-fixes being unable to slit people's throat
-fixes the sprite of make's custom item being wrong
-fixes the infestation event using the incinerator area, something that don't seems to exist anymore, it is replaced with the waste disposal now
Removes a whole bunch of in world loops.
Reworks SSmachinery to hold two lists: all_machines and processing_machines. all_machines contains all machines 5ever. All of them. Literally. Forever. And ever. processing_machines only contains machines that process with the SSmachinery controller.
I checked most types at runtime on the live server to see whether they're in processing_machines or in all_machines, and did debug to ensure that most machinery ends up and stays in all_machines.
Includes a basic UT to make sure all mapped in machinery types remain within the all_machines list post-init.
Ports Baystation12/Baystation12#12658
Changing how the calculation of armor works , instead of just being a check if it is protected fully, half or nothing. Making armor more reliable and less rng dependant.
Also, uranium meteors will irradiate nearby people when they explode.
changes:
Replaces a lot of in-world loops with more specific lists.
Recipes are now copied in SSmachinery/Recover()
Fixed bad sorting on all_areas list.
Added skeleton Destroy() to SMESes as they did not have one and are failing to GC.
Seems to shorten SSatoms init a bit, maybe from removal of in-world in MULEs?
changes:
Converted some list procs to macros (why the fuck was islist() a proc?!)
Removed some old sorting procs and replaced their few remaining calls with sortTim() calls.
The announcement system just got an upgrade.
Also made the delta siren more concerning.
And made a custom slightly annoying sound for the night mode announcement.