Commit Graph

13479 Commits

Author SHA1 Message Date
zxaber
b6f32d4647 Fixes cyborg light overlay not showing when the light is off (#64279)
Borgs have a lightbulb overlay. The plane of the overlay depends on the status of the lights, so as to glow when on. The plane being used for disabled lights no longer shows above mobs for reasons I do not know. But this plane (-2) works.
2022-01-21 14:01:03 -06:00
DragonTrance
1943b01766 Slightly* buffs Maint Drones (#64150)
Increases drone health from 30 to 45, making it harder to instantly die from some things
    Lowers the range that drones can't do interactions from 4 tiles to 3 tiles
    Lowers stun time from 10 seconds to 7 seconds when EMP'd
    Wait time for when a mob has recently interacted with something has been decreased from 5 minutes to 1 minute
    Drones can now build near dead mobs, but not interact when right next to them (to prevent pulling)

Also adds a new argument for the shy component that allows interacting near dead bodies, but not right on top of them
Why It's Good For The Game

This is mainly for the QOL of Drones. I know "maint" is implied in the name of drones, but it sucks that you have to hide in maint for half the shift while all the airlocks are being opened by everyone, being unable to fix the station from explosions. Also even though the range was 4 tiles for interacting next to living mobs, it seemed a bit excessive when you tried to do stuff.
Changelog

cl
balance: Maintenance Drone health changed from 30 to 45
balance: Maintenance Drone stun times from getting EMP'd reduced from 10 seconds to 7 seconds
qol: Maintenance Drones can now interact near dead bodies
qol: Maintenance Drones don't have to wait 5 minutes to open an airlock when someone recently did it. Now they have to wait 1 minute.
qol: Changed distance Maintenance Drones aren't allowed to interact with anything from a nearby mob from 4 tiles to 3 tiles
/cl
2022-01-19 13:22:35 +13:00
ErdinyoBarboza
61f7afc3e1 Makes Lizardpeople enjoy these nuts (#64184) 2022-01-18 16:20:18 -08:00
John Willard
75638523f3 Makes tipping borgs use SECONDARY attack cancel chain (#64165)
* Tippable returns SECONDARY attack cancel chain

* adds an after_righted proc for silicons to help with downstreams
2022-01-17 15:19:04 -06:00
Seth Scherer
f465a8929c Fixes floorbots dropping full toolboxes (#64166)
The `drop_part` proc was really shittily made, aswell as just fully
untested by whoever made this. Updates it to actually work as it was
intended to (it was treating a type as an object).
2022-01-17 11:53:12 -08:00
Seth Scherer
d7b466caa2 Fixes AIs not being able to announce any laws past Law 3 (#64167)
This was change in a TGUI refactor, but it completely broke announcing
supplied laws.
2022-01-17 18:21:32 +01:00
LemonInTheDark
815bb8ae40 Adds a movement looping system, replaces inbuild procs and spacedrift with it (#62567)
* Adds a subsystem to handle automated directional movement, replaces all instances of walk_towards with it. Makes meteors and immovable rods not drift in space, and makes immovable rods more destructive. Note, I've opted not to use byond's method of moving towards something, which is effectively Move(src, get_step(src, get_dir(src, target))) as it's cringe and doesn't make a smooth line. I've replaced it with a autoupdating rise over run setup, read the code for more details

* woop forgot the subsystem

* Documentation, contributing.md entry, and some cleanup

* Makes the moveloop datum more oop friendly, sets us up for a lot of conversions

* Converts the curseblob and walk_away() to the subsystem

* Changes the default for override from FALSE to TRUE

* converts walk() over, still need to add a replacement proc for it, but we didn't actually have anything that used the raw proc

* converts the rest of walk_to() over, nearing the end now

* cleans up some errors

* Fully documents everything, fills in some missing movement types, uses the power of oop to make things cleaner, and typepaths longer

* Finishes the contributing.md stuff

* Done

* Fefaults -> Defaults, can you tell I wrote this at 1AM?

* resolves bubblegum issues

* Roh's suggestions

Co-authored-by: Rohesie <rohesie@gmail.com>

* Cleanup

* Hey lemon, did you know that Destroy() lives on datums? ahhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh

* Converts over the discrepencies created in my absense

* HAHA FUCK YOU I PAY MY DUES

* Whoops lost some stuff in the merge

* Converts the system from seconds to deciseconds to make dealing with the api more sane

* Some stuff I missed

* Makes movement an inheritable subsystem type, splits the moveloop file into two, one for the subsystem, and one for the datums

* Makes a subsystem that handles directing movers out to other subsystems. It's a bit bad right now, but it's a
good first step. I think I'll move the move loop datum to a lazy var on mobs instead of an assoc list, don't
like lists.

Also makes the movement procs global, I'll move em to the /movement subsystem at some point or something like
that

* Converts the existing uses of the procs over to the new format

* Adds support for subsystem precedence, so a type of A can override type B.
General cleanup, still kinda in debug mode but it's getting better

* I'll admit I'm not too familiar with this, but I think it will work

* Adds starting logic so movement types "pausing" makes any sense
Redoes how waiting is handled to make it based on world.time directly. I don't remember why. I think it's better
this way.

Adds a drifting movement type, moves space drift over to it.
Needs severe work before it's ready, too much info stored and modified on the moving object, see comment
Starts work on making drifting smooth

* Moves almost all space drifting vars over to signals on the movement datum
Properly implements glide size stuff for both the subsystem and the loops. Space drift will be smoother now.
It's not perfect, but it'll work just fine for now

Adds a way to override a client'd mob's glide size mid move, uses it to make entering a spacedrift look right
Adds a way to delay a client move outside of just move_delay, meant to be used for long periods, and setup such
that it doesn't make inputs persist

Adds flags to movement loops, alongside MOVELOOP_OVERRIDE_CLIENT_CONTROL, which blocks client movements while
the loop is firing, and for it's visual delay after

This means you can't exit a space drift until you hit the actual wall. This feels a lot better

Some general logic stuff, move() will return true/false if it succeeded or failed
Adds a stop_loop() proc that's called when a move loop is no longer active

Suck my nuts

* Moves precedence to the loop instead of the subsystem

* Moves drifting into a component, this lets me explictly block input after the move loop ends, so people can't
move the moment they functionally move onto a new tile
This is a bit underdeveloped currently, but that's a problem for another day

Cleans up some uses of move procs, fixes runtimes in metoer and curseblob code
Adds signals for stopping/starting a move loop, sending one for destroy is redundant.
Moves existing event signals from the movable being acted on to the loop itself, makes more sense this way
Makes the move handler return the created loop up the chain so we can register to it
Fixes a logic error in loop contesting code that lead to loops never actually being removed from subsystems
because they didn't know they should be.
Properly changes lifetime from a time to stop, to functionally an amount of moves to complete before stopping
Adds some new signals for pre/post loop process. This is to better tie into components.

I decided I didn't like the idea of tying all functionality to the loops themselves
The loop decides functionally how to move, components or just tied in signals can decide when/when not to move
and can modify properties of the loop

Making a new loop for things like atmos drift, something I'm interested in tackling in the future, seemed silly

* Moves movement procs directly to the subsystem for better namespacing or whatever

* Moves movement packets onto /atom/movable, no longer need the debugging
I've decided to not just put their contents fully onto atom movable, since it makes debugging on live much
harder, can't sdql for them anymore.

Fixes a runtime in meteor code, properly this time
Fixes a logic error in stop_looping
Makes move manager NO_INIT, because well, it doesn't init

* Commits human sin, makes Recover() work properly for movement subsystems

* Fixes immovable rod orbits not always working, they were returning too early in moved and fucking up the var we use to track move count, and thus not sending a signal properly

* Reworks the curseblob to use signals more, and to not use override

* Missed this in the movement ss commit

* Removes override, makes having a higher or equal precedence take its place

* Updates documentation

* Cleans up some unused defines

* Nukes the unused flags option

* Whoops forgot to qdel check

* Removes an unused var I had for client move prevention before I started using a component

* Let's do this properly

* Modernizes meteor code to better match how explosions actually work currently

* Some more cleanup

* Cleans up effect code a little bit
Nukes the effect system's sleep loop, we use movement loops instead
As a part of that, instead of 1 timer per effect spawned, we react to loop failure and make it 1 timer per
effect system
This should reduce the amoumt of slowdown we see after mass lighting break

It's not everything, we're still making a timer per spark effect, but it cuts things down significantly

* Updates explosions to not sleep

* Adds support for modifying a loops delay post process, makes extinguisher code suck less then it does currently, nukes some more sleeps and timer loops

* Converts water tank resin over to move loops rather then sleeps, minor behavior change mind, the cooldown starts on fire rather then on land, but I think that makes more sense anyway

* compile and runtime fix

* Fixes some runtimes, cleans up some code, ensures feature parity when it comes to logging

* Prevents resin foam from space drifting

* Adds support for flags back into the system, I need it for reasons

* Updates move_towards to fix some bugs and resolve some inconsistent behavior, implements a flag that makes a loop's first move start instantly

* Fixes extinguishers not actually transfering any reagents

* Converts sprays to the new system. This does actually minorly change behavior, in that I've changed the order of spray actions from step -> sleep -> wash to step -> wash -> sleep, but I'm not terribly torn up about it because frankly I think it feels better

* Converts grav catapults over to the new system

* Converts trays over to moveloops

* Converts robot streaking to move loops, the other two coming soon

* Compile you won't. Also fixes a behavior issue with oil streaks

* Does directional step_to properly, cleans up the other two streaking types

* Converts step_trigger over, not that it's actually used anywhere. Changes how stoping a move works, you need to explicitly qdel, other the step is just considered to be ignored. This will make life easier later

* Adds a jps movement loop. It's a bit bloaty, id is stupid, but it'll work just fine

* Makes the system support passing in a datum that's just used as extra context for the move. The hope is this makes signalizing things less of an absolute headache

* Begins the conversion of ai movement datums to movement loops

* These two are reasonably simple, only weird thing I'm doing is A: Not allowing target hotswapping, which I hope none is doing, and B: passing the controller into the move loop as extra context so things work properly

* JPS is a bit more complex, partially because the old implementation was a bit weird. 2 major things. 1: I'm dropping what I think was a redundant behavior minimum distance check from the premove bit of logic, since I'm pretty sure it didn't do anything. 2, instead of just stoping the step in an error state like being pulled, we count it against our max move total

* Audit

* Moves most forced movement to the framework, adds some components to make things nicer

* Implements a flag that makes the loop always operate, regardless of precedence and without impacting any other loops

* Moves movement subsystems into the right folder

* Hey potato what if you had two procs that did the same thing and one called the other? Wow it's useless

* Merges slipping and force movement

* Converys conveyors over to the system. It's a bit fragile, but I think it's totally worth it to save the sleep loop

* Precedence -> Priority, cleans up some logic errors, makes priority highest to lowest instead of lowest to highest, straight cleans some code up

* Makes poly and bubbles ignore spacedrift, now that precedence actually functions properly. I'm likely missing cases of this, will deal with it later

* Depression, thy name is linter

* Fixes linter, and hopefully fixes the runtimes in ci too

* Wew

* Sets sprays and extinguishers back to legacy, since people do actually seem to have noticed

* Spelling errors my beloved

Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>

* More detail, moves return descriptions

* Converts transit tubes to the system?

* Adds the glide size modifier. Not honestly sure that this should be default, considering how crummy it makes things look for normal walking, but it's useful as hell here

* Adds a force move in dir template, actual support for fast initial steps (wtf old me) and a helper proc for setting delay

* Cleans up displosal code a bit, I thought about adding it to the system but it would functionally be just 'disposal loops'. Maybe I'll make a template subtype? not sure how I want to handle stuff like this

* Cleans up mob movement a bit

* Let's use the controller's visual delay

* Makes the resin thrower nicer, cries

* Cleans up some comments, replaces an implicit world.icon_size with an explicit one, fixes up a typecheck

* typecache instead of double istype. Can't do much about the !atom/movable, list would be too big I feel

* hhh

* bro wtf

* Documents the why of SS_TICKER

* Puts SSmovement on SS_TICKER. Lets us support tick steps

* Cleans up the charge action. Makes it use moveloops

* Fixes CI? kinda worried that this just got dropped

* Converts disposal pipes to move loops. They stutter a bit more then usual as of now, hoping that's a me thing, if it's not I'ma look at uping the priority of the base subsystem

* Moves the move subsystems off background, puts some on ssticker

* Prevents some things that shouldn't move in space from moving in space

* Documents the general form and usage of the system

* Virgin one vs chad once

Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>

* Removes unneeded check

* Moves appropriate movement subsystems into SS_BACKGROUND. Removes redundant SS_KEEP_TIMINGs

I do want the behavior of SS_TICKER, which at this point is tick based waits, and ignoring overtime when
calculating next fire.
Since honestly, these subsystems should ignore overtime in regards to next fire, the cost of moving A may be
nothing compared to the cost of moving B.

* Makes the MODULUS macro use floor. I knew our coders would never let me down, glad this exists, thanks ninja
Fixes teleporting caused by shitty round() behavior, adds a "you hit your target" case to homing loops

* Converts blood splatters to move loops, that'll do it

Co-authored-by: Rohesie <rohesie@gmail.com>
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
2022-01-16 14:58:41 -08:00
John Willard
a64c5836a8 You can now tip borgs over (#64097)
I hate Silicon

Teaches Silicon that they should still live within the Crew rather than above them, otherwise people will tip you over and no one would want to help tip you back up.

The timers also, for the most part, match handcuff timers, so there's already a human counterpart of this. Even if it wasn't intentional.
Changelog

cl JohnFulpWillard and theOOZ
qol: Tipping mobs over all runs on right click, rather than running on both right and left click.
balance: You can now tip Borgs over.
/cl
2022-01-16 22:57:32 +13:00
Jack LeCroy
943b054eeb Stamina indicator HUD for humans (#64011)
imageadd: Added a stamina indicator to the human mob's HUD.
2022-01-15 20:16:15 -05:00
LemonInTheDark
eb2627fb21 Item Pickup Brush-Up (#64095)
* Item Pickup Brush-Up

Moves pickup animation code to items.dm

Removes sleep() from the current pickup animation. This affords it 3 decisecond to animate rather then 1
I believe this was causing the pixel shifting to end early. A 3 decisecond delay is more consistent with the
initial pr, and I think feels better. Maybe 2 tick is better? or 3 tick without any ending lag? not sure.

Adds a drop animation.
Hooks it in to items being removed from a player's hands, or items being transfered to a location. This includes when an item is removed from storage

Pickup animations have always felt somewhat stilted to me, and while I don't want the shake and long leadup included in the initial pr, I'm not even sure you can tell it's happening sometimes as things are now

It's by definition gonna feel a bit different since well, things are changing. I'm open to feedback on the delays here, especilly on the effect for taking things out of your bag. It's not new, but extending the pickup animation by 2 deciseconds really shows it
Lemme know what ya think yeah?

* Adds a random x bias to pickup/drops on the same tile, I think this will help lesson how crummy that can look
Lowers the same tile y shifting significantly, for similar reasons
Adds a Scale(0.7) to the end/start of pickup/drop. I think this makes things look just so much nicer

* Makes pickup scale slightly more before bouncing back to the size drop uses. starts out smaller anyway

* Moves the attack animation to items.dm. Makes it use the attacked atom's plane, which fixes attack animations playing behind mobs. Also makes it offset slightly on the x axis when you're attacking yourself, looks nicer I think
2022-01-15 22:44:35 +00:00
itseasytosee
a8d8a26122 Allows visual organs to be visible on mechanical limbs (android wings work) (#64094)
Based largely on #60798 which was never finished due to merge conflicts.
As a celebration of this, synths now will have robot-themed wings as they always should have (largely irrelevant change, synths can't process reagents and can only get wings through admin shenanigans)
2022-01-15 16:38:53 +00:00
Ryll Ryll
4f8e007b4d Ports flying bloodsplatters from Hippie for Wounds (#63140)
add: Suffering slashing or piercing wounds, as well as violent dismemberment
2022-01-15 10:34:51 -05:00
Fikou
fd9a7f8a58 MOD update: Modular Cores (#64042)
* Modsuit update - Cores
2022-01-15 13:54:53 +01:00
Tim
40368b022b Fixes deaf people being able to hear (#64044)
* Fixes blind messages not having the MSG_AUDIBLE flag

* Update code/modules/mob/mob.dm

* Update code/modules/mob/mob.dm

Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
2022-01-14 22:22:48 -05:00
SMOSMOSMOSMOSMO
fa2e0dfba6 Mulebots Cant CRUSH you in space (#63938)
* Update mulebot.dm

* Update mulebot.dm

* Update mulebot.dm
2022-01-14 19:02:13 -05:00
hannuwu
13d252dca2 Fix negative firestacks not being able to be obtained (#64043) 2022-01-14 14:05:10 -06:00
John Willard
7bead07444 General pAI code improvements (#63688)
Fikou said they would've made MODsuits be controllable by pAI's rather than AI's, if pAI code wasn't as bad.

But pAI code ISN'T AS BAD AS AI CODE LIKE HOLY SHIT WHAT THE FUCK MAN???

Anyways, this is just general code improvements for pAIs that I thought would be nice to have.

Documents previously undocumented vars
Moves loose vars to be where they should be
Removes single-letter variables
Makes pAI a defined job
Moves vars around to where they should be while removing unused ones.
Makes pAI abilities its own .dm file
Replaces var/silent with Stun() (like cyborgs)
Reworks pAI's doorjack to not have a ton of procs, copy paste, and a reliance on Life(), instead it just uses a do_after()
Moves screwdrivering radios from attackby to screwdriver_act

Just general code improvement for Silicon, the thing no one likes or wants to touch.
2022-01-13 22:19:28 -08:00
nikothedude
e420122ae6 Allows emotes to be uppercase by changing early lowertext() (#63909)
Makes the message of emotes not lowercase by moving the lowertext(act) in emote.dm lower.

And yes, it still recognizes emotes. *coUGH will still happen.

For the guys up here, mainly code cleanup. This PR was originally made for skyrat, because there you can press T and then type "*me blah blah blah". Due to the way this works, before this PR, you couldn't put any capitalization after *me because it'd lowercase it.
2022-01-13 14:59:44 -08:00
ghost sheep
821a64e015 Adds an overlay indicator to venting (#64039)
* vent indicator

* fix the arrow's 1px offset
2022-01-13 17:22:27 -05:00
san7890
85ea2fd93f missing period edition (#64023)
we love small grammatical errors and we love PRing small grammatical errors
2022-01-13 17:17:38 -05:00
MrMelbert
03473da4c5 Fixes gang induction, birdboat vomit, sentient disease actions, and an ooze action (#63958)
In the wake of the actions PR it seems as if a lot of these cooldown actions should have been converted to Activate() and not Trigger() because Activate() returns null on the default implementation which prevents Trigger() from running and AHHH

Converts a bunch of Trigger() to Activate()

I'm gonna be honest I have no idea why it does the startCooldown(10 seconds), startCooldown() thing, all of the megafauna actions seem to do it so it seemed right

Fixes #63764 (Sentient Disease couldn't use Voluntary Coughing)
2022-01-12 19:13:35 -08:00
Kylerace
d413b59f09 makes ai static into images added to obscured turfs to save on maptick (#63666)
for the past week and a half #63439 (Removing ai static) has been testmerged on manuel to test how much the static vis_contents objects on every turf not seeable by cameras affected maptick. 

i didnt expect it to make a big difference since ive tested shared vis_contents among thousands of movables in view and knew that they had much better maptick performance than unique vis_contents objects on every one, and the ai static is all done using one object. However, it did have a big effect, an effect that still probably needs another day or two to measure due to the averaging used in this graph:

manuel on average has gone from a maptick per person of around 0.55 to ~0.45, a full 0.1 reduction in maptick per person, which is incredibly significant. so i worked on a way to actually get rid of vis_contents ai static.

now every camera chunk has 256 (1 for each turf they encompass) images that represent the ai static. every obscured turf gets 1 of the images assigned to their loc and when a camera eye that can see static moves in range of a chunk, all the currently assigned images gets added to that clients images list, and when they leave sight of that camera chunk theyre removed. this has the benefit of having no added images to vis_contents driving up maptick for everyone else in the world. however this means that the images have to be added and subtracted when the eye moves around.

looking at profiles, moving (as a camera mob) around already generated chunks is around 2x more expensive than on master (/datum/camerachunk/proc/add() went from around 0.2 ms per call to around 0.5ms) it appears that updating the chunks is significantly cheaper though for some reason, maybe assigning image locs is much cheaper than adding and removing vis_contents. however this seems to only be for

also probably fixes #38857 (Static not loading at random) since all static no longer depends on one image being rendered by the client but i cant be sure since its hard to reproduce the issue
fixes #63869 (Static not updating)

while ai movement itself is more expensive, maptick is lower for every other player in the game which is worth the trade, especially as player count increases. the lower maptick per person gets the higher population our servers can support without time dilation, and less scaling time dilation per player.
2022-01-12 18:36:28 -08:00
Jeremiah
a2fa7799f3 Removes swarmers from the game (#63989)
What the title says. But why?
I generally have a rule when making a contribution, that is "don't make the game less fun"
I'm not salting, I didn't die to a swarmer.
... Yet that's the problem. Swarmers are the griefiest antag in the game, but when you complain that they're annoying or unfun, you're doomed to hear "lol they can't even hurt you though."

WELL THAT ACTUALLY MAKES THEM WORSE. I would rather die to a hundred xenos and space dragons than be forced to untie myself in maintenance for 45 seconds while the shuttle leaves.
Why It's Good For The Game

Unfun game modes should be removed from the game.

    Being griefed by swarmers is annoying
    Playing as a swarmer is not very exciting either. Click on iron.

lastly, because oranges authorized it
Changelog

cl
del: Removes swarmers! The griefiest, lowest fun value antagonist is removed from the game.
/cl
2022-01-13 13:10:18 +13:00
LemonInTheDark
f8aad14ae8 Harddel Fix Pack #42 + Better Live Reftracking Support (#63877)
* Hard Del Fixes, Ref Tracking Changes
2022-01-12 22:46:13 +01:00
Ryll Ryll
071b6f05e8 Misc admin tools improvements (#63665)
About The Pull Request

This PR makes a few small tweaks to admin tools that I think frequent users may appreciate.

    Adds the "Find Updated Panel" button to the player panel, which bring up that ckey's newest PP if one exists. Useful for when the person you're inspecting has changed mobs so you don't have to search for their new mob to get their new panel.
    Adds VV and TAG links to all the entries in the Get-Contents right click verb. This should make checking and editing someone's gear easier, since you don't have to VV the person -> their satchel -> their survival box -> their oxygen tank for example, you can just click the VV link for the tank directly.
    Lets you ignore punctuation in the F6 player search menu. This was a request, so if you have a silicon named "H.E.R.A.", you can now pull it up by just searching "hera". Also ignores spaces, but I doubt that'll cause any issues.
2022-01-12 18:58:32 +13:00
Seth Scherer
4a0086da72 Fixes drones being able to place their tools into storage containers (#63801)
* fix

* review
2022-01-11 22:24:02 -05:00
Seth Scherer
c744385537 Fixes not being able to say ahelp in dchat (#63988)
* fix

* better code
2022-01-11 22:23:15 -05:00
Watermelon914
8fd85e9666 [MDB IGNORE] BIDDLE TRAITORS - Adds progression traitors. Refactors uplink code in its entirety (#63588)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: Ghilker <42839747+Ghilker@users.noreply.github.com>
Co-authored-by: tgstation-server <tgstation-server@tgstation13.org>
Co-authored-by: gbfree <guillaumebfree@gmail.com>
Co-authored-by: Sealed101 <75863639+Sealed101@users.noreply.github.com>
Co-authored-by: Changelogs <action@github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: vincentiusvin <54709710+vincentiusvin@users.noreply.github.com>
Co-authored-by: oranges <email@oranges.net.nz>
Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: Azarak <azarak10@gmail.com>
Co-authored-by: RandomGamer123 <31096837+RandomGamer123@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
Co-authored-by: ike709 <ike709@users.noreply.github.com>
Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Pepsilawn <reisenrui@gmail.com>
Co-authored-by: AnturK <AnturK@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: SuperNovaa41 <supernovaa41@protonmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: san7890 <34697715+san7890@users.noreply.github.com>
Co-authored-by: MMMiracles <lolaccount1@hotmail.com>
Co-authored-by: Krysonism <49783092+Krysonism@users.noreply.github.com>
Co-authored-by: Aziz Chynaliev <azizonkg@gmail.com>
Co-authored-by: Tastyfish <crazychris32@gmail.com>
Co-authored-by: Mooshimi <85910816+Mooshimi@users.noreply.github.com>
Co-authored-by: carshalash <carshalash@gmail.com>
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
2022-01-11 15:47:10 -08:00
GoldenAlpharex
c6d616ff11 Documents and improves the variable names of the shuttle subsystem (#63946) 2022-01-11 16:08:34 -05:00
Seth Scherer
d10c459c30 Fixes a runtime with syringe injection text (#63953)
* fix

* fix
2022-01-11 16:06:36 -05:00
Kylerace
24bb1e0c8f makes people with the claustrophobia quirk fear santa claus (#63981)
People with the claustrophobia quirk will now be afraid of Santa Claus and certain Claus-like entities
2022-01-11 08:13:54 +00:00
LemonInTheDark
eea6591f56 Kills all unneeded uses of spawn() (#63876)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-01-10 23:22:29 -08:00
GoldenAlpharex
248fabe855 Fixing living_say because I totally didn't accidentally break something (#63939)
* Yeah it works now, you're welcome lizards and hulks and stutterers
2022-01-10 14:57:37 -06:00
MrMelbert
2ea06e9c30 Exorcises copy+paste from cult building code (minor cult building refactor / repathing) (#63528)
* Building changes

* map changes

* constructs + missed subtypes

* clarify these var names

* fix path

* pls run

* generalized it a bit

* can't run that on initialize
2022-01-09 21:54:13 -08:00
DragonTrance
5cbd2deb51 Various suicide_act() things (#63808) 2022-01-09 15:48:47 -08:00
Seth Scherer
8660e5e978 Fix grapes (#63892) 2022-01-09 01:14:35 -06:00
Seth Scherer
5be6a2c054 Fixes all the regal rat issues (#63798) 2022-01-07 15:49:36 -08:00
MrMelbert
556153c0a5 Changeling refactor / doc / code improvements (kicks changeling out of Life()) (#63669)
Changeling code cleanup
2022-01-07 13:09:35 +01:00
SmArtKar
21a2aada04 Fixes a lot of runtimes caused when spiders are on spiderwebs (#63796)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-01-07 03:50:32 -08:00
ghost sheep
3c0f7f2a5c chatmessage.dm offset adjustment (#63848)
changes the pixel_y and pixel_x of a 'message' to maptext_width and maptext_height instead of bound_width and bound_height.
2022-01-07 03:32:37 -08:00
TemporalOroboros
11ccf19741 Makes sure COMSIG_ATOM_EX_ACT is always called. (#63685)
Creates a wrapper macro for ex_act() and moves the signal and contents explosion calls to there. This way we can ensure the signal is always fired. Also desnowflakes reagents responding to explosions.

Ensures that a signal is always called when the attendant proc is called.
2022-01-06 18:45:53 -08:00
GoldenAlpharex
413fd90502 Dullahan Partial Refactor: They Work Again Edition (#63696)
So, a few months ago I was like "hmm there's something weird going on with party pods...", which got me looking into important_recursive_hearers or something like that. I spoke about it in the coding channel and Kyler actually fixed it before I did. But I also caught a similar glitch with Dullahans, so I decided to investigate...

Two months later...

I present to you a partial unfuckening of the Dullahans, in that I made them fully functional once again:

They only hear speech through their head (not sounds, sadly, someone else would have to tell me how to do that because I otherwise really wouldn't know how to do it in a sane way), they speak through their head, runechat-included.
When you spawn a Dullahan, you're set to look through the Dullahan's eyes (so from their head), and that doesn't reset when you log off and back in, or admin-ghost and come back in your body.
When you're looking through your head, your view will no longer be reset to your body upon entering a locker, which is nice to avoid not being blind while looking through your body.
Dullahan heads no longer look completely lifeless and without organs. They have eyes that don't look dead and that even match the player's intended eye color.
Dullahan can now properly examine things from their head, which was intended and 100% not functional.
Dullahan heads now speak with the proper name of their owner, instead of having a random name attached to it at round-start.
Dullahan heads are also now properly named too.
Dullahans can now properly whisper, sing and do all these funny things that they were unable to do before.
Dullahan whispers will now properly respect the range of the whisper.
Dullahans can now succumb in hardcrit by whispering, as intended. This potentially fixes other species that worked similarly not being able to succumb, like abductors, although I didn't test if they normally could, I just know they absolutely will be able to now.
When switching from Dullahans to a different species, your old head will no longer stay behind.
I also added a proc for species to do some code when we get a ckey login in our mob, which could potentially be useful for other stuff in the future, but it was necessary here as the view is reliant on the client, which we want to ensure doesn't get weird view glitches like having their head's vision overlay while actually being centered on their body.

I also made it so say() now takes a range argument, which is 7 by default, just so things that aren't humans can also whisper and do all those kinds of things. Going with that, there's probably a few more things that will be able to be done better thanks to this, although I haven't tested every edge case with this, but I doubt it will make much of a difference in the future.
2022-01-06 14:38:38 -08:00
Seth Scherer
d602967641 Fixes the riding component not working with basic mobs (#63884)
basic mobs were missing behavior on relaying movement
2022-01-06 13:38:37 -08:00
Seth Scherer
628350a83b Drones can now vent crawl around people (#63854)
Also adds in the ability to whitelist machines with the shy component
2022-01-06 13:37:08 -08:00
Seth Scherer
3898e6e9d3 Fixes runtimes when admin ghosting out of a camera eye (#63838)
observetarget is not guaranteed to exist
2022-01-06 13:35:39 -08:00
Mothblocks
ae427c0058 Remove the auto updating in the orbit menu and bring back manual refresh (#63790) 2022-01-05 07:01:48 -08:00
Fikou
24082a2b4f Adds Maintenance MOD Modules! (#63791) 2022-01-04 15:47:21 -08:00
Seth Scherer
025b1ddfaf Elementizes cult halos + cult eyes + fixes some issues with them (#63683)
* should be good

* autodoc

* signal rearranging

* final comment

* review
2022-01-03 14:35:06 -06:00
Azarak
81cef3b9c6 Fixes field of view handler perceiving the wrong eye (#63700)
* Fixes field of view handler perceiving the wrong eye
2022-01-01 04:09:33 -06:00
interestingusernam3
21085ae463 Adds MOBILITY_LIEDOWN (#63602) 2022-01-01 03:55:36 -06:00