* Fixes 6 pAI faces
PAIs are no longer coded to only recognize 9 emotions. This enables the use of the neutral, silly, nose, smirk, exclamation points, and question mark faces as a pAI. Before, those buttons did nothing.
* Fixes the PDA Halogen Scanner's tendency to be number one.
* Unfolded pAIs can be picked up
Because who doesn't want a robotic cat on their head? Adds in the missing code to allow pAIs to actually be picked up, and held sprites for the newer 4 chassis options.
* Adds the Gigaphone, a suped-up Megaphone.
* Constant Chip has a sprite
* Fireaxe cabinets find their fireaxes in initialize(), rather than new()
* Speeds up alcohol
* fixed mining cloak not being in loadouts
* Admin Supermatter Setup now closes the monitoring room shutters (#5442)
* Admin Supermatter Setup now closes the monitoring room shutters
* Fixes a copy-paste error
* Begins work on lightning.
* Fixes#5447 (Deadspy submap not overwriting mapgen) (#5448)
* Map fix
* fixed deadspy.dmm
* Added Squid plushies of varying colours
I added a few Squid plushies in different colours, changing the files code/game/objects/items/toys.dm
and obj/toy.dmi
* Added hat functionality to Squid plushies
I added the ability to wear my Squid plushies as hats. They're damn good hats.
* Replaces Skrell namegen (#5453)
Created a first name list for Skrell, to replace the syllable assembler.
Created a surname list for Skrell to replace the syllable assembler.
Replaced the Skrell namegen with pre-written namelists, instead of the old syllable assembler.
* Mechoid makes mistakes. Fix telepathic gigaphones.
* Lets people be colorblind
Adds four types of colorblindness to the traits in the setup menu - protanopia, deuteranopia, tritanopia, and monochromacy. Previously, there were ones defined in the code, but not actually usable to players.
* Whoops, worded that wrong
* Adds beams to the Type var list for View Variables.
* Unfuck my Master
* Adds beams to the Type var selection in View Variables.
* Finishes thunderstorms.
* Adds logging.
* APC Sprite Change
- Port from Virgo recolored slightly to match closer to the old sprite
- Addition of directional sprites for the APCs
* Refactors supply controller.
Supply consoles now run nanoUI
* Missing '
* [Excitedly updates changelog]
* btw i use arc
* Removes supermatters from cave PoIs.
* Holomap Port
- Port of Holomaps from Virgo
* Changing species (via ling or admin button) should no longer ruin your HUD
* Converts most istype(thing,tool) procs into an appropriate thing.is_tool() format
* Removes empty file, gives the QM a control console again (Was replaced with an ordering console)
* Hopefully fixes some tool-conversion things
* Makes the Northern Star still compile
* Keeps NS up to date
* Taj and Unathi should have explorer mask sprites now
* Corgi rune now summons the corgi in a flash of harmless lightning
* Forces mech construction to work with the is_tool() procs
* Various things and floors no longer associate with dirt
* MultiZ falling tweaks
* Fixes the clusterbang grenade
* Added new hairstyles
* Added new hairstyles
* Fixes spelling of Strike in Lightning Strike admin verb
* I don't know how we keep breaking falling
* Hallucinations now use the old system again, but with the more modern components.
* Ambience Refactor (#5476)
* Refactors how ambience is assigned, removes bad ambience, ports good ambience from tg
* Apparently that file is still used, not worth the salt to remove it.
* Changelog
* The speed-related chem effects are no longer a one-or-none affair, oxy causes slowdown
* Corrects noted issues
* Add some missing sprites for xenoarch excavation.
* Become thwarted, thot.
* Fixes the Ultra AC2's burstfire bug.
* The Major Bill's shuttle is actually contagious now.
* penguins are from earth
capitalize this, anewbe, i dare you
* Mechoid's a butt
* Adds new job/department specific teshari clothing to the loadout (#5481)
* adding the new department specific teshari outfits
* Slightly cleans up hooded suit code (#5471)
* FBPs can have brute damage repaired externally again
* Windoors fix
* Cleans up some largecrate code
* Weather refactor.
* NanoUI makes me sad.
* Drinking more booze gets you drunk faster
* Ports the supermatter grenade, supporting code
* May or may not make movement seem smoother
* Fixes the Sleepy Ring
* Partially ports the GLOB system
* Fixes the bug(s) that allow meat bodies to have metal brains
* ports VOREStation/VOREStation#4165 - i forgot to check if advanced who was a thing here
* Optimizes supply UI
* Transfer shuttle grammar fixes
* Fixes borked E and W fish sprites
* Fixes incorrect ETA in crew transfer announcement
* Mech Mini 'Revamp'. Will need playtesting. (#5480)
* Exosuits are now capable of holding more equipment, of specific types.
* Tweaks regarding feedback in staffside thread, other concerns.
* Tweak to be more consistent. Why did the Odysseus have two universals. Tweak to weapon restriction on Med - > Odyss
* Weapons only fit in universal combat slots.
* Adds smart magazine, magazine functionality
* Adds a new subset of grenades that shoot projectiles
* Low alpha now makes HUDs and tooltips not show up on you
* Fixes a UI bug with emptying currently-open bags into smartfridges...hopefully. (#5515)
* Update smartfridge.dm
* actually indicates which line solves the bug
* Adds a whole bunch of Exosuit weapons and other miscellaneous parts.
* Minifrags now use the small fragments mainly as they should.
* Iced beer no longer freezes you to 3 degrees C, which is enough to seriously burn a Skrell. Seriously, that's weird.
* Touch stuff in reference to responses.
* NanoUI now processes again
* Converts more simple_animal mobs to simple_mob
* Submap correction
For SPEEDYNESS
It probably works. I mean it's hard to sit there for 8 hours and test it. But it seems to work okay. At worst if it doesn't you'll have weather that doesn't make sense. ;v
* Renaming local var 'machines' to avoid confusion with the global var of same name.
* Delete the unused process scheduler machinery.dm file. Long since replaced with SSmachines
* Split and clarify global lists of processing vs non-processing machinery.
- Renamed the list of processing machinery from "machines" to "processing_machines"
- Added new global list "machines" to be a list of all machines.
- Since nearly every reference to machines actually wanted to iterate over all machines anyway, this works out great.
* Upgrades Planetary Weather to vis_contents
Makes the weather on Sif use vis_contents instead of overlays, which should fix all weather-related icon issues, and may or may not be faster.
Weather updates instantly now.
Fixes indoor PoIs having outdoor weather.
* Tries to appease Travis
Setting lights on every single turf takes way too long. Instead of havingto create a light source for every single outdoor turf, we find the corners to light up and apply the sunlight to them directly.
We also make sure to avoid having planet sunlight being 4x too strong, which would happen if we naively looped over all corners of all outdoor turfs.
Note: This has the side effect of making the sun's light and color ACCURATELY reflected on turfs. Previous code doubled up on light and appeared brighter than it should.
It previously had to iterate over EVERY task in its list every time. With lots of queued tasks that is slow.
Instead we sort it by schedule time. That means when iterating thru list, if we get to a single task that is in the future, so are all remaining.
Changes how lighting is applied to the Surface.
The current method works by making every tile glow in a specific color and intensity. The issue is that when it is time to change the color/intensity, it can take the light controller a considerable amount of time for it to update every tile (estimated to be around 14,000 tiles), which can take a minute or two for the lighting controller to finish.
New method is to have a special light source for the surface, with different properties to the 'regular' light source that most things use for making light. The special version doesn't care about line of sight or lighting falloff. This special light source is applied to a series of invisible 'sun' objects that get generated as the planetary controller gets created. When the lights need to change, the lighting controller has to change a much smaller group of objects instead of literally every outdoor tile.
* Replaces the shuttle_controller and shuttle process with the shuttles subsystem. Instead of docking ports being initialized by the game ticker, its part of the StonedMC Master init order.
* The main advantage of this is control over the initialization order, as well as letting Master be aware of CPU we're using up with shuttle processing.
* By being part of the Master init order, we reduce the uncertainty about "are objects initialized yet?" which is nice, since shuttle docks break if machines aren't finished initializing!
Mostly ports /tg/'s method of seeding submaps into specific z-levels.
Due to the low number of submaps present, all of the PoIs are guaranteed to spawn. As more are added, this should fix itself.
Also fixes various bugs with surface tiles, hopefully.
Adds some documentation to the map file system.
Adds a new 'plane' map, ideal for testing PoIs by loading them manually.
Makes space heaters glow orange.
Adds a new grille type for fancy surface windows.
Adds self planting hydro trays/dirts if a seed is on top of them when the map is loaded.
New lighting system is needed to handle updating literally 14k+ tiles whenever the sun moves. The straight port seems to have had no adverse effects from what I could see. Don't know if it's more performant but it doesn't seem to be less.
I didn't expect the latter would be needed for the former.
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.
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.
* 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.
* Optimized garbage collection of radiation sources until we get qdel() hints.
* Made the RADIATION_LOWER_LIMIT configurable (option for people to save some cpu time)
* Added some comments and broke the proccessor into separate procs for profiling purposes
* Added a changelog.
* The performance of the radiation controller as-is was not fast enough for inclusion in production servers, but it has some nice featuers, so rewrote it to be more performant.
* Instead of storing the radiation strength for every turf, we only store the sources of radiation, and calculate the strength only for mobs who might be in range.
* Old method was ray-tracing to every turf in range whether anything was there to be irradiated or not. Could be hundreds of turfs. New method only lazily calcualtes strength at a turf if we actually need to know it. Often times this is zero turfs if nobody is standing in engineering.
* Removed the automatic processing of objects with "rad_power" set. Objects are responsible for calling the repository to create/update their radiation sources. Saves some extra overhead that in practice was redundant with other process controllers.
* Also tweaked to be more respectful of qdel'd objects and added some comments.
* Creating new objects is cheap, in fact comparable to the cost of getting it out of the pool, so it doesn't help there.
* Placing items in the pool is far more expensive than letting them garbage collect due to the resetting of vars and such.
Controller with deferrals and SCHECKs to be specific. Won't lag while updating the sun, weather, or temperature.
Also moved some vars around. Namely the planet walls are stored on the planet, not in the weather_holder.
Planets now have their own turfs, the controller 'gives' them to the planets each cycle if there are any unallocated turfs in the global lists, to avoid iterating over other planets' turfs if you have more than one, then cuts the lists if you were crazy and some turf added some invalid type. This saves us type-checking in the for() loops later to make them crunch faster. The former operation should only happen once at the start of the game (and maybe very rarely when turfs are added/removed from a map during the game).
With regards to the temperature updates, rebuilding the zone entirely is an intensive operation. Instead we can use this new cheaty proc to do it from over here. ZAS code outside ZAS oh noooo. Well, the option is to snowflake this case into ZAS which is maybe worse?
Only downside to all this is that if you manually set weather and time it might take between 1-60 seconds for the controller to get around to checking if you wanted to update it. That's not that big a deal. If you really want you can now debug that controller and call doWork on it.
* If the "scheduler" controller is restarted by the process scheduler for
any reason, it will start throwing runtimes every status panel update
because the new replacement instance doesn't initialize its list of
schedule tasks.
* Fix that by copying over the unfinished list from the old instance, but
doing some safety checks to make sure it doesn't copy over bad stuff.
* Any nulls present in the mob_list would cause a runtime when checked if they are gcDestroyed. Add a null check.
* Noticed that the object controller has the same bug, might as well fix now too.
Adds what I hope to be able to make a sort of intelligent system that in the future will be able to decide what event would be the best to choose at any given moment. A lot of this will probably get rewritten later.
You can use the new debug verb Show GM Status to have it show some data about itself, such as player activity across the whole server.
Currently, the system cannot actually run any events, as they don't exist and it's been disabled. The plan is to have the events themselves do most of the heavy lifting for stuff like set-up and weights.
When the overarching system is more refined, a lot of new events will be madem and most of our old ones will be ported, and improved upon too.
For now, adding this lets me see what the system thinks about a round that has people playing on it and not just me on a test server.
``/mob/dead/observer`` -> ``/mob/observer/dead``
``/mob/eye`` -> ``/mob/observer/eye``
Reason being that they are similar in that they both don't interact with
the world in any way. Some procs were shared, some checks as well, and
it overall makes more sense this way. Plus, there were no ``/mob/dead``
mobs.