* goals initial
* Revamps Meteor Shield
Minor UI touchups.
Fixes DNA Vault completion check.
* Allows admins to varedit goal completion.
Does not clear dna probe on upload.
* Missed icons and template.
* Spelling, proper attackby returns
* Meteor shield emag effect only works when it's active.
* Admin panel for station goals.
* Some visual feedback and spans.
* Announcement now shows the goal name.
* Fixes
* Fixes and adminlog
* Tgui build
* Moves the information to intercept report except for admin spawned ones.
* Hidden Smuggler Satchels hidden beneath the station now persist between rounds, though there's no assurances of WHEN they'll appear next and only one will ever appear in the round.
NOTE THAT THIS PULL INTRODUCES A CRITICAL BUG, DO NOT MERGE *JUST* THIS PR, AWAIT THE FOLLOWUP
* Finishes up satchel persistence.
Satchels require at least 20 saved bags before any will start spawning.
the var persistence_replacement can be set to a path to replace a very high risk item with a lower risk look alike. This is currently done with the nuke disk, the wizards spellbook, and the uplink implant
* DESIGNATED.
REMIE.
PULL.
* Clockcult fixes and tweaks
* die but don't stay dead
* stay dead but never die
* instinct
* unreadable dark magic
* idiocy knows no bounds
* danger close
* like four fucking times faster
* superdynamics
Basically, they key difference between StonedMC and CarnMC is that when multiple ticks want to run at the same byond tick, we divvy up the tick between the subsystems, rather then allow one subsystem to hog it all.
The key difference between StonedMC and GoonPS is that we allow the subsystems to tell us how to divvy up the tick using flags and priority.
The new SS_ flags allows us to select behaviors that used to be piggybacked as side effects of dynamic wait or default but sometimes unneeded behavior.
Dynamic wait is 100% gone, lower priority and SS_BACKGROUND are better more refined ways of doing this when combined with MC_TICK_CHECK
I have by design never looked at the inners of goonPS, so this is all original code but I know it uses two loops because of comments by goon devs on reddit threads, that design didn't make sense before, but when I can tell a SS how much of a byond tick it is allowed to have, knowing how many need to run this tick is helpful I also know a bit more about how it works from piecing together comments in #vgstation.
Detailed list of changes:
Subsystems now have flags, allowing fine grain control over things like rather or not it processes, inits, rather it's wait is how long between runs (post run timing) or how long between starts, and rather or not late fires should cause the next fire to be earlier.
Mc now has two loops One loop handles queuing shit, one loop handles running shit.
MC now splits up tick allotment rather than first come first serve Subsystems can even request a bigger share using higher priorities. (It will even resume subsystems it paused if other subsystems hadn't used as much as it predicted they might need)
Default fps is now 20 This is related enough to the MC and it's a change that's really long since over due
All code oddities are most likely to be necessities to lower overhead on the mc since it runs every tick
This should enable more murder death kill at round end before the next round starts.
New servers will default to 90 seconds while old servers will default to the old 25 seconds until they import the config option to their server.
It would lock up the MC for 30 seconds while it was compiling, meanwhile ticks are queuing.
After the map was compiled, there would be 15 mob ticks, 15 object subsystem ticks, 15 mechinery ticks, 60 atmo ticks, etc all queued up and would attempt to fire all at once.
Beds (and chairs) now have buildstacktype and buildstackamount vars to handle how many sheets of what they should drop on deconstruction.
They also have a foldabletype var to handle folding into item (currently only used by roller beds) so that people can add foldable chairs in the future.
Fixes swivel chairs not dropping the correct amount of metal sheets.
Fixes some other potential issues coming from changing a few del() to qdel().
Fixes not being able to shoot mob on same tile as the shooter.
Fixes being able to shoot oneself by simply clicking our mob.
Fixes not being able to shoot non human mobs right next to us.
Adds a config option for the map rotation chance.
Ups default rotation chance from 50% of round length to 75% of round length.
Moves the procs around.
Adds two new admin verbs:
Force map rotation.
Change map.
- Fixed bugs with monkeyize/humanize: 7803 (humanized monkey nobloodtype)
- Fixes 9298 monkeyed ling have troubles humanizing themself (already fixed?)
- Fixes despawning clothes when monkeyizing. 11855
- Replaced check_dna_integrity proc by simpler has_dna proc when required.
- created set_species() proc
- fixed space retrovirus not transfering SE (despite having a domutcheck()). Still need to check if it needs a name = real_name.
- I renamed mecha/var/dna to dna_lock to avoid confusion
- I renamed an armor var in a species proc to armor_block to avoid confusion with species/var/armor.
- I removed many if(dna) checks in lots of files.
- I removed duplicate defense procs between human/proc/X and dna.species/proc/X since dna is now always set.
- Anatomic panacea from changeling removes alien embryo correctly. 6247
- Fixes runtime when trying to put dna-less brain mmi into a dnalocked mech.
- Removed carbon/var/list/features, we now only have dna.features and prefs.features
- Remove hulk mutation from lizards and other species (Fixed 6413); only real humans can acquire hulk. (less work on sprites for each ones, fixes lizard tail not in hulk color)
- Fixes cloning not setting up correctly dna UE and dna.real_name
- I fixed the issue with sucked+cloned ling being unable to absorb
- I fixed issue with changeling proc checking if they have the dna already not working.
- Fixed 4095, low health hulk with DAA getting stuck in loop of acquiring/losing hulk.
- I added a second layer for mutations to differientate mutations that go below and above the body layer (Fixes 7858)
- Fixes 10048, the transform to initial appearence button was fucking up the dna.
- Fixes cloning not setting up correctly dna UE and dna.real_name
- Fixed the issue with sucked+cloned ling being unable to absorb
- Fixed issue with changeling proc checking if they have the dna already not working.
- Fixed 4095, low health hulk with DAA getting stuck in loop of acquiring/losing hulk.
- Added a second layer for mutations to differientate mutations that go below and above the body layer (Fixes 7858)
- Fixes 10048, the transform to initial appearence button was fucking up the dna.
Removes the 20 second confirmation between prompts for the normal admin version of end round now.
If admins force end a round escape objectives will be good faith greentexted if the antagonists were still in a position to escape alive.
The survival rate will always be printed at round end now, even if the shuttle makes it to centcom (evac rate will be printed too in that case).
Players can join a queue that will notify them with a message and sound when a slot becomes available. First come first serve.
Players have approximately 20 seconds to join after the notification. Failure to join in that window removes them from the queue, to remove AFKers.
I haven't tested the code yet but it's basically done.