Commit Graph

14792 Commits

Author SHA1 Message Date
IndieanaJones
06f61a7ba1 Xenomorphs and Monkeys Can Remove Embedded Objects Again (#77528)
## About The Pull Request

This is a simple bugfix PR that re-allows xenomorphs and monkeys to
remove embedded objects from themselves. The reason this bug occurred
was a hopefully erroneous use of NEEDS_DEXTERITY.

## Why It's Good For The Game

Xenomorphs and monkeys aren't that dumb, right? 

## Changelog
🆑
fix: After a collective brain fart lasting for 6 months, monkeys and
xenomorphs now know how to remove embedded objects from their own
bodies.
/🆑
2023-08-12 09:28:26 -04:00
A miscellaneous Fern
646a4e3c31 Makes Baseballs and Rabbits and small-sized and able to be picked up and held. (#77511)
## About The Pull Request

What it says on the tin. They previously inherited the size of a human
from `/obj/item/beach_ball` and `/mob/living` respectively.
Also allows rabbits to be picked up and held.

## Why It's Good For The Game

Fixes #77509.
Baseballs shouldn't be as large as a beachball.
Bunnies should be small. Proof:
<img src
="https://github.com/tgstation/tgstation/assets/80640114/96d8574d-f8d2-4e9b-b09e-285196de04b1"
width=200 height =200>
## Changelog
🆑
fix: rabbits are now small-sized rather than human-sized, as well as
capable of being picked up
fix: baseballs are now small sized rather than large
/🆑
2023-08-12 14:09:34 +02:00
Jacquerel
497f18ea32 Spiders don't automatically grant an antag datum (#77523)
## About The Pull Request

Fixes #77501

Spider egg ghost role spawners grant the spider antag datum, rather than
the act of being a spider.
This means that gold core, mapstart, polymorph belt, and other spiders
will not have an antagonist datum.

While doing this I also made a new abstract `mob/living/basic/spider`
type which all three kinds of spider life stage (`spiderling`, `young`,
`giant`) extend from, because there was a gross amount of copied code.
Now there isn't.

Also the Flesh Spider and Event Midwife eggs now simply hatch adult
spiders instead of child ones.
This is because there is no reason for either of these to have a two
minute wait time before they get going. Midwife spiders spawned by the
event should just start spidering immediately, and Flesh Spiders are
made by changelings and shouldn't be effected by measures introduced to
balance the spider gamemode.
Eggs which are laid during a round and _can_ hatch into midwife spiders
still hatch baby spiders.

Also I swapped some white pixels on the animation of the ambush
spiderling for a different colour because they looked bad.

## Why It's Good For The Game

While the policy is always "if you turn yourself into something, you're
not an antagonist" the presence of the antag datum still confuses
people. Plus that code was gross and I didn't like it.

## Changelog

🆑
fix: Giant Spiders only have an antag datum if created by the round
event.
balance: Flesh spider eggs hatch into adult spiders instead of baby
spiders.
balance: The eggs spawned by the start of the spider infestation event
hatch into adult Midwife spiders instead of baby ones.
/🆑
2023-08-11 20:43:04 -06:00
carlarctg
c968edab30 Restricts Scrapheap & Lepton Violet behind conditions, alters Rollerdome (#77277)
## About The Pull Request

Lepton Violet (wabbajack) shuttle must be unlocked by having some form
of polymorph happen in-game first (Pride Mirror or the cursed springs
are the most accessible sources)

Scrapheap shuttle can only be bought if the Cargo budget is below 600
credits, and the shuttle has just less than half of its usual refueling
time left. However, it gives the cargo budget an influx of 3000 credits!

Uncle Pete's Rollerdome has had its price increased, and the disco
machine is no longer unbreakable.

## Why It's Good For The Game

First off, here is my reasoning for why these need altering at all.

Players will always naturally gravitate to the wackiest and
most-out-there options, in this case this applies to shuttles. It's why
the Monastery or the Asteroid or Daniel are reasonably common sights,
more common than some of the 'boring' shuttle options that don't need
unlock with an emag.

The problem here, as I see it, is that there is no incentive
what-so-ever to NOT purchase these 'wacky' shuttles. Some of the
shuttles in the code are just way too stupid to be seen on most or even
some rounds (Arena, Disco Inferno?), so they require rare unlocks to
occur. Wacky shuttles being spammed round after round are bad due to
several reasons:
1. Players will run every joke to the ground. Wacky conditionless
shuttles take up a large amount of space in the shuttle memeplex, so
they are disproportionately seen in comparison to any of the
less-extravagant but more grounded and actually interesting options.
(Medisim? Monkeys anyone?). This ends up making the wacky shuttles
actually *less* wacky and just the stale and boring options.
2. Wacky shuttles affect the end-round quite a lot. This is fine, of
course, but not when these wacky shuttles can be seen every round.
3. These wacky shuttles don't have proper facilities. None of them have
a good medical section, or emergency supplies, or enough room. This gets
pretty annoying pretty fast.
4. One Funny Guy (the quintessential example being the clown with a dead
captain's ID) is all but guaranteed to try to buy the funniest and most
annoying shuttle to piss off the rest of the crew. With how Funny and
Annoying these shuttles are, not to mention how dirt-cheap they are (or
literally give you money!), they're easily the most seen alternate
shuttles, which isn't good when they alter how the round-end plays so
heavily.

> Lepton Violet (wabbajack) shuttle must be unlocked by having some form
of polymorph happen in-game first (Pride Mirror is the most accessible
source)

The Wabbajack has a endless source of voluntary Polymorphs with a
comically low price, which means it is purchased endlessly by crew, not
to mention being literally a source of free syndiborgs and xenos. While
I'm not a balanceposter, this does come with some annoyances especially
for antagonists who just randomly get blown up by an assault borg. This
is fine and fun every so often, but not as a common occurrence, not as a
guaranteed every-round option. I think it's an excellent candidate for
an unlock condition.

> Scrapheap shuttle can only be bought if the Cargo budget is below 600
credits, and the emergency shuttle is more than halfway refueled.
However, it gives the cargo budget an influx of 3000 credits!

This is LITERALLY 'haha grief shuttle', I have no idea how it even got
in as a condition-less shuttle. You see the captain buy it For No Raisin
Lul 2 minutes in, sigh to yourself, and secure an EVA suit when the
shuttle lands to try to survive in the unbelievably cramped space.
(Someone always blows it up.)

Instead of being JUST Grief Shuttle, now it has some interesting reasons
to exist. Revs and you're dirt-poor? Nukies just declared war after the
Clown bought ten crates of creampie dufflebags? Buy this shuttle and get
an influx of money.

> Uncle Pete's Rollerdome has had its price increased, and the disco
machine is no longer unbreakable.

This one isn't as egregious as the above, but I believe my personal
dislike of it extends to a game design level, to an extent. One person
can buy this shuttle and the crew as a whole are left to groan as they
prepare for a noisy, confusing shuttle in which everyone is ten tiles
shifted to their left as their sprite does the most ridiculous dance
seen in SS13 history. 'Just turn the music off!': I'm glad this is an
option, but it doesn't change how much this shuttle alters things. It's
fine as a sendoff to a nice, chill greenshift, but as a constant sight
in red shifts it's just... frustrating. And purchased BECAUSE it's
frustrating, to the short-lived schadenfreude of one person and the
frustration of others.

And then the unbreakable disco machine. Why is it unbreakable. If the
crew doesn't want to listen to the thing, let them break it? Buy Disco
Inferno if you want an unbreakable disco.

Some of these changes are probably over-the-top, but remember that these
will still be seen in-game, just a bit rarer. Worst case scenario the
shuttle replacement event will let them have their time in the
limelight.

## Changelog

🆑
balance: Lepton Violet (wabbajack) shuttle must be unlocked by having
some form of polymorph happen in-game first (Pride Mirror or the cursed
springs are the most accessible sources)
balance: Scrapheap shuttle can only be bought if the Cargo budget is
below 600 credits, and the shuttle has just less than half of its usual
refueling time left. However, it gives the cargo budget an influx of
3000 credits!
qol: Uncle Pete's Rollerdome has had its price increased, and the disco
machine is no longer unbreakable.
/🆑
2023-08-10 20:58:10 -06:00
MrMelbert
c6fe13bf6c Fix antimagic effect never expiring (#77500)
## About The Pull Request

Fixes #77499 

I messed this up resolving merge conflicts. 

## Changelog

🆑 Melbert
fix: Fix antimagic effect not expiring 
/🆑
2023-08-10 20:48:44 -06:00
Ghom
470743b5db Fixing an oddity with morgue corpses ( or rather, appears_alive() ) (#77455)
## About The Pull Request
Look, appears_alive() checks the health variable rather than the state
of the mob, and that's probably reason why it's only used in two places,
because dead mobs do not necessarily have their health at or below zero.

## Why It's Good For The Game
This will fix #77332.

## Changelog

🆑
fix: Fixed an oddity with morgue corpses being shakeable like they're
just unconscious.
/🆑
2023-08-10 17:46:25 +01:00
John Willard
2e122f6207 removes dextrous_hud_type and healable var (#77244)
## About The Pull Request

I was working on some basic mob stuff and noticed this is a little
messy, so I made these changes separately.
I removed ``dextrous_hud_type`` because ``hud_type`` exists and can just
be used instead.
I also removed the ``healable`` var, because it was incorrectly used
(with the expectation that basic mobs had it too). Instead it will rely
on the mob being Organic, the check right under it, and I gave mob
biotypes to mobs that were not healable and had no biotype already.
I made a new biotype for slimes because I didn't find any other ones
that fit it (and gave it to slimepeople), but it is not used anywhere
other than to prevent them from healing from sutures, as I didn't want
to just set it to NONE. Thought this may be useful for the future.

## Why It's Good For The Game

``healable`` is checked on simple animals and basic mobs, despite basic
mobs not having this var. I do not want to add this var to basic mobs
either, I think checking for them being organic makes much more sense
and avoids having to make basic mobs less basic.

## Changelog

Nothing player-facing.
2023-08-10 14:03:01 +02:00
Sealed101
b1990f03e7 Fixes a runtime in lobstrosity run_away_from_target behavior (#77481)
closes https://github.com/tgstation/tgstation/issues/77435
2023-08-10 13:21:52 +02:00
MrMelbert
d39657bdfa Fix double send of COMSIG_GLOB_CREWMEMBER_JOINED for latejoins (#77474)
## About The Pull Request

I saw this pop up on a port of one of my PRs and realized "damn that is
an issue"

`COMSIG_GLOB_CREWMEMBER_JOINED` was sent twice for latejoins, once in
`transfer_character` and once at the end of `AttemptLateSpawn`

This caused latejoiners to get the signal twice, so in the case of
Summon Guns, they'd get two guns
2023-08-10 10:32:11 +00:00
Comxy
8957eb763c Spider Evolution - Young Spiders [Ready] (#76692)
## About The Pull Request
This pr adds a young spiders that appear between spiderlings and adult
spiders. Now spiders have a stage where they are squishy but can also
spin webs and do some other things early depending on the spider type.
Spiderling stage takes 40 seconds and young spider stage take 1 minute,
ealier for spiderling this was 1 minute. Also adds a new wizard spider
sprite and makes the spider form usable.

Gives Wizard Spider version has better immunity against fire since it
can kill a wizard very fast it they are not paying attention.

Makes tangle spider get more health but makes the self-healing worse.
This is done because spider is a team antag except for the flesh
(changeling spider), making it so solo-playing as tangle is less
encouraged.

Scout spiderling gets thermal vision also. It cannot communicate, but it
can already start scouting now.

Viper deals bonus damage when an enemy is on low health. Toxins don't
kill humans anymore, and since the viper spider only deals 5 damage now
it deals more so it can actually take down enemies at low health. They
also have a little more health since they always die very fast. Viper
can also change between a defensive/slow mode with more armor or a
offensive/speed mode with less armor.

Nurse spider heals for 25 instead of 20, since 25 is one laser shot, it
makes more sense for the nurse spider to be able to heal that amount.

Flesh spider grows faster since they are a solo antag and spawn killing
isn't cool.

Tarantula spider can now tear down walls by clicking them instead of
needing to use their charge attack. They can also build wall webs and
passage webs. Their damage coeffs also got the regular burn factor for
spider so their health also increased a bit.

![promo](https://github.com/tgstation/tgstation/assets/25363960/19b9a97f-db08-4c7d-b470-46ae0bb18556)

![promo2](https://github.com/tgstation/tgstation/assets/25363960/783ced04-a97d-4849-8ec3-04c72a418284)
## Why It's Good For The Game
Now there is a smooth transition between the tiny spiderling and the
bigger spider stage. This will promote people to help the hive at an
earlier stage while not being too powerful yet. It is also realistic and
adds extra flavor to the spider antag. The other balance changes are
improvements to the game.
## Changelog
🆑
add: Young Spiders that appear between spiderlings and adult spiders.
balance: Wizard Spider version has better immunity against temp damage
and can lay webs faster.
balance: Tangle Spider sucks more with self-healing but has more health.
balance: Scout spiderling gets thermal vision.
balance: Viper deals bonus damage when an enemy is below 20% health.
/🆑
2023-08-09 22:38:57 +02:00
carlarctg
66b8748091 Adds Summon Simians & Buffs/QoLs Mutate (#77196)
## About The Pull Request

Adds Summon Simians, a spell that summons four monkeys or lesser
gorillas, with the amount increasing per upgrade. The monkeys have
various fun gear depending on how lucky you get and how leveled the
spell is. If the spell is maximum level, it only summons normal
gorillas.

Added further support for nonhuman robed casting: Monkeys, cyborgs, and
drones can all now cast robed spells as long as they're wearing a
wizardly hat as well.

Made monkeys able to wield things again.

Wizard Mutate spell works on non-human races. It also gives you
Gigantism now (funny). If the Race can't support tinted bodyparts, your
whole sprite is temporarily turned green.

Made Laser eyes projectiles a subtype of actual lasers, which has
various properties such as on-hit effects and upping the damage to 30.

Improved some monkey AI code.

## Why It's Good For The Game

> Adds Summon Simians, a spell that summons four monkeys or lesser
gorillas, with the amount increasing per upgrade. The monkeys have
various fun gear depending on how lucky you get and how leveled the
spell is. If the spell is maximum level, it only summons normal
gorillas.

It's criminal we don't have a monky spell, and this is a really fun spin
on it. Total chaos, but total monky chaos. It's surprisingly strong,
but! it can very well backfire if you stay near the angry monkeys too
long and your protection fades away. Unless you become a monkey
yourself!!

> Wizard Mutate spell works on non-human races. 

This spell is great but it's hampered by the mutation's human
requirement, which is reasonable in normal gameplay. Wizards don't need
to care about that, and the human restriction hinders a lot of possible
gimmicks, so off it goes. Also, wizard hulk does't cause chunky fingers
for similar reasons

> Made Laser eyes projectiles a subtype of actual lasers, which has
various properties such as on-hit effects and upping the damage to 30.

Don't really caer about the damage so much, this is more so that it has
effects such as on-hit visuals. Can lower the damage if required, but
honestly anything that competes against troll mjolnir is good.

> Added further support for nonhuman robed casting: Monkeys, cyborgs,
and drones can all now cast robed spells as long as they're wearing a
wizardly hat as well.

SS13 is known for 'The Dev Team Thinks of Everything' and I believe this
is a sorely lacking part of this or something. It's funny.
I want to see a monkey wizard.

> Made monkeys able to wield things again.

I really don't know why this was a thing and it was breaking my axe and
spear wielding primal monkeys. Like, why?

## Changelog

🆑
add: Adds Summon Simians, a spell that summons four monkeys or lesser
gorillas, with the amount increasing per upgrade. The monkeys have
various fun gear depending on how lucky you get and how leveled the
spell is. If the spell is maximum level, it only summons normal
gorillas.
balance: Wizard Mutate spell works on non-human races. It also gives you
Gigantism now (funny). If the Race can't support tinted bodyparts, your
whole sprite is temporarily turned green.
balance: Made Laser eyes projectiles a subtype of actual lasers, which
has various properties such as on-hit effects and upping the damage to
30.
add: Added further support for nonhuman robed casting: Monkeys, cyborgs,
and drones can all now cast robed spells as long as they're wearing a
wizardly hat as well.
balance: Made monkeys able to wield two-handed things again.
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-08-09 21:28:46 +01:00
Jacquerel
b159edcc2f Anomaly gear: Polymorphic Field Inverter (#77383)
## About The Pull Request

Adds a new device you can research called the "Polymorphic Field Inverter".
It requires Advanced Biotechnology and Anomalous Research to unlock.

Completing that research lets you print out a fancy belt. Using it for 5
seconds on a mob (dead or alive) which is organic in nature and isn't
some kind of human or megafauna (monkeys are fine) will store a copy of
its DNA. Scanning another creature will replace the original stored DNA.
Storing DNA does absolutely nothing unless you have also inserted an
active Bioscrambler core.

If the item is activated with a Bioscrambler core then equipping it
grants you the ability to transform into the same kind of creature as
the one you scanned (and back). As in spells such as Wildshape you share
health with your transformed form and if you die while transformed then
you die, so be careful when turning into something like a cockroach
which has one hit point.

It has an associated experiment which makes the research free, which is
to scan two humans with (non-prosthetic) organs that they didn't have
when the round started. You can accomplish this through surgery, DNA
infusion, or a bioscrambler anomaly. You can do it on some monkeys if
nobody is cooperating with you.
I copied a teeny bit of this code from #73969 although I didn't actually
end up needing most of it.

These are absolutely codersprites so if anyone wanted to make cooler
ones, let me know.
2023-08-09 12:23:01 -05:00
Vekter
95f01e3bff Plays an audible alert to silicon players when their laws are changed (#77426)
## About The Pull Request
Exactly what it says. The game will now play `cryo_warning.ogg` when a
player's laws are changed in addition to showing the current alert
tooltip in the top right. I went with this sound effect because it's
only used in one other instance (cryo pods ejecting their occupants) and
it's not annoying if someone decides to spam reset or something.

## Why It's Good For The Game
Law changes are generally pretty important for silicon players to keep
up with. An inattentive player could be tabbed out or not paying
attention when this happens and it can sometimes lead to them missing
the announcement. This should help.

## Changelog
🆑 Vekter
sound: Law changes will now play a sound to silicons impacted by those
changes.
/🆑
2023-08-08 13:38:42 -04:00
Ben10Omintrix
444f1b5bc0 make the hive bot a basic bot (#77274)
## About The Pull Request
i make the hivebot a basic bot also the old hivebot simple bot he was
chaneged apperence when he finded a target so i maked a new element to
allowed this behavier so now when the basic finded a target he apperence
can also changed and this elememt can be gived to another basic monsters
so they can changed apperence when they found a target. i give him new
behaviers now the hivebot will look for ech other and when he finded ech
other they will comunicated with binyary messages and now the mechanic
hivebot he will go to look for broked machines so he can repair him

## Why It's Good For The Game
the hivebot is a basic and he have a better behaver 

## Changelog
🆑
refactor: the hivebot is now a basic please report any bugs
/🆑

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-08-08 11:42:37 +01:00
necromanceranne
95ec0e6545 Dissection experiments are handled by autopsy surgery. Removes redundant dissection surgery. You can repeat an autopsy on someone who has come back to life. (#77386)
## About The Pull Request

TRAIT_DISSECTED has had the surgical speed boost moved over to
TRAIT_SURGICALLY_ANALYZED.

TRAIT_DISSECTED now tracks if we can do an autopsy on the same body
again, and blocks further autopsies if it is on the mob. A mob that
comes back to life loses TRAIT_DISSECTED. This allows for mobs to be
autopsied once again.

Since it is completely redundant now (and was the whole time TBH),
dissections have been removed in favour of just having the experiment
track autopsies.

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

## Why It's Good For The Game

Today I showed up to a round where someone autopsied all the bodies in
the morgue, not realizing they were using the wrong surgery. Since I
couldn't _redo_ the surgery, this rendered all these bodies useless.
This was not out of maliciousness, they just didn't know better. There
are two autopsies in the surgery list, but only one is valid for the
experiment and doing the wrong one blocks _both surgeries_. Dissection
is completely useless outside of experiments. This same issue also
prevents additional autopsies on the same person, even if they had come
back to life and died again after you had done the initial autopsy.
Surely you would want to do more than one autopsy, right? That's two
separate deaths!

This resolves that by giving you a method of redoing any screwups on the
same corpse if necessary. It only matters if the experiment is available
anyway, so there isn't much reason to punish players unduly just because
they weren't aware science hadn't hit a button on their side (especially
since it isn't communicated to the coroner in any way to begin with). It
also removes a completely useless surgery and ties in the experiment to
what the coroner is already going to be doing. They can dissect their
corpses to their hearts content without worrying about retribution from
science for doing so.

In addition, someone repeatedly dying can continue to have autopsies
done on them over the course of the round. The surgery bonus only
applies once, so the only reason to do autopsies after the first is to
discover what might have killed someone. No reason this should block
further surgeries, just block surgeries when the person remains a
corpse.

## Changelog
🆑
fix: You can do autopsies on people who were revived and died again
after they had already been dissected.
qol: Autopsies have become the surgery needed to complete the dissection
experiments. As a result, the dissection surgery has been removed as it
is now redundant.
qol: A coroner knows whether someone has been autopsied and recently
dissected (and thus hasn't been revived) by examining them.
/🆑

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-08-08 11:39:20 +01:00
MrMelbert
eea20b83e3 Kills seconds_per_tick from status effect tick, replaces it with seconds_between_ticks to clarify some things (#77219)
## About The Pull Request

https://github.com/tgstation/tgstation/pull/66573#discussion_r861157216

`status_effect/proc/tick(seconds_per_tick)` is wildly misleading and I
feel like I should address it

For a majority of status effects, they process on fast processing but do
not tick every fastprocessing tick

This means that using `seconds_per_tick` here is not giving you the
seconds between status effect ticks, it's giving you seconds between
processing ticks (`0.2`)

This is how it's misleading - If you have a tick interval of `1
SECONDS`, you'd think `seconds_per_tick` is, well, one. But it's
actually one-fifth. So all of your effects are now 80% weaker.

I have replaced the use of `seconds_per_tick` in tick with
`seconds_between_ticks`.

This number is, quite simply, the initial tick interval of the status
effect divided by ten.

An effect with the tick interval of `1 SECONDS` has a
`seconds_between_ticks` of 1.

As a consequence, some things which were inadvertently made weaker, such
as fire and some heretic things (at a glance), are now a little
stronger.

## Why It's Good For The Game

See above. Makes it more clear what you're doing when working with
effects.

## Changelog

🆑 Melbert
code: Updated some status effect tick code to be more clear of how long
is elapsing between ticks. Some effects that were inadvertently weakened
are now stronger as a result (fire and some heretic effects).
/🆑
2023-08-08 11:54:12 +12:00
Ghom
52e4638536 Adds an Indebted negative quirk to the game. (#77138)
## About The Pull Request
This Pull Request brings a new negative quirk to the list of negative
quirks: Indebted. As the title suggests, you start the round with a
pretty high debt of roughly 15.000 credits (give or take up to 1.250
credits), and everytime the account balance would increment, 75% of
what's earned will be pushed toward solving it instead.

Unlike other quirks, it is hidding from medical HUDs and the health
analyzers, because I frankly believe it's quite a stretch putting it on
the same plane as other quirks which are of a more "psycho-physical"
nature. However, examining the medical records will return a remark on
how the quirk holder has had some difficulties paying the checkup bill,
hinting it greatly. Examining their ID accurately will also report the
entity of the debt.

Ok, the PR is now ready. It fancies an achievement and a pin too, for
those who actually extinguish the debt.

## Why It's Good For The Game
I think it's cool to have a quirk that affects players from an angle
different than most of the others. It doesn't affect the mob directly,
brings no positive or negative moodlet, gives items, but it does cripple
what they can do with their own bank account. Sure, it can be
circumverted by "borrowing" another player mob's ID card, but frankly it
has a mild negative value on par with "Family Heirloom" so it's not a
big deal.

## Changelog

🆑
add: Added an Indebted negative quirk to the game, which gives the
holder's bank account a debt averaging at 15000 credits (with a
variation of 1250 cr) and forces 75% of all earnings towards solving it.
A little prize awaits those who actually extinguish it.
/🆑
2023-08-07 22:21:27 +01:00
Comxy
939ea4b369 Species change damage/wound transfer (#77162)
## About The Pull Request
You now keep the same damage on limbs when you species gets changed.
## Why It's Good For The Game
Fixes the first half of #77001
## Changelog
🆑
fix: Damage on limbs get transferred on species change.
/🆑

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
2023-08-07 19:22:03 +00:00
GPeckman
416dc10609 Nobreath trait now properly allows things to heal oxyloss (#76985)
## About The Pull Request

Previously, the nobreath trait would constantly clear oxyloss and
suffocation damage from people with it. However, this functionality was
removed apparently by accident in #76209. Rather than re-adding that
functionality, this PR causes creatures with nobreath to regenerate
oxyloss at a fixed rate, as there are sources of oxyloss other than
suffocation (bloodloss). This also fixes #76804
## Why It's Good For The Game
2023-08-07 13:39:10 -05:00
Sealed101
297f7f88e8 Fixes things about goliaths: wallhacks/range hacks(no, really) and tentacles not spawning in mineral turfs; also fixes find_potential_targets wallhacks (#77393)
## About The Pull Request

Goliath's sand digging behaviour could potentially target a turf that's
actually unreachable by the goliath, e.g.
```
G#
#T
```
where G - goliath # - wall T - target turf. fixed that, but i think
there could be something easier here, maybe instead grabbing turfs in
goliath's `view()`? unsure

The component goliaths use to telegraph their attacks
(`basic_mob_attack_telegraph`) casts a `do_after()` to perform the
attack, but it was not actually checking for the target staying in melee
range, as it was using the source goliath as both `user` and `target`,
so it didn't actually care at all for the target. Implemented an
`extra_checks` to `Adjacent()` since that's the closest we get for melee
range shenanigans I suppose
This still allows the source basicmob to attack the target if the target
moves around the source basicmob.

`!`Goliaths were also able to summon tentacles on a target that moved
into cover and still stayed in the `find_potential_targets` target
range. Which meant more wallhacks. This was a thing for the base
`find_potential_targets`, meaning that every basic mob using it was a
dirty haxxor (or very vengeful). Fixed that by making
`find_potential_targets` also check for `can_see()` before proceeding
further down `find_potential_targets/perform()`. `!` The only exception
to this check currently are bileworms.

`!`Goliath tentacles were not spawning in mineral turfs as their
`Initialize()` checked for closed turfs before handling mineral turf
mining. Fixed that as well.

## Why It's Good For The Game

![Dr__Hax_by_Didgeridoo_Dealer](https://github.com/tgstation/tgstation/assets/75863639/fbcbfc1b-f489-435e-bb01-677f55398787)

## Changelog

🆑
fix: fixed goliaths digging sand that they can't actually reach (behind
windows or inbetween closed turfs)
fix: fixed goliaths melee attacking their target despite the target
running away from goliath melee range
fix: fixed goliath tentacles not spawning in mineral turfs
fix: fixed goliaths summoning tentacles on targets that moved behind
cover but stayed in their targeting range. this applies for most basic
mobs, really, so if any basic mob was targeting you despite you hauling
ass behind cover, they shouldn't anymore
/🆑
2023-08-07 13:02:09 +01:00
Ben10Omintrix
8aea1c8a89 (no gbp) make the bee care more about the polinating (#77293)
## About The Pull Request
the bee when he found a man he was focused on attacking him and he
forget about the pollinating until the man is gone or died. now he will
care more about polinating even if there is a man near him butbe care
because he will still atacked u if u dont wear a protect suit! and a
small thin now the raegent incompatibile proc will checked the raegent
type insted of the datum himself.

## Why It's Good For The Game
make the bee better at polinating

## Changelog
🆑
fix: the bee will now care more about polinating
qol: in case u miscliked the bee queen with a seringe 2 times, the
raegent will not be transfered to the quen if he alredy have this
raegent
/🆑
2023-08-07 12:49:22 +01:00
Ghom
47704d9ca1 'Mirrors now display your reflection' Redux. (#77202)
## About The Pull Request
This is a revamp of #62638, which is in turn a remake of #49833, a
whooping 3 years old PR, that adds one component to the game, used by
mirrors, to do what it reads on the title. Thanks ChungusGamer for
reminding me about it.

This time with vampires not being shown in mirrors.

## Why It's Good For The Game
I'm going to post the old screenshots here since I've forgot to take
some during the latests tests, while I was busy cussing about a tiny
little detail I couldn't achieve (see the documentation on the component
path so I don't have to be verbose about it). They look more or less the
same, except the visuals look a little less cropped now, ergo
nicer-looking:

![immagine](https://user-images.githubusercontent.com/42542238/140630271-b002fe97-59c6-4781-abc9-02046c002dac.png)
and here another from the previous attempt at PRing this:
![Bolshevik Spess Junk LV 2021-11-07
024750](https://user-images.githubusercontent.com/42542238/140630301-5ca687ec-153b-4f7d-9e37-76fa038c6299.png)

## Changelog

🆑
image: Mirrors now display a reflection of the mobs next to them...
except for vampires.
/🆑
2023-08-07 12:46:59 +01:00
BlueMemesauce
612da69c63 Emagged player-controlled bots now get antagonistic flavor text (#77100)
## About The Pull Request

The default flavor text is 'You are a malfunctioning bot! Disrupt
everyone and cause chaos!'
## Why It's Good For The Game

Bots are required to follow their flavor text, so meant emagged bots
couldn't use any of their new dangerous abilities since that would go
against their initial helping the station flavor text. This wouldn't be
fun for both the bot themselves and the person who emagged them. Now
that they get antagonistic flavor text after being emagged, they
actually can go out and use their abilities and act antagonistically.

It also makes it more clear what has happened to you, especially when an
AI emags you as there was no message for that before.

## Changelog
🆑
add: Emagged player-controlled bots now get different flavor text
(depends on policy)
add: Bots are now notified when a silicon toggles them malfunctioning
/🆑
2023-08-07 12:17:02 +01:00
Wisemonster
77913b221e Fixes Cell Message With Mulebots (#77374)
## About The Pull Request
Fixes the message when removing/adding a cell to mulebots using the
mulebot as the user, resulting in sentient mulebots receiving the
message "You add/pry out the cell in the mulebot" despite not being the
one adding/removing the cell. First time making a pr for this codebase,
so let me know if I fucked something up.
## Why It's Good For The Game
The mulebot isn't moving the cell, whoever IS moving it is. Also bug
bad.
## Changelog
🆑
fix: Fix mulebots receiving the wrong message when thier cell is
added/removed.
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2023-08-06 12:07:52 -07:00
Fikou
fc4de530ce reorganizes the human sprite folder and replaces the human_basic sprite with an updated one (#77323)
instead of mob/species/human the icon folders are now mob/human/species,
this makes much more sense imo than having human stuff like hair or
bodyparts (which are a GENERAL thing, not human species only) be behind
a folder while you see shit like podperson hair and golem in the main
folder
the icon for human is replaced by the new sprites instead of the old
yellow guy with green eyes
2023-08-05 14:12:05 +00:00
Jacquerel
f491c747f6 [no GBP] Goliaths use TRAIT_NO_GLIDE instead of a movement cooldown element (#77370)
## About The Pull Request

Fikou noticed that Goliaths change their targets semi-randomly, this is
because the element I was using to curtail their movement caused the AI
pathfinding to fail and cancel the current action.
While investigating this I also realised that just "not gliding" makes
more sense than what I was doing anyway, and has fewer weird side
effects (like being unable to move diagonally).

At some point it would probably be sensible to figure out what speeds
make gliding look stupid and automatically apply this trait to
characters (maybe only basic ones rather than humans?) moving that
slowly, however I will do that in a future PR.

## Why It's Good For The Game

More reliable AI behaviour.
Better QoL when actually playing as a Goliath.

## Changelog

🆑
fix: Goliaths no longer intermittently reset their target and retarget
something else.
fix: Goliaths can once again step diagonally.
/🆑
2023-08-05 15:11:51 +02:00
Jacquerel
a0881f897c Lightgeist AI (#77287)
## About The Pull Request

The lightgeist AI controller was marked as "these aren't intended to
exist outside of player control" but this is actually untrue.
Lightgiests can appear under AI control either from a rare vent clog
event or in the "patch of eden" lavaland ruin.

As they heal things by "attacking" them, I made it so that they will
target wounded creatures to "attack" them, though they will only heal
them quite slowly, significantly less efficiently or effectively than a
medibot (for example).
While making this change I also added a couple more parameters to their
"healing hands" component, now they can no longer repair beepsky or heal
cyborg limbs. It's fleshies only.

Lightgeists will attempt to heal _anything_ they can see which is both
injured and has healable damage, which is notable because while this
makes the "Patch of Eden" ruin a nice place of respite for a wounded
miner you should be careful to let them finish up before you leave.
If they follow you out, they will attempt to heal any of the fauna that
you are attacking. Worse still, most Lavaland mobs are not signatories
of the Geneva convention and have no compunctions against killing field
medics.

The majority of listed file changes in this PR is that I made some
attempt at splitting our massive list of blackboard keys across several
files, in order to cause myself a headache based on which of my (or
other people's) open basic mob AI PRs gets merged first.
Also I fixed a bug where the goliath attack forecast would runtime if it
killed a mob which qdels itself on death (guess how I found that out).

## Why It's Good For The Game

Adds a bit more character to a lavaland area and rare event.

## Changelog

🆑
add: Lightgeists under AI control will selflessly heal any wounded
creature that they see.
balance: Lightgeists can no longer repair non-organic tissue.
/🆑
2023-08-04 12:35:53 -06:00
Sealed101
bece959d9c [NO GBP] Removes new player's status tab readiness; replaces it with a blip on Collapse Button (#77209)
## About The Pull Request
On the tin.
Ready blip will update with the new player's ready state, and upon game
start(or when a player joins an in-progress round) the blip is disabled.

<details><summary>Blip showcase (GACHI BGM WARNING)</summary>


https://github.com/tgstation/tgstation/assets/75863639/c3168e5d-f4de-4bec-bcea-bbdd150879aa

</details> 

## Why It's Good For The Game


![moth](https://github.com/tgstation/tgstation/assets/75863639/e6423c53-ff93-4e74-a152-24a8aaf7d6a0)


![moth2](https://github.com/tgstation/tgstation/assets/75863639/24a3336e-966d-43dd-a490-ba6c0d5dcff4)


## Changelog
🆑
del: removed new player status tab Readiness Status
add: added a Ready Status Blip on the Collapse Menu button
/🆑
2023-08-04 12:30:35 -06:00
distributivgesetz
ebbc45b161 Improved PDA Direct Messenger (#75820)
## About The Pull Request

Fixes #76708, Closes #76729 (sorry Zephyr)

This PR expands the Direct Messenger UI, adding a chat screen for each
available messenger that you can find, and moving message sending over
to TGUI.

This chat screen includes a message log that displays messages sent by
you as well as messages received from the recipient. This gets rid of
the previous chat log, which just had all messages thrown together that
you received or have sent, in one big list.

Furthermore, all messaging is now done inside the UI. This kills all
TGUI popups you would ever need to send messages forever (except for
quick replies). Use the input bar on the bottom, press Enter or the Send
button, and it sends your message. Spam mode is now done in the UI too,
via a text field you can find in the contacts list.

Additionally, because I have a habit of blowing things massively out of
scope, I've also completely refactored how messages and chat logs are
stored in the PDA messenger. I plan on using this in a PR that merges
the chat client with the messenger, sometime in the future. Sorry this
took so long.

Stuff left to do before I open this PR for review:
- [x] Add "recent messages"
- [x] Add "unread messages"
- [x] Add message drafts
- [x] Make photo sending not shit
- [x] Implement the edge cases for automated and rigged messages
- [x] Make sure shit isn't fucked
- [x] Profit

<details>
  <summary>Screenshots</summary>
  

![dreamseeker_HIrEfrap5X](https://github.com/tgstation/tgstation/assets/47710522/97c713b7-dda3-44d3-a8f5-d0ec11c92668)

![qIOWhVld4l](https://github.com/tgstation/tgstation/assets/47710522/3ab4e2c1-a38f-4b20-8e9f-509ea14c0434)

![dreamseeker_LIqwi05i4O](https://github.com/tgstation/tgstation/assets/47710522/c051c791-b595-4166-a4d3-82cb7568411f)

![BIYxNVjGL7](https://github.com/tgstation/tgstation/assets/47710522/b9c97eab-52b5-449f-b00f-a0d8aa5f865c)

![dreamseeker_IWdoSsUinC](https://github.com/tgstation/tgstation/assets/47710522/2a4cd76a-2bdc-4283-b642-09e92476fef5)

![L9DxzFHDEF](https://github.com/tgstation/tgstation/assets/47710522/6a5b0e29-d535-4c7e-a88e-e9b71198719b)

![rAuDgqBLNE](https://github.com/tgstation/tgstation/assets/47710522/128a0291-91da-4f9e-9bc5-a65cf411ea6d)

![dreamseeker_voui6S8MUf](https://github.com/tgstation/tgstation/assets/47710522/6e3ba044-b8df-492d-b58d-6c73ab07233d)

![image](https://github.com/tgstation/tgstation/assets/47710522/522c1d85-b9cf-4e0e-9588-9d3993eea03f)

</details>

## Why It's Good For The Game

The UI has largely stayed the same since modular tablets were added a
year ago. Even better, direct messaging has been the same since PDAs
were first added *more than a decade ago*. Imagine that.

Now we finally actually (!) make use of those brand new features that we
got from the TGUI switch in this regard.
## Changelog
🆑 distributivgesetz
add: Updated Direct Messenger to v6.5.3. Now including brand new
individual chat rooms, proper image attachments and a revolutionary
message input field!
add: Added a "Reset Imprint" option to the PDA painter.
refactor: Refactored PDA imprinting code just a bit.
fix: PDAs should now properly respond to rigged messages.
/🆑

---------

Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
2023-08-03 14:43:31 -07:00
Vekter
762da01f71 Fixes formatting for derelict and syndicate drone job names (#77303)
## About The Pull Request
These were using the generic "ghost role" job names instead of the
defines that it's supposed to. This should fix it.

Note: This touches code I'm not intimately familiar with, but I did test
this and it works fine.

## Why It's Good For The Game
Fixes #76922

## Changelog
🆑 Vekter
fix: Fixes formatting for derelict and syndicate drone job names. They
should no longer tell you they're "the Ghost Role" when spawning as
them.
/🆑
2023-08-03 15:51:42 +02:00
distributivgesetz
9ef2971e5b Adds a sanity check to /mob/living/brain/Life() to make sure it's actually in an MMI (#77071)
## About The Pull Request

This PR adds a sanity check to /mob/living/brain in the offchance that
the reference to container is no longer valid. This has only happened
once before as far as I know, but it was catastrophical enough to
warrant a failsafe system. I'm not even sure if this is something that's
player-facing because there's no set of circumstances in the game that
would cause this bug to happen, outside of adminbus.
## Why It's Good For The Game

Fixes #68497
## Changelog
🆑
fix: Fixes an extremely rare bug where a /mob/living/brain with a client
would not be moved out of nullspace correctly, causing admin log spam.
/🆑
2023-08-03 13:56:41 +02:00
GPeckman
5cbe67e195 Replaces Upgraded Cybernetic Ears with two new variants (#75931)
## About The Pull Request
Adjusts the placement of basic and upgraded cybernetic ears in the
research tree and adds two new variants: Whisper-sensitive Cybernetic
Ears, which make it slightly easier to hear whispers from a tile away,
at the cost of higher vulnerability to flashbangs and other loud noises;
and Wall-penetrating Cybernetic Ears, which allow you to 'hear through
walls' so to speak, also at the cost of higher vulnerability to loud
noises.

Basic cybernetic ears are now in basic medical tech node, meaning that
medbay can print them roundstart the same as other basic cybernetics.
The upgraded cybernetic ears are now unlocked with the other tier 2
cybernetics. The two new ear variants are unlocked with the other tier 3
cybernetic organs, and the luminiscent and welding shield eyes have also
been moved there from the cybernetic implants node for consistency
reasons.

The whisper ears allow you to clearly hear whispers from up to seven
tiles away, the same range where you can hear normal speech. The
wall-penetrating ears allow you to hear normal speech within seven tiles
even through walls. Due to technical limitations, runechat popups do not
show up for people you can't see, but the messages will still show up in
chat.
## Why It's Good For The Game
Currently, upgraded cybernetic ears are very underwhelming compared to
other high-tier cybernetic organs. All other high tier organs provide
some sort of benefit; even if the benefit is minor like a built-in
flashlight, a slightly higher tolerance to alcohol and toxins, or higher
tolerance to disgusting food. This change is intended to grant similarly
minor but useful benefits to the cybernetic ears.
## Changelog
🆑
add: Added whisper-sensitive cybernetic ears, which make it much easier
for the user to hear whispers at the cost of being more vulnerable to
loud noises
add: Added wall-penetrating cybernetic ears, which allow you to hear
speech through walls
balance: Basic cybernetic ears and upgraded cybernetic ears are now
unlocked with the other basic/normal cybernetics
balance: The welding shield and luminiscent cybernetic eyes are now
unlocked with the other upgraded cybernetics
/🆑
2023-08-03 11:38:25 +02:00
Fikou
ba6c2ffa4c kinesis changes + smaller misc modsuit stuff (#77241)
## About The Pull Request
renames plasmaman helmet exempt flag to stackable helmet exempt. hat
stabilizer now cares about this instead of letting you stack eva helmets
on top of modsuit helmets
improves some code that dripped in quality when i was on break
kinesis has some tweaks
previously it used to stun for a set amount of time - i think this is
because the creator couldnt figure out how to stop movement while being
held? this is changed, now as long as youre holding someone they are
immobilized
you can cancel your kinesis without throwing or moving out of range by
using right click on the click catcher
adds an admin version of kinesis just for the admin suit. it can grab
(almost) ANYTHING and config menu lets you enable phasing, which makes
it so the atom you grabbed phases through everything. pick up that can.

## Why It's Good For The Game
its fun

## Changelog
🆑
balance: hat stabilizer module can now hold what plasmaman helmets can
hold
qol: kinesis module can be stopped without launching an object with
right click
balance: kinesis module stuns last until the kinesis stops
add: admin suit has a version of kinesis that can pick up anything at
any range and can be configured to make grabbed mobs phase through walls
:)
/🆑
2023-08-02 19:47:57 +00:00
RICK IM RI
cf86250ce4 Adds boss music functionality and gives hierophant it's own thematic fight song! (#77149)
## About The Pull Request

Adds compatibility to the code to assign music to individual mobs that
are played in full length to the player when aggro'd. Music maintains
for the entire length, ends, and is repeated if the mob isn't dead.
Music is instantly stopped if the mob generating it dies. Other coding
avenues were explored around dynamic music generation and allowing for
the music to end more naturally, but they were found to be very buggy or
impossible to code due to dreammaker having a very........... tense
relationship with audio. It also (had to be reminded of this!), lowers
the audio of hierophants attacks to make music more audible.

## Why It's Good For The Game

This has the potential to add so much thematic flavor to mobs and events
in game, it's great! Represents a big step forward in terms of sound
design on tg. Thanks to John Willard for fully coding!
Check out the theme here --> https://youtu.be/mWgv1CHtd4Y

## Changelog

🆑
add: Adds boss music functionality.
sound: Adds hierophants boss track, tweaks hierophant boss noises.
/🆑

---------

Co-authored-by: JohnFulpWillard <53777086+JohnFulpWillard@users.noreply.github.com>
2023-08-02 09:42:40 -04:00
SpaceVampire
0cbfef6ee9 Fixes the Guard Spider Effigy disables attacking bug. (#77281)
## About The Pull Request

Fixes the Guard Spider Effigy disables attacking bug, as reported here
https://github.com/tgstation/tgstation/issues/77133

## Why It's Good For The Game

Fixing bugs is good.

## Changelog
🆑
fix: Guard Spiders are no longer unable to attack after using Web Effigy
/🆑
2023-08-02 14:54:28 +02:00
distributivgesetz
19454cc14a Fixes holopara owners not always dusting (#77262)
## About The Pull Request
Holoparas accidentally deleted themselves first when they die, which is
bad because this happens before they try to dust their owner, so the
owner reference is nulled before we can dust them too

## Why It's Good For The Game
Holoparas will always dust their owner now no matter what hopefully

## Changelog
🆑 distributivgesetz
fix: Fixes holoparasites not dusting their owners on death sometimes.
/🆑

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-08-01 19:59:08 -06:00
Jacquerel
ddfdc70d73 Basic Lobstrosity (#77253)
## About The Pull Request

I'm slowly chipping away at mining mobs. These ones also got some new
sprites because the old ones were a bit weird except when facing South.

![image](https://github.com/tgstation/tgstation/assets/7483112/015b8819-bab8-471a-86ae-70b1597ae327)
Arctic Lobstrosities are now hairy to give them a little more visual
distinction from Lavaland ones.

In terms of behaviour, they're now a little faster and can charge you
from further away.
They will _only_ attack players who are incapacitated in some way
(primarily from being hit by their charge, but could be from a Goliath
or something too) and will otherwise keep their distance until they can
charge again. They move slower for a short duration after charging
though, so you have time to slap them a bit.

If a Lobstrosity downs you then it will try to snip off one of your
arms, then retreat in order to eat it.
Obviously nobody likes losing an arm, but this does give you an
opportunity to get away while it is distracted? Funnily enough the way
our health system works means that sometimes losing that arm actually
takes you out of soft crit so you can stumble back to the station for a
replacement (or try to wrestle yours back?)

All of these things are achievable also by a player if you make one
sapient, they will pull arms off mobs they attack which are in crit and
can eat arms if they see them lying around if they want.
I added an element to let you dismember people with your bare hands,
maybe someone evil can use it to add a beheading attack some day.

Here's a video of their new behaviours:
https://www.youtube.com/watch?v=9eKxsH7hD7Q

## Why It's Good For The Game

Gives mobs more character.
Reduces our list of frozen simple mobs.
Replaces some ugly side sprites.
Medbay enrichment?

## Changelog

🆑
refactor: Lobstrosities are now basic mobs and have different AI
behaviour. Please report anything which seems like it shouldn't be
happening.
add: Lobstrosities will now only opportunistically attack things they
have knocked over with their charge, and are otherwise timid.
add: Lobstrosities are hungry for fingers and will steal one of your
arms if they defeat you in combat, although this gives you time to crawl
away.
sprite: New sprites for Lobstrosities.
/🆑
2023-08-01 17:26:32 -06:00
MrMelbert
b985266089 Fix TTS leaking identity of TRAIT_UNKNOWN mobs (#77279)
## About The Pull Request

If you have `TRAIT_UNKNOWN`, your chat messages will not TTS. 

Maybe a more fun alternative is to pick a generic voice for
`TRAIT_UNKNOWN` mobs, with a filter that makes the voice sound obscured
or something, idk. This is easy though.

## Why It's Good For The Game

`TRAIT_UNKNOWN` is intended to leave no hint you are who you are, so to
suddenly speak in a very distinguishable voice that becomes useless
quick.

This means someone paying attention can easily pinpoint who the traitor
behind the suit is, or the heretic behind the cloak.

(It also probably means that this screws up for people wearing a
disguise (+voice changer) or lings. Should visit that later)

## Changelog

🆑 Melbert
fix: Traitors using the sneak suit and heretics under the effects of
cloak no longer leak their identity via Text to Speech
/🆑
2023-08-01 17:25:02 -06:00
carlarctg
35cb1556ad When Space Dragons devour people they get .extinguish()ed (#77248)
## About The Pull Request

When Space Dragons devour people they get extinguished, removing flames.
## Why It's Good For The Game

> When Space Dragons devour people they get extinguished, removing
flames.

I find it quite annoying that even after you die to a space dragon, the
jackass melts not just your jumpsuit, your suit, your hat, your mask, he
also melts your entire skin off, leaving your body husked with 400
million burn damage when and if the dragon finally dies. I don't think
there's any real reason for this to be necessary, it doesn't help the
dragon in any way - It's just kind of a middle finger to the dead guy,
or more accurately, an oversight.

Worse, because the flame sprite is stupidly noisy, when a dragon DOES
die the corpses are all thrown around randomly and they all look the
exact same, which makes it easier to ignore them.

If there's a concern about tracking sensors, I can make it disable them,
but honestly if you can do that with demons I don't see why this would
be a problem. Not even accounting for the fact that many jumpsuits
ingame are fireproof.
## Changelog
🆑
qol: When Space Dragons devour people they get extinguished, removing
flames.
/🆑
2023-08-01 11:38:08 +02:00
kawoppi
19da5cf2b9 *sigh visual and *glasses emote (#77210)
## About The Pull Request
Remake of PR #69981 by honkpocket.


https://github.com/tgstation/tgstation/assets/94711066/e9360ee8-983b-4258-861a-dbf177768fcb

Unfortunately I can't manage to make use of emote bodypart overlays
here, because I can't get them to properly display an animation that
only loops once.
## Why It's Good For The Game
Makes the emotes more lively and allows you to do the glasses thingy to
make whatever you're about to say sound smarter.
## Changelog
🆑 honkpocket
add: Adds an emote to push up glasses with *glasses
add: Adds a visual effect to *sigh
/🆑
2023-07-31 19:42:31 -06:00
Hatterhat
cd8678514a sets blood-drunk miner's initial attack speed to match their closed cleaving saw attack speed (#77056)
## About The Pull Request
As of now, the blood-drunk miner's initial `rapid_melee` isn't set, so
it inherits the basic hostile mob's - which is 1, which means they
attack pretty slowly until they use the weapon transforming ability
which properly sets it.

This PR fixes that by setting their initial `rapid_melee` to 5, so as to
match their behavior when they toggle their cleaving saw twice (opening
it, then closing it (its default state)).

This does mean that the strategy of preventing the blood-drunk from
transforming their saw to keep them attacking as slow as a watcher is
gone, but if you're going out of your way to rush down the blood-drunk,
you're probably looking for an actual fight.

Right?

(also makes some single-letter variables not single-letter variables)

## Why It's Good For The Game
blood-drunk attacking as slowly as a watcher isn't intended behavior, i
think

## Changelog

🆑
fix: The blood-drunk miner has remembered how to swing their cleaving
saw quickly without having to flick it out first.
/🆑

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
2023-07-31 20:14:44 -04:00
san7890
2d0b4f053f Refactors Slaughter/Laughter Demons into Basic Mobs (#77206)
## About The Pull Request

On the tin, the former "imp" is now refactored into basic mob code. Very
simple since these are only meant to be controlled by players, and all
of their stuff was on Signal Handlers and Cooldown Actions anyways. Just
lessens the amount of stupidity.

Did you know that we were trying to make demons spawn in a `pop`'d cat
named "Laughter"? Embedded in the list? I've literally never seen this
cat, so I'm under heavy suspicion that the code we were using was broken
for the longest time (or may have never worked), and we now instead just
do it a much more sane way of having a cat spawn on our demise.

## Why It's Good For The Game

Cleaner code! Less simple mob jank to deal with. Trims down the list of
simple animals to refactor. No more duplicated code that we were already
doing on parent! It's so good man literally everything was seamless with
a bit of retooling and tinkering. The typepath is also no longer `imp`,
it's actually `demon`, which I'm happy with because there's no other
demons to have it be confused with anymore.

We were also doing copypasta on both the demon spawner bottle and the
demon spawning event so I also just unified that into the mob. I also
reorganized the sprites to be a bit clearer and match their new
nomenclature

## Changelog
🆑
refactor: Slaughter and Laughter Demons have been refactored, please
place an issue report for any unexpected things/hitches.
fix: Laughter Demons should now actually drop a kitten.
/🆑
2023-07-31 19:17:46 +01:00
Fikou
9b690fd0f8 ghost notifs now set the pixel x/y properly with scaling (#77239)
## About The Pull Request
ghost notifs set pixel x y to 0 (so wallmounts for example are centered)
and then large stuff like space dragons or singularities is properly
brought down by calculations
before

![image](https://github.com/tgstation/tgstation/assets/23585223/73b198a1-3a5f-4d00-94b1-ae9690c9d948)
after

![image](https://github.com/tgstation/tgstation/assets/23585223/7a4bb949-36a6-4ba4-9339-d36ed56c6695)


## Changelog
🆑
fix: ghost notification icons are now centered properly
/🆑
2023-07-31 16:42:21 +01:00
distributivgesetz
1511a8198d Reorders simplebot death code so that self-deletion happens last (#77216)
Simplebot code had stuff happen after they had already qdeleted
themselves (namely pai ejection if there was one in there, and more), so
this PR moves their self-deletion to the very end of death code
execution
2023-07-31 03:57:05 +00:00
MrMelbert
c92d338dad Refactors chameleon actions, Adds chameleon outfit saving, Adds chameleon scanner (#77140)
## About The Pull Request

- Refactors chameleon actions a good bit, reducing a lot of the
boilerplate copied around chameleon items.
- I noticed that the EMP comsig completely disregarded any EMP
protection the mob might have. I split the comsig into
`COMSIG_ATOM_PRE_EMP_ACT` and `COMSIG_ATOM_EMP_ACT` - the former now
used to aggregate protection flags and the latter to actually do EMP
stuff.
- As a result of above, this fixes a few oversights in which things
using `COMSIG_ATOM_EMP_ACT` disregarded EMP protection.

- Adds Chameleon Outfit saving. 
- RMB clicking the "Select Chameleon Outfit" will now save your current
chameleon setup as a custom outfit. They become selectable as any other
outfit afterwards.
- Because it might be *too* easy to bamboozle people / might make people
think you're a ling, I added a slight "animation" to swapping whole
chameleon outfits. It's less than a second long.

- Adds the Chameleon Scanner.
- The chameleon scanner is, surprise, a chameleon item that can disguise
as small gadgets or items (toys, cameras, analyzers, etc).
- On LMB, the chameleon scanner will copy the outfit of the target to a
custom outfit slot, allowing you to mimic them entirely without going
through all the menus.
- RMB does the same, but instantly equips the disguise you select in
addition to saving it to a slot.

## Why It's Good For The Game

Right now traitor stealth is very capable but cumbersome, which makes it
much less appealing than just running and gunning.

One big problem with it is that the chameleon kit is rather time
consuming to use. You have to sort through hundreds of items for each of
your chameleon items to find exactly the one you need.

These items seek to amend that time gate, allowing for much quicker
swapping between disguises or picking up the disguise of someone you
kill to replace them like a pseudo-changeling.

## Changelog

🆑 Melbert
refactor: Refactored chameleon actions a fair bit
add: Adds outfit saving to chameleon clothes. RMB the "chameleon outfit"
action to save your current chameleon setup for quick swapping.
add: Swapping between chameleon outfits now has a slight "animation"
associated, to distinguish traitors from lings slightly.
add: Adds a new chameleon item, the "Chameleon Scanner". Use it on other
crewmembers to stealthily save their current outfit as a custom outfit
to use later. And of course, it's chameleon too.
fix: Ethereals, the DNA lock mod, GPSs, and storage items now respect
EMP protection
/🆑
2023-07-29 15:39:06 -06:00
Jacquerel
0bb1b9ed8e Sapient bots can play voice lines (#76920)
## About The Pull Request

Part of the "throwing stuff at the wall and seeing what happens" series
of changes.
We were discussing player bots and there was some small support for
"what if bots couldn't talk except to other bots and primarily
communicated via emoting and playing their prerecorded lines".
I coded this but I'll be honest, my heart wasn't in it, especially
because we have _already_ released sapient bots who can talk so I'd have
to justify taking it away in a better way than "I want to see what would
happen", so I'm not doing that (feel free to revert the last commit in
this PR if you want to carry that cross yourself).

But I'm keeping the button that plays the prerecorded voice messages.
No these lists _aren't_ alphabetised, that's because I wanted to vaguely
order them in order of "this is something the bot regularly says" to
"this is something the bot rarely says (because it is rude or mean)".
This priority is possibly the inverse of how players will want to use
the button, but perhaps they should try being politer.

Additionally this PR ensures that if you put a pAI in a bot then it will
be able to speak any languages the pAI could.

## Why It's Good For The Game

Saying "I should have been a plastic surgeon" is iconic medbot behaviour
and players should be able to do it.
We don't currently have bot TTS voices which directly sound like the
bots themselves to apply, and it might be mildly concerning if we did
because I believe at least one of the voices is the IRL voice of a
community member with some filters added?

## Changelog

🆑
add: Player-controlled bots can now play the prerecorded lines
associated with that bot.
add: Placing a pAI into a bot temporarily teaches that bot all the
langauges the pAI could speak.
/🆑
2023-07-29 18:16:41 +02:00
ArcaneMusic
72379e9e8d Arconomy: Balance Update 2023 (#77055)
## About The Pull Request
Hey everyone I've been dead and tired and distracted and wage cage'd and
hopefully you'll see why in the coming weeks but this isn't that PR this
is something slightly different

So! Changes in this Pull Request:

- I've implemented the changes in #76999 but with the commented
suggestion so that now, mechanically, the foreign species modifier is
now considered to be the floor payment amount. This means a functional
buff to human paychecks, but in game it's still represented as a
non-human nerf.

- The inflation mechanic on vending machines has been removed. This
means that vending machines will keep a consistent cost at all times.
Inflation as a mechanic is still utilized for mail, as well as kept on
the SS level in order to ensure that the market crash events still works
properly.
- Market Crash event has been improved, with some new flavor messages
added, as well as using a new formula where inflation increases for the
period of the event along a 5.5*log(time) scale.

- Tweaks have been made to the accounting computer TGUI to better follow
standard conventions and not use a labeledList. It also properly shows
the player facing paycheck modifier as well. It also looks a bit better
now!

## Why It's Good For The Game

Justification for the change on the 90% paycheck modifier change has
been discussed in #76999 already, but going with the more positive spin
angle.

The inflation mechanic in general has rather unintuitive for a number of
reasons, but the biggest one being that the mechanic doesn't really have
any bearing that players in-game can really effect. Especially with
passive paychecks, the only way to work around inflation is to make...
other players spend their money. That's hardly an easy task with a 10
player crew, let alone a 90 player crew. Plus, the outcome is that it...
punishes players for engaging with the economy if done correctly? Point
being it was a decent idea but it doesn't mash with the desired outcomes
of the player economy in it's current state.

Improvements to the accounting TGUI showcase were necessary as a result,
and just look a bit nicer (I will get a screenshot in a moment). There
is still room to potentially look into command staff being able to give
raises/pay-cuts to crew but I'd want to treat that similar to opening up
crew slots, so I'm putting that off for now.

## Changelog

🆑
qol: Improvements to the accounting console in the HOP office.
balance: Non-human species now receive a 90% racial paycut, up from 75%.
balance: The inflation mechanic affecting vending machines has been
removed, except during the market crash event.
balance: The market crash event now stands as it's own separate event,
and ramps up the cost of vendor items until finally popping and
returning to normal. Market crash now lasts longer to have more impact
while it scales with time.
/🆑

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-07-29 15:39:27 +00:00
Time-Green
61abab479b Planetary station traits: Forever Storm and Forested (#76957)
Adds two new station traits for Icebox:
**Forever Storm**
The storm on icebox never stops and is more intense. You can wear a coat
and drink coffee and be fine

 **Forested**
Icebox top exterior has a different terrain generator, including way
more grass and trees. AND DEER. Natural chasms are replaced with plasma
rivers

<details>
  <summary>Outside</summary>
  

![image](https://github.com/tgstation/tgstation/assets/7501474/8f5cf57f-9323-473f-9c9b-33192a8777f2)

![image](https://github.com/tgstation/tgstation/assets/7501474/9114fcc5-89b0-46e8-9912-67ad9edf96b8)

![image](https://github.com/tgstation/tgstation/assets/7501474/a5d2cf03-a9a6-4ecf-bbcf-11c39fcacc7d)
(the emissives on the trees have been fixed)
  
</details>

## Why It's Good For The Game

There are no icebox specific station traits, so I added them! The
exterior is very static, samey and could honestly be a lot more
interesting. Having the outside area be varied is something that
freshens up icebox a little! (3x3 icebox is inevitable...)

Forever Storm: I think storms are pretty spooky and cool, and having a
permanent storm can change the ambience a bit and make everyone feel
more isolated. Exploration is not recommended, but you can totally still
go outside at increased risk. Pretty rare and can only happen on icebox

Forested: Forests are dope. It's pretty common for a station trait, but
factoring in that this only happens on icebox, I think it's fair

I've also had to split apart turf and object generation so stuff doesn't
spawn above rivers/chasms anymore. I tested it and I didn't seem to have
broken anything, so that's pretty cool

closes #75154

🆑
add: Adds a Forested planetary station trait! Icebox exterior is now a
forest!
add: Adds a Forever Storm planetary station trait! Sometimes, the storm
never stops. Stay inside or get some coffee and warm clothes
fix: fixes stuff spawning in rivers and above chasms
fix: emissive blockers on random flora not updating
code: Splits terrain generation and terrain population in SSmapping
/🆑
2023-07-29 07:59:34 +00:00
san7890
cb8fe9bbe8 Removed tails inherit their color (#77170)
## About The Pull Request

Hey there,


![image](https://github.com/tgstation/tgstation/assets/34697715/5fe5d71a-de67-463c-8381-b094d09d21a3)

Something that was pissing me off was that tails weren't inheriting the
color when they were removed from a carbon. I actually did a bit of
chicanery in cat surgeon code so I wouldn't be so pissed off about it,
but I think now is the time to fix it for real.
## Why It's Good For The Game


![image](https://github.com/tgstation/tgstation/assets/34697715/53b1fb5a-3487-4649-866a-f5d83736d951)

Much better. I also got rid of one of my pet peeves since I decided to
do this in `on_remove()` (nothing should break as a consequence, though
let me know if anything looks cringe) and was able to remove the fugly
override of parent on `Remove()` which didn't need to be like that at
all
## Changelog
🆑
fix: Carbons with tails (felinids, lizards) who have that tail removed
will now have that tail actually look like it came from the person in
question, rather than just be a grey thing of sadness.
/🆑
2023-07-29 08:19:20 +02:00
Ghom
c70a89d3c7 [NO GBP] fixes the logic for mob size-related maptext height. (#77171)
## About The Pull Request
I've made a hiccup in the logic at the last moment and forgot that the
offset should be half of the size difference from trom the default
identity, not its entirety, this is because scaling is equally
distributed vertically and horizontally, we only have to deal with the
upper half of it.

## Why It's Good For The Game
Fixing a human error.

## Changelog
N/A, it's a barely noticeable whoopsie all in all.
2023-07-28 21:04:14 -06:00