Commit Graph

14576 Commits

Author SHA1 Message Date
jughu
78f3cde148 Nerfs summon stickman spam (#76119)
Weakens stickman summoned from the summon stickman spell.
Its very toxic to play against it only encourages spamming stickmen who
die from 4 laser shots(even after the laser gun buff) This will lower
them to be either 1 hittable or 2 hittable depending what weapon you
have available as exchange of how fast they can be summoned.
Most people who do paper wizard tend to cheese it one or the other way
either trough atmos or having self revives as for example a changeling.

🆑 Improvedname
balance: Weakens summoned stickmen to be 1 or 2 hit
/🆑
2023-06-23 11:04:25 +02:00
Tim
2a19963297 Add UI preference menus for AI hologram and status displays (#75740)
This adds two new dropdown menus for AI preferences with holograms and
status displays. It also sets these preferences if admins transform a
player into an AI.
2023-06-23 08:43:26 +00:00
ChungusGamer666
f030b3b5aa SPECIES NUKING 2023: Refactors a bunch of species traits into flags for the head bodypart (#76074)
## About The Pull Request

Title. 
I saw a comment on psyker code complaining about these species traits
(which admittedly, they suck) and heeded the call to turn all of this
crap into something defined almost entirely by the head bodypart.

## Why It's Good For The Game

Potential to simplify species code further in the future, by delegating
more visuals to bodyparts, which is where most of them should be
handled.

## Changelog

Should not be player facing, unless I fucked up.

---------

Co-authored-by: Time-Green <timkoster1@hotmail.com>
2023-06-22 10:23:19 +02:00
LemonInTheDark
a8e16030f8 Optimizes timer insertion by 80% (W QDEL_IN micro) (#76214)
<!-- 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

[Reduces timer insertion cost by
80%](c9e5b285ed)

Timer name generation involved a LOT of string shit, some in ways where
the string only existed for a moment.
This costs a good bit of time, and can be reduced with only minimal
impacts on the end product, so let's do that. Includes a compile flag to
flip it back if we ever have trouble in future.

This is about 0.1s off init, since we do a lot of timer stuff then too

[Removes STOPPABLE flag from QDEL_IN, moves it to a bespoke
macro](e7a5d7f2a7)

Its a waste most of the time, tho I would LOVE to analyze at compile
time to work out if we care
## Why It's Good For The Game

I like it when we don't spend all of our cpu time just setting the name
var on timers. that's good and not bad.
This saves time fucking everywhere. 15% off explosions, 0.1 seconds off
init, bunch of time off foam. it's just good.

Cherry picked out of #76104 since that was too cluttered (sannnnnn)

<!-- 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. -->

<!-- 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-21 23:54:20 -06:00
MrMelbert
f1c6d9d15e Fix bileworm runtime targeting non-living mobs (#76201)
## About The Pull Request

Targeting datums will target non-living movables which have livings
inside, such as mechas.

So this casting to living as a bad assumption.

## Changelog

🆑 Melbert
fix: Fix runtimes from Bileworms targeting mechas (or other objects
people are hiding in)
/🆑
2023-06-21 15:09:17 -04:00
kawoppi
0223b10345 adds (space) lizard inhands and onheads (#76198)
## About The Pull Request
The axolotl sprites were based on the lizard sprites so now the axolotl
inhands and onheads will fuel the lizard equivalents to complete the
circle of life.

**Lizard inhands and onheads:**

![lizarbs](https://github.com/tgstation/tgstation/assets/94711066/523c2e1f-b0c8-41ac-9596-7d315381f743)
one of the sprites had a mistake and I didn't wanna redo the entire
picture so here's the updated sprite:

![lizarbfromback](https://github.com/tgstation/tgstation/assets/94711066/a978ea92-6205-42d5-9ed5-b8ae98375c9e)


**Space lizard inhands and onheads:**

![lizarbsfromspace](https://github.com/tgstation/tgstation/assets/94711066/6175a3a4-004f-4abe-b4f3-7f948cb0120f)


The held weight of lizards has been changed to tiny because they look
like they could fit into your pocket. This value wasn't specified before
and it seems to default to normal weight, which seems a bit much for a
creature that's about the same size as a mouse.
## Why It's Good For The Game
More cute little animals to hold on your hands. And they can fit into
your pockets now too!
## Changelog
🆑
image: added lizard inhand- and onhead sprites
image: added space lizard inhand- and onhead sprites
fix: changed held weight class of lizards from normal to tiny
/🆑
2023-06-21 15:06:09 -04:00
necromanceranne
64eae49042 Replaces the Reaper Scythe with the Vorpal Scythe (also the Morbid trait) (#75948)
adds the Vorpal Scythe, a special chaplain null rod variant, replacing
the Reaper Scythe, a not so special null rod variant.

When you choose the vorpal scythe, it comes as a shard that you implant
into your arm, similar to a cursed katana.

Once implanted, you can draw it at any time like an arm implant.
However, sheathing it again presents some problems. (Also, implanting
the organ gives you ``TRAIT_MORBID``, which I'll explain in a bit)

The Vorpal Scythe has 10 force, one of the weakest null rod variants for
force that isn't a joke null rod. However, it has exceptional armor pen
and also has 2 tiles of reach. So quite unique.

It also has a special beheading ability when you right-click someone.
This borrows some code from amputation shears, functioning pretty
similarly, except with a few additional ways to speed up the action and
restrictions. (It takes 15 seconds baseline to behead someone standing
and conscious, and speeds up or slows down based on factors such as
incapacitation and whether or not our scythe is already empowered)

When you successfully behead someone with a mind, the vorpal scythe
gains 20 force and can be safely stowed and drawn for 2 minutes.
Performing more death knells like this will reset the timer.

If it has not performed its 'death knell', or you haven't hit a living
mob, then it will cause severe damage to you if you ever try and stow it
(or its forced back into your arm). Just hitting a mob with the scythe
will sate it for 4 minutes. Unless it is a non-player monkey. Horrible
things. Just hitting mobs does not reset the timer on empowerment.

What this means is that the chaplain may be more hesitant to simply draw
their weapon on people. It also means that potentially, the chaplain
will not always have magic immunity, since they may end up stowing the
weapon away and be reluctant to draw it on a whim without either taking
damage for sheathing it without hitting something, or dealing with
having one less hand up until they can.

While empowerment only happens when you behead mobs with a mind,
beheading monkeyhumans and other mindless humans subtypes causes their
heads to become haunted! It's mostly harmless and largely just SpOoKy.
We don't want heads with actual players in them to go floating off to
space. (Does not work on monkey heads for sanity reasons)

When you have the Morbid trait, you think creepy stuff is cool and hate
saving peoples lives. You get a mood boost from graverobbing, autopsies,
dissections, amputations (including beheadings with the scythe and
amputations with the shears) and revival surgery. However, you get a
mood penalty when you tend wounds on the living, as well as a hefty
penalty when you perform CPR or defibrillate someone. I was thinking
Victor Frankenstein when I was choosing which actions had an associated
moodlet, so anything that I might have missed would be appreciated.

You also count as potentially cool with regards to haunted objects.
Ghosts think you're neat. (Revenants probably will still kill you if
they had the chance)
2023-06-21 04:37:18 +00:00
Helg2
8a2e6f0eb8 Autolathe, protolathe, mech fab and comp printer now use defines for matter bins values. Also some production ui do. (#76020)
Changed hardcoded matter bins values to use defined
`SHEET_MATERIAL_AMOUNT` for following stuff: autolathe, protolathe, mech
fabricator and component printer.

`Material Access Bar` and `MaterialIcon` used for protolathes, circuit
printers and etc. now also use defined `SHEET_MATERIAL_AMOUNT`, via
static ui data, to prevent same issues in future.

Also changed some notes in /// parts just because why not.
2023-06-21 01:08:51 +00:00
Zephyr
6977a041a9 Do not add external organs if not needed and not rendered. (#75963) 2023-06-20 06:48:45 +00:00
ChungusGamer666
b9b19bd6e1 Lighting object oddities (#76009)
## About The Pull Request

Fire stacks status effect no longer uses a weakref for the mob light, I
am pretty sure there was no real reason to use a weakref there.
Deleted weird luminescent glow dummy, now it just uses the standard
moblight obj.
Put all /obj/effect/dummy/lighting_obj together in a single file and
added a comment explaining why they exist.

(I severely dislike the /obj/effect/dummy typepath, but I am very much
unsure if just replacing all of them with /obj/effect/abstract would
break shit)

## Why It's Good For The Game

Code organization good
2023-06-20 06:08:29 +00:00
LemonInTheDark
830d2e50b4 Fixes some stupid airlock sleeps (#75961)
## About The Pull Request

[A common problem with explosions is an overabundance of
sleeping](6499077a09)

In an attempt to solve this issue, let's not continue to sleep and do
work in door closing if the door is already deleted

(This is caused by firelocks activating due to other adjacent objects
deleting, triggering an atmos update, and closing the firelocks before
they get bombed. I don't have a elegant way of resolving that core
problem, so let's just minimize the impact)

[Nukes a stupid sleep loop in airlock
code](5b16360520)

When an airlock was depowered, it would enter a sleep loop, decrementing
its delay by 1 second every well, one second, so long as it had the
right wires flipped
This is very stupid

Instead, let's use signals off wire changes and a combo of timer and
remaining time var to do this with JUST a timer

Most of the changes here are just swapping over wires to a setter to
make signal registration work\

## Why It's Good For The Game

Less sleeping around explosions means less dropped ticks after a bomb
goes off. Good just in general
Also this excises dumb boomer code and adds some hooks for other devs to
use (we should use wires more man)
2023-06-19 02:18:48 +00:00
Time-Green
8788e48378 Shuttle events (#76008)
## About The Pull Request


https://github.com/tgstation/tgstation/assets/7501474/a2d83ce8-eba1-42d9-a1f8-9d73f7c40b21

Adds shuttle events! Stuff can now start to happen outside the shuttle,
either benign or spicy (but usually just fun to watch)!
## Why It's Good For The Game

The shuttle escape sequence is an important part of the game, uniting
about every player surviving player. Recently, #71906 has made the
escape sequence more forgiving as well as more interesting by
conditionally doubling the playing field. The area outside the shuttle
is still mostly empty though, except for the few people being spaced,
daredevils and the occasional epic space fight.

This PR adds adds some space events to spice up the outside of the
shuttle! This both gives people something too look at, making the escape
sequence feel less static and more lively, as well as give people a
reason to go outside and get the full experience of ~being decapitated
by a meteor~ swimming with the fishes!

<details>
  <summary>Shuttle Events</summary>

**Friendly carp swarm**
Spawns a group of carp that flies past the shuttle, completely friendly
unless provoked.

**Friendly meteors**
Spawns a lot of strong meteors, but they all miss the shuttle.
Completely safe as long as you don't go EVA

**Maintenance debris**
Picks random stuff from the maintenance spawn pool and throws it at the
shuttle. Completely benign, unless you get hit in the head by a toolbox.
Could get you some cool stuff though!

**Dust storm**
Spawns a bunch of dust meteors. Has a rare chance to hit the shuttle,
doing minimal damage but can damage windows and might need inflight
maintenance

**Alien queen**
One in every 250 escapes. Spawns a player controlled alien queen and a
ripley mech. RIP AND TEAR!! Really not that dangerous when you realize
the entire crew is on the shuttle and the queen is fat as fuck, but can
still be fun to throw people around a bit before being torn to shreds.

**ANGRY CARP**
Once in every 500 escapes. Spawns 12 normal carp and 3 big carps, who
may just decide to go through the shuttle or try and bust through the
window if you look at them wrong. Somewhat dangerous, you could stay
away from the windows and try to hide, or more likely shoot at them and
weld the windows

**Fake TTV**
Lol

**Italian Storm**
Once in every 2000 rounds. Throws pasta, pizza and meatballs at the
shuttle. Definitely not me going off the rails with a testing event

**Player controlled carp trio**
Once in every 100 escapes. Spawns three player controlled carp to harass
the shuttle. May rarely be a magicarp, megacarp or chaos carp. I can't
honestly see them do anything other than be annoying for 3 seconds and
die

There are some other admin only ones: a group of passive carps going
directly through the shuttle and just being little shits, and a magic
carp swarm
</details>

Events are selected seperately, there isn't a crazy weighting system,
each just has a chance to run, and multiple could run at once. They also
don't immediately trigger, so people can get settled a bit, and to make
sure just waiting out the more dangerous ones is still a valid strategy.

## Changelog
🆑
add: Adds shuttle events! If shuttle escapes weren't exciting before
(doubtful), they definitely are now! I'm joking it's mostly an
atmosphere thing.
admin: Adds an admin panel to interact with shuttle events, under the
Events tab: Change Shuttle Events
fix: Objects spawned in hyperspace will properly catch hyperspace drift
/🆑

There's a few things I'd like to do later (another PR) (honestly anyone
can do them because I suck at follow-ups), because this is too big as
is:
- Hijack triggered shuttle events
- More events (got a lot of cool suggestions, but I'm putting most of
them on hold)
- Maybe stration announcements if some more dangerous ones get added
- Structures appearing next to the escape shuttle???

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-06-18 08:14:05 -04:00
ChungusGamer666
01900cdbe6 Fixes exotic blood types persisting through species change (#76114)
## About The Pull Request

Fixes https://github.com/tgstation/tgstation/issues/75838

## Why It's Good For The Game

It's funny but it's a bad evil bug

## Changelog

🆑
fix: Exotic blood types no longer persist through species change if the
new species does not have an exotic blood type
/🆑
2023-06-18 16:12:55 +08:00
ChungusGamer666
f07b74ea90 Moves species brutemod and burnmod to be handled by bodyparts (#76060)
## About The Pull Request

Title.
Brute modifier and burn modifier are now handled by bodyparts. Cold
modifier and heat modifier are still handled by species, though
mmmmmaybe I'll make a PR addressing those later, yes?

## Why It's Good For The Game

Medical abominations will have even more consistent behavior!
Also bloating the species datum less is kinda good.

## Changelog

🆑
refactor: Species brute and burn damage modifiers are now handled by
bodyparts, instead of being universal. Go ham at the surgical bay.
/🆑
2023-06-17 18:46:27 +02:00
Pickle-Coding
2210455830 Fixes space dragon hitting the same target multiple times in a single fire breath stream. (#75996)
Moves the scope of the hit_list to the fire_stream proc. It gets passed
as a parameter that the other proc accesses instead of creating a new
list for everybturf.
## About The Pull Request
Moves the scope of the hit_list to the fire breath rather than creating
a new list for every turf action.

This is an untested webedit. I'll test this later.
## Why It's Good For The Game
Closes #75930 
## Changelog
🆑
fix: Fix space dragon fire breath hitting the same target multiple times
in a single stream.
/🆑

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-06-17 17:40:11 +02:00
YehnBeep
988a6dcc21 Removes suicide check from positronic brains (#76081)
# About The Pull Request

This removes the suicide check from positronic brains.

# Why It's Good For The Game

There seems to be 2 arguments for why suicide should forbid ghost roles:
1. "If they suicided they didn't want to play"
2. "antag rolling"

So let's look at each.

And an addendum on scope: This is meant only to apply to ghost roles
(and new characters from said roles); I do not wish to change that
people are not allowed back onto the same character they suicided on.

## "Suiciders left the round of their own choice and shouldn't be
allowed back in"

There are many, many ways in this game to end up with a character in a
state that's nearly/effectively unplayable, even if the controlling
player doesn't truly wish to completely leave. Some things can be
resolved with competent medical or science staff, but competent staff
are not always available in a round or might be beleaguered by round
events.

Then there are a number of conditions/states which the game provides no
path to resolve (save drastic measures like abandoning the
character/body, of course).

Or one might have simply become stuck in a place where rescue is
unlikely.

## Antag rolling

The problem here is this code does not particularly target antag
rollers. It paints such a broad brush that it simply catches everyone
whom might not know "No no, you have to **ghost** here, not suicide".
Even if an antag roller is stopped once, they'll easily bypass it next
time through the many, many means open to them - and if 'ghost' is made
effectively the same as 'suicide', it simply punishes people who got
stuck or similar even more.

Because of the wide range of means to kill oneself on a normal
character, to effectively stop antag rolling requires discerning intent
through context and patterns of one's actions. This might not be
possible in code until General Intelligence is a solved problem, and if
it is possible, this doesn't do it. It's a shotgun that kills everyone
in the room and if there happened to be an antag roller there, well,
even a stopped clock is right twice a day.

And then, of course, that the code was broken for so long would seem to
indicate it's not done that much.

## Practical Impact and Design Philosophy

Just from my personal observations, even wanting into a posibrain is a
niche thing usually only taken by a small number of the same players
round-to-round. In practice, whether this PR is merged or not likely
won't have a great impact on the game. But that could change if the
philosophy behind this check is applied to a wider number of things.

If someone wants to die, it's not hard. Walk out an airlock. Into the
supermatter. Blob, Xenos, or some other hazard present? Walk towards
them. Step in front of a shuttle. Turn on internals and wait a bit.
Countless other ways. Except, perhaps, if a character is disabled or
crippled or stuck, in which case use of a verb may be necessary.

In other games with much narrower sets of mechanics, it may be possible
to close certain paths on the assumption it would mostly be used for bad
faith reasons. In SS13, the sheer number of ways in which a good faith
character be "screwed" but not quite killed off, and which a bad faith
actor can find to kill themselves while bypassing restrictions placed on
verbs, means that I think this code's design philosophy is harmful to
the game and its good faith players.

# Changelog

🆑
del: Positronic brains no longer check for suicide verb use.
/🆑
2023-06-17 16:20:22 +01:00
Pickle-Coding
eb4b040a04 Multiplicative armour penetration. (#75925)
## About The Pull Request
Basically #71396 but for armour penetration. The formula gets changed to
be the inverse function of stacking armour. An example is if you had 75%
armour. That is equivalent to having two sets of 50% armour stacked. If
the armour wearer gets hit by a 50% armour penetrating force, it is the
same as losing a piece of armour worth 50%, knocking the 75% protection
down to a 50% protection, instead of 25%.
## Why It's Good For The Game
Makes it more consistent with how armour stacking works. It also lets
very strong armour be less fragile to small armour penetration. Kinda
silly for 90% armour value to be half as effective if it gets hit by 10%
armour penetration. This also allows it to be much easier to balance
lavaland armour and fauna piercing, allowing fauna to pierce through
crew armour while still letting mining armour have significant
protection. That isn't included in this balance change, but it allows
the option for someone to do that without changing any armour values.
## Changelog
🆑
balance: Armour penetration calculation is now the inverse function of
armour stacking.
/🆑
2023-06-16 20:35:47 -07:00
MrMelbert
22799fcb89 Refactors the worst list ever, Stun Absorptions, into status effects + makes status flags more accurate (making certain mobs more vulnerable to incapacitations?) (#76000)
## About The Pull Request

- Refactors the stun absorption list into a status effect

- Does a fair bit of cleanup around stun code

Weird thing involved in this.
Check out this define. 
`IS_STUN_IMMUNE(source, ignore_canstun) ((source.status_flags & GODMODE)
|| (!ignore_canstun && (!(source.status_flags & CANKNOCKDOWN) ||
HAS_TRAIT(source, TRAIT_STUNIMMUNE))))`
Notice anything odd about it?
It only checks for `CANKNOCKDOWN`. 
What does this mean?
Well, *every single* one of the stun procs used this macro for checking
stun immunity. Which means every method of stun checked the
`CANKNOCKDOWN`.
This means that, say you have a mob which has `CANSTUN` but not
`CANKNOCKDOWN`.
Intuitively this means that the mob cannot be knocked down, but can be
stunned.
But instead, this means the mob can't be stunned either. 
This doesn't affect humans, they have all the status flags, but it does
affect some other mobs.
Alien adults (not queens) have `CANUNCONSCIOUS|CANPUSH`. Before, they
didn't have `CANKNOCKDOWN`, so they were fully immune to stuns and
sleeps. But now, they can be knocked unconscious.
However, overall it doesn't change much, as most mobs that flipped off
`CANKNOCKDOWN` flipped off the others too.
For consistency though it makes sense for these flags to work as they
imply.

- `incapacitate` didn't have a signal, now it does

## Why It's Good For The Game

More consistent, better code? I may use this in the future.

## Changelog

🆑 Melbert
refactor: Refactored Stun Absorptions (Bastard Sword, His Grace)
refactor: Refactored Stun Immunity. Note this means that some mobs
which, prior, were immune to all forms of incapacitation are now
vulnerable to some. Notably, adult non-queen xenomorphs are now
vulnerable to falling unconscious.
/🆑
2023-06-16 14:44:25 -06:00
jimmyl
cccdd2cda5 Latejoining crew start with emergency large crowbars if arrivals is not powered (#75827)
If you latejoin, and arrivals environmental power is off (airlocks
depowered), you start with an emergency large crowbar in your hands (or
floor if both hands are full already)

Some arrival shuttles start with a crowbar, but its not enough if
someone already took it before you arrived.
Being stuck in airlock + firelock CBT especially with no air is very
shit (unless youre the CE or an Engineer who start with tools, unlikely)
Having a crowbar resolves movement
2023-06-16 19:56:56 +00:00
ChungusGamer666
1bede4dcff Acid particles (+unsorted acid/burning/thermite component changes) (#75248)
This PR is way less than the file changes make it seem like it is.
Okay, first, the boring part:
- Picking up burning items is now a signal registered on the burning
component itself, instead of being a direct /obj/item/attack_hand()
check
- Sear sound now has an SFX define for convenience, since it is very
commonly used
- Fire stacks when extinguished on mobs will no longer clean acid on
items (WTF?)
2023-06-16 06:39:24 +00:00
MrMelbert
2173106e99 Fix *wing runtimes (#76056)
## About The Pull Request

Seemed like this emote never got updated to newer "wing organ"
standards.

This fixes some runtimes that are caused by humans without wings using
*wing.

## Why It's Good For The Game

Runtimes, makes the emote a bit more clear on how it's used

## Changelog

🆑 Melbert
fix: Runtimes from wingless humans using *wing
/🆑
2023-06-15 19:59:55 -06:00
A miscellaneous Fern
9bdda1015b Positronic brains now correctly reject ghosts who have used the suicide verb (#76039)
## About The Pull Request

What it says on the tin. It was always meant to work like this, but the
code checked whether the positronic brain had the suicided trait rather
than the ghost trying to enter it.

Also removes a redundant check to see if the brainmob is qdeleted.
## Why It's Good For The Game

It's a bugfix.
## Changelog
🆑
fix: positronic brains now correctly reject the ghosts of people who
have used the suicide verb
/🆑
2023-06-15 19:43:56 -06:00
John Willard
b5975bd915 Unit tests now catch decals in walls/space (#75189)
## About The Pull Request

Unit tests will now fail if there's a decal in a wall or open space
turf. Open space turf could be limiting to mappers but I don't think it
makes sense for decals (like dirt, glass shards, etc) to be floating
around in space in the exact same spot.

If there's a decal you want to put in space, decals have a
``turf_loc_check`` var that will bypass this.

**Important note: This is not changing existing behavior. Decals already
delete themselves when they spawn in these incorrect locations, we're
just avoiding them from spawning in the first place.**

### Changes I made

- Ash flora are now lava immune, rivers spawn after flora does, so I
decided that it would be easiest (and more flavorful) to have them be
lava-immune rather than to not have them spawn at all.
- Decals can now be spawned in non-turf locations. This is currently
done by mail, which can give you bones as part of the mail. Currently it
will just delete itself instead.
- Trading Card button is now on the same tile as their display, which
now uses an offset. Before it would spawn it on the tile next to it,
which could be a wall in some instances.
- Mirrors now have floating movement type. They ARE floating since
they're attached to the wall, and it prevents them from burning up due
to lava in the Pride ruin.
- I also added a broken mirror subtype because I thought the icon_state
check was terrible.
- Bubblegum called ``DestroySurroundings`` several times on the same
thing, I hopefully fixed some of that. Their charge ability also
registered ``COMSIG_MOB_STATCHANGE`` despite ``/datum/action`` doing it
by default, so I fixed that too.

## Why It's Good For The Game

Decals in walls is already a bad idea, but currently all it does is
delete it on Initialize. It would be better if we ensured they wouldn't
spawn in the first place.

## Changelog

🆑
fix: Lava will no longer burn 6 of the mirrors in pride ruin
fix: Lava will no longer burn plants that spawn in them.
/🆑
2023-06-15 16:39:22 -07:00
Nick
1648bcc47e Plasma flower MOD core from the lavaland patch of eden ruin (#75959)
This PR gives a small update to the patch of eden lavaland ruin, and
adds a new item that can be used as an upgrade to the plasma mod core.
The idea around this item is that it's a flower that has absorbed all
the plasma and bad-vibes in the small area around the ruin, leaving an
area full of plants, and a flower full of energy. This flower can be
taken from the oasis and turned into a functional MOD core using some
wires. As a MOD core, it is the same as the plasma mod core, but has a
higher energy capacity, being equivalent to a super power cell. It also
gives you a cool pollen effect, and spawns butterflies around you while
your suit is active. These butterflies disappear when they get too far
away, or if the suit deactivates. They also don't leave corpses, so they
shouldn't cause too much clutter.
2023-06-14 03:29:00 +00:00
Zephyr
34e8aac301 You can no longer abuse aicard shitcode to return to lobby as an AI (#75964)
See title.
2023-06-12 09:03:23 +00:00
Roryl-c
ddda24776e Fix some TTS jank cases (#75874)
## About The Pull Request
Fixes two cases TTS trips over:
1. `COMSIG_MOB_SAY` handlers such as tongues and clothing overwrite the
TTS message, causing stuttered text to pass through to TTS, which
pronounces each stuttered letter individually. **Note:** This fix is to
simply swap the order of `COMSIG_MOB_SAY` and
`COMSIG_LIVING_TREAT_MESSAGE`, I couldn't determine any adverse effects
from this and it actually fixes other stuff (like properly stuttering
added speech from italian mustache).
2. Trims off repeated, consecutive consonants at the start of words in
all cases. This not only fixes lizard "ess-ess-speech" but also flymen
and snails speech. (though snails are still extremely broken)
## Why It's Good For The Game
lizards can ess-ess-speak properly
## Changelog
🆑
fix: fixed TTS tripping over stuttered text when other speech modifiers
are in effect
fix: fixed tedious TTS "ess-ess-speech" for lizards and other species
with repeated consonants
/🆑

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2023-06-10 19:08:29 +00:00
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](102b79694f)

[Moves signal procs over to their own
file](33d07d01fd)

[Renames the PREQDELETING and QDELETING comsigs to drop the parent bit
since they can hook to more then just comps
now](335ea4ad08)

[Does something similar to the attackby comsigs (PARENT ->
ATOM)](210e57051d)

[And finally passes over the examine
signals](65917658fb)

## 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](c3821d9f5f)

[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](6b3f97a76a)

[Removes direct reads of the timer list, they were redundant
mostly](14fcd9f8a6)

[Please stop directly reading/modifying the traits list to ensure your
dna rot follows the
brain](ec0e5237ec)

[Marks internal datum lists as well internal with
_](57c6577ff6)

[57c6577](57c6577ff6)

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