Commit Graph

4796 Commits

Author SHA1 Message Date
ArcaneMusic
2035132f3f Tweaks railings to stand and look taller (#78598)
## About The Pull Request


![image](https://github.com/tgstation/tgstation/assets/41715314/e905463f-6b83-4ff2-b265-7029d542301a)

This Pull request updates the sprites used by railings, including both
directional, corner, outer corner, and rail ending sprites.
Additionally, I've placed railings on the GAME_PLANE_UPPER plane, so
that visually it looks like railings in front of a player can physically
stand in front of the player.

## Why It's Good For The Game

This ports the railing sprites I did for The Wallening (tm) onto live,
providing a 3/4ths perspective sprite, in addition to the fact that
it'll help sell the height of objects by layering in a more satisfying
way.

Not to mention, I just think they're way better than current railings,
where are both ancient and super flat sprites.

## Changelog

🆑
image: Railings have had a visual update.
/🆑
2023-10-02 12:31:31 -04:00
Tim
0432e6b98c Fix water puddle runtime when washing items (#78627)
## About The Pull Request
Runtime log:

```
[2023-09-26 03:06:01.741] RUNTIME: runtime error: Cannot read null.total_volume
 - proc name: attackby (/obj/structure/water_source/attackby)
 -   source file: code/game/objects/structures/watercloset.dm,697
 -   usr: Seed-Xil (/mob/living/carbon/human)
 -   src: the puddle (/obj/structure/water_source/puddle)
 -   usr.loc: the volcanic floor (143,199,3) (/turf/open/misc/asteroid/basalt/lava_land_surface)
 -   src.loc: the volcanic floor (144,199,3) (/turf/open/misc/asteroid/basalt/lava_land_surface)
 -   call stack:
 - the puddle (/obj/structure/water_source/puddle): attackby(the hairless hide (/obj/item/stack/sheet/hairlesshide), Seed-Xil (/mob/living/carbon/human), "icon-x=18;icon-y=12;left=1;but...")
 - the puddle (/obj/structure/water_source/puddle): attackby(the hairless hide (/obj/item/stack/sheet/hairlesshide), Seed-Xil (/mob/living/carbon/human), "icon-x=18;icon-y=12;left=1;but...")
 - the hairless hide (/obj/item/stack/sheet/hairlesshide): melee attack chain(Seed-Xil (/mob/living/carbon/human), the puddle (/obj/structure/water_source/puddle), "icon-x=18;icon-y=12;left=1;but...")
 - Seed-Xil (/mob/living/carbon/human): ClickOn(the puddle (/obj/structure/water_source/puddle), "icon-x=18;icon-y=12;left=1;but...")
 - the puddle (/obj/structure/water_source/puddle): Click(the volcanic floor (144,199,3) (/turf/open/misc/asteroid/basalt/lava_land_surface), "mapwindow.map", "icon-x=18;icon-y=12;left=1;but...")
 ```

The water puddle would runtime due to not having initialized the water reagents and volume.  The error would popup whenever someone attempted to wash an item in the puddle.  

## Why It's Good For The Game
One less runtime for the codebase to worry about.

## Changelog
🆑
fix: Fix water puddle runtime when washing items
/🆑
2023-09-27 20:51:19 -04:00
Jacquerel
f861532d24 Basic Legion & Hivelord (#78624) 2023-09-27 18:41:07 -04:00
carlarctg
c4ac48f382 Refactored Mirrors (#77842)
## About The Pull Request

Heavily refactored mirrors to be less ass cancer 1998 code. Player
facing changes are that mirrors now use a radial menu, women can get
beards in magic mirrors, made the magic mirror 'change sex' option Woke
(it supports the 4 official genders and physique as well)

Fixed Pride Mirror teleporting you into the space on the first use. Now
it waits until you officially cancel and say 'I am Done' so you can
customize yourself to your liking.

With a change this big theres bound to be some small tidbits added here
and there (bald people get sad if they try to change their hairdo)

## Why It's Good For The Game

Bad code is bad and I need gbp and I am too hot and too tired to make a
proper description

## Changelog

🆑
refactor: Heavily refactored mirrors to be less ass cancer 1998 code.
Player facing changes are that mirrors now use a radial menu, women can
get beards in magic mirrors, made the magic mirror 'change sex' option
Woke (it supports the 4 official genders and physique as well)
fix: Fixed Pride Mirror teleporting you into the space on the first use.
Now it waits until you officially cancel and say 'I am Done' so you can
customize yourself to your liking.
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
2023-09-25 19:39:39 +00:00
Lamb
c570c96ebb adds crushed can, jelly doughnut, and shipping container random spawners (#78444)
## About The Pull Request
i got bored so i made some new spawners, mainly for mappers but maybe an
admin will use them too. pics here:

![image](https://github.com/tgstation/tgstation/assets/110322848/2cd121dc-6fa6-46fd-bd9f-4cab72ead9c7)

firstly, this adds crushed can spawners, for if you want a random
crushed can sprite in your map, and don't really care which it is.
if you _do_ care, however - you can set the var/random_icon field on one
of these to 0, in your copy of strongdmm. then just change the icon
state to whatever specific can design you'd like it to be (ie:
"wellcheers")
here you can see a few of them in action

![image](https://github.com/tgstation/tgstation/assets/110322848/9fa3e210-e979-42c7-8f8c-d155ca2fe9bb)

secondly, this adds doughnut, jelly doughnut, and slime jelly doughnut
spawners - pictured below
these use a weighted list based on flavor - more down to earth flavors
are more common, while more interesting and unique flavors like bungo
and blumpkin are a bit rarer.

![image](https://github.com/tgstation/tgstation/assets/110322848/31cf6677-9f4b-40d0-91f0-bcdd59803e74)

thirdly, this adds a shipping container spawner. this one uses a
weighted list so the super obvious syndi corps are rare, less obvious
ones are less rare, and regular corporate ones are common. here you can
see a few.

![image](https://github.com/tgstation/tgstation/assets/110322848/8a8731e7-f6fc-4b91-9680-5b6b93619430)
## Why It's Good For The Game
more flexibility for mappers, more dynamic spawns... what's not to love?
## Changelog
🆑
not player facing
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-09-23 20:20:49 +02:00
jimmyl
5db7992b09 basicmob clowns (#78448)
## About The Pull Request

this is a mostly 1 to 1 port of simpleanimal clowns to basicmob clowns
this means they have 1 more brain cell
and they waddle



https://github.com/tgstation/tgstation/assets/70376633/0c5f01c7-fea2-4d8c-9fc1-764c1557e1b8



## Why It's Good For The Game


![image](https://github.com/tgstation/tgstation/assets/70376633/f92c85ea-33f2-4cf3-858f-103c0958ff97)

## Changelog
🆑
refactor: clowns are basicmobs now
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-09-23 14:46:11 +00:00
MrMelbert
336ff506e7 Makes some better use of passtable_on / off (#78487)
## About The Pull Request

Flicking the passtable flag has a helper to avoid accidentally
overriding passtable from another source. A few places don't use it,
which makes it plausible you're removing the flag when you shouldn't be.

So I just went through a few places I noticed setting it directly and
made it use the helper.

## Changelog

🆑 Melbert
fix: Maybe fixes some weird occurrences where you lose the ability to
pass over tables when you shouldn't, and visa versa
/🆑
2023-09-22 19:10:50 -06:00
distributivgesetz
83fb93e275 The Medal Epilogue: Engineering (And Medical) Now Gets Them Too (#78461)
## About The Pull Request

**Credits to @CoiledLamb for the awesome sprites in this PR!**

CE 🤝 CMO

Finally, the last department to receive their own medal box, the
engineering department. The saga is complete, we can go home now.

Adds two types of medals: 1. For assisting the station in a crisis, the
"emergency services award" 2. For showing your atmospheric prowess with
a project, the "atmospheric mastery award"

To me, those two awards symbolize the best engineering (and medical) has
to offer. On the one hand, assisting the station and its crew in a
calamity, and on the other hand just absolutely flexing your atmos
knowledge on your boss.

CEs now have a lockbox in their locker with 3 emergency service medals
and 1 atmospheric mastery medal, and CMOs get 3 emergency services
medals in their lockbox.

3 emergency service medals may seem like a lot, but remember that
assisting the station is often done in a team and not alone. An
engineering/medical department who can work together in a crisis really
demonstrates how robust they are.

As for the atmos mastery medal, well...
### THERE CAN ONLY BE ONE !

<details>
<summary>Pictures</summary>


![image](https://github.com/tgstation/tgstation/assets/47710522/d3237b6a-df4e-44f6-90e0-4eed3202b351)
Upper row: emergency services award, engineering
Middle row: atmospheric mastery award
Lower row: emergency services award, medical


![image](https://github.com/tgstation/tgstation/assets/47710522/27543c0e-e77b-46ec-8c79-3f56c0940271)

![image](https://github.com/tgstation/tgstation/assets/47710522/7b3c0a6c-2c47-4e0f-af3f-b9d0037c19d4)

![image](https://github.com/tgstation/tgstation/assets/47710522/ae5bbeb3-42af-4b52-ae02-aa48480c8fd5)

Sprites without funky byond scaling


![image](https://github.com/tgstation/tgstation/assets/47710522/eab183dd-18c5-4e21-ad83-ee4bed7733b6)

![image](https://github.com/tgstation/tgstation/assets/47710522/66a85894-8163-40e7-bc91-b5c27e75b943)

</details>

## Why It's Good For The Game

medals are cute and awesome, i think you can agree
## Changelog
🆑 distributivgesetz, CoiledLamb
add: Added two new awards specifically for engineering and medical: The
"Emergency Services Award" and the "Atmospheric Mastery Award". CEs get
3 Emergency Services Awards and 1 Atmospheric Mastery Award and CMOs get
3 Emergency Services Awards.
/🆑
2023-09-22 13:49:06 +01:00
GPeckman
741260147e Fixes the comments in closets.dm (#78468)
## About The Pull Request

It looks like someone in a previous PR was a little too zealous with
find-and-replace, and replaced every 'w' in some of the comments in
closets.dm with 'weapon.' This PR just fixes those comments, making them
easily readable again.
## Why It's Good For The Game

Comments should be readable.
## Changelog
No player-facing changes.
2023-09-21 12:28:32 -07:00
jimmyl
3567c1b2a6 go go gadget hat (#78293)
## About The Pull Request

adds a hat that you can say a phrase for it to put something in your hands
2023-09-17 07:06:23 +00:00
SyncIt21
30b111114f Fixes some construction bugs with airlocks & windoors (#78261)
## About The Pull Request
1. Fixes #77981. the airlock electronics `unres_sides` and
`unres_sensor` vars were not copied onto the windoor after its
construction was finished manually without RCD. Now a windoor assembly
is spawned and it is finished by the RCD just like you would do manually

2. Windoors created via RCD did not have any electronics installed
inside them. It would only copy the `access` and `passed_name` vars onto
the windoor, leaving its `electronics` var blank. It's also fixed by the
windoor assembly

3. Airlocks constructed via RCD now uses the `finish_door()` proc of an
airlock assembly to correctly complete an airlock. This proc does
important stuff such as adding the `/datum/component/shell` component
when the airlock electronics requests shell control and the RCD was
skipping over these steps. That's fixed now too

## Changelog
🆑
fix: Manually constructed windoors have correct unrestricted accesses
applied to them
fix: Windoors created via RCD now actually have electronics inside them
fix: Airlocks constructed via RCD have the shell component correctly
installed inside them and have no other missing variables
/🆑
2023-09-16 19:34:43 -07:00
ArcaneMusic
a77ac3e4f1 Adds a new component so that items that are "attached" to walls will now drop/deconstruct on turf destruction. (#77417)
## About The Pull Request

Adds a new component, called wall_mounted, which applies on the
wallframe objects on construction, as well as a number of wall frame
objects and structures to cover mapped in, roundstart objects of the
like.
I might have forgotten a few, but this covers the vast majority that
players will run into in a given round.

This will cover wall destruction, turf explosion, the whole nine yards,
and call that object/structure/machine's deconstruct proc. We have some
special handling for intercoms as well since they're apparently items.

So most basic case is this: You have a wall. that wall holds a sign. If
you examine the wall, it tells you that the wall is currently supporting
the **Example Sign**. It tells you that if the wall is damaged or
destroyed, the sign will **fall off the wall.** So, if you were to
welder, bomb, or hulk your way through that wall, it would call the
deconstruct() proc on that sign, and fall off the wall, leaving an item
sign at the foot of the wall.

## To-Do

- [x] Stop breaking all wallmounts when operating shuttles (Signal
conflict with COMSIG_TURF_CHANGED 😔)
- [x] Confirm that the ~~deconstruct~~ designated proc of each wallmount
falling is sane for the intended object
- [x] Clean up the contents of the wall_mounted component to reduce
copy-paste on object init.
- [x] Add it to more stuff that may just not have a directional helper?
- [x] ~~Change how APC construction is handled to make it easier!~~
- [x] ~~Don't accidently nerf malf AI into the ground I guess~~

## Why It's Good For The Game

Closes #22283.
Helps close more of #47526.
Closes #54983.
Closes https://github.com/wall-nerds/wallening/issues/90.

All of these objects are "wall mounts". It stands to reason that they're
mounted to the walls they appear to be attached to. This attempts to
rectify them by giving them a turf link to the turf they're mounted to,
and then upon changes to that turf, dropping or breaking that object.
It'll need a little more polish to get to 100%, since I can see a few
more issues to iron out first, but I'm dropping this here for now to get
some feedback and put some fire under me to get this completed.

## Changelog

🆑
add: Wall mounted objects (Things like APCs, Air Alarms, Light switches,
Signs, Posters, Newscasters, you name it) will now fall to the ground
and break or deconstruct when their attaching wall is changed or broken.
/🆑
2023-09-16 00:17:38 +00:00
jimmyl
feb4505f4c climbing hooks for multiz planetary maps (#78340)
## About The Pull Request


https://github.com/tgstation/tgstation/assets/70376633/6c65925e-5276-41fb-8062-cafc2de94b2f

allows you to climb up holes by clicking on tiles above the hole youre
on
examining the rope shows you your current binds for looking up

emergency variant can be found in internals boxes on planetary maps that
have multiz levels (2 uses)
a better one can be bought from cargo for 250 credits (5 uses)
syndies can buy a much much better one for 1TC or can be found in the
nukie base personal lockers (10 uses)

## Why It's Good For The Game

being fucked because you fell down a 1 tile hole in the dark and now
youre in a 1x1 box of snow on the middle of nowhere sucks
or falling down a hole and bam 30 watchers
or falling down a hole and now youre completely lost and might have to
weld your way into the station if youre lucky

## Changelog
🆑
add: climbing hooks that allow you to go up holes for multiz, found in
internals boxes (on planetary maps), the uplink, cargo and nukie
personal lockers
/🆑
2023-09-15 23:15:34 +01:00
Jacquerel
bd9544012a Removes some food initialize arguments (#78322)
## About The Pull Request

A prior PR added some new initialize arguments to the food subtype which
did not strictly need to be there, this caused a large number of bugs as
a result of places which already had extra initialize arguments not
correctly accounting for these new ones.
As a result I have removed these again in favour of performing the
required operations in a different way (one of these arguments was
seemingly used for butter purity and literally nothing else), for this
food and also some of its subtypes.

In some other cases where it _did_ make sense to have arguments in
`initialize` I also added them to `new` so they can be passed by name.

This will hopefully make the food more maintainable if in the future if
someone does something similar, and solve any remaining bugs related to
"not passing the arguments properly".

## Changelog

Hopefully not player facing
2023-09-15 16:42:50 +02:00
Rhials
1dd1bf4a29 An Assortment of Positive Station Traits (#78211)
## About The Pull Request

This adds five new positive station traits, of varying weight and
impact.

**Loaner Shuttle** (Weight - 4): The shuttle loan event will occur more
frequently, can occur more times per round, and has a 1.15x payout
multiplier (only for the loan offers that pay out with credits).

**Medibot Mania** (Weight - 5): Station medibots will start as advanced
medibots, able to heal all damage types. Medbot hiring scope has
expanded to include medbots that have recently earned their doctorates
as well.

**Wise Cow Invasion** (Weight - 1): Wisdom Cow visits can happen more
than once during the round, and will occur more frequently. _"You will
give someone a piece of your mind, which you can ill afford." -Wisdom
Cow_

**Shuttle Firesale** (Weight - 4): Some emergency shuttle options are
offered at a discount. Neat!

![the
sales](https://github.com/tgstation/tgstation/assets/28870487/4dec2fa6-5874-44bf-98f6-c11b97aaf3f2)

The shuttle purchase menu has been changed to sort by initial value, so
the list order shouldn't get scrambled.

**Misplaced Wallet** (Weight - 5): A repair technician from the
between-shift crew left their wallet in a locker somewhere. Good thing
the famously trustworthy crew of Space Station 13 will get it back to
them safe and sound! Is your integrity as an honest person worth more
than free maintenance access and 500 credits?

**OH ALSO**

The station trait report will now italicize trait titles, for easier
reading.

Also, this fixes a small typo in the shuttle purchase screen.
## Why It's Good For The Game

A fair number of the positive traits are just inverses of negative
traits, and there's more negative ones than positive ones (I think).
This adds some more fun, unique-ish entries to the roster.
## Changelog
🆑 Rhials
add: Shuttle Firesale positive station trait. Some emergency shuttle
options have been put on sale!
add: Misplaced Wallet positive station trait. You wouldn't steal from a
missing wallet, would you??
add: Wisdom Cow Invasion positive station trait.
add: Advanced Medbots positive station trait. Better roundstart medbots!
add: Loaner Shuttle positive station trait. More shuttle loan offers and
more payout!
qol: Station Trait titles are now italicized for easier reading.
spellcheck: Fixes a "prerequisites" typo in the shuttle purchase menu.
/🆑
2023-09-13 22:08:14 +01:00
Fikou
5046a7d3ae decks of cards no longer have their own wielded var (#78260)
## About The Pull Request
we have the trait for that

## Why It's Good For The Game
Throughout UNDERTALE, we get treated to three story sequences (4 if you
include flowey's fakeout but that's not important). The first is the
intro story, telling the tale of humans and monsters, which shortly
thereafter leads into 201X, and Chara (Toriel's house has “An old
calendar from 201X.”) falling into the underground.

The second is the waterfall flashback, its contents taking place
immediately after the intro segment, as a voice (Asriel) finds the
fallen child.

And finally, the third takes place in the True Pacifist final boss.
We'll get to it in due course, and it will have its own section, but
let's address the first two. Regarding the intro, the first thought one
might have is that simply, while narratively relevant, is not a diegetic
presentation. However, We know that everything after the “201X” frame is
Chara's memory (from an outside perspective, that is,) and we also know
that UNDERTALE LOVES bringing the non-diegetic, the mechanical, the
game, INTO the narrative. Saving, RPG Stats, hell, even the
NarratorChara. Surely the intro can be as well? On top of this, what
does the intro do for the player, as the player? Well, aside from
setting the tone, the intro gives us some setting backstory. It's all
important context, and it certainly helps… but it being in the intro
sequence is not that important; It's all presented throughout the game
via diegetic signs, books, and expositional tortoise war heroes/angry
fish guardswomen. The second half is how Chara fell to the underground,
and while also setting tone and informing the player how their character
arrived. It also creates the false impression for the player that their
character is Frisk, feeding into UNDERTALE's meta narrative; “You are
not your character, and their happy ending is not yours.” If we weren't
playing Chara, this would have no narrative impact. The story beat fails
to land by showing us someone elses' character. But, sure. This could be
a purely non-diegetic intro sequence. Simply put, The 201X portion of
the intro sequence does not make sense from a diegetic or a storytelling
perspective unless we play as Chara.

Flashback number two is explicitly a canonical, diegetic flashback. It
occurs when Frisk escapes Undyne by falling down a massive pit… again.
This time, they land in the garbage zone, black out, and have a
flashback sequence of the first time Asriel found Chara. While serving
the main narrative by setting up Asriel as a character, furthering the
final twist of the meta narrative's pacifist route, and neatly
transitioning between overworld areas, it's also very explicitly
diegetic and cannot be dismissed as an intro sequence. With this in
mind, one question is raised. Why do we see this flashback? If the
player character is Frisk, this makes little sense, why would we see
someone else's flashback and not our own? Same thing applies for a Third
Entity, but even more abstract and illogical. What even are we? Sure,
you could say Chara is somehow attached to us/Frisk and that somehow we
get a flashback from Chara who is somehow knocked unconscious by Frisk
also being knocked unconscious. I used the word somehow three times.
That's not good storytelling. A simpler answer, at least in my view, is
that We Are Chara. When Frisk is knocked unconscious, we, being
ostensibly linked to them as a Spirit/Ghost/Reincarnation/Possessing
Dead Frisk/Demon/Insert fan-theory here/SOUL Fragment, have our only
connection to the world temporarily disabled, rendering us effectively
unconscious and prompting a flashback. Nothing weird with multiple
entities or memory sharing. The waterfall flashback is simply our
memory. Simple. The simplest answers are usually the correct ones.

<details>
<summary>DO NOT RESEARCH</summary>
The third sequence is a connection/extension of the first two, displayed
when we SAVE “Someone Else” during the true pacifist battle with Asriel.
To refresh everyone, here is the direct quotes, taken from the Wiki:


[SAVE]: Someone Else
Strangely, as your friends remembered you... Something else began
resonating within the SOUL, stronger and stronger. It seems that there's
still one last person that needs to be saved. But who...? ... Suddenly,
you realize. You reach out and call their name.
Asriel: “Huh? What are you doing...?”
s
It's at this point that the sequence plays. There's no narration, but we
see the sequence of interactions between Asriel and Chara. There are no
panels (except for the first) that don't contain the both of them.
Following this, we get:

You feel your friends' SOULs resonating within ASRIEL! [This is the
generic flavour text for saving all 6, before “Someone Else”, and
appears at the asterisk above as well]
[SAVE]: Asriel Dreemurr
Asriel:
> “Wh... what did you do...?”
“What's this feeling…? What's happening to me?”
Etc. etc. let me win…
During my first and consecutive playthroughs of UNDERTALE, I came to the
conclusion that Asriel's soul still “Had Some Chara In It.” Saving
“Someone Else” was saving Chara, and then you save Asriel Dreemurr after
the story sequence.

This interpretation no longer feels particularly potent to me, but in
the spirit of completeness I'll address it alongside the more reasonable
“You just save Asriel.” Assuming for a moment though, that we do “Save
Chara”, it's not unreasonable to assume that some of Chara's ‘essence'
(or whatever) was merged with Asriel's and by SAVING them, we're SAVING
the part of them that's inside Asriel.

But I don't like that theory.

Let's talk about SAVING Asriel for a moment.

What is the motivation for doing that? Why would we, in universe, wish
to SAVE him, something that the narration explicitly prompts us to do?
He tried and probably succeeded to kill us, at least once, he wants to
reset the entire timeline, he wants to erase all our friendships, all
our progress.

So, why? Well, it's simple. He's our brother. And we know better than
anyone that he's worth saving. And at the very least, there's something
about Frisk (who appears to have absolutely no personality) that reminds
him of Chara, of us. This is, by his own admission, weird;

Asriel:
“Frisk… You really ARE different from Chara. In fact, though you have
similar, uh, fashion choices… I don't know why I ever acted as if you
were the same person.”

To summarise.

The player SAVING Asriel Dreemurr works best if they are Chara, it
becomes Chara encouraging Frisk to SAVE Asriel too.

Asriel recognises Frisk as Chara throughout the True Pacifist battle
(And Beyond), despite his own admission that this is basically
unfounded. Something is causing this recognition.

In Alphys' true lab, there lies a dusty TV and a stack of VHSes. On
them, lie some of the last words Chara had ever heard from their father.

[Asgore] Chara! You have to stay determined! You can't give up... You
are the future of humans and monsters...

These tapes are not the first time they are heard. Sleeping in Toriel's
guest bed, we dream about them. Suffering a fatal injury, they echo in
our ears. Watching the tape is yet another reveal. It's the chilling
truth that in fact, the words we (if we die a lot) are so familiar with,
are in fact the words we hear on our deathbed.

Storytelling-wise, this reveal; like all the others, fails if we do not
play as Chara.

Aside from Asriel's dialogue, Chara's genocide Narration, and the coffin
in Asgore's basement, this is the only time we hear Chara's name. That
and, this following exchange.

[Flowey]
Hi.
…
Monsters have returned to the surface
Peace and prosperity will rule across the land.
…
Well.
There is one last thing.
…
One being with the power to erase EVERYTHING…
…
I'm talking about YOU.
…
So, please.
Just let them go.
Let Frisk be happy.
…
Well, that's all.
See you later…
Chara.
This, I think, is pretty explicitly definitive. Flowey comes to you. To
us. Tells us to take a deep breath and leave the happy ending intact,
then bids us farewell by our own name.

Regardless of anything else, this definitively proves Chara is the
entity with the power to reset everything by the end of True Pacifist
(Which is a power we have). Flowey positively identifies us as “Chara”,
despite his mistake we discussed in 3C. He's not talking to Frisk,
because he refers to them in the third person.

He is talking to Us. Chara.

I don't want to discuss Flowey's use of “Chara” in Genocide all that
much, because the counter-argument is blindingly simple.

“By the time Flowey first says that name, Chara has overtaken Frisk by
feeding on the power we create for them.”

Of course, under PlayerChara, Flowey's lines still make sense, and
arguably more.

Implications
At this point, I believe the evidence is sufficient to support the
theory. With this in mind, I want to discuss the implications this has
on the narrative and meta-narrative. This is where all those funny
glossary terms come into play.

The pacifist route in UNDERTALE, as discussed above, is textually quite
simple when accepting PlayerChara. The meta-text is also relatively
simple. Meta textually, the Pacifist Route is a dissection of the
suspension of disbelief, examining how we emotionally place ourselves
within fictional worlds, and are often-times torn away from those worlds
as the game comes to an end, left wanting the true emotional connection,
wanting a happy ending that cannot be good enough for us because we're
real and it's not. The reflection of this meta narrative in the textual
narrative, quite naturally flows. We, Chara, want a happy ending. But we
can't have it, it's not our happy ending. We're gone. We've been gone a
long time. Frisk's happy ending can't be good enough for us, because we
won't be around to see it. So, we're left with a choice.

To let Frisk live happily? To accept an ending that might leave us
emotionally wanting, yet preserves our emotional journey?

To reset? To refuse an ending and satiate our emotional emptiness, yet
destroy that very emotional journey we took in the process?

The choice is the same. There is practically no separation between the
diegetic and the meta.

“Can a happy ending be good enough for you?” This question applies to
us, as the real world player running UNDERTALE.exe on our computer, and
us, Chara, the long deceased human who can do little but watch as Frisk
lives the life they wish they still had, or can destroy everything for a
hollow mimicry of that very life.

This message, however, breaks down under one specific circumstance.
Where we force a Third Entity into the mix. This one decision fractures
the cohesion and creates a meta-textually dissonant mess. Now, all of a
sudden, “Can a happy ending be good enough for you?” no longer runs
parallel through both narratives. There is no reason for the Player
Entity to wish to remain, the happy ending should automatically be good
enough because it's the happy ending. Meanwhile, Chara, despite being an
inextricable representation of “A happy ending I can't achieve,” gets
absolutely nothing to do with this meta-narrative because they're just…
not you.

“we are mario in Super Mario 64, but when he says "Thank you so much for
playing my game!" that doesn't mean we aren't still playing as mario” -
PopitTart

This is where things get weird. See, in the Genocide route.. Well, we
see Chara. On Screen. Talk to us.

Now, it can easily be argued that this completely shatters the theory,
but I would disagree. I'm going to endeavour to present a textual
explanation (or two) for this. But first, I want to dissect the
meta-text here.

Now, I'm sure the idea that “The Genocide Route's Meta-Narratve is
Fading Emotional Investment and the way emotional connection with video
games can lead to the very sabotage of that emotional connection” is not
revolutionary. However, what's conspicuously absent from all of the
third entity theorising is the way that this meta-text is mirrored in
the textual narrative.

Once satisfied with a game, having extracted all lines of dialogue and
stat boosts, once reaching all endings, a user will close the game down.
And at some point, perhaps to make room for a new game or perhaps on a
new device, will leave the game uninstalled, either deliberately, or
simply as a consequence of time.

Textually, what happens in the Genocide ending?
Now we have reached the absolute.
There is nothing left for us here.
Let us erase this pointless world, and move on to the next.

The world is destroyed. So much is left unanswered here.
Who is Chara talking to?
Where did Frisk go?
How do they have this much power?
Why would they want this?
If we ‘corrupted' them, what the hell does that even mean?
What is Chara?
For now, let's talk about who Chara is talking to.

The simplest answer is “Perspective switch.” Suddenly, we're not Chara
anymore, now we are Frisk. This meets all the dialogue options and even
vaguely mirrors the meta-text. It also manages to avoid bringing a third
entity along and so is automatically better! But, I find myself still
not fully enjoying this idea.

Remember what I said about Occam's Razor?

I think there's another option. One that doesn't involve three entities,
or even two entities, just Chara. One that mirrors the meta-text to a
degree only Toby Fox could pull off. It's a weird one, and I don't fault
you if you don't get it on your first read, but bear with me here,
because things are about to get

A little
Fucking
Abstract

Let's discard any and all pre-concieved notions of anything and hold one
singular truth above all else. “Chara Is The Player.” What does this
mean for this cutscene?

Well… it means the player is talking to…

THe player?

It also neatly answers the question of motive, so let's throw that out
the skeleton-shaped hole in the window for now.

If the player is talking to the player, this frames Chara's words in a
whole new light.

Every time a number increases, that feeling… That's me. “Chara.”

This line becomes explicitly literal. The Chara on-screen is literally
the player's feeling of satisfaction watching stat increases. But this
is all meta-textual, right? What does this mean for the textual
narrative?

Here's the thing. It can't mean anything, yet means everything.

There is no way to reconcile the fact that a Textually Real character is
directly talking about what the player feels when playing a game to
completion. The barrier between Meta and Textual no longer exists. It
can't. Not here. And with this revelation, everything begins to make
sense.

Your power awakened me from death.

Our power. Our desire to complete UNDERTALE awakens Chara from death.
They become startlingly real. We imbue this fictional character with the
real world desire to consume fiction, destroying enemies and worlds as
we go, increasing our power and our stats. Video Game Accomplishments.
And UNDERTALE has just finished being consumed.

My “human soul”... My “determination”... They were not mine, but YOURS.

Chara, the textual player, acknowledges the meta-textual player's
control over the game world. A control that we surrendered. By engaging
in UNDERTALE in a fully immersed way, we have fed the Diegetic character
that is our player character, Chara. This has continued until we haul
ourself out of the Internal Mode and into the External Mode, revoking
our immersion to make the consumption of content easier, to distance
ourself from the killing.

Raising our LV.

The more we distance ourselves, the less real UNDERTALE's world appears
to us. Once it's done, we're ready to erase this pointless world and
move onto the next. There's just one problem. UNDERTALE knows about us.
It knows we exist and it will abuse that to convey meaning. By revoking
our immersion in UNDERTALE, we end up shattering the barrier between
Meta and Textual, and this occurs because revoking our immersion is a
diegetic decision. Without this barrier, WE, as a character, gain
control of UNDERTALE and use this external mode control to

Erase the world. To uninstall.


This code doesn't actually work, of course. That was pretty obvious by
the fact that it didn't delete your game. But still, this exists in the
code that makes the game window shake when Chara attacks it. This is,
quite literally, intent for Chara to delete UNDERTALE. If you didn't
think Chara was capable of uninstalling your game before, you should
now.

Who is chara talking to?

Us.
How do hey have this much power?

We gave it to them. We Are them, and we deleted UNDERTALE when we were
done with it.
Why would they want this?

We wanted to move onto a new game.
What is Chara?

Us. ( I'll come back to this.)
But wait! What about soulless pacifist?
Well, at that point, you've surrendered Frisk's SOUL to Chara, as in,
you the real player has revoked your emotional attachment to UNDERTALE
and accepted that Chara can have control over the game. You've revoked
your immersion AS Chara, you no longer see yourself a Chara and as such
Chara becomes their own being. You've surrendered, basically. But they
let you play through it. Because why not. You might get attached again,
but that's fine. All that means is that the happy ending that was once
Frisk's, that you, the player, and you, Chara, both once lamented not
being able to live, has now been surrendered to Chara. A warped,
completionist, Chara.

You don't get your happy ending. But Chara does.

You don't even get the solace of knowing someone gets their happy
ending. Because Chara gets it.

Frankly, outside of being “The Player”, I don't think the exact nature
of “Chara” is that crucial. My personal thought is that they're a SOUL
fragment, absorbed by Frisk when they fell on Chara's grave (Frisk could
absorb a human SOUL fragment because said fragment was part monster
SOUL). This fragment gives Frisk the final edge of determination needed
to SAVE.

But, ultimately, that's little more than a fanfiction. And frankly, I
think that's okay. Not everything needs to be impenetrable, as long as
there's enough there to build a stable foundation.

I'd also like to address the nature of SAVING quickly, specifically the
normal version, not the Asriel fight version. People have asked “Why do
we save if it's Frisk's SOUL.” There could be many reasons. Frisk might
just defer control to us. Because we're pushing Frisk over that
Determination limit, we might be privileged to have that control.
</details>

## Changelog

not player visible
2023-09-12 14:55:14 +01:00
Hatterhat
ac18420676 John Splintercell: a gun that is only good for shooting out lights (#78128)
## About The Pull Request
adds the SC/FISHER lightbreaker self-charging energy pistol, which does
0 damage. As a joke.

![image](https://github.com/tgstation/tgstation/assets/31829017/84603fcd-dbc3-4857-a657-98c4bd34e881)


https://github.com/tgstation/tgstation/assets/31829017/97572baa-7421-4800-a60e-2db03f4adc6d

<details><summary>actual details, in case the video wasn't good
enough:</summary>

unless you shoot at light fixtures,

![image](https://github.com/tgstation/tgstation/assets/31829017/54092fbf-cbf6-4750-b2b8-37d643efba2a)
floodlights,

![image](https://github.com/tgstation/tgstation/assets/31829017/90b19560-fa25-471b-9f6f-3147c33e5c56)
or people with flashlights/seclites (even on helmets or guns) (it still
does 0 damage, it just turns off their lights. not permanently)

![image](https://github.com/tgstation/tgstation/assets/31829017/1a83c6f9-8fff-4035-aeeb-515319a3dd40)
it also works on crusher lights. and cyborg headlights. i don't have a
screenshot for it.
doesn't work on flares though.

also it can shoot past machines and lockers

![image](https://github.com/tgstation/tgstation/assets/31829017/8fb0a213-8e4a-42cc-9daa-eae5faf6ee77)
</details>
(also adds a variable for deciding how loud a dry fire sound is, in case
you want to make your gun's empty sound be less loud.)

## Why It's Good For The Game

Adds a silly little tool for silly little men who either really hate
lightbulbs or want to recreate the experience of being John
Splintercell, the lightbulb-assasinating secret agent from Fork Echelon.

## Changelog

🆑
add: The SC/FISHER disruptor pistol, a very compact, permanently
silenced energy gun, is now stocked in Nanotrasen-accessible black
markets with a price generally somewhere between 400 and 800 credits.
Aspiring users are warned that it's really bad for trying to actually
kill people. Caveat emptor.
add: Guns now have a dry_fire_sound_volume variable, allowing for guns
to be less loud when trying to fire while empty.
fix: Closets and crates now properly count as structures for pass flags
again.
/🆑

---------

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
2023-09-12 14:02:10 +02:00
san7890
a7060641bb Converts vomit() to use bitflags (#78191)
## About The Pull Request

Having seven trillion boolean arguments isn't kino nor poggerchampion,
let's adjust it so we use a define flag-based system that works really
nice. I also cleaned up a lot of jank and stuff that simply just never
was meant to work.

We also had sprites for nanite vomit, but this was completely unused!
Since we still have an interaction where you're meant to throw up
nanites, I added that it so it could be leveraged. Neato.
## Why It's Good For The Game

Much easier to pass in the right args or special args to a high-profile
proc.
## Changelog
🆑
image: When you throw up nanites, your vomit should now be appropriately
nanite-colored.
/🆑

Let me know if I glonked anything.

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-09-11 21:39:16 +00:00
Jacquerel
5dddedf340 Collected food fixes (#78190)
I went through the code and tried to find all of the remaining places we
forgot to update the arguments passed into `item/food/Initialize` after
more arguments were added to it, because there were a couple and they
caused things to stop working.
Most notably, golems were unable to eat anything because nothing would
correctly spawn "golem food".

_Additionally_ we were using a bunch of named arguments in new whenever
crafting or cooking food. This runtimed, causing the food not to init
properly.
_On top of that_ a late code review on a recent PR processed a list into
a string_assoc_list twice causing it to become null.

Finally, we were trying to check the food preferences of examining
ghosts or dogs or other non-human mobs. We shouldn't do that.

I also added a unit test for moth and golem food in the hopes that we'll
notice them breaking.
2023-09-09 12:39:42 +00:00
Bloop
86f0eaab3a Fixing this dead mouse related harddel (#78150)
## About The Pull Request

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

Fixes https://github.com/Skyrat-SS13/Skyrat-tg/issues/23510
Fixes https://github.com/Skyrat-SS13/Skyrat-tg/issues/23506


![image](https://github.com/tgstation/tgstation/assets/13398309/fab09657-12e8-4fb8-9e84-05ef48c9d55e)

When the foodening added some args to the constructor of
`/obj/item/food` some instances of the constructor being passed stuff
got overlooked and were not updated.

This resulted in a mob ref potentially being passed in to
`starting_reagent_purity` in some cases, ultimately resulting in this
harddel.

@SyncIt21 this is exactly the reason I was being so paranoid with #77946
the other day. Tracking constructor uses down can be such a pain when
they aren't prefaced with a type, and are almost guaranteed to get
overlooked during refactors if the compiler does not say anything about
it.

I hate DM.

edit: and I just tested this only to find a second bug with the ice
cream. I can confirm that it is in fact working now after fixing that
one too.

<details><summary>evil ice cream</summary>


![image](https://github.com/tgstation/tgstation/assets/13398309/46cd85cd-1051-46d9-9642-0275af098dbe)

</details>

## Why It's Good For The Game

Fixing a harddel that was causing many CI failures

## Changelog

🆑
fix: fixes creamatorium not producing any suspicious ice cream, and
fixes a dead mouse related harrdel
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-09-07 19:33:16 +01:00
MrMelbert
bbe40ef3f3 [Icebox] Remaps Arrivals and a bit of surrounding maintenance, feat. actually functioning disposals mass driver. Also nukes the Aux Base. (#78048)
## About The Pull Request

- Remaps Icebox Arrivals
- I added some weather radios as flavor in arrivals someone tell me if I
shouldn't.
- Removes the Aux Base, for it serves no purpose 
- Removes the whiteship dock, it serves no purpose. Centcom Ferry now
docks at where the whiteship dock once did.
- Remaps a bit of maintenance around it, specifically disposals
- Remaps a bit of the laundry room and locker room
- Disposals now actually dumps its waste into plasma/lava when using the
mass driver
- Adds a barometric radio to Icebox Mining office

<Details>

<Summary> PICTURES HERE PICTURES HERE PICTURES HERE PICTURES HERE
PICTURES HERE PICTURES HERE PICTURES HERE PICTURES HERE PICTURES HERE
PICTURES HERE PICTURES HERE PICTURES HERE PICTURES HERE PICTURES HERE
</Summary>


![image](https://github.com/tgstation/tgstation/assets/51863163/53857469-db7e-4557-9032-582a49bd9c6e)


![image](https://github.com/tgstation/tgstation/assets/51863163/4afdd9fa-aa8c-4dc3-95a4-e61a24c59e4b)

</Details>


## Why It's Good For The Game

Icebox Arrivals hasn't changed since Boxstation and as soulful as it is,
it can better integrate into the map's new identity.

To start, the Aux base: Serves no purpose on the Icemoon. Literally
useless besides having an extra stack of Plasteel for cultists to steal
and an extra PKA for tiders to steal.

It's gone. In its place is a small emergency EVA room / an external
airlock access.

Disposals. Literally hasn't been touched since Box, just DUMPED trash 10
tiles away onto the Icemoon. Kinda lame.
I moved it to the lower floor and made the mass driver dump its trash
into the river of plasmalava below.

Whiteship dock. Useless, no whiteship exists on Icebox. If badmins want
to mess around with docking shuttles they have the Centcom Ferry, or for
the more adept, they can manually place a dock.

Otherwise, the changes are just general modernizing. Brings it a bit
closer to how Delta's arrivals is set up.

## Changelog

🆑 Melbert
add: [Icebox] Remaps arrivals and the maintenance around it. Aux base
out, mass driver into a plasma lake in.
/🆑
2023-09-05 18:35:18 -07:00
carlarctg
95c9828587 Fixed walking into grilles to destroy them (#78086) 2023-09-05 15:51:46 -04:00
Lamb
e3c83341d1 ports noticeboards from the wallening (#78133)
## About The Pull Request
got permission from @LemonInTheDark to add these here, changes virtually
nothing from the wallening branch.
tested and everything looks good. props to @Krysonism for the sprites,
they are very very nice
basically just a straightforward resprite. it holds 8 notices now
instead of 5, and uses overlays rather than static sprites.

![image](https://github.com/tgstation/tgstation/assets/110322848/6675bca6-c767-4d79-b792-588d76fdac6b)
comparison here

![image](https://github.com/tgstation/tgstation/assets/110322848/c7062fa2-89be-49da-b43a-ceb5961c34ed)

## Why It's Good For The Game
noticeboard was kind of crufty and this either makes the wallening
easier, or doesn't make it more difficult. which is nice!
## Changelog
🆑 Krysonism
image: resprites the noticeboard
/🆑
2023-09-04 21:38:46 -06:00
lessthanthree
3594c3d1fb Medical/roller beds (#78078)
## About The Pull Request

'medical beds' in the game were just varedited survival pod beds. This
creates a proper medical bed subtype plus its own sprite for regular and
roller beds. Cleans up little bits of the bed code and adds context
helpers.

- Medical/roller bed is now constructable with titanium and plastic
after research
- Bed will face the correct direction when pulled
- Movable beds can have 'brakes' toggled with alt-click


![medical_bed_1](https://github.com/tgstation/tgstation/assets/83487515/dd197e24-cf72-4240-ac5a-8cdf575eca00)


![para_bed_1](https://github.com/tgstation/tgstation/assets/83487515/8ad5103e-57be-4dca-8a32-33bdabbeb82e)

## Why It's Good For The Game

Medical gets their own bed, new sprites, cleans up varedits on maps.

## Changelog

🆑 LT3
image: New medical bed and emergency roller bed
code: Added context hints for beds
/🆑

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
2023-09-04 20:53:09 +02:00
GuillaumePrata
ed375ececa Atmos overalls take 2 (#78007)
## About The Pull Request
This is a reinmagining of #72768 as I never was never given a chance and
feedback to polish the sprites or remake it as a suit item as was
suggested before the PR was closed.

This adds Atmos Overalls that ATs will spawn with, the sprite is based
on the GAGS overalls we already have, but I dodged the GAGS system and
made it a standalone item following the AT firesuit palette and design
to fit in.

It can carry the same gear as the wintercoat and the overalls themselves
have fire and acid armor in parity with the firesuit, but that is for
the clothing itself and not the wearer.

This is first and foremost a fashion item, as with how our game manages
fires, being fireproof on your legs and torso won't do anything with
your arms exposed...

![atmos
overall](https://github.com/tgstation/tgstation/assets/55374212/b66fbb21-067e-4f11-8f83-3ee791bee6ea)

<details><summary>This is how ATs looked at spawn before as
reference</summary>
<p>


![before_atmos_overalls](https://github.com/tgstation/tgstation/assets/55374212/6c6abed2-46d4-4bc8-890c-3a5174868be7)


</p>
</details> 

## Why It's Good For The Game
The only "fashion" suit atmos have is their wintercoat, if an AT is not
using their "functional" clothing (MOD/Firesuit) they all default to the
wintercoat and look mostly the same and even their functional uniform
makes everyone also look the same as it covers everything (That is
something I like to be clear)

There is also the "issue" that AT and Engies have the same jumpsuit and
wintercoat with small changes, and that their department bags use orange
instead of yellow as a second color, which makes them look weird on ATs
and the CE.

So now we have something that ATs can use to look different from each
other while still keeping their job identity.

And, as I said in my previous PR, I just really want the pumbler job to
look like a plumber, when they are not firefighting at least.
## Changelog
:cl:Guillaume Prata
add: Atmos Tech now have new drip and will spawn with Atmos Overalls to
protect their clothing from gas leaks! (It will actually not protect you
against fire or leaks, but hey! It's the thought that counts!!)
/🆑
2023-09-03 16:02:48 +02:00
Bloop
69f51c6c65 Fixes typo 'transfered', olive oil reaction repath (#78064)
## About The Pull Request

Transferred.

## Why It's Good For The Game

How did this get to be in 71 files?! This bothers me.

Also changes 'quality_oil' typepath in the reactions to 'olive_oil' to
match its rename post-foodening.

## Changelog
N/A
2023-09-02 18:23:18 +01:00
Rhials
9ae14f62a9 Nuclear operatives can now be other species. Pref toggle to always be human as operative (#77970)
## About The Pull Request


![image](https://github.com/tgstation/tgstation/assets/28870487/cbfbf18a-b4cb-44d1-97ef-430fc4404128)

When #16075 was created in the ancient year of 2016, it was a stopgap
solution to plasmamen spawning in with a regular nukie outfits and
burning to death. As a result, nukies have been human-only for the past
seven years. I come to you today to remove the stopgap, and once again
enable non-human nukies.

This was approved in the past (#59590), and I'm assuming that approval
is still valid. Let's take a look at how things work:

Spawning in as a Nuclear Operative (leader included), Lone Operative,
Clown Operative, or Reinforcement will now set your species to the one
if your prefs. That means lizard, cat, plasma, and ethereal nukies are
all on the table now.

Plasmamen now have their own syndicate envirohelm/suit combo. It doesn't
look fantastic (it's just a palette swapped roboticists envirosuit) but
I think it's serviceable at least. When the operative antag datum is
given, and the owner is a plasmamen, they will instead be given an
alternate outfit with these equipped. Loneop plasmamen will instead be
given a MODsuit with the plasma stabilizer MODule installed. These
MODules also spawn in the firebase lockers in case they're needed.

**But what about the AI?** Fortunately for the balancebrains in the
crowd, there is a preference (enabled by default!) to always roll human
as an operative. The AI still has to reasonably assume that nukies are
human until proven otherwise so please don't think this will affect the
rules of engagement for anyone not _directly opting into it._


![image](https://github.com/tgstation/tgstation/assets/28870487/f4ba8e6d-bfb8-40cb-abcb-95e8ea224a95)

(This pref will only appear if you have a nukie job enabled in the antag
menu!)

Huge thanks to Melbert who let me peek at his code on a branch trying to
do the same thing. My approach ended up being entirely on the antag
datum, with nothing on the job datum.
## Why It's Good For The Game

Rectifies a curious change made long long ago. Expands customization to
nukies while not affecting balance for those who care.
## Changelog
🆑 Rhials
add: Nuclear operatives have expanded the scope of their hiring
practices. Members of all species can now roll nukie!
qol: The preferences menu now has an option to always be human when
being selected for a nuclear operative role. Check it out!
image: Plasmaman operative envirosuits.
/🆑
2023-08-31 17:01:15 +00:00
SyncIt21
f7c661dd62 RCD directional window qol & wall mount patch. Code improvements (#77858)
## About The Pull Request
Fixes #77852
RCD can build wall mounts on reinforced walls

Closes #77848
Not a fix so labelling this as a qol cause it was always intentional but
now RCD can build directional windows without building a grill first.
Saving some matter units from building a grill is a plus

Added auto doc for some procs & made the extra delay when building
multiple structures into a define

## Changelog
🆑
fix: rcd can build wallmounts on reinforced walls
qol: rcd can build directional windows without requiring/building a
grill
/🆑
2023-08-29 12:02:07 -04:00
iwishforducks
4fe8d81a74 [No GBP] fixes railing deconstruction giving free iron (#77953)
whoops

## About The Pull Request

i forgot to set the deconstruction values in
https://github.com/tgstation/tgstation/pull/77894
this fixes my mistake

closes https://github.com/tgstation/tgstation/issues/77952

## Changelog

🆑
fix: Railings no longer give more metal than they take
/🆑
2023-08-28 15:46:17 -04:00
Fikou
f844fed946 roundstart scryers now come with the nt frequency (#77957)
## About The Pull Request
fixes #77934

## Why It's Good For The Game
blegh

## Changelog
🆑
fix: roundstart modlink scryers now come with the nt frequency
/🆑
2023-08-27 20:02:16 -06:00
John Willard
2efc1e6b8b QOL improvements to display case chassis (#77785)
## About The Pull Request

Display case chassis now has
Examine Hints
Screentips
Balloon alerts

Also moves wrench deconstruction to wrench_act, removes single-letter
vars, cuts down on copy paste, and makes the electronics drop when
deconstructed.

## Why It's Good For The Game

I am actually bored and looking for things to do.
Someone asked how to build a display case, I didn't even know myself so
I looked up in code how to, and saw features I didn't even know existed.
Thought I might as well make it all visible to players so they can take
full use of them.

## Changelog

🆑
qol: Display case chassis now uses balloon alerts, screentips, examine
hints, etc. Basically, the construction steps are more visible to
players.
/🆑
2023-08-27 22:34:25 +02:00
John Willard
ef352ca731 minor changes to living and mob vars (#77820)
## About The Pull Request

Renames m_intent to move_intent and moves it to the living level
renames tod to station_timestamp_timeofdeath
removes stun_absorption and see_override as one was unused and the other
was never actually implemented

## Why It's Good For The Game

Many vars on the mob and living level were intended to be on the living
and carbon level, but weren't for one reason or another. Generally it
was out of laziness to ensure the mobs being checked for these vars were
the intended mobs, and there's some todo comments on how they want it
changed in the future, though it never happened.
I'm hoping to get these all down in the future, I originally wanted to
move ``stat`` from mob to living but it had hundreds of errors so I
didn't want to do it all here.

## Changelog

Nothing player-facing.
2023-08-26 02:24:15 +01:00
iwishforducks
a2d7005f44 Makes railings easier to construct, while making them easier to destroy. (#77894)
## About The Pull Request

Changes the cost of railings from 6 metal rods to 2 metal rods.
The time to construct has been reduced from 3.6 to 1 second to be
in-line with the grille.
The health of railings has been reduced from 75 to 25.
Armor of railings have been reduced as well by about 30%.

I'm not positive on whether or not it should cost 1 metal rod or 2. I
decided to play it safe and make it 2. If some maintainer is interested
in making it only cost 1 rod then I will gladly do so- but this was my
compromise.

Also changes decaseconds/ticks to seconds in the rod construction code
to make it look better.

## Why It's Good For The Game

Railings look nice and it's an absolute pain in the ass that they cost 6
metal rods.

They're also currently substantially stronger than grilles for whatever
reason. Grilles have 50 health, while railings have 75.
The armor of railings makes this health of 75 to a whopping effective
health of 150.

Railings shouldn't be stronger than full-tile grilles. They should be
fairly flimsy.
They also shouldn't take a wrench AND wirecutters to deconstruct.
Grilles only take wirecutters and we should mirror that.

## Changelog

🆑
balance: Railings now only cost 2 rods and are much easier to construct.
But they can now be destroyed much easier and cut with wirecutters
without unwrenching.
/🆑
2023-08-25 20:35:46 -04:00
iwishforducks
7c9cf40ad4 Fixes RCD'ing lattices in open space (#77895)
## About The Pull Request

If you RCD a lattice with floor/wall mode on icebox, it won't actually
place down the floor because the open space is not "space" - this
switches the check to openspace, allowing you to fix floors on icebox by
clicking on lattices. For some reason this would also cause you to waste
your matter units on this action.

## Why It's Good For The Game

fix good

## Changelog

🆑
fix: You should be able to click on lattices on icebox with the RCD and
construct a floor now
/🆑
2023-08-24 17:51:42 -06:00
Nerevar
0345de3582 New Backpack Type: Messenger Bags! (#77871)
## About The Pull Request

![image](https://github.com/tgstation/tgstation/assets/12636964/4a2aa26e-8f5b-4090-b21a-d2c429df1c8d)
From downstream with love! These are mechanically identical to a normal
backpack or satchel, just with more drip.
Also a little bit of :o)

![image](https://github.com/tgstation/tgstation/assets/12636964/6671feda-f11c-4ee3-97b5-ad810b7474f5)
These will exist both in prefs and in drobes/lockers.

![image](https://github.com/tgstation/tgstation/assets/12636964/05478ad1-e7ae-4808-8c97-fdd21fc84474)
Sprites by Zydras.

## Why It's Good For The Game
We love fashion here. We love it so much. And most backpacks are too
in-your-face to fit well with a lot of 'fits.

## Changelog
🆑 Nerev4r & Zydras
image: Adds messenger bags to character setup and drobes/lockers!
/🆑

---------

Co-authored-by: Snakebittenn <12636964+Snakebittenn@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
2023-08-23 17:32:35 -06:00
Vekter
0dd3e66aef Grilles take 0-1 damage when shocking something, power sinks are available at lower reputation (#77860)
## About The Pull Request
Ports BeeStation/BeeStation-Hornet#3590. As it is right now, it's
trivial to set up a contraption using a conveyor belt and a shocked
grille to continuously shock monkey bodies. While this is very funny, it
also serves as a ghetto powersink that's hard to locate, easy to
replicate, and lasts effectively forever, since you can just keep
shocking the same bodies over and over again.

This doesn't completely remove the ability to make these, but it makes
them require at least a little maintenance and provides a way for them
to stop working even if the crew isn't able to locate them.

In an attempt to finally get people using the _actual_ powersink,
they'll show up a bit earlier in progression now. I'm not convinced 20
minutes is enough, but I don't want to put them in early enough that it
fucks with Engineering's ability to set things up at round start. We can
turn this down further if need be.

I'm also up for turning the TC requirement down, but 11 feels about
right for what they're supposed to do, so I'd prefer we try this first
and see how that works.

## Why It's Good For The Game
I'm all for goofy weird shit players have found, but there's an issue
with being able to do what an antag item is supposed to do but just
plain better. This shouldn't make creating these impossible or make them
unusable, but it'll require players to actively monitor them if they
want it to run for an extended period.

Additionally, we don't really see powersinks much anymore, and while
that might be more because powernets are kind of buggy and unreliable, I
think making them easier to get will make them show up a little more.

## Changelog
🆑 Vekter
balance: Grilles will now take 0-1 damage every time they shock
something.
balance: Powersinks are now available earlier in traitor progression.
/🆑

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-08-23 14:06:53 -04:00
Ben10Omintrix
81e59f7ff2 Goldgrub basic (#77733)
## About The Pull Request
the goldgrub is now a basic monster. the goldgrub will now look for
walls to mine and look for ores to eat. if he finds any nearby humans he
will escape and dig away. also if he sense a storm is coming he will dig
away and only come back out when the storm is gone. the goldgrub will
escape from u but u can now befriend the goldgrub. if u feed him ores he
will love u and become ur pet u can ride him or make him follow u. he
will also help u mine, if u leave him to mine for a bit and come back to
him later u can ask him to spit out all the materials he mined and he
will give them to u. also if u feed him a bluespace ore, he will lay an
egg and have a baby. the goldgrub is very protective over this egg he
will drag it around with him. the goldgrub baby will follow his mom or
dad until he grows up to be like his mom or dad

## Why It's Good For The Game
give the goldgrub more character and now he can help miners to mine if
they befriend him

## Changelog
🆑
refactor: the goldgrub has been refactored please report any bugs
add: the goldgrub can now be tamed and he can have babys
/🆑
2023-08-22 01:26:34 +00:00
LukasBeedellCodestuff
37d8f6162b Compact shotgun re-added (#77759)
## About The Pull Request

This pr seeks to re-add the compact shotgun (slightly buffed with 1 more
ammo) and buff up its larger brother the combat shotgun (with 2 more
ammo.)

## Why It's Good For The Game
With the recent laser buffs, there is a real possibility for the compact
shotgun to return as a unique weapon to make the HOS slightly more
powerful. I am aware that it was a warden's weapon previously but the
HoS doesn't really have many fun toys to play with. The warden already
has crav maga (100x cooler than the laser) so giving this beast to the
HOS could help make it a more attractive and powerful head to play.
(Given 1 extra shot to keep up with the crazy lasers nowadays.)

In regards to the slight combat shotgun buff. The gun itself is ass,
it's barely ever used and the riot shotgun is superior because you can
actually put it in your armour slot. The hope is that this buff will
make people actually use it because it carries a lot of shots now so the
viability may increase.


## Changelog
🆑
add: Added compact shotgun to the hos locker
add: Added compact shotgun as a traitor objective 
balance: gives the compact shotgun 1 extra shot
/🆑
2023-08-22 08:54:11 +12:00
Timberpoes
7b0b51f3b4 Fixes a 1-in-20 chance RNG CI failure. (#77827)
Fixes RNG CI failure. Insuls became a traitor objective and have to be
created in populate_contents_immediate() instead of PopulateContents()
for closets. Some closets only spawn insuls 5% of the time, so this
slipped past CI and created a new CI failure that randomly does or
doesn't fail.

Moved the offending item over the populate_contents_immediate().
2023-08-21 18:16:21 +00:00
Jacquerel
3bc54e7869 Mining mob tweaks (#77763)
## About The Pull Request

~~I wanted to do this after #77700 (wow cool numbers) but nobody has
merged it yet despite how simple it is so i'll just hope they don't
conflict.~~ Thanks san

I'm fucking about with mining mobs with the intention of making them
more interesting but not necessarily towards making mining _harder_, but
some of these changes unquestionably have done so.

These changes are mostly in response to feedback about Watchers who are
definitely significantly more threatening than previously, although some
of this is user error.

- Watchers are annoying when traversing lavaland because they use their
ability on you instantly upon acquiring a target, if you are trying to
escape other fauna this quickly becomes deadly.
- A lot of players don't really realise what the overwatch ability is
actually doing and so just complain about getting machine gunned.
- If you _do_ react properly to the ability it still makes fighting them
take a lot longer than it used to.
- The "look away" icon is hard to see in the dark sometimes

To ammeliorate these factors I have:

- Reduced watcher health by ~20%
- Display an alerted graphic over the head of the watcher every time you
trigger the overwatch.
- Multiple watchers now won't overwatch you at the same time (this made
the "penalty" volley essentially become instant death)
- The "look away" icon is rendered above the lighting plane so you can
always see it
- Added a new component which tracks how long a mob has had a specific
target.
- - Watchers will now only Overwatch you if they've seen you for at
least 5 seconds (usually they'll try and shoot at you twice before
this).
- - Goliaths will only tentacle you if they've seen you for at least 3
seconds.

If overwatch is still problematic after this I guess I can just nerf it
to not track movement at all and only respond to attacks.

## Why It's Good For The Game

I don't want to discourage miners from "actually mining" by having them
get sniped just for walking around and the added time-to-kill on these
guys could make clearing tendrils more tedious too.

## Changelog

🆑
balance: Watchers have less health
balance: You can't be overwatched by several watchers at a time
balance: Watchers won't overwatch you instantly upon seeing you
balance: Goliaths won't launch tentacles at you instantly upon seeing
you
/🆑
2023-08-21 16:56:09 +02:00
Ghom
a3522c6c38 Miscellaneous fishing code changes. (#77739)
## About The Pull Request
This PR contains a few changes that I hadn't got to do earlier,
including: different pressure / air mixture thresholds for different
fish (if amphibious), fish being able to be fed directly without the
need of an aquarium, replacing the `available_in_random_cases` variable
with a weight define of value 0, the preset fishing sources global list
so we don't have to manually instantiate lazy fishing spots and assign
them stupid string defines, chasm detritus made into datums, a couple
balloon alerts and removal of unused code.

## Why It's Good For The Game
The fishing portal generator UI is unused, the perfect variable for the
fishing minigame is also unused.
There's no reason for chasm detritus to be an item instead of a datum.
It isn't a map spawner.
Chasm chrabs, if given the amphibious trait, should be able to survive
Lavaland/Icemoon's atmosphere.
I don't even know why I made a snowflake proc to instantiate the
evolutions global list instead of `init_subtypes_w_path_keys`
The shiny lover and wary fish traits were actually making the minigame
slightly easier.
The background icons for the UI had a zero-alpha, one pixel thin stripe
on top that needed to be colored.
Improved `fish_source/proc/dispense_reward`.
Some doc comments and a typo or two.

## Changelog

🆑
add: You can now feed fish with the can of fish feed without having to
put the fish in a aquarium first.
balance: Some fish may survive in different, harsher atmospheres if
given the amphibious trait, like chasm chrabs on lavaland.
qol: aquarium now uses balloon alerts when feeding fish.
fix: The wary and shiny lover no longer incorrectly remove difficulty
from the minigame if conditions aren't met.
/🆑
2023-08-21 13:41:05 +01:00
Timberpoes
2d4d23dbf1 Replaces the poster and graffiti objectives with assault and early steal & destroy ones. (#77029)
## About The Pull Request

With the blessings of @Watermelon914 I am removing the two objectives
for placing posters and spraying graffiti.

These old objectives are not dead. Their items have moved to the
Badassery section of the uplink.

A box of 3 demotivational posters can be bought for 1TC with 0 rep.
The spraycan can be bought for 1TC with 0 rep.

In their place comes one new objective and one extended objective.

The new objective is Assault a Crewmember. This objective requires you
to attack the specified target 2-5 times (random on objective
generation). It tallies from any attack that filters through the
`/datum/element/relay_attackers` element and has an "attacker"
associated with it.

Although it asks you not to kill the other player, it doesn't fail if
you kill them.

I have expanded the low-risk theft objectives with items like a mime
mask, lawyer badge and a fake moustache (commonly on cooks).

Finally, I've added a very low level set of steal-and-destroy objectives
aimed at some items that will require a bit of basic breaking and
entering, and the destruction of which may hurt crew morale.

```
/datum/objective_item/steal/traitor/donut_box
/datum/objective_item/steal/traitor/rpd
/datum/objective_item/steal/traitor/space_law
/datum/objective_item/steal/traitor/granted_stamp
/datum/objective_item/steal/traitor/denied_stamp
/datum/objective_item/steal/traitor/lizard_plush
/datum/objective_item/steal/traitor/moth_plush
/datum/objective_item/steal/traitor/insuls
```

This PR also fixes clown shoes missing a proc override to allow them to
actually register as a theft objective.


![image](https://github.com/tgstation/tgstation/assets/24975989/775d46cf-f40a-43e5-9bf1-3aa4a31d436e)

![image](https://github.com/tgstation/tgstation/assets/24975989/66c77815-1f2b-4dfb-99c6-b8f2e0061654)

![image](https://github.com/tgstation/tgstation/assets/24975989/85d3878a-c598-4ec0-9bb1-920380a004c6)
## Why It's Good For The Game

Basically my discussion with Watermelon focused on the idea that the
graffiti and poster objectives weren't really crimes. They baited
antagonists into very passive play early-game.

These new replacements encourage a more antagonistic playstyle. Starting
fights plus B&E are two bread-and-butter play paradigms for antaggery.

Giving a few early game theft + destroy options with a mix of impactful
items (like insuls and RPDs) versus more symbolic or emotive items
(plushies, donut boxes, Cargonia stamps) gets antagonists out and about
in the station, warming themselves up.

And having an objective to assault players (even if you don't kill them)
allows cheeky antags with a penchant for shittery to start fights with
players and start genuinely impacting the shift, involving sec and
drawing players into their antaggery.

Both of these natually ease players into the more substantive theft and
murder objectives.

The existing spray and posters are actually thematically super cool.
Traitors now have even more access to them since they can be bought for
1TC per spraycan/3-pack of posters. This lets antags with TC to spare
run gimmicks around them and adds extra fun to the Badassery section.
## Changelog
🆑
del: Traitor objectives to place posters and graffiti the station have
been removed.
add: The items associated with the poster and graffiti objectives can
now be purchased from the Badassery section of the uplink. The posters
come in a box of 3 for 1TC, and the spraycans are 1TC each.
add: Adds a new Assault traitor objective, requiring you to the attack
the target a few times without needing to kill them. Earn TC and
reputation by starting barroom fights and bait players into escalation
battles for fun and profit.
add: Expands low-risk steal objectives to include the Chef's fake
moustache, Lawyer's badge, and Mime's mask.
add: Adds brand new shift start Steal & Destroy objectives for early
breaking and entering. Smash your way into a sec checkpoint to grab a
Space Law book, engineering to grab some insulated gloves or the psych
office to kidnap their moth plush.
fix: Fixes an issue where the steal clown shoes objective would never be
valid.
/🆑
2023-08-21 13:00:19 +01:00
die_amond
8467b9f9ec Adds new sprites for opened fireaxe and mech removal crowbar cabinets (#77772)
## About The Pull Request
Adds some new sprites for when the fireaxe and mech removal crowbar wall
cabinets are opened.
Old (it's just a line):

![oldcabinets](https://github.com/tgstation/tgstation/assets/58376695/34a21d06-971d-47b9-b9f4-73021531f542)
New:

![fireaxe](https://github.com/tgstation/tgstation/assets/58376695/5ef7b5ae-f0b3-40e8-822f-a7cde186cd8c)

![mechremoval](https://github.com/tgstation/tgstation/assets/58376695/017a0e23-75a4-4796-a2eb-07291f84a0ac)
## Why It's Good For The Game
The old sprite just seemed awkward, and you could barely tell it even
had the cover on it when opened. Makes the cabinets nicer looking when
opened and shows it from a better perspective.
## Changelog
🆑
image: adds new sprites for opened fireaxe/mech crowbar cabinets.
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2023-08-21 13:45:12 +02:00
lessthanthree
bb4792cc0d Fix invisible box on rotated multi-tile airlocks (#77736)
## About The Pull Request

Fixes airlock bounding box being incorrect when rotated leading to a
solid, invisible box on the adjacent tile. Icon states match airlock
direction.

## Changelog

🆑 LT3
fix: Rotated multi-tile airlocks display correctly and won't create an
invisible box next to itself
/🆑
2023-08-19 12:30:00 -06:00
iwishforducks
74a9b317aa Fixes cost values of RCDs (#77650)
## About The Pull Request

fixes cost values to be 1:1 of what the construction would have costed
in manual construction for the RCD. also changes all decaseconds to
seconds in code for clarity.

the biggest change is windows, they used to cost more than they needed
for manual construction:

grille - 4mu - 1 iron sheet - 100% efficiency
directional normal window - 6mu - 1 glass sheet - 66% efficiency
directional reinforced window - 9mu - 1 reinforced glass sheet - 66%
efficiency
fulltile normal window - 12mu - 2 glass sheets - 66% efficiency
fulltile reinforced window - 15mu - 2 reinforced glass sheets - 80%
efficiency

this PR fixes all of these to be 100% efficient by lowering their matter
costs, among some other items like racks or reflector frames.

## Why It's Good For The Game

consistency for material costs is good. most of these incorrect material
values are also for things that don't matter, like racks or reflector
frames. also decaseconds are gross looking in code

## Changelog

🆑
fix: Some RCD constructs took more material than manual construction.
The RCD cost should be consistent in comparison to manual construction
now.
/🆑
2023-08-19 15:57:54 +02:00
Fikou
b77c1c85ea MODLink System (+ NWTLMM) (#77639)
## About The Pull Request
A pact made with `@Kapu1178`
Small changes you should not care about:
RD MODsuit outfit (admin only) no longer has a beret that blocks the
activation of the suit
The beret used by death squad officers no longer is blocked from being
put on a hat stabilizer module
Admins can now Shear matrices of objects in Modify Transform
Multitool buffers have been a little refactored to use a setter proc
that saves them from causing hard dels
Cooler stuff:
A revival and remake of [Nobody Wants To Learn Matrix
Math](https://github.com/tgstation/tgstation/pull/59103), this time with
additional tooling for quick matrix calculations.

![image](https://github.com/tgstation/tgstation/assets/23585223/eb387738-0839-463a-aed8-4703d139b11a)
The MODLink system, available through every MODsuit and MODLink scryers
(a neck item obtainable from advanced modsuit research or
charliestation)
Let's you make a holographic call with any other MODLink user, where you
can chat in realtime and see what's up with em

![image](https://github.com/tgstation/tgstation/assets/23585223/5a822f9f-e823-497e-b766-40055f2fc0d6)
![image](https://github.com/tgstation/tgstation/assets/23585223/062983ee-6058-4e78-a3aa-bccda1a3e224)


## Why It's Good For The Game
Adds a fun way for the crew to communicate with each other that can be
done in real-time with relative privacy compared to radio.

## Changelog
🆑 Fikou, Armhulen, Sheets (+rep for Mothblocks and Potato)
fix: RD MODsuit outfit (admin only) no longer has a beret that blocks
the activation of the suit
fix: The beret used by death squad officers no longer is blocked from
being put on a hat stabilizer module
admin: Admins can now Shear matrices of objects in Modify Transform
admin: Admins now have access to Test Matrices in the VV dropdown, an
all-in-one tool for editing transforms.
add: MODLink system, available through scryers (from RnD and Charlie
Station) and through MODsuits. Lets you call people with holographs!
/🆑
2023-08-19 06:24:57 +00:00
Helg2
15cf79c27c Fixes lavaland beach bartender closets. (#77698)
## About The Pull Request
I subtyped the closets under bar closet as we have no wooden closet
subtype which is stupid, and this may not be the best solution. But hey,
now it's not varedited just in the map.
Fixes https://github.com/tgstation/tgstation/issues/76943.
## Changelog
🆑
fix: fixed lavaland beach bartender closets looking off.
/🆑
2023-08-19 01:01:12 +02:00
Ghom
1be27a4ffe Dunking handle_atom_del() in the trash bin. (#77339)
Whatever you do, if it warrants the use of something like
`handle_atom_del`, chances are `Exited` can do it better, as most of
these cases involve movables that shouldn't be moved out of their loc
(`Destroy` forcefully moves movables to nullspace) without calling
specific procs, and for the remaining few, `handle_atom_del` doesn't
even cover the eventuality of a movable being deleted outside the source
atom, so it's quite garbage.

Beside, I feel confident in saying `handle_atom_del()` is older than the
DCS, an echo on the workarounds done at the time.
2023-08-18 11:02:22 +00:00
Fikou
061f7b176d fixes the name of the incline bench press (#77676)
## About The Pull Request
this one dedicated to lukas beedril

## Changelog
🆑
spellcheck: fixes the name of the incline bench press
/🆑
2023-08-17 13:06:16 -06:00
Bloop
4458892dad Fixes an invalid bartender suit spawn (#77662)
## About The Pull Request

https://github.com/tgstation/tgstation/pull/77558 removed the bartender
outfit but there was still one instance of the path left over, leading
to an invalid icon state bartender suit spawning in a locker.


![dreamseeker_mc0gjQkreo](https://github.com/tgstation/tgstation/assets/13398309/863f77ce-2cf2-463d-b552-2ac632b49624)


![image](https://github.com/tgstation/tgstation/assets/13398309/43aeb546-c3e1-44bb-8cb6-13b680a4aca4)

This gets rid of that. The bartender outfit has been replaced with the
greyscale buttondown suit with slacks now.

Also repaths `/obj/item/clothing/under/rank/civilian/bartender/purple`
to `/obj/item/clothing/under/rank/civilian/purple_bartender` to avoid
having a defunct basetype for this same reason.

## Why It's Good For The Game

Fixes an oversight

## Changelog

🆑
fix: formal closet will no longer spawn with two 'error' icon suits
inside of it
/🆑
2023-08-17 15:44:26 +08:00