* Refactor on_mob_death, death implants, implant permission (#55862)
* Refactor on_mob_death and death implants
There is a proc on `/obj/item` called `on_mob_death` called on all
items in the contents of a mob on that mob's death. It is currently used
for explosive implant detonation, and the deactivation of the
Peaceborg's projectile dampener.
Instead of using this old proc, both of them now instad use the
COMSIG_LIVING_DEATH signal, already emitted when their owner dies.
The activation of an explosive implant will now occur after the rest of
the death code has run, since it activates with an async applied
function, since some other implants may still want the mob's body
intact, and you shouldn't use `sleep()` (which it does in the "slow
explosion mode") in signal handlers.
In addition, the "can_be_implanted" proc for /mob/living (and overriden
for silicons, slimes and simple animals) has been folded into the
`/obj/item/implant/proc/can_be_implanted_to` proc. Some future implants
may want to be more permissive than the current permissions, but that
isn't possible when checking both procs.
* Refactor on_mob_death, death implants, implant permission
Co-authored-by: coiax <yellowbounder@gmail.com>
* Fixes borg tiles (#55858)
- Fixes greyscale material floor tiles created from cyborg stacks
- Makes cyborg stacks contain materials
- Prevents a potential bug involving metalgen and stacks
* Fixes borg tiles
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
* Clownlike creatures are now more consistent. #fix #honk #banana (#55603)
* Bananium golems can wear clown shoes and are clumsy. Clownlike creatures, including clowns, bananium golems and clown ops, heal from bananas and bananahonk. Clown Ops also don't understand death, like real clowns!
* Clownlike creatures are now more consistent. #fix #honk #banana
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
* Tweaks how some tongues have no taste (#55811)
Skeletons, abductors and ethereals have no sense of taste. Previously
they would taste something "indescribable", but instead, they will not
taste anything or get any message. This also means they will no longer
get mood buffs from eating/drinking high quality food.
Carbons without tongues also can no longer taste anything.
- The utility item "taster" has had some additional messages added.
* Remove can_taste proc
Instead of a single proc that is only used, so carbons can override it
with the missing tongue, just have carbons unable to taste anything by
default, and then have the tongue "supress" that.
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>
* Tweaks how some tongues have no taste
Co-authored-by: coiax <yellowbounder@gmail.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>
* wrinkling my brain (#55829)
#54939 removed a part of individual logging code that used the length of the individual's logging list as part of the index for storing a given line of logging.
The problem is, that number was important for avoiding collisions in the logging lists. Since the length of an atom's logging list can only ever increase by 1 every time a new line is logged, you were guaranteed to always have a unique index for each new line. Without the length in the index, if any logging event was triggered on the same atom multiple times in the same second (like if someone spoke once willingly and once by force from something like tourettes at the same time), two entries would be logged, but both of them would point to whichever one was processed last.
This was most noticeable with wound logging, since the victim would log both the attack itself and the wound it caused at the same time in the same category (LOG_ATTACK), meaning that the wound log would just be turned into a copy of the attack entry, but I believe this is the cause behind most (if not all) of the issues logging has had with duplicating some events and losing others entirely.
The fix is simple, just adding the length of the list to the end of the index. This still allows logs to be sorted by timestamp while ensuring that each log entry is unique.
* Fixes log collisions
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
* On monkey day, you can play as a monkey roundstart (#55838)
* On monkey day, you can play as a monkey roundstart.
* Update monkeys.dm
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
Co-authored-by: Azarak <azarak10@gmail.com>
* Refactor module traits for cyborg modules (#55769)
`module_traits` are a collection of traits applied to the cyborg/robot
mob when a given module is loaded. When a different module is loaded,
all old module traits are cleared.
As an example, the `can_be_pushed` module variable has been replaced
with the new functionality, adding a TRAIT_PUSHIMMUNE, rather than
setting a `status_flag`.
* Refactor module traits for cyborg modules
Co-authored-by: coiax <yellowbounder@gmail.com>
* Merge pull request #55798 from spessbro/please-assume-the-position
Integrates vibebots with the pda
* Integrates vibebots with the pda
Co-authored-by: 81Denton <32391752+81Denton@users.noreply.github.com>
* Merge pull request #55791 from spessbro/more-than-one-way-to-skin-a-felinid
There's more than one way to skin a cat
* There's more than one way to skin a cat
Co-authored-by: 81Denton <32391752+81Denton@users.noreply.github.com>
* The Great Radio Rework: NTNET Part 1 of many.
* Update airlock.dm
Co-authored-by: WarlockD <warlockd@gmail.com>
Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>
* Update emotes.dm
* Update emotes.dm
* Update emotes.dm
* Fix spacing, redo some checks, fix bugs
* Add PR to readme, add new file overwrite, fix styling
* Add cooldown to long silicon emotes
* Fixes a metric fuckton, adds global cooldown, etc.
* cry
* unit test makes me cry
* Readd global cooldown on /datum/emote
* Overwrite /emote/beep modularily, instead of having two
* Bugfixes, mixed gender noises, refactors
* Add requested cooldown and volume change, move code about, blahblahblah
* Remove unnecessary cooldown vars from silicon emotes
* Update and prettify readme further.
* Switch default emote gender to female, no sound for non-carbons on certain emotes
* Add volume var and vary to scream run_emote
Co-authored-by: Avunia Takiya <git@takiya.cloud>
* Fix zero damage items not showing explicitly set attack verbs in chat (#55509)
Borked exactly five months ago by #52890.
This will close#55219.
* Fixing zero damage items with set attack verbs not showing chat messages anyway.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Refactors how movetypes are added and removed, No timers this time. (#55444)
* Refactors how movetypes are added and removed, No timers this time.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Remove TRAIT_ALWAYS_CLEAN from codebase (#55765)
Hygiene is no longer a thing, and the TRAIT_ALWAYS_CLEAN trait is not
actually used anywhere anymore. So it can be safely removed.
* Remove TRAIT_ALWAYS_CLEAN from codebase
Co-authored-by: coiax <yellowbounder@gmail.com>
* Deadchat plays everything - A simple way for admins to let deadchat control things. (#55314)
* Deadchat plays things
* Pocket lint
* View those variables
* Arr var
* Arrr save changes and don't code while drunk
* Loog dot exe
* Big ol' changes
* Deadchat plays everything - A simple way for admins to let deadchat control things.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* The ashdrake won't enrage anymore if all lava arena targets have gone clientless or deleted. (#55507)
* The ashdrake won't become enraged if all lava arena targets have gone clientless or deleted now.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Uranium Golems: Punch to Irradiate, not Exist to Irradiate (#55602)
* Uranium golems no longer irradiate by mere presence. Instead, they irradiate by punching people. Also some statistic changes including durability from brute damage, punch damage, etc. Also uranium golems can wear engineering clothes
* Adds radiation emissions from being struck as a uranium golem
* Uranium Golems: Punch to Irradiate, not Exist to Irradiate
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
* Specifies if DNR was pushed in body examine text (#55399)
Adds the examine text " and [t_his] soul has lost the will to live..." instead of the usual "soul departed" message if the person hits DNR.
* Specifies if DNR was pushed in body examine text
Co-authored-by: Emmanuel S <mrdoomboyo@gmail.com>
* No more original moth wings being set to none (#55672)
Moths that drink a potion of flight have their moth wings set to none, which their handle fire would store as their original, and that would be applied from reconstructive surgery.
Now potions of flight store an original, and handle fire checks to see if something was stored before, so it doesn't overwrite that.
* Fixes mothman wing reconstruction bug
Co-authored-by: ArcaneDefence <51932756+ArcaneDefence@users.noreply.github.com>
* Fix redundancy in /mob/living/silicon/Login (#55639)
/mob/living/silicon/Login had duplicated code encapsulated in a "remove_antag_for_borging" proc:
* Fix redundancy in /mob/living/silicon/Login
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
* Fixes some bugs involving regal rats (#55688)
- Regal rats are supposed to, when examing other regal rats, see them as
false kings. There was however, no check to see if you were looking at
yourself.
- When clicking on anything when at full health, you would get a message
about how you didn't need to eat anything. But you should only get
those messages, when you're attempting to consume cheese.
* Fixes some bugs involving regal rats
Co-authored-by: coiax <yellowbounder@gmail.com>
* Tweak cursed ice boots to NODROP only on equip (#55654)
Cursed ice hiking boots dropped by demonic frost miners only
become unremovable when worn.
* Tweak cursed ice boots to NODROP only on equip
Co-authored-by: coiax <yellowbounder@gmail.com>
* Fixing a very old issue about lizard snouts and hoods, fake mustaches and similars. (#55574)
Fixing a little visual issue with certain hoods, fake mustaches and similars making lizard snouts magically disappear when worn.
* Fixing a very old issue about lizard snouts and hoods, fake mustaches and similars.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Generalizes hands blocked as unarmed attack block (#55579)
I suppose for bots there's a certain level of abstraction involved, but it makes sense within the context.
There's a pretty bad bug associated with shades here that this fixes.
* Generalizes the hands-blocked trait as UnarmedAttack block
Co-authored-by: Rohesie <rohesie@gmail.com>
* Hulks can now swing people by their tails + small changes to carbon throw impacts (#55383)
This PR adds another little interaction to hulks, letting them swing monkeys and humanoids with tails (so lizardpeople and felinids mainly) similar to (copied from) the wrestling move. To do this, be a hulk, have a carbon with a tail in at least a neck grab, target the groin, enable throw mode, then click in the direction you'd like to chuck them. After a short 2 second do_after, you'll start swinging your victim around and around by the tail, eventually sending them flying at a very, very high speed! The full process takes about 14 seconds from start to finish, not including getting them in a neck grab to begin with. Impacting a solid wall with no armor will do about 30 brute damage and can cause up to a hairline fracture if you're very unlucky.
This PR also makes a few changes to the effects of being thrown into things. Previously, you'd only suffer damage and a 2 second paralyze if you were thrown into solid turfs or carbon mobs, which meant smashing into windows or girders at high speed didn't do anything. This PR makes it so high speed impacts (I.E. hulk throws and high speed disposal outputs, not normal body throwing) into solid atoms will still deal a lesser amount of damage. Structures like windows and girders will deal a bit more damage and a small 1 second paralyze compared to other atoms
Why It's Good For The Game
Tail spinning adds a goofy niche power to hulk that doesn't just involve deleting walls and shrugging off stuns, and the other throw impact changes make being thrown into things at high speed more consistent rather than only applying to a specific type of atom.
* Hulks can now swing people by their tails + small changes to carbon throw impacts
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
* [READY] Lavaland Elite Changes (#55367)
This PR just does some balancing to the Lavaland Elites, along with some QOL. The changes:
Ability buttons now show the current cooldown on them for when you can attack again.
BROODMOTHER
Nerfed Rage attack cooldown from 7 seconds to 10 seconds
HERALD
Speed increased from 4 to 2
Directional Shot cooldown nerfed from 5 to 3 seconds
Projectiles now deal 20 damage instead of 15
LEGIONNAIRE
Melee attacks now deal 35 damage instead of 30
Charge is now much faster to perform once it starts moving (moves faster) and combos into itself
Charge does melee damage per step now
Smoke cooldown decreased from 6 to 4 seconds
Fixed the bonfire not lighting things on fire who cross over it
PANDORA
Damage tiles now deal 30 damage instead of 20
Can no longer teleport to tiles it cannot see
AOE Blast is now 7x7 instead of 5x5
AOE Blast and Lineshot now move based on Pandora's current damage, speeding up as it gets lower
These are just some changes in order to better balance out the elites, giving strength to everyone but the broodmother and nerfing a tad BS attack the Broodmother possessed
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@ users.noreply.github.com>
* [READY] Lavaland Elite Changes
Co-authored-by: IndieanaJones <47086570+IndieanaJones@users.noreply.github.com>
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@ users.noreply.github.com>
* Refactors Beams to use signals: Revived from 2019 edition! BONUS: Medbeams are also refactored to use signals (#55193)
Huge removal of dead vars, bad timers, and other sloppy jitteriness from beams. They go from checking movement to waiting for a signal.
VARIABLE KILL LIST:
sleep_time: signals baby
finished: signals BAYBEEE
target_oldloc: not only not typecasted as a turf or named as a turf, it was unused. when are we going to use this? the beam starts from the origin!
origin_oldloc: bad name, not typecasted. renamed to originturf
static_beam: how are you an unused variable and still get replaced by signals like really
timing_id: signallllss bbbaaaabbyy
recalculating: you get the drill by now signals baby
base_icon: unused, seemingly replaced by visuals I think
* Refactors Beams to use signals: Revived from 2019 edition! BONUS: Medbeams are also refactored to use signals
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* Prevents simple animals from creating/destroying 1 footstep component per process (#55599)
* Lowers the amount of footstep component churn
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Update shadowpeople.dm (#55547)
Nightmare light eaters can no longer be deleted using acid
* Makes light eaters acid proof
Co-authored-by: wesoda25 <37246588+wesoda25@users.noreply.github.com>
* Fixes GC for observers and new players, and tons of loose references to stuff that shouldnt be (#55563)
I've done this on a signal because atom_hud is applied very loosely in some contexes, and the objects themselves dont have an easy way to track back into what huds they're affected by, so this seemed the best. Properly cleans up next_time_allowed, which was missing.
Update: I discovered this is also an issue for a lot of simple mobs, such as slimes and bots and such. So fixing this is huge
* Fixes GC for observers and new players, and tons of loose references to stuff that shouldnt be
Co-authored-by: Azarak <azarak10@gmail.com>