Commit Graph

13110 Commits

Author SHA1 Message Date
小月猫
7946b134b4 Fixes a bug with pronoun swapping inside of names (#60266)
fixes #60253

the above issue showcased a really weird issue with "manual_emote()" which took an emote and then changed the pronoun mid-use, which on its own is ok, but some mobs include names with their emote, hence changing "pronouns" in the middle of peoples names

this method of using manual_emote() is dumb because theres already a proc for changing pronouns in a string, as well as dedicated procs for inserting the correct pronoun for the given mob DIRECTLY in the emote string itself

so what I did was remove the part of the code in manual_emote() that swapped pronouns, it wasnt needed, and instead went to every single emote string that used it and used the [p_they()] procs to get the correct pronouns.

while i was at it, i also touched up descriptions and other miscallaneous emotes and mob communication to get rid of "It's". mobs are by default plural, they arent objects, instead replaced with "they're" etc... a mobs and mob subtypes gender WAS respected

also gave the male gender to two very specific clown mobs which are clearly coded male. gave the void_corgi a neuter gender, since its description makes it a reference to the "void stares back" phrase, which makes it genderless as the void is not a noun.

EDIT: oh, and i did fix an issue with the replace_pronouns() proc, which uses "msg" as its var, but one if statement was "message".
2021-07-19 17:17:18 -03:00
LemonInTheDark
96cc4a7260 EVEN MORE HARDDEL FIXES (#60228)
Fixes a ton of harddels, sourced from #59996 
I think this brings us down to like, ~100 per round from ~200, with only like 20 of those being proper hell failures. I've seen harddel profiles below 1 second of total cost. Feeling good.

See you on the other side

Makes the cryopod control computer into a weakref, never trust bee code 
Converts brig door timer internal lists to weakrefs
Fixes a harddel caused by qdeling a motion sensitive camera after it had left its source area, jesus christ why didn't we do this already holy shit
Converts the radio implant ref held by the antenna mutation to weakrefs because it isn't reliably cleaned up, makes the radio implant actually qdel its fucking radio
Removes the target var from the throwing datum, it does literally nothing and just exists to cause harddels, mostly for the singularity
 Fixes a cable harddel sourced from things that try to enter blueprints after smoothing, but before roundstart. IE, shuttles. Removes shuttles from the blueprints
Fixes emmisive blockers being added post qdel
Removes some manual ghosting from cryopods, I initially did this for harddel reasons, but I figured out a better fix for that. I'm now doing it because it's got this really strange logic for like "re-entering the game" that doesn't actually link to what the ghostize proc does. We should remove this at some point
Fixes robot hud objects harddeling due to hanging refs
Fixes buildmode related hanging refs, I'm coming for you admin team
Fixes a few instances of trying to add the forensics component post qdel, hhhhhhhhhhh
Fixes some split personality harddels/weirdness
Replaces a use of disconnect_duct with an init qdel hint, I suspect there's more issues with duct harddels, I've seen some odd logs about ahhh the area_contents list, but we can worry about that later
Makes teleporter targets into weakrefs, properly types them as /atom
Makes frequency devices into weakrefs
Makes cameras remove themselves from camera nets on Destroy
Makes tgui ui datums implement destroy, this means if I ever see one hang a ref to user or whatever, I know there's an error with calling close() properly. I've seen this harddel once, but not after this change so I assume there was some error with close(). IDK maybe this is a papering over? Would have to ask @stylemistake 
I've seen logs of beartraps being in world post del, putting a return there just in case. The same is true of nerf darts, but I haven't really looked into that yet
Makes a shoe's ref to untying alerts a weakref, yes this is needed.
Moves clearing client_in_contents to the Login of the new mob. This prevents doing things like ghosting someone before a mob qdel causing harddels
Fixes a harddel set sourced from adding a status effect to a qdeleted thing. Is this an error? I'm honestly not sure.
Converts bsa code to weakrefs
Converts the partner var of heat exchangers to weakrefs
Converts camera assemblies to weakrefs
Fixes some dumb behavior with ammo casings and assuming you'll be on a turf post Destroy parent call
Fixes? merger related harddels, you were never cleared from your own members list, so origin objects would end up making a new list, creating harddels. Potential input from @ninjanomnom about the logic
Chasms store a static list of "falling atoms", which only exists for chasms that go somewhere else. This list wasn't being cleared of qdeleted objects, which is what happens when you fall in most chasms. Fixes this, and converts the list to weakrefs.
Fixes some runtimes in both sheet code, and the weather listener element. This is here because runtime spam made testing more of a pain, didn't think it needed its own pr
Fixes colorful reagent harddels sourced from reagents that were qdel'd before roundstart. I'm only like 50% sure this actually got it, but the issue may have been solved by #60174, so eh
Turns the nuke op antag datum's ref to the war button into a weakref
Fixes some holopad code that was not nulling refs all the time
Converts camera bugs to weakrefs, this was the result of the bug being "reworked" like 6 years back without taking the existing ref clearing into account. Whole item needs a redo, but this'll do for now.
Ensures that the both pulling and pullee refs are cleared on Destroy
The crew monitor held all users in a non clearing list, makes that list a weakref because I hate everything

Oh and I removed all sources of gas_mixture qdeletion, I'm kinda unsure on this since it's not technically supported, but any harddels from it might? indicate something going wrong with like, gas passing logic. I'd like @MrStonedOne's thoughts, since I trust him to call me an idiot if I'm wrong.

<!-- Please add a short description of why you think these changes would benefit the game. If you can't justify it in words, it might not be worth adding. -->

## Why it's not good for the game

I crashed sybil like 10 times to get this data, I'm gonna put it to good use. Don't think you're safe sybilites, I'm coming for you.
2021-07-19 12:41:21 -04:00
Rohesie
4c21166e4f Job refactor: strings to references and typepaths (#59841)
* Job refactor: strings to references and typepaths
2021-07-18 20:48:47 +02:00
Kylerace
b4f9c979ce fixes ghosts not being included in get_hearers_in_view(), AGAIN! (#60297)
thanks to shaps for reporting this
turns out mob/dead/Initialize() doesnt call parent, and mobs are made hearing sensitive in mob/Initialize(), so ghosts yet again werent included in get_hearers_in_view(). now they are!

now actually tested this time by attacking pun pun then ghosting, on master the red attack text doesnt show for ghosts in view but now it does

with the first pr the issue was because when target was a mob, view() only includes what the mob can see, so i made it always use a turf like it was previously. but the refactor done in the same pr meant that ghosts didnt become hearing sensitive so whoops
2021-07-17 23:34:21 -07:00
IndieanaJones
7ba84920e8 Space Dragon Nerfs and Adjustments (#60259) 2021-07-17 15:24:07 -07:00
Watermelon914
04906514e2 Fixes light explosions having 0 chance to delimb someone if they have no bomb resist (#60261)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
2021-07-17 12:30:37 -07:00
Kylerace
44779b794c makes get_hearers_in_view() faster AGAIN, fixes issue with previous optimization (#60219)
fixes #60197
woke up today with a ridiculous idea of semi-automatic compile time loop unrolling, wasnt worth the complexity in the least but it made the basis of this PR which i then continued work on. makes area_sensitive_contents into a more general system of important_recursive_contents where we can define reasonable uses to replace recursive contents iteration of the type found in get_hearers_in_view() as long as everything that uses it isnt something incredibly common to the point that it noticeably increases memory usage.
2021-07-17 00:49:55 -03:00
Sheits
7676a09f5f Fixes the flightpotion check to include new races (again) (#60084)
Flight potions now work on fly people, androids and skeletons.
2021-07-16 19:47:02 -03:00
Kylerace
c60bceba41 fixes hyperspace connect_loc_behalf bug (#60231)
turns out my move_stacks var doesnt work asynchronously since this bug made things with connect_loc_behalf runtime on every movement unless you somehow moved it back to the transit turf and off without it doing the runtime special.

(The sleep and hell the whole bit of code in space/Entered was unneeded, since it just happens normally as a part of move. Life is pain) -Lemon

also does misc code improvements i found while investigating ANOTHER c_l_b bug with stacks i found while testing this one, which i did NOT manage to fix unfortunately
2021-07-15 19:54:20 -07:00
John Willard
a7790bc5ae Fixes density when fireman carrying (#59900) 2021-07-15 19:02:02 -07:00
小月猫
6c63803394 Changes AI holopad functionality (#60214) 2021-07-15 18:14:46 -07:00
Wallemations
a78799f8ae Adds Ants, Decomposition, and some extras. (#59634)
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
2021-07-15 18:12:15 -07:00
Fikou
09ba25df6b gravity filter now gets removed if gravity is normal (#60220) 2021-07-15 17:28:29 -07:00
Watermelon914
0066181c1a Added more complex AIs to carps when tamed. (#60027)
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
2021-07-15 15:04:29 -07:00
Wayland-Smithy
bb42bed0bf Gives Revenant the ability to orbit adjacent things with secondary attack (#60200)
Leverages right click to give Revenant something I felt it should have had when first implemented, but I can understand now it's not a low effort undertaking with the snowflakeness of incorporeal jaunt code that only runs on Move() 🤮

I put a lot of care into making sure this won't break or bypass jaunting counters like holy water and salt.
2021-07-14 16:41:51 -03:00
Wayland-Smithy
f523a1fe82 Fixes AI holopad runetext, right click interact, call reject button (#60181) 2021-07-13 13:47:39 -07:00
Watermelon914
6b473c883b Remove the refresher crystal as a possible lavaland anomalous crystal (#60192)
Removes the "refresher" crystal as a possible lavaland loot item.
This crystal allows people to abuse limited-use items to be used infinitely, and also instantly recharge items such as laser guns.
The other crystals are nowhere near as good as this one.

This crystal makes limited-use items infinite, which goes against the point of a limited-use item.
For example, holoparasite injectors and wands can be recharged by this. Antagonist combos have been done with the fireball wand from lavaland that allow them to wipe the entire station stronger than a wizard ever could.

Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
2021-07-13 20:35:52 +01:00
Ghom
18b7a4ffeb fixes the rat king's abilities being usable while dead. (#60127)
Fixed the rat king's abilities being usable while dead.
Fixed the rat king's Domain ability being usable on cooldown.
2021-07-13 09:46:31 -07:00
Putnam3145
ea6629eb11 Optimizes the slowest Life proc in the game to make it not do 81x as much work as it needs to (#59980)
view(n, obj) is O(n^2). it is a bad idea to make n bigger than it needs to. making it range 9 and then completely throwing away the result if the thing it found is more than 1 range away is exactly doing this.
2021-07-12 17:58:42 -03:00
Wayland-Smithy
f0937c5463 Improves Chat Highlighting: allow more symbols, match word/case toggle (#60146) 2021-07-12 01:43:39 -07:00
Ghom
8eceb3d8ae Venus human traps and swarmers are now numbered. (#60151)
"This is terrible for logs and ahelps as people can't report the number of the mob, which I'm pretty sure is part of why we number spiders, monkeys, and blobbernauts." - RaveRadbury.
2021-07-11 23:47:30 -07:00
Wayland-Smithy
fe3823a84d Fixes admin observer special radio keys double sanitizing input (#60039)
Moves /mob/dead/observer/say() message sanitize code to after the special admin radio keys logic that will also sanitize.
Changes an if else chain to a switch statement,
2021-07-11 23:38:21 -07:00
Ghom
469e9a1e8a Removes duplicate chat feedback on [mob/carbon/proc/swap_hand()] (#60126)
Deletes a duplicate chat feedback on [mob/carbon/proc/swap_hand()]
2021-07-11 23:27:32 -07:00
Ghom
6285a228e4 Fixes ai monkeys from appearing as catatonic on examine.dm() (#60152)
Title. From control statement if to else if.
2021-07-11 23:14:42 -07:00
Ghom
d1a74025f4 Fixes inhand holder jank separating pAIs holoforms from their shells. (#60153)
Title. This was caused by a release() being called twice because of a dropItemToGround() call in the middle of it...
release() --> dropItemToGround() --> dropped() --> release(), got it?

Fixes #47825 
(Start being scooped.
Be in someones hands as holoform.
Click: toggle holoform.
2 pAIs???)
2021-07-11 23:14:10 -07:00
Ghom
4cc1259ff8 Fixes xeno/monkey combat mode rclick attack plus stun (#60155)
Fixes being able to simultaneously perform an attack and a tackle as a xeno or monkey with right click and combat mode on.
2021-07-11 23:10:59 -07:00
coiax
364e2e1f92 Change ashwalkers to have custom lungs (#59413)
* Changes ashwalkers to have custom lungs

Ashwalkers now have lungs that are specially adapted to Lavaland
environments. However, that specialisation comes at a cost at sometimes
not being able to operate in normal human air conditions.

- Ashwalker lungs take a gas sample of the default lavaland atmosphere
  on initialisation in order to customise themselves
- Currently, excess O2/N2 has no functional drawback, so no maximum
  value is set on the lungs. If Lavaland rolls a higher N2/O2 mole count
  than human air, they will still struggle however.
2021-07-11 16:02:30 -07:00
Kylerace
cefd5abb0c Fix potential holodeck bee exploits (#60138)
* fixes potential holodeck bee infinite chem exploit

* fixes holobee holding in hands abuse vector
2021-07-11 20:36:45 +01:00
Ghom
4493a7c5e5 Fixes "lobstrosities can finish charging even while dead" (#60113) 2021-07-10 17:42:10 -07:00
Kylerace
ca02dc622b fixes a connect_loc runtime related to abstract_move (#59969) 2021-07-10 17:40:53 -07:00
Kylerace
e31a70f45a optimizes get_hearers_in_view() (#60093) 2021-07-10 03:11:50 -07:00
Wayland-Smithy
1f301f8270 Better wabbajack polymorph logging (#59991) 2021-07-08 22:41:12 -07:00
obsol
940e9557fa Adds random number to space-dragon-rift-spawned space carp (#60058)
Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
2021-07-08 21:29:54 -07:00
Wayland-Smithy
33781ac857 Fix Tram ghost magnet and other cases of observer forceMove (#60026) 2021-07-08 18:11:13 -07:00
Time-Green
8a7f258171 The Great Species Dedatumming: External feature organs, part 1 (#59981)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2021-07-08 08:27:19 -07:00
Wayland-Smithy
0d1ef29662 Drastic Lag Mitigation Subsystem: SSlag_switch (#59717)
Requested by oranges and inspired by the upcoming event. A new subsyetem, non-processing (for now), aimed at providing some toggle switches that can be flipped as a last ditch effort to save some CPU cycles by sacrificing some non-critical mechanics. Below you can see each individual toggle.

Screenshot of the admin panel:
image
Surely there are more opportunities for toggles I missed, but adding new ones is not very difficult at all.
Why It's Good For The Game

Better performance during extreme pop, I hope.
Changelog

cl
code: Introduces the Lag Switch subsystem for when a smoother experience is worth trading a few bells and whistles for. Performance enhancement measures can be togged by admins with the Show Lag Switches admin verb or enabled automatically at a pop amount set via config.
config: Added a new config var: number/auto_lag_switch_pop
2021-07-08 11:02:52 +12:00
LemonInTheDark
0654cde093 Fixes a good few improper overlay icon_states, fuck gun code edition (#59580)
* Fixes a good few improper overlay icon_states, fuck gun code edition

* Rewrites comment to be less word salad, changes display_mag to the already existing and unused mag_display
2021-07-06 21:05:37 -07:00
MrMelbert
2a3330c132 Non-changeling spawned headslugs now burst non-antag changeling variant again (#59944) 2021-07-04 20:56:28 -07:00
Greniza
b2ecb787e1 Environment Protection Bags + Minor Weather Changes (#59752)
Co-authored-by: Matthew J. <12817816+ZephyrTFA@users.noreply.github.com>
2021-07-03 22:05:58 -07:00
Watermelon914
a57a04b320 Fixed carps being untameable and fixes tameable code not properly removing itself from something (#59955)
Fixes #59897
2021-07-03 14:44:09 -03:00
Wayland-Smithy
cc40cc4677 Fix blanket cure_blind calls removing quirk and blindfold traits (#59943)
Makes it so when proc/cure_blind(source) is called with no source is does not cure blindness from the quirk, blindfolds, or other eye coverings.
2021-07-03 14:34:32 -03:00
interestingusernam3
3c202820ef Makes polar bears not become easier to move after you kill and revive them (#59939) 2021-07-02 13:21:33 -07:00
Rohesie
2c5a357035 Reverts Entered() passing dir instead of old loc (#59910) 2021-07-01 17:06:42 -07:00
LemonInTheDark
d368e4d49d Changes how weather sends sound to players, reduces sound loop overtime (#59284)
* Converts looping sounds from a list of play locations to just the one

* Updates all uses of looping sounds to match the new arg

* Adds an area based sound manager that hooks into looping sounds to drive the actual audio. I'll be using this to redo how weather effects handle sound

* Some structrual stuff to make everything else smoother
Timers now properly return the time left for client based timers
Weather sends global signals when it starts/stops
Looping sounds now use their timerid var for all their sound related timers, not just the main loop

* This is the painful part
Adds an area sound manager component, it handles the logic of moving into new areas potentially creating new
sound loops. We do some extra work to prevent stacking sound loops.
Adds an ash storm listener element that adds a tailored area sound manager to clients on the lavaland z level.
It's removed on logout.
Adds the ash_storm_sounds assoc list, a reference to this is passed into area sound managers, and it's modified
in a manner that doesn't break the reference in ash_storm (This is what I hate)

* Hooks ash storm listener into cliented mobs and possessed objects

* Documents the odd ref stuff, adds an ignore start var to looping sounds, fixes some errors and lint issues

* Applies kyler's review

banging

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

* Cleans up some var names, reduces the amount of looping we do in some areas

* Makes the code compile, redoes the movement listener to be more general

* fuck

* We don't need to detach on del if we're just removing signals on detach

* Should? work

* if(direct) memes

Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
2021-06-30 20:51:35 -04:00
Time-Green
2a1569a7a7 Remove unnecessary species breath code (#59864)
Human code override breathe(), called the species datum which checked if the human had NO_BREATH. I just made it check for NOBREATH directly, since it is apparently a human only trait.

If someone wants to implement special breathing checks/behaviour, make custom lungs
2021-06-29 17:21:47 +01:00
Rohesie
3c91a86cc5 Fixes a runtime: Entered() passing the wrong args (#59854) 2021-06-28 15:44:53 -07:00
cacogen
d3dd525e08 Cannabis has more believable effects (#59360)
Adds cannabis reagent and replaces space drugs with it in cannabis products
Adds space drugs to rainbow weed, which fits its theme and might satisfy the people who miss the effect
Removes lipolicide from cannabis products in favour of the reagent consuming nutrition directly
Cannabis reagent gives you messages describing symptoms of cannabis intoxication, makes you laugh, makes you hungry, has a chance to couchlock you buckled to a chair and put you to sleep lying down
Cannabis no longer references hallucinating, can't be overdosed and has no addiction
Adds Stoned status effect, which is applied by cannabis reagent
Stoned status effect slows you down, gives you bloodshot eyes, makes you clumsy, boosts your mood and gives you the drugged sound environment
Adds "stoned" icon state for Stoned status effect screen alert (sprite shamelessly stolen from the Smoke spell)
Adds BLOODSHOT_EYES trait, which is applied by Stoned status effect
Adds examine eye descriptions for bloodshot eyes and player-chosen red eyes
Adds cannabis movespeed modifier, which is applied by the Stoned status effect
Adds Stoned mood event, which is applied by Stoned status effect and gives the same mood boost as High but doesn't reference tripping
2021-06-27 21:14:48 -03:00
Time-Green
a915c7167e Refactors species stomach code, makes ethereal charge inherent to their stomach (#59801)
A stomach would literally just ask the species datum how to be hungry and made a bunch of exceptions for ethereals. I mostly just moved code around so that hunger is handled by a persons stomach, thus shrinking the species.dm bloat.

This also makes it so ethereal's charge mechanic is unique to their stomache, instead of this really weird inbetween where just nothing happens and you kinda starve to death. You can stick an ethereal stomach in a human and this will replace their hunger mechanic with the charge mechanic and lets them absorb power from APCs and everything. You can also give ethereals a normal stomach and they'll use the normal hunger mechanics
2021-06-27 12:35:53 -03:00
Mothblocks
23790c6c5e Fix missing SIGNAL_HANDLER (#59826)
Adds SIGNAL_HANDLER to everywhere that didn't have it that was picked up by dm-lua, which is now ready enough to catch these.
2021-06-27 15:43:49 +01:00
Rohesie
82dc71c3ae CanPass refactor (#59804) 2021-06-25 13:36:00 -07:00