* Godmode now prevents radstorms from irradiating you. (#67081)
Having godmode toggled will now prevent you from being mutated by a radstorm
* Godmode now prevents radstorms from irradiating you.
Co-authored-by: Rhials <Datguy33456@gmail.com>
* OpenDream Cleanup Pass (#67036)
OpenDream can detect BYONDisms that BYOND or SpacemanDMM miss. This PR fixes all of the issues it found in TG. Each change is explained in code comments below.
* OpenDream Cleanup Pass
Co-authored-by: ike709 <ike709@users.noreply.github.com>
* Fixes strange runtime with restart votes (#67080)
So, I refactored votes a little bit ago.
This line was present in the result process for restart votes.
for(var/client/C in GLOB.admins + GLOB.deadmins)
if(!C.is_afk() && check_rights_for(C, R_SERVER))
active_admins = TRUE
break
So, I converted it to this.
for(var/client/online_admin as anything in GLOB.admins | GLOB.deadmins)
if(online_admin.is_afk() || !check_rights_for(online_admin, R_SERVER))
continue
Seems fine, right?
Unfortunately, no.
GLOB.deadmins is a global list of deadminned ckeys. Not deadminned clients.
So, the original loop iterated over a combined list of clients AND ckeys, but ONLY typechecked for clients.
Why were we adding in ckeys in the first place, if it didn't even check them?
No idea. But it seems like, since no one noticed restart votes weren't checking for deadminned admins in the first place, there isn't a reason to continue to consider them. Admins can re-admin to cancel restart votes or address the server's concerns if they're online, I suppose.
* Fixes strange runtime with restart votes
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Refactors the forensics component into a datum
* Refactors the forensics component into a datum
* Refactors the forensics component into a datum
Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
* Allows slimes to buckle to monkeys again (#67034)
* Allows slimes to buckle to monkeys again
Just because they are not able to ride things doens't mean they should
not be able to buckle to anything
* Update code/datums/elements/ridable.dm
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Allows slimes to buckle to monkeys again
Co-authored-by: oranges <email@oranges.net.nz>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Change drunk blur effect to scale by intoxication (#66961)
* Change drunk blur effect to scale based on intoxication
Co-authored-by: Tim <timothymtorres@gmail.com>
* Fixes mind restoration causing dizziness (#67011)
Mind res should cure dizziness, not cause it
* Fixes mind restoration causing dizziness
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Makes ridable not work if you cant hold the offhand (#66939)
* Makes ridable not work if you cant hold the offhand
Because amount_equipped is 0, and because not being able to insert the riding_offhand only break's, rather than returns FALSE to cancel, it goes on to fireman carry you're not supposed to be able to carry, leading to situations where people are fireman carrying others and is completely unable to drop them.
* adds a block buckle to slime's traits too
* Makes ridable not work if you cant hold the offhand
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* [NO GBP] Gives miners general cargo access (#67025)
Gives miners the ability to access their department (like the cargo bay) as normal. This is a quick fix to make sure that miners can do their jobs while we wait for the refactor currently in the works to go through. After that is in I will be able to properly manage the accesses and compartmentalize as necessary.
* [NO GBP] Gives miners general cargo access
Co-authored-by: Son-of-Space <63861499+Son-of-Space@users.noreply.github.com>
* Fixes multiple orbiting blades being used at once (#66817)
Multiple orbiting blades will no longer be used to protect you from the same attack in case you have multiple instances of the status effect
* Fixes multiple orbiting blades being used at once
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
* Adds Ceilings To IceMoon Ruins (#66836)
Hey there,
On IceBox, sometimes, ruins could spawn below chasms that we had, or below a ruin that spawned in more openspace chasms. This would cause numerous Active Turfs on initialization, and I've seen the number go up to 150 active turfs. This change should reduce the number by a good margin.
I decided to make the ceiling mineral-rich snow to ensure it had that "buried" appearance, and would hopefully look nice to have that odd chance for a underground ice ruin create a natural bridge that just needs to be excavated.
* Adds Ceilings To IceMoon Ruins
Co-authored-by: san7890 <the@san7890.com>
* Fixes some minor formatting issues with vote text (#66913)
* Fixes some minor formatting issues with vote
* Wrong thing.
* Actually I think this is supposed to be here
* Fixes some minor formatting issues with vote text
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* fixes dizziness causing hard crashes (#66861)
this pr fixes dizziness causing hardcrashes and sending your view 50 tiles in both x and y
* fixes dizziness causing hard crashes
Co-authored-by: MacBlaze1 <33578623+MacBlaze1@users.noreply.github.com>
* Fixes "high blood pressure" status effect, and corrects the spelling of "opioid" (fixing another bug) (#66849)
Status effects that are intended to be added, are actually added.
Opioid is now spelled correctly, consistently.
This actually caused a bug: Opioid end_withdrawal was never called because it's path was spelled correctly and the others weren't.
* Fixes "high blood pressure" status effect, and corrects the spelling of "opioid" (fixing another bug)
* wew
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* Fix books to only give mood bonus when read the first time (#66371)
* Fix book rereading exploit
* Refactor book_title_read to be for mind datum
* Remove reader var from on_read
* Add sanity check for mind
* Fix books to only give mood bonus when read the first time
Co-authored-by: Tim <timothymtorres@gmail.com>
* Sorts ai_laws.dm, adds Dungeon Master, The Painter and Their Canvas, and Nutimov lawsets (#66636)
Sorts ai_laws.dm, adds Dungeon Master, The Painter and Their Canvas, and Nutimov lawsets (They aren't obtainable by players at the moment)
* Sorts ai_laws.dm, adds Dungeon Master, The Painter and Their Canvas, and Nutimov lawsets
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* Titan's Final Lament - Colossus and hierophant crusher trophy rework (#66793)
This is somewhat a port of BeeStation/BeeStation-Hornet#6805 with slight changes, credits to Rukofamicom for the original PR.
Kinetic crusher is supposed to be a high risk high reward weapon, but with current hiero wall trophy it just ends up with the player cheesing mob and boss AIs. To fix this, here we change hiero trophy to spawn a hierophant chaser instead of a wall, which will increase player's DPS without offering them any protection.
However, this creates another issue: right now colossus is unbeatable with crusher without cheesing it with the wall due to it's shotgun attack which kills and dusts you point blank or 1 tile away, which is extremely unfair and unfun. To fix this, I add what should've been done from the start - make colossus telegraph it's attacks before starting them. Player has 1.5 seconds to react(unlike 3 seconds in the original PR which made the fight much easier) and dodge the attack or at least get away from the colossus to have a chance to survive.
Since this does make the fight significantly easier, colossus gets a special final attack during which it shouts "Perish" and uses different attacks. Unlike in the original PR, he can only use it once, so it's not as deadly and bullshit. This should make the fight more epic and similar to other bossfights which get cool attacks near the end of the battle.
Goodbye 4 GBP, you served me well.
* Titan's Final Lament - Colossus and hierophant crusher trophy rework
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
* Separates regenerative core and wounded alerts (#66794)
This has been bothering me for ages, it doesn't make sense for wounded and regenerative core status effects to have the same icon and in the original PR author said that he didnt put regen core into the icon instead of the skull because he didnt want wounded status effects to have the regen core as its icon, so here you go. Wounded effects still keep their skull while regen cores have proper sprites.
* Separates regenerative core and wounded alerts
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
* Converts drunkness and dizziness to status effects. Refactors status effect examine text (and, subsequently, stabilized black extracts). (#66340)
* Refactors dizziness into a status effect
* Refactors the dizziness setter to use the new kind
* Drunkness.
- Should drunk continue to work off of a magic value or be swapped to duration? I've not yet decided: For understandability it's preferabale for "drunk" to use a timer (they are drunk for 3 more minutes), but both adding drunk and decreasing drunk currently use weird calculations which would be difficult to carry over.
- Ballmer is a liver trait
* Dizzy was a setter, not an adjuster
* Does all the drunk effects over
- refactors examine text fully
- refactors stabilized blacks because of this
* Removed
* repaths, fixes some issues
* Minor fixes
* Some erroneous changes
* Fixes some dizziness errors
* Consistency thing
* Warning
* Undoes this change, I dont like its implementation
* max_duration
* Max amount
* Should be a negative
* max duration
* drunk doesn't tick on death
* Rework dizziness strength
* Erroneous dizzy change
* Fixes return type
* this should do it?
* well, one more
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Makes smoke and foam attempt to fill the available space.
* wew
* reset
* Revert "reset"
This reverts commit 75be4f934504793ceb5c9bf2f3774dc24517df5a.
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* Clever Mutation (#66650)
Basically, the Pull Request just adds a new trait that allows for mobs that might otherwise not be able to do stuff like use computers, do surgery or interact with PDAs to do so. Primarily aimed at monkeys, though there may be other mobs that this could be useful to as well.
* Clever Mutation
Co-authored-by: Sneeker134 <53362182+Sneeker134@users.noreply.github.com>
* Refactors firestacks into status effects (#66573)
This PR refactors firestacks into two status effects: fire_stacks, which behave like normal firestacks you have right now, and wet_stacks, which are your negative fire stacks right now. This allows for custom fires with custom behaviors and icons to be made.
Some fire related is moved away from species(what the fuck was it even doing there) into these as well.
Oh and I fixed the bug where monkeys on fire had a human fire overlay, why wasn't this fixed already, it's like ancient.
Also changed some related proc names to be snake_case like everything should be.
This allows for custom fire types with custom behaviours, like freezing freon fire or radioactive tritium fire. Removing vars from living and moving them to status effects for modularity is also good.
Nothing to argue about since there's nothing player-facing
* Hud Image Culling By Z Level: Theft edition (#65189)
* makes hud images only apply by z level
* makes some of the atom_hud procs have better names
* fixes warning with the hud_user list and adds better documentation
* better docs for hud_images
* removes TODOs
* docs for hud_list
* adds support for linked z levels so mobs can see lower ones
* fixes merge conflict and shittily makes only shocked airlocks get added
* adds support for setting images in the hud as active and inactive
* gets rid of unatomic spatial grid change
* maybe i should actually try COMPILING my changes
* fixes merge skew and makes it compile again
* fixes huds refusing to remove from users who changed z level
* improves z level and registration logic
* fixes antag huds not appearing
* Fixes antag huds not properly setting. We now use hud_list in init, so it needs to be set before the new call, not after. Not sure why the use of appearance key was split like this, but none else knows either so none can stop me
* Ensures that hiding a basic appearance also hides the atom's active list too
* Fixes antag huds going poof
Ensures that remove_atom_from_hud will return false if the passed atom
isn't managed by it
This fixes antag huds disappearing randomly, since they assumed that if
the parent call of remove_atom_from_hud returned true, we should delete
ourselves. This is a safe assumption for them to make, since they should
only ever have one atom.
Does kinda bork if we call remove_atom_from_hud in a way that is unsure
if the passed atom is actually in that list. We were forced into doing
this by how atom huds use the qdeleting signal.
* makes basic alternate_appearance's only update themselves when setting their hud image to active and makes them not add themselves to the global huds_by_category list
* fixes mistake with hud_users list being set non associatively (bad)
* as anything in bot path loops
* Fixes merge skew problems
* Makes bot paths non global
This way they can show themselves to only the bot that "owns" them, ya
feel me?
* Fixes huds not showing up sometimes, cleans up some code
Post Kapu's limb refactor, we were calling prepare_huds twice in a human
init call chain. What was happening was this:
call prepare_huds() // Human
I gained a new hud image
I set active hud icons to mirror it
call prepare_huds() // Living
I overwrote the new hud image
I attempted to set active hud icons, which failed because it assumes
this can never happen
*cries*
* Renames add_hud_to_atom to show_to
My hope is this will make understanding hud code a bit easier, by tying
the behavior to a "verb" more closely. Also renamed a few vars
* remove_hud_from_mob -> hide_from
* Nitpicks a few comments
* Whoops/fuck/shit/damn it all/hhhhhhhhhhhh
* Moves check down, improves stack trace a bit
Co-authored-by: KylerAce <kylerlumpkin1@gmail.com>
* small touch-up
* this should do it
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: KylerAce <kylerlumpkin1@gmail.com>
* Parallax but better: Smooth movement cleanup (#66567)
* Alright, so I'm optimizing parallax code so I can justify making it do a
bit more work
To that end, lets make the checks it does each process event based.
There's two. One is for a difference in view, which is an easy fix since
I added a view setter like a year back now.
The second is something planets do when you change your z level.
This gets more complicated, because we're "owned" by a client.
So the only real pattern we can use to hook into the client's mob's
movement is something like connect_loc_behalf.
So, I've made connect_mob_behalf. Fuck you.
This saves a proc call and some redundant logic
* Fixes random parallax stuttering
Ok so this is kinda a weird one but hear me out.
Parallax has this concept of "direction" that some areas use, mostly
the shuttle transit ones. Set when you move into a new area.
So of course it has a setter. If you pass it a direction that it doesn't
already have, it'll start up the movement animation, and disable normal
parallax for a bit to give it some time to get going.
This var is typically set to 0.
The problem is we were setting /area/space's direction to null in
shuttle movement code, because of a forgotten proc arg.
Null is of course different then 0, so this would trigger a halt in
parallax processing.
This causes a lot of strange stutters in parallax, mostly when you're
moving between nearspace and space. It looks really bad, and I'm a bit
suprised none noticed.
I've fixed it, and added a default arg to the setter to prevent this
class of issue in future. Things look a good bit nicer this way
* Adds animation back to parallax
Ok so like, I know this was removed and "none could tell" and whatever,
and in fairness this animation method is a bit crummy.
What we really want to do is eliminate "halts" and "jumps" in the
parallax moveemnt. So it should be smooth.
As it is on live now, this just isn't what happens, you get jumping
between offsets. Looks frankly, horrible. Especially on the station.
Just what I've done won't be enough however, because what we need to do
is match our parallax scroll speed with our current glide speed. I need
to figure out how to do this well, and I have a feeling it will involve
some system of managing glide sources.
Anyway for now the animation looks really nice for ghosts with default
(high) settings, since they share the same delay.
I've done some refactoring to how old animation code worked pre (4b04f9012d). Two major
changes tho.
First, instead of doing all the animate checks each time we loop over a
layer, we only do the layer dependant ones. This saves a good bit of
time.
Second, we animate movement on absolute layers too. They're staying in
the same position, but they still move on the screen, so we do the same
gental leaning. This has a very nice visual effect.
Oh and I cleaned up some of the code slightly.
* Parallax but better: Smooth movement cleanup
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* [MDB IGNORE] You can have your cake and eat it too. Remake of #66406 (Splitting up areas.dmi + code related stuff) (#66726)
Areas.dmi right now houses all of our mapped turfs icons (which is roughly 400 icons). Not an issue, but it's incredibly large and clunky to navigate right now. This isn't an issue for the average coder and/or player code diving, but it is for mappers wanting to add new turfs. Currently, the file has some organization, but its still an overall mess. This PR aims to slice the behemoth with multiple .dmi files corresponding to specific areas.
I also plan to repath /area/* -> /area/station/* for station turf only. This is to clean it up, as most other turfs follow this format (that being /area/turf_zone/*).
I'm also writing an update paths file as I go along.
* fixbatch 1
* fug
Co-authored-by: Jolly <70232195+Jolly-66@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* Improper forced qdel cleanup, some expanded del all verbs (#66595)
* Removes all supurfolus uses of QDEL_HINT_LETMELIVE
This define exists to allow abstract, sturucturally important things to
opt out of being qdeleted.
It does not exist to be a "Immune to everything" get out of jail free
card.
We have systems for this, and it's not appropriate here.
This change is inherently breaking, because things might be improperly
qdeling these things. Those issues will need to be resolved in future,
as they pop up
* Changes all needless uses of COMSIG_PARENT_PREQDELETED
It exists for things that want to block the qdel. If that's not you,
don't use it
* Adds force and hard del verbs, for chip and break glass cases
respectively
The harddel verb comes with two options before it's run, to let you
tailor it to your level of fucked
* Damn you nova
Adds proper parent returns instead of . = ..()
Co-authored-by: Seth Scherer <supernovaa41@ gmx.com>
* Ensures immortality talismans cannot delete their human if something goes fuckey. Thanks ath/oro for pointing this out
Co-authored-by: Seth Scherer <supernovaa41@ gmx.com>
* Improper forced qdel cleanup, some expanded del all verbs
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Seth Scherer <supernovaa41@ gmx.com>
* Adds some sanity to the blade heretic's mark effect (#66572)
Blade Mark no longer allows you to throw people out of the area
If the mob ends up completely outside of the marked area, they will no longer be burdened by being locked to a room they are no longer within
Heretics can drag blade-marked mobs out of the room they're locked within
Forced movement is no longer blocked by the mark (just in case)
The mark now throws a bit further back into the area + throws gentally
Heretics can't accidentally lock their abduction target in a room
Heretics can't get owned by a bodythrow
Prevents some bugs and rare cases where people can escape the room they're locked to
Managing to escape the area of a blade heretic's mark will no longer constantly burden you as if you never left.
There should be less ways of escaping the area of a blade heretic's mark now.
Heretics can drag people marked by a blade heretic out of the area they are trapped within.
Being thrown back by a blade heretic's mark will be slightly less awkward now, and less dangerous.
* Adds some sanity to the blade heretic's mark effect
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Deadchat control alerts ghosts when they can input another command (#66621)
Makes it so deadchat control alerts ghosts when they can input another command. Also rounds the seconds values in the to_chat messages for deadchat control up, so they don't have a decimal point.
You don't have to keep trying to input something to see if the cooldown has expired yet. Removing the decimal point looks cleaner.
* Deadchat control alerts ghosts when they can input another command
Co-authored-by: cacogen <25089914+cacogen@users.noreply.github.com>
* Eigenstasium overdose effect lines now use a strings file (#66579)
A simple little code improvement that makes eigenstasium lines into a strings file.
Cleans up eigenstasium effect code, and also opens up the possibility to use the new strings file for much more dynamic lines.
* Eigenstasium overdose effect lines now use a strings file
Co-authored-by: Y0SH1M4S73R <legoboyo@earthlink.net>
Having general access to your department is great for design consistency and allows us to properly map access helpers to reflect what is supposed to be general access and what is not, making it so we do not have to map multiple accesses onto one door when it is not required.
Should also fix Atmospherics Technicians not having access to the Supermatter shiftstart.
Co-authored-by: Son-of-Space <63861499+Son-of-Space@users.noreply.github.com>
its a list where we continued if the person was NOT in the whitelist, it continued to the next, so it broke if there was a drone nearby, instead of breaking when there was a human enarby or whatever
fixes#66577 (Station Drones aren't allowed to interact while near another Station Drone)
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>