Removes the phantom global definitions that Fowl found.
Fixes:
Game log in GELF not logging proper target.
Pylon attacks not detecting the actual firer of a damaging bullet.
A message in the mixer cooking machine.
A message in airbubbles.
A use_check sanity check in landmines.
Some messages in psych therapy code.
A view() checkk in psych therapy code.
CCIA being unable to announce incoming faxes in some circumstances.
Language whitelists potentially checking the whitelists of the last person to throw a tray in addition to the pref mob.
Fixes some messages/sounds with some custom items.
Fixes a message with digging into the asteroid.
Fixes electrocution code not properly checking for absurdly long hair.
Fixes a broken message in devour.
Fixes a targeting issue with player-controlled hostile ranged mobs.
Fixes failure behavior for modular RnD guns.
Fixes an intent safety check on gun aim.
Fixes the Harvester knock spell potentially not working.
This is honestly one of my biggest and most ambitious projects. I hope people are happy with this.
Custom kinetic accelerators are special, customizable mining weapons that are meant to give a sense of progression, and a sense of pride and accomplishment while mining. Each custom KA is made up of 3 or 4 parts:
The Frame (5 to choose from)
The Cell (5 to choose from, +1 traitor)
The Barrel (5 to choose from, +1 traitor)
The Upgrade Chip (7 to choose from, +1 traitor)
The sprites change with each addon, they are truly dynamic and there are so many combinations of parts that a miner can have. You can have several different builds for each desired mining style, it's quite a robust system.
You can have a KA that shoots slowly, but delivers high-penetrating shots that go through several walls of rock. You can have a KA that shoots REALLY fast, but precisely destroys 1 rock at a time. You can have an absolute canon of a beast, that destroys rocks in a 3 tile radius around it.
The parts can be obtained via research, via abandoned crates, or via RNG in the cargo warehouse. There are some custom KAs that spawn on the raider's ship, on the mercs ship, and a laser one on the merc's headquarters. That laser one can also be bought from the traitor uplink as well.
ERT get a class 4 KA for use in special operations, if they choose to use it.
Fixes#4780.
Fixes an issue where SA adult slimes were improperly considered organic mobs.
Fixes an issue where viscerators, malf drones, and spiderbots were not considered synthetic mobs.
This PR implements a system for manipulating a client's color safely and also ports a prioritization system for sorting client color from /tg/. Currently this PR also implements client coloration in the form of color blindness, namely:
Monochromacy
Deuteranopia
Tritanopia
Protanopia
DTP are mild brain traumas, whereas monocrhomacy is a severe brain trauma.
Furthermore, this PR removes the Needs Glasses prompt in character creation, and replaces it with a disability selector, allowing people to more closely refine their special little snowflakes.
Current disabilities available:
Nervousness
Nearsightedness
Deuteranopia
Tritanopia
Protanopia
Deafness
Muteness
Projectile hitscan effects moved to /effects/projectiles folder.
Most of projectile firing code and some of impact code refactored, and projectile hitscan effects refactored with ported TGcode (which is mostly TGcode I wrote anyways 😎)
Projectiles can now be fired at any angle, instead of just at the center of turfs!
Projectiles are now [in theory] 100% accurate down to 0.001 of a pixel.
A user ahelping creates a ticket. Any further ahelps while that ticket is open will go to that ticket (and either adminhelp or pm an admin assigned to the ticket, if one has taken it).
A user can close their own ticket up until an admin takes it.
Admins can take tickets either manually or just by replying to the PM.
An admin taking a ticket notifies other admins.
If another admin attempts to take or respond to an assigned ticket, they receive a notification asking if they would like to join the ticket or cancel (any number of admins can join a ticket).
When an admin finishes with a ticket, they must close it -- both for logistics and closure for the user.
If there is an open ticket assigned to an active admin, round end is automatically delayed (unassigned tickets or tickets assigned to disconnected or afk admins do not delay). Round end will automatically continue once all active tickets are closed.
Both staff and non-staff have access to a ticket panel listing tickets, their statuses, and their messages. Non-staff can only see their own tickets. This panel is optional and all features are available inline with chat.
changes:
The reagent and recipe lists have been moved fully into SSchemistry instead of a weird ref-shared global.
The reagent list is now sorted alphabetically, which should make dialogs that involve selecting reagents much nicer to use (such as Spawn-Chemical-Cartridge).
Butanol and Ethanol now share a parent: /datum/reagent/alcohol. Alcohol is an abstract type that won't be listed in any global reagent lists, and exists purely to pool code common to both butanol and ethanol.
Butanol-based drinks can now cause hallucinations, body temperature changes, and stimulation similar to ethanol-based drinks.
Reagent init is now in SSchemistry, both code-wise and init-stage wise.
* 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:
You can now select in preferences if you want to take a generic (grey) bag instead of your job-specific variant.
Cleaned up some leftover bagcode from before the bag type vars.
This PR adds 2 subtypes of industrial and two subtypes of baseline, one for each cybernetics manufacturer. Sprites by BRAINOS.
other changes:
IPCs can now be flashed or flashbanged.
Admin spawn paths have been added for subspecies that did not have them.
IPCs are no longer slowed by being cold.
changes:
Atlas now logs init time per DMM.
Map Finalization now separately logs finalize & asteroid generation time.
Added Z_ALL_TURFS() macro to get a list of all turfs in a Z-level.
Misc. performance optimizations for SSminimap init.
* Openturf icon fixes and improvements
* more things
* Remove some pointless/bad layering/planing
* yeah well I didn't need this anyways
* Refactor Z mimickry to be at /turf
* more refactoring
* Cleanup, use turf/flags instead of z_mimic_flags
* Fix turf/Entered()
* misc optimizations
* fixes
* Major icon smoothing optimizations
* Speed up boot some more
* Fix AO
* Remove some redundant code
* Tie Z-lights to Z-mimic instead of openturfs
* Fix an opacity issue with no_mutate turfs
* Fix some issues with Z-mimic AO not properly clearing
* Fix some OT->OT changetuf bugs
* Add helpers for changing Z-mimic operational state on turfs
* Fix some merge issues, change how F_CUT smoothhint works a bit.
* indentation
* SSopenturf -> SSzcopy
changes:
Overlays now creates less temporary lists.
Falling no longer queues unsimulated atoms that wouldn't fall anyways (incl. LOs).
Pixel-shifted AO is now cached too.
Changed some references to get_map_cell() to macro equivalents in random maps.
Added smoothing hinting to the icon smoother, allowing for major performance improvements in common cases.
Space initialization no longer involves appearance churn (and is much faster as a result).
-adds towels, which you can find at the fitness room, or at the loadout with whatever color you want
-adds new undershirt options at people's requests
-adds a colorable sweater to the loadout, from baystation
-adds more flower hairpin options
-increases the max loadout points by five
-fix an issue with the tactical armor having the holster overlay when it should not
changes:
Z-levels below the surface now use 'rocky' ash instead of ash turfs. (Sprites from TG)
Fixed an issue where openturfs would incorrectly inherit their mimiced turf's gender.
Tweaked the names & descriptions of sand (now ash) and rock.
Reduced some pointless locate() calls in icon smoothing code for turf paths.
Replaced the empty space map with runtime Z expansion.
Fixes#2756.
changes:
Light fixture overlays are now cached.
BlendRGB is now cached (used by light fixture overlays)
Nightmode now only tints the bulb instead of both the bulb and the fixture itself.
changes:
Rechargers now briefly show a progress bar showing the current charge level of the device currently charging.
Examining a recharger will now specify what is in the charger.
Atoms can now mark themselves as requiring an icon update on initialize instead of overriding Initialize() just to call update_icon().
Charger code is now slightly more modular, using proc/get_cell() to get a ref to the power cell instead of hard-coded if-else chains for each supported type.
changes:
Openturfs now properly handle recursive icon copy.
Openturfs can now have icons, for translucent or bordered turfs. This works with the smoothing engine (or anything really)
Added openturf debug verb that lists ordering of the openturf.
Openturfs can now mark themselves as solid, for things like windows or ice.
BSTs can now toggle falling for themselves.
Fixes#3488.
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().
(Rebased and reopened#3347)
Attempted to fix pipe and door rendering
Fixed Table, carpet rendering
Ported full map-capture tool from bay, with python script to merge captured images.
Ports Polaris' integrated electronics system, whichallows for Roboticists & Electricians/Engineers to build custom devices and machines for a variety of purposes.
changes:
use_check() will now show failure messages to the affected mob by default. It still returns the failure reason & permits disabling of messages via. the show_messages parameter.
Lockers now take 2 seconds to weld or disassemble.
A progress bar is now shown to mobs with the progress bars pref enabled while attempting to break out of welded lockers.
Mostly synthetic code cleanup, some tweaks to human examine and ID cards too.
changes:
Synthetic sprint procs have been compressed down to one proc for all machine subspecies vs. one per subspecies.
Synthetic sprint now only stuns synthetics with empty cells for 30 seconds for all types.
Refactored synthetic limb roboticization.
Changed how a lot of synthetic/industrial checks work.
ID portraits are now 128x128, and scaled without blurring.
Species can now specify an examine text color (for their species name) that differs from their flesh color.
Fixed some eye checks not respecting species.vision_organ.
Examine pulse-checking now uses do_mob & has a progress bar.
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.
Ports the messenger bags from baystation 12, also adds the syndicate and wizard version. And fixes some issues with some jobs missing the bag vars and miners not getting their industrial bags.
Makes /proc/gotwallitem use typecaches & a compile-time checked list of types instead of a list of strings. Probably faster, not that it really matters here.
Bunch of fixes and balance tweaks to the devour system. Notable changes are that xenomorphs can eat people again and that human-types no longer take ridiculous amounts of damage from devour.
changes:
Devour type checks now actually operate on species for human-types and are all-around hopefully more sane.
Replaced an obsolete define with a boolean.
Fixed xenomorphs being unable to swallow human-types.
Rebalanced digestion damage to not kill human-types in one tick.
Digestion now deals fire+brute instead of cloneloss (bite still deals cloneloss as I didn't touch its damage function)
Misc code tweaks.
Port of the merchant mechanics from baystation12.
All of the trader, prices and most essential system are done, as well the job datum and the like. Mapping the shuttle, the base and a new dock will be done in a later pr.
Also adds phazon construction and several other items used in this pr.
The chance of the merchant slow being open at round start can be changed via the config, it is 20% by default.
changes:
Fixed an issue where the segment count argument of orbit() was ignored, leading to the Tesla not animating as it was intended to.
Fixed an issue where /datum/event had two completely unrelated definitions (fixes#3192).
changes:
Progress bars will now stack if there is multiple ones on a single turf.
Progress bars' update speed is now mediated by stoplag() instead of arbitrary numticks numbers.
A callback can now be passed to do_after or do_mob which will be called every check - if the callback returns FALSE, the action is cancelled.
Progress bars no longer show an X briefly when their associated action is cancelled.
Progress bar itself is from /tg/, do_after changes are not.
changes:
Ported some timer fixes from /tg/ (timerid overflow fix, invalid deltimer logging)
Removed pointless air alarm elections.
Cleaned up some area code and moved area var definitions into areas.dm.
The nuke now only destroys Zs connected to the Z it detonates on. (Fixes#2552)
The nuke no longer destroys CC.
Nukes now dust mobs.
Cascades now dust all mobs on all non-admin levels.
Fixed a bug where SSexplosives would not honor the is_rec var.
Improved the efficiency of /proc/random_station_area().
Bluespace Bugs can now teleport out again.
Bluespace Technicians can now turn off their x-ray vision without needing to remove their glasses.
Human-types no longer make footstep sounds when lying down, unconscious, or dead.
Fixes#3063Fixes#3064
Makes the asteroid area equivalent to the space area: cannot be powered with an APC, an APC cannot be placed there, and blueprints will allow you to create new areas there. Also tick checks a blueprint proc which caused the lag in the first place, just for future reference.
changes:
Atom types can now define custom adjacency code for the smoothing system.
Walls now draw using the generic icon smoothing system.
Walls now pre-bake colors into their icons instead of doing it client-side with the color var.
Walls can now use the SSoverlay appearance cache; wall icon updates should be faster.
The "rusty" wall type now actually works.
Smoothing now uses mutable_appearance instead of image in some places.
Should be a bit easier on clients, though I haven't done profiling.
This PR breaks 510 compatibility.
changes:
Body marking icons are now cached in SSicon_cache.
Renamed the body-hair cache (used only by Resomi) to make it more clear what it is.
Humans now use SSoverlay for applying overlays, though they force-compile instead of waiting for it to tick.
Fixed a bug where getFlatIcon() did not work properly with SSoverlay overlays.