* Adds a crash to camera logic if we attempt to add a qdeleting camera (#70878)
* Adds a crash to camera logic if we attempt to add a qdeleting camera. It's causing harddels and runtimes and I want to know why
* Adds a crash to camera logic if we attempt to add a qdeleting camera
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Adds a new spell to Heretic starting loadout, "Shadow Cloak", which conceals their identity. (#70648)
* Adds "Shadow cloak" to heretics, allowing them to disguise themselves as a shadowy figure, which is cancelled if they take too much damage.
* Adds a new spell to Heretic starting loadout, "Shadow Cloak", which conceals their identity.
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Change `drop_all_held_items` to work with cyborgs (#70682)
* Cyborgs now use the same drop_all_held_items that humans do instead of their own snowflake code.
* Fixes Cyborgs not dropping all their modules at the same time,
Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
* Change `drop_all_held_items` to work with cyborgs
Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
* Fixes some bespoke elements being passed non-static lists. (#70690)
Bespoke keys use references of lists in generation. Non-static lists will create a million instances of the element, not good.
* Fixes some bespoke elements being passed non-static lists.
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* [NO GBP] Fixes blindness icons on lower station z-levels (#70608)
I previously tested that footsteps worked when hearing them from a lower Z-level but forgot to test if you can see them while on a lower z-level.
It didn't occur to me that offsetted planecube planes wouldn't work with being over the fullscreen blindness mask past the top level but that makes sense in retrospect.
So the blindness effects (via play_fov_effect()) are now on the fullscreen plane. Partially reverted doing this with manually talking bubbles as well so they look normal again, and then added a FOV effect as well for chat bubbles.
NOTE: Runetext is in general also only above the blind mask on the highest station level and below on others for the same planecube issue but that's a whole other can of worms.
* [NO GBP] Fixes blindness icons on lower station z-levels
Co-authored-by: Tastyfish <crazychris32@gmail.com>
* Replaces update_eye_blur client check with a HUD check (#70740)
Changes update_eye_blur to check if mob has a hud
* Replaces update_eye_blur client check with a HUD check
Co-authored-by: GoblinBackwards <22856555+GoblinBackwards@users.noreply.github.com>
* Small Seconds Define Cleanup for Spawners (#70719)
Hey there,
I was doing some codediving, and I stumbled upon this spawn_time silliness in mob spawner code, so I just swapped everything to use SECONDS defines (since units are very epic).
* Small Seconds Define Cleanup for Spawners
Co-authored-by: san7890 <the@san7890.com>
* People wearing kitty ears can have their tails pulled (#70759)
Extends tail pulling to people wearing kitty ears. If you pull on their fake tail it will tip off and give you a mood debuff for ripping someone's tail off.
Added a new sound cloth_rip.ogg, a shortened version of dimensional_rend.ogg with one ripping noise.
* People wearing kitty ears can have their tails pulled
Co-authored-by: Thunder12345 <Thunder12345@users.noreply.github.com>
* Fixes AIs `on_click` failing where it isn't supposed to fail (#70685)
About The Pull Request
As stated in #70664, AIs were unable to interact in any way with any object that was located on coordinates that were divisible by 16. See the walk-through in the issue, tl;dr is: math was adding +1 where it shouldn't have, which resulted in coords that are multiples of 16 to be mistakenly counted a part of another camera chunk
Why It's Good For The Game
UPDATE: Fixes#70664 actually, as the issues in that report were tied to the AI running can_see on its own loc in some way, shape or form and THE AI GRID OF DOOM was breaking it.
No more invisible grid that completely blocks AI interactions along with any issues that would be triggered by either the AI itself or the objects being located in THE AI GRID OF DOOM.
* Fixes AIs `on_click` failing where it isn't supposed to fail
Co-authored-by: Sealed101 <75863639+Sealed101@users.noreply.github.com>
* Changing species now maintains Brain traumas, Cybernetic implants, Liver traits, organ damage, and Heretic Living Heart (#70530)
About The Pull Request
Implements additional code in before_organ_replacement in additional places, to better maintain cohesion when species changes take place.
Brain traumas will now carry over on species change
Having synthetic / cybernetic organs will now carry over on species change
Liver job traits will also carry over on species change
Organ damage will, in most cases, carry over on species change (only if the new organ is identical to the old)
The heretic's Living Heart will attempt to carry over to species change, if it's valid
Some species will still not, as it will attempt to give heart -> liver or something and be invalid
Heretic Living Heart is now a cooldown action. Still not really content with the current state of it, it could use some improvements.
Fixes#42308Fixes#35539Fixes#69574
Why It's Good For The Game
Removes a lot of exploits involving using forced species change to get rid of stuff like quirks / permanent brain traumas and similar.
* Changing species now maintains Brain traumas, Cybernetic implants, Liver traits, organ damage, and Heretic Living Heart
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fixes AI camera static not updating when the AI enters a mecha (#70385)
* it just works
* kick the eye out of the mecha on mob_exit
* Fixes AI camera static not updating when the AI enters a mecha
Co-authored-by: Sealed101 <75863639+Sealed101@users.noreply.github.com>
* Fix admin transforms transfering the wrong client (#70500)
* Fix admin transforms transfering the wrong client
Ghost copies of minds should not get cloned onto a new mob because the original body could have been taken over (via offer body to ghost or other fuckary) and then transfer_to will transfer the controller of the og body instead of the ghost body.
I could fix this bug from happening with more with raw ckey checks, like the debug line I added, but this is part of code that controls when antag status transfers between bodies while admin bussing, and so i want it's behavior to either be intentional or clearly buggy, no in between, so i'm not adding a check to verify the mind key is the same as the mob key.
* Say the mob's name for log correlation
* Fix admin transforms transfering the wrong client
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
* Cleans up the fallout from plane cube (#70235)
* Cleans up the fallout from plane cube
Alright.
Makes cleaning bubbles respect planes
Adds support for updating overlays on move, fixing an issue with pointing at items
Adds better error messages for failing to provide args for mutable_appearance()
Fixes a bug where string overlays were not respecting insertion order
* Adds documentation for offset spokesman and offset_const
* Better stack trace
* Removes some redundant uses of cached MAs
At this scale, attempting to cache MAs like this has 0 impact on anything
And just makes things more messy then they need to be
* ensures fullscreen objects START offset, so things are always proper
* ensures chatmessages always have the right offset
* fixes compile
* whoops, the above lighting plane should actually be ABOVE the lighting plane
* fixes compile, also cleans up the fire overlay a tad
* Adds a unit test for plane masters that are shrunk by multiz being double shrunk
This is slightly hacky because of how I'm handing the plane master
group, but it's not THAT bad, and gives me some real good coverage
* Properly targets the seethrough plane at the game world plate. This fixes unit tests, and also just makes more sense
* whoops
* oh
* adds datum support for allocate(), cleans up a harddel from testing
* Makes camera chunks index at 1, and also makes them support non powers of two sizes, since that was unneeded
* fixes runtime in allocate
* Cleans up the fallout from plane cube
* liquid tweaks
* oop
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
* Removes the explosive holoparasite's teleportation punch ability (#70611)
* The explosive holoparasite no longer has a 40% chance to randomly teleport a guy they're punching away from them.
* Removes the explosive holoparasite's teleportation punch ability
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
* Wizard DLC - Tower of Babel (#69629)
About The Pull Request
This adds a new status effect called - Tower of Babel
Any carbon mob afflicted by the status effect will lose knowledge of every known language and gain a randomized one as a replacement. The affected mob will also be hit with a depressing moodlet that lasts for 15 seconds. Silicons are immune to all effects.
This effect is implemented in several ways:
Tower of Babel wizard event (all crew on the station z level are affected. The wizard is not and gains mastery of every language to taunt their victims)
Admin smite option
Admin secret event (can be reversed)
Staff of Babel (formerly the Staff of Sapping) will spawn during spawn magic wizard event
Magicarp will randomly shoot bolts of babel
Staff of Chaos will randomly shoot bolts of babel
Overdosing on Mushroom Hallucinogen will temporarily and sporadically acquire the effect
The effect can be blocked or cured in several ways:
Curators are given immunity
Reading a book of babel (via lavaland loot) cures and gives immunity
Reading a language book cures and gives immunity ONLY for that particular language
Note - The Tower of Babel does not allow tongueless, mute, or tongue tied people the ability to speak
* Wizard DLC - Tower of Babel
Co-authored-by: Tim <timothymtorres@gmail.com>
* Scratching an OCD itch, or, how I autodocced `/mob/living/simple_animal/hostile`'s comments (#70614)
* Scratching an OCD itch, or, how I autodocced `/mob/living/simple_animal/hostile`'s comments
Co-authored-by: Wallem <66052067+Wallemations@users.noreply.github.com>
* Adds a brand-new HUD: The Trasen-Knox HUD! (#70474)
Hello everyone! Today I bring to you all a fancy new HUD for you lot to enjoy: The Trasen-Knox HUD! Lovingly based off of the Common Core lore maintained by EOBGames!
Well, what is it?
Its a HUD with a special theming based on the old 1970's CRT screens that were commonplace at the time, including the iconic neon green and the beige plastic casing!
This PR also includes a new behavior so that its possible for each active hand icon to be unique, instead of it being a sole highlighted icon as it was before.
image
And for those wondering, it does indeed account for multiple limbs!
image
Finally, as seen in the first screenshot, this PR adds the behavior to hide the HUD icon when you insert a piece of equipment into the slot. Thank you for adding the behavior, Fikou!
This is all as a step for upgrading and changing how the HUDs we interact with on a daily basis can be upgraded in the future to be more appealing visually! That, and it is simply gorgeous :)
PositiveEntropy, Fikou
add: Adds a new HUD: The Trasen-Knox HUD! With a theming based on classic 1970s CRT screen computers!
code: Added behavior for unique icons for active hands.
code: Added behavior that makes it so when you equip an item, the icon behind it defaults to the blank template type.
* Adds a brand-new HUD: The Trasen-Knox HUD!
Co-authored-by: Imaginos16 <77556824+Imaginos16@users.noreply.github.com>
* Adds extended tooltip information to observables in the orbit ui (#70547)
A continuation of #68389 which addresses an issue that still bothers me to this day:
The orbit menu displays a player's name as a combo of name id transform. It can get lengthy to a point where the names clip the entire screen (as buttons do not multiline).
This PR shortens excessively long player names on the orbit menu and adds a tooltip that will show extended info like full name, health and job titles.
Mostly drawn from concerns brought up in the original.
* Adds extended tooltip information to observables in the orbit ui
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
* intelligent monkeys now attack hand (#70331)
Advanced Trait user Monkeys (so clever mutation or admin ones) now don't attack_paw, meaning they'll act like a human and call attack_hand instead.
I think it would be funny if this was on base species, so all non-advanced human will attack_paw, but I haven't read attack_paw enough to want to go through with it.
They're intelligent now, so I don't see why they should be limited to attack_paw instead of human interactions. Now they can properly use defibrilators, water tanks, holosigns (for the janitor monkeys), crates (for cargo techs), and many other items, all without giving the ability to all monkeys and xenomorphs.
Also makes them more fitting for 'intelligent/advanced/clever', and makes more use out of monkeys being a species now.
* intelligent monkeys now attack hand
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Fixes communication being nearly impossible (except over radio) when there's a null client in the global player list (#70404)
* Fixes communication being nearly impossible (except over radio) when there's a null client in the global player list
* Updates our modular play_vox_word() proc
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Functionality for custom human examine messages when possessed by an AI controller. Implements on humans with monkey AI (#70356)
The "They don't appear to be themselves" line on humans that have AI controllers is now controllable by the AI controller, and is only "They don't appear to be themselves" by default.
Monkeized human now have the line
* Functionality for custom human examine messages when possessed by an AI controller. Implements on humans with monkey AI
Co-authored-by: itseasytosee <55666666+itseasytosee@users.noreply.github.com>
* Various Jaunt fixes (#70431)
* Jaunt code path reworked so that traits and other effects can be removed consistently regardless of how effect is ended.
Jaunts will more consistently clean themselves up (and unjaunt you) when you lose the spell.
If a shuttle lands on you while you are jaunted it will now kill you instead of crashing and fucking with the shuttle landing process.
Z travelling while inside an object or mob will now relay that direction instead, allowing you to jaunt up and down as well as cardinally.
Mirror walk button updates at correct times.
Blood and Shadow walk buttons have same functionality as Mirror Walk.
* Various Jaunt fixes
Co-authored-by: Jacquerel <hnevard@gmail.com>