Commit Graph

644 Commits

Author SHA1 Message Date
GoldenAlpharex
db83be17da [MANUAL MIRROR] SPECIES NUKING 2023: Head flags 2: Electric Boogaloo (#76298) [MDB IGNORE] (#22506)
SPECIES NUKING 2023: Head flags 2: Electric Boogaloo (#76298)

Continues the work I started on
https://github.com/tgstation/tgstation/pull/76074
Fixes https://github.com/tgstation/tgstation/issues/73782

Implements a bunch of wrapper procs for hair style, facial hair style,
etc etc the whole nine yards.
Fixes many issues, especially with gradients because I did sloppy tired
code that didn't work there.
Makes head/get_limb_icon() not a disgusting mess (well, at least makes
it less of a disgusting mess).

Actually makes hair and lips depend entirely on the bodypart.

🆑
refactor: Head rendering code has been updated significantly... Again.
Please report any issues with hair, facial hair, lipstick and such.
/🆑

Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
2023-07-16 18:16:12 -04:00
SkyratBot
ed294532c6 [MIRROR] transform the paper wizard from a simple to a basic [MDB IGNORE] (#22452)
* transform the paper wizard from a simple to a basic (#76688)

## About The Pull Request
i transfered paper wizard from simple to a basic and i also gaved him
new fetures he can go and do. now when he will go and walked when he
walks there will be a paper effects when he goes to walk. also he will
he will now go to look for paperes on the floor and then he will write
stuff inside the paper, so a player can maybe distracted the wizard with
a paper because the wizard will stop atacked him for a bit until he
finished writted stuff inside the paper. i follow the instrucions in the
learn-ai md to maked this to a new ai subtree behavier.

## Why It's Good For The Game
the paper wizard is now a basic so he is a better ai and he also have
more feture to gaved him depth mechanics

## Changelog
🆑
refactor: paper wizard have been refactored, please report any
bugs/unintended behavior
refactor: refacted the datum/elememt/trial to an bespoken element
add: paper wizard now have effects when he walking and he will now go
and look for paperes and write stuff in them
/🆑

* transform the paper wizard from a simple to a basic

---------

Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
2023-07-14 13:10:55 -04:00
SkyratBot
35e28a5b4a [MIRROR] Goliath basic mob [MDB IGNORE] (#22412)
* Goliath basic mob (#76754)

## About The Pull Request

Converts Goliaths to the basic mob framework and gives them some new
moves because I can't leave things well enough alone.
I am planning on touching all the lavaland fauna and then maybe even the
icebox ones if I haven't got bored. The Golaith is the first because it
is iconic.

https://www.youtube.com/watch?v=JNcKvMwT4-Q
Here's me getting killed by one as a demonstration. Despite my poor
performance I would contend that they aren't a _lot_ more dangerous, but
they are a little more dangerous.

The chief difference here is that they have two new attacks which they
will only use in response to being attacked.
If fired at from range, they will target the attacker with a line of
tentacles (it doesn't track you, so is easily sidestepped).
If attacked in melee, they will surround _themselves_ with tentacles, on
a longer cooldown.

Something else you may notice in this video: I discovered that basic
mobs are actually _too smart_ to be Lavaland fauna.
Typically (unlike their old form) a mob on our new AI system is smart
enough to attack someone _the moment they come into range_ rather than
only checking on predictable ticks, which would make using the Crusher
an essentially unviable prospect.
To counteract this, Goliaths now have a delayed attack component which
gives you a visual warning and short duration to get out of range before
they swing at you. I will probably put this on all mining fauna that get
reworked, it wouldn't be a terrible thing to put on other mobs to be
honest.

Other changes: The goliath stun is now a status effect with _buckles_
you to the tentacle as if grabbed, as well as its previous effects.
While this seems purely worse, any nearby helpers can now help-click on
you to instantly remove the debuff.
Experiencing the effect of a Lobstrosity Rush Gland makes you immune to
being grabbed by tentacles and an implanted one will automatically
trigger and free you if you are hit, and the explosive effect of
Brimdust also causes the tentacle to retract (although you'd need to
take damage for this to happen). Using the tools of the land, you can
make these creatures less threatening.

The ability for a Goliath to chain-apply the ability has now also been
reduced, it won't refresh its duration if you are hit when already
buckled.

When not occupied hounding miners, Goliaths will intermittently dig up
the asteroid sand and eat any worms that this produces.
I also made some new sprites for riding a Goliath because they've been
broken since the Lavaland mob update and also kind of were ugly before
then anyway:

![image](https://github.com/tgstation/tgstation/assets/7483112/90580403-d82f-4c29-b3e1-6c462e01edda)

Other code changes:
- I made an element which only lets an attached object move every x
seconds. This is because Goliaths are far too slow to use the speed
system (the glide just looks bugged as hell) but one thing I am invested
in when converting these is to make sure that they share the same
behaviour when player or AI controlled. This is disabled while you're
riding them because it was interminably slow.
- The Goliath tentacle trail uses a supertype object now shared with the
Meteor Heart which did something kind of similar.

## Why It's Good For The Game

It begins the process of moving one of our larger subsets of NPCs onto
the newer framework for NPC behaviour.
It adds a little bit more life to an iconic but slightly uninteresting
foe which mostly just walked at you slowly.
This PR contains a few components I expect to apply more widely to other
mobs in the future.

## Changelog

🆑
refactor: Goliaths now use the Basic Mob framework, please report any
unusual behaviour.
add: Goliaths learned a couple of new attacks which they will use in
self-defence.
balance: Help-clicking a miner grabbed by Goliath tentacles will
immediately free them, as will the effect of several items you can
scavenge from around Lavaland.
image: New sprites for the Goliath saddle.
/🆑

* Goliath basic mob

* Update ash_rituals.dm

* fixes icon diff

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
Co-authored-by: Giz <vinylspiders@gmail.com>
2023-07-14 03:10:50 +00:00
SkyratBot
21203c5436 [MIRROR] Fixes one of language_transfer unit test Test Assert readouts [MDB IGNORE] (#22403)
Fixes one of `language_transfer` unit test Test Assert readouts

Co-authored-by: Jolly <70232195+Jolly-66@users.noreply.github.com>
Co-authored-by: Giz <vinylspiders@gmail.com>
2023-07-14 02:46:45 +00:00
SkyratBot
02648adcd6 [MIRROR] Refactors mind language holders into non-existent, fixes new languages being deleted on species swap + tests [MDB IGNORE] (#22348)
* Refactors mind language holders into non-existent, fixes new languages being deleted on species swap + tests

* Fixing merge conflicts

* don't forget to ctrl+s!

* Another forgotten file

* urgh

* gets rid of vestiges of update_atom_languages()

and mind language holders

* No longer needed

* Fixes some modular grant_language calls

* Deprecated code

* This was up here before..

* Fixes failing unit tests, refactors silverscale lizards language a bit removing the need for skyrat edits

Removes some no longer needed code

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
Co-authored-by: Giz <vinylspiders@gmail.com>
2023-07-13 22:38:45 -04:00
SkyratBot
0e0ac6dcbf [MIRROR] Unit test gaining and removing traumas [MDB IGNORE] (#22390)
* Unit test gaining and removing traumas (#76748)

## About The Pull Request

Requires #76744

Tests the granting and removing of brain traumas.

## Why It's Good For The Game

See
https://github.com/tgstation/tgstation/pull/76744#issuecomment-1630066603

## Changelog

Not necessary unless it finds something funky

---------

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

* Unit test gaining and removing traumas

* skyrat changes

* Update trauma_granting.dm

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
2023-07-13 10:52:32 -04:00
Zergspower
9371340945 [Manual mirror fix] Fixes and includes clothing_under_armor_subtype_check.dm in the unit tests. (#22411)
* Merge branch 'master' of https://github.com/Skyrat-SS13/Skyrat-tg into upstream-merge-76184

* Akula's are angry apparently

* Video Search is a liar

* wetsuit pain
2023-07-12 21:36:29 -04:00
SkyratBot
27952f3232 [MIRROR] Fix Too Slowing people with high fives [MDB IGNORE] (#22086)
* Fix Too Slowing people with high fives  (#76277)

## About The Pull Request

At some point with the refactors to offering it was made so that
dropping the item stops the offer, unfortunately too slowing people with
high fives relied on this behavior (dropping not stopping the offer).

Restores that behavior with a bit more code tweaking.

## Why It's Good For The Game

How can I be too slow?

## Changelog

🆑 Melbert
fix: You can once again "too slow" someone with a high five
/🆑

* Fix Too Slowing people with high fives

* d'oh!

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
2023-07-12 15:22:07 -04:00
SkyratBot
e6b03254ce [MIRROR] Converts foxes to basic mobs. [MDB IGNORE] (#22358)
* Converts foxes to basic mobs. (#76662)

## About The Pull Request

As the title says, foxes are now basic mobs.

Foxes have a few new behaviors now, rather than the zero behaviors they
had before. Foxes, being very skittish animals, will flee from anything
that damages them. Additionally, they now have hunting behavior,
tracking down and killing anything of their size or smaller - regardless
of faction. They will not, however, hunt as long as someone is watching
them - which is to say, if any living humans are within 7 tiles of them.
Don't leave a fox and a chicken together while you're transporting your
grain to Lavaland! Also, make sure you don't leave Renault and Ian on
their play date unsupervised...

![image](https://github.com/tgstation/tgstation/assets/105025397/152f56f7-02ae-4b1f-8556-2571ed485683)
## Why It's Good For The Game

Gets rid of another simple animal. We grow ever closer to ascension.

Also, makes foxes a little more interesting rather than simply another
animal that does literally nothing. Renault will now flee from anyone
trying to kill her, for instance. Also opens up unique avenues of pet
murder if you want to make it look like an accident.
## Changelog
🆑
refactor: Foxes are more crafty now. They will run from danger, and hunt
small prey when no one is keeping an eye on them. Don't leave Renault
alone with Ian!
/🆑

* Converts foxes to basic mobs.

* Run UpdatePaths

* Fixes a renalt objective modular override

---------

Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@users.noreply.github.com>
Co-authored-by: Giz <vinylspiders@gmail.com>
2023-07-12 10:32:33 -04:00
SkyratBot
cacc49db8b [MIRROR] Datumizes out jobconfig.toml (extensibility edition) [MDB IGNORE] (#22243)
* Datumizes out jobconfig.toml (extensibility edition) (#76102)

## About The Pull Request

Hey there,

#75992 (fc54fd6a60) made me realize just
how wacky the job config system is to people trying to add more new
stuff to it, so I finally got the motivation to fix it up.

The gist is that it does all of the same stuff on the front-end as you
would expect, but instead of having to modify core generation code to
create/recreate the files, it instead uses a robust series of getters
and setters. It's much better to use these getters and setters because
we can apply needed game logic (like ensuring that the age that the
server operator puts in is actually sane, and not completely out of
bounds (if you want to permanently price people out of a position, just
set it to 0)). The getters are also nifty too, because they let me atone
for an early mistake I made with how assistants are meant to work with
"unlimited" nonsense.

All a new coder who wants to add stuff to the config needs to do now is
create the define, create the datum, add the procs for the datums, and
that's it! They don't have to do any of the wacky stuff or account for
weird stuff or do any weird copypasta, it's all handled by the system.
One datum is all you need, quite neat.

This also fixes some issues in #75992 that probably weren't discovered
in testing, but the only good way to fix it was a retune+refactor, which
is included in this PR.
## Why It's Good For The Game

Much more extensible, ensuring this system actually works as fully
intended, etc.

I fixed up the documentation (they didn't regenerate the job config
after they updated the code-side documentation) and some weird spacing
stuff that I missed in my review of that aforementioned PR. Everything
should work as expected, it's been tested quite a bit. It's also in its
own folder now, which is neat because we can share the local defines and
split all this stuff out of the already-quite-large SSjob file.
## Changelog
🆑
server: job_config.toml should now comply with reload-configuration
verb, meaning you can hot-reload the configuration from disk and have it
apply ingame automatically.
config: The documentation for setting Minimum Character Age on a per-Job
basis has been altered to be more explicit.
fix: The Minimum Character Age configuration entry is now sanitized to
ensure that it's within the codebase-defined ages, since there's no
(legitimate) way to get a character outside of those ages anyways.
Invalid values will log to the config log.
/🆑

---------

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

* Datumizes out jobconfig.toml (extensibility edition)

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-07-11 23:13:41 -04:00
Bloop
df074b9966 [MANUAL FIXED MIRROR] 22129 and 22154 (#22379)
* Makes hoods into a component (#75977)

## About The Pull Request

Refactors the behaviour of "one clothing item deploying another clothing
item" from `/obj/item/clothing/suit/hooded` and makes it into a
component.
This allows you to make hooded items which are not part of that
typepath. It also means you could make (for instance) a hat which can
deploy a pair of sunglasses into the eye slot or a jumpsuit with
deployable clown shoes or something.

I need to pass in an assload of callbacks because we have a bunch of
special hoodies that want to do things when you raise and lower the
hood, but for a normal item you would not need these.

## Why It's Good For The Game

Frees people from the tyrrany of typepaths, mostly.
Plausibly you could use it to do something fun we don't currently do.

## Changelog

Not player facing, hopefully. As long as I did this all right.

* Makes hoods into a component

* [no gbp] Fixes item action buttons

* Update items.dm

* Fix mirror 22129

* Some last minute updates -- comment and small optimization

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-07-11 19:57:19 -04:00
SkyratBot
7a504490f0 [MIRROR] SPECIES NUKING 2023: Refactors a bunch of species traits into flags for the head bodypart [MDB IGNORE] (#21991)
* SPECIES NUKING 2023: Refactors a bunch of species traits into flags for the head bodypart

* Makes it all compile, for now

* Fixes eye emissives not working right.

* Fixes the plasmaman head (oof conflicts)

* Fixes the screenshot tests

---------

Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2023-07-08 15:25:17 -04:00
lessthanthree
23c21e3b08 Update moth screenshot on unit test (#22259)
Update screenshot_humanoids__datum_species_moth.png
2023-07-05 19:22:47 -04:00
SkyratBot
1e4ecf1f66 [MIRROR] [NO GBP] Plant bags harvesting fix and other hotfixes for floor sickness [MDB IGNORE] (#22237)
* [NO GBP] Plant bags harvesting fix and other hotfixes for floor sickness (#76479)

## About The Pull Request

After #76018 people reported that you need to do an extra click when you
harvest with plant bag because harvest always dropped on top of
hydrotray instead of going into the bag.

And It looked bad when people just left their harvest on hydrotrays
without picking it up.

I reverted the change that made harvest spawn on top of hydrotrays to
address both issues.

Hydrotrays still protect from germs if the plant was harvested using
telekinesis.

Fixes #76462

Also fixes sloppy mistake in Carpellosis - I was checking whether the
target has mouth instead of owners mouth in the gnashing check.

And it makes patches not become dirty, showing warning message. They
weren't infective anyway.

## Why It's Good For The Game

Fix

## Changelog

🆑
fix: Plant bags now properly harvest items when you click on hydrotray
with it, and don't pick up anything except the harvest
fix: Carpellosis gnashing checks owner's teeth availability instead of
the target's teeth
fix: Patches don't have a message saying that they're dirty
/🆑

* [NO GBP] Plant bags harvesting fix and other hotfixes for floor sickness

---------

Co-authored-by: Andrew <mt.forspam@gmail.com>
2023-07-04 15:58:32 -07:00
SkyratBot
0f7501ce75 [MIRROR] Monkeyize() now gives you an anonymous monkey name. [MDB IGNORE] (#22206)
* Monkeyize() now gives you an anonymous monkey name. (#76459)

## About The Pull Request

Previously Lesser Form would transform you into a monkey with the same
name as you had before transforming.
Nobody has complained about this because nobody uses Lesser Form for its
intended purpose, but it should probably work for that anyway.

Now when you use Lesser Form it will call you "monkey (420)" or
something instead, so it's less obvious that you're just larping as a
monkey.
I checked and you still get your name back if you're a normal human who
gets turned into one and back via DNA machine don't worry.

Also I unit test it.

## Why It's Good For The Game

Allows ability to be used for its presumed intended purpose.

## Changelog

🆑
fix: Lesser Form monkeys no longer maintain the name of the form you had
prior to transformation.
/🆑

* Monkeyize() now gives you an anonymous monkey name.

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-07-03 17:15:15 -04:00
SkyratBot
7dacb26be0 [MIRROR] Adds wound armor to ALL jumpsuits that were missing it [MDB IGNORE] (#21957)
* Adds wound armor to ALL jumpsuits that were missing it (#75956)

## About The Pull Request

Adds wound armor to ALL jumpsuits that were missing it.

Every jumpsuit, by default, has 5 wound armor. However, because for some
godforsaken reason armor datums don't use subtypes (seriously, the
fuck?), the vast majority of jumpsuits weren't updated to have anything
in case they overrode the base armor.

This includes critical oversights such as any nonstandard jumpsuit meant
to be armored (Tracksuits, turtlenecks, admin suit, tgmc suit). This is
especially critical a problem on nuclear operatives, who face a lot of
combat every round and need that wound armor.

Any nonstandard jumpsuit that also protects from departmental hazards
doesn't recieve the wound armor, this is seemingly reasonable with, say,
medical jumpsuits, but starts to get weird when it includes engineering,
botany, the RD, CMO, and CE..

Plasmaman envirosuits also don't by default. This may or may not be on
purpose but I added it on them just in case.

Armored jumpsuits that didn't have the wound resistance now have 10,
instead of the base 5, since they're meant to be, well, armored. This
might also make durathread useful for something (lol, as if)

## Why It's Good For The Game

Consistency. It's very inconsistent that 'wound' armor randomly pops in
and out of places ingame. It requires you to think like a space whale to
figure out what's the Best Combat Uniform rather than picking what
SHOULD be the right choices.

## Changelog

🆑
fix: Adds wound armor to ALL jumpsuits that were missing it
/🆑

* Adds wound armor to ALL jumpsuits that were missing it

---------

Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
2023-07-01 15:32:02 -04:00
SkyratBot
f485737ea1 [MIRROR] Eating from floor may cause disease [MDB IGNORE] (#22151)
* Eating from floor may cause disease

* Update turf.dm

---------

Co-authored-by: Andrew <mt.forspam@gmail.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-07-01 01:30:17 -07:00
SkyratBot
cafebd0ea6 [MIRROR] Fixes a compiler warning when compiling unit tests (that I caused) [MDB IGNORE] (#22150)
Fixes a compiler warning when compiling unit tests (that I caused)

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-06-30 23:16:58 -07:00
GoldenAlpharex
92b006bb26 (Hopefully) Fixes all of the current non-flaky CI issues (#22122)
* Fixes all of the current non-flaky CI issues

* Whoops, okay now it'll work
2023-06-29 10:08:10 +12:00
Nerevar
6b57e50614 Makes Podpeople Hair Recolorable 3-D: The Revenge (#19908)
* wew

* hell yes fuck yes

* Replace podhair with modular tricolor podhair

Co-authored-by: Nerevar <12636964+Nerev4r@users.noreply.github.com>

* help me oh my god

* we're cooking

* done

* what if i were to purchase fast food

* yeah baby

* so true bestie

* let's fucking go

* screenshot tests updated

* wew

* thanks in_phaze !

* we put our whole coderussies into this

* weird but ok

---------

Co-authored-by: Snakebittenn <12636964+Snakebittenn@users.noreply.github.com>
Co-authored-by: Penelope Haze <out.of.p.haze@proton.me>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-06-28 15:59:19 -04:00
theOOZ
f8afe4d8c6 [Semi-modular] (The big) Akula species revamp (#20131)
* initial i think

* stuff

* test

* fix

* close to publishing

* k

* raise akula tail 1 px

* beginning of clothing

* akula species trait initial

* reviews and CI

* head.dm runtime

* some reviews

* oops

* oops 2x

* review

* job equipping

* clothing flavor

* forgot the .dme

* runtime test

* foundation to more clothing

* errors

* almost ready now

* forgot

* new loadout species restriction

* null runtime

* runtime test

* sprite error

* atleast fill this in

* screenshot test

* lots of descriptions

* i forgot to add job clothing values

* get_species_lore

* prepare_human_for_preview fix

will need new screenshot test probably

* screenshot test fix

https://github.com/Skyrat-SS13/Skyrat-tg/issues/20284

* loreupdate

* write it better

* forgor 💀

* dixel fix

* sprite fix

* job outfit armor changes

* reviews

* extra

* desc formatting

* linter

* reviews part 1

* forgot

* reviews part 2

* reviews part 3

* reviews part 4

* forgot

* fixes

* fix for aquatic digilegs

* small

* fire/water balancing like yin and yang

* modularity thing

* aquatic rename

* A fix and change

* moves sphere 1px and loadout thing

* hair bugfiex

* Te Velu Akko

* head internals

* more patches

* akula eyenudge
2023-06-27 18:19:38 +01:00
OrionTheFox
a85d9f5510 Removes stockpart/crystal sprite overrides (#22057)
* Stockparts

* Crystals

* Update screenshot_antag_icons_fugitive.png
2023-06-26 06:18:04 +00:00
SkyratBot
a863e7787d [MIRROR] Unit tests now catch decals in walls/space [MDB IGNORE] (#21862)
* Unit tests now catch decals in walls/space

* the fuck

* vr

* vr

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: Jolly-66 <70232195+Jolly-66@users.noreply.github.com>
2023-06-20 10:28:46 -04:00
SkyratBot
ee58caa1f6 [MIRROR] Removes amount_list_postion from reagent containers, adds related unit test. [MDB IGNORE] (#21869)
* Removes amount_list_postion from reagent containers, adds related unit test. (#76057)

We had more issues like what #76013 addressed, now they're gone.
Variable transfer amount is now explicit.
Amount is now inferred from current value, performance concern here is
minimal. Less work and mistakes when making new types.

* Removes amount_list_postion from reagent containers, adds related unit test.

* update modular

* Fixes the failing unit test, hopefully

---------

Co-authored-by: AnturK <AnturK@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2023-06-19 17:32:22 -04:00
SkyratBot
da5da42a18 [MIRROR] Refactors the worst list ever, Stun Absorptions, into status effects + makes status flags more accurate (making certain mobs more vulnerable to incapacitations?) [MDB IGNORE] (#21884)
* Refactors the worst list ever, Stun Absorptions, into status effects + makes status flags more accurate (making certain mobs more vulnerable to incapacitations?) (#76000)

## About The Pull Request

- Refactors the stun absorption list into a status effect

- Does a fair bit of cleanup around stun code

Weird thing involved in this.
Check out this define.
`IS_STUN_IMMUNE(source, ignore_canstun) ((source.status_flags & GODMODE)
|| (!ignore_canstun && (!(source.status_flags & CANKNOCKDOWN) ||
HAS_TRAIT(source, TRAIT_STUNIMMUNE))))`
Notice anything odd about it?
It only checks for `CANKNOCKDOWN`.
What does this mean?
Well, *every single* one of the stun procs used this macro for checking
stun immunity. Which means every method of stun checked the
`CANKNOCKDOWN`.
This means that, say you have a mob which has `CANSTUN` but not
`CANKNOCKDOWN`.
Intuitively this means that the mob cannot be knocked down, but can be
stunned.
But instead, this means the mob can't be stunned either.
This doesn't affect humans, they have all the status flags, but it does
affect some other mobs.
Alien adults (not queens) have `CANUNCONSCIOUS|CANPUSH`. Before, they
didn't have `CANKNOCKDOWN`, so they were fully immune to stuns and
sleeps. But now, they can be knocked unconscious.
However, overall it doesn't change much, as most mobs that flipped off
`CANKNOCKDOWN` flipped off the others too.
For consistency though it makes sense for these flags to work as they
imply.

- `incapacitate` didn't have a signal, now it does

## Why It's Good For The Game

More consistent, better code? I may use this in the future.

## Changelog

🆑 Melbert
refactor: Refactored Stun Absorptions (Bastard Sword, His Grace)
refactor: Refactored Stun Immunity. Note this means that some mobs
which, prior, were immune to all forms of incapacitation are now
vulnerable to some. Notably, adult non-queen xenomorphs are now
vulnerable to falling unconscious.
/🆑

* Refactors the worst list ever, Stun Absorptions, into status effects + makes status flags more accurate (making certain mobs more vulnerable to incapacitations?)

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-06-18 14:18:06 +01:00
Tom
9398b10991 Converts mold mobs to basic mobs (#21317)
* mold mobs to basic

* Apply suggestions from code review

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

* changes from review

* Update modular_skyrat/modules/biohazard_blob/code/mold_mobs.dm

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

* suggestions from review

* fix some weird merge bits

---------

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
2023-06-17 14:37:29 -04:00
Tom
90967a0cc4 Mold refactor: Mold datums (#21328)
* datumised moldies

* fix dme

* Update modular_skyrat/modules/mold/code/mold.dm

* Update modular_skyrat/modules/mold/code/mold.dm

* lints

* event adjustments and fixes

* spawning fixes and aaghgh a lot of stuff

* remove some testing bits

* add some docs

* more tweaks

* Update CODEOWNERS (rip tastyfish)

* review in mold.dm

* Apply suggestions from code review

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

* changes from review

* I thought I removed this

---------

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
2023-06-15 16:48:43 -04:00
SkyratBot
c9baa7ff26 [MIRROR] Converts Spaceman mobs from simple to basic [MDB IGNORE] (#21757)
* Converts Spaceman mobs from simple to basic (#75944)

## About The Pull Request

This changes the Spaceman simplemobs into basic mobs.

They really didn't do anything besides stand around and retaliate, so no
new AI datums had to be added.
## Why It's Good For The Game

Scratch it from da list.
## Changelog
🆑
code: Spaceman simple mobs have been converted to basic mobs.
/🆑

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>

* Converts Spaceman mobs from simple to basic

---------

Co-authored-by: Rhials <Datguy33456@gmail.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
2023-06-10 22:57:18 +01:00
SkyratBot
22347f4522 [MIRROR] the cooler daniel: ninja's katana looks cooler when on the belt [MDB IGNORE] (#21715)
* the cooler daniel: ninja's katana looks cooler when on the belt (#75719)

## About The Pull Request

![image](https://github.com/tgstation/tgstation/assets/43571008/997b9394-d858-43bf-86fd-28f035b3d718)

i made this a long ass time ago for when i ported tg ninja to a
different codebase and i repurposed the katana sprite to look cool and
edgy when on the belt but never actually brought it to here

i thought it looks nice
## Why It's Good For The Game

it looks better and is more visually telling than just the generic 'this
is a katana' belt sprite
## Changelog
🆑
image: energy katana on belt
/🆑

* the cooler daniel: ninja's katana looks cooler when on the belt

---------

Co-authored-by: zeroisthebiggay <43571008+zeroisthebiggay@users.noreply.github.com>
Co-authored-by: ghost sheep <sheepwiththemask@gmail.com>
2023-06-08 14:26:54 +00:00
SkyratBot
f0a55803ae [MIRROR] Belt resprite with soul? Blasphemy! [MDB IGNORE] (#21720)
* Belt resprite with soul? Blasphemy!

* fix

* screenshot test

---------

Co-authored-by: Youtubeboy139 <jared.klaas@gmail.com>
Co-authored-by: ghost sheep <sheepwiththemask@gmail.com>
2023-06-08 13:59:56 +00:00
SkyratBot
c968dca9b2 [MIRROR] Turns Changeling Headslugs into a Basic Mob [MDB IGNORE] (#21690)
* Turns Changeling Headslugs into a Basic Mob

* fix

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: ghost sheep <sheepwiththemask@gmail.com>
2023-06-07 16:01:15 +00:00
SkyratBot
c4a58bb0c6 [MIRROR] Cleans up/renames as private some internal var definitions, removes some fucked uses of internal list vars [MDB IGNORE] (#21679)
* Cleans up/renames as private some internal var definitions, removes some fucked uses of internal list vars (#75769)

## About The Pull Request

[Improves the documentation of DCS lists, removes old list of callback
docs that no longer
apply](c3821d9f5f)

[Adds a second signal register to decal rotating, adds a trait to
objects under a tile. STOP DIRECTLY READING HIDDEN LISTS I SWEAR TO
GOD](6b3f97a76a)

[Removes direct reads of the timer list, they were redundant
mostly](14fcd9f8a6)

[Please stop directly reading/modifying the traits list to ensure your
dna rot follows the
brain](ec0e5237ec)

[Marks internal datum lists as well internal with
_](57c6577ff6)

[57c6577](57c6577ff6)

Does the same to _clear_signal_refs() in hopes of keeping people from
touching it

## Why It's Good For The Game

They pissed me off.

Users should not be touching these lists, especially in ways that make
assumptions about their structure and are thus prone to breaking if that
ever changes.
Most of these are close to zero cost changes, using a wrapper to solve
the problem, or just yeeting it

Two aren't, Decals with a direction have gained a second signal register
on init, and things that sit underfloor (cables/pipes) now get a trait
when inserted there.

This should have a minimal impact on memory/init time, bugging
@ Mothblocks about it just in case

* Cleans up/renames as private some internal var definitions, removes some fucked uses of internal list vars

* fix

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: ghost sheep <sheepwiththemask@gmail.com>
2023-06-07 15:10:42 +00:00
SkyratBot
19d04376e6 [MIRROR] Refactors chicks into basic mobs [MDB IGNORE] (#21602)
* Refactors chicks into basic mobs (#75663)

## About The Pull Request

On the tin. They have pretty much nothing in common with chickens, so no
subtyping. They are in the same folder to keep that whole thing tidy,
though.

Also includes fixes to `growth_and_differentiation` element that I made
for spiderlings, since some stuff was yorked without me realizing. It
pretty much worked flawlessly for these chicks otherwise though. It all
works fine now.
## Why It's Good For The Game

More verbose naming scheme (instead of "holo", we get "permanent"
chicks), smarter AI for chicks, knocks them off the list, etc. etc.

One thing that I wanted to do was to have chicks recognize their mother
(if they had one), but that would be way out of scope for this simple
port PR. I'll dwell on adding something cool for that in the future.
## Changelog
🆑
refactor: Chicks are now a bit smarter, be careful not to squish them!
/🆑

Let me know if the whole "COMPONENT_KILL" thing is cringe, I couldn't
figure out a better way to do it without abusing `GetComponent()` to
`qdel()` it that way.

* Refactors chicks into basic mobs

* fix

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: ghost sheep <sheepwiththemask@gmail.com>
2023-06-07 13:58:53 +00:00
SkyratBot
e4583c5fb2 [MIRROR] Refactors Ant into Basic Mob [MDB IGNORE] (#21601)
* Refactors Ant into Basic Mob (#75662)

## About The Pull Request

On the tin. No new fancy AI wheels or anything, just a simple port.
## Why It's Good For The Game

Knocks another one off the list, just really light stuff. They're a bit
smarter now too, I think the intention was them for them to be pet-like
as well (according to the code). Should be really rather easy to give
them the pet-like behaviors and elements if someone really wants to in
the future, just sorta paving the way for more work to be done to make
mobs more intricate/interesting.
## Changelog
🆑
refactor: Giant ants are now more capable of distinguishing friend and
foe.
/🆑

* Refactors Ant into Basic Mob

---------

Co-authored-by: san7890 <the@san7890.com>
2023-06-07 15:39:41 +02:00
SkyratBot
33adb63d55 [MIRROR] Re-pr of #70522 "Space Dragon Update: Up Close and Personal" [MDB IGNORE] (#21553)
* Re-pr of #70522 "Space Dragon Update: Up Close and Personal"

* Update mind_linker.dm

* Update hivemind.dm

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-06-05 20:56:31 -07:00
SkyratBot
18fe422bf6 [MIRROR] makes snow legions from portals drop skeletons (like tendril legions) [MDB IGNORE] (#21589)
* makes snow legions from portals drop skeletons (like tendril legions) (#75707)

## About The Pull Request
Exactly what it says on the tin (snow legions only dropping ashen
skeletons, like tendril legions).

Also changes the name of the "fromtendril" variable to "from_spawner",
and comments it. Not sure if that warrants a changelong comment, but
I'll go ahead and assume no.

## Why It's Good For The Game
being able to farm snow legion portals for an endless tide of bodies
and/or equipment is a bit weird. also puts it a bit more in line with
the legions of Lavaland

## Changelog

🆑
balance: The source of the demonic portals that endlessly deposits snow
legions onto the Icemoon no longer preserves the bodies nor gear of the
damned (read: demon portal snow legions now only drop skeletons).
/🆑

---------

Co-authored-by: Hatterhat <Hatterhat@ users.noreply.github.com>

* makes snow legions from portals drop skeletons (like tendril legions)

---------

Co-authored-by: Hatterhat <31829017+Hatterhat@users.noreply.github.com>
Co-authored-by: Hatterhat <Hatterhat@ users.noreply.github.com>
2023-06-03 18:37:21 -07:00
SkyratBot
8c0af345d8 [MIRROR] New traitor item: Mail Counterfeit Devices [MDB IGNORE] (#21508)
New traitor item: Mail Counterfeit Devices (#75390)

## About The Pull Request

This PR will add new (antag) device, that will allow players to
counterfeit mails, putting (almost) anything they want and arming it, if
they liked to.

Upon activation this device will give you multiple choices like:
- Is it gonna be an envelope or a normal mail?
- Is it gonna be armed?
- Who is gonna be a recipient?
- If it is a non private mail, then what title it is gonna have?

Those devices can put any single normal sized item inside a mail, that
is gonna be activated upon opening if mail armed. Mail creator and other
ditalis will be shown to admins upon activation for admin purposes.
By activation i mean `attack_self` proc of an item.

Armed mail can be disarmed by using, BUT! Only owner can disarm it with
100% success rate. Other people will have 50% chance of fail, that will
activate a trap.

Those devices also have few more admin-only variations:
```
/obj/item/storage/mail_counterfeit_device/advanced
/obj/item/storage/mail_counterfeit_device/bluespace
```
They can put more items inside a mail.

### How to get those naughty devices?
- Those devices can be purchased in uplink. One device goes for one TC.
- QM and Cargo Technicians have special kits that costs 2 TC and have 6
devices.

And yeah, i also fixed issue with envelopes, they actually have 2 items
inside, but player were given only first one.

Proof of testing:

![dreamseeker_ngVIMHxdQf](https://github.com/tgstation/tgstation/assets/121913313/2bd997a9-8de6-4c32-878b-b13438f1a51e)
(minibomb was set to instant detonation before recording)

## Why It's Good For The Game

This PR will give a lot of new possibilities for traitors. Those mails
can be used not only as bombing tools, but also for contraband and other
purposes. Also those mails can be used for (b)admin stuff.

## Changelog

🆑
add: added a mail counterfeit device that can make custom (and also
armed) mails. Traitors have those devices in their uplinks.
add: added new kit for QM and Cargo Technicians that have multiple mail
counterfeit devices for neat price.
fix: fixed envelopes that were giving only their first item, even tho
they had two items insede.
image: added new icon for mail counterfeit device.
/🆑

---------

Co-authored-by: HWSensum <121913313+HWSensum@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
2023-06-01 16:24:27 -07:00
SkyratBot
35581924cc [MIRROR] Turf Icons Unit Test [MDB IGNORE] (#21298)
* Turf Icons Unit Test (#75488)

unit tests turf icons to find... well, missing icons. honk.

fixes #75372
corrects a bunch of things messed up in #65504

🆑 ShizCalev
code: Made a new unit test to find turfs with broken/missing icons!
Rejoice!
fix: Fixed a bunch of incorrect and missing turf icons.
/🆑

* Turf Icons Unit Test

* Turf icon unit test modularity support update

* Should hopefully fix all of the failing turf icon tests

---------

Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2023-05-31 23:31:05 -04:00
theOOZ
78658e9d08 [NO GBP] Fixes screenshot test CI (#21549) 2023-05-31 17:08:18 -04:00
SkyratBot
5ba106ec03 [MIRROR] Fixes stacking machine and adds a drone dispenser to Tram as well as the required map items list [MDB IGNORE] (#21447)
* Fixes stacking machine and adds a drone dispenser to Tram as well as the required map items list (#75653)

## About The Pull Request
Fixes #75611
Fixes #75609

This makes a small change to a few tiles outside of Science. There were
three turfs that were never actually linked to any of the modular
maintenance areas, so they just sat there as dirt turfs with nothing on
them. I changed them to metal so they'll fit with the surroundings in
each template and put the fab there, since we want it to show up in all
three of them. I can go back and add that area to each of the templates
instead if MMMiracles thinks that's a better choice, but I feel like
this works fine.

Also adds the drone dispenser to required map items so unit tests will
fail if they're not present.

## Why It's Good For The Game
Map consistency and bug fixes are good.

## Changelog
🆑
fix: Adds a drone dispenser to Tramstation.
fix: The stacking machine on Tramstation no longer has incorrect input
and output directions at roundstart.
config: Drone dispensers are now listed as required map items for
passing unit tests. If one is not present on your map, it will fail the
test.
/🆑

* Fixes stacking machine and adds a drone dispenser to Tram as well as the required map items list

---------

Co-authored-by: TheVekter <TheVekter@users.noreply.github.com>
Co-authored-by: Jolly-66 <70232195+Jolly-66@users.noreply.github.com>
2023-05-29 22:30:49 +00:00
SkyratBot
d52445f5df [MIRROR] Turns Chickens into Basic Mobs [MDB IGNORE] (#21414)
* Turns Chickens into Basic Mobs (#75592)

* Turns Chickens into Basic Mobs

* modular

* Update VoidRaptor.dmm

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: Jolly-66 <70232195+Jolly-66@users.noreply.github.com>
2023-05-28 23:42:43 +00:00
SkyratBot
24ac869ffc [MIRROR] Turns lightgeists into a basic mob [MDB IGNORE] (#21429)
* Turns lightgeists into a basic mob (#75626)

## About The Pull Request

https://www.youtube.com/watch?v=bcUuqKrnvVY <- me getting rid of every
simple animal one thing at a time

Turns lightgeists into a basic mob. There are a few key advantages into
its implementation that was previously impossible in the simple animal
framework, which is entirely possible now.
## Why It's Good For The Game

Lightgeists can actually have a bit of AI now, as a treat. They didn't
have it prior because I assume if they attacked anything, they would end
up healing it, and we didn't really have an option in the simple animal
AI to say "do not attack"... This really fixes that so they can wander
around a bit and look cute if some admin decides to spawn them in (but
the only way to get them outright is to use the anomalous crystal, which
auto-assigns a player). You don't see the AI if a player ghosts out of
the lightgeist because the lightgeist will delete itself on ghost
(previous behavior).

It also gets rid of some janky AttackingTarget() override that was
completely un-needed post-#73202.
## Changelog
Nothing really player facing.

* Turns lightgeists into a basic mob

---------

Co-authored-by: san7890 <the@san7890.com>
2023-05-26 11:11:08 +01:00
SkyratBot
be8f5a39fd [MIRROR] Turns Cat Butcher/Surgeon/Whatever into a Basic Mob [MDB IGNORE] (#21415)
* Turns Cat Butcher/Surgeon/Whatever into a Basic Mob (#75599)

## About The Pull Request

On the tin, I keep trying to tackle the larger basic mob projects but
burn out, so just enjoy these small ones to just keep that list looking
lighter and less insurmountable.

No big complex AI either, it choppa the tail off. That's all you really
need to be honest.
## Why It's Good For The Game

The cat surgeon will be just that slightly smarter. I suppose they're
still a doctor, just simply infatuated with the thought of cat tails...

![image](https://github.com/tgstation/tgstation/assets/34697715/a1b4d7f6-f591-4412-91e4-6d6c8f320deb)

noooooo my tail!!!
## Changelog
🆑
code: Cat Surgeons are a bit more smarter about attacking threats to the
world around them on their endless pursuit for those felinid tails.
/🆑

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>

* Turns Cat Butcher/Surgeon/Whatever into a Basic Mob

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>
2023-05-25 23:15:06 +01:00
SkyratBot
98cbe7bc1c [MIRROR] Converts butterflies to basic mobs and adds them to cytology [MDB IGNORE] (#21355)
* 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
/🆑

* Converts butterflies to basic mobs and adds them to cytology

* updatepaths

---------

Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: Jolly-66 <70232195+Jolly-66@users.noreply.github.com>
2023-05-23 16:36:53 +00:00
Tom
e3750d9688 Astrum refactor (#21319)
* basic abductors

* areas and fluff

* last bits

* review
2023-05-22 09:25:19 -07:00
SkyratBot
b23dbf464c [MIRROR] Ensures create and destroy never drops anything [MDB IGNORE] (#21332)
* Ensures create and destroy never drops anything (#75535)

Just in case we ever elongate initial queue times / stop doing churn,
let's ensure that the "are we done yet" check uses all queues except the
harddel, rather then just the check queue

This also swaps us over to using QDEL time rather then queue time, since
for the check queue these are NOT the same, and they were leading to
false positives here

Required post #62969. Life is pain.

* Ensures create and destroy never drops anything

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2023-05-21 23:46:37 -07:00
coldud13
c37ae7f53f fix screenshot test (#21326) 2023-05-21 22:58:57 -04:00
SkyratBot
29cf77f8b8 [MIRROR] Converts Lizards to Basic Mobs [MDB IGNORE] (#21291)
* 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.

* Converts Lizards to Basic Mobs

* update modular

* TEGU

* me when I update  Maps

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-05-21 20:32:43 +01:00
SkyratBot
3696b1eb88 [MIRROR] Converts Killer Tomatoes to Basic Mobs [MDB IGNORE] (#21301)
* Converts Killer Tomatoes to Basic Mobs

* skyrat modular changes

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-05-20 23:44:02 -07:00
Gandalf
f2b328e14a Post Mirror Grounding (#21034)
* PT1 MAP RESET

* Lints

* [MDB Ignore] Adds a unit test for typepaths that are required to be mapped onto each station map (#74985)

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

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

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

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

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

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

So I went with a test

Why is it always the CMO stamp?

Not necessary (unless I find a map missing something, then this will be
updated)

* yay

* Update VoidRaptor.dmm

* Update blackmesa.dmm

* wew

* New sand and water sprites (ported from Bay) (#75254)

* e

* Update AntagInfoClock.tsx

* Update LimbsPage.tsx

* Update area_spawn_entries.dm

* Update LimbsPage.tsx

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-05-10 01:24:11 +00:00