* Fixes an issue with station pets and the multiple_lives component (#64783)
* Fixes an issue with the multiple_lives component
* Ah yes, suicide cases.
* rephrases a sentence
* Fixes an issue with station pets and the multiple_lives component
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Contextual screentips -- Screentips now show you what items/objects can do (#64502)
Adds the foundational system for contextual screentips, which will show you what you can do with objects/items, including through context, such as what you are holding.
Provides several helper elements for most use cases, and applies it to a handful of common objects in order to show the full breadth of the system.
Changes screentips preference from on/off to on/off/only with context. Players who originally had it on off will have it migrated to only with context, though can re-disable it.
* Contextual screentips -- Screentips now show you what items/objects can do
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* Refactors slimelink and mansus link to be a component to cut down on hard-dels / code copy+paste (#64836)
So this started out as a hard delete fix for the mansus link
Then I realized the mansus link was literally copy+pasted exactly the same code
And the reason why mansus link was hard-delling was because slime link used to hard-del and those were fixed but those fixes were never copied over
So in a fit of rage I refactored the slimelink to be a component, datum/component/mind_linker. Raw Prophets and Stargazers use it.
I'm not 100% certain on some of the methods used but it works? It works.
* Refactors slimelink and mansus link to be a component to cut down on hard-dels / code copy+paste
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Adds Ruinless Cave Generation to IceBoxStation (#64671)
* Adds Ruinless Cave Generation to Lavaland
This PR adds a new type of cave generation to lavaland, where you can specify different areas to spawn without ruins. This is especially important for the parts indicated in the image below, because they're bald and ugly in order to help accomodate for the structures below.
I add a new datum for cave generation that doesn't spawn ruins (simply because the generation subsystem can't spend budget in those areas), as well as a nice new area and genturf sprite to help improve contrast for the mappers who succeed me.
* Adds Ruinless Cave Generation to IceBoxStation
Co-authored-by: san7890 <34697715+san7890@users.noreply.github.com>
* Refactor: make SSrunechat to be subsystem of SStimer (#64366)
* Refactor: make SSrunechat to be subsystem of SStimer
Co-authored-by: Aziz Chynaliev <azizonkg@gmail.com>
* Fixes runtime errors that occur when mindless mobs examine heirlooms, + code improvements (#64827)
Mindless mobs (such as observers without an initialized mind) examining family heirlooms would cause runtime errors due to the user.mind.has_antag_datum(...) line.
Rearranges the examine proc to prevent runtimes from occurring due to mindless mobs examining heirlooms. Adds an observer check at the beginning, just for sanity sake, even though it doesn't matter functionally.
Renamed the proc to on_examine for clarity
Auto doc'd the proc + comments
Handled a reference on Destroy
* Fixes runtime errors that occur when mindless mobs examine heirlooms, + code improvements
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Adjust balloon alerts for the rotate component (#64801)
Adjusts the failure balloon alerts to have a !, which is standard.
Remove the balloon alert for rotating/flipping things, as the visual feedback is already there: it's the thing getting rotated/flipped. Plus it's too long.
* Adjust balloon alerts for the rotate component
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* Fixes issues found by new switch lints (#64766)
Very nice addition to sdmm.
* Fixes issues found by new switch lints
Co-authored-by: AnturK <AnturK@users.noreply.github.com>
* Fixes Hauntium runtiming to hell (get it) due to real fake weakrefs (#64779)
Hauntium AI was recently changed to use weakrefs to cut back on hard deletes
Unfortunately, not all cases of hauntium AI assigning references were swapped to weakrefs.
Meaning the haunting list ended up being some weird combination of hard references to mobs and weak references.
These hard references in the list caused a million runtimes a second because the ai was, of course, trying to resolve() hard references which doesn't work and it was doing it every second
Hauntium should now properly use weakrefs in the cases it's used in.
Spooky things actually haunt again
* Fixes Hauntium runtiming to hell (get it) due to real fake weakrefs
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fixes species uplinks (#64816)
I was fucking deranged when I originally made this. I not only didn't actually include the assigned species to the uplink's ui data, but I made the code add each objective item to the uplink list twice. This fixes both of those problems, and makes it more readable.
Fixes a mistake I caused.
Closes#64806 (Species-Restricted uplink items don't appear)
Role-restricted and species restricted items can be purchased again.
Species-restricted items no longer appear in surplus.
* Fixes species uplinks
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* bad touch doesn't trigger on dead people (#64830)
Doesn't really make sense that you get a negative moodlet about hating being touched if you're dead when it happened.
Namely cause it's just weird to see the annoyed popup float up grabbing a dead body
* Stops 'bad touch' from triggering on dead people
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fire breath can be used without the ability to speak (+ code improvement) (#64796)
* fire breath can be done without the ability to speak + SPELL code improvement
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Add logging to cult rune inscribing (OFFICIAL) (SHE'S BACK) (#64754)
Previously the game did not log and it was a challenge to prove what did or didn't happen with cult runes (see certain ban appeal threads); they are now present in the game log.
* Add logging to cult rune inscribing (OFFICIAL) (SHE'S BACK)
Co-authored-by: Bobbahbrown <bobbahbrown@gmail.com>
* Fixes heretic's ash mark (#64699)
Fixes#63605, meaning ash mark now does 50 stam and 25 burn damage on the first hit, decreasing by 10 stam and 5 burn with each hit, down to a minimum of 10 stam and 5 burn from the 5th hit onwards.
Also makes the bounce target of the mark random, preventing it from getting stuck bouncing between the same two players forever.
* Fixes heretic's ash mark
Co-authored-by: GoblinBackwards <kinggreenyoshi@gmail.com>
* Making medbots through the crafting menu now accounts for medkit and health analyser type (#64725)
In it's current state, using the crafting menu to create a medbot will always create one with the default medkit and health analyser, regardless of the type used to craft it. This PR fixes it, meaning you can now use the crafting menu to create medbots with the different healthkit types for their healing bonuses and you won't lose your special medkit/advanced health analyser if it is destroyed.
* Making medbots through the crafting menu now accounts for medkit and health analyser type
Co-authored-by: GoblinBackwards <kinggreenyoshi@gmail.com>
* Mining MODsuit Rework (#64688)
makes dropkey deactivate device modules
fixes speed potion being fucky
fixes doubled up balloon alerts
makes some cell code better i think
makes the gps module open the gps tgui for you, instead of putting a gps in your hand
the loader suit can now hold mailbags
Reworks the mining modsuit.
The suit is no longer cold-proof (this can be mitigated by using module space for thermal regulators)
The suit fits less modules than standard suits, but cant burn in lava.
In suit storage it can carry ore bags, resonators and kinetic crushers.
It features a storage, gps, ore bag, drill, clamp and by default comes with a plasma core, being recharged with plasma ore rather than by power cell.
Features two new modules:
Ash Accretion, it gathers dust from basalt (or snow) you walk on to create a layer of ash around the suit, acting as armor and a speed up that quickly drains when you walk on other terrain.
Sphere Transform, turns you into a fast moving ball that can travel past lava, you cannot use your hands when in this form, but you can launch aoe mining bombs to attack or mine
* Mining MODsuit Rework
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
* Add new surgery tgui (#64579)
* Move element to component, start UI, move assets into their own directory
* Complete UI
* Stop when another surgery is started
* Set your real zone since I forgot you actually need to start the surgery too
* Bring this back since I was just removing it as part of a cleanup for asset cache, but I can't prove it's not used anymore
* Remove unnecessary constructor I was using for something else
* Fix signal override
* Add new surgery tgui that provides a built in body zone selector and doesn't let you start surgeries if their body is covered. Replaces some stuff with balloon alerts
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* moves blast doors and shutters to a layer above windows and doors and changes shutters cost and build time (#64669)
This PR increases the layer of poddoors to 3.3, above windows and doors. (Poddoors include blast doors and shutters). I tested this PR to see how blast doors and shutters look with the changes, and they look better open and closed with the new changes. I did not see any bad interactions with windows or doors, except the preexisting fact you need to build a blast door before making a door, or you will be unable to link them up. This PR also rebalances shutters to be a cheaper, easy to build alternative to the monstrosity that is a blast door.
Blast doors and shutters (collectively referred to as poddoors) are thematically important parts of the game, providing a level of extra security and reinforcement that is hard to recreate. Somehow, they are below windows and doors, meaning someone with a fireaxe can destroy windows and doors quite easily without scratching the poddoors. It also makes no sense for a poddoor to be under a window, somehow inside a grille or glass pane. This change will make it so someone who wishes to destroy areas must actually first defeat the theoretically first line of defense (poddoors). Shutters now actually have a noticeably different purpose to blast doors. They are still not meant to be anything but reinforcement to existing barriers. This will help encourage their usage over blast doors.
* moves blast doors and shutters to a layer above windows and doors and changes shutters cost and build time
Co-authored-by: MacBlaze1 <33578623+MacBlaze1@users.noreply.github.com>
* Fixes harddels in pinned module code, cleans up a musty pattern that I want to die (#64674)
* Please stop typecasting target, noooooooooooooooooo
* Fixes harddels in pinned module code
The logic for pinned modules was intentionally hanging references to the
mob that pinned the action button. I have depression.
The pinned_to list also was never fully cleared, but that would have
just exasperated the issue. I've converted its use of mobs to refs, and
its use of the module var into something better managed
(Friendly reminder that actions will persist in your nightmares forever
unless they are manually qdel'd, this code wasn't doing that.
Also cleaned up how the pinned_to list is managed, hopefully it's a bit
more action centered now
* Fixes harddels in pinned module code, cleans up a musty pattern that I want to die
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Blacklists all non-basic radios from the Radio Glove crafting recipe (#64641)
Some possibilities without this change were:
Erasing encryption keys
Erasing sec ear-protecting headsets
Erasing intercoms
Makes it so this doesn't happen anymore.
* Blacklists all non-basic radios from the Radio Glove crafting recipe
Co-authored-by: Wallem <66052067+Wallemations@users.noreply.github.com>
* [s] Makes used grenades slightly more obvious. Also prevents DOSing admins. (#64643)
* Makes used grenades slightly more obvious.
Adds a variable to tell whether a grenade can't detonate properly.
Examining can be used to tell if the grenade has already been used.
A flag on it is set when the grenade detonates so that used grenades can't be reused until it's reset.
It also prevents spamming admins with grenade primed messages since there's no point if the grenade won't work.
* Changes dud var to dud flags.
Changes the name of the dud var to dud_flags to clarify that it is a set of bitfields.
Changes the default value of the dud var to NONE also to clarify that it is a set of bitfields.
Changes the documentation for the dud var to clarify that it is a set of bitfields.
* Fixes eternally armed dud grenades.
Makes the grenades reset their appearance if they reach the end of their fuse while a dud.
Prevents chemical grenades from staying in the 'i am armed' visual state forever.
* [s] Makes used grenades slightly more obvious. Also prevents DOSing admins.
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
* fixes mod core recipes (#64654)
They were the same typepath which overrode each other. That's fixed now.
* fixes mod core recipes
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
* Updates the icon of the Legion achievement and adds another for the "Look Out, Sir!" one. (#64624)
The guy that resprited Legion forgot about the achievement, because it's still using the old sprite from the previous decade.
Some of the misc achievements are also still lacking their own icons. I don't have the time right now to work on all of them, but I have sprited one (also as a practice) so to make the task easier. It's a bit smaller than other achievements and more soulless, but that's how I wanted it to be.
* Updates the icon of the Legion achievement and adds another for the "Look Out, Sir!" one.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Redoes how merger datums store directions to neighboring members (#64535)
The old logic broke down if
A: there were more then one eligable member on a tile
Or B: if the members were in anything but a line
The old code made the assumption that if a location had been talked to
ever, it was done talking forever. This isn't the case.
Also it kinda pissed me off that cost scaled with objects, not tiles. So
I changed how things were tracked to fix those things.
Makes me happy inside
* Redoes how merger datums store directions to neighboring members
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Splits the Fire Alarm sound into four files (#64324)
* sound fission
* I can't believe malf tools betrayed me like this
* much ado about 0.008
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
* Pay no attention to this
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
* Splits the Fire Alarm sound into four files
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
* Brimdemons (#64592)
Adds brimdemons, these are lavaland creatures firing blood lasers at their enemies.
Brimdemons drop brimdust, which can be used as a botany reagent (it heals the plant, removes weeds and pests and increases potency), and also to craft ore sensors, which are basically primitive ore scanners, on your ears.
Adds tropical lobstrosities to lavaland and removes them from xenobiology, also gives them a crusher trophy that staggers enemies for 3 seconds.
* Brimdemons
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
* Adds direct support for weakrefs to vv (#64521)
* Adds direct support for weakrefs to vv
* Update code/modules/admin/view_variables/get_variables.dm
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Fine, have a readable name.
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Adds direct support for weakrefs to vv
Co-authored-by: AnturK <AnturK@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Refactors and fixes sound_player (#64443)
idk if this is considered a refactor since its not creating a new component, so remove my refactor label if you believe so.
Overhauls how sound_player works, and makes it actually work.
* Refactors and fixes sound_player
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>