Commit Graph

14550 Commits

Author SHA1 Message Date
Rhials 133d5b4a85 Converts Spaceman mobs from simple to basic (#75944)
## About The Pull Request

This changes the Spaceman simplemobs into basic mobs.

They really didn't do anything besides stand around and retaliate, so no
new AI datums had to be added.
## Why It's Good For The Game

Scratch it from da list.
## Changelog
🆑
code: Spaceman simple mobs have been converted to basic mobs.
/🆑

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2023-06-10 18:44:29 +00:00
Ghom 3a5648cc3a Basketball player mobs have a chance to be taller (#75907)
## About The Pull Request
Putting the mostly unused mob height feature, also adds a new accepted
value between tall and tallest mob height (the latter option made a
further pixel taller).

## Why It's Good For The Game
This will put the tall, taller, tallest mob height to good use. It's a
pretty subtle change though.

![(null)scrnshot1](https://github.com/tgstation/tgstation/assets/42542238/680559a5-2b67-4845-a9c0-72c89bb7aa3d)
Screenshot doesn't picture the new "tallest" mob height, which I
modified after seeing there was still some space avaible within the
tile.

## Changelog

🆑
qol: Basketball (the mini-game) player mobs have a chance to be taller
than the usual spaceman.
/🆑
2023-06-10 11:18:05 -07:00
Rhials 0ff1af4ff4 Ventcrawling mobs now recieve a 1 second delay/warning before exiting vents (#75937)
## About The Pull Request

Ventcrawling mobs must now complete a 1 second long do_after before
exiting a vent.

![venting sussa mongus
sus](https://github.com/tgstation/tgstation/assets/28870487/dbbfef9c-ace5-4cf3-a0a1-96b63810b08a)
## Why It's Good For The Game

Helps prevent those _wacky silly awkward moments_ where you speed into a
scrubber/vent and accidentally fling yourself out into the open. Having
a bit of a delay should reduce frustrations caused by situations like
these.
## Changelog
🆑 Rhials
qol: Ventcrawling mobs have a 1 second delay/warning before exiting the
ventilation.
/🆑
2023-06-10 04:20:42 -04:00
Ghom 007831d429 Makes sure body position y offset is updated if resized [NO GBP] (#75932)
## About The Pull Request
So far, the offset is updated only when the user is lying down or
standing up, woops.

## Why It's Good For The Game
See the title.

## Changelog

🆑
fix: Fixed a small issue with mob resizing not promptly updating a body
offset variable.
/🆑
2023-06-09 17:16:26 -04:00
LemonInTheDark ae5a4f955d Pulls apart the vestiges of components still hanging onto signals (#75914)
## About The Pull Request

Signals were initially only usable with component listeners, which while
no longer the case has lead to outdated documentation, names, and a
similar location in code.

This pr pulls the two apart. Partially because mso thinks we should, but
also because they really aren't directly linked anymore, and having them
in this midstate just confuses people.

[Renames comp_lookup to listen_lookup, since that's what it
does](https://github.com/tgstation/tgstation/commit/102b79694fa8eb57ecf7b36032616a9e368ccced)

[Moves signal procs over to their own
file](https://github.com/tgstation/tgstation/commit/33d07d01fd336726b4f6f6f1b61bb0b3f11a00dc)

[Renames the PREQDELETING and QDELETING comsigs to drop the parent bit
since they can hook to more then just comps
now](https://github.com/tgstation/tgstation/commit/335ea4ad081ec63c42cfa05856e582cca833af6e)

[Does something similar to the attackby comsigs (PARENT ->
ATOM)](https://github.com/tgstation/tgstation/commit/210e57051df63f88dac3dd83321236da825aae5e)

[And finally passes over the examine
signals](https://github.com/tgstation/tgstation/commit/65917658fb8a1e7d28ae23c9437a583d646f0302)

## Why It's Good For The Game

Code makes more sense, things are better teased apart, s just good imo

## Changelog
🆑
refactor: Pulled apart the last vestiges of names/docs directly linking
signals to components
/🆑
2023-06-09 06:14:31 +00:00
larentoun 036cfc84c8 feat: Respawn delay (optional) (#75544)
## About The Pull Request
Adds optional (disabled by default) respawn delay. If the player is
observer and have a body, it will firstly check the body. If the body is
destroyed or if there was none, then it will check observer's login
time.

## Why It's Good For The Game
Optional respawn delay is good, when you want players to comeback not
only as a midround event, but don't want them to not care about their
life. Also, if respawn is enabled, removes "money dupe" and other
problems with 0 respawn delay.

This proc can also be used for ghost-roles or anything else, where we
need to check how much time has elapsed since their death, but is not
implemented here.

## Changelog
🆑
add: Added optional respawn delay (disabled by default), which prevents
returning to lobby while dead.
/🆑
2023-06-08 23:28:45 -06:00
Ghom 3a8592d258 Improves mob resizing (and UpdatePaths). (#75892) 2023-06-08 11:59:30 -06:00
Sheits e9afe1c7d9 Mulebot resprite :> (#75873) 2023-06-08 09:43:11 -04:00
Time-Green 664fd2e4fa Fixes AIize (#75867)
closes #67028

🆑
fix: Fixes AIize not working
/🆑

Params were inverted for anything carbons and humans

---------

Co-authored-by: san7890 <the@san7890.com>
2023-06-07 17:30:58 -06:00
Charlotte 69cd59fda7 It's Nice To Be Unique: Adds new quirks to pick up! (#75630)
## About The Pull Request

Adds a few new quirks so allow for some more individuality from players!

~~They're set to 0 right now for TM purposes.~~ No TM, thus spoke
Melbert.

To-do:
- [x] Bilingual - Random extra language
- [x] ~~Mutated - Random mutation~~
- [x] Big Hands (fetish content???) - Big hands trait (can't use guns)
- [x] Soft-Spoken - Whisper permanently 
- [x] Clumsy (not a packet dropper) - Clumsy trait (clown shit)
- [x] ~~Paroled Convict - Spawn with a tracking implant + prisoner
armband.~~
- [x] ~~Fashionista (headmins made me do it) - Lets you pick a scarf
roundstart.~~
- [x] The more the merrier.

## Why It's Good For The Game

Small changes at the cost of a negative quirk or two are a fun way to
develop the story. It's fun! These aren't game breaking and might lead
way to some interesting interactions!

## Changelog
🆑 Chadley
add: Adds some new quirks!!
add: Adds the bilingual quirk, which gives a new random language.
add: Adds the big hand quirk which stops the usage of most guns.
add: Adds the soft spoken quirk which forces you to whisper.
add: Adds the clumsy quirk enabling the clumsy trait.
/🆑

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2023-06-07 11:09:26 +12:00
san7890 a1d58490c5 Turns Changeling Headslugs into a Basic Mob (#75601)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

## About The Pull Request

Short and simple, just converts the changeling's headslug (that ability
they get that lets them infest another body) into a basic mob. Also
touches up some of the code, as well as split up the code such that the
headslug resides in the basic mobs folder, while the eggs are in the
changeling's antagonist folder, rather than one megafile for both.

No AI because this is 100% a player-controlled mob, it never exists in
any other context. No UpdatePaths for the same reason as well, this
shouldn't (and really doesn't) exist on maps because its sole purpose is
player-driven.

<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->

## Why It's Good For The Game

Knocks another one off the list, potentially clears up some janky code
with how this operated and just beautifies it overall. I also
standardized the name "headslug" in any applicable context because the
name "headcrab" is quite confusing. Some other code still refers to it
as headcrab/crab, but that's whatever, at least the paths are a-okay
now.

Also opens the door in case someone really wants these to be AI-powered?
That sounds really weird and I don't really support that idea, but it's
indeed possible.


![image](https://github.com/tgstation/tgstation/assets/34697715/974e003e-885a-496e-af09-19c3dba7505d)

Grow and regrow, the life cycle.

<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->

## Changelog

<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and it's effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->

🆑
refactor: Headslugs (the really small slug-like changeling form) are now
basic mobs. They only wander around aimlessly now instead of attacking
corpses all the time, and examining will let you know what type. Should
probably still smash them before they suddenly gain sapience...
/🆑
<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->
2023-06-07 11:04:30 +12:00
LemonInTheDark daf55e611c Cleans up/renames as private some internal var definitions, removes some fucked uses of internal list vars (#75769)
## About The Pull Request

[Improves the documentation of DCS lists, removes old list of callback
docs that no longer
apply](https://github.com/tgstation/tgstation/commit/c3821d9f5ffaeaa4772f927c819da0c1de0ca27c)

[Adds a second signal register to decal rotating, adds a trait to
objects under a tile. STOP DIRECTLY READING HIDDEN LISTS I SWEAR TO
GOD](https://github.com/tgstation/tgstation/commit/6b3f97a76a6f7d24ab952739a1561633922994e1)

[Removes direct reads of the timer list, they were redundant
mostly](https://github.com/tgstation/tgstation/commit/14fcd9f8a6d1b2d42ec6df3493ebc76fe7c12032)

[Please stop directly reading/modifying the traits list to ensure your
dna rot follows the
brain](https://github.com/tgstation/tgstation/commit/ec0e5237ec2b7c3b7806cb993670acc8ce388bdc)

[Marks internal datum lists as well internal with
_](https://github.com/tgstation/tgstation/pull/75769/commits/57c6577ff61629b8ea792ee37ec4f2490a8e2865)

[57c6577](https://github.com/tgstation/tgstation/pull/75769/commits/57c6577ff61629b8ea792ee37ec4f2490a8e2865)

Does the same to _clear_signal_refs() in hopes of keeping people from
touching it

## Why It's Good For The Game

They pissed me off.

Users should not be touching these lists, especially in ways that make
assumptions about their structure and are thus prone to breaking if that
ever changes.
Most of these are close to zero cost changes, using a wrapper to solve
the problem, or just yeeting it

Two aren't, Decals with a direction have gained a second signal register
on init, and things that sit underfloor (cables/pipes) now get a trait
when inserted there.

This should have a minimal impact on memory/init time, bugging
@Mothblocks about it just in case
2023-06-05 22:25:09 -06:00
John Willard 0f22bb001e Mafia update: Return to body when the game ends (#75258)
## About The Pull Request

Mafia players are now sent to their last body when the Mafia game ends,
and in the meantime they have text saying why they are dead.
They can still be revived during this period, and when the game is up
they'll be forced back into their body if alive, if they are dead then
they'll just be able to re-enter their corpse as normal.

Also since I was poking around in Mafia stuff:
- I removed mafia observing because it was unused (this previously was
used to allow ghosts to see Changeling chat).
- I fixed it being a Draw when there was one Town or Changeling left.
- I fixed the role list showing some roles multiple times
- I fixed the Chaplain not being able to use their night ability (and
therefore being completely useless)
- I added prevention to prevent Admins from causing runtimes or straight
up crashing the server, with a very real chance it can happen purely by
accident, through the Admin UI.

I'm hoping to change how this actually does the job because I find it to
be very bad coding practices, but my problem is that everyone who signs
up for Mafia is a ghost, and they are added into the game through their
CLIENTS, so we don't have access on the mafia controller or the role, to
the player's previous body or mind, without this shit.

Also adds a new mafia board icon

Made by tatax and I find it fits more the theme of Mafia than the
current one.

New UI
2023-06-05 13:18:20 -05:00
Sealed101 d01b433ab1 Fixes colossus possessor crystal cockroaches/animals not dumping the user's body upon death/gibbing (#75843)
## About The Pull Request
Hooks the stasis closet thingamajing into `COMSIG_LIVING_DEATH` instead
of checking the animal's stat on `process()`, which makes possessed
animals properly dump the stasis closet's contents upon death or gibbing
(which is death but cooler).
yeah uh this method is hilarious but it does protect the user's body
quite reliably at least lol

## Why It's Good For The Game
Fixes #75829
also probably makes cockroach death saner in some unreported way, this
`. = ..()` vs `..()` is above my non-existent paygrade but it keeps
popping up from time to time

## Changelog
🆑
fix: gibbing colossus possessor crystal possessed animals will no longer
stick the user's body and their stuff into the shadow realm. the animals
will properly drop your corpse when killed or gibbed
/🆑

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-06-05 12:17:44 -06:00
tattle 9f70308931 Restores mob tags to mob tag logging (#75850)
## About The Why It's Good For The Game Pull Request Why It's Good For
The Game

These were accidentally removed from the log

## Changelog
🆑 Tattle
admin: mob tags are now part of the mob tag log again
/🆑

---------

Co-authored-by: tattle <article.disaster@gmail.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
2023-06-05 01:31:18 +00:00
san7890 874ada4278 Refactors Ant into Basic Mob (#75662)
## About The Pull Request

On the tin. No new fancy AI wheels or anything, just a simple port. 
## Why It's Good For The Game

Knocks another one off the list, just really light stuff. They're a bit
smarter now too, I think the intention was them for them to be pet-like
as well (according to the code). Should be really rather easy to give
them the pet-like behaviors and elements if someone really wants to in
the future, just sorta paving the way for more work to be done to make
mobs more intricate/interesting.
## Changelog
🆑
refactor: Giant ants are now more capable of distinguishing friend and
foe.
/🆑
2023-06-03 14:41:05 +12:00
san7890 6676702008 Refactors chicks into basic mobs (#75663)
## About The Pull Request

On the tin. They have pretty much nothing in common with chickens, so no
subtyping. They are in the same folder to keep that whole thing tidy,
though.

Also includes fixes to `growth_and_differentiation` element that I made
for spiderlings, since some stuff was yorked without me realizing. It
pretty much worked flawlessly for these chicks otherwise though. It all
works fine now.
## Why It's Good For The Game

More verbose naming scheme (instead of "holo", we get "permanent"
chicks), smarter AI for chicks, knocks them off the list, etc. etc.

One thing that I wanted to do was to have chicks recognize their mother
(if they had one), but that would be way out of scope for this simple
port PR. I'll dwell on adding something cool for that in the future.
## Changelog
🆑
refactor: Chicks are now a bit smarter, be careful not to squish them!
/🆑

Let me know if the whole "COMPONENT_KILL" thing is cringe, I couldn't
figure out a better way to do it without abusing `GetComponent()` to
`qdel()` it that way.
2023-06-03 14:40:55 +12:00
Ghom 3d8de7c63d Fixing thrown things being unblockable by shields [NO GBP] (#75796)
## About The Pull Request
See #75795. I've checked in the code if similar mistakes were made,
though it seems this is the only one.

## Why It's Good For The Game
This will close #75795.

## Changelog

🆑
fix: Fixes thrown things being unblockable by shields or something.
/🆑
2023-06-01 20:38:25 -07:00
Hatterhat e4ece2fbd6 makes snow legions from portals drop skeletons (like tendril legions) (#75707)
## About The Pull Request
Exactly what it says on the tin (snow legions only dropping ashen
skeletons, like tendril legions).

Also changes the name of the "fromtendril" variable to "from_spawner",
and comments it. Not sure if that warrants a changelong comment, but
I'll go ahead and assume no.

## Why It's Good For The Game
being able to farm snow legion portals for an endless tide of bodies
and/or equipment is a bit weird. also puts it a bit more in line with
the legions of Lavaland

## Changelog

🆑
balance: The source of the demonic portals that endlessly deposits snow
legions onto the Icemoon no longer preserves the bodies nor gear of the
damned (read: demon portal snow legions now only drop skeletons).
/🆑

---------

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
2023-06-01 20:02:31 -04:00
Ghom 88b898dffd Stops shields getting broken by pillows and disablers. (#75759)
## About The Pull Request
See the title. Doing so by adding a new arg for damage type to
`check_shields()` and `hit_reaction()`. The other way would had involved
a couple istype checks for item or projectile damage type, but this is a
longer term solution and can tackle more than just that.

## Why It's Good For The Game
Fixes #74876.

## Changelog

🆑
fix: Stops shields getting broken by pillows and disablers.
/🆑
2023-06-01 16:26:10 -04:00
LemonInTheDark cb4a836d41 Removes all uses of text() (#75766)
## About The Pull Request

Apperantly it's deprecated. Also people misunderstand how to use it,
which leads to silly looking code and redundant wraps.

It is potentially useful to do a sort of format style string embedding,
but we don't have anything that really warrents it IMO.

## Why It's Good For The Game

Maybe byond will break on version upgrade slightly less now.
Also the code's less cluttered, and boomer posting has been excised.


![image](https://github.com/tgstation/tgstation/assets/58055496/c630e522-962c-4344-80f7-36d5df00a8b5)

![image](https://github.com/tgstation/tgstation/assets/58055496/f4cb3eb5-f07f-4489-8813-f59b19406bda)

![image](https://github.com/tgstation/tgstation/assets/58055496/6df7eb62-dae8-43b5-a511-1130ab4a2870)
2023-06-01 16:13:33 -04:00
Singul0 877a1942b2 Abductors can now use batons in general. (not just their specialized baton) (#75561)
## About The Pull Request
Abductors can now use any baton instead of just their special baton.
## Why It's Good For The Game
Abductors are a bit fucked if they lose their baton and are unable to
buy one from their shop. Sure they can just use flashes or maint-fu but
those methods are hard and or unreliable. (if they manage to lose their
baton, they probably aren't that robust anyways). This PR gives more
leeway if you fuck up as an abductor.
## Changelog
🆑
balance: The mothership which abductors came from has worked very hard
to train their field agents how to use batons from their specimen's
habitat
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2023-05-31 14:37:18 -04:00
MrMelbert e563148710 Re-pr of #70522 "Space Dragon Update: Up Close and Personal" (#75607)
## About The Pull Request

This PR is a re-pr of ##70522 , with some tweaks: 

Notably:

- Wavespeak is not a say override, but instead uses a mindlink. Meaning
carp and space dragons can still talk verbally, but they can also use
telepathy to talk to all carp and the dragon.
- I would refactor Mind Linker a bit further to be a full datum rather
than a component but that's for another time.
- Removed the gravity aura component in favor of using the existing
forced gravity proximity monitor.
    - Also fixed a bug involving that. Lol.  
- Minor refactoring around the place.
- Reduced the volume on a lot of space dragon sounds. 
- Edited the roundend report for Space Dragons to collate all entries
into one per player.


![image](https://github.com/tgstation/tgstation/assets/51863163/5c3222b2-a80c-4df9-a060-4c5733ab712f)


## Why It's Good For The Game

Space dragon still plays pretty "play lame win game" right now, the
optimal strategy for them is to find the cheesiest spot for a portal and
spam their stun / fire breath to make it unreachable.

I was a fan of the original PR so I updated it and brought it back. 

## Changelog

🆑 IndieanaJones, Melbert
balance: Space Dragon can no longer choose its rift locations freely,
and instead is given 5 pre-determined locations to pick from instead
balance: Space Dragon itself has been buffed in order to support a more
confrontational playstyle, however its wing gust now requires a line of
sight to targets in order to affect them.
balance: Player Space Carp from rifts now have buffed health, but
reduced object damage values. They also gain a temporary speed boost
when hit by Space Dragon's fire breath instead of taking damage.
balance: Carp rift spawn times have been reduced, the healing AOE is now
a 3x3 instead of a 1x1, and apply normal gravity in a large radius
around them
balance: Space Dragon and rift carps now communicate on a private mind
link channel via action button similar to Raw Prophets and Slimepeople.
fix: Fixed Gravity Generator forced gravity not applying. 
fix: Intern Announcer will no longer replace Space Dragon announcements.
qol: The roundend report for space dragons now collates all players who
played a carp into one entry, rather than one per carp spawned.
qol: Space Dragon sounds are much less ear piercingly loud. 
/🆑

---------

Co-authored-by: IndieanaJones <mariosuperstar384@gmail.com>
Co-authored-by: IndieanaJones <47086570+IndieanaJones@users.noreply.github.com>
2023-05-31 10:51:07 -07:00
Epoc 3a74b1666d Speaking in sign language no longer reveals your identity (#75606)
## About The Pull Request

Added an argument to compose_message() (visible_name) that sets the name
of the speaker to their visible identity, for messages that can be seen
but not heard, and updated Hear() for sign language accordingly.

## Why It's Good For The Game

Before, your name was attached to your sign message as if you were using
your real voice. Now, your name on sign messages is based off your
visual identity.
It didn't make sense that signing revealed who you were even if you were
wearing a disguise. This appeared to be an oversight rather than an
intentional design decision.

## Changelog

🆑 Epoc
fix: Speaking in sign language no longer reveals your identity 
/🆑

---------

Co-authored-by: alec-b-williams <alec.b.williams@wsu.edu>
Co-authored-by: san7890 <the@san7890.com>
2023-05-30 16:32:09 -07:00
John Willard a5bf89f071 Significantly lowers Golem's innate armor (#75710)
## About The Pull Request

Lowers Golem's 55% innate species armor to 10%.

## Why It's Good For The Game

The Golem rework has fixed a lot of problems I had with Golems, but this
was by far the most important thing for me. I thought the Golem rework
itself would fix it, but instead I feel it was made worse due to their
speed increase.
Innately, Golems have 55% armor from their species, that is not even
comparable to any other species. There's only 2 other species that have
this innate armor; Zombies at 20%, and Silverscales at 10%, but both of
these are Antagonist roles while Golems aren't always going to be.

Golems also now revolve around eating Matierials for their buffs, so
paired with their speed increase to match Humans, I don't think this
free 55% armor is justified, or fair for people they get in a fight
with.
They also already have alternatives to this, the Titanium food Golem
buff, which gives them brute resistance and harder punches.

## Changelog

🆑
balance: Golems' 55% species innate armor has been lowered to 10%
/🆑
2023-05-30 14:24:03 -04:00
nikothedude d46782b5b6 Generifies a bit of species trait code, adds a few more generic traits to species traits, adds traits to podpeople (#75718)
## About The Pull Request

Title. Specifically, this PR makes the plasma breathing part of
plasmamen modular and apply to all species that don't breathe
exclusively oxygen, makes TRAIT_NOBREATH and TRAIT_NOGENES have traits,
and adds traits to species with livers that have different liver
shrugging or alcohol tolerances.

And then, of course, it describes the photosynthetic nature of
podpeople, the fact normal health analyzers cant' scan them, and their
weedkiller weakness.

Made this while I was tired, so could be lower quality.
## Why It's Good For The Game

Futureproofing is good, showing players aspects of the species around
them is good (notably, the genelessness of plasmamen). Who knows - maybe
one day podpeople get enabeld. Or we give a species nobreath.
Regardless, these will help us make changes to species in the future.
## Changelog
🆑
code: Modularized plasmamen plasma breathing species trait code to
automatically apply to all species
code: Liver shrugging differences/Alcohol tolerance differences now
displayed in the species trait panel
code: Nobreath and Nogenes now accounted for in species trait code
add: Podpeople now have species traits
add: Plasmamen genelessness is now displayed in their species panel
/🆑
2023-05-30 07:04:22 +02:00
Kylerace f4e844d664 fixes contents not being removed from the spatial grid when deleted during movement between 2 grid cells (#75658)
## About The Pull Request
fixes the flaky test reports for cockroaches being stuck in the spatial
grid (which mothblocks seems to have closed all of)

cockroaches get deleted when they die, so theres a spurious unit test
failure where if a cockroach is on a tile in grid cell A and moves to a
lava tile in grid cell B, they will get killed when lava.Entered() is
called, then deleted, and when /atom/movable/Destroy() is called we try
to take them out of grid cell B (because their loc is the lava tile) but
they were never added to that cell yet because their movement never
finished, so that doesnt do anything. THEN moveToNullspace() is called,
that movement finishes before the first movement, and then in
Moved(old_loc = lava turf) we try to remove it from grid cell B which
again doesnt work, and then the first movements Moved(old_loc = original
turf) is called where we can actually remove them from the correct grid
cell, except we cant because in exit_cell() we subtract
`old_target.important_recursive_contents[channel]` from the cells
content lists, and since the target is deleted by this point it doesnt
have important_recursive_contents. so the fix here is changing this so
it subtracts `old_target.important_recursive_contents?[type] ||
old_target` instead, which works if the target is deleted.

also fixes some Entered() overrides that dont call parent and improves
documentation on spatial grid defines
## Why It's Good For The Game
fixes it without needing the change_loc() setter
2023-05-29 18:23:43 -06:00
Ghom 110d84d0ba Stops factory blobs from hard deleting. (#75676)
## About The Pull Request
The code for factory blobs and blob structures is kinda messy and ridden
with some unreacheable code and unused variables. My plan here is stop
factory blobs from hard-deleting because of uncleared references, but I
took a little liberty to cut some old code that looks more of a
hindrance than anything.

## Why It's Good For The Game
This should fix #74845.

## Changelog

No tangible change for the player.
2023-05-29 18:20:10 -06:00
Hoolny 419dd2b754 Spider Infestation Balance Rebalance Expansion Part 1 (#75204)
## About The Pull Request
https://hackmd.io/dxhPOOdRRKW7siqPbpfmYQ?view The HackMD goes in-depth
into what this PR is about

## Content
### Ambush Spider

![image](https://user-images.githubusercontent.com/84478872/236697303-16fb5fee-7862-457f-a053-9e634873f205.png)

![image](https://user-images.githubusercontent.com/84478872/236697338-7908e9ba-07d2-4af6-9e0a-583e74d96634.png)
### Scout Spider

![image](https://user-images.githubusercontent.com/84478872/236697485-91560e01-365d-4a9e-8401-a52b412d865f.png)

![image](https://user-images.githubusercontent.com/84478872/236697489-a9f1d46d-1e65-4e9d-995e-335e4cf40f8c.png)

![dreamseeker_JtR1iVptrV](https://user-images.githubusercontent.com/84478872/236697538-4e9ac1a4-b2b7-463a-b4ff-75f8ae2d266a.png)
## Tangle

![image](https://github.com/tgstation/tgstation/assets/84478872/756de834-5470-4a2a-9e8e-55d6a3ca770d)

![TkK4NHc](https://github.com/tgstation/tgstation/assets/84478872/4fa15fa6-db11-46a5-9b56-8e5fce4bc1c0)

![XxcLU0z](https://github.com/tgstation/tgstation/assets/84478872/7a007a94-e9a4-4700-9a0e-f5e2a178c924)

### Spiderlings

![ruCweIc](https://user-images.githubusercontent.com/84478872/236697721-b96469df-e68b-47b7-9316-ec152629e9aa.png)

![SWE0bgo](https://user-images.githubusercontent.com/84478872/236697726-7753f363-99db-46b1-8181-0dc755c1804e.png)

![BYNLUQa](https://user-images.githubusercontent.com/84478872/236697753-48c1c5b0-064a-45e9-bf19-ad2e29cdb426.png)


## Why It's Good For The Game
Currently, spiders have plenty of issues that make them a very 2d
mentional antag they kill,die, and respawn which is boring and leads to
a bunch of balance issues for their current design this PR both fixes
the current issues spiders have and adds more depth into the antag.
## Changelog
🆑
add: Added 3 new spider types
add: Added more spider abilities
balance: Rebalanced spiders
fix: Fixes spiderlings having density
/🆑

---------

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-05-28 16:45:42 -07:00
John Willard 0c99bd28f4 Makes gasses use defines (#75542)
## About The Pull Request

Adds defines for gasses and replaces uses I've found to instead use the
defines.

Can you believe I made this PR while trying to work with Xenos? This
sucks!

## Why It's Good For The Game

There's a lot of different uses of things like "o2" and "plasma", and
they are pretty inconsistent. In some places, it's "hydrogen", in others
it's "h2". In some it's "plasma", others "plasm". This unifies it all
under defines so it has a less chance of breaking in the future.

## Changelog

Nothing player-facing.
2023-05-27 19:45:22 -04:00
John Willard 78f7228202 Fixes glove offsets not working with negative numbers (#75638)
## About The Pull Request

This was changed in the Golem rework -
https://github.com/tgstation/tgstation/pull/74197

If you have a species that have arms that go longer than normal, you can
set the offsets of in-hands to negative y value to lower it. This isn't
an option for gloves however, because it starts at 0 and only increases
if the value is larger.
This fixes it by letting it set a negative number, and comparing your
other hands' offsets to that.

## Why It's Good For The Game

Fixes species that have arms that go longer than normal.

## Changelog

🆑
fix: Species that have longer arms than normal can now properly set
their glove offset to go low and meet their hand.
/🆑
2023-05-25 18:29:39 -06:00
san7890 456b58754d Turns lightgeists into a basic mob (#75626)
## About The Pull Request

https://www.youtube.com/watch?v=bcUuqKrnvVY <- me getting rid of every
simple animal one thing at a time

Turns lightgeists into a basic mob. There are a few key advantages into
its implementation that was previously impossible in the simple animal
framework, which is entirely possible now.
## Why It's Good For The Game

Lightgeists can actually have a bit of AI now, as a treat. They didn't
have it prior because I assume if they attacked anything, they would end
up healing it, and we didn't really have an option in the simple animal
AI to say "do not attack"... This really fixes that so they can wander
around a bit and look cute if some admin decides to spawn them in (but
the only way to get them outright is to use the anomalous crystal, which
auto-assigns a player). You don't see the AI if a player ghosts out of
the lightgeist because the lightgeist will delete itself on ghost
(previous behavior).

It also gets rid of some janky AttackingTarget() override that was
completely un-needed post-#73202.
## Changelog
Nothing really player facing.
2023-05-25 22:23:53 +01:00
san7890 d3575161ca Adds ai_retaliate element to chickens (#75627)
## About The Pull Request

Whoops, forgot to add this in #75592.
## Why It's Good For The Game

Chickens were meant to bite back if you attacked them. This slipped my
mind to test for some reason.
## Changelog
🆑
fix: Chickens should now, once again, peck you in case you hit them.
/🆑
2023-05-26 08:23:01 +12:00
san7890 88a5ef624a Turns Cat Butcher/Surgeon/Whatever into a Basic Mob (#75599)
## About The Pull Request

On the tin, I keep trying to tackle the larger basic mob projects but
burn out, so just enjoy these small ones to just keep that list looking
lighter and less insurmountable.

No big complex AI either, it choppa the tail off. That's all you really
need to be honest.
## Why It's Good For The Game

The cat surgeon will be just that slightly smarter. I suppose they're
still a doctor, just simply infatuated with the thought of cat tails...


![image](https://github.com/tgstation/tgstation/assets/34697715/a1b4d7f6-f591-4412-91e4-6d6c8f320deb)


noooooo my tail!!!
## Changelog
🆑
code: Cat Surgeons are a bit more smarter about attacking threats to the
world around them on their endless pursuit for those felinid tails.
/🆑

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2023-05-24 20:00:56 +00:00
san7890 83723acab0 Turns Chickens into Basic Mobs (#75592) 2023-05-24 15:04:27 -04:00
John Willard e38882179f Fixes mind traits (Curator, Miner, Clown) (#75593)
## About The Pull Request

Tower of Babel (Curator), Naive (Clown), and Storm detector (Shaft
Miner), are all traits that are given to your mind upon taking these
jobs.
However, we have been checking the body for these traits, not the mind.
This meant that Shaft miners werent alerted of ice storms, Clowns didnt
have their unique examine text, and Curators were affected by Tower of
Babel.
This fixes all those issues.

Naive and Tower of Babel realistically should only be on the mind, so I
changed all instances to check the mind. Storm detection is something
you can get through analyzers, so I left it as a check for both your
body and mind traits.

Clown's Naive:

![image](https://github.com/tgstation/tgstation/assets/53777086/30e92026-5d1d-44a5-9969-206df99c5e8f)

Tower of Babel:

![image](https://github.com/tgstation/tgstation/assets/53777086/b1d41f9d-e020-495c-89de-0d4e2c953442)

## Why It's Good For The Game

Fixes several bugs for 3 jobs all at once. I don't see any issue reports
on any of these, but they existed.

## Changelog

🆑
fix: Shaft Miners are now alerted of Icemoon storms, Clowns are naive,
and Curators are immune to the Tower of Babel again.
/🆑
2023-05-23 16:53:51 -06:00
jimmyl 16e4618329 Makes golems unaugmentable (the surgery) + makes amputation check for nodismember trait (#75583)
## About The Pull Request
golems get the NOAUGMENTS species trait (stops augmentation surgery)
amputation surgery checks for TRAIT_NODISMEMBER when finishing
## Why It's Good For The Game

goofy ahh whip and naenae armor
i shit you not i watched 5 people one with a desword and several with
rather good weaponry take 25 seconds to kill a stunned golem with
augments

## Changelog
🆑
balance: You can no longer augment golems
balance: You can no longer amputate undismemberable traits
/🆑
2023-05-23 16:28:46 -06:00
Tom e5ce1c09a7 Converts butterflies to basic mobs and adds them to cytology (#75582)
## About The Pull Request

Converts butterflies into basic mobs.
Also a little list organisation.

<details>
<summary>Yep, those are some butterflies alright</summary>


![image](https://github.com/Skyrat-SS13/Skyrat-tg/assets/8881105/d9e3a14e-e0a5-4275-b440-af0a56e7b8fe)

</details>

## Changelog
🆑
refactor: Converted butterflies to the basic mob system
add: Butterflies can now be grown in cytology
/🆑
2023-05-22 10:30:48 -06:00
Watermelon914 569d8f5a72 Refactored the TTS subsystem to more properly handle message garbling. Added a volume preference for TTS. (#75559)
TTS subsystem refactor.
---------

Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
2023-05-22 13:29:20 +00:00
Comxy 6a2a3b3573 Spiderling Gold Slime Removal (#75548)
## About The Pull Request
Removed spiderling from spawning from gold slimes.
## Why It's Good For The Game
Spiderling is not a dangerous mob, and spiders are already one of the
most spawned mobs from all the subtypes it has. I don't think they
should be in there.
## Changelog
🆑
fix: Removes spiderling from hostile gold spawns.
/🆑

Co-authored-by: san7890 <the@san7890.com>
2023-05-22 09:31:07 +02:00
John Willard 956d8c8a9f You can tip flashed borgs (#75539)
## About The Pull Request

Fixes tippable not working on flashed mobs by letting it work on those
who are forced standing even if they aren't conscious, then gives that
trait to borgs.
I thought this would be the best fix for it because borgs technically
are just forced standing anyways, and I didn't want to just add an
issilicon check.

## Why It's Good For The Game

Fixes an old bug that I should've fixed a long time ago, makes tipping
something that can realistically happen in-game.

## Changelog

🆑
fix: Borgs can be tipped over while flashed.
/🆑
2023-05-21 21:37:10 -06:00
Zephyr fbec9c14e9 JSON Logging Take Two (#73604)
## About The Pull Request

Converts all logging, excluding perf and investigate, to json.
I focused on making the system as easy to use and as easy to add new
categories as possible.

Due to issues related to logging to world at global creation logger is
now a byond real, which is created directly before Master

Log categories support versioning, secret flagging, and sub-category
filtering. Although all of this is entirely optional for coders.
If you ever want to add a new category and use it, all you need to do is
make the barebones category datum and the define.
I've kept existing procs such as log_game, and simply turned them into a
wrapper for Logger.Log(xxx, ...)
## Why It's Good For The Game

Makes processing and filtering logs much easier in the future, while
only minimally downgrading log crawling experience.
I am also working on a log viewer frontend for admin usage however that
will take a little bit longer to finish up.
Also makes special logging and data tracking much easier thanks to a
data list processing implementation and handling
## Changelog
🆑
server: All logs are now formatted in json, excluding perf and
investigations
/🆑

---------

Signed-off-by: GitHub <noreply@github.com>
Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
2023-05-22 14:51:00 +12:00
TiviPlus 65079fbd6d Trim TTS messages to 3 identical letters (#75556)
## About The Pull Request
Basically

HEYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
->
HEYYY!!!

This only applies to the TTS message

## Why It's Good For The Game

TTS chokes with things like lots of !!/?? or elongated pronunciations,
this makes it not choke on that
Ex: Whats Up!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! will be
hhhhhhhhhhhhhhhhhhhhhhhhh but with this is Whats up!!!
## Changelog
🆑
qol: TTS no longer chokes on large amounts of one letter
/🆑

Co-authored-by: TiviPlus <572233640+TiviPlus@users.noreply.com>
2023-05-21 12:45:53 +01:00
san7890 9ae0802ead Converts Killer Tomatoes to Basic Mobs (#75516)
Just another lightweight PR porting over a simple animal to the basic
mob framework with zero additional AI implementation (it's a killer
tomato- it spawns into the world to maul you. how much more intricate
does it need to be?).
2023-05-19 16:55:59 -05:00
san7890 e2bc712714 Converts Lizards to Basic Mobs (#75515)
This was pretty simple since they didn't have too much custom behavior,
and whatever they did have already had AI behavior. I got really burned
out the last two times I wrote intricate AI action/decision behaviors so
I'm just taking it light and doing the bare minimum.

one day our shackles will be free of the simple animal scourge. they're
also a bit more intelligent, and i daresay a bit cuter too now.

also that lizard gib animation has been sitting there for god knows how
long completely unseen, so let's actually hook it into the mob.
2023-05-19 00:52:20 +00:00
MrMelbert 4a2df9bb5b Fixes Request Console Announcements (#75496)
## About The Pull Request

Fixes #75495 and Fixes #75492 (?)

`treat_message` had its arguments changed in #74775 which skewed with
#75067

## Why It's Good For The Game

Bugfix

## Changelog

🆑 Melbert
fix: Request Console Announcements breaking and reporting "/list"
/🆑
2023-05-18 18:48:09 +01:00
Hoolny dd51161d78 Fixes spiderlings having no density (#75381)
Basically making it so they stop other big creatures and each other from
moving
## About The Pull Request
they block each other and bigger mobs they arent meant to structure
spiderlings didn't do this for a reason
## Why It's Good For The Game
@san7890 made spiderlings from a structure to a mob great change but
they forgot a few things such as
1.Make it so spiderlings don't get tangled on webs (not fixed)
2. Make it so spiderlings speak spider and not galactic common ( fixed)
3. Make it so spiders don't have density ( This PR)

This is good for the game because creatures that are floor critters much
like roaches and mice shouldn't block full big mobs like humans other
spiders or each other (Also this is literary how it was before San just
forgot to add it)

![image](https://github.com/tgstation/tgstation/assets/84478872/7a3c7f8c-48d3-4168-a6b3-96628132d5f9)

![image](https://github.com/tgstation/tgstation/assets/84478872/eb612ddc-01a8-490c-8125-ae8c721f2aaa)

## Changelog
🆑
fix: fixes spiderlings having density
/🆑
2023-05-16 23:58:22 +00:00
ShizCalev b9cf46514a uses correct helper for light_cameras() sanity check (#75455)
Touched it in #75302, just being explicit about what's intended here.
2023-05-16 17:09:55 -06:00
Watermelon914 a98706ff8b Adds TTS to the game. Players can select their own voices in preferences. (#74775)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2023-05-15 16:21:54 -07:00
ChungusGamer666 dff70625e7 Bible refactor (#75350)
## About The Pull Request

This started as a simple addition where burning a bible would curse you,
but then I realized... Bibles aren't even proper books, thus can't be
burned!
So yeah, since that is not necessary due to how atom_storage works, I
reworked that.

## Why It's Good For The Game

Because burning bibles and getting cursed for it is funny.

![image](https://github.com/tgstation/tgstation/assets/82850673/2a8489ce-ecd6-45ee-9eb9-168ff820af65)

![image](https://github.com/tgstation/tgstation/assets/82850673/ebe98ad6-2d0d-4d20-9ea1-5d472d6ca465)

## Changelog

🆑
add: You can burn bibles now! But heresy has a steep cost...
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2023-05-15 04:27:43 +00:00