Ports the external URL preloading from tg-station. This allows us to point the config to an external URL, from which the .rsc file will be downloaded. This will be way faster than using the BYOND system, as we don't have to deal with BYOND's netcode.
This shit is just full of issues that keep popping up and frankly I can't be fucked to deal with them.
Note: I'll probably do the same thing again but very simplified later on. This iteration is a mistake in how much of a mess it is, unfortunately.
Now this might actually be the last of the ports before I actually code things I swear.
Ports Baystation12/Baystation12#25773 and adds sprinting by holding the shift key, also adding the option to add more movement intents for species with their own slowdown etc etc.
Adds a lock-up detecting profiler to the game, using BYOND's new programmatic access to the profiler.
The idea is that we have an SS that's roughly called every tick. This will detect a lock-up by using world.timeofday. There might be a small issue with midnight rollover but eh. Don't. Really care. A notice is printed for each printout. These can later be processed in Python.
The lifeless live again. Or in this case, what never actually lived here.
Ports Baystation12/Baystation12#17460 probably for real this time. What this allows us to do is create shuttles on runtime and make shuttles easier by just making landmarks and a shuttle instead of areas and shuttles. Also allows runtime landmark creation via flares or whatever AND allows shuttles to use different landmarks at will.
I removed most of the overmap stuff, I think. It shouldn't be hard to slam it in whenever we need to.
Changes:
"Shuttle code has been completely reworked."
"Shuttles can now be modified to have more than one destination."
"Shuttles now have a takeoff sound."
"You can now throw mobs against walls to damage them. A lot."
"You now need a neckgrab to throw mobs."
"BEING UNBUCKLED DURING SHUTTLE LAUNCH IS DANGEROUS! Don't do it."
"Adminghosts can now interact with all shuttles."
The C++ UDP logging library has been swapped out with a rustg implementation. The rustg library uses non-blocking IO mode, and hopefully has less trouble than the C++ one. Though we'll have to see. It should error when the call is supposed to block.
The old library has been removed.
Adds a system for autobanning IPs which abuse the world/Topic API. The implementation is very analogous to fail2ban. All bans implemented are removed at round end, or at the start of the next round. This is to stop the windows firewall from getting clogged to hell. The system respects whitelisted IPs.
tweak: "Security's base nonlethal equipment - tasers and rubbers - is now a bit better."
bugfix: "Fixed teargas doing practically nothing."
bugfix: "Fixed a lot of stuff not applying pain damage. Ow."
bugfix: "Fixed undefined values on the CMC."
bugfix: "Fixed dionae not regenerating damage."
Adds a new config option that subtracts a flat value from power when going across z-levels in in iterative explosion modes. This should make it easier to balance explosions across z-levels.
Loads custom synths from json or SQL as opposed to a txt file. Adds support for multiple borg sprites, ai chassis and custom ai hologram sprites as opposed to one sprite per player. Adds the ability to use custom pai sprites
Currently, DISABLE_DEAD_OOC is used as a singular toggle for determining whether or not ghosts can talk on both OOC and LOOC. This is undesireable, should we wish to only disable their access to LOOC via config.
This PR implements a DISABLE_DEAD_LOOC config flag, which explicitly restricts the access of dead people to LOOC. While leaving DISABLE_DEAD_OOC as its own flag for when we want to exclusively restrict global OOC.
view duty log verb and changes the way their recorder works.
CCIA recordings are now written to the database once the interview is complete (if enabled) and printed out.
Adds SSDocs, which manages randomly spawned documents.
These documents can be specified in a json file or in a database.
Adds /obj/random/document and adds /obj/random/document to the loot pool of /obj/random/loot.
Actually adding the notes to spawn is up to loredevs. If there are no notes to choose from, /obj/random/document will leave a blank sheet.
The notes can have HTML in them, meaning custom CSS and images. We're giving the loredevs a good bit of responsibility here.
Warning! Big Scary Change!
NTSL2+ is a re-work of NTSL.
The goals of this rework are to remove worries regarding server load, and make it impossible for a malicious program to crash the server.
The result is an asynchronous daemon based interpreted language, called NTSL2+.
The Daemon in question can be found Here
Features:
Programming Language worth considering a programming language
Limit-able execution - Unable to hold the server up
Runs on Modular Computers
Shitty in-game networking.
Players can finally write their own laptop programs I cannot stress that enough.
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().
When the round refuses to start because of a lack of players or lack of antags, it will properly state this instead of stating that there aren't enough players.
The Wizard gamemode, and the Ninja gamemode, both have restrictions that prevent the gamemode from being launched if there are more than 15 players, unless it was voted specifically.
DreamDaemon leaks memory between restarts, which might exacerbate us potentially running out of memory. This allows us to reboot the server every n rounds.
Also refactors the way we handle things that should be saved inbetween rounds. Like gamemode and the restart counter.
Adds Asteroid Dungeons framework to the game. Mappers can make their own asteroid dungeons to the game. Currently there are no asteroid dungeons that can be loaded.
Anyone can make a dungeon like anyone could make a change to a map. A readme file is included inside the maps directory for information regarding how to add your own dungeon to the map.
There's an added config function in the example config that determines whether or not asteroid dungeons spawn. I also included 2 bat files in mapmerge and mapmerge2 that backup the asteroid dungeons spawns so that they can be used in mapmerge.
Adds some features and fixes some shit:
Closing of tickets sent to Discord will now alert discord as well.
Adds a reminder period for tickets which starts after they're opened. It's intended to remind staff to close their tickets. Say, something like 10 minutes since opening sounds like a solid idea. If the staff who claimed it is offline, then all staff are reminded of it.
Adds the logging of all tickets to the database at the end of round. Sortable by staff closing, person opening, time opened, time closed, and round ID. This is primarily for Aboshehab.
This PR replaces recursive explosions with a new spreading engine: iterative explosions.
Should behave similarly, but also be more reliable, potentially faster.
Iterative explosions also support simple-explosion-esque directional explosion sounds/shake, and will now traverse Z-levels if the explosion is strong enough.
Also changes playsound() to transmit sounds across Z-levels. Uses BYOND's 3rd coordinate on /sound to make sound sound above/below the player if they're using headphones. Removed for now, can't get Z-falloff working right.
Fixes#2199.
In fealty of the Triumvirate, our undying Lords, and by the grace of the Administratum; I declare exterminatus upon Mixed Secret.
I hereby sign the death warrant of an entire gamemode, and consign a million pubbies to tears.
May Imperial justice account in all balance, the Triumvirate protects.
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().