Commit Graph

2670 Commits

Author SHA1 Message Date
LemonInTheDark ae5a4f955d Pulls apart the vestiges of components still hanging onto signals (#75914)
## About The Pull Request

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

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

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

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

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

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

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

## Why It's Good For The Game

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

## Changelog
🆑
refactor: Pulled apart the last vestiges of names/docs directly linking
signals to components
/🆑
2023-06-09 06:14:31 +00:00
SyncIt21 191459a86f Hot Stuff(Igniter's & Sparkers) are buildable. (#75722)
## About The Pull Request

**1. Igniter's**
Those things which you see in atmospheric's incineration chamber &
ordanance lab used to ignite gases, they can now be crafted

![Igniter](https://github.com/tgstation/tgstation/assets/110812394/e59bfffb-2717-4d12-891f-0231f7ba5e7f)

  - **Interactions**
     a) attack with hand to turn it on/off
b) use a multitool to change it's ID(how that's useful? keep reading)
     c) use welding tool to deconstruct it

**2. Sparker's**
No they aren't a new thing, you probably woudn't have noticed them but
it's this thing in xenobiology lab for example, and you use the button
to turn it on
![Screenshot
(235)](https://github.com/tgstation/tgstation/assets/110812394/66009c31-9655-45a5-b9c3-017673cda04c)
They function the same as igniter's(i.e. combust gases) except as the
name implies they emit spark's to get the job done

These can now also be made in the autolathe as a wall mount

![Sparker](https://github.com/tgstation/tgstation/assets/110812394/46392fde-0d27-455a-8a32-087f954a6385)
Yup just stick it on a wall and your done

 - **Interactions**
a) use a multitool to change it's ID(how that's useful? keep reading)
     b) use welding tool to deconstruct it

 To turn this on see the last section

**3. Ignition Switch Controller**
These function just like blast door controller's except they can control
only sparker's & igniter's

Also printable in autolathe

![Controller](https://github.com/tgstation/tgstation/assets/110812394/b378f7f1-3059-4865-8645-0c5a9b5c4011)

 - **How it work's(or a reminder if you already know)**
   a) First use multitool on sparker/igniter to set their ID's
b) Use multitool on this controller to set it's ID to be the same as
your sparker/igniter ID. If the igniter, sparker & this controller all
share the same ID you can use this controller to turn all device's
on/off at once
   c) stick it in a button frame & close
   d) use button

Hot Stuff


https://github.com/tgstation/tgstation/assets/110812394/8b59a71e-8992-428e-a629-5c371b5c0c3d

Ok so really what's the actual difference's between an igniter & sparker
1. Igniter's are built on the floor while sparker's are mounted on
wall's
2. Igniter's have `max_integrity = 300` while sparker's have it s normal
`max_integrity = 100` so yeah igniter's are more durable than sparker's
3. Igniter's keep the turf hot continuously as long as it's on so they
take up power continuously, so their operation cost is high whereas
sparker's emit spark's only once and use power only that one time so
they are cheaper to operate

**Why it's good for the game**
Make your own combustion chamber professionally and not in an improvised
way. Honestly I'm tired of seeing people chuck in lit welding tool's/
Zipo lighter's to ignite the gases and we loose those item's so yeah now
we have the tool's to do it the right way

## Changelog
🆑
add: Igniter's can be crafted
add: Spraker's can be printed in the autolathe
add: ignition controller can be printed in the autolathe
/🆑

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-06-07 11:07:02 +12:00
SyncIt21 b32faa5611 Stabilized metal slime extract now properly add's a sheet to a random stack (#75685)
## About The Pull Request

`/obj/item/stack/sheet/add()` proc not only increments the `amount` var
but also
1. updates the stack's appearance
2. updates it's weight
3. inform's global material sniffer's about it's presense
4. also updates it's custom material's

So let the slime extract use this proc instead of doing a partial
incomplete job ourselves

## Changelog
🆑
fix: stabilized metal slime extract properly increments stacks so that
it's appearance & weight are updated correctly & is picked up by
material sniffers.
/🆑
2023-05-28 11:47:36 -04:00
John Willard 0c99bd28f4 Makes gasses use defines (#75542)
## About The Pull Request

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

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

## Why It's Good For The Game

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

## Changelog

Nothing player-facing.
2023-05-27 19:45:22 -04:00
John Willard 8767ab709a removes all non-defined materials I found (#75659) 2023-05-26 15:45:09 -07:00
Treach 9f27887e07 Allows turbine parts to be made at off-station protolathes (#75651)
## About The Pull Request
smacks a ` | AWAY_LATHE` on the end of the turbine parts `build_type`
edit: Fixes https://github.com/tgstation/tgstation/issues/74078 - thanks
to SyncIt21 for pointing that out. made this pr after finding out I
couldn't print the parts myself, wasn't aware there was an open issue
for it
## Why It's Good For The Game
The circuit boards for the turbine could be printed at ancient circuit
imprinters, but the actual parts needed for the turbine itself couldn't
be printed at the ancient protolathes. I assume this was an oversight
since there's not really any reason why off-station roles shouldn't be
able to make a functional turbine.
## Changelog
🆑 Treach
fix: Turbine parts can now be printed at ancient protolathes.
/🆑
2023-05-26 12:42:53 -06:00
moocowswag c4dc58f184 Modular Shield Generators, Also Adds a new perimeter algorithm to _helpers/math_dm (#75328)
Disclaimer im mostly making this pr for the experience if anything.
Also anyone can replace the sprites if they want to I`m just making them
so itl be done, idk what a plasteel machine is supposed to look like.

The circuit boards to make these machines are unlocked by the advanced
power manipulation tech

The entire shield

- Has one big healthpool (base of 50)
- Has a configurable radius
- Takes damage from hot gas and emp
- Has regeneration (it gets nerfed by alot of things that I have to talk
about separately)
- When the shield is broken the generator must regenerate at 0.25x speed
before coming online again
- can be configured to either only generate a shield externally (in
space) or both internally and externally at the cost of half the regen
rate
- Regen rate is also reduced based on the ratio of the shield radius and
the max radius that the generator is capable of generating
- Alot more that im too tired to explain at the moment

The base stats of the shield (max health, regen rate, max radius) all
scale with the tier of parts used in the main generator.

4 other machines (3 are finished code-wise as of now) the charger (regen
rate), the relay (max radius) the well (max health) the node (allows for
more connections) can all be connected to the main generator to boost
its core stats based on their part tiers

In the future there is a possibility of specialization / modifications
to the forcefield at the cost to the core stats
2023-05-25 19:40:25 +00:00
san7890 83723acab0 Turns Chickens into Basic Mobs (#75592) 2023-05-24 15:04:27 -04:00
Tom e5ce1c09a7 Converts butterflies to basic mobs and adds them to cytology (#75582)
## About The Pull Request

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

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


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

</details>

## Changelog
🆑
refactor: Converted butterflies to the basic mob system
add: Butterflies can now be grown in cytology
/🆑
2023-05-22 10:30:48 -06:00
san7890 e2bc712714 Converts Lizards to Basic Mobs (#75515)
This was pretty simple since they didn't have too much custom behavior,
and whatever they did have already had AI behavior. I got really burned
out the last two times I wrote intricate AI action/decision behaviors so
I'm just taking it light and doing the bare minimum.

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

also that lizard gib animation has been sitting there for god knows how
long completely unseen, so let's actually hook it into the mob.
2023-05-19 00:52:20 +00:00
MrMelbert 5be8a1dbe6 Fixes burning black slime spell skipping some of the cast chain (#75335)
## About The Pull Request

Shapeshift needs to go through `before_cast` to select the shapeshift
type.

So, instead of just doing `cast`, we do `Activate`, to go through the
entire cast chain.

At first I was going to run `Trigger`, but by using `Activate` we can
skip some checks. Likely makes it a bit more consistent and less likely
to fail.

## Why It's Good For The Game

Runtime

## Changelog

🆑  Melbert
fix: Runtime with burning black slime transformation
/🆑
2023-05-13 03:25:36 +00:00
Helg2 bf880f553a Makes industrial gold and regenerative gold spawn random coins. Also adds chococoin to coin spawner. (#75199)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

## About The Pull Request
So they just had list from 6 coins and not random picking of coins, so
now its random.
It will also spawn chococoin because it's a coin too.
But won't spawn `coin/gold/debug` because it's debug and eldritch coin
because comxy asked about it.

Added chococoin to `/obj/effect/spawner/random/entertainment/coin` and
holdables list of wallet.
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->

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

## Changelog

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

🆑
add: Indusrial Gold and Regenerative Gold extracts now spawn random
coins and not just list of 6 coins. But no mythril as it has miserable
chance to have summoning effect which have even more miserable chance to
spawn something dangerous and not just mice.
add: Chococoin now has a chance to spawn wherever the coins are used to
spawn (wallets, greed ruins, deltastation bar)
/🆑

<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-05-08 17:40:13 -07:00
Thunder12345 154c9ebe82 Stock Part Resprite (#75149)
## About The Pull Request

Resprites stock parts to bring them up to date, changes manipulators to
servo motors as I couldn't make manipulators work well at this scale.


![image](https://user-images.githubusercontent.com/5479091/236561493-b34da588-dee1-405a-8557-d11741ae3f21.png)
(Power cells sold separately)

## Why It's Good For The Game

The old stock parts are dated, in some cased quite ugly, and in the case
of manipulators a ball of assorted pixels. Incidentally removed a couple
of single letter var names.

## Changelog
🆑
image: Stock parts have been resprited.
code: Manipulators have been renamed to servo motors, all related types
have been repathed to match.
/🆑
2023-05-07 23:52:03 -07:00
Jacquerel 1a918a2e14 Golem Rework (#74197)
This PR implements this design document:
https://hackmd.io/@Y6uzGFDGSXKRaWDNicSiEg/BkRr176st
Put briefly, this will remove every existing golem subtype and
consolidate golems into a single species with cool new sprites.
NOT implemented from that PR is the ability to eat Telecrystals, I
couldn't come up with an appropriate visual that can stack with the
existing ones, but that should be a reasonably trivial add for a future
artist & developer.

New Golems have a food-based mechanic where their hunger decays pretty
quickly and can only be replenished by eating minerals. They start
moving slower as they get hungrier, until eventually they become
completely immobilised and need to be rescued.
Eating different kinds of minerals will visually change your sprite and
give you a special effect in a similar way to old golems, but temporary.
While transformed, you can't eat any other kind of mineral which would
transform you (but can still consume glass).
To see the full list of effects, look at the hackmd above.

In service of these sprites working I have refactored the
`species/offset_features` feature by killing it and delegating that
responsibility to limbs instead. Rather than applying an offset to items
due to your species, it is due to your weird head or arms. This makes
overall more sense to me, but it inflates the code changes in this PR
somewhat.
It doesn't make a lot of sense to atomise unfortunately because that
code also seemed to be entirely unused until I tried to use it in this
PR, so you wouldn't be able to tell if my changes broke anything. I
might make a downstream sad by doing this.

All of the actual numbers in this PR are made up and only loosely
tested, it will need some testmerges to gather feedback about whether it
sucks or not.

Other relevant changes:
I reworked how bioscrambling works based off bodypart bodytypes, to
automatically exclude golem limbs in either direction. There's really no
way to have those work on humans or vice versa. Organs still fly though.
2023-05-07 22:45:20 +00:00
John Willard 1674f25725 New Medical job: The Coroner (#75065)
## About The Pull Request

HackMD: https://hackmd.io/RE9uRwSYSjCch17-OQ4pjQ?view

Feedback link: https://tgstation13.org/phpBB/viewtopic.php?f=10&t=33972

Adds a Coroner job to the game, they work in the Medical department and
have their office in the Morgue.
I was inspired to make this after I had played my first round on
Paradise and messed around in there. The analyzer is copied from there
(https://github.com/ParadiseSS13/Paradise/pull/20957), and their
jumpsuit is also mostly stolen from it (i just copied the color scheme
onto our own suits).

Coroners can perform autopsies on people to see their stats, like this

![image](https://user-images.githubusercontent.com/53777086/235369225-805d482c-56c0-441c-9ef8-a42d0a0192bc.png)

They have access to Medbay, and on lowpop will get Pharmacy (to make
their own formaldehyde). They also have their own Secure Morgue access
for their office (doubles as a surgery room because they are edgelords
or whatever) and the secure morgue trays.

Secure Morgue trays spawn with their beepers off and is only accessible
by them, the CMO, and HoS. It's used to morgue Antagonists. Security's
own morgue trays have been removed.

The job in action


https://cdn.discordapp.com/attachments/950489581151735849/1102297675669442570/2023-04-30_14-16-06.mp4

### Surgery changes

Autopsies are a Surgery, and I tried to intertwine this with the
Dissection surgery.
Dissections and Autopsies both require the Autopsy scanner to perform
them, however you can only perform one on any given body. Dissections
are for experiments, Autopsies is for the paper of information.

Dissected bodies now also give a ~20% surgery speed boost, this was
added at the request of Fikou as a way to encourage Doctors to let the
Coroner do their job before reviving a body.
I also remember the Medical skill, which allowed Doctors to do surgery
faster on people, and I hope that this can do something like that
WITHOUT adding the potential for exploiting, which led to the skill's
downfall.

### Morgue Improvements

Morgue trays are no longer named with pens, they instead will steal the
name of the last bodybag to be put in them.

Morgue trays are also removed from Brig Medical areas and Robotics, now
they have to bring their corpses to the Morgue where the Coroner can
keep track and ensure records are properly updated.

### Sprite credits

I can't fit it all in the Changelog, so this is who made what

McRamon
- Autopsy scanner

Tattax 
- Table clock sprites and in-hands

CoiledLamb
- Coroner jumpsuits & labcoats (inhand, on sprite, and their respective
alternatives)
- Coroner gloves
- CoronerDrobe (the vending machine)

## Why It's Good For The Game

This is mostly explained in the hackmd, but the goal of this is:

1. Increase the use of the Medical Records console.
2. Add a new and interesting way for Detectives to uncover mysteries.
3. Add a more RP-flavored role in Medical that still has mechanics tied
behind it.

## Changelog

🆑 JohnFulpWillard, sprites by McRamon, tattax, and Lamb
add: The Coroner, a new Medical role revolving around dead corpses and
autopsies.
add: The Coroner's Autopsy Scanner, used for discovering the cause for
someone's death, listing their wounds, the causes of them, their
reagents, and diseases (including stealth ones!)
qol: Morgue Trays are now named after the bodybags inside of them.
balance: The morgue now has 'Secure' morgue trays which by default don't
beep.
balance: Security Medical area and Robotics no longer have their own
morgue trays.
balance: Dissected bodies now have faster surgery speed. Autopsies also
count as dissections, however they're mutually exclusive.
/🆑

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-05-05 21:31:28 -04:00
RealityOverseer 59da3c5283 Ectoplasm Anomaly Name and Icon Bugfix (#75162)
Does as the name states. I found it weird that the ectoplasm anomaly
core is not referred to as raw when you have to refine it and instead
used both the normally refined core icon as well as the name not saying
it was a raw anomaly core at all.
2023-05-05 16:18:12 +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
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
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
SkeletalElite d8fe9282ce Fixes Infinite Slime Extract Explosions (#74988)
## About The Pull Request
Fixes #74984 by making oil extracts get deleted after they explode
Technically you can still explode multiple times by carrying multiple
extracts but that shouldn't be an issue, it takes all your inventory
space and you still only explode a limited number of times which can
devastate a department but it's nothing you couldn't do with other
explosives.

## Why It's Good For The Game
Rocket Propelled Research Director bad

## Changelog

🆑
fix: Stabilized Oil extracts no longer explode infinitely if your corpse
is immune to gibbing
/🆑
2023-04-27 15:57:59 -06:00
Gamer025 a8457b91f3 Fixes silo logging + add log file based logging to silo (#74806)
## About The Pull Request
Fixes deposit logs not working for the silo because they passed in the
mats argument in the wrong format.
Also adds log file based logging to the silo with a new log file:
silo.log.
This log should contain every deposit and withdraw action performed on
the silo and from which machine and location inluding material amounts.
## Why It's Good For The Game
Fixes broken ingame logs + adds better external logs for potential stat
tracking.
## Changelog
🆑 Gamer025
fix: Ingame ore silo logs should now log deposit actions correctly
config: New config for silo logs
/🆑
2023-04-24 13:47:12 -07:00
san7890 43473a4dac Turns Deer into Basic Mob - They Freeze At The Sight of Vehicles (#74784)
## About The Pull Request

deers only show up in the BEPIS but i decided that they would be easy
enough to turn into a basic mob (they were). it was so easy in fact that
i decided to dip my toes into coding AI behavior, and made them freeze
up whenever they see a vehicle. this required a lot of code in a bunch
of places that i was quite unfamiliar with before starting this project,
so do let me know if i glonked up anywhere and i can work on smoothing
it out.
## Why It's Good For The Game

one less simple animal on the list. deers staring at headlights is
pretty cool i think, neato interaction for when you do get them beyond
the joke the bepis makes

i'm also amenable to dropping the whole "deer in headlights" code if you
don't like that for w/e reason- just wanted to make them basic at the
very least
## Changelog
🆑
add: If you ever happen upon a wild deer, try not to ride your fancy
vehicles too close to it as it'll freeze up like a... you know where I'm
going with this.
/🆑

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2023-04-23 11:31:03 -04:00
SMOSMOSMOSMOSMO f3f274de5c refactors poles and trees into basic mobs (#74812)
## About The Pull Request
refactors poles and trees into basic mobs. If trees now see you holding
a chainsaw, hatchet, or some wood they will get angry and knock you out
for longer. Poles will run around giving some of their charge to APCs
they find along the way. i did them both in this PR coz poles were a
subtype of trees.

## Why It's Good For The Game
refactor

## Changelog
🆑
refactor: refactors trees into basic mobs
refactor: refactors poles into basic mobs
add: If trees now see you holding a chainsaw, hatchet, or some wood they
will get angry and knock you out for longer
add: Poles will run around giving some of their charge to APCs they find
along the way
fix: cells charged by the pole will now have their icon correctly
updated to reflect their charge
/🆑

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2023-04-19 16:17:17 -06:00
oranges 4c48966ff8 Renames delta time to be a more obvious name (#74654)
This tracks the seconds per tick of a subsystem, however note that it is
not completely accurate, as subsystems can be delayed, however it's
useful to have this number as a multiplier or ratio, so that if in
future someone changes the subsystem wait time code correctly adjusts
how fast it applies effects

regexes used

git grep --files-with-matches --name-only 'DT_PROB' | xargs -l sed -i
's/DT_PROB/SPT_PROB/g'
git grep --files-with-matches --name-only 'delta_time' | xargs -l sed -i
's/delta_time/seconds_per_tick/g'
2023-04-11 21:31:07 -07:00
necromanceranne d3fffa79d2 Labels security equipment as being lethal, nonlethal, less-than-lethal or highly destructive. (#74548)
## About The Pull Request

Labels a few bits of security equipment as lethal, nonlethal,
less-than-lethal or highly destructive (in the case of ion carbines or
flamethrowers). For shotgun shell boxes, ammo boxes and weapon crafting
kits, it clarifies this in the name. For printable individual ammo, it
clarifies this in the print name.

## Why It's Good For The Game

[This
thread](https://tgstation13.org/phpBB/viewtopic.php?p=676311#p676311)
reminded me that I've seen a lot of confusion about various pieces of
security equipment and what exactly the distinction is between lethal,
nonlethal and less-lethal actually is. People actively use a lot of
less-lethal equipment while thinking that it is nonlethal. It isn't. You
absolutely can kill someone with rubber shot and beanbags, and the AI
will get up in your grill about it.

The same can be said about weapons such as the energy crossbow. I saw
one person flabbergasted that by repeatedly shooting someone with it,
they killed their prisoner with toxin damage. While the weapon is mostly
stamina damage, it still deals a hefty amount of toxin damage, so
shouldn't be used necessarily in place of a disabler or baton. Equally,
I've seen some people using temperature guns recklessly and finding out
far too late that they've murdered a lizardperson by shooting them once,
or wondering why the AI is angry at them for using it when it doesn't
_seemingly_ cause damage immediately. This has resulted in
administrative issues.

We can't assume our players know these distinctions before utilizing
this equipment, so having some helpful gear titles will hopefully inform
them before they walk into these problems.

## Changelog
🆑
qol: Clarifies in various names and descriptions whether security
equipment is lethal, nonlethal, less-than-lethal or destructive.
/🆑
2023-04-11 07:45:25 -07:00
Profakos 1c69ffa642 Refactors Navigational Beacons (#74575)
## About The Pull Request

This PR refactors navigational beacons. In detail, this PR does the
following:

**General Interactions**

- You can now print boards. They are unlocked at Basic Robotics
Research, and can be printed both at engineering and robotics.
- The constructed machine requires no stock parts. When constructed, the
floor tile pops up, so you can actually interact with the device from
the get go.
- Made interacting with it more standardized, you no longer have to
screwdriver it to access the interface, instead you just click on it.
- Screwdrivering is instead part of the regular screwdriver -> crowbar
deconstruct process. However, you have to unlock the maintenance hatch
through the UI first.
- You can now use wallets too, to unlock the control interface, using
the GetID() proc.
- Interacting with tools uses balloon alerts where its possible.

**UI Interactions**

- New tgUI interface!
- Previously, you could put in anything as codes, and there was no guide
in game about what codes and values were valid. This has been replaced
by buttons with pop up text boxes, checkboxes and dropdowns.
- You can also reset the code values to roundstart values, or to blanks,
if the beacon had none.
- InterfaceLockNoticeBox component allows the silicons to unlock the
controls

**Other backend changes**

- Autodocs vars and procs in the navigational beacon file.
- Added defines for the various nav beacon codes.
- The freq var on beacons and the beacon_frequency var on robots did
absolutely nothing, so I have removed them, along with the map varedits,
and the frequency define. Maybe in the future one can readd them, to
make bots that only patrol specific areas (though you can still do that
with good next patrol location tagging).
- Mulebots were using the navbeacon's direction itself to figure out the
direction they have to put down crates, instead of the direction tag.
Now the tag actually works, allowing me to remove a bunch of varedits. I
did keep the beacon's direction as a fallback, in case no direction tag
is set, which should be South always.
- I audited and touched up the directions tags that were not in line
with the previous beacon directions (which caused things such as the
mule trapping themselves behind the crate.
- Sadly, making it use the default screwdriver construction means it is
no longer transparent in maps editors 😔


![image](https://user-images.githubusercontent.com/2676196/230599815-5265033a-d85f-4645-a73c-60e3f2c7eee8.png)

## Why It's Good For The Game

Closes #38064 . More items being constructable is more fun, and its
better if you can use an item without checking the map about how it is
supposed to work.

## Changelog

🆑
refactor: Refactored navigational beacons, making them constructable,
deconstructable, and generally easier to use
/🆑
2023-04-10 09:14:50 -07:00
necromanceranne 997dac9616 Imports and Contraband: Different! Cargo crates without locks! MEAT! (#74490)
## About The Pull Request

### **Cargo Black Market goods should stay in cargo's hands**

#### New Cargo Console Category: Imports

This category is explicitly the non-departmental category beyond simply
having a Misc category. It is meant for material that nobody is meant to
be buying for their departments, and mostly for the odd-ball crates that
might show up. It also allows us to maintain contraband as exactly that;
contraband that the departments shouldn't have access too whatsoever. If
someone is buying from this category, they probably intend to be a
cheeky fuck.

<details>
  <summary>The New Changes</summary>

#### Baseline Imports

MEAT: MEAT (meat backpack you can eat)

<details>
  <summary>MEAT</summary>
  
![MEAT
MEAT](https://user-images.githubusercontent.com/40847847/229593459-f3c98abe-114b-43c1-a3e2-afc16b76c84f.png)
![MEAT MEAT MEAT
MEAT](https://user-images.githubusercontent.com/40847847/229593473-07a30781-a05e-4ca5-893b-778900cd2d1c.png)

</details>

Duct Spiders: They're adorable and cause a mess, but that doesn't stop
Nanotrasen from importing them from the Australicus sector to your
station!

Stack of 50 Bamboo Cuttings: Pretty expensive and kind of a premium.
Allows for those people looking to make bamboo decorations without
hoping botany exists, and are at least willing to pay. Also lets them
make horribly dangerous stuff with bamboo, of course.

A Single Sheet of Bananium: The problems this will cause I think speak
for themselves. (mostly due to a clown fruitlessly attempting to make
something actually disruptive while bankrupting cargo)

Natural Fish Bait: It isn't cheating, it's homemade. (Really good bait
but expensive and obviously drugs)

A dumpster...: A corpse in a dumpster, doesn't get more complicated than
that. Useful for corpse reasons.

Made using some code I borrowed from over here!
https://github.com/lizardqueenlexi/orbstation/pull/354

#### Contraband Imports

Foam Force Pistols: Same as it ever was with a price reduction. I
brought it down because riot darts are like 8 bullets a clip, and do
less damage than a disabler using riot darts. It feels like a sidegrade
weapon, and even if it technically is a ballistic weapon, it...isn't
that strong. I think this is pretty safe.

Definitely Not a Duct Spider: It's actually a giant spider in a box. If
you want to waste cargo's money while also sending them a mess to deal
with, this is the crate for you.

Russian Surplus Military Gear Crate: I took this opportunity to futz
with boltaction rifles. There are two kinds of mosin nagant you can get
in this crate. One of them is the good kind (no jamming). The other is
the shit kind (yes jamming), but you get more of them. You can get the
good ammo, or you can get the shit ammo. You'll have to pick through it
a lot more carefully to make sure you know which ones you've received.
Since this dilutes the pool even further, getting a good number of
mosins that aren't trash is even more expensive, and even if you do get
mosins at all, you might still only get the bad ammunition that doesn't
work against actual human threats as well. It also now cannot be
purchased through the security cargo supply console, and as to why they
could in the first place baffles me. Doesn't have a lock anymore
because...it's contraband? Who is locking this stuff?

**Side note: _You can make surplus 7.62 in the autolathe as well. It is
not very good except to fight fauna or naked assistants._**

**Side Side note: _I've killed off the shitty brand_new subtype and
brought peace once more to this land._**

#### Illegal Imports (Emag)

NULL_ENTRY: A journal that suggests how to make a...very interesting
weapon. The Regal Condor. Kind of an evolution on some other ideas I've
had over the years. This one is basically a secret weapon with a few
hurdles to jump through. Very lethal. Very expensive.

**Side note: _For reference, it's effectively 19 TC worth of gear to
make, but there does exist some methods to acquire this more cheaply if
you can get some bits and pieces from world spawns. Given it requires
you to get some pieces of equipment that might require additional
purchases of contraband, and getting into the captain's office to loot a
specific piece of clothing, the stakes more than make up for the
effectiveness._**

Smuggled WT-550 Autorifle Crate: This is basically the same, but you
might have noticed had you recently attempted, like me, to buy these
when you emagged them using a personal account and discovered a tragic
oversight. You couldn't, because they still needed armory access. This
removes that access, because you've already gone to the effort of
getting your hands on an illicit firearm through cargo, and if they
techs somehow miss the fact that you've purchased a WT-550...all the
better for you!

Smuggled WT-550 Ammo Crate: Includes AP and Incendiary!

**Side note: _You can get WT-550 ammo again via the Illegal Technology
node._**

Shocktrooper: Replaces the Special Ops crate. Contains a box of EMPs,
smoke grenades, a couple of gluon grenades and a couple of frag
grenades. Funsies.

Special Ops: The NEW Special Ops crate. Contains a chameleon mask,
jumpsuit and agent card. And a knife.

**Side note: _This is what appears in some cargo loan events._**

Refurbished Mosin Nagant Crate: The actual good mosin nagants. There are
6 of them. But they don't come with spare ammo. Hand them out to your
techs!
</details>

#### New Crates

- MEAT crate - Standard
- Duct Spider crate - Standard
- Giant Hostile Spider crate - Contraband
- 50 sheets of Bamboo crate - Standard
- A single sheet of bananium crate - Standard
- Natural (drugs) fish bait - Standard
- Dumpster with a corpse in it - Standard
- Shocktrooper crate (Grenades) - Emag
- Special Ops crate (Disguise) - Emag - Appears in some cargo loan
events
- Refurbished Mosin Nagant crate - Emag
- Regal Condor construction journal (NULL_ENTRY) - Emag

#### Changed Crates

- Foam Force Pistols (cheaper) - Contraband
- Russian Surplus Crate (less reliable, can't be bought by security
console) - Contraband
- WT-550 crate (more obtainable via personal accounts, thus
incriminating, not armory locked) - Emag
- WT-550 ammo (includes incendiary and AP) - Emag

#### Crates that got moved, unchanged, into Imports

- Foam Force Crate 
- Cosa Nostra Crate 
- Black Market LTSRBT 
- 'Contraband' Crate 
- Biker Gang Crate

#### Not crate changes
- You can print Surplus 7.62 (same as normal 7.62 but it sucks against
armor) from hacked autolathes.
- You can get WT-550 ammo from illegal tech.
- Removes the redundant Brand New Mosin subtype
- Fixes a potential exploit with jamming chance on Mosins.

## Why It's Good For The Game

I just think some of the magic of Cargo getting their hands on obviously
dangerous equipment and either hording it for themselves or attempting
to pawn it off was lost in recent times. A lot of this 'black market'
gear, however, suddenly became openly available to the crew anyway. For
_free_. Contraband crates and mafia crates could be purchased via the
Service budget. Security could just stock up en masse on mosins through
their console. And one fairly unfortunate consequence of a few recent
changes has made it nearly impossible to actually get illicit gear in
the first place, even if you did go to the effort of getting the money
for it.

On top of this, most of cargo's goods are pretty safe purchases. There
isn't much that would be considered 'actually a really bad idea to buy'
other than maybe supermatter shards. I wouldn't mind there existing ways
for someone to waste cargo's money while also causing them to have to
clean up the mess.

## Changelog
🆑
balance: A significant overhaul of various illicit and dubiously legal
goods and gadgets available via cargo.
balance: Cargo now has an Import category for all non-departmental
goods. (And black market goods)
balance: Most contraband that already exists has been moved into
Imports.
adds: Includes several new imports of dubious quality. You get what you
pay for.
code: Removes the brand new mosin subtype as it is now defunct.
fix: Fixes potentially exploitative code in the jamming proc. Cleans up
that code while I'm at it.
/🆑

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
2023-04-08 18:35:10 +00:00
MrMelbert 6085e3b5ee Reagent soup / Soup rework / Stoves - A kitchen expansion (#74205)
## About The Pull Request


![image](https://user-images.githubusercontent.com/51863163/227391708-8de28b68-149f-4e02-a2d3-22f6e3067784.png)

**This PR:** 

- Reworks most* existing soup into reagents. 

- Adds Stoves and Ranges. Ranges replace most* existing ovens. 

- Adds soup pots, to cook soup

**How does it work?** 

In the kitchen you will find a stove now.

Stoves act as a "reagent container heater", essentially a chem heater.
You can set a pot onto the stove.

To make soup, visit the cooking recipe book for a guide. Most recipes
are the same as before, just tweaked slightly - Add water to the pot (50
units for 1 batch generally), then add all the corresponding ingredients
to the pot. Set the pot out on the stove and right click it to turn it
on. If the recipe's correct, shortly it will start to mix and give you
soup!

One soup recipe will give you roughly 3 servings of soup. You can pour
our the soup into a bowl using a ladle or just by pouring it manually.

Of note: **All of the reagent contents of the ingredient are transferred
into the soup.** Better, more nutrient rich ingredients produces more
soup, and poisoned produce will pass it on.

If you place the soup into a chem master, you will notice it's roughly
half "soup reagent" and half a variety of reagents, including nutriments
/ proteins. This is your soup! It is recommended you serve your soup
with the reagents included, as they make up more nutrition for the
customer, however you can separate it out if you're picky.

**Todo:** 

- [x] Fill out the PR body a bit more 
- [x] Mapping (wait for big merge conflict pr to go past)
- [x] Soup colors
- [x] Balance pass over for soup recipes
- [x] TODOs
- [ ] Unit tests
- [x] Cullen Skink's recipe is invalid
- [x] Try to see if there's an easy way to prevent soup from fattening
you up too easy.

## Why it's good for the game

Adds some more depth to the kitchen and moves chef away from the
click-button-get-food style that exists.

Allows for inherently custom soups by the way of making it reagents, so
no need to support custom soup food items.

## Changelog

🆑 Melbert, stove and pot sprites by Kryson, ladle sprite by Kinneb
add: Kitchens are now stocked with Ranges. 
add: You can now print (and create) Stoves. 
add: The dinnerware vendor now dispenses ladles. 
add: Spoons can now actually spoon... things.
add: Soup has been reworked entirely. Soups are now reagents, cooked via
a soup pot on a Stove or Range. Simply add water and your required
items, then apply heat. Be careful not to boil over!
add: Stoves, Ranges, and Griddles will now heat up their surroundings -
don't turn them on around plasma!
fix: Fixes being able to cook in an Oven while the room is depowered
qol: Hitting a customer bot with an incorrect recipe no longer counts as
a hostile attack leading to your demise shortly after
refactor: Customer bots that request a reagent now use custom orders
code: Cut down a lot of code in the crafting menu code, and removes some
ugly ispaths
del: Soup is no longer food items, so can't appear in random food pools
(at least not yet).
balance: Virus Food recipe now requires you cool it to 200k.
/🆑
2023-04-07 19:42:49 -06:00
Tom f4b5736283 Updates paper biscuits and the paper cutter (#74473)
## About The Pull Request

Well this started as a PR updating some of the spelling and grammar on
the biscuits... though spilled out a little into other aspects of the
relevant code.
There are a few things I've done here.

**Paper biscuits:**

- Updated spelling and grammar for paper biscuits. Confidental ->
confidential, that sort of thing.
- A little reorganisation and cleanup of the code itself. 
- Preset slips are now generated on init on the parent from a var,
rather than each having its own init proc.
- Early returns, clearer vars, etc


**Paper Cutters**
Ended up doing more here, even though it wasn't the original reason I
started looking at this code.

- Added one (1) paper cutter blade to the paper cutters cargo crate.
Raised the price a little. This is just a reskinned hatchet, so I don't
think it's much of a balance concern.
- Clarifies and docs vars
- Cleans up refs on destroy
- Many `to_chat`s to `balloon_alert`s
- Removed single-letter vars
- Cancelled attack chains when trying to actually use the cutter. You
now pick it up either by having the blade secured and no paper inside,
or by dragging it into your hand.

## Changelog
🆑
spellcheck: Paper biscuits now have more proper spelling and grammar
qol: You now get one spare paper cutter blade in the paper cutter cargo
crate.
tweak: You now use right click to cut paper with a paper cutter
fix: You can now remove paper from a paper cutter if you change your
mind.
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2023-04-04 01:50:41 +00:00
DrTuxedo bf37597c24 "Biscuit" cards, and also now slip papers are actually paper! (#74329)
## About The Pull Request
**This is not a literal biscuit which you eat. "Biscuit" is just a
nickname of this kind of snap-cards.**
Slip paper is now actually paper, before that, it was just literally
nothing, an object which does nothing. Because of that, the paper cutter
was useless as well, as it turned normal paper into useless paper slips.
Because of this now paper cutters are placed at:

- Bridge
- HoP office
- Warden office
- Cargo

Also adds biscuit cards. If you have no idea what it is, it's a kind of
card placed around a piece of paper usually to conceal some document and
it can be opened by cracking it with a crunchy sound (that's why it's
named a biscuit). Those are usually only opened in certain situations or
emergencies (The most famous example is the US president's nuclear
biscuit, which contains nuclear codes)

There are 2 biscuits: Normal and Confidential.
Normal is a plain biscuit with nothing really special, can be coloured
if you want as it's white.

![image](https://user-images.githubusercontent.com/42353186/229195802-4ac5ad96-6083-47dc-9ccd-13d132f690bf.png)

The confidential biscuit is blue and has "NT" on it.

![image](https://user-images.githubusercontent.com/42353186/229195753-207d64f1-1f17-418e-a01a-8bfa2c4abc51.png)

There is a not-sealed biscuit you can print in autolathe, it starts open
so you can put paper in and seal later making it a normal crackable one.

Now spare ID safe code automatically spawns in a confidential biscuit in
a new paper slip subtype - corporate slip paper. It's a plastic card
which is sturdier than the normal paper clip.

![image](https://user-images.githubusercontent.com/42353186/229195696-07075f78-c736-43a9-bd14-5cf9ca36ddc9.png)

You can also create the corporate paper slip paper using - normal paper
slip, plastic, and captain rubber stamp (making this paper having a rare
status)


![image](https://user-images.githubusercontent.com/42353186/229195599-75807483-02f9-44cb-ae24-d3388b509ccd.png)

![image](https://user-images.githubusercontent.com/42353186/229195610-5a264ed4-8b04-4452-9032-5755e2419423.png)


## Why It's Good For The Game
Paper slips being not paper is stupid and has no point in being that
way. This also made the paper cutter useless; hence, it was never placed
on any map (and never used).
This PR makes it paper, so it's usable when crew members need a paper
slip instead of a full-size sheet.

Placing paper cutters around the station makes it so the crew can
produce paper slips when they need them, this also gives it finally a
use and place on the station.

The 'biscuits' are cool and give more flavour to the spare ID safe
codes, as well as to other documents people might put in future PRs.
This also makes those paranoid captains which are scared of their spare
ID safe code being stolen and read can sleep tight, as now if someone
opens it up it's really obvious. Now also you can really make sure if
that head is lying about "not touching the spare ID", _but not as anyone
cares really._

**Okay, it's draft for now just so I can add some new things, and fix
the dupe bug:**

- [x] Being able to fax the paper biscuits
- [x] Make it impossible to cut paper slips into paper slips
- [x] Make corporate paper slips craftable or printable
- [x] Make confidential biscuits craftable or printable
- [x] Make paper cutters orderable at the cargo

_CRUNCH_
## Changelog
🆑 DrDiasyl aka DrTuxedo#0931
add: Added 'biscuit' cards! They can contain documents and can only be
accessed by cracking them open, you can't close them back. Nanotrasen
now stores spare ID safe codes in them.
add: Placed paper cutters around the station. They're in Bridge, HoP
office, Warden office, and Cargo.
add: Now you can order paper cutters at cargo.
fix: Now the paper slip is actually paper.
imageadd: The paper slips sprite was slightly tweaked to have text lay
more logically, added the corporate paper slip.
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2023-03-31 22:27:26 -06:00
san7890 ccef887efe Lints Against Unmanaged Local Defines (#74333)
# MAINTAINER - USE THE BUTTON THAT SAYS "MERGE MASTER" THEN SET THE PR
TO AUTO-MERGE! IT'S MUCH EASIER FOR ME TO FIX THINGS BEFORE THEY SKEW
RATHER THAN AFTER THE FACT.

## About The Pull Request

Hey there,

This took a while to do, but here's the gist:

Python file now regexes every file in `/code` except for those that have
some valid reason to be tacking on more global defines. Some of those
reasons are simply just that I don't have the time right now (doing what
you see in this PR took a few hours) to refactor and parse what should
belong and what should be thrown out. For the time being though, this PR
will at least _halt_ people making the mistake of not `#undef`ing any
files they `#define` "locally", or within the scope of a file.

Most people forget to do this and this leads to a lot of mess later on
due to how many variables can be unmanaged on the global level. I've
made this mistake, you've made this mistake, it's a common thing. Let's
automatically check for it so it can be fixed no-stress.

Scenarios this PR corrects:

* Forgetting to undef a define but undeffing others.
* Not undeffing any defines in your file.
* Earmarking a define as a "file local" define, but not defining it.
* Having a define be a "file local" define, but having it be used
elsewhere.
* Having a "local" define not even be in the file that it only shows up
in.
* Having a completely unused define*

(* I kept some of these because they seemed important... Others were
junked.)
## Why It's Good For The Game

If you wanna use it across multiple files, no reason to not make it a
global define (maybe there's a few reasons but let's assume that this is
the 95% case).

Let me know if you don't like how I re-arranged some of the defines and
how you'd rather see it be implemented, and I'd be happy to do that.
This was mostly just "eh does it need it or not" sorta stuff.

I used a pretty cool way to detect if we should use the standardized
GitHub "error" output, you can see the results of that here
https://github.com/san7890/bruhstation/actions/runs/4549766579/jobs/8022186846#step:7:792
## Changelog
Nothing that really concerns players.

(I fixed up all this stuff using vscode, no regexes beyond what you see
in the python script. sorry downstreams)
2023-03-29 10:17:03 -07:00
John Willard 302060acda Removes bepis Techweb and reworks tech disks in general (#74147)
## About The Pull Request

Did you know that there's 2 types of disks Science can print?
One of them creates a whole new techweb and is used to transfer data to
and from techwebs (which used to be for Theft objective, but nowadays
all it's used for is Admin techweb).
The other one is these disks you can find from Lavaland & for the
Limbgrower which holds nodes on them directly, they don't need anything
else.

These are both printable and have very similar names which could easily
confuse people, especially since they are both printed and used at the
same place, being the R&D room and R&D console.

This will hopefully simplify it, by removing the base Tech disks from
being printable. The only one that can be printed now is for
Limbgrowers, which can't be easily mixed with the other type of Disk.
Outside of that, Lavaland disks are staying the same, but I've moved
Bepis disks to use this, which allows us to remove Bepis techwebs being
made every single time a new bepis disk is created.

Examples of it in-game

![image](https://user-images.githubusercontent.com/53777086/226496444-28b17134-526d-4fc8-969b-952f7afdc36f.png)

![image](https://user-images.githubusercontent.com/53777086/226496483-86969bf9-56db-4824-a495-594afd9f3912.png)

![image](https://user-images.githubusercontent.com/53777086/226496498-7c10f636-5588-4622-934c-11f019079d2e.png)

## Why It's Good For The Game

There's no reason why every single Bepis node should be making a whole
new techweb set with experiments to complete, roundstart nodes
researched, being constantly checked if it should gain research points,
have a list of papers to publish, and everything else that techwebs do.

Can you guess which disk does what in this screenshot?

![image](https://user-images.githubusercontent.com/53777086/226496856-10cf71b0-7469-4568-818f-ecadcf03e677.png)

## Changelog

🆑
balance: You can no longer print Technology data disks. You can still
print Tech disks, which hold techweb information on it, just not the one
that holds up to 5 nodes.
balance: ^ Because of this, there's no way to download nodes from an RD
console and upload them to an Autolathe to bypass departmental
restrictions, you have to go through a Techfab/Circuit imprinter for
your needs.
balance: Ones that are found cannot have anything uploaded/deleted off
of them either, you can only upload them to the Web.
code: Every individual Bepis disk no longer create an entire techweb
/🆑
2023-03-26 18:23:03 -04:00
Jacquerel 0fe4dea03f Audits usage of isanimal() vs isanimal_or_basic_mob() (#74029)
## About The Pull Request

There's a couple of open issues which fix places where only simple
animals were considered, but they are doing it piecemeal.
I decided to just go through every instance of `isanimal` or
`subtypesof(mob/living/simple_animal)` I could find, identify which
should also affect basic mobs, and fix them.

I left out the two others which are already in PR, I'm not stealing your
GBP.

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

## Why It's Good For The Game

Consistency, mostly. 
As far as I can tell all of these things _should_ have effected basic
mobs, but didn't.
This fixes a fair number of bugs but also they're bugs that nobody
noticed or reported.

There are a couple of places I did not update which will need updating
in future. These are:
- Dextrousness checks, because basic mobs don't have that yet.
- The Charge cooldown action, because frankly I couldn't tell what it
was trying to do.

alright here goes

## Changelog

🆑
fix: Carp will once again be healed from being near carp rifts
fix: Sepia slime cores and the rewind camera now work on Ian
fix: Sapient ridden carp (or cows) can throw off their riders by shoving
them, or by performing the spin emote.
fix: Giant Spider AI will be disabled by the timestop spell
fix: Ian can eat envirochow
fix: Mice, Frogs, and Cockroaches will no longer set off bear traps
fix: You can put a macrobomb implant into Cayenne (or Ian)
fix: Ian will now recognise that being squeezed by a cyborg is a nice
hug
fix: The player panel will tell admins if you're currently a corgi
fix: The staff of storms deals massive damage to Bileworms and Giant
Spiders
fix: Ian will whimper if forced to scream
fix: Slimes can consume space carp
fix: Mice can be captured in xenoballs
fix: You can use pacifying potions on Giant Spiders
fix: Sgt Araneus can be fitted with a xenobiological radio implant
fix: Sapient corgis no longer count as living players for the purpose of
highlander escape objectives
fix: The random sentience event can now target corgis and sergeant
araneus
add: The random sentience event can target a wider array of farm animals
fix: Petsplosion wizard event can target corgis
add: Petsplosion wizard event will now target farm animals and
mothroaches
fix: The colossus possession crystal can now actually possess the
cockroach it spawns, does not kill you instantly upon ending possession
/🆑
2023-03-17 13:47:07 -06:00
Zephyr 571a443b46 Stabilized Orange can no longer cool you infinitely fast (#74027)
## About The Pull Request

Closes https://github.com/tgstation/tgstation/issues/73923
### Mapping March
Ckey to receive rewards: N/A

## Why It's Good For The Game
## Changelog
🆑
fix: Stabilized Orange extracts are no longer able to cool you from any
temperature instantly
/🆑
2023-03-16 17:09:16 -06:00
jimmyl 97073e65ce Stabilized gold extracts can now summon basicmobs (#74020)
## About The Pull Request

Stabilized gold extracts can now summon basicmobs,
Also, summoned familiars become friendly to the owner, which stops stuff
like mice running away.

## Why It's Good For The Game

They can now make cool basicmob carp and stuff
Fixes #74008

## Changelog

🆑
fix: Stabilized gold extracts can now spawn basicmobs
/🆑
2023-03-16 17:01:51 -06:00
SyncIt21 8115310c6f More stuff to construct & destroy (#73942)
## About The Pull Request
**1. Suit Storage Units**
- What about them?

1. You can print "suit storage unit" circuit boards from engineering &
science circuit printer's after research to make more suit storage
units, now since they behave like regular constructable machines you can
deconstruct them via screwdriver & crowbar.
   2.  You can upgrade its capacitor to get faster charging speeds

- Why its good for the game?
   1. You can rebuild these in the event they get destroyed
   2. Better tier capacitors = faster charging speeds
3. More storage units = More places to decontaminate your equipment +
Recharge more mod suits made in robotics
4. If you decide to leave the game or your done using a mod suit e.g. a
mining mod suit rather than keeping it to yourself or throwing it away,
just build a suit storage unit and hang it there so other players can
use it i.e., sharing is caring.
  
**2. Freezer Cabinet**
- What about them?
 1. They are now craftable
       
![Screenshot
(133)](https://user-images.githubusercontent.com/110812394/224561037-5461be22-e651-4d72-8afc-f797bb7d8a47.png)

  3. You can deconstruct them with a welding tool.
   
- Why its good for the game?
  1. You can now make more of them if they get stolen/destroyed
  2. More places to store food, dead bodies, whatever

**3. Flood Lights**
- What about them?
They can now be fully deconstructed in the exact opposite sequence you
constructed them.
  - First use screwdriver to open its panel
  - Then use empty hand to remove light
  - Then use screwdriver to unscrew the wiring from frame
  - Use wire cutter to remove wiring completely
  - Finally use wrench to completely deconstruct frame
 
- Why it's good for the game?
Reclaim used material to build flood light else where . Also much more
clean than what the wiki is suggesting.
  
![Screenshot
(134)](https://user-images.githubusercontent.com/110812394/224561553-f44a97f3-ac70-49e7-892f-1a05e2323ecb.png)

  ## Changelog
🆑
add: suit storage unit circuit boards to engineering & science
department circuit printers.
add: freezer cabinet as a craftable & destructible item.
qol: flood light can now be deconstructed rather than destroyed/thrown
away.
/🆑

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
2023-03-16 01:31:09 -07:00
MrMelbert 48ff6a6e65 Fixes Ice Slipping, Refactors noslip mechanics, Allows magboots to prevent slip slides (but not the slip itself) (#73948)
## About The Pull Request

Code changes: 

- Fixes #73946 , Ice Slipping not going forever as intended
- Detailed in the issue report. Ice slide slip was replaced from a stun
to a knockdown, but it relied on it being a stun to function. I replaced
it back with an immobilize and incapacitate, reduced to 1 second to
prevent cheese.

- Refactors noslip mechanics
- Changes noslip and noslip_ice from a clothing flag to a clothing
trait, as the trait already existed and was used by MODsuits. Also added
noslip_slide, which prevents all sliding from slips like lube.

- Refactors magboots
- Refactored and modernized magboot code. Mostly cleanup, like using
base icon state, updating appearance, etc.

- Fixes speed potioned magboots not maintaining the speed boost after a
toggle

- Adds a helper for adding or removing clothing traits from existing,
(potentially) worn items.

- `TRAIT_NEGATE_GRAVITY` now always updates gravity on signal, no longer
requiring a manual call after.

Balance change: 

- Magboots now prevent sliding on permafrost (outside icebox).  
   - This is mainly to give them more of a purpose on Icebox. 
- Magboot snow prevent sliding on ice (or lube). You will still slip. 
- Slipping over ice or lube will knock you down as before, but will not
send you across the room.
   - See https://tgstation13.org/phpBB/viewtopic.php?t=33217. 

## Why It's Good For The Game

Magboots justification: 

This makes Magboots much less of a "noob trab" for engineers
fire-fighting in the Supermatter room. Most engineers believe themselves
to be completely save to the Supermatter's pull with magboots, however
"wet ice" will still send you flying into the crystal.

I think it is an inconsistency, seeing as it protects you from other
forms of forced movement like gravitational pulls. However making them
pure no-slip seemed a bit too far to me, so the knockdown still occurs.

## Changelog

🆑 Melbert
balance: Magboots will now protect you from sliding on ice. It will not
stop the slip, though.
fix: "Ice sliding" (from patches of permafrost ice) will now correctly
slide you until you reach a non-ice patch.
fix: Speed potioned magboots maintain their speed booster after toggling
them
refactor: Refactored magboots. 
refactor: Refactored noslip mechanics. 
/🆑
2023-03-14 18:51:34 -06:00
LemonInTheDark 33d9a0338f Reworks trashbags slightly (#73761)
## About The Pull Request

I'm a bit sad about the state of trashbags. 
They're very clunky to use, so they almost never get touched. S
depressing. Let's try and fix that.

Let's make em fit in the belt slot (again), but as a tradeoff we'll make
it harder to pull one thing from your bag.
We'll give it a say, 1.5 second delay, so you can't quickdraw from em.
If you try and dump them out into something else, we'll throw any
spillover on the ground below you

I'm also doing some general code cleanup here. Making procs more
readable, vars more direct, removing some old legacy stuff.
I've added a remove_single proc to hook into via subtype, which takes a
mob as input. this has required placing extra requirement on some helper
procs, but fortunately it's not something they're unable to meet.

My hope is this will make garbage bags usable without being stupid.

## Why It's Good For The Game

I don't see these get used at all, cause they're a pain to carry around.
They got gimped because people were using them as infinite storage for
shotgun shells and other small items.
I've made using them for this sort of thing hard and slow, so I think we
oughta be fine. If not I'll do some more touching, maybe give the
autodrop a delay.

## Changelog
🆑
balance: The janitor's trashbag now fits on his belt. In exchange,
taking something out of it sends a visible message, and has a delay.
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2023-03-14 16:39:24 -06:00
GuillaumePrata 773b7117bf [NO GBP]Bolter wrench's design is correctly at advanced engineering now. (#73958)
## About The Pull Request
It was at janitorial because I'm pretty good at ctrl+C/V
## Why It's Good For The Game
The engineering tool is at the engineering tab now.
## Changelog
🆑 Guillaume Prata
fix: Bolter wrench's protolathe design is correctly at the advanced
engineering tab now, instead of being under janitorial.
/🆑
2023-03-13 22:55:19 -06:00
MrMelbert d755b70d76 Removes bad nodamage var from projectiles, fixes Juggernaut / Rust Walker projectiles doing zero damage (#73806)
## About The Pull Request

- Juggernaut and Rust Walker projectiles were subtyped off of magic,
which is `nodamage`.

- The juggernaut actually had a copy+paste error with their type
`on_hit` which caused none of their special effects on hit ("relative
patching catches this")

- Then I realized projectiles have this var `nodamage` which is, for all
intents and purposes, just `damage > 0`. it's not checked for pacifism,
it's just that. This is dumb. So very dumb, so I removed it.
- There are, however, a few situations which used it in a unique way,
such as the blast wave cannon. This is why I replaced it with a proc,
`is_hostile_projectile`, for certain situations to actually find out if
the projectile is damaging. Projectiles can override this on a per type
basis by default, damaging projectiles = hostile.
- This has a chance to break some things, but I ... kinda doubt it will.

Fixes #73756

## Why It's Good For The Game

Projectiles that act as they should, less dumb vars

## Changelog

🆑 Melbert
fix: Fixes Juggernaut / Rust Walker projectiles doing zero damage
fix: Fixes Juggernaut projectiles not doing bonus damage to nearby
structures
code: Removed projectile nodamage var, replaces it with just checking
for damage
/🆑
2023-03-10 17:51:31 -07:00
MrMelbert 296c996434 Completing experiments after their associated nodes have been researched gives back a partial refund of the discount lost (#73814)
## About The Pull Request

So we're like simultaneously moving two vague directions with research.
One being "experisci grants discounts for prohibitively expensive nodes
so you want to do the experiments to discount them" and the other being
"Let's give Heads of Staff a way to research anything they want without
any communication to the research department, including the very
expensive nodes that scientists may be working on"

You already see the issue, right? You can't have your cake and eat it
too.

It sucks for scientists to be working on a complex experiment like
weapons tech for that huge 90% discount only for the HoS to stumble onto
the bridge and research it anyways. Your time is wasted and RND is
slowed down massively.

We can do something to assuage that.

This PR makes it so completing an experiment which discounts already
completed nodes will refund a partial amount of the discount that
would've applied.

For example, researching industrial engineering without scanning the
iron toilets will refund ~5000 points.

This can only apply once per experiment, so if an experiment discounts
multiple technologies, they will only get a refund based on the first
technology researched.

## Why It's Good For The Game

This accomplishes the following: 

- Expensive research nodes with difficult experiments remain expensive
without completing the experiments. If no one does the experiment, they
act the same as before.
- Expensive research nodes with very easy experiments (but time
consuming) no longer put RND on a time crunch to beat the itchy trigger
finger of the Heads of Staff. Stuff like scanning lathes allow the
scientists to work more at their own pace: they can talk to people or
maybe stop at the bar or kitchen between departments without feeling
pressure to get it done urgently.
- Scientists are able to complete experiments which previously were no
longer deemed relevant if they need a point injection. Experiments left
behind are no longer completely useless bricks. Maybe even gives
latejoin scientists something to do.
- Scientists mid experiment can still complete it to not feel like their
time is wasted.

Overall I think this has many benefits to the current science system
where many have complaints.

## Changelog

🆑 Melbert
qol: Completing an experiment which discounts a researched tech node
will give a partial refund of the discount lost. For example,
researching the industrial engineering research without scanning iron
toilets will refund ~5000 points if you complete it afterwards. This
only applies once per experiment, so experiments which discount multiple
nodes only refund the first researched.
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2023-03-09 00:11:50 -07:00
Jacquerel 893c5880b2 Stabilised Slime Extracts will work from inside MODsuits (#73683)
## About The Pull Request

Fixes #50793 
Fixes #55155 
Fixes #69682

Which actually seemed to work fine except if you were using a mining
MODsuit.
Except that it didn't apply to basic mobs, like bileworms or stick
figures.
I noticed that it was actually pretty hard to tell whether or not the
buff was active in the first place, which might be the real reason for a
bug report... or maybe it literally just didn't work and someone else
fixed it in the past two years. Who can say.

Either way, I did some tidying up here because the order of operations
was a bit messy, and these extracts did not work from inside MODsuits.
As far as I can tell the intended behaviour is that they should be
active from inside hands, pockets, backpacks, boxes in hands, chest
implant, or modsuit storage but not from inside boxes inside backpacks.
So generally, it can be one layer of abstraction away from your body,
but MODsuits were failing on that because technically they're in a suit
which is on your body.

The logic previoulsy added to figure out whether you were in a modsuit
seemed sort of overcomplicated and also didn't work.
I simplified it by just making a snowflake check for modsuits which
overrides the other simplified check to see if you're two levels away
from the mob.
Also the same proc was rewritten in two places which might be why it
didn't work, both places now use the same proc.

I _tried_ to update this to use signals instead of checking every tick,
but the fact that you could put it in a box and then move the _box_ made
it too complicated. It's just less bug-prone to make it check its
location every tick, even if it does make me sad.

Finally I added a balloon alert for when the effect _stops_ applying, so
you can tell why goliaths are suddenly mad at you and not post a bug
report.

## Why It's Good For The Game

Item will now work as expected and give you feedback when it doesn't.
Should be easier to track when effect is and isn't active.

## Changelog

🆑
fix: Stabilized slime extracts will now once again work from inside
modsuit storage.
fix; Stabilized slime extracts will properly effect carp, spiders,
bileworms, and other "basic mobs".
/🆑
2023-03-01 15:27:49 -07:00
Profakos 50b37c8c7f Faction defines (#73681)
## About The Pull Request

Quite a lot of mobs had faction defines as a string, which always has a
chance for error. For example, the clown mob spawner had their faction
written as "clown", when the official faction name was "clowns", and a
define existed for it anyways! This PR moves every single string based
factions over here. No references or special role factions. Hopefully I
didn't miss anything.

I also moved a global define used for picking your uplink provider's
flavour to the only file that used it, datum_traitor.dm, and renamed
them a bit to avoid confusion.

I have also noticed that the mimic faction was assigned to the petrified
player with += instead of |=. |= would ensure no duplicate factions, so
I have changed it.

Future improvement:
I have noticed that there is a lot of bloat with factions that contain
only one or two entries (examples: gnomes, floating eyeballs, penguins,
the pet lizards), and some always appear in pairs (vines and plants, the
rare exceptions being killer tomatoes and strange reagent spawned pine
trees), but trimming consolidating them is a matter for a different
time.

## Why It's Good For The Game

Makes assigning factions a bit less error prone.

I can finally remove the ```/// Later all mob factions will be moved
here and their current factions replaced with faction defines.```
comment. Later is NOW.

## Changelog
Nothing player facing
2023-02-28 16:44:08 -07:00
NamelessFairy 27388a8aee A worn item which has its color changed (such as by a slime potion) with now have its color change reflected on mobs. (#73627)
## About The Pull Request

If I'm wearing an outfit and use a slime fireproof potion on it at
present it wont become blue until taking it off and putting it back on
again, this PR makes it so it changes immediately. Also means if an
admin VVs the color value of a worn item its icon worn color will update
to reflect this change immediately.
## Why It's Good For The Game

Bugfix!
## Changelog
🆑
fix: Any worn item that has its color changed will now have its color
change reflected on the item's worn icon immediately.
/🆑
2023-02-25 23:29:44 -07:00
MrMelbert e5b6732d3b Fixes overloading and deconstructing of the master RND server not affecting research rate (#73569)
## About The Pull Request

Only a traitor removing the HDD would affect the income modifier of the
stored research web.

Updated it so `on_deconstruction` with an HDD present or a ninja
overloading with an HDD preset will also negatively affect the income
modifier.

## Why It's Good For The Game

Fixes #73338 

Round impact!

## Changelog

🆑 Melbert
fix: Deconstructing (or overloading) the Master RND server with an HDD
preset will correctly half research rate
/🆑
2023-02-21 22:10:16 -07:00
John Willard dc8db27fa4 Fixes NtosNet Downloader & App themes (#73500)
## About The Pull Request

NtOS' downloading app is the only application where PC device theme is
actually used by the app directly, instead of handled by NtOS Window. I
forgot about this, and removed it from the data, breaking the TGUI page.

Also two edits;
- NtosWindow now takes their theme directly from PC_device_theme, this
means we're not relying anymore on apps to individually give the theme
they want to have, and tablets will get alerts of downloading illegal
programs if they are on any theme but the syndicate one (instead of not
getting the message if theyre on any but the nt one).
- Removes bad uses of ``as anything`` on stored files, because it holds
more than just programs (like ordnance data).

## Why It's Good For The Game

the NtOS app now works again, sorry for the issue.

Closes https://github.com/tgstation/tgstation/issues/73493
Closes https://github.com/tgstation/tgstation/issues/73507

## Changelog

🆑
fix: NtOS program downloader now works again, and will now properly
alert you of downloading illegal ROMs if you change your theme to
anything that isn't Syndicate.
fix: NtOS themes are now recognized by all windows.
/🆑
2023-02-18 22:50:40 -07:00
Tim a1ada2c9ef Refactor, improve, and rename canUseTopic to be can_perform_action (#73434)
This builds on what #69790 did and improved the code even further.
Notable things:
- `Topic()` is a deprecated proc in our codebase (replaced with
Javascript tgui) so it makes sense to rename `canUseTopic` to
`can_perform_action` which is more straightforward in what it does.
- Positional and named arguments have been converted into a easier to
use `action_bitflag`
- The bitflags adds some new checks you can use like: `NEED_GRAVITY |
NEED_LITERACY | NEED_LIGHT` when you want to perform an action.
- Redundant, duplicate, or dead code has been removed.
- Fixes several runtimes where `canUseTopic` was being called without a
proper target (IV drips, gibber, food processor)
- Better documentation for the proc and bitflags with examples
2023-02-16 20:22:14 -05:00
John Willard c58cbb4dfb Reworked PDA menu & NtOS themes (#73070)
## About The Pull Request

This is a port/rework of
https://github.com/yogstation13/Yogstation/pull/15735 - I changed a lot
of how it acted (some themes are locked behind maintenance apps).

The original author allowed this port to happen, and I really liked how
it looked there so I'd like to add it here.

### Applications

Removes the hardware configurator application, as all it did was show
you your space and battery now that all hardware was removed. These are
things your PC does by default, so it was just a waste of space.
Adds a Theme manager application instead, which allows you to change
your PDA's theme at will.
Adds a new Maintenance application that will give a new theme, however
it will also increase the size of the theme manager app itself as it's
bloatware.

### Menu

There's now a bar at the top of the menu showing 'special' tablet apps
which, for one reason or another, should stand out from the rest of the
apps. Currently this is PDA messenger and the Theme manager

Flashlight and Flashlight color is now only an icon, and is shown on the
same line as Updating you ID


https://cdn.discordapp.com/attachments/961874788706574386/1069621173693972551/2023-01-30_09-10-52.mov


![image](https://user-images.githubusercontent.com/53777086/215501361-5ea3086e-2ff5-4ab1-bde4-8a3d14014fce.png)

### Themes

Adds a lot of themes to choose from, although SOME are hidden behind
Maintenance applications, which will give you a random theme. These are
bloatware however, so they come with some extra cost to the app's
required space storage.

Themes are now supported on ALL APPLICATIONS! If you have a computer
theme, you will have that theme in EVERY app you enter, rather than just
a select few.
ALSO also, emagging the tablet will automatically set & unlock the
Syndicate theme, which makes your PDA obvious but you can disguise it if
you wish through just re-painting it to something else.


https://cdn.discordapp.com/attachments/828923843829432340/1069565383155122266/2023-01-30_05-29-53.mov

### Preferences

This also adds a pref for theme, reworking the ringtone code to work
with it as well. I also removed 2 entirely unused PDA prefs just 'cause.

Screenshot not up-to-date, they now have proper names.

![image](https://user-images.githubusercontent.com/53777086/215463669-0fe9951a-71f8-4b71-a97d-b79b5a2f945a.png)

### Other stuff

Made defines for device_themes
Added support for special app-side checks to download files
Fixed programs downloading themselves TWICE because defines all had the
same definition
Removes the Chemistry computer disk as it was empty due to chemistry
app's removal
Removes the 'run_emag' proc, since apps can directly refer to the
computer to check for emag status instead.
Moved over and added better documentation on data computer files, and
moved the ordnance ones to the same file as the others.

## Why It's Good For The Game

It makes PDAs a lot more customizable while adding more features to
maintenance applications. I think the themes look cool and it fits with
PDAs being "personal" anyways.

I also explained most of my other arguments in the about section, such
as the hardware configuration application.

## Changelog

🆑 Chubbygummibear & JohnFulpWillard
add: A ton of new NtOS themes, which are accessible by the new Themify
application that comes with all PCs.
add: Emagging a PC now defaults it to the Syndicate option (and adds it
to go back to it if you wish)
add: There's a new maintenance app that gives you rarer themes
qol: The NtOS Main menu was moved around, added "header" applications
that are shown where the Flashlight is, such as your Theme manager and
PDA messenger.
code: Made defines for device_themes
code: Added support for special app-side checks to download files
code: Removes the 'run_emag' proc, since apps can directly refer to the
computer to check for emag status instead.
fix: Programs no longer download twice.
del: Removes the Chemistry computer disk as it was empty due to
chemistry app's removal
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2023-02-17 01:14:24 +00:00
Rhials 42d929a100 Adds the Ectoplasmic Outburst, a rare ghost-centric anomaly event (#73024)
## About The Pull Request

This PR description might be a bit rushed because I accidentally
submitted the PR and want to bang out a quick explanation of what this
is before people start asking questions.

Adds a new, rare, ghost-themed anomaly event -- The Ectoplasmic
Outburst.


![Animation](https://user-images.githubusercontent.com/28870487/215292488-cc5ce589-39be-490d-bd80-92a2ed6e948b.gif)

This event increases in power as more ghosts orbit it, with three
important thresholds to meet.

If 10% or more of all active observers are orbiting the anomaly, an
effect will occur in the nearby area akin to the revenant's defile
spell, damaging flooring, windows, and making a mess.

If 35% or more are orbiting the anomaly, nearby objects in the effect
radius have a chance to become haunted, and will fling themselves at
anyone nearby for a bit. Spooky!

Now, at 50% or more participation, things get serious. Ghosts orbiting
the anomaly will be polled to be brought back into the world for a brief
period as a vengeful spirit, anchored to a SUPER spooky ghost portal.
The portal closes after two minutes (alternatively, smash it with a
toolbox) and deletes all of the ghosts it spawned. Vengeful spirits are
mostly just meant to smash stuff and be a nuisance while they can. It's
a wonderful opportunity to let deadchat desalinate a little.

![spooky
ghosts](https://user-images.githubusercontent.com/28870487/215293550-f7bbede2-cfa0-49b1-87fe-f38ee45d1df8.gif)

Oh, also, the anomaly is deadchat controlled. With enough ghosts, you
could theoretically outrun anyone trying to neutralize it!

The associated reactive armor has an effect similar to the anomaly,
haunting nearby objects for a time when the wearer is struck. Not
particularly outstanding, but it can introduce an element of chaos into
a fight that your opponent might not expect.

## Why It's Good For The Game

Anomaly events are great for ghosts. Why not make one tailored just for
them!

Gives admins something to spawn when a wizard has killed half of the
crew but it's not quiiiite time for an ERT.

It's a bit of a silly event with a novelty reward, but I think it's rare
enough not to be a huge issue.

## Changelog

🆑 Rhials
add: Ectoplasmic Outburst anomaly event
add: Reactive Ectoplasm Armor
/🆑
2023-02-11 19:11:20 -07:00
Comxy 7e41cd3c0b Netherworld Mobs Refractor (#73086)
## About The Pull Request

This PR refactors netherworld mobs into basic mobs as best as possible.
Also makes some of them run faster when they are getting damaged or deal
more damage. Now the mobs might be able to keep up a little with the
players.
## Why It's Good For The Game

Makes the mobs have better movement and more dynamic movement. Makes the
quality of these mobs better.
## Changelog
🆑
add: Added new damage buffs for netherworld mobs
refactor: Refactors netherworld mobs into basic mobs
/🆑
2023-02-05 12:42:07 -07:00