Commit Graph

13958 Commits

Author SHA1 Message Date
Tim
c300c5e90d Fix tongue tied restricting infectious zombie communication (#69840)
* Fix tongue tied communication being restricted with hand objects and adds support for people with more than 2 hands.
* Makes zombie claws 'hand objects'.
2022-09-25 07:30:34 -04:00
Twaticus
b6925f6ef9 Underwear Resprite (#70095)
Co-authored-by: TWAT <twaticus.tg@gmail.com>
2022-09-24 17:01:39 -07:00
MrMelbert
45516f4741 Adds macros to help with common set_- and adjust_timed_status_effect uses (#69951)
* Adds helpers for status effect application
2022-09-24 11:04:26 -04:00
ShizCalev
5c9d863998 Demoralization fixes (#69924)
* Demoralization fixes

Blind mobs will no longer be demoralized by posters and graffiti.
Illiterate mobs will no longer be demoralized by the words on posters.
Mobs will no longer be demoralized by posters & graffiti if it's too dark to see them.

Also makes can_read use reading check flags, one for literacy and one for light.
2022-09-24 03:26:31 -04:00
MrMelbert
64a2cd0d29 Fixes internals turning themselves off by moving them between slots (#70085)
Fixes internals turning themselves off when moving them between inventory slots.
2022-09-24 02:52:51 -04:00
pizzie11
7574bb1ce4 Lets cats attack mobs in the rat faction (#70051) 2022-09-23 23:38:40 -07:00
MrMelbert
b774f63b70 Replaces obj flag being_shocked and flag_1 shocked_1 with TRAIT_BEING_SHOCKED (#69978)
* Replaces `being_shocked` and `shocked_1` with `TRAIT_BEING_SHOCKED`, removing a flag_1, taking us away from the possibility of hitting the flag limit.
2022-09-22 23:52:37 -04:00
Kapu1178
ab6dcbf4ca Virtual Limbsanity (#69841)
* virtual limbsanity

* remove old file

* indent fail

* dumbassery cleanup

* unlint + tweak

* stop coding while high

* internal screaming

* kill another species dependancy

* make sure it has a default

* makes the unit test actually work

* fix monkeys
2022-09-21 20:07:10 -07:00
John Willard
a0442ee002 Removes persistence of items through changing species when not allowed to (#70008)
* Removes persistence of species-restricted items through changing

Makes use of item's mob_can_equip instead of mob's can_equip, making it take the item's restrictions into account.

Also, fixes the inventory's color, so it's properly red when you can't equip such an item, by making it also use mob_can_equip.

Finally, expands the species clothing unit test to take that into account, to prevent it breaking in the future.
2022-09-21 10:32:33 -07:00
MrMelbert
6baebf47a1 Completely refactors hallucinations, and also adds a few (#69706)
* Refactors hallucinations slightly, organizes them

* Refactors hallucination into a status effect

* Further hallucination proper refactoring

* Refactors battle hallucinations

* Refactors "fake item other" hallucination

* Gets it a bit closer to working state

* Refactors screwydoll and fake alerts

* Refactors fake inhand items

* Refactors a few more.
- Fake death
- Fake messages
- Fake sounds
- Projectiles

* Refactoring delusions, hallucination effects

* Furthering the hallucination status effect
- removes copypaste of hallucination pulses

* Almost finalizes the changeover to status effect

* Last staus effect stuff

* Delusion business

* Airlocks, fire, and more delusion stuff

* Finishes screwyhud. It compiles now!

* Swaps screwyhud over to a grouped status effect

* Removes hal_screwyhud

* Comment

* Bugfixing

* image cleaning

* Get rid of this it came back

* What if I finished this branch?

* Oops

* Messing with the randomness

* Mass hallucination tweaks

* +

* Some more mass tweaks

* Review

* Updates

* Unit tests hallucination icons

* More tweaks

* Move folder

* Another re-name

* Minor tweaks

* Anomaly unity

* Mass hallucination buffs

* t

* Sig

* Merge

* Lints

* Unit test already coming in clutch

* Another failure

* Use named args for cause_hallucination via some define trickery

* Some cleanup

* This is better

* adds some hallucinations

* Oops

* More sounds

* Tweaks

* Some additional documentation

* Flash

* Fixes mass hallucination

* Json changes

* Updates documentation

* Json conflicts

* Makes it work

* Missed that one too

* Helpers

* More signalization (WIP)

* Fixes bump

* Missed a helper use

* Dumb
2022-09-21 01:30:04 -04:00
MrMelbert
7a5fa1cff9 Fixes an internals related hard delete (#70024) 2022-09-20 12:24:53 -07:00
Tim
b0b02230d0 Change infectious zombies to be illitearate (#69888)
* Infectious zombies now have their own mutant brain which is primitive and no longer literate.
2022-09-19 19:56:04 -04:00
kawoppi
28597066d3 adds axolotls (#69973)
Axolotls have a chance of spawning roundstart at each moisture trap, just like their fellow amphibians. Their spawn chance is half that of a frog.
2022-09-19 10:02:45 -07:00
MrMelbert
132ef0414f Unit tests say signal gets the correct list passed with it (#69854) 2022-09-16 08:01:02 -07:00
scriptis
f264509b46 Fix ghost follow link being on a different line than binarysay on light mode (#69928)
On light mode, and in light mode only, .binarysay is display: block. This generates a newline because I moved the follow link outside of the relevant span.

fix: ghost follow links no longer appear above binary messages using light theme
2022-09-15 18:20:42 -07:00
Tim
8f59a6dbac Fix plasma cutter or guns that burn not being able to ignite plasma (#69584)
* Plasmacutter projectiles now deal BURN instead of BRUTE
* BURN projectiles now properly detonate plasma and explodables.
2022-09-14 23:43:58 -04:00
itseasytosee
8cfe4c73f7 Fixes skeletons not having a bone stomach (#69894)
* Skeletons now have bone stomachs again.
2022-09-14 23:24:20 -04:00
scriptis
7e1c1b8610 AIs now have BIG TEXT in binary chat (#69871)
* Make AIs loud

* Remember to commit the stylesheet

* Be consistent with loud radio

* Use my eyeballs to observe that it didn't work properly
2022-09-14 11:56:43 -04:00
John Willard
8e656a57f3 Adds a unit test for species changes keeping clothings (#69788)
* Adds a unit test for species changes keeping clothings

Adds a unit test that checks if people who species change into a Lizard keeps their non-digitigrade shoes or not, which will also affect Monkeys.
2022-09-13 19:10:33 -07:00
Seth Scherer
7eefd68afd Readds shoe stealing shortcut (#69792)
* Readds shoe stealing shortcut
Readds the shoe stealing shortcut! Everything is the same, you must have
legs selected, the target must be lying down, and now you must have the
slap emote enabled.

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-09-13 19:09:19 -07:00
ShizCalev
9e47cd551b fixes runtime when trying to inject someone in a missing limb (#69851) 2022-09-13 14:35:50 -04:00
YakumoChen
b3014db427 changes holodeck crab to a holographic crab (#69850)
Properly makes the crab on the holodeck beach into a holocrab

RUDE people were butchering the poor crab for infinite crab meat
leave him alone hes nice :(
2022-09-13 12:25:54 -06:00
GoblinBackwards
974a56b720 Fixes bileworms being unable to act (#69874)
* Makes bileworm AI use weakrefs for targets

* Apply suggestions from code review

* Update code/datums/ai/basic_mobs/basic_ai_behaviors/try_mob_ability.dm

* question mark

Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
2022-09-13 09:12:34 -04:00
dopamiin0
63a9399650 pAIs and other pets that can be picked up no longer know shadow clone jutsu. (#69625)
* Exiting as a held mob now immediately drops you no matter what.
2022-09-11 20:30:59 -04:00
小月猫
146d0fd59d Fixes a couple simple issues with interactability (#69762)
first things first, back when LemonInTheDark changed the interact_range code he did a slight modification that broke the AI cards, namely, he did this (not saying its a bad change, it is actually a good change, just mentioning what change caused the issue im fixing now):

now, his change does make sense, since he changed the range default to 0 instead of 1, however "null" is also used as a range, specifically for AIs, now this normally isnt an issue for the AI itself, as the AI generally gets a TRUE in its interaction checks before it gets down this deep (machines have a bypass specifically for AI), but there is one situation in which it does go this deep: AI Cards, when in an AI card the AIs interaction range is set to 0 and their interaction is disabled, thereby making it impossible for them to interact with anything, now when a player opens the card UI and enables the AIs ability to interact, this sets their range back to null, aka unlimited, the issue now however, is that since "null" is treated the same as "0", and AIs in cards dont hit the same bypasses an AI core does, Lemons change to submit a false return for 0, is also submitting false for null, meaning the AI card cannot interact with anything except the tile its on, despite having null/unlimited range....

fixed by changing the null value to infinity where it is used

additionally my fix of can_interact() code apparently had the unintended side effect of not allowing rotations of machines if theres no power, i missed this entirely because thats such a specific situation, since you try rotating with APC power in most cases, it also didnt affect most machines, that said the fix was simple, just changed the proc being called to only check distance, not power. fixes #61852

and last but not least, fixes some code with the syndie bombs interactability, namely removes a redudant section, and adds a check for range, turns out there were no checks for range so you could in theory open the UI and walk away and then activate it from another location, so added a quick check to ensure you actually CAN interact with it before letting you push buttons in the UI
2022-09-11 02:24:00 -07:00
John Willard
adfe046065 Ai interact uses is_valid_z_level helper (#69759)
* Makes AI can_interact_with use the valid z level helper

* Makes AI's ``can_interact_with`` proc use ``is_valid_z_level`` instead helper instead of manually doing it.

* Minor code improvement while im here 👍
2022-09-08 21:45:01 -04:00
John Willard
a02ae46bb4 Fixes SaturnX (#69765) 2022-09-08 17:28:50 -07:00
Profakos
ba0366210e Sentience preference selection and antag datum (#69569) 2022-09-07 17:59:50 -07:00
John Willard
e51e3baa75 Xenomorph powers require hands and mobility up to use (#69538)
* Xenomorph powers require hands and mobility up to use

Xenomorphs usually don't have hands blocked/are immobile, so this mostly just affects Humans, who can use neurotoxin spit while stunned.

* Neurotoxin checks for muzzle instead of hands blocked

Reverses hands check for Xeno powers, instead Neurotoxin specifically will check for muzzled.
2022-09-07 11:41:17 -04:00
itseasytosee
dc3f5f9175 Small grammer fix to monkey trip toggleing (#69712)
* Replaces 'not' with 'now' in monkey trip toggling.
2022-09-07 11:22:57 -04:00
tralezab
814cea6c3b Removes 3 exclusive species from magic mirrors (#69613)
* adios exclusives

* don't think i forgot you

* you get to stay
2022-09-06 08:28:28 -04:00
LemonInTheDark
930c5e635e Moves "catch this var/flag" code from obj/init and datum/new into the types that use it (#69634)
* Optimizes away /obj/Initialize

We were spending like 0.15 seconds just checking for blueprints, obj
flags and network ids
All these things can just be applied where they're wanted, saves time

Oh and I replaced object flags with an emag injector. I'll give it a
sprite and name later I promise

* Requires a GenerateTag() call to set DF_USE_TAG, rather then doing a check in atom New

This is technically harder to use, but I don't really want people using
tags, and it saves 0.15 seconds

* Moves generatetag to /datum

* I am dumb

* Saves 0.5 seconds, makes init emissive blockers actually work

Ok so background. If an overlay is added with add_overlay, and not
"managed" somehow, it will effectively never be removed, because
nothing's tracking it.

Update_overlays uses the managed_overlays list/var (one of those) to do
this.
I'm gonna piggyback off this to make emissive overlays actually like,
respect overlay updates.

Oh and uh, I've saved maybe 0.5 seconds by caching the new emissive, and
not using add_overlay. There's a chance this will lead to overlay
corruption, but since we never readd the flattened, I think we'll be
safe

* Fixes plane not being set right, changes color logic too, since alpha will override past color sets

* Makes it actually work. also makes rand posters update appearance to clear away the overlay, since it shows on right click and looks bad

* Fixes blockers showing as emissives. It turns out alpha sets override the color list we use. Not sure why we pretend to support them

* Makes the injector support traits, adds an amazing sprite
2022-09-06 03:17:17 -07:00
itseasytosee
c8b89a6e21 Stomach get_availability() now checks for NO_HUNGER instead of broken trait that no mobs have. (#69674)
* Organtraits

* spellcheck

* etheral

* plasma change

* plasma p2

* appendix

* appendix fix

* Improvments
2022-09-05 22:16:41 -04:00
John Willard
ebe613b1d1 Fixes xenomorphs being able to hold any item (#69626)
* Fixes xenomorphs being able to hold any item

Advanced trait user was moved into the brain, which meant Xenomorphs (who have brains) were now advancedtoolusers, and as such were able to manipulate non-xeno stuff.

* Removes xenomorph literacy

Co-authored-by: Tim <timothymtorres@gmail.com>

* Removes xeno's strip from their initialize

Co-authored-by: Tim <timothymtorres@gmail.com>
2022-09-06 12:35:38 +12:00
Arturlang
2be5bc531d Removes-blind_eyes (#69652)
* Removes blind_eyes, replaces it with adjust_blindness.
2022-09-04 16:05:10 -04:00
skylord-a52
be0e6efdf6 [IDB IGNORE] [MDB IGNORE] Makes the icons/mob folder sane (#69302)
About The Pull Request

Reorganizes the entire icons/mob folder.

Added the following new subfolders:

    nonhuman-player (this was initially just called "antag", but then I realized guardians aren't technically antags)
    simplemob
    silicon
    effects (for bloodstains, fire, etc)
    simplemob/held-pets (for exactly that -- I wasn't sure if this should go in inhands instead)
    species/monkey

Moves the following stuff:

    All human parts moved into species, with moth, lizard, monkey, etc parts moved to corresponding subfolders. Previously, there were some moth parts in mob/species/moth, and others just loose in mob. Other species were similar.
    icemoon, lavaland, and jungle folders made into subfolders of simplemob
    All AI and silicon stuff, as well as Beepsky et al. into the silicon folder, simplemobs into the simplemob folder, aliens into the nonhuman-player folder, etc.
    Split up animal_parts.dmi into two bodyparts.dmi which were put in their respective folders (species/alien and species/monkey)

Code changes:

    Filepath changes to account for all of this
    Adds a check when performing surgery on monkeys and xenos, because we can no longer assume their limbs are in the same file
    Turns some hardcoded statues and showcases that were built into maps into objects instead

Things I'd like to do in the future but cant be assed right now:

    Remove primarily-antag sprites from simplemob/mob.dmi (Revenant, Morph, etc.) and put them in the nonhuman-player folder
    Split up mutant_bodyparts.dmi into different files for Tizirans, Felinids, monkeys, etc and put them in their own folders. Those may have once been meant primarily for mutated humans but that's now how they're being used right now.
2022-09-03 11:52:54 -07:00
ShizCalev
3343918941 fixes rogue > in carbon/examine() message (#69627)
fixes #69624
2022-09-02 09:44:44 -07:00
GuillaumePrata
aec14ffc8f Wings and tails give anyone better tackling values. Moths and lizards that lose theirs will have worse values instead. (#69078)
About The Pull Request

Late and atomized version of #67791 with some extra changes.

Changes are:

1 - Anyone with wings will have a +2 tackle offense (same as riot armor or gigantism mutation)
2 - Moths without or burnt wings will have -2 tackle offense (same as dwarfism or clumsy)
3 - Anyone with a lizard tail that is wagging it, will have 1+ tackle defense (same as being fat)
4 - Lizards without a tail will have -1 tackle defense (same as being slightly drunk)
5 - Fly people have a higher chance of breaking their spine after splatting themselves into a window/wall (+6 same as clumsy)

Made 3 new traits and gave them to Lizards, Moths and Flypeople, swapped the old islizard to check for one of these traits instead.

This way it is easier for anyone that reads these species' code to know that they have an unique interaction with our tackling system without having to dig into component code.
And thanks for the suggestion Kapu.
Why It's Good For The Game

This makes Moths have an interesting round start niche as security and push them to behave differently than humans if they decide to opt into tackling.

It is fun to steal flashbangs and exploit the weakness that Moth officers have right now, if moths are better at tackling and more likely to use it, it opens another thing you can exploit when engaging against security.

The breakpoints for tackling are on windows of 2 so while it might look like a lot (Riot suit value), if I gave only 1 for moths they would have a 50% chance of being better than other species while tackling.
Inconsistencies are not interesting on species. It would be quite annoying if plasmamen had a coin toss on being cold resistant or self igniting every time they engage with the system.

The flypeople change is there just because the idea of a Fly officer smacking themselves into a window and breaking their spine is funny.

And as was requested by maintainers, it now checks for anyone with wings and lizard tails for the tackle buff, go have your fun Frankstein builders and Officers that can get Xeno to give you a wing potion.
Changelog

cl Guillaume Prata
balance: Anyone with wings or a wagging lizard tail will have a small bonus to their tacklling offense/defense.
balance: Moths and lizards that lose their wings/tail will have worse tackling values instead.
balance: Fly people don't take splatting themselves on windows/walls easily and have a higher chance to get a bad result from that.
/cl
2022-09-02 10:08:11 +12:00
tralezab
a88a2f8132 Shadowpeople's healing is from their brain, splits up surgery.dmi (#69543)
About The Pull Request

    Shadowpeople
        brain now holds their healing properties.
            while possible to extract the brain and put them in another species, the burn-in-light downside really makes it a lot more worth it to just stay a shadowperson and enjoy their other benefits than to swap.
        Now use burning eyes from nightmares instead of an unsprited nightvision granting eyeball.
    surgery.dmi split up
        surgery_ui.dmi holds zone selection ui things for research
        surgery_tools.dmi holds surgical tools
        /organs folder holds organs.dmi, and species specific organ files for flies and shadowpeople
            flies don't put in their random organs because of dmi memes, all their UNIQUE organs will be in the .dmi

Why It's Good For The Game

moving behavior onto the organ moves us closer to species as a blueprint, not species as something that magically grants immutable bonuses.
surgery.dmi is poorly described, holds many different things, and conflicts often because of it.
Changelog

cl
add: Shadowpeople now heal from their brains! Their brain-tumor-thingy!
code: split up surgery.dmi
/cl
2022-09-02 10:07:24 +12:00
ma44
10553c6af9 Refactors/Improves trader NPC with more functionality (#68947)
About The Pull Request

image

This is the result of trader NPCs needing to be improved to meet specifications for a TG codebase downstream; the code is going back upstream to see if the maintainers here would like to have it, someone could use the improved functionality to actually implement the trader somewhere in the codebase rather than having it lay in cold storage.

The PR contains

    Some additional documentation for various variables/procs
    Implemented a "quantity" variable for selling/buying items in a limited quantity until a restock is triggered
    Phrases are moved into list() to allow for more variety by using pick() if needed
    Some functionality is moved out of big procs (hardcoded currency generation, isstack() checks) to allow coders to more easily override the calculation process without overriding big parts of necessary code like radial generation/interaction
    More UI for the end user to more easily understand what the trader is selling/buying; mainly a dedicated "tell me what you're selling/buying" with colored text and icon overlays indicating out of stock

Why It's Good For The Game

Makes traders overall more useful to program without needing to override massive procs, more functionality is implemented and is more friendly to the end user without needing code diving skills to interact with traders
Changelog

cl ma44
code: Trader NPCs have been given some needed frontend and backend changes
/cl
2022-09-02 09:58:58 +12:00
IndieanaJones
a2e0ab3ff0 Spider Rebalance PR: Burn Baby Burn Edition (#68971)
This is a remake of #66106, with more thought put into the underlying balance. The main goal of this PR is to make fighting spiders more accessible and interesting for the majority of the crew while nerfing the extremely strong and boring option of simply using freezing temps to kill spiders. Also fixes #67765. The changes are as follows:

NEW SPIDER COUNTERS

    Fly swatters now deal 25 damage to spiders on hit, increased from 1
    Pesticide now deals massive stamina damage to spiders and a little bit of physical damage as well (the damage portion not added by this PR)
    Spiders can now be caught on fire through any traditional mean of catching something on fire. Spiders will automatically put themselves out after a time. This was done instead of an active action because AI spiders are also subject to this change as well, and I don't feel like bloating the simple mob AI with putting themselves out

SPIDER CHANGES

NERFS

    Toxin injection has been removed from all spiders except for the hunter, flesh spiders and the viper
    Hunter toxin (used by hunters and flesh spiders) now only brings the afflicted down to 40 health, and will stop taking effect once the afflicted reaches that threshold. Should the afflicted still have the toxin in their system and get healed, the toxin will begin dealing damage again until the afflicted is at 40 health or below again
    Viper toxin now only brings the afflicted down to 10 health, but also has the hallucination effects of Mindbreaker toxin. This hallucination effect is applied regardless of target health. It also no longer generates other harmful chemicals into the afflicted's system, but is much more potent at base
    Flesh spiders cannot regenerate while on fire

BUFFS

    Time it takes for spiders to normalize their temperature cut by half. While they will react faster when in cold or hot environments, when they leave said environments it will take less time to return to normal temperature
    Unsuitable temperature damage reduced to 4 from 8
    You can no longer push spiders by running into them
    Webbing heat damage threshold increased from 300 to 350 (same temp where spiders also take damage)
    Broodmother egg laying time reduced to 12 seconds from 15
    Broodmother web laying time multiplier reduced to 0.5 from 1
    Broodmother health increased to 60 from 40
    Broodmother damage increased to 10 - 15 from 5 -10

BEHIND THE SCENES CHANGES

    You can now make any simple mob able to be caught on fire by setting flammable to true
    How fast a simplemob stops burning is controlled by fire_stack_removal_speed
    Can now now control how fast simplemobs regulate their temperature using temperature_normalization_speed. Before this PR, this value was hard-coded at 10, I have set the default to 5 as 10 was too long in almost any case. This will notably affect slimes, who could easily die to being cold long after being removed from the cold area. I see this as purely beneficial
    Toxins now have a health_required value. The afflicted has to be above this health value in order to take damage from the toxin. Only used in the spider toxins currently
    When I was setting up simplemobs to be flammable, I noticed basic mobs can be glitchily set on fire, so I fixed it to where they can't be set on fire.

Why It's Good For The Game

    Spacing something is very easy, but not very fun or interesting compared to starting and controlling a fire. Swapping spiders' temperature weakness from spacing to fire is beneficial to the fun of fighting them and playing as them, allowing more creativity and resourcefulness on both sides. Ideally, this should allow for atmosians and chemists to use their skills in a fun way.
    Currently, ignoring spacing them, the only people who can reasonably take on spiders is security, since they have lasers which do burn and stuns to slow the spiders down. However, this small subset of players cannot normally destroy a spider infestation without spacing them, so letting fly swatters and pesticide be used to combat spiders allows other crewmembers to fight back, letting them actually enjoy facing spiders as a threat and allowing the crew to defend themselves.
    Being killed by spider toxin after fighting off a horde isn't fun. The changes still make it a threat you have to be aware of, but not one which detracts as much from the combat loop. This also forces spiders to secure the kill themselves, which is more fun than having the toxin do it for you.
    Broodmothers in their current state are incredibly weak by themselves, which is intentional by design. However, the new changes hope to make playing as a broodmother easier and hopefully allow more broodmothers to get the spider infestation started properly. After all, Dynamic is their common source now, and they should be consistently worth the threat cost to spawn them.
    Previously, spider structures would seemingly vanish for no reason if the room was heated to be greater than 300 but less than 350, as the spiders would not be able to tell that it was too hot. Now, if the structures are taking damage, spiders will also be taking damage, so understanding what's going on should be easier now.
    Pushing spiders into a corner by running into them was not a fun tactic to deal with as a spider and didn't make much sense seeing how big the spiders are.

Changelog

cl
add: Spiders can now be caught on fire
add: Spiders take significant damage from fly swatters and stamina damage from pesticide
balance: Spiders have been re-balanced. Their toxins can no longer kill but they are not as susceptible to freezing
balance: General stats of spider broodmothers have been buffed with more health, damage, and faster web and egg placement
balance: Flesh spiders cannot regenerate whilst on fire
balance: Simplemobs change their internal temperature twice as fast
fix: Basic mobs no longer glitchily catch on fire.
/cl
2022-09-02 09:56:54 +12:00
MrMelbert
de04b3be80 Kills /obj/shapeshift_holder, replaces it with /datum/status_effect/shapechange_mob, also does a lot of Wabbajack refactoring (#69091)
About The Pull Request

    Deletes /obj/shapeshift_holder, replaces it with /datum/status_effect/shapechange_mob
    Refactors Heretic worm form into a shapeshift spell
    Refactors Wabbajack, and associated code

Fixes #69117
Fixes #65653
Fixes #59127
Fixes #52786
Why It's Good For The Game

/obj/shapeshift_holder was one of the worst remaining abuses of /obj direct subtypes, so I replaced it with a cool fancy datum.

This also decouples the shapeshifting behavior entirely from the shapeshifting spell. So we have support for shapeshifted mobs not sourced from a spell. Which is neat, we could technically swap Wabbajack to use this in the future.
Changelog

cl Melbert
fix: Wabbajacking a shapeshifted mob no longer runtimes horribly. When a shapeshifted mob is wabbajacked, they'll now be removed from their shapeshift and stunned.
fix: Transforming via a shapeshift should no longer rob you of your hearing / runechat awareness.
fix: Shapeshifting plays nicer with holoparasites.
fix: Being polymorphed from a xeno to a non-xeno correctly makes you a non-xeno
refactor: Refactored shapeshifting, the shapeshift holder is now a status effect instead of an object.
refactor: Heretic worm form is a shapeshift spell now, this might have some minor behavioral changes but should overall be the same.
refactor: Refactored Wabbajack (+ cursed pool). Overall a bit more clean / consistent behavior.
/cl
2022-09-02 09:44:41 +12:00
kawoppi
3504684b12 visualizes *cry emote + getting peppersprayed makes you cry (#69492)
About The Pull Request

Using the *cry emote makes tears come out of your eyes for the next 12.8 seconds (4 loops of the animation). You now cry when you get sprayed with pepperspray. See the demo here.
image

The crying overlay is placed by the eyes organ. I went back to the blush overlay and made it so that it's placed by the head bodypart. Also the blush overlay now gets adjusted based on OFFSET_FACE.

Why It's Good For The Game

It makes the characters more visually expressive. The crying gives pepperspray some more visual feedback, not just when you get hit but while you're recovering from it afterwards as well.
2022-09-01 11:55:54 -07:00
itseasytosee
b156c71e42 Fixed quick admin spawned humans from observes not keeping preferences (#69580)
I fucked up in my PR. This whole proc is cursed though so you can't blame me too much. I'll try my hand at rewriting it soon.
fixes #69578
2022-09-01 10:21:03 +01:00
tattle
fd9f50c552 [IDB IGNORE] Renames the inhand/misc folder to inhand/items (#69573)
Also adds balloons to inhand/items
2022-09-01 03:29:10 +02:00
itseasytosee
458a42cdf9 Fixes The human and monkey rudimentary transform commands in the player menu for admins. Makes the change_mob_type() proc more readable. (#69481)
Fixes #69142
2022-08-30 16:55:54 -07:00
tralezab
ce20a5b85e Cows can eat wheat off the ground. If cows see wheat on the ground, they'll try to go eat it (+ moonicorns with galaxy thistle) (#69253)
About The Pull Request

Cows are now grazers, they love eatin' wheat and it even heals them if hurt. If they see it just on the ground, they might eat it all! Careful, botanists! While tamed, cows won't eat off the ground if they're busy ferrying you around.

FYI: this is going to conflict with #69247 and so thiss should not be merged until that is

Why It's Good For The Game

Wanted to add this with the original port of cows to basic mobs, didn't have the TECH to do so. Now I do, now it's done. I also wanted it ready for the future where mice and rats are ported, so they'd seek out cheese to eat. I also also think it's a neat way for a cow to heal.
2022-08-30 15:39:30 -07:00
tralezab
97a5746969 "What are you in for?" Prisoners can now select their capital offense. (#69446)
New preference, like security department, but for prisoners. They can pick why they're in prison, and they'll get a record about it roundstart.
Classified and Other are for people who want to build their own background, that none of the options currently fit.

Current options:

    Abhorrent Criminal Negligence = Incompetently risked numerous lives.
    Attempted Development of Cloning = Attempted illegal research in the cloning sphere. Cloning, cloning construction, and cloning-related R&D was outlawed in 2560.
    Attempted Murder = Attempted to maliciously kill someone.
    Classified = Consult Legal.
    Corporate Espionage = Conducted espionage against Nanotrasen for commercial purposes.
    Counterfeiting = Engaged in widespread fraud.
    Enemy of the Corporation = Acted as or knowingly aided an enemy of Nanotrasen.
    Grand Sabotage = Engaged in malicious destructive actions seriously threatening Nanotrasen employees and or infrastructure.
    Grand Theft = Stole items of high value or sensitive nature.
    Identity Theft of High-Ranking Figure = Impersonated a high-ranking figure.
    Murder = Maliciously killed someone.
    Mutiny = Attempted to overthrow/subvert Chain of Command.
    Other = Consult Legal.
    Tampering of Artificial Intelligence = Uploaded malicious negligent or otherwise blacklisted directives to an Artificial Intelligence.
    Worship of Blacklisted Deities = Practiced worship of blacklisted deities.
2022-08-29 12:24:16 -07:00
itseasytosee
497fa7b23f Monkey trip mechanic removed from AI controller and added to brain. Adds organ based trait system. (#69496)
Alright, big exciting PR.

First big thing! Traits can now be tried to organs which are granted and removed from the mob with the organ.
The traits PRIMATIVE, LITERATE, CAN_STRIP, and ADVANCED_TOOL_USER have been removed from species inherent traits list, because they apply to the species brain in specific, not their whole body.
The baseline brain gives the traits LITERATE, CAN_STRIP, and ADVANCED_TOOL_USER, all species that had these traits have a baseline brain.
Ashwalkers have been given a "primitive brain" which gives ADVANCEDTOOLUSER, CAN_STRIP, PRIMITIVE, and notably not literacy. These give them the same traits as before, but their privative nature and lack of reading followers their brain no matter which body they inhabit.

Monkeys have been given the "primate brain" which gives CAN_STRIP and PRIMITIVE. The monkey's brain now holds the logic for the monkey tripping mechanic instead of the AI datum which is a huge win. Monkeys with clients can also now toggle if they would like to be tripped by people, in order to better blend in. AI monkeys will always have tripping on. I also have implemented my qol monkey tripping changes from #69478 (the videos on that PR are still accurate)

What this means, is a human's brain in a monkey's body will still be able to use tools, read, and even operate mechs. but will still have the other non mental monkey traits like being able to crawl though vents while naked. So lovely.

Conversely a monkey's brain (even a sentient one) that is put in a human body will still be illiterate, and will be unable to use complex tools.

Transforming into a monkey via genetics or other means will also change your brain into a monkey brain (this mechanic existed before now, it just wasn't applicable)

Some of this code might not be up to standard, please give me your corrections.
2022-08-29 11:41:26 -07:00
itseasytosee
2dabd1d7e2 Monkeys no longer "don't seem like themselves" (#69453)
A feature originally intended to make it clear to others when a player was being controlled by an AI, made no sense as soon as monkeys became a human subtype 2 years ago. This is solved by the implementation of a non-player species var, which can be applied to monkeys to suppress this text, without also then creating the cationic examine line as long as they have an AI controller.
2022-08-29 11:33:06 -07:00