486 Commits

Author SHA1 Message Date
Jeremiah 7cb5738fcb Adds a modular bitrunning map, changes safehouse spawns (#79937)
## About The Pull Request
Primarily, this adds one new map to bitrunning that uses modular rooms.

<details>
<summary>pictures</summary>


![image](https://github.com/tgstation/tgstation/assets/42397676/48d78e05-1134-477c-a269-a4b71064058b)

![Screenshot 2023-11-25
133937](https://github.com/tgstation/tgstation/assets/42397676/851d6235-e939-465c-92e5-830886d50d9c)


![image](https://github.com/tgstation/tgstation/assets/42397676/6094dae6-fc3b-4cc4-9fd5-d7dd6d944cee)

</details>

I also added in some changes:
- Safehouses are now loaded using the modular map system rather than the
bespoke solution qservers had.
- Lowers the difficulty of psyker shuffle (which I felt was a little too
nightmarish) and boosts its rewards.
## Why It's Good For The Game
New maps
More integration with prior systems
## Changelog
🆑
add: Added a new modular bitrunning domain - Starfront Saloon.
balance: Psyker shuffle domain was made slightly easier and has been
given more rewards.
/🆑
2023-12-01 01:06:21 +01:00
SkyratBot 3d074e7ede [MIRROR] Standing on structures such as crates, tables and bed will now look like it. [MDB IGNORE] (#25324)
* Standing on structures such as crates, tables and bed will now look like it.

* Update deployable.dm

* Makes this modular

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-11-28 19:37:33 -05:00
Ghom 837ddf7d00 Standing on structures such as crates, tables and bed will now look like it. (#79797)
## About The Pull Request
From the creator of 'cosmetic' elements such as footstep_override and
immerse...

I've made an element called elevation that nudges mobs a few pixels up
while standing on things like tables, crates and beds.

Screenshots of many clones of the same character standing on different
objects:
![the clone
army](https://github.com/tgstation/tgstation/assets/42542238/43ecdc25-f0d2-47fd-96dc-acafcf63483c)

## Why It's Good For The Game
It makes it look like the mob is actually standing on an elevated
surface.

## Changelog

🆑
add: Standing on structures such as crates, tables and bed will now look
like it.
/🆑
2023-11-28 15:44:54 -07:00
SkyratBot 558c466b81 [MIRROR] Splits placeontop proc [MDB IGNORE] (#25103)
* Splits placeontop proc (#79702)

## About The Pull Request
I find the proc hard to read honestly. There's no reason we can't split
this into two functions - the secondary functionality is used only once,
in reader.dmm.
## Why It's Good For The Game
Code improvement
Glorious snake case
## Changelog
N/A nothing player facing

---------

Co-authored-by: san7890 <34697715+san7890@ users.noreply.github.com>

* Splits placeontop proc

* Update brass_spreader.dm

---------

Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: san7890 <34697715+san7890@ users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-11-19 10:28:18 -05:00
Jeremiah 7a1b1fa9ad Splits placeontop proc (#79702)
## About The Pull Request
I find the proc hard to read honestly. There's no reason we can't split
this into two functions - the secondary functionality is used only once,
in reader.dmm.
## Why It's Good For The Game
Code improvement
Glorious snake case
## Changelog
N/A nothing player facing

---------

Co-authored-by: san7890 <34697715+san7890@users.noreply.github.com>
2023-11-19 04:58:31 +01:00
SkyratBot 5586c7984c [MIRROR] Adds generic modular rooms [MDB IGNORE] (#24962)
* Adds generic modular rooms (#79419)

## About The Pull Request
Atomized portion of the bitrunning content patch #78997. Anyone can use
these, they are not bitrunning specific. Comes with a few biomes in
sizes 7x7, 9x9, 11x11

<details>
<summary>images</summary>

![Screenshot 2023-10-30
192227](https://github.com/tgstation/tgstation/assets/42397676/9f04a701-4ead-490d-b88a-ed1c9715a35a)

![Screenshot 2023-10-30
192238](https://github.com/tgstation/tgstation/assets/42397676/a0726152-23df-4e7e-822e-4ff3d7b542c4)

![Screenshot 2023-10-30
192248](https://github.com/tgstation/tgstation/assets/42397676/39e505e6-cb02-44a9-a195-0c67b892537f)

![Screenshot 2023-10-30
192257](https://github.com/tgstation/tgstation/assets/42397676/12aacbc0-15cf-430b-82a9-f8702a991610)

![Screenshot 2023-10-30
192307](https://github.com/tgstation/tgstation/assets/42397676/a4bbbf4f-13eb-4901-b0bc-879a2a958b5c)

![Screenshot 2023-10-30
192318](https://github.com/tgstation/tgstation/assets/42397676/5bb2005a-931a-4a3c-828a-18863f8c969f)

![Screenshot 2023-10-30
192327](https://github.com/tgstation/tgstation/assets/42397676/24d966eb-dd19-4b18-99b4-cffd70275c54)

![Screenshot 2023-10-30
192337](https://github.com/tgstation/tgstation/assets/42397676/a71f0f0b-0acc-492e-992f-c7b85e42b518)

![Screenshot 2023-10-30
192358](https://github.com/tgstation/tgstation/assets/42397676/5b3c38e0-ff30-4143-b720-a79b1f8095d8)

![Screenshot 2023-10-30
192412](https://github.com/tgstation/tgstation/assets/42397676/93e9abd6-bb19-4115-944a-6a939de2a585)

![Screenshot 2023-10-30
192424](https://github.com/tgstation/tgstation/assets/42397676/91fdccfe-59b9-4b45-8a90-e255331b179f)

![Screenshot 2023-10-30
192436](https://github.com/tgstation/tgstation/assets/42397676/9d2f028a-cf70-44f5-bd28-42b7c5b686f1)

![Screenshot 2023-10-30
192445](https://github.com/tgstation/tgstation/assets/42397676/bcdd82a6-39e0-480f-a7e0-afef0838a89c)

![Screenshot 2023-10-30
192456](https://github.com/tgstation/tgstation/assets/42397676/dc48263b-df3e-477b-bac1-d7c318e07a72)

![Screenshot 2023-10-30
192544](https://github.com/tgstation/tgstation/assets/42397676/aaaf843e-ca37-48f8-a9ae-2d949d8f8b4e)

![Screenshot 2023-10-30
192555](https://github.com/tgstation/tgstation/assets/42397676/af16c147-9b39-4b79-a857-873ec775595b)

![Screenshot 2023-10-30
192612](https://github.com/tgstation/tgstation/assets/42397676/60f7224b-9e6f-403f-80e1-7b16e332793e)

![Screenshot 2023-10-30
192625](https://github.com/tgstation/tgstation/assets/42397676/a5276ab7-1e14-46f6-b4e5-fd66dce1146f)

![Screenshot 2023-10-30
192639](https://github.com/tgstation/tgstation/assets/42397676/58b7d04c-0ea1-419a-9550-3185976250a8)

![Screenshot 2023-10-30
192650](https://github.com/tgstation/tgstation/assets/42397676/03728cef-9c61-4a28-bb15-8ce04ed8df2c)

![Screenshot 2023-10-30
192659](https://github.com/tgstation/tgstation/assets/42397676/144f7439-7a95-457b-a0e4-d15caf72ae58)

![Screenshot 2023-10-30
192708](https://github.com/tgstation/tgstation/assets/42397676/a8682ee9-c932-432a-ba50-6017bb836bc3)

![Screenshot 2023-10-30
192718](https://github.com/tgstation/tgstation/assets/42397676/42c98805-6085-4a87-8951-0e7876704f17)

![Screenshot 2023-10-30
192738](https://github.com/tgstation/tgstation/assets/42397676/8fb346cb-0855-470b-bb14-94ae32f021f3)

![Screenshot 2023-10-30
192750](https://github.com/tgstation/tgstation/assets/42397676/43c503fb-9eaf-406b-8c17-7671b39a26c9)

![Screenshot 2023-10-30
192800](https://github.com/tgstation/tgstation/assets/42397676/c87b22f5-78d6-4840-ae0f-e6d010fe6f65)

![Screenshot 2023-10-30
192812](https://github.com/tgstation/tgstation/assets/42397676/31fefea1-701e-429a-9bed-b7a8b55d6b6d)

![Screenshot 2023-10-30
192821](https://github.com/tgstation/tgstation/assets/42397676/300f10bf-8623-4749-9b57-f8e227198f34)

</details>

## Why It's Good For The Game
Adds some replay value, just slot in the modular root and select a
preset
## Changelog
N/A nothing player facing

* Adds generic modular rooms

---------

Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
2023-11-13 06:13:53 -05:00
Jeremiah ec135f1250 Adds generic modular rooms (#79419)
## About The Pull Request
Atomized portion of the bitrunning content patch #78997. Anyone can use
these, they are not bitrunning specific. Comes with a few biomes in
sizes 7x7, 9x9, 11x11

<details>
<summary>images</summary>

![Screenshot 2023-10-30
192227](https://github.com/tgstation/tgstation/assets/42397676/9f04a701-4ead-490d-b88a-ed1c9715a35a)

![Screenshot 2023-10-30
192238](https://github.com/tgstation/tgstation/assets/42397676/a0726152-23df-4e7e-822e-4ff3d7b542c4)

![Screenshot 2023-10-30
192248](https://github.com/tgstation/tgstation/assets/42397676/39e505e6-cb02-44a9-a195-0c67b892537f)

![Screenshot 2023-10-30
192257](https://github.com/tgstation/tgstation/assets/42397676/12aacbc0-15cf-430b-82a9-f8702a991610)

![Screenshot 2023-10-30
192307](https://github.com/tgstation/tgstation/assets/42397676/a4bbbf4f-13eb-4901-b0bc-879a2a958b5c)

![Screenshot 2023-10-30
192318](https://github.com/tgstation/tgstation/assets/42397676/5bb2005a-931a-4a3c-828a-18863f8c969f)

![Screenshot 2023-10-30
192327](https://github.com/tgstation/tgstation/assets/42397676/24d966eb-dd19-4b18-99b4-cffd70275c54)

![Screenshot 2023-10-30
192337](https://github.com/tgstation/tgstation/assets/42397676/a71f0f0b-0acc-492e-992f-c7b85e42b518)

![Screenshot 2023-10-30
192358](https://github.com/tgstation/tgstation/assets/42397676/5b3c38e0-ff30-4143-b720-a79b1f8095d8)

![Screenshot 2023-10-30
192412](https://github.com/tgstation/tgstation/assets/42397676/93e9abd6-bb19-4115-944a-6a939de2a585)

![Screenshot 2023-10-30
192424](https://github.com/tgstation/tgstation/assets/42397676/91fdccfe-59b9-4b45-8a90-e255331b179f)

![Screenshot 2023-10-30
192436](https://github.com/tgstation/tgstation/assets/42397676/9d2f028a-cf70-44f5-bd28-42b7c5b686f1)

![Screenshot 2023-10-30
192445](https://github.com/tgstation/tgstation/assets/42397676/bcdd82a6-39e0-480f-a7e0-afef0838a89c)

![Screenshot 2023-10-30
192456](https://github.com/tgstation/tgstation/assets/42397676/dc48263b-df3e-477b-bac1-d7c318e07a72)

![Screenshot 2023-10-30
192544](https://github.com/tgstation/tgstation/assets/42397676/aaaf843e-ca37-48f8-a9ae-2d949d8f8b4e)

![Screenshot 2023-10-30
192555](https://github.com/tgstation/tgstation/assets/42397676/af16c147-9b39-4b79-a857-873ec775595b)

![Screenshot 2023-10-30
192612](https://github.com/tgstation/tgstation/assets/42397676/60f7224b-9e6f-403f-80e1-7b16e332793e)

![Screenshot 2023-10-30
192625](https://github.com/tgstation/tgstation/assets/42397676/a5276ab7-1e14-46f6-b4e5-fd66dce1146f)

![Screenshot 2023-10-30
192639](https://github.com/tgstation/tgstation/assets/42397676/58b7d04c-0ea1-419a-9550-3185976250a8)

![Screenshot 2023-10-30
192650](https://github.com/tgstation/tgstation/assets/42397676/03728cef-9c61-4a28-bb15-8ce04ed8df2c)


![Screenshot 2023-10-30
192659](https://github.com/tgstation/tgstation/assets/42397676/144f7439-7a95-457b-a0e4-d15caf72ae58)

![Screenshot 2023-10-30
192708](https://github.com/tgstation/tgstation/assets/42397676/a8682ee9-c932-432a-ba50-6017bb836bc3)

![Screenshot 2023-10-30
192718](https://github.com/tgstation/tgstation/assets/42397676/42c98805-6085-4a87-8951-0e7876704f17)

![Screenshot 2023-10-30
192738](https://github.com/tgstation/tgstation/assets/42397676/8fb346cb-0855-470b-bb14-94ae32f021f3)

![Screenshot 2023-10-30
192750](https://github.com/tgstation/tgstation/assets/42397676/43c503fb-9eaf-406b-8c17-7671b39a26c9)

![Screenshot 2023-10-30
192800](https://github.com/tgstation/tgstation/assets/42397676/c87b22f5-78d6-4840-ae0f-e6d010fe6f65)

![Screenshot 2023-10-30
192812](https://github.com/tgstation/tgstation/assets/42397676/31fefea1-701e-429a-9bed-b7a8b55d6b6d)

![Screenshot 2023-10-30
192821](https://github.com/tgstation/tgstation/assets/42397676/300f10bf-8623-4749-9b57-f8e227198f34)

</details>

## Why It's Good For The Game
Adds some replay value, just slot in the modular root and select a
preset
## Changelog
N/A nothing player facing
2023-11-13 01:42:57 +01:00
SkyratBot 4c826ec07c [MIRROR] Fixes Ashwalker Tendril Revives [MDB IGNORE] (#24945)
* Fixes Ashwalker Tendril Revives

* Update ash_walker_den.dm

---------

Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-11-12 12:44:50 -05:00
zxaber d7fb20cfaf Fixes Ashwalker Tendril Revives (#79637)
## About The Pull Request
- Changes the Ashwalker Tendril revive proc to hold the old body until
the revive is done, and only delete the old body after moving the
mind/client over.
- Changes a single-letter var name to be more proper.
## Why It's Good For The Game
Fixes #79635

The issue seems to have been due to the old mob being deleted, which
deleted the mind. Later, when the new body was created, the mind was
unavailable due to being deleted. So now, we just hold the old body for
a bit and delete it once the new body is finished.

I'm not sure why this suddenly stopped working. Perhaps we were abusing
a long hard-del that delayed the mind being deleted and now it's no
longer a thing?
## Changelog
🆑
fix: Ashwalker Tendril Revives no longer ghost the player being revived.
/🆑
2023-11-12 11:26:47 +01:00
SkyratBot 596b2f050e [MIRROR] Converts some notify_ghosts args to bitflags, multilines all notify_ghosts calls [MDB IGNORE] (#24804)
* Converts some notify_ghosts args to bitflags, multilines all notify_ghosts calls

* Update supermatter.dm

* Modular

* More modular

* Update cortical_borer_egg.dm

---------

Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-11-05 22:01:17 -05:00
Rhials 3c7005a37c Converts some notify_ghosts args to bitflags, multilines all notify_ghosts calls (#79320)
## About The Pull Request

This helps clean up my favorite helper proc in the whole codebase,
`notify_ghosts()`.

The notify_suiciders, ignore_mapload, and flashwindow args are GONE.
They have been replaced with the notify_flags bitflag argument. This was
intended to make deadchat announcements a bitflag argument too, but
those got reverted right before I originally wanted to submit this PR.

The on-screen popup now shows the notification body when you hover it
with your mouse again. The format is now `[notify_ghosts message] --
[click action (orbit/jump/play)]`

Every single `notify_ghosts()` call has been changed to multiline format
and has been given trailing commas. Pretty!
## Why It's Good For The Game

Cleans up a proc that is very popular and going through a lot of changes
at the time.

Allows for further flexibility when this proc inevitably gets tweaked or
improved. 12 -> 10 args is an improvement, and it doesn't impact the
helper's flexibility at all.
## Changelog
🆑 Rhials
code: The notify_ghosts proc has been cleaned up. Please report any
abnormal changes in deadchat notification behavior.
qol: The on-screen deadchat popups now contain the notification blurb
when hovered with your mouse again.
/🆑
2023-11-05 15:26:50 -08:00
SkyratBot ff46f9c979 [MIRROR] Basic Constructs: Proteon [MDB IGNORE] (#24729)
* Basic Constructs: Proteon (#79425)

## About The Pull Request

Last one! Makes proteons into a basic mob, and completely removes the
simple_animal construct supertype.

Proteons aren't really designed to be played by a player, instead being
a nuisance mapped into various ruins and traps. As such, they don't
really have any special abilities. Instead, the hostile variant has a
somewhat unique behavior. They'll viciously attack anyone who comes
close, but, being frail little cowards, if a proteon takes damage it
will immediately flee. After a random period between 2 and 4 seconds, it
will stop fleeing and come back for more.

In addition to this, a few other things have been done, some only
related because they're in files I touched.
- Moved proteons from the file for the Cleric's Den to their own file in
the basic constructs folder. Given that they're used in several
different ruins, they might as well not just be in the file for one.
- Simple constructs have been cut, and with them the procs for
healing/repairing on shades and cult structures, as those are no longer
needed.
- Because I was touching it anyway, I touched up the file for trap
structures. They no longer use any one-letter variable names, and time
is now universally listed in seconds rather than deciseconds in that
file.
- I removed a completely unused blackboard key from ice demons. This is
something I noticed due to a change I ended up not making while working
on proteon AI, but I figured I might as well leave it gone.
## Why It's Good For The Game

Kills the last three simple construct typepaths, bringing us to the
destined 19 removed. Huzzah!

The proteon AI routine should inject a little spice into fighting
proteons, especially for the unprepared - unlike many mobs, they won't
stand there and take it if you decide to fight back, but you can never
safely ignore them when they run away. They still aren't particularly
dangerous.
## Changelog
🆑
refactor: Proteon constructs now use the basic mob framework. The ones
encountered in ruins are a bit flightier now, and will briefly flee
combat if attacked - only so that they can return and menace you again
soon after. Please report any bugs.
/🆑

---------

Co-authored-by: san7890 <the@ san7890.com>

* Basic Constructs: Proteon

* Update defcon2.dmm

---------

Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-11-01 20:04:55 -04:00
lizardqueenlexi 08274f8343 Basic Constructs: Proteon (#79425)
## About The Pull Request

Last one! Makes proteons into a basic mob, and completely removes the
simple_animal construct supertype.

Proteons aren't really designed to be played by a player, instead being
a nuisance mapped into various ruins and traps. As such, they don't
really have any special abilities. Instead, the hostile variant has a
somewhat unique behavior. They'll viciously attack anyone who comes
close, but, being frail little cowards, if a proteon takes damage it
will immediately flee. After a random period between 2 and 4 seconds, it
will stop fleeing and come back for more.

In addition to this, a few other things have been done, some only
related because they're in files I touched.
- Moved proteons from the file for the Cleric's Den to their own file in
the basic constructs folder. Given that they're used in several
different ruins, they might as well not just be in the file for one.
- Simple constructs have been cut, and with them the procs for
healing/repairing on shades and cult structures, as those are no longer
needed.
- Because I was touching it anyway, I touched up the file for trap
structures. They no longer use any one-letter variable names, and time
is now universally listed in seconds rather than deciseconds in that
file.
- I removed a completely unused blackboard key from ice demons. This is
something I noticed due to a change I ended up not making while working
on proteon AI, but I figured I might as well leave it gone.
## Why It's Good For The Game

Kills the last three simple construct typepaths, bringing us to the
destined 19 removed. Huzzah!

The proteon AI routine should inject a little spice into fighting
proteons, especially for the unprepared - unlike many mobs, they won't
stand there and take it if you decide to fight back, but you can never
safely ignore them when they run away. They still aren't particularly
dangerous.
## Changelog
🆑
refactor: Proteon constructs now use the basic mob framework. The ones
encountered in ruins are a bit flightier now, and will briefly flee
combat if attacked - only so that they can return and menace you again
soon after. Please report any bugs.
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2023-11-01 17:07:20 -06:00
SkyratBot 1a2ddececa [MIRROR] new space ruin, the biological research outpost [MDB IGNORE] (#24662)
* new space ruin, the biological research outpost (#79149)

## About The Pull Request

![2023-10-21 18 02
39](https://github.com/tgstation/tgstation/assets/70376633/5829e939-3b04-465f-a186-095ceb360bba)

adds this ruin to space ruin pool
this is a shady (as NT always is) bioresearch outpost that got fucked up
by an experiment
this has like some puzzle aspect to it since you gotta find keycards and
shit and press buttons to unlock shield gates
this ends with you fighting a heart which if you defeat, destroys the
blockade that prevents you from entering the outpost vault

also you can no longer literally just cut indestructible grilles or
unanchor indestructible windows

### new puzzle elements or something idk
variant of pressure plate that you cannot remove and it sends a puzzle
signal
cooler red puzzle doors that look very foreboding or something idk
theyre for this ruin
also puzzle blockades, which are indestructible dense objects that are
destroyed if they receive a puzzle signal
and also buttons and keycard pads for puzzles

https://github.com/tgstation/tgstation/assets/70376633/c98807ec-1e7b-49c4-a757-cdbb76a1b566

https://github.com/tgstation/tgstation/assets/70376633/9d5d9dd1-5868-44e6-a978-5ea57b30c298

stuff that throws electric shocks in a pattern, ignores insuls and only
knocks down, and no you cannot just run past

https://github.com/tgstation/tgstation/assets/70376633/5772917c-a963-48a4-a743-b0f610801d25

### enemies
living floor, it can only attack stuff on top of it and it attacks until
the victim is dead
it is invincible to all but a crowbar, and it cannot move, and it
remains hidden until a victim is in range

https://github.com/tgstation/tgstation/assets/70376633/aa1d54f6-b259-4e58-9d44-e393d2131acf

living flesh, it can replace your limbs with itself
the conditions for that are; the limb must have 20 or more brute, victim
must be alive and dismemberable, the limb may not be torso or head, or
the limb may not be living flesh
alternatively it can replace a missing limb
these are all checked with every attack
they have 20 hp
the limbs in question will sometimes act up, while passively draining
nutrition, arms will randomly start pulling nearby stuff, legs may step
randomly
limbs when detached, turn into mobs and reactivate AI 2 seconds later.
if the host is shocked, all living flesh limbs will detach, or if the
host dies they will also do that

https://github.com/tgstation/tgstation/assets/70376633/765cc99e-c800-4efb-aabe-d68817bbd7ae

## Why It's Good For The Game

ruin variety is cool i think
also the other things i added should be useful for other mappers for
bitrunning or whatever

also bug bad for that one fix
## Changelog
🆑
add: living floor, living flesh, and other stuff for the bioresearch
outpost ruin
add: bioresearch outpost ruin
fix: you may not defeat indestructible grilles and windows with mere
tools
/🆑

---------

Co-authored-by: Jacquerel <hnevard@ gmail.com>

* new space ruin, the biological research outpost

---------

Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
2023-10-31 01:35:11 -04:00
jimmyl d31c21ff1b new space ruin, the biological research outpost (#79149)
## About The Pull Request

![2023-10-21 18 02
39](https://github.com/tgstation/tgstation/assets/70376633/5829e939-3b04-465f-a186-095ceb360bba)

adds this ruin to space ruin pool
this is a shady (as NT always is) bioresearch outpost that got fucked up
by an experiment
this has like some puzzle aspect to it since you gotta find keycards and
shit and press buttons to unlock shield gates
this ends with you fighting a heart which if you defeat, destroys the
blockade that prevents you from entering the outpost vault

also you can no longer literally just cut indestructible grilles or
unanchor indestructible windows

### new puzzle elements or something idk
variant of pressure plate that you cannot remove and it sends a puzzle
signal
cooler red puzzle doors that look very foreboding or something idk
theyre for this ruin
also puzzle blockades, which are indestructible dense objects that are
destroyed if they receive a puzzle signal
and also buttons and keycard pads for puzzles


https://github.com/tgstation/tgstation/assets/70376633/c98807ec-1e7b-49c4-a757-cdbb76a1b566



https://github.com/tgstation/tgstation/assets/70376633/9d5d9dd1-5868-44e6-a978-5ea57b30c298

stuff that throws electric shocks in a pattern, ignores insuls and only
knocks down, and no you cannot just run past


https://github.com/tgstation/tgstation/assets/70376633/5772917c-a963-48a4-a743-b0f610801d25

### enemies
living floor, it can only attack stuff on top of it and it attacks until
the victim is dead
it is invincible to all but a crowbar, and it cannot move, and it
remains hidden until a victim is in range


https://github.com/tgstation/tgstation/assets/70376633/aa1d54f6-b259-4e58-9d44-e393d2131acf

living flesh, it can replace your limbs with itself
the conditions for that are; the limb must have 20 or more brute, victim
must be alive and dismemberable, the limb may not be torso or head, or
the limb may not be living flesh
alternatively it can replace a missing limb
these are all checked with every attack
they have 20 hp
the limbs in question will sometimes act up, while passively draining
nutrition, arms will randomly start pulling nearby stuff, legs may step
randomly
limbs when detached, turn into mobs and reactivate AI 2 seconds later.
if the host is shocked, all living flesh limbs will detach, or if the
host dies they will also do that


https://github.com/tgstation/tgstation/assets/70376633/765cc99e-c800-4efb-aabe-d68817bbd7ae



## Why It's Good For The Game

ruin variety is cool i think
also the other things i added should be useful for other mappers for
bitrunning or whatever

also bug bad for that one fix
## Changelog
🆑
add: living floor, living flesh, and other stuff for the bioresearch
outpost ruin
add: bioresearch outpost ruin
fix: you may not defeat indestructible grilles and windows with mere
tools
/🆑

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-10-31 08:15:42 +13:00
SkyratBot 85ee756c24 [MIRROR] [CI Fix] The Demonic Frost-Miner will not attack corpses. [MDB IGNORE] (#24615)
* [CI Fix] The Demonic Frost-Miner will not attack corpses. (#79294)

## About The Pull Request

Fixes #79147.

Prevents the Demonic Frost-Miner from shooting at corpses by returning
early from `OpenFire()`. Also adds the "gutted" status effect to the
corpses in its arena so it won't try to gut them.
## Why It's Good For The Game

#78826 introduced an unfortunate bug by placing corpses in the Frost
Miner's arena. There were a combination of three factors at play here:
that the Miner attacks corpses, that it happens to use colossus bolts in
its attacks, which dust corpses, and that some unfortunate quirk of life
code causes runtimes if, as far as I can tell, a life tick goes off when
a mob is at the wrong point in the dusting process. The time this
process takes happened to perfectly coincide with the Monkey Business
unit test (being the first test that takes a significant period of
time), causing it to randomly fail.

So, this fixes a flaky test that has been a pain in the ass for the last
five days, is the big thing.

Also, it can't possibly have been intended for the Miner to run around
obliterating the aesthetic corpses in its arena within the first 15
seconds of any given round. Completely ruining the mood!

I'll point out that this particular boss may have been forgotten in
#77731, which set out to make only the colossus still gib/dust you, but
even were that not the case I think it would be a bit silly for the
Miner to be busy shooting lifeless corpses when a player shows up to
challenge it, rather than standing in its scary ritual circle.
## Changelog
🆑
fix: The Demonic Frost-Miner will no longer run around destroying the
corpses in its arena the moment the round begins.
/🆑

* [CI Fix] The Demonic Frost-Miner will not attack corpses.

---------

Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@users.noreply.github.com>
2023-10-27 10:34:52 -07:00
lizardqueenlexi 157fafeaa9 [CI Fix] The Demonic Frost-Miner will not attack corpses. (#79294)
## About The Pull Request

Fixes #79147.

Prevents the Demonic Frost-Miner from shooting at corpses by returning
early from `OpenFire()`. Also adds the "gutted" status effect to the
corpses in its arena so it won't try to gut them.
## Why It's Good For The Game

#78826 introduced an unfortunate bug by placing corpses in the Frost
Miner's arena. There were a combination of three factors at play here:
that the Miner attacks corpses, that it happens to use colossus bolts in
its attacks, which dust corpses, and that some unfortunate quirk of life
code causes runtimes if, as far as I can tell, a life tick goes off when
a mob is at the wrong point in the dusting process. The time this
process takes happened to perfectly coincide with the Monkey Business
unit test (being the first test that takes a significant period of
time), causing it to randomly fail.

So, this fixes a flaky test that has been a pain in the ass for the last
five days, is the big thing.

Also, it can't possibly have been intended for the Miner to run around
obliterating the aesthetic corpses in its arena within the first 15
seconds of any given round. Completely ruining the mood!

I'll point out that this particular boss may have been forgotten in
#77731, which set out to make only the colossus still gib/dust you, but
even were that not the case I think it would be a bit silly for the
Miner to be busy shooting lifeless corpses when a player shows up to
challenge it, rather than standing in its scary ritual circle.
## Changelog
🆑
fix: The Demonic Frost-Miner will no longer run around destroying the
corpses in its arena the moment the round begins.
/🆑
2023-10-27 13:56:46 +00:00
SkyratBot c056f4dac9 [MIRROR] Nanotrasen basic mobs. [MDB IGNORE] (#24573)
* Nanotrasen basic mobs. (#78917)

## About The Pull Request

First and foremost, converts all Nanotrasen simplemobs into basic mobs.

To avoid messy and redundant code, or god forbid, making Nanotrasen mobs
a subtype of Syndicate ones, I've made Syndicate, Russian, and
Nanotrasen mobs all share a unified "Trooper" parent. This should have
no effect on their behaviors, but makes things much easier to extend
further in the future.

While most of this PR is pretty cut-and-dry, I've done a couple notable
things. For one, all types of ranged trooper will now avoid friendly
fire, instead of shooting their friends in the back. Even the Russians
have trigger discipline.

I've also created a new AI subtree that allows mobs to call for
reinforcements. I've hopefully made this easy to extend, but the
existing version works as follows:

- A mob with this subtree that gains a target that is also a mob will
call out to all mobs within 15 tiles.
- If they share a faction, mobs receiving the call will have the target
added to their retaliate list, and have a new key set targeting the
calling mob.
- If they have the correct subtree in their AI controller, called-to
mobs will then run over to help out.

Sadly, this behavior is currently used only by a few completely unused
Nanotrasen mobs, so in practice it will not yet be seen.

Finally, I've fixed a minor issue where melee Russian mobs punch people
to death despite holding a knife. They now use the proper effects for
stabbing instead of punching.
## Why It's Good For The Game

Removes 8 more simple animals from the list.

As said above, making all "trooper" type mobs share a common parent cuts
down on code reuse, ensures consistency of behavior, and makes it much
easier to add new troopers not affiliated with these groups. I expect
that I'll make pirates share this same parent next.

The new "reinforcements" behavior, though extremely powerful, opens up
exciting new opportunities in the future. There aren't many existing
behaviors that allow basic mobs to work _together_ in interesting ways,
and I think adding some enemy teamwork could be fun.
## Changelog
🆑
refactor: Hostile Nanotrasen mobs now use the basic mob framework. This
should make them a little smarter and more dangerous. Please report any
bugs.
fix: Russian mobs will now actually use those knives they're holding.
/🆑

* Nanotrasen basic mobs.

* Modular

---------

Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-10-24 21:42:47 -04:00
lizardqueenlexi b65f729901 Nanotrasen basic mobs. (#78917)
## About The Pull Request

First and foremost, converts all Nanotrasen simplemobs into basic mobs.

To avoid messy and redundant code, or god forbid, making Nanotrasen mobs
a subtype of Syndicate ones, I've made Syndicate, Russian, and
Nanotrasen mobs all share a unified "Trooper" parent. This should have
no effect on their behaviors, but makes things much easier to extend
further in the future.

While most of this PR is pretty cut-and-dry, I've done a couple notable
things. For one, all types of ranged trooper will now avoid friendly
fire, instead of shooting their friends in the back. Even the Russians
have trigger discipline.

I've also created a new AI subtree that allows mobs to call for
reinforcements. I've hopefully made this easy to extend, but the
existing version works as follows:

- A mob with this subtree that gains a target that is also a mob will
call out to all mobs within 15 tiles.
- If they share a faction, mobs receiving the call will have the target
added to their retaliate list, and have a new key set targeting the
calling mob.
- If they have the correct subtree in their AI controller, called-to
mobs will then run over to help out.

Sadly, this behavior is currently used only by a few completely unused
Nanotrasen mobs, so in practice it will not yet be seen.

Finally, I've fixed a minor issue where melee Russian mobs punch people
to death despite holding a knife. They now use the proper effects for
stabbing instead of punching.
## Why It's Good For The Game

Removes 8 more simple animals from the list.

As said above, making all "trooper" type mobs share a common parent cuts
down on code reuse, ensures consistency of behavior, and makes it much
easier to add new troopers not affiliated with these groups. I expect
that I'll make pirates share this same parent next.

The new "reinforcements" behavior, though extremely powerful, opens up
exciting new opportunities in the future. There aren't many existing
behaviors that allow basic mobs to work _together_ in interesting ways,
and I think adding some enemy teamwork could be fun.
## Changelog
🆑
refactor: Hostile Nanotrasen mobs now use the basic mob framework. This
should make them a little smarter and more dangerous. Please report any
bugs.
fix: Russian mobs will now actually use those knives they're holding.
/🆑
2023-10-24 23:20:27 +00:00
SkyratBot 26a2829b1a [MIRROR] Demonic-Frost Miner Ruin Aesthetic Refresh [MDB IGNORE] (#24487)
* Demonic-Frost Miner Ruin Aesthetic Refresh (#78826)

## About The Pull Request

Updates the Demonic-Frost Miner ruin on IceBox, keeps multi-z and
general shape, but changes some things to better fit the theme of the
"Mining Site" that the ruin is named.

![image](https://github.com/tgstation/tgstation/assets/86125936/0693bc59-1130-445d-ace9-61fa65f4639f)

![image](https://github.com/tgstation/tgstation/assets/86125936/cc056de8-2ee4-4506-a6d8-706594af12c6)
## Why It's Good For The Game

The current ruin doesn't fit well as a "Mining Site", this makes it fit
the theme more, while looking better in general. It also makes the arena
more interesting, rather than solid ice.
## Changelog
🆑
add: Demonic-Frost Miner's ruin gets an aesthetic refresh
/🆑

* Demonic-Frost Miner Ruin Aesthetic Refresh

---------

Co-authored-by: Ical <86125936+Ical92@users.noreply.github.com>
2023-10-21 14:27:12 -04:00
Ical d44abb0315 Demonic-Frost Miner Ruin Aesthetic Refresh (#78826)
## About The Pull Request

Updates the Demonic-Frost Miner ruin on IceBox, keeps multi-z and
general shape, but changes some things to better fit the theme of the
"Mining Site" that the ruin is named.

![image](https://github.com/tgstation/tgstation/assets/86125936/0693bc59-1130-445d-ace9-61fa65f4639f)

![image](https://github.com/tgstation/tgstation/assets/86125936/cc056de8-2ee4-4506-a6d8-706594af12c6)
## Why It's Good For The Game

The current ruin doesn't fit well as a "Mining Site", this makes it fit
the theme more, while looking better in general. It also makes the arena
more interesting, rather than solid ice.
## Changelog
🆑
add: Demonic-Frost Miner's ruin gets an aesthetic refresh
/🆑
2023-10-21 17:06:26 +02:00
SkyratBot b6da56408e [MIRROR] A comprehensive refactor / cleanup of bullet_hit and on_hit to cut out a single bad species / mob proc [MDB IGNORE] (#24430)
* A comprehensive refactor / cleanup of `bullet_hit` and `on_hit` to cut out a single bad species / mob proc (#79024)

## About The Pull Request

- Refactored `bullet_act`. Adds `should_call_parent` and refactors
associated children to support that.
   - Fixes silicons sparking off when hit by disabler fire.
- Desnowflakes firing range target integrity and cleans up its
bullet-hole code a bit.
- Cleans up changeling tentacle code a fair bit and fixes it not taking
off throw mode if you fail to catch something.
   - The Sleeping Carp deflection is now signalized
- Nightmare projectile dodging is now signalized and sourced from the
Nightmare's brain rather than species
- Refactored how cardboard cutouts get knocked over to be less
snowflaked / use integrity
- Also adds projectile `on_hit` `should_call_parent` and cleans up a bit
of that, particularly their arguments.
- On hit arguments were passed wrong this entire time, it's a good thing
nothing relied on that.

## Why It's Good For The Game

This is cringe.

https://github.com/tgstation/tgstation/blob/1863eb2cd82e7cee4fdfff37b42d3fd0c7edd797/code/modules/mob/living/carbon/human/_species.dm#L1430-L1442

Bullets should overall act more consistent across mob types and objects.

## Changelog

🆑 Melbert
fix: Silicons don't spark when shot by disablers
fix: Changelings who fail to catch something with a tencacle will have
throw mode disabled automatically
fix: Fixes occasions where you can reflect with Sleeping Carp when you
shouldn't be able to
fix: Fixes some projectiles causing like 20x less eye blur than they
should be
refactor: Refactored bullet-mob interactions
refactor: Nightmare "shadow dodge" projectile ability is now sourced
from their brain
/🆑

* A comprehensive refactor / cleanup of `bullet_hit` and `on_hit` to cut out a single bad species / mob proc

* Modular changes

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-10-19 22:18:41 -04:00
SkyratBot 8d6c531124 [MIRROR] Adds 'Bloody Spreader' component that bloodies everything it touches [MDB IGNORE] (#24436)
* Adds 'Bloody Spreader' component that bloodies everything it touches

* Update meat.dm

---------

Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-10-19 17:20:20 -04:00
carlarctg cd030b0690 Adds 'Bloody Spreader' component that bloodies everything it touches (#78743)
## About The Pull Request

Adds 'Bloody Spreader' component that bloodies everything it touches!

For example inserting an item into it if it is a storage item. Or
entering it if it's a turf, or bumping onto it, or... you get the point,
hopefully.

Added this component to the MEAT backpack, meat slabs, bouncy castles,
meateor fluff, meateor heart, and the heretic sanguine blade.

Gave most of these the blood walk component as well, which spreads blood
if it's dragged around.

Meat slabs contain a limited amount of both components, eventually they
will 'dry out'.
## Why It's Good For The Game

Meat isn't meaty and squelchy enough, this will make it meatier. It also
makes the janitor suffer.
## Changelog
🆑
code: Adds 'Bloody Spreader' component that bloodies everything it
touches!
code: For example inserting an item into it if it is a storage item. Or
entering it if it's a turf, or bumping onto it, or... you get the point,
hopefully.
add: Added this component to the MEAT backpack, meat slabs, bouncy
castles, meateor fluff, meateor heart, and the heretic sanguine blade.
add: Gave most of these the blood walk component as well, which spreads
blood if it's dragged around.
add: Meat slabs contain a limited amount of both components, eventually
they will 'dry out'.
code: Added a signal for when an item is entered into storage.
/🆑
2023-10-19 21:03:09 +02:00
MrMelbert 93ec5a72f7 A comprehensive refactor / cleanup of bullet_hit and on_hit to cut out a single bad species / mob proc (#79024)
## About The Pull Request

- Refactored `bullet_act`. Adds `should_call_parent` and refactors
associated children to support that.
   - Fixes silicons sparking off when hit by disabler fire. 
- Desnowflakes firing range target integrity and cleans up its
bullet-hole code a bit.
- Cleans up changeling tentacle code a fair bit and fixes it not taking
off throw mode if you fail to catch something.
   - The Sleeping Carp deflection is now signalized 
- Nightmare projectile dodging is now signalized and sourced from the
Nightmare's brain rather than species
- Refactored how cardboard cutouts get knocked over to be less
snowflaked / use integrity
- Also adds projectile `on_hit` `should_call_parent` and cleans up a bit
of that, particularly their arguments.
- On hit arguments were passed wrong this entire time, it's a good thing
nothing relied on that.

## Why It's Good For The Game

This is cringe. 


https://github.com/tgstation/tgstation/blob/1863eb2cd82e7cee4fdfff37b42d3fd0c7edd797/code/modules/mob/living/carbon/human/_species.dm#L1430-L1442

Bullets should overall act more consistent across mob types and objects.

## Changelog

🆑 Melbert
fix: Silicons don't spark when shot by disablers
fix: Changelings who fail to catch something with a tencacle will have
throw mode disabled automatically
fix: Fixes occasions where you can reflect with Sleeping Carp when you
shouldn't be able to
fix: Fixes some projectiles causing like 20x less eye blur than they
should be
refactor: Refactored bullet-mob interactions
refactor: Nightmare "shadow dodge" projectile ability is now sourced
from their brain
/🆑
2023-10-18 23:08:13 -06:00
SkyratBot 7cf7be4b7b [MIRROR] Tram v6/Transport Subsystem [MDB IGNORE] (#24399)
* Tram v6/Transport Subsystem

* Update icon_smoothing.dm

* Update utility.dm

* defines/icon

* Update airlock.dm

* Update door.dm

* Update airlock.dm

* Update airlock.dm

---------

Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-10-17 15:16:46 -07:00
lessthanthree 7626c3bd6c Tram v6/Transport Subsystem (#78230)
Co-authored-by: Unit0016 <50649185+unit0016@users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
2023-10-17 10:52:38 -07:00
SkyratBot fa31acc3ec [MIRROR] Fixes a runtime with AI targeting code, refactors faction checking to be at the atom/movable level [MDB IGNORE] (#24386)
* Fixes a runtime with AI targeting code, refactors faction checking to be at the atom/movable level (#78803)

## About The Pull Request

Saw this in CI.

![firefox_lCYnPMJIqm](https://github.com/tgstation/tgstation/assets/13398309/8ef309df-09b6-4096-b6aa-340b59f7446b)

~~Quick fix for it--because turrets are not mobs trying to call this
proc on them will runtime. So let's give them their own implementation
of the proc.~~ Just kidding, let's refactor faction checking entirely

## Why It's Good For The Game

Fixes an issue with basic mob AI targeting and turrets.

## Changelog

🆑
fix: basic mobs will no longer runtime when trying to check the faction
of a porta turret
refactor: faction checking is now done at the atom/movable level
/🆑

---------

Co-authored-by: san7890 <the@ san7890.com>

* Fixes a runtime with AI targeting code, refactors faction checking to be at the atom/movable level

* Modular updates

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
2023-10-16 21:41:24 -04:00
Bloop 847514310d Fixes a runtime with AI targeting code, refactors faction checking to be at the atom/movable level (#78803)
## About The Pull Request

Saw this in CI.


![firefox_lCYnPMJIqm](https://github.com/tgstation/tgstation/assets/13398309/8ef309df-09b6-4096-b6aa-340b59f7446b)

~~Quick fix for it--because turrets are not mobs trying to call this
proc on them will runtime. So let's give them their own implementation
of the proc.~~ Just kidding, let's refactor faction checking entirely

## Why It's Good For The Game

Fixes an issue with basic mob AI targeting and turrets.

## Changelog

🆑
fix: basic mobs will no longer runtime when trying to check the faction
of a porta turret
refactor: faction checking is now done at the atom/movable level
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2023-10-16 17:22:44 -06:00
SkyratBot 4a618d0561 [MIRROR] Watcher Nest Lavaland Ruin [MDB IGNORE] (#24286)
* Watcher Nest Lavaland Ruin (#78790)

## About The Pull Request

Adds a small new lavaland ruin, the Watchers' Grave.

![image](https://github.com/tgstation/tgstation/assets/7483112/9c3fa6f0-3e7d-4540-8646-5229eb11445b)

![image](https://github.com/tgstation/tgstation/assets/7483112/93bc14f0-9a0c-40d3-bd30-cc79a0d85752)

You will need to figure out yourself how to find a way through the walls
surrounding it (it's not very hard).
This is mostly just atmospheric but also serves as a delivery vehicle
for a unique item; an orphaned Watcher egg.
(That's kind of it in terms of loot, unless you count a handful of
lavaland mob corpses and mushrooms).

You can either eat this (it's an egg), throw it at someone to spawn an
angry watcher, or keep hold of it for a while and see what happens.

<details>

![dreamseeker_cMNnZXjfgL](https://github.com/tgstation/tgstation/assets/7483112/841db8fc-19ac-431f-aa66-c9ec5fbedbc3)

That's right it's your very own baby watcher.
It orbits your head and shoots at lavaland creatures for unimpressive
damage. It won't ever intentionally shoot a player but they might walk
in front of it, as it doesn't hurt very much they will probably forgive
you.
If you die it will continue circling your corpse to guard it against
predation.
</details>

In creating this ruin I also added a new component called "corpse
description".
It provides some extra examine text to a corpse which is removed
permanently if the mob is revived.
There's a field you can varedit on corpse spawners (or make a subtype)
which will automatically apply it to spawned corpses.
You can use it for environmental storytelling. Or admins can use it to
make fun of how you died.

Also I fixed basic mobs runtiming when examined by ghosts.

## Why It's Good For The Game

More variety in map generation. It's cute.
Adds a tool that mappers might like.

## Changelog

🆑
add: Adds a new lavaland ruin where you can find a unique egg.
/🆑

* Watcher Nest Lavaland Ruin

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-10-11 19:57:35 -04:00
Jacquerel eb28d04f08 Watcher Nest Lavaland Ruin (#78790)
## About The Pull Request

Adds a small new lavaland ruin, the Watchers' Grave.


![image](https://github.com/tgstation/tgstation/assets/7483112/9c3fa6f0-3e7d-4540-8646-5229eb11445b)

![image](https://github.com/tgstation/tgstation/assets/7483112/93bc14f0-9a0c-40d3-bd30-cc79a0d85752)

You will need to figure out yourself how to find a way through the walls
surrounding it (it's not very hard).
This is mostly just atmospheric but also serves as a delivery vehicle
for a unique item; an orphaned Watcher egg.
(That's kind of it in terms of loot, unless you count a handful of
lavaland mob corpses and mushrooms).

You can either eat this (it's an egg), throw it at someone to spawn an
angry watcher, or keep hold of it for a while and see what happens.

<details>


![dreamseeker_cMNnZXjfgL](https://github.com/tgstation/tgstation/assets/7483112/841db8fc-19ac-431f-aa66-c9ec5fbedbc3)

That's right it's your very own baby watcher.
It orbits your head and shoots at lavaland creatures for unimpressive
damage. It won't ever intentionally shoot a player but they might walk
in front of it, as it doesn't hurt very much they will probably forgive
you.
If you die it will continue circling your corpse to guard it against
predation.
</details>

In creating this ruin I also added a new component called "corpse
description".
It provides some extra examine text to a corpse which is removed
permanently if the mob is revived.
There's a field you can varedit on corpse spawners (or make a subtype)
which will automatically apply it to spawned corpses.
You can use it for environmental storytelling. Or admins can use it to
make fun of how you died.

Also I fixed basic mobs runtiming when examined by ghosts.

## Why It's Good For The Game

More variety in map generation. It's cute.
Adds a tool that mappers might like.

## Changelog

🆑
add: Adds a new lavaland ruin where you can find a unique egg.
/🆑
2023-10-11 17:00:22 -06:00
SkyratBot 0c9149bf35 [MIRROR] Refactor gib code to use bitflags and have documentation [MDB IGNORE] (#24143)
* Refactor gib code to use bitflags and have documentation

* Modular updates

* Modular updates

* Modular updates

---------

Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-10-09 15:00:17 -04:00
Tim d6f79f4427 Refactor gib code to use bitflags and have documentation (#78754)
## About The Pull Request
This takes all the gib related procs:
- `gib()`
- `spawn_gibs()` 
- `spill_organs()`
- `spread_bodyparts()`

And adds heavy documentation that communicates what the procs are used
for and how the different bitflags affect them. The difference is
noticeable:

`gib(TRUE, FALSE, FALSE, null)` vs `gib(DROP_ORGANS|DROP_BODYPARTS)`

The code is now much more legible which is important considering it's
used in a lot of places!

Another robust change, is that we had several places in the code where
there were double negatives like so:

```
/mob/living/carbon/spill_organs(no_brain, no_organs, no_bodyparts)
	if(!no_bodyparts) // DOUBLE NEGATIVES ARE BAD M'KAY?!?
		// do stuff here
```

This is a mindfuck to untangle. I inverted a lot of these parts so we
don't lose our sanity.

Last thing that was changed was a big `if()` loop in the `spill_organ()`
proc. This was refactored to just be a simple `for` loop with `continue`
statements where we needed to skip enabled bitflags. It's now shorter
and cleaner than before.

The only slight gameplay change this affects is that gibbing a mob now
guarantees to drop all items unless the `DROP_ITEMS` bitflag is
deliberately omitted. Some places like admin gib self, we don't want
this to happen.

## Why It's Good For The Game
Gib code is very old. (~15 years) People kept adding more arguments to
the procs when it should have been a bitflag initially. By doing it this
way, there is more flexibility and readability when it comes to adding
new code in the future.

## Changelog
🆑
refactor: Refactor gib code to be more robust.
qol: Gibbing a mob will result in all items being dropped instead of
getting deleted. There are a few exceptions (like admin gib self) where
this will not take place.
/🆑
2023-10-06 13:12:22 +01:00
SkyratBot 379c4d707f [MIRROR] Ashwalkers team stores players_spawned via ckeys rather than keys now [MDB IGNORE] (#24071)
* Ashwalkers team stores players_spawned via ckeys rather than keys now

* Update mining_roles.dm

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-10-03 09:41:05 +00:00
Bloop 13cfcdad6b Ashwalkers team stores players_spawned via ckeys rather than keys now (#78688)
## About The Pull Request

So this just changes some instances of `key` to `ckey`. There is a
reason for it I swear!

So when ashwalkers get spawned their mob gets added to the
`team.players_spawned` list via their `key` var.

---

However, we have this as part of sacrifice code:

Here the `deliverykey` var is set to `fingerprintslast`, which is a
ckey.


https://github.com/tgstation/tgstation/blob/f6f6ebc276bacd33e0f88e6454783209c1b28d57/code/modules/mapfluff/ruins/objects_and_mobs/ash_walker_den.dm#L79


https://github.com/tgstation/tgstation/blob/f6f6ebc276bacd33e0f88e6454783209c1b28d57/code/modules/forensics/_forensics.dm#L218

---

That `deliverykey` is then used to remove a ckey from the list here 


https://github.com/tgstation/tgstation/blob/f6f6ebc276bacd33e0f88e6454783209c1b28d57/code/modules/mapfluff/ruins/objects_and_mobs/ash_walker_den.dm#L84

Since `deliverkey` is a `ckey`, which is not always the same thing as
the `key`, this can cause a mob to not get removed from the list
properly if the two mismatch.

```(From DM Reference on `ckey`: "The key in canonical form. To do this, it strips all punctuation and space from the key and converts to lowercase. The result is still unique for each different key. ")```

I just think it's a bit confusing to switch back and forth, and it's unclear if it causes errors or not. This could be considered a code improvement I guess? Or a fix, depending.

## Why It's Good For The Game

Less confusing, more consistent code. Less bugs. Much good.

## Changelog

Nothing anyone shall ever notice besides the coders
2023-10-02 10:59:25 -06:00
SkyratBot d9624bdf97 [MIRROR] Multi-Z Support for Lazy Templates | Cleans up some turf flag misuse [MDB IGNORE] (#23794)
* Multi-Z Support for Lazy Templates | Cleans up some turf flag misuse

* Update hilbertshotel.dm

* Modular proc ref

---------

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-09-19 13:26:14 -04:00
Zephyr 1b96345e44 Multi-Z Support for Lazy Templates | Cleans up some turf flag misuse (#77786)
## About The Pull Request

Adds multi-z support for lazy templates
Also fixes some improper use and placement for turf flags
## Why It's Good For The Game

Shadow needs/wants this for bit runner maps.
Turf flags are also why lava has been generating in places it shouldnt.
(inside of ruins)
## Changelog
🆑
fix: Lava can no longer occasionally generate inside of previously
loaded templates and breach and/or destroy shit
/🆑

---------

Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2023-09-19 01:06:08 +00:00
SkyratBot 9f3be12c19 [MIRROR] [TEST-MERGE FIRST] Wound refactor number two: Full synthetic support [MDB IGNORE] (#23601)
* [TEST-MERGE FIRST] Wound refactor number two: Full synthetic support

* Wound refactor two compatability (#23618)

* Delam emergency procedure moth (#23483)

* safety moff

* delta/whitespace/examine

* icebox

* moff poster

* moff poster

* Update DelamProcedure.tsx

* Update scram.dm

* sound plays during warning

* remove nightshift, theres already a global proc

* scrubber hint

* missed that define

* Apply suggestions from code review

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>

* covered by ui_interact

* Update modular_skyrat/modules/delam_emergency_stop/code/scram.dm

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>

* Update modular_skyrat/modules/delam_emergency_stop/code/scram.dm

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>

* Automatic changelog for PR #23483 [ci skip]

* Automatic changelog compile [ci skip]

* [non modular] disables TG "hold up" for the foreseeable future (#23607)

Update gun.dm

* Automatic changelog for PR #23607 [ci skip]

* [MIRROR] Desouls Hivelord [MDB IGNORE] (#23609)

* Desouls Hivelord (#78213)

## About The Pull Request

![dreammaker_RJz4brjobM](https://github.com/tgstation/tgstation/assets/7483112/e5e4a3e9-ea6b-47f9-887c-3339d24d3fa8)

Replaces the sprite of the hivelord with a new one, in my continuing
quest to annihilate the old asteroid mob sprites.
A (never completed) asteroid mob resprite was actually my first PR, this
one is my 200th.
I am also planning on fucking with basic mob versions of these mobs some
time but the sprites can be atomised out.

In addition to replacing the old-ass MSPaint sprites, this PR also adds
a short death animation effect to the hivelord brood (from hivelords or
legions) which looks nicer than them just vanishing instantly upon
death.

Look at this video for an example of the animation:
https://www.youtube.com/watch?v=cKaskN5-y2A

## Why It's Good For The Game

Looks nicer.

## Changelog

🆑
image: Hivelords have a new sprite.
image: Hivelord and Legion brood have a death animation.
/🆑

* Desouls Hivelord

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>

* Automatic changelog for PR #23609 [ci skip]

* [MIRROR] Updates chem factory tank sprites [MDB IGNORE] (#23608)

* Updates chem factory tank sprites (#78209)

Updates chem factory tank sprites.

* Updates chem factory tank sprites

---------

Co-authored-by: Wallem <66052067+Wallemations@users.noreply.github.com>

* [MIRROR] Rice Dough can be made in a beaker [MDB IGNORE] (#23611)

* Rice Dough can be made in a beaker (#78062)

## About The Pull Request

Rice dough can be made in a beaker using 20u of Rice Flour and 10u of
Water. 10u of Rice Flour is made from 5u of Rice and 5u of Flour. Rice
dough can still be crafted manually using the crafting menu and the
original recipe.
## Why It's Good For The Game

Cooks can sometimes get swamped with work, especially on a high-pop
shift or when there are no botanists. By making rice dough more
convenient to make, cooks don't need to spend as much time in the
crafting menu.
Rice Flour is made from mixing equal parts Rice and Flour. Since no
recipe other than Rice dough uses both Rice and Flour in it's Recipe, it
should be fine to turn those regents into the intermediate reagent "Rice
Flour".
Fixes #77966
## Changelog
🆑
qol: Rice Dough may be made in beaker instead of being crafted, but the
rice and flour must be added first
/🆑

* Rice Dough can be made in a beaker

---------

Co-authored-by: blueDev2 <89804215+blueDev2@users.noreply.github.com>

* Automatic changelog for PR #23608 [ci skip]

* Automatic changelog for PR #23611 [ci skip]

* f

* awda

* unused type!!!

* Apply suggestions from code review

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>

* oh hey unused defines! bye

---------

Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com>
Co-authored-by: Changelogs <action@github.com>
Co-authored-by: RatFromTheJungle <62520989+RatFromTheJungle@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Wallem <66052067+Wallemations@users.noreply.github.com>
Co-authored-by: blueDev2 <89804215+blueDev2@users.noreply.github.com>

---------

Co-authored-by: nikothedude <59709059+nikothedude@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Co-authored-by: Changelogs <action@github.com>
Co-authored-by: RatFromTheJungle <62520989+RatFromTheJungle@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Wallem <66052067+Wallemations@users.noreply.github.com>
Co-authored-by: blueDev2 <89804215+blueDev2@users.noreply.github.com>
2023-09-16 11:24:49 -04:00
nikothedude 009af8c2ce [TEST-MERGE FIRST] Wound refactor number two: Full synthetic support (#78124)
## About The Pull Request

Heavily refactors wounds AGAIN.

The primary thing this PR does is completely change how wounds are
generated and added - while the normal "hit a guy til they bleed" stuff
works about the same, asking for a specific type of wound, say, like how
vending machines try to apply a compound fracture sometimes, isnt going
to work if we ever get any non-organic wounds, which the previous
refactor allowed.

With this PR, however...
* You can now ask for a specific type of wound via
get_corresponding_wound_type(), which takes wound types, a limb, wound
series, etc. and will try to give you a wound fitting those
specifications - but also, a wound that can be applied to a limb.
* This will allow for a vending machine to apply a compound fracture to
a human, but a collapsed superstructure (assuming my synth wounds go in)
to a robot

There are now new "series types" and "wound specific types" that allow
us to designate what series are "mainline" and randomly generatable, and
what are "alternate types" and must be generated manually - you can see
the documentation in wounds.dm.

The behavior of limping and interaction delays has been abstracted to
datum/wound from bone wounds to allow just, general ease of development

Pregen data now allows for series-specific wound penalties. Example: You
could set a burn wound's series wound penalty to 40, which would make
wound progression in the burn category easier - but it would not make it
any easier to get a slashing wound. As it stands wound penalties are for
wounds globally

Scar files are now picked in a "priority" list, where the wound checks
to see if the limb has a biostate before moving down in said list.
Example: Wounds will check for flesh first, if it finds it - it will use
the flesh scar list. Failing that, they then check bone - if it uses
that, it will use the bone scar list. This allows for significantly more
modular scars that dont even need much proc editing when a new wound
type is added

Misc changes: most initial() usage has been replaced by singleton
datums, wound_type is now wound_types and thus wounds can accept
multiple wound types, wounds can now accept multiple tool behaviors for
treatment, wounds now have a picking weight so we can make certain
wounds rarer flatly,

This PR also allows for wounds to override lower severity wounds on
generation, allowing eswords to jump to avulsions - but in spirit of
refactoring, this has been disabled by default (see pregen data's
competition_mode var).
## Why It's Good For The Game

Code quality is good!

Also, all the changes above allow wounds to be a MUCH more modular
system, which is one of its biggest problems right now - everything is
kinda hardcoded and static, making creative work within wounds harder to
do.

## Changelog
🆑
refactor: Refactored wounds yet again
fix: Wounds are now picked from the most severe down again, meaning
eswords can jump to avulsions
fix: Scar descs are now properly applied
/🆑
2023-09-09 19:20:21 -04:00
SkyratBot 18fc2d9b16 [MIRROR] Oldstation now has their own RND [MDB IGNORE] (#23567)
* Oldstation now has their own RND

* Update oldstation_fluff.dm

* Update techweb_types.dm

* beaker capacity

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-09-07 22:36:11 -04:00
SkyratBot 71da4ca73f [MIRROR] Refactors the notransform variable into a trait. [MDB IGNORE] (#23566)
* Refactors the `notransform` variable into a trait.

* Update robot_upgrades.dm

* modular

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-09-07 20:24:59 -04:00
John Willard aa820c08fe Oldstation now has their own RND (#78132)
## About The Pull Request

This PR does many things and I expect to be asked to atomize some stuff.

### Oldstation Additions

Oldstation now has their own research server, generating their own
points. To help alleviate major concerns, they have a few stuff to help
with this:
- They now have a pre-built operating computer
- They now have an Autopsy scanner
- They now have access to Experimental Dissection

Experimental Dissection is the old dissection, giving research points in
the form of paper notes on completion. They must be turned in to the RND
server (only works on the Oldstation one, so you can't abuse this) for
points. This was an idea I've had for some time, as Oldstation is used
somewhat as a representation of how ss13 used to be (through its use of
directional windows (before they got removed, but I'd like to bring them
back), old IDs, RTGs, and old engines before they got removed from the
game fully)

Considering there are 11 alien mobs in Oldstation, there is 27.5k
research points to get from alien corpses, enough to bring them up to
speed with whatever they wish to do. This is their 'alternative' for
experiments (which they can still do if they want, but it is very hard
to do, outside of dissection which is needed for the node).

This surgery isn't repeatable, isn't upgradable, and isn't removed by
being healed. It is not mutually exclusive with autopsy (so you can't
ruin yourself doing the wrong surgery).

### Other stuff

- Ninjas now drain RND points from the server they drain from, rather
than always hitting science
- Syncing machines to research roundstart is now a macro, and now
immediately syncs to a server on your Z-level. Machines will
automatically connect to the Science servers if none else are available.

### non-player facing

- Science, Admin, and Oldstation techwebs are now no longer vars on
research, but stored in research's list of techwebs.
- ``get_available_servers`` and ``find_valid_servers`` are now procs on
the research subsystem, rather than the experisci component.
- Oldstation code has been split into separate files.

## Why It's Good For The Game

Oldstation is one of my favorite ruins, but it is also one of the
largest complaints for RND (along with Golems) because they use the
station's Science nodes & points (I recently tried de-hardcoding Science
stuff to help prepare for this, but I didn't get everything in advance).

The complaint stems from these ghost roles, who are meant to be a fun
activity to do while waiting for the next round, using the station's
research points for their own stuff, completely untrackable unless
someone goes out of their way to grief a ghost spawn just for using
points to get things they need. These roles make their own servers to
drain the station, and I find that unfun and quite boring for everyone-
it's also not very flavorful, why would Charliestation know of the
station's RND to take advantage of it?

This hopes to fix those issues, make Charliestation more worthwhile, and
more flavorful.

## Changelog

🆑
fix: Getting a node researched now properly makes it no longer hidden.
fix: Ninjas draining RD servers now drains it from the connected
techweb, rather than sniping Science.
balance: Machines will first try to connect to a techweb with servers on
their z-level, with the Science techweb remaining as fallback.
add: Oldstation RND, comes with their own Techweb and special surgery to
gain research points through dissecting Xenomorphs.
/🆑
2023-09-07 17:59:17 +01:00
san7890 4b8de7b79f Refactors the notransform variable into a trait. (#78146)
## About The Pull Request

Hey there,

There were more than a few times (like in cinematic code) where we might
need to accurately know the source of what's adding this trait (or have
multiple sources for the whole 'we don't want this mob to do shit while
we transform this mob'), so in order to rectify this potential issue,
let's refactor it into a trait.

## Why It's Good For The Game

Some code already declared that there might be issues with this being a
boolean var (with no way of knowing _why_ we don't want this mob to not
transform (or not do anything idk). Let's remove those comments and any
future doubt in those instances with the trait macros. Also, stuff like
`TRAIT_IMMOBILIZED` which does a similar thing in many contexts was
already a trait that was regularly added in conjunction with flipping
the variable, so we're able to flatten all that stuff into
`add_traits()` and `remove_traits()` now. nice

I also cleaned up quite a bit of code as I saw it, let me know if it
should be split out but I guarantee that if I didn't do it- no one will
for the next two years.

## Changelog

🆑
refactor: If you transform into another mob and notice bugs with
interacting with the game world, please create a bug report as this
framework was recently refactored.
/🆑

Probably fucked up somewhere, lmk

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-09-07 16:45:50 +01:00
SkyratBot 2bcbb36ab9 [MIRROR] [TEST-MERGE FIRST] Allows all limbs to be dismembered and significantly refactors wounds [MDB IGNORE] (#23407)
* [TEST-MERGE FIRST] Allows all limbs to be dismembered and significantly refactors wounds

* ah fuck it

* test

* edaawdawd

* Revert "edaawdawd"

This reverts commit 47be710fe61a1f4ca79212b29b3e88bf05ec9a3a.

* nothing but sheer hatred

* freaawd

* dzfxg

* Fixing some diffs here while we are at it.

* These are deprecated and should be removed

---------

Co-authored-by: nikothedude <59709059+nikothedude@users.noreply.github.com>
Co-authored-by: nikothedude <simon.prouty@gmail.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-09-05 13:24:22 -04:00
SkyratBot 16ccf6a165 [MIRROR] Fixes the Hilbert's research tram [MDB IGNORE] (#23448)
* Fixes the Hilbert's research tram (#78035)

## About The Pull Request

Corrects the specific_tram_id helper for the Hilbert's Research to use
the hilbert tram ID. I've also dropped the `.../hilbert/research`
(tram-specific) paths in favor of simply `.../hilbert`

## Why It's Good For The Game

Fixes the Hilbert Hotel Research ruin's tram, and also stops the
malfunctioning tram event from being able to use that tram to start. (No
more trams going haywire on maps without trams!)

Closes #78018

## Changelog
🆑
fix: Hilbert's Hotel Research ruin now has a functioning tram. As a side
effect, the malfunctioning tram event should now only fire on maps with
a tram!
/🆑

* Fixes the Hilbert's research tram

---------

Co-authored-by: Shadow-Quill <44811257+Shadow-Quill@users.noreply.github.com>
2023-09-01 17:15:26 -07:00
Shadow-Quill 245ce7aba8 Fixes the Hilbert's research tram (#78035)
## About The Pull Request

Corrects the specific_tram_id helper for the Hilbert's Research to use
the hilbert tram ID. I've also dropped the `.../hilbert/research`
(tram-specific) paths in favor of simply `.../hilbert`

## Why It's Good For The Game

Fixes the Hilbert Hotel Research ruin's tram, and also stops the
malfunctioning tram event from being able to use that tram to start. (No
more trams going haywire on maps without trams!)

Closes #78018 

## Changelog
🆑
fix: Hilbert's Hotel Research ruin now has a functioning tram. As a side
effect, the malfunctioning tram event should now only fire on maps with
a tram!
/🆑
2023-09-01 14:03:50 +02:00
SkyratBot a1b1f8a399 [MIRROR] A fix for those who have found themselves in an early grave [MDB IGNORE] (#23428)
* A fix for those who have found themselves in an early grave (#77974)

## About The Pull Request

Fixes: #76918
Fixes not being able to break out of a grave, where it was implied that
you could.
Technically (I doubt it ever worked) increases the breakout time on the
grave, before it was sitting below welded lockers, now it is in line
with them.
Graves are no longer dense, it looked and felt ugly and I think is just
a carryover from them being subtypes of crates, now you can walk over
them.

## Why It's Good For The Game

Fixes some bugs that limited interaction with graves. You can still
breathe under them and stuff, but that starts to veer into balance
changes, even though that should be looked at in the future.

## Changelog

🆑 Seven
fix: Fixes not being able to break out of graves
qol: Graves are no longer dense (you can walk over them now)
/🆑

* A fix for those who have found themselves in an early grave

---------

Co-authored-by: Lufferly <40921881+Lufferly@users.noreply.github.com>
2023-08-31 12:25:17 -07:00
Lufferly 5e02e00f56 A fix for those who have found themselves in an early grave (#77974)
## About The Pull Request

Fixes: #76918
Fixes not being able to break out of a grave, where it was implied that
you could.
Technically (I doubt it ever worked) increases the breakout time on the
grave, before it was sitting below welded lockers, now it is in line
with them.
Graves are no longer dense, it looked and felt ugly and I think is just
a carryover from them being subtypes of crates, now you can walk over
them.

## Why It's Good For The Game

Fixes some bugs that limited interaction with graves. You can still
breathe under them and stuff, but that starts to veer into balance
changes, even though that should be looked at in the future.

## Changelog

🆑 Seven
fix: Fixes not being able to break out of graves
qol: Graves are no longer dense (you can walk over them now)
/🆑
2023-08-31 10:23:55 -06:00
SkyratBot db361176cf [MIRROR] Cursed Slot Machine Fixes [MDB IGNORE] (#23420)
* Cursed Slot Machine Fixes (#77989)

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

A lot of these were stuff I did in response to reviews but apparently
didn't test extremely thoroughly. My bad.

* The proc for checking if the machine is in use is split out into its
own thing for clarity, and for potential reuse.
* The signal is no longer fucked up so you can actually get more than
one curse out of the slot machine as intended.
* Admin heals (and admin heals only) can remove the status effect. This
is just in case someone fucks up a variable when running an event and
wants to quickly heal some people while they varedit it to actually be a
proper event.
* Some nice code stuff while I was there, we don't need to be
typecasting to human anymore so it's nice to fix that.

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

Fixes are good.

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

🆑
fix: The Cursed Slot Machine should now actually give you more than one
pull.
/🆑

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

* Cursed Slot Machine Fixes

---------

Co-authored-by: san7890 <the@san7890.com>
2023-08-30 21:43:10 -04:00
san7890 fb4587b336 Cursed Slot Machine Fixes (#77989)
<!-- 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

A lot of these were stuff I did in response to reviews but apparently
didn't test extremely thoroughly. My bad.

* The proc for checking if the machine is in use is split out into its
own thing for clarity, and for potential reuse.
* The signal is no longer fucked up so you can actually get more than
one curse out of the slot machine as intended.
* Admin heals (and admin heals only) can remove the status effect. This
is just in case someone fucks up a variable when running an event and
wants to quickly heal some people while they varedit it to actually be a
proper event.
* Some nice code stuff while I was there, we don't need to be
typecasting to human anymore so it's nice to fix that.

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

Fixes are good.

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

🆑
fix: The Cursed Slot Machine should now actually give you more than one
pull.
/🆑

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