Commit Graph

40060 Commits

Author SHA1 Message Date
Rhials 199aa000d3 Demotes Psyker Pirates to Bounty Hunter Duty (#75031)
This PR demotes the Psyker-gang from a pirate team to a fugitive hunting
team. For more information on Psyker pirates, please refer to #71650.

Stuff this also does in the process:
- Gives fugitive hunters their own subfolder in the fugitives antagonist
folder, moves some of their stuff into hunter-specific files rather than
interlacing it with the rest of the fugitive code.
- Moves the hunter backstories to defines, to make reading things easier
while I made this change.
- Exhaustively moves everything related to psykers from being
pirate-oriented to hunter-oriented (typepaths, locations where stuff is
defined, etc. There should be nothing left behind related to psykers in
anything pirate related). (Tell me if I missed anything somehow).

They still get their ship (they even get their own custom
psyker-friendly prisoner capsule). They still have a bunch of lethally
chambered firearms. They're the same gunrunning nutcases they were
before, just as bounty hunters.

To assist with basic tasks such as "getting to the station" or "figuring
out who the fuck we're supposed to be kidnapping", the psykers have
"acquired" a Seer to assist them. They can _try_ to coordinate the
psykers and lead them through situations where their impairments put
them at too great a disadvantage. If you're one of the psykers, make
sure to keep this guy alive at all costs!

Why are they called Shikaris instead of hunters? Mariam-Webster says
it's a Hindi word for some kind of hunter/tracker, and it sounded like
something a bunch of space-junkies would call themselves because they
think it sounds cool.

They now also come with a slightly different motivation, now that they
can't directly threaten the crew for money. Psyker hunters now arrive
tasked with a dirty kidnapping job, payment rendered in GORE.
## Why It's Good For The Game

Psykers aren't up to the challenge of being pirates. They're bogged down
by a number of fundamental issues that render them unable to do anything
expected of pirates. As it currently stands, they present about as much
threat as you would expect from three blind junkies with guns.

Removing them wholesale would be kind of lame. They can function as a
bunch of chaotic-neutral gun-toting space-maniacs, but for the purposes
of gameplay, keeping them as pirates would be a waste of their talents.

Moving them to a lower-stakes role not only moves them to a niche they
are more capable of filling, but gives players a more lax environment to
get a grip on playing psyker without being overwhelmed.

Giving them a seeing-eye role should bring a more unique dynamic to how
psykers are played (that is, some semblance of organization rather than
blind flailing), and should help get over the mechanical hurdles of
being a psyker until better solutions can be made. It shouldn't be too
big of an impact on balance considering the psyker gang only has three
spawns, while most hunter packs have 4+.
2023-05-05 05:03:33 +00:00
MrMelbert 4de3df461e [MDB Ignore] Adds a unit test for typepaths that are required to be mapped onto each station map (#74985)
## About The Pull Request

Inspired by #74967 and #68459 , and the fact that Tramstation regresses
very often -

Adds a unit test, `required_map_items`, which ensures that certain
typepaths which should definitely be mapped onto every map is mapped
onto every map

It can also be used to ensure that items which should not be mapped in
multiple times are not, among other things.

I included a few examples - 
- Min 1, max inf of each head of staff stamps
- Min 1, max 1 departmental order consoles
- Min 1, max inf comms console
- Min 1, max 1 Pun Pun
- Min 1, max 1 Poly
- Min 1, max 1 Ian

If, in the future, a mapper decides they (for some reason) do not want a
certain previously-required item on their map, the test can be adjusted
such that it allows excluding or something, but currently it should be
for items which require conscious thought about.

#### QA: Why not make this a linter?

I attempted to make this a linter before realizing two things
1. Someone might make a spawner which spawns the items, or they might
get placed in a locker, in any case this accounts for everything on init
2. Linters run on every map, non-station maps included

So I went with a test

## Why It's Good For The Game

#50468
#61013
#74967

Why is it always the CMO stamp?

## Changelog

Not necessary (unless I find a map missing something, then this will be
updated)
2023-05-04 15:20:25 -06:00
lizardqueenlexi 9635b3957a Hierophant club appearance updates properly; works if summoned into hand. (#75116)
## About The Pull Request

Fixed a pair of bugs with the hierophant club.

First, the appearance of the club would not update properly to display
whether or not the beacon is attached. The icon state was only ever
updated when the blink action was used, rather than when the beacon was
actually manipulated. It now updates at sensible times.

Second, the blink action was granted when the hierophant club was
_picked up,_ rather than equipped into hand. This meant that if the club
was placed in your hand by any means other than picking up (most
relevantly, by casting Instant Summons, something miners can reasonably
get their hands on), the blink action would not work unless you drop it
and pick it up again. It now uses the `equipped()` proc to do this
correctly.
## Why It's Good For The Game

Visual feedback is useful to know whether or not you have a beacon
deployed - since the UI button doesn't change at all to tell you this
information.

The summoning bug is minor, but could cause problems for miners who have
acquired both the club and Instant Summons - the bug could ruin a
perfectly good getaway plan.
## Changelog
🆑
fix: The hierophant club's sprite updates when it should
fix: The hierophant club grants the blink action when summoned into hand
/🆑
2023-05-04 21:40:34 +01:00
Andrew d3d2da52f9 Damaged window and broken machine helpers (#75132)
## About The Pull Request

Added a helper that makes it possible to spawn broken machines without
var-editing.

Removed the damaged reinforced window spawner and added a general
damaged window helper working on any first window found on a tile.

<img width="787" alt="2"
src="https://user-images.githubusercontent.com/3625094/235808169-c6143606-52e8-4bb7-bab4-e7ce3d359eb2.PNG">

<img width="787" alt="1"
src="https://user-images.githubusercontent.com/3625094/235808160-688f56eb-269a-4019-8c1c-2819cc3a4432.PNG">

## Why It's Good For The Game

Less var edits, better tools for mappers, more immersive ruins.

## Changelog

🆑
qol: Mapping: Added broken machine map helper
qol: Mapping: Replaced damaged window spawner with a universal helper
/🆑
2023-05-04 14:06:30 -06:00
MrMelbert aacc85964a Adds a unit test that all roundstart spawnable jobs have a landmark to spawn at (#74995)
## About The Pull Request


https://github.com/tgstation/tgstation/pull/74985#issuecomment-1523773626

Tests that all jobs that have `spawn_position > 0` at roundstart have a
location to spawn at.

Also changes the failure message for
`get_default_roundstart_spawn_point` to send to `log_mapping` rather
than `log_world`, as it is a map error and log world doesn't really help
anyone. This would've been sufficient for the existing unit test
`log_mapping`, but that unit test expects that the log has an areacoord
supplied, which we can't really do, given we're reporting a _lack_ of
something.

## Why It's Good For The Game

Stops maps from regressing and dumping people on the latejoin shuttle
roundstart.

## Changelog

~~Not necessary unless I find a map which forgot a landmark~~

🆑 Melbert
fix: Tramstation Robotics and RD now spawn in their departments
roundstart
fix: Birdboat detective now spawns in their office
/🆑
2023-05-04 14:03:49 -06:00
Bloop 0cbbbbff13 Fixes organs not spilling out (#75142)
## About The Pull Request

Closes https://github.com/Skyrat-SS13/Skyrat-tg/issues/20797

I was tracking an issue related to an IPC brain not dropping and was led
on a wild goose chase through brain code. Brain code is bad times.

Anyway the issue ended up not having anything to do with brain code.
During https://github.com/tgstation/tgstation/pull/73918 there was a
refactor to change the name of the internal organs list from
'internal_organs' to just 'organs'.

This is all good and cool, but one problem:


https://github.com/tgstation/tgstation/blob/c8982bfb1cd103539d0be86689f40a023dbb7f22/code/modules/mob/living/carbon/death.dm#L48

The `spill_organs` proc was iterating through the (previously named)
`internal_organs` list using a var called `organs`. Which is now
currently the name of the list itself. Derp.

<details><summary>We are back to this now.</summary>


![image](https://user-images.githubusercontent.com/13398309/235855290-bf5ad54b-cfa5-4bb6-8162-870e032af6cc.png)

</details>

## Why It's Good For The Game

Bugfix, now organs will spill again when a mob gets gibbed. In case you
missed getting hit in the face by a flying liver.

## Changelog
🆑
fix: a mob will now once again spill their organs when they are gibbed
/🆑
2023-05-04 13:53:50 -06:00
zxaber 292ac864fe Fixes Mech Charger Console to Recharge Port Sync (#75127)
## About The Pull Request
Found a bug while working on another project, Kapu on the Discord told
me why it was broken. For most maps, this seems to be handled by the
fallback code by chance, where it checks within one more tile away, but
for Tram, that caused the following;

![image](https://user-images.githubusercontent.com/37497534/235795350-4e2326af-37ac-4f29-b195-b286eeafac03.png)

This is a webedit, but only because I didn't want to stop mid-project
and swap branches. It has been tested on local.
## Why It's Good For The Game
Bugfix.
## Changelog
🆑
fix: Mech chargers on Tram (and possibly elsewhere) no longer sync
oddly.
/🆑
2023-05-04 11:56:23 -07:00
zxaber 1546296bbe Cyborg Rechargers material changes, part two (#74814)
## About The Pull Request
Continuation of #74770;
- Fixes some botched math due to the borg material storage datums using
a proprietary value per sheet (500 vs 2000)
- Restocking is now enabled by default when a borg enters a charger. It
can be disabled during the charge session, but will re-enable the next
time the charger is used.
- Moves the Metal and Glass storage datums to a new shared subtype.
- Restocking speed scales with the manipulator tier of the recharger; By
default, it is 1/8th the total metal/glass storage per cycle, and
increases to 1/5th with a tier 4 manipulator.
## Why It's Good For The Game
These were changes I meant to make before the last PR was merged.
## Changelog
🆑
fix: Fixed math on cyborg restocking
qol: borgs entering chargers now have the restocking feature enabled by
default. It can be disabled with a right-click while charging if you
don't want to eat the station's mats.
balance: Borg restocking speed now scales with the charger's manipulator
tier.
/🆑
2023-05-04 08:04:01 -07:00
iwishforducks 2c8ecdab3f Stowaway Changelings (Latejoin Changelings) (#74670)
## About The Pull Request

Adds a latejoin form of Changeling flavored as a stowaway.

## Why It's Good For The Game

We don't have a latejoin form of Changelings. It ups the paranoia that
anyone can be a Changeling, latejoin or not. They're also one of the few
non-progression antagonists which would work perfectly as a late join.

## Changelog

🆑
add: Stowaway Changelings will now appear as a late join form of
Changeling.
/🆑

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
2023-05-03 08:50:45 -07:00
san7890 1b5c0489a4 ex_act() will work on basic mobs again (lol) + Unit Test (#74953)
basically ex_act's implementation on basic mobs would call parent and
then react to it's value, this is presumably to do the first check about
space vine mutations and whatever. the problem is that the `/mob/living`
implementation would itself also call parent, and that would always
return null because `/atom/proc/ex_act` doesn't have a set return value.
So, this simply would _always_ early return, with ex_act presumably
*never* working on basic mobs for at least four months now.

I decided to then change up the return values for pretty much all
implementations of `ex_act()` since there was no rhyme or reason to
returning null/FALSE/TRUE, and documenting why it's like that.

Just to make sure I wasn't breaking anything doing this (at least on
base implementations), I wrote a unit test for all of the three major
physical types in game (objs, mobs, turfs) because i am a paranoid
fuckar. we should be good to go now though.
## Why It's Good For The Game

i noticed this because placing c4's on sargeant araneus wouldn't
actually damage it whatsoever. now it actually does the stated 30
damage, but araneus has like 250 health so it doesn't actually matter in
the long run. whatever at least it does the damn 30 now.

also adds a unit test for this specific case as well as a range of other
cases to ensure this stuff doesn't silently break in this way anymore
2023-05-03 14:56:46 +00:00
ArcaneMusic f2fd69a49a Minerals have been refactored so costs and minerals in items are now in terms of mineral defines. (#75052)
Ladies, Gentlemen, Gamers. You're probably wondering why I've called you
all here (through the automatic reviewer request system). So, mineral
balance! Mineral balance is less a balance and more of a nervous white
dude juggling spinning plates on a high-wire on his first day. The fact
it hasn't failed after going on this long is a miracle in and of itself.

This PR does not change mineral balance. What this does is moves over
every individual cost, both in crafting recipes attached to an object
over to a define based system. We have 3 defines:

`sheet_material_amount=2000` . Stock standard mineral sheet. This being
our central mineral unit, this is used for all costs 2000+.
`half_sheet_material_amount=1000` . Same as above, but using iron rods
as our inbetween for costs of 1000-1999.
`small_material_amount=100` . This hits 1-999. This covers... a
startlingly large amount of the codebase. It's feast or famine out here
in terms of mineral costs as a result, items are either sheets upon
sheets, or some fraction of small mats.

Shout out to riot darts for being the worst material cost in the game. I
will not elaborate.

Regardless, this has no functional change, but it sets the groundwork
for making future changes to material costs much, MUCH easier, and moves
over to a single, standardized set of units to help enforce coding
standards on new items, and will bring up lots of uncomfortable balance
questions down the line.

For now though, this serves as some rough boundaries on how items costs
are related, and will make adjusting these values easier going forward.

Except for foam darts.

I did round up foam darts.

Adjusting mineral balance on the macro scale will be as simple as
changing the aforementioned mineral defines, where the alternative is a
rats nest of magic number defines. ~~No seriously, 11.25 iron for a foam
dart are you kidding me what is the POINT WHY NOT JUST MAKE IT 11~~

Items individual numbers have not been adjusted yet, but we can
standardize how the conversation can be held and actually GET SOMEWHERE
on material balance as opposed to throwing our hands up or ignoring it
for another 10 years.
2023-05-03 14:44:51 +00:00
Wallem 9c0900bc9f Adds the Death Sandwich to the game (#75013)
## About The Pull Request
Adds the Death Sandwich to the game, the ultimate form of
bread-conveyed-meat-based consumables.

![deathsandwich](https://user-images.githubusercontent.com/66052067/235041733-287be1fd-1eed-4d6d-840b-96f95494f093.png)


And remember;
Eat it right, or you die!
## Why It's Good For The Game
I'm genuinely surprised we don't already have a meatball sub in the game
also I love humor food, and I doubt my edition of the Eggcellent
Challenge would ever be merged if I tried to do so, so this is the next
best thing.
## Changelog
🆑 Wallem
add: The ancient recipe for the Death Sandwich has been rediscovered
buried in the deepest depths of an erupting volcano.
/🆑
2023-05-03 01:49:35 +00:00
Hoolny b7c58b0050 Spiderlings now can communicate with spiders (#75112)
## About The Pull Request
Fixes spiderligns speaking human
## Why It's Good For The Game
Spiderlings should be able to communicate with their mothers even if
their dumb babies

![uW4kZe4](https://user-images.githubusercontent.com/84478872/235577542-26fda00c-24c0-46d0-8110-87e63f156133.png)
## Changelog
🆑
fix: fixed spiderlings speaking human instead of spider
/🆑
2023-05-02 19:14:28 -06:00
Dawnseer 61a034bcd9 Service Borger Upri- Kitchen Upgrades (#74938)
## About The Pull Request
I decided that Service Borgs had been left in the dust for too long, and
that since they're named 'Service' cyborgs and not 'Bar' cyborgs I'd
give them upgrades to let them assist in the kitchen. To do this I've
made 4 upgrades.

First up, rolling table dock, to provide mobile service. Nothing worse
than offering someone a drink in a hallway and having to drag them to
the nearest table or having to drop it on the floor. That's poor
service.
Secondly there's a condiment synthesizer, which can produce solid
condiments like flour, cornmeal, salt, coco powder, etc.
Thirdly a kitchen toolset, a knife that can switch to a rolling pin. The
blade dulls when not used for cooking.
Fourthly, A service apparatus, which can pick up food, oven trays, soup
pots, plates, bowls and paper.

The upgrades are locked behind a new techweb node, Cyborg Upgrades:
Service.
This node is locked behind the same nodes as the janitorial cyborg
upgrade node.

And outside the upgrades, I've also given the cyborg a rag so it can
finally clean it's glasses and tables. I've also given it a money bag,
to store the profits. This gives cyborgs an opportunity to save up for
getting on the deluxe shuttle. Or giving people a new target to hold up
and shake down for their hard earned money. Please don't law 2 them into
giving you their lunch money. Or do.
I've also enabled the RSF to print a few more things. Plates, bowls,
plastic cutlery and paper cups.
I've also enabled borgs to open and close the oven. Alas, they still
can't pick up food or the oven trays from the oven, since the oven is
sticky in a manner.

I've also added a little bit more to the borgshaker, and moved sugar
from the borgshaker to the condiment synthesizer.

And not only the borgshaker, but the emagged shaker too. The emagged
shaker has been given blood and carpotoxin. And you may ask 'Why those
two ingredients?' Both can be used like fernet, both for nice things,
and harmful things, staying in line with fernet. Blood can be used to
mix drinks or be used for food, or for disease, since the borg or anyone
with access to milk and water can easily produce virus food. Meanwhile
carpotoxin is well, a rather weak toxin but can also be used to make
imitation carpmeat. This'l give more reason to also consider the borg
for emagging, or giving illegal tech, instead of just speedlining for
the nearest engineering borg or medical borg.

![image](https://user-images.githubusercontent.com/126404225/233840472-7665196c-1052-4e29-9749-6c2b99e5fa9e.png)

The Condiment Synthesizer uses the same UI as the medical hypo, due to
it's ingredient list being low in comparison to the shaker

![image](https://user-images.githubusercontent.com/126404225/235359571-48157d24-f3c8-448f-bb05-6f8842526aae.png)

I've been trying to figure out how to get an item to allow the borg to
open the cooking menu when used inhand/inmodule. But I can't figure that
one out, sadly. Nor how to let the Service Apparatus pick up trays from
the oven.
So for now, service borgs will have to settle for simply assisting in
the kitchen.

## Why It's Good For The Game
Allows Service Cyborgs the tools to help in the kitchen, and elsewhere
too.
## Changelog
🆑
add: Damp rag and Money bag to service borg
add: Service borg upgrades, with accompanying tech web node
add: Sprites for kitchen toolset, and service apparatus
balance: The RSF can print a few more things, paper cups, seaweed
sheets, plates, bowls, plastic cutlery and standard decks of cards.
balance: Sugar moved from borgshaker to condiment synthesizer. Berry
juice, cherry jelly and vinegar added to borgshaker. balance: Both
shaker and synthesizer can also be adjusted to give 1 unit at time, so
it goes 5, 10, 20 then 1, and back around.
balance: Adds blood and Carpotoxin to the emagged borgshaker.
fix: Money bag was missing a description, it now has one.
/🆑
2023-05-02 18:59:53 -06:00
Rhials 6ff8085e4a Adds in some missing words for the hallucinatory anomaly announcement (#75094)
## About The Pull Request

Fixes a small grammatical error with the anomaly announcement text.
## Why It's Good For The Game

Words words words words words words words.
## Changelog
🆑
spellcheck: The hallucinatory anomaly announcement is no longer missing
words.
/🆑
2023-05-02 18:06:01 -06:00
Iamgoofball 74a7d16102 Removes player references (#75133)
🆑
fix: Removes player references.
/🆑
2023-05-03 12:01:58 +12:00
John Willard 722f1c7f90 Golems can now redeem points from their ORM (#75083)
Golems can now redeem points from their ORM. There's a check for bank
job, so only the blank ID cards golems get will work. Miners
theoretically can use one of the cards to get points themselves, but
then they need to carry that card around and get all points through it,
because their starting ID cannot claim it.
2023-05-02 14:28:59 -05:00
Zonespace c3ff5a5180 [NO GBP] Style meter fixes (#75090)
## About The Pull Request
Fixes:

- Crusher mark score applying to attacked corpses
- Parrying not working, in 2 different forms
- The style bar not being accurate with >= 600 style points

## Why It's Good For The Game
Bugs bad

## Changelog
🆑
fix: Style meter parrying works again
fix: Style meter bar now works correctly with very high style point
count
/🆑
2023-05-02 18:42:42 +02:00
san7890 912e843f53 Allows Export of your Preferences JSON File (#75014)
## About The Pull Request

Hey there,

This was spoken about in #70492 (specifically
https://github.com/tgstation/tgstation/pull/70492#issuecomment-1278069607),
and I have been waiting for this to be implemented for some time. It
never got implemented, so I decided to code it myself.

Basically, **if the server host doesn't disable it**, you are free to
export your JSONs as a player, right from the stat-panel. It's a pretty
JSON on 515 versions, too!

It's right here:


![image](https://user-images.githubusercontent.com/34697715/235251447-1c977718-51fd-4025-8d89-c60bffc379ec.png)

Here's what the prettified JSON looks like on 515.


![image](https://user-images.githubusercontent.com/34697715/235321061-4a217e26-c082-4bba-b54a-2c780defda0a.png)

There's a cooldown (default to 10 seconds) between exporting your
preferences.

#### Why is this config?

It's because in the past, a server host could always just file-share the
.sav or .json or whatever to the player, but they would have to do the
explicit option of actually bothering to make the files accessible to
the player. In that same line of logic, the server operator will have to
explicitly make the files accessible. This is mostly because I'm not
sure how good `ftp()` is at being a player function and wanted to have
some sort of cap/control somehow in case an exploit vector is detected
or it's just plain spammed by bots, so we'll just leave it up to the
direct providers of this data to elect if they wish to provide the data
or not.
## Why It's Good For The Game

Players don't have to log into Server A to remember what hairstyle they
loved using when they want to swap to Server B! That's amazing actually.
I always forget what ponytail my character has, and it'll be nice to
have the hairstyle in a readily accessible place (after I prettify the
JSON for myself).

It's also more convenient for server hosts to make player data like this
accessible if they really want to, too.

If we ever add an _import_ feature in the future (which would have to be
done with a LOT of care), this will also be useful. I wouldn't advise it
though having taken a precursory look at how much goes into it while
trying to ascertain the scope of this PR.
## Changelog
🆑
qol: The game now supports export of your preferences into a JSON file!
The verb (export-preferences) should now be available in the OOC tab of
your stat-panel if enabled by server operators.
server: Exporting player preferences is controlled by a configuration
option, 'FORBID_PREFERENCES_EXPORT'. If you do not wish to let clients
access the ftp() function to their own preferences file (probably for
bandwidth reasons?) you should uncomment this or add it to your config
somehow.
config: Server operators are also able to set the cooldown between
requests to download the JSON Preferences file via the
'SECONDS_COOLDOWN_FOR_PREFERENCES_EXPORT' config option.
/🆑
2023-05-02 08:22:44 -07:00
Andrew f6af3b3ea3 Electrolysis works with enriched liquid electricity (#74977)
## About The Pull Request

Electrolysis reaction seems to be overlooked with introduction of
enriched version of LE.

## Why It's Good For The Game

Reaction actually works for LE from Jupiter Cups, Energy Bars, Empowered
burgers - the common sources of LE.

## Changelog

🆑
fix: Electrolysis chemical reaction works with enriched liquid
electricity
/🆑
2023-05-02 12:46:49 +02:00
tattle d918d71ee8 Turns down the whistle volume (again) (#75087)
## About The Pull Request Why It's Good For The Game
From a poll conducted on what sounds need balancing. It was nerfed a
year ago (happy anniversary!) in #66452, but it's still pretty loud
today.


https://user-images.githubusercontent.com/66640614/235417665-042d4b49-258e-47fd-89ad-aba5d354b820.mp4

## Changelog
🆑 Tattle
sound: nerfed the police whistle volume
/🆑

Co-authored-by: tattle <article.disaster@gmail.com>
2023-05-02 12:44:37 +02:00
Bloop 5401d0798f Removes the random prosthetic quirk from the character preview page (#75050)
## About The Pull Request

The prosthetic limb quirk chooses a random limb to make prosthetic at
roundstart.

It was extremely buggy with the way quirks are displayed and the way the
dummy preview works and would frequently carry over to other characters
and not update correctly.

<details>
<summary>Eventually you end up getting this if you switch enough times
</summary>


![hDq983y2T0](https://user-images.githubusercontent.com/13398309/235334283-d4fc4c1f-c1de-4460-b6f7-7ef95a587cb4.gif)

</details>

I started fixing the issue when I realized this really shouldn't be
shown on the dummy to begin with, because what you see on the dummy will
not necessarily be what you get at roundstart. It's misleading.

I did however leave part of the fix that I was working on, because I
think it is useful to be able to undo the quirk via adminnery.

Closes https://github.com/Skyrat-SS13/Skyrat-tg/issues/20791

## Why It's Good For The Game
## Changelog
🆑
fix: prosthetic limb quirk will no longer display a prosthetic on your
character preview because it is buggy and hardly ever matches what you
end up getting upon spawning
code: removing the prosthetic limb quirk will restore your original limb
/🆑
2023-05-01 20:13:10 -06:00
nikothedude bf4926fec8 [NO GBP] Adds a UI state to number inputs because Im an idiot and I forgot (#75103)
## About The Pull Request

Title.

## Why It's Good For The Game

I broke everything.
2023-05-02 01:02:49 +00:00
Ryll Ryll f7a49c4068 Gunpoints now take half a second to activate, make gasp sounds, and briefly immobilize the shooter and target, other small balance changes (#74036)
## About The Pull Request
This PR messes around with gunpoints a bit, with the purpose of making
them more viable in certain scenarios without making them obnoxious. The
biggest change is that gunpoints now require a 0.5 second do_after()
where neither the shooter nor the target moves, and immobilizes both of
them for 0.75 seconds if point blank, or half that if you're 2 tiles
away. Originally you were supposed to only be able to initiate a
gunpoint from point-blank, but #56601 seems to have removed that
requirement, so we'll run with it and just leave it as advantageous to
gunpoint closer up. The do_after() reinforces that it should be used as
an ambush tactic, and so you can't use it on someone who's actively
fleeing or fighting you.

Getting held up will now make you emit a shocked gasp sound, a la Metal
Gear Solid, which combined with the short immobilize will hopefully make
it more noticeable that someone's pointing a gun at you.

Holdups will now immediately give a 25% bonus to damage and wounds,
instead of having to wait 2.5 seconds to hit the double damage stage.

Finally, right clicking someone that you're holding up will no longer
shoot them. That just feels like good consistency.

## Why It's Good For The Game
Hopefully makes gunpoints a little more viable for when you want to
stick someone who's not expecting it up without them immediately jetting
off. In the future I'd like to ape Baycode and let the gunman have an
action that toggles whether the victim is allowed to move, so you can
order them to move to a second location without instantly shooting them,
but that'll come later.
## Changelog
🆑 Ryll/Shaps
balance: Holding someone at gunpoint now requires both the shooter and
the victim to hold still for half a second before activating, so you
can't hold-up people fleeing or fighting you. After that, it will
briefly immobilize the both of you, 0.75 seconds if adjacent, or half
that if you're two tiles away. Nuke ops are immune to the
immobilization, since they're ready to die anyways.
balance: Holding someone up will immediately apply a 1.25x damage and
wound multiplier, rather than waiting 2.5 seconds to hit 2x.
soundadd: Being held up will now make the victim play a sharp gasp
sound, a la Metal Gear Solid.
qol: Trying to hold someone up that you're already holding up will no
longer shoot them.
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2023-05-02 10:38:02 +12:00
nikothedude 7cd1c47e67 Allows TGUI input datums to accept a ui_state as an argument (#75029)
## About The Pull Request

Title. Adds a new argument to the factory proc, the New(), adds a
variable, and changes ui_state() to return that variable. The variable
is always_state by default.

## Why It's Good For The Game
It allows custom behavior to be injected into the ui_state logic of the
basic input datums. This is good because there are circumstances where
always_state isn't acceptable. Ex. you open tgui_input_list(mob/user),
and the mob dies or is deleted. The list stays open, the contents can be
picked, despite this not being what the author wants. With this PR, you
can make sure the list closes and inputs are invalid in circumstances of
your choosing without having to completely re-make the input procs via
copypasting.
## Changelog
🆑
code: TGUI input datums can now accept custom ui_states
/🆑
2023-05-01 15:05:26 -07:00
Thunder12345 461ef29f18 Bows no longer randomly become unusable (#75058)
## About The Pull Request

Fixes bows randomly becoming unusable.

On firing bows were leaving behind a reference to their casing in the
internal magazine. As arrows are technically caseless ammo there was no
way to remove this casing, and eventually it would turn into a null,
rendering the magazine unable to load any new arrows.

This is fixed by adding a check for whether the ammo is cased to all
ballistic guns in `process_fire()`. Caseless ammo has its casing removed
from the magazine's `stored_ammo` list to prevent it rotting away to a
null down the line.

While I was here renamed and autodocced the var `heavy_metal` which
appears to be exactly the var for having a casing that I needed.

## Why It's Good For The Game

Bows becoming randomly useless because of leftover vars is bad and
silly, and so are mystery meat vars with undescriptive names and no
autodoc.

## Changelog
🆑
fix: Bows will no longer randomly stop taking new arrows.
/🆑
2023-05-01 14:08:12 -06:00
SyncIt21 bd65465910 Fix Drying rack spawning a matter bin and circuit board on deconstruction. (#75062)
## About The Pull Request
Fixes #75033

## Changelog
🆑
fix: Drying rack spawning a matter bin and circuit board on
deconstruction
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2023-05-01 14:01:18 -06:00
SyncIt21 c5a293264f Fire/Air alarms properly dismantle when they are destroyed & fixes balloon alert runtimes when cutting terminals (#74918)
Firealarms & Airalarms `deconstruct()` procs are wrong, they spew out
electronics & cable regardless of what build stage their on

Fire alarms providing free electronics & cable without even installing
them


https://user-images.githubusercontent.com/110812394/233784785-650fbd64-3c6c-44c8-b377-c3a8244d28ac.mp4

Air alarms providing free electronics & cable without even installing
them



https://user-images.githubusercontent.com/110812394/233784799-cdd38967-8a59-454d-8da4-1360d03ff12c.mp4

Bug exploits now come to an end

Also fixes balloon alerts run timing when cutting terminals connected to
apc's/smes etc. because the atom gets deleted, by the time the balloon
alert gets executed it adds a timer on the deleted object causing
runtimes.

## Changelog
🆑
fix: air alarms correctly spew out cable & electronics depending on
their build stage when their integrity reaches 0 i.e. destroyed
fix: fire alarms correctly spew out cable & electronics depending on
their build stage when their integrity reaches 0 i.e. destroyed
fix: balloon alerts runtiming when cutting terminals
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2023-04-30 23:37:11 -06:00
Andrew 6fa298fc5b Air alarm helpers (#74997)
## About The Pull Request

Replaces air alarm variants with directional alarms and corresponding
helper overlays, similar to APCs.


![image](https://user-images.githubusercontent.com/3625094/234709656-fac3d5c3-af04-496a-a28a-a3ca8d7e854f.png)

## Why It's Good For The Game

Less var edits, easier management.

## Changelog

🆑
qol: Mapping: Air alarm variants replaced with corresponding helpers
/🆑
2023-04-30 19:19:08 -06:00
John Willard ba24aa3404 Ore silo will put machines off its level on hold, instead of disconnecting (#74990)
## About The Pull Request

There's a problem where people would try to rebuild a whiteship and use
an Ore Silo for it. However, it would automatically unlink everything
when moving, because it's checking for z level as soon as it changes z
level itself, before the Ore silo has 'moved' as well.

~~To fix this, I'm now only disconnecting ore silos when a shuttle
moves. This mostly does the same as before, but technically you can sync
an unwrenchable connected machine and bring it to space with you
(without using a shuttle) to stay connected, but I don't see this as a
problem, and my original point of the PR was to prevent Lavaland ORMs.~~

I decided against this, instead I've made it so machines that aren't on
a valid level (either both on the same z level or both on the station
level) will be considered 'on-hold', much like if the QM has set it to
hold through the silo directly. This means that machines no longer
disconnect from the Ore silo on moving, they just can't access the
materials in it. This affects gameplay in 2 ways:

1. You no longer need to resync when you bring the machine back
2. It won't unsync itself every time you move station z-level with its
silo (such as on a whiteship).

I also made disconnecting from an ore silo actually remove them from the
ore silo's list of connected machines.

## Why It's Good For The Game

Closes https://github.com/tgstation/tgstation/issues/69863

## Changelog

🆑
balance: Machines (such as ORM and Techfabs) will no longer unsync from
Ore silos when it moves Z-level, instead it will prevent materials from
being used, as if it was on hold.
/🆑
2023-04-30 16:06:12 -06:00
John Willard 1365cde463 Makes russian mobs subtype of syndicate basic mobs (#75044)
## About The Pull Request

Turns out that Russian mobs are literally just Syndicate mobs, so I made
them subtypes of Syndicate basic mobs. This means we don't have to
maintain these two different mobs just to do the exact same thing.

I also removed unused subtypes of it so it's not clogging up.

Also this PR is inspired by a CI failure in [Birdshot
here](https://github.com/tgstation/tgstation/actions/runs/4841059293/jobs/8627176442?pr=75042)

## Why It's Good For The Game

I mostly explained in the About section, but this just helps future
maintaining by making these already copy-pastes of eachother, at least a
subtype instead.

## Changelog

🆑
refactor: Russian mobs are now subtypes of Syndicate basic mobs.
/🆑
2023-04-30 16:05:49 -06:00
Helg2 c53b187fda You can now close codex cicatrix in your hand. (#74684)
## About The Pull Request
Fixes that you could spam open books.
Changed that toy version of codex cicatrix didn't have a proper
animation.
And you also can close it in your hand now.

Also fixed some minor typos.
## Why It's Good For The Game
Book looks like book now.
## Changelog
🆑
fix: You can't spam open codex cicatrix now.
qol: You can close codex cicatrix in your hand now! Also toy codex
cicatrix has proper animation now.
/🆑
2023-04-30 15:05:42 -06:00
John Willard fe1e9706c1 Adds a game log for enslaving (#75038)
## About The Pull Request

A mob being enslaved to another is now logged in game logs. This hits
sentience potions, guardians, and Golems. This helps admins know through
logs who made/used what.

## Why It's Good For The Game

I was told that it's pretty hard to tell who made Golems because this
type of info isn't logged, so you can't check it post-round. This should
help admins with that.

## Changelog

🆑
admin: Enslaving mobs is now logged in game.log
/🆑
2023-04-30 12:04:41 -06:00
san7890 fa0225b05c Converts Spiderlings from Structures to Basic Mobs (#75001)
If I could've made this more atomic, I would have in a heartbeat, trust
me.

## About The Pull Request

Hey there. People were mocking us for having spiderlings still be a
subtype of `/obj/structure`. I decided to take a lot of time to fix
that. A lot of behavior it was implementing was just pseudo-mob stuff,
so it was actually easier than it looked for the raw conversion. A lot
of the footwork on spider stuff in the basic framework was already done
previously by Jacquerel, so that was pretty nice.

However, there are two new things that weren't introduced in the code
that had to be put in.

A) A component to handle growth and differentiation into a mob. This may
have already existed, no clue. If it does (and it's NOT
evolutionary_leap), let me know.
B) AI Behavior to handle seeking out a vent, entering a vent, and then
exiting out of a different vent. I may have gone a bit wacky on the
code, but it certainly works as expected (spiderling goes in one vent,
exits the other). Let me know if you can think of a way it can be better
optimized, but it was deliberately written to be very failsafey in case
shit goes yonkers.

One fundamental difference between structure spiderlings and basic mob
spiderlings (beyond the AI and not just a random prob() check for
movement) is the fact that they had vent movement coded in... but we
_really_ don't need stuff like that for our intents and purposes. If the
range turns out to be too OP in the current framework, we can always
change it up a bit, but also there's a _lot_ of vents we can end up in
the station (my testing had one spiderling end up in the AI sat to get
obliterated).
## Why It's Good For The Game

Spiderlings aren't structures! They behave like a mob should! Players
can possess spiderlings! They work seamlessly with differentiating into
a giant spider! Better AI! More room for people to add into this very
under-utilized buggers!
## Changelog
🆑
refactor: Spiderlings are now basic mobs, report any complete
weirdness/deviation from known behavior. They should be a lot more
intelligent now though.
add: AI Spiderlings are super fragile, but they're also super fast,
especially when they get into a vent. Once they're in circulation, they
could end up everywhere! Maybe in the armory, maybe in a locked closet
in maintenance. Be sure to be vigilant and splat them whenever you can
to save the station from a whole lotta heartache!
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-04-30 14:17:02 +01:00
MrMelbert 63712b54a5 Auto-wiki setup for soup (#74931)
## About The Pull Request

Sets up an auto-wiki run for Soup.

It's all in the in game cookbook, but keeping the wiki up to date is
good.

Still figuring out how auto-wiki works with the help of Smithers, so it
might need to be updated in a follow-up PR.

```
{{Autowiki/SoupRecipeTemplate
|name=Tomato Soup
|taste=tomato
|foodtypes=Vegetables, Fruits
|description=Drinking this feels like being a vampire! A tomato vampire...
|icon=soup/Tomato Soup
|requirements=50 units Water, 2 tomatos, at temperature 450K
|results=30 units Tomato Soup, 20 units Tomato Juice
}}
```

Templates: 
https://tgstation13.org/wiki/Template:Autowiki/SoupRecipeTemplate
https://tgstation13.org/wiki/Template:Autowiki/SoupRecipeTableTemplate
2023-04-30 02:16:11 -07:00
norsvenska e8ece6b6ce Shuttle loan fix (#75020)
## About The Pull Request

shuttle_loan_datum.dm had two entries for the department_resupply
variation. One of those is the Syndicate hijacking event, and the other
is the resupply. This fixes that so those two events don't conflict with
each other.

## Why It's Good For The Game

It removes a problem with the code, and makes it so that admins can
force either the syndicate hijacking or the resupply

## Changelog

🆑
fix: Shuttle Loan event's resupply and hijacking have been separated
into two different datums
/🆑

Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
2023-04-29 23:30:10 -07:00
NoselessCanine fc7dc92b68 Fixes drink description inaccuracy (#74898)
## About The Pull Request
Changes the taste of the Bloody Mary to "liquid murder", as stated by
the drink's description.

## Why It's Good For The Game

Makes the description of the Bloody Mary more accurate to its in-game
effect.

## Changelog

🆑 
fix: Bloody Mary flavor is now accurate to its description.
/🆑
2023-04-30 06:11:26 +00:00
Andrew 5965a156c0 You can now move dirt (#75028)
## About The Pull Request

Changed the recipe for dirt piles from 3 sandstone bricks to 3 sand. 
And made the dirt pile drop these 3 sand on deconstruction instead of
just disappearing.


![dreamseeker_Lj6jELZPjb](https://user-images.githubusercontent.com/3625094/235268536-c9835fa0-ce31-4bd3-a75c-ef2f3dcc7da7.gif)

Also fixed hydrotrays resetting their water and nutriments on
construction.

## Why It's Good For The Game

You could accidentally click on the wrong mouse button and loose your
dirt pile instead of uprooting a plant.
And it didn't make sense why you would need to turn sand into bricks
before making a pile out of it.

## Changelog

🆑
qol: Dirt pile is crafted from sand instead of sandstone and drops it on
deconstruction
fix: You can't have free water and nutriments by rebuilding hydrotray
/🆑
2023-04-29 23:32:42 -06:00
BlueMemesauce 6bd192fe49 Fixes some miscapitalization of Nanotrasen (#75026)
## About The Pull Request

Fixes #75019

Also fixes it in a drink, the ethereal lore, and some photocopier
paperwork.

And also adds "NanoTrasen" to common spelling mistakes

## Why It's Good For The Game

Nanotrasen is the correct capitalization
## Changelog
🆑
spellcheck: Fixed Nanotrasen being miscapitalized in traitor posters, a
drink, the ethereal lore, and some photocopier paperwork
/🆑
2023-04-30 04:16:29 +00:00
John Willard c8c977989a Mimes can no longer write without breaking their vow. (#74674)
## About The Pull Request

I feel this is gonna be unpopular with the lazy mime players.

Also, this is an idea I had in my backlog for a while now

![image](https://user-images.githubusercontent.com/53777086/231355622-2c5d5d5a-813d-420c-ae42-c1bdc657f3ba.png)

This removes the Mime's ability to write on paper while they're on their
vow of silence.
This can be compared to hand language, which doesn't let you speak
despite not being considered "talking", and PDA messaging, which does
the same.

Mimes can still write with their pen, which is a nice invisible white
color. I thought I would keep it in as I find that interaction funny to
have a Mime give someone just a blank paper, unknowing that there's text
on it.
Spraycans/Telekinesis/Circuits are also left unaffected because they
require actual effort to obtain (doing genetics, doing circuits, or
printing spraycans which take a lot of inventory space and is limited),
compared to paper which you can carry hundreds of papers around and is
bountiful across the station.

I thought this was attempted at least once, but I can't find any PR that
mentions it, so I'm shooting my shot to see if this is something we'd
want.

## Why It's Good For The Game

Mimes using paper is a lazy way to bypass their one job gimmick: Emoting
over talking.

If they get a job change, they can simply break their vow to access
paper writing abilities, so this doesn't affect that really. It more-so
hits the Mimes who uses the job for the free spells/healing
abilities/etc, and bypasses the downsides (im aware its harder to get
people to read paper than it is to talk to them, but you can literally
get the mute quirk and itll have the same effect without being the whole
job).

The point is, you don't get invisible walls for free; it comes at a cost
of not being able to talk to people. If you want to talk, then break
your vow, lose access to your Mime abilities, and remake it later when
the cooldown is over. You're not meant to do both.

## Changelog

🆑
balance: Mimes can no longer write on paper without breaking their vow.
/🆑
2023-04-30 12:26:37 +12:00
Iajret d097ad44b9 Fixes paper text length not counting correctly for cyrillic characters (#75021)
## About The Pull Request

It turns out someone used regular length() in papers code which caused
all cyrillic and some other characters to count as two symbols even
though tgui itself shows and counts them as one. Should be working fine
now.

## Why It's Good For The Game

less bugs = better game

## Changelog
🆑
fix: papers should count cyrillic and other non-ascii characters
correctly both server and client-side
/🆑
2023-04-29 18:18:18 -06:00
John Willard 91aa639923 Mafia victory and QOL Update (#74974)
## About The Pull Request

HoP is now a killing role as they theoretically can solo-kill through
voting.
Changelings also have can kill flag, even if it's useless for them, just
in-case.

Removes check_total_victory and block_team_victory from Neutrals, since
it was just snowflake code.
I instead reworked all of how victory is calculated.

Ghosts can no longer see Mafia chat, because I'd like to integrate dead
players into the round in the future, and ghosts knowing who the evils
are is lame. It's a deduction minigame, you're supposed to deduct who
the bad guys are.

### QoL stuff

- Adds maptext for voting periods so people know who you are voting for.


https://cdn.discordapp.com/attachments/326831214667235328/1097781395369246740/2023-04-18_03-09-12.mp4

- Adds a popup when someone is voted up, instead of being a big box of
text in your chat. This will help clog the chat less and make it easier
for players to understand what to do when the time comes.


https://cdn.discordapp.com/attachments/326831214667235328/1097770854005350481/2023-04-18_02-28-31.mp4

Lastly, converts Mafia panel to typescript

## Why It's Good For The Game

This should be the last of my Mafia reworks, hopefully.
This makes the game's victory calculated to ensure there's always a
chance anytime possible, while letting kingmaker scenarios exist.
Additionally, we shouldn't expect players to know how Mafia works
because we don't expect them to already have some background in Mafia
games, or have played Mafia before.

## Changelog

🆑
qol: [Mafia] Players get a popup when a player is voted to the stand.
qol: [Mafia] Players now have the name of who they voted for displayed
over their heads during voting period.
balance: [Mafia] Deadchat can no longer see Mafia chat.
balance: [Mafia] HoP can now solo-win.
/🆑
2023-04-29 13:56:15 -07:00
Zytolg ad302f209f Nanotrasen Budget Programme - Mothball Edition [BIRDSHOT STATION] (#73502)
## About The Pull Request
--- 

The Space Tram is currently spaced. This is a known issue with not the
map, but Trams in general. The Space Tram is a Space Tram to encourage a
fix. Until then, the Space Tram is a maint tram that's an actual hazard
but cannot directly kill anyone, including lizards. Enjoy the commodity
as you zip from secmaint to medmaint.
-------------------------------------------------------

I... really don't know if I should be proud of myself here. This whole
process has been akin to a fever dream and it has only been little over
a month since I first created the .dmm for this. What started as a
simple yet humble reimagining of Birdboat has turned into an entirely
new station, and blown past Metastation sized proportions. This has been
my most expansive project yet, and somehow it's also been my quickest.
So without further ado, I unveil Birdshot - Successor to Birdoat.

-------------------------------------------------------

**Due to recent cost expenditures on Icemoon projects, and a growing
need for orbital research stations, Nanotrasen has decided to pull
Birdboat Station out of mothball after nearly 5 years of abandonment.**

Since then, the station has seen a variety of changes at the hands of
the various vagabond lawless scum and villains that have decided to make
the abandoned station their home. Do not fret though, a Nanotrasen
Operation has secured the companies rightful property for corporate use
once again, though you'll need to be the stewards of the remaining
cleanup operation.

------------------------------------------------------

Now, as you might have guessed by now, Birdshot is heavily based on
Birdboat station. Many of the decisions here follow the original layout,
and what had to be modified or moved still tries its best to replicate
and imitate what bird being said. At least, that was the idea initially.
This has very much grown into its own beast and as such, while the main
inspiration has been Birdboat, there are a lot of new ideas thrown into
the mix that really give this station its own unique and deserving
identity. Maybe it's not perfect, but I've been inspired by @MMMiracles
own performance with Tramstation to keep working on Birdshot and
updating it with better and improved faculties. For now, though the
station is in a playable state, and that means I'm making a PR. If I had
to borrow the words of the good MMM, I would call this **Birdshot:
Season 0**


![BirdSHOTFULL2-26-S](https://user-images.githubusercontent.com/33048583/221432760-27af1889-d2d0-4861-9435-df4258525fae.png)



See the image in more detail here: https://imgur.com/iT5Vi8k



## Why It's Good For The Game

We've been with the same 5 maps for a while now. @san7890 jokingly said
that I could sacrifice Metastation back in November if I remade Birdboat
but modern. Obviously that wasn't going to happen, yet I was spurred on
by the idea. When I began this in earnest early this January, @EOBGames
said that a Birdboat sized map would replace Kilostation in the
rotation. Interestingly we're not a small map anymore so I honestly have
no clue where this goes. Maybe that ephemeral 6th map slot that's been
rumored.

What I can say, is that Birdshot is wholly unlike anything else that is
currently in rotation. It's got an engineering section that feels way
too small for a station of that size, almost evocative of Cere. Cargo is
blessed with a Boutique that makes use of @Fikou's new mannequin dolls.
Command is outfitted with a Corporate Guest Suite, and Officials sent
from Nanotrasen can embark from their ferry into the safety of their own
Corporate Dock. Elements of Cerestation are present, yet not in a way
that makes traversal annoying. Furthermore we have **2 Trams** (that I
have yet to get functional but we'll get there) on Birdshot, that's
right 2. One Security Prison Tram, and then other, a Space Tram. Both
Novel in their own ways. Departments on Birdshot twist and turn, and
there's an abundance of Maintenance Tunnels to cut through everything,
for the brave and the bold that is. And there's plenty left to discover,
but I'd rather let Birdshot speak for itself. I'm proud of this one.

If you want something new, this is something that is almost the complete
opposite of Chilled Station - Explicitly Designed to send you back to
the metal death trap that is: **Space Station 13.**


## Changelog
🆑
add: Birdshot station has been pulled out of Mothball.
add: New station areas and places to visit. A Mix of Kilo and Delta
maints with winding shortcutting paths.
add: A host of new shuttles to support this bold endeavor to reclaim
something that really shouldn't be reclaimed.
add: Two Trams, Two Trams.
add: For the last time Bob, the gaping hole is a **feature.** Use the
breach shutters or have the virologist make starlight.
add: A smiling salute to stations past...
add: Secrets.


/🆑

---------

Co-authored-by: Zytolg <theoriginaldash@gmail,com>
2023-04-29 21:45:50 +01:00
Jordan Dominion b7ed7223a7 Fix pick from empty list runtime in fake_chat hallucination (#75011)
What it says on the tin.
2023-04-29 11:18:00 +00:00
Bloop 666c5c0b02 Anomaly refinery no longer lets you insert cores of insufficient quality (#75008)
## About The Pull Request

Pretty self explanatory. Someone just forgot a return statement after
the error message here.

Closes https://github.com/Skyrat-SS13/Skyrat-tg/issues/20803

## Why It's Good For The Game

Bugfix/oversight

## Changelog
🆑
fix: the anomaly refinery will no longer let you insert cores of
insufficient quality to refine
/🆑
2023-04-28 22:26:59 -06:00
Zephyr 4178abcc33 Allows the book binder to remember font typing (#75007)
use that for book binding
## About The Pull Request

Closes https://github.com/tgstation/tgstation/issues/74996
## Why It's Good For The Game
## Changelog
🆑
fix: Bookbinder no longer takes your pen's font and throws it out the
nearest window
/🆑
2023-04-28 21:18:40 -06:00
Zonespace 0d4ec59197 Miner Style Points 2: Style on Everyone (#74690)
## About The Pull Request
A re-open of https://github.com/tgstation/tgstation/pull/66326 with
Fikou's permission

Adds the style meter, it can be bought from the mining vendor for 1500
points, it is an attachment to your glasses.
The style meter creates a display on your hud, with your recent actions,
like attacking enemies, killing them, mining ore etc. Actions like
spinning or flipping increase your score multiplier, making you get more
points.
Your style meter affects how much ore you get from mining rocks. By
default with the meter, you get 20% less ore, but at the highest, you
can get 1.2x the ore from mining. In addition, on B-tier or above, you
can "hotswap" items, by attacking an item in your backpack with one in
your hand (should it fit and all that). Also features a leaderboard for
highest style point count!

New streamable: https://streamable.com/eewi6l

The following are sources of points:

- Killing things
- Killing big things
- Killing small things
- Punching things
- Melee'ing things
- Mining rocks and ores
- Having matrix traps detonate
- Hit, defuse, and detonate gibtonite
- Detonate crusher marks
- Scan geysers
- Parry projectiles (others or your own)

Oh, right. While wearing the style meter, you're able to parry any
lavaland-based projectile by clicking on it or the tile it is on, which
reflects it back in a 7 degree arc, making it 20% faster and 15% more
damaging. Usually not very easy.

Maybe-plan in the future for some syndicate variant of this (with bullet
parrying and appropriate style sources, etc.), but not for this PR

Thanks to Arcane, multitooling the style meter will make it play some
sounds on rank-up.


![image](https://user-images.githubusercontent.com/41448081/231605640-a01c2b60-1ba1-4390-8bea-0aa804ea1973.png)

https://streamable.com/nheaky

Parrying in action

## Why It's Good For The Game
Makes miners bring more ore in a fun way.

## Changelog
🆑 Fikou, Zonespace, Arcane for voicing
add: The mining vendor now has a style meter. This meter gauges your
style points and uses them to improve your ore yield.
/🆑

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-04-29 02:33:09 +00:00
tralezab bc813ab93d Cleans up + Improves bows, Sorts files, Adds the Divine Archer clothing, weapon, rite (#74811)
## About The Pull Request

### Divine Archer 🏹 


![image](https://user-images.githubusercontent.com/40974010/232647927-aace69ea-bda8-4ec9-9bf1-60140034fbb3.png)

Adds a new chaplain weapon and suit of armor, the divine archer. It's an
orderable set of armor, but provides less armor than the rest, but you
get more pieces of armor (boots, bracer, undersuit).

The divine bow comes with a quiver that holds holy arrows. The holy
arrows come with bane support, dealing critical damage to revenants.

### Bow Features  

- arrows can now be dipped in poison

### Bow Improvements 🔧 

- bows now drop their arrow when you put them on your back while nocking
a bow
- bows give feedback for trying to draw without a nocked arrow
- codewise, bows support subtypes much better. They still have
hard-sprited loaded arrows, but one day that'll change.

## Why It's Good For The Game

Yeah, we could add null rod #2342 that does almost the same as the
others, or we could have a unique bow weapon!

Player Dev Project thread:
https://discord.com/channels/326822144233439242/1093521091957370940/1093521091957370940

## Changelog
🆑 tralezab code, Drag for the commission and player project, cre#0484
for their spritework
add: Divine Archer Armor and Weapon
qol: Bows give more feedback when you're doing something wrong, like
trying to draw without a nocked arrow
code: Sorted files, cleaned bow code up to allow subtypes
/🆑
2023-04-29 02:07:44 +00:00
Zonespace 86334bbc9c Allows the surgery body zone selector to use other UI themes (#74957)
## About The Pull Request
Allows uses of the body zone selector for non-base TGUI themes (that
look good, that is), doesn't add any to the asset cache, however, as
this is just groundwork

## Why It's Good For The Game
The potential of things for looking better for other TGUI themes

## Changelog
Nothing player-facing
2023-04-28 16:18:21 -07:00
carlarctg 129c74c945 EMPs on robotic limbs will now disable them for 4-8 seconds rather than causing a 10-20 second full stun (#74570)
## About The Pull Request

EMPs on robotic limbs will now disable them for 10-20 seconds rather
than causing a 10-20 second full stun on the user. Additionally, they
will damage the limb for a little brute and some burn.

Arm EMPs don't do anything special as the limb being disabled already
drops items.

Leg EMPs cause a 10-20 second knockdown, only really applicable if
there's only one robotic leg as two disabled legs KD you anyways.

Chest EMPs cause a 3-6 second standing-up paralyze, visible to the
player by a quite noticeable shaking of their body.

Head EMPs break the optical transponder circuits for 7.5-15 seconds,
effectively giving the user nightmare goggles vision with green instead
of red as the only remaining color.

Tacit approval for the PR at least existing.

![image](https://user-images.githubusercontent.com/53100513/230537462-b06d0bb5-0607-4f83-954c-6b2a0bcdc635.png)
## Why It's Good For The Game

Robotic limbs are not so strong that a glancing EMP that may not even
have been directed at you should stun you for ten, TEN seconds, or
worse, twenty. This is basically legacy stunning from the days of
super-stuns on soap, stunbatons, etc. The code for it was last touched
six years ago.

**_The stats as shown above are not even close to final. I really don't
know or care what the right stats should be in the end. and I'm fine
with making them a 10-20 second timer again. I just put some
reasonable-seeming numbers in as a placeholder. EMPs could also still
cause a short stun if that is deemed necessary. Hell, that could be the
chest effect!_**
## Changelog
🆑
balance: EMPs on robotic limbs will now disable them for 10-20 seconds
rather than causing a 10-20 second full stun on the user. Additionally,
they will damage the limb for a little brute and some burn.
EMPs on robotic limbs will now disable them for 10-20 seconds rather
than causing a 10-20 second full stun on the user. Additionally, they
will damage the limb for a little brute and some burn.
balance: Arm EMPs don't do anything special as the limb being disabled
already drops items.
balance: Leg EMPs cause a 10-20 second knockdown, only really applicable
if there's only one robotic leg as two disabled legs KD you anyways.
balance: Chest EMPs cause a 3-6 second standing-up paralyze, visible to
the player by a quite noticeable shaking of their body.
balance: Head EMPs break the optical transponder circuits for 7.5-15
seconds, effectively giving the user nightmare goggles vision with green
instead of red as the only remaining color.
/🆑
2023-04-28 20:24:40 +00:00