Commit Graph

37 Commits

Author SHA1 Message Date
SkyratBot
30530f2c96 [MIRROR] AI actions won't unassign each other's movement targets & Mice stop being scared of people if fed cheese [MDB IGNORE] (#18268)
AI actions won't unassign each other's movement targets & Mice stop being scared of people if fed cheese  (#72130)

## About The Pull Request

Fixes #72116 
I've had a persistent issue with basic mob actions reporting this error
and think I finally cracked it
When replanning with `AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION` it can run
`Setup` on one action leading to the plan changing, meaning that it runs
`finishCommand` to cancel all other existing commands
If you triggered a replan by setting up a movement action in the middle
of another movement action, cancelling the existing action would remove
the target already set by the current one.
We want actions to be able to remove _their own_ movement target but not
if it has been changed by something else in the intervening time.

I fixed this by passing a source every time you set a movement target
and adding a proc which only clears it if you are the source... but this
feels kind of ugly. I couldn't think of anything but if you have a
better idea let me know.

Also while I was doing this I turned it into a feature because I'm
crazy.
If you feed a mouse cheese by hand it will stop being scared of humans
and so will any other mice it attracts from eating more cheese. This is
mostly because I think industrial mouse farming to pass cargo bounties
is funny.
Mice controlled by a Regal Rat lose this behaviour and forget any past
loyalties they may have had.


https://user-images.githubusercontent.com/7483112/208779368-3bd1da0f-4191-4405-86e5-b55a58c2cd00.mp4

Oh also I removed a block about cancelling if you have another target
from the "hunt" behaviour, everywhere using this already achieves that
simply by ordering the actions in expected priority order and it was
messing with how I expected mice to work.
Now if they happen to stop by some cheese they will correctly stop
fleeing in order to eat it before continuing to run away.

## Why It's Good For The Game

Fixes a bug I kept running into.
Makes it possible to set up a mouse farm without them screaming
constantly.
Lets people more easily domesticate mice to support Ratatouille
gameplay.

## Changelog

🆑
add: Mice who are fed cheese by hand will accept humans as friends, at
least until reminded otherwise by their rightful lord.
fix: Fixed a runtime preventing mice from acting correctly when trying
to flee and also eat cheese at the same time.
/🆑

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-01-07 23:30:49 -08:00
SkyratBot
81ca11b95a [MIRROR] Basic Mob Carp: Retaliate Element [MDB IGNORE] (#18030)
* Basic Mob Carp: Retaliate Element (#71593)

## About The Pull Request

Adds an Element and AI behaviour intended to replicate the "retaliate"
behaviour which made up an entire widely-populated subtype of simple
mobs.
The behaviour is pretty simply "If you fuck with me I fuck with you".
Mobs with the component will "remember" being attacked and will try to
attack people who attacked them, until they lose sight of those people.
They don't have very long memories so breaking line of sight is enough
to remove you from their grudge list.
The implementation unfortunately requires registering to 600 different
"I have been attacked by X" signals but c'est la vie.

It will still be cleaner than
`/mob/living/simple_animal/hostile/retaliate/clown/clownhulk/honcmunculus`
and `mob/living/simple_animal/hostile/retaliate/bat/sgt_araneus`.

I attached it to the pig for testing and left it there because out of
all the farm animals we have right now, a pig would probably get pissed
off if you tried to kill it. Unfortunately it's got a sausage's chance
in hell of ever killing anyone.

## Why It's Good For The Game

It doesn't have much purpose yet but as we make more basic mobs this is
going to see a **lot** of use.

## Changelog

🆑
add: Basic mobs have the capability of being upset that you kicked and
punched them.
add: Pigs destined for slaughter will now ineffectually attempt to
resist their fate, at least until they lose sight of you.
balance: Bar bots are better at noticing that you're trying to kill
them.
/🆑

* Basic Mob Carp: Retaliate Element

Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
2022-12-12 18:02:47 -05:00
SkyratBot
23f97dbfca [MIRROR] Allows datum AI to switch to different movement datums [MDB IGNORE] (#17833)
* Allows datum AI to switch to different movement datums (#71595)

## About The Pull Request

Allows basic mobs / datum AI to switch between movement datums. Useful
if you need JPS in some moments, but simple obstacle avoidance in others

This isn't used anywhere yet, but is a building block for basic bots.

## Why It's Good For The Game

Allows us to pick the right tool for the job!

## Changelog

🆑 Capybara Holly
refactor: Datum AI can now switch to different movement datums in their
behavior.
/🆑

Co-authored-by: Capybara <Capybara@ CapybaraMailingServices.com>

* Allows datum AI to switch to different movement datums

Co-authored-by: CapybaraExtravagante <110635252+CapybaraExtravagante@users.noreply.github.com>
Co-authored-by: Capybara <Capybara@ CapybaraMailingServices.com>
2022-12-01 16:47:15 -05:00
Zonespace
f7c26bbf25 515 Compat (#17465)
* ONLY SKYRAT CHANGES

* ACTUALLY SKYRAT CHANGES

* yolo, revert later

* Update alternate_byond_versions.txt

Co-authored-by: AnturK <AnturK@users.noreply.github.com>
2022-11-15 06:59:06 +00:00
SkyratBot
61c7eeebdc [MIRROR] Functionality for custom human examine messages when possessed by an AI controller. Implements on humans with monkey AI [MDB IGNORE] (#16848)
* Functionality for custom human examine messages when possessed by an AI controller. Implements on humans with monkey AI (#70356)

The "They don't appear to be themselves" line on humans that have AI controllers is now controllable by the AI controller, and is only "They don't appear to be themselves" by default.
Monkeized human now have the line

* Functionality for custom human examine messages when possessed by an AI controller. Implements on humans with monkey AI

Co-authored-by: itseasytosee <55666666+itseasytosee@users.noreply.github.com>
2022-10-13 21:46:14 -04:00
SkyratBot
ac8799a46d [MIRROR] Fixes monkey ai runtime [MDB IGNORE] (#15977)
* Fixes monkey ai runtime

* Update code/datums/ai/monkey/monkey_controller.dm

* oops

Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
2022-09-05 13:43:32 -04:00
SkyratBot
a079b5a864 [MIRROR] Monkey trip mechanic removed from AI controller and added to brain. Adds organ based trait system. [MDB IGNORE] (#15913)
* Monkey trip mechanic removed from AI controller and added to brain. Adds organ based trait system.

* Update code/modules/mob/living/carbon/human/species_types/snail.dm

Co-authored-by: itseasytosee <55666666+itseasytosee@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
2022-09-04 14:27:46 +01:00
SkyratBot
9c2fa80c9f [MIRROR] Improvement to monkey AI's weapon selection ability. Won't attack With zero force items. [MDB IGNORE] (#15914)
* Improvement to monkey AI's weapon selection ability. Won't attack With zero force items. (#69490)

Monkeys will now drop the item in their hand when selecting a weapon to attack with if it is worse than their basic bite attack, and will avoid picking up a weapon if they can't find one that's better than their basic bite attack.
Because of this, you can no longer completely disable monkeys by filling their hands with zero force items. This also means you can no longer trick monkeys into using sutures and other medical items on you.

* Improvement to monkey AI's weapon selection ability. Won't attack With zero force items.

Co-authored-by: itseasytosee <55666666+itseasytosee@users.noreply.github.com>
2022-09-04 13:44:22 +01:00
SkyratBot
a8c10d1659 [MIRROR] Converts a shitload of istypes to their more concise macros [MDB IGNORE] (#15702)
Converts a shitload of istypes to their more concise macros

Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2022-08-27 16:23:44 -04:00
SkyratBot
299fe8c5cb [MIRROR] Greatly increases Pun Pun's abilities and strengths (using desk bells, cross stun immunity) [MDB IGNORE] (#15411)
* Greatly increases Pun Pun's abilities and strengths (using desk bells, cross stun immunity)

* Update emote.dm

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
2022-08-07 14:57:55 -07:00
SkyratBot
74b2544a74 [MIRROR] Restores old monkey knockdowns (monkey nerf) [MDB IGNORE] (#11866)
* Restores old monkey knockdowns (monkey nerf) (#65080)

Monkey knockdown used to be on Crossed until it was made an AI here: 55238

Now it instead uses COMSIG_ATOM_ENTERED, which only takes into account walking over the monkey. Something that you can't do unless you are non-dense or they are lying on the floor, in which case you aren't even knocking them down?
Now it uses COMSIG_MOVABLE_CROSS instead so it's how it used to be, actually functional and useful.

* Restores old monkey knockdowns (monkey nerf)

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2022-03-03 18:38:41 -05:00
SkyratBot
9a9bf5cd1e [MIRROR] Makes non-dense mobs not knock monkeys over [MDB IGNORE] (#11662)
* Makes non-dense mobs not knock monkeys over (#65040)

Monkeys only get knocked over when you walk over them (not even when you swap places with them, which I thought was supposed to be the case), this makes non-dense mobs not knock them over. Which means Revenants, bots, small animals (lizards/butterflies), larvas, ect. will not knock monkeys over.

* Makes non-dense mobs not knock monkeys over

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2022-02-22 12:56:56 +00:00
SkyratBot
65b8082678 [MIRROR] Harddel Fix Pack #42 + Better Live Reftracking Support [MDB IGNORE] (#10639)
* Harddel Fix Pack #42 + Better Live Reftracking Support

* awooga

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-01-12 21:57:49 +00:00
SkyratBot
2543559ec7 [MIRROR] Chimps no longer get grumpy when you hug them or throw things with no throw force at them. [MDB IGNORE] (#9361)
* Chimps no longer get grumpy when you hug them or throw things with no throw force at them. (#62685)

* Chimps no longer get pissed when you hug them.

* Pun Pun no longer hates hat throwing.

* Chimps no longer get grumpy when you hug them or throw things with no throw force at them.

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2021-11-10 10:25:52 -05:00
SkyratBot
87f9a90cea [MIRROR] Monkey subtree breakup refactor! [MDB IGNORE] (#8748)
* Monkey subtree breakup refactor! (#61741)

Splitting up monkey ai into subtrees allows me to make a punpun ai after this pr is merged, makes stopping planning matter for the AI subtrees, and more generic subtrees that can be used by most ais

It also gets rid of bad practices like setting blackboards in the ai controller.

* Monkey subtree breakup refactor!

Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
2021-10-11 16:16:48 +01:00
SkyratBot
f35aed238f [MIRROR] if you give a monkey an instrument, it will begin playing the donkey kong theme [MDB IGNORE] (#8435)
* if you give a monkey an instrument, it will begin playing the donkey kong theme (#61726)

* if you give a monkey an instrument, it will begin playing the donkey kong theme

Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
2021-09-28 00:50:11 +01:00
SkyratBot
6698793a27 [MIRROR] Refactors datum AI idle behaviors into datums (#8262)
* Refactors datum AI idle behaviors into datums (#61455)

Co-authored-by: MonkeyThatCodes <monkey>

* Refactors datum AI idle behaviors into datums

Co-authored-by: AMonkeyThatCodes <20987591+AMonkeyThatCodes@users.noreply.github.com>
2021-09-19 22:19:24 +01:00
SkyratBot
7c20242e85 [MIRROR] fixes misspellings of "aggressive" in a few areas. (#7869)
* fixes misspellings of "aggressive" in a few areas.

* aa

Co-authored-by: aaaa1023 <74441292+aaaa1023@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
2021-09-01 16:54:51 +01:00
SkyratBot
4649592557 Feex (#60976) (#7700)
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
2021-08-22 09:55:06 -04:00
SkyratBot
851a58ef7b All AI datum behaviors are now added using a wrapper (#60667) (#7679)
Co-authored-by: AMonkeyThatCodes <20987591+AMonkeyThatCodes@users.noreply.github.com>
2021-08-21 22:14:52 +01:00
SkyratBot
169c42a262 [MIRROR] Refactors connect_loc_behalf into a component (#7613)
* Refactors connect_loc_behalf into a component (#60678)

See title. Also refactors caltrops into a component because they use connect_loc_behalf which requires them to hold the state.

This also fixes COMPONENT_DUPE_SELECTIVE from just outright not working.

connect_loc_behalf doesn't make sense as an element because it tries to hold states. There is also no way to maintain current behaviour and not have the states that it needs.
Due to the fact that it tries to hold states, it means the code itself is a lot more buggy because it's a lot harder to successfully manage these states without runtimes or bugs. 

On metastation, there is only 2519 connect_loc_behalf components at roundstart. MrStonedOne has told me that datums take up this much space:
image

If we do the (oversimplified) math, there are only ever 5 variables that'll likely be changed on most connect_loc_behalf components at runtime:
connections,
tracked,
signal_atom,
parent,
signal_procs

This means that on metastation at roundstart, we take up this amount: (24 + 16 * 5) * 2519 = 261.97600 kilobytes
This is not really significant and the benefits of moving this to a component greatly outweighs the memory cost.

(Basically the memory cost is outweighed by the maint cost of tracking down issues with the thing. It's too buggy to be viable longterm basically)

* Update glass.dm

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
2021-08-17 20:29:11 +01:00
SkyratBot
7303942d07 [MIRROR] Monkeys can now retaliate against xenomorph and animal attacks. (#7230)
* Monkeys can now retaliate against xenomorph and animal attacks. (#60157)

Co-authored-by: Rohesie <rohesie@ gmail.com>

* Monkeys can now retaliate against xenomorph and animal attacks.

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Rohesie <rohesie@ gmail.com>
2021-07-29 23:43:07 +01:00
SkyratBot
bdc2b2d3c9 [MIRROR] Revives PR #58579; Sligh refactor to AI datums that allows for basic support of subtrees (#7214)
* Revives PR #58579; Sligh refactor to AI datums that allows for basic support of subtrees (#60249)

Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
Co-authored-by: coiax <yellowbounder@ gmail.com>
Co-authored-by: Watermelon914 <37270891+Watermelon914@ users.noreply.github.com>
Co-authored-by: Rohesie <rohesie@ gmail.com>
Co-authored-by: Matthew J. <12817816+ZephyrTFA@ users.noreply.github.com>
Co-authored-by: AnturK <AnturK@ users.noreply.github.com>
Co-authored-by: Jonathan Rubenstein <jrubcop@ gmail.com>
Co-authored-by: Kylerace <kylerlumpkin1@ gmail.com>
Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>
Co-authored-by: tralezab <40974010+tralezab@ users.noreply.github.com>
Co-authored-by: Jordan Brown <Cyberboss@ users.noreply.github.com>
Co-authored-by: Fikou <piotrbryla@ onet.pl>
Co-authored-by: Emmanuel S. <emmanuelssr@ gmail.com>

* Revives PR #58579; Sligh refactor to AI datums that allows for basic support of subtrees

Co-authored-by: ma44 <guyonleagueoflegends@gmail.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
Co-authored-by: coiax <yellowbounder@ gmail.com>
Co-authored-by: Watermelon914 <37270891+Watermelon914@ users.noreply.github.com>
Co-authored-by: Rohesie <rohesie@ gmail.com>
Co-authored-by: Matthew J. <12817816+ZephyrTFA@ users.noreply.github.com>
Co-authored-by: AnturK <AnturK@ users.noreply.github.com>
Co-authored-by: Jonathan Rubenstein <jrubcop@ gmail.com>
Co-authored-by: Kylerace <kylerlumpkin1@ gmail.com>
Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>
Co-authored-by: tralezab <40974010+tralezab@ users.noreply.github.com>
Co-authored-by: Jordan Brown <Cyberboss@ users.noreply.github.com>
Co-authored-by: Fikou <piotrbryla@ onet.pl>
Co-authored-by: Emmanuel S. <emmanuelssr@ gmail.com>
2021-07-29 11:11:03 +01:00
SkyratBot
9823e3caaa [MIRROR] Sentient monkeys are no longer knocked over by mobs in the way. (#7146)
* Sentient monkeys are no longer knocked over by mobs in the way. (#60139)

Title. They used to be immune to this in the past, but then they were refactored into a species and things have changed.

* Sentient monkeys are no longer knocked over by mobs in the way.

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2021-07-28 19:00:07 +01:00
SkyratBot
56d4291ef6 [MIRROR] Reverts Entered() passing dir instead of old loc (#6646)
* Reverts Entered() passing dir instead of old loc (#59910)

* Reverts Entered() passing dir instead of old loc

Co-authored-by: Rohesie <rohesie@gmail.com>
2021-07-02 16:42:34 +01:00
SkyratBot
5326760cb3 [MIRROR] Makes turfs persist their signals, uses this to optimize connect_loc (#6465)
* Makes turfs persist their signals, uses this to optimize connect_loc  (#59608)

* Makes turfs persist signals

* Splits connect_loc up into two elements, one for stuff that wishes to connect on behalf of something, and one for stuff that just wants to connect normally. Connecting on behalf of someone has a significant amount of overhead, so let's do this to keep things clear

* Converts all uses of connect_loc over to the new patterns

* Adds some comments, actually makes turfs persist signals

* There's no need to detach connect loc anymore, since all it does is unregister signals. Unregisters a signal from formorly decal'd turfs, and makes the changeturf signal persistance stuff actually work

* bro fuck documentation

* Changes from a var to a proc, prevents admemems and idiots

* Extra detail on why we do the copy post qdel

* Makes turfs persist their signals, uses this to optimize connect_loc

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2021-06-23 04:23:48 +01:00
SkyratBot
d85a02babd [MIRROR] Refactors move procs to support multitle objects (#6423)
* Refactors move procs to support multitle objects

* Update _blob.dm

Co-authored-by: Rohesie <rohesie@gmail.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
2021-06-22 22:40:04 +01:00
SkyratBot
6f3b151bb8 [MIRROR] Fixes a bunch of harddels that are sourced from player action (#6252)
* Fixes a bunch of harddels that are sourced from player action

* Mirror!

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Funce <funce.973@gmail.com>
2021-06-11 03:13:33 +01:00
SkyratBot
5880be0168 [MIRROR] (code bounty) refactors all uses of Crossed() and Uncrossed() into signals sent to loc, tracked by connect_loc (#5524)
* (code bounty) refactors all uses of Crossed() and Uncrossed() into signals sent to loc, tracked by connect_loc

* WHEW THAT WAS EASY

* Update ammo.dm

Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
2021-05-07 22:39:27 +01:00
SkyratBot
cf8138648e [MIRROR] Adds new wrinkles to monkey brains (#5447)
* Adds new wrinkles to monkey brains (#58631)

This does a variety of improvements to monkey ai that I got drawn into after fixing a relatively simple bug with monkeys and guns. This pr is in support of #58565 so that in the rare chance pun pun gets a gun, they know how to use it. Previously #16630 made it so monkeys could use guns but semi-recently that was broken. Now that's fixed and in addition some other monkey ai capabilities were enhanced, read the changelog for the full list.

* Adds new wrinkles to monkey brains

Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
2021-05-04 18:20:46 +01:00
SkyratBot
c2d6dd7d75 [MIRROR] Fixes a ton of harddels (#4215)
* Fixes a ton of harddels (#57736)

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

* Fixes a ton of harddels

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
Co-authored-by: ShizCalev <ShizCalev@ users.noreply.github.com>
2021-03-17 20:42:47 +00:00
SkyratBot
c2215e3905 [MIRROR] Adds a subsystem for ai movement (#3613)
* Adds a subsystem for ai movement (#57111)

* done

* straight walk

* movement

* yep

* removes unused macro

* done

* Update ai_movement.dm

* Adds a subsystem for ai movement

Co-authored-by: Qustinnus <Floydje123@hotmail.com>
2021-02-23 21:46:00 +00:00
SkyratBot
e890b1282b [MIRROR] Replaces intents with combat mode (#3063)
* Replaces intents with combat mode

* updates

* a

* Update living_defense.dm

* https://github.com/tgstation/tgstation/pull/56638/files

* gunsafety!

Co-authored-by: Qustinnus <Floydje123@hotmail.com>
Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>
2021-02-05 16:58:16 +01:00
SkyratBot
9ba1ac073f [MIRROR] Monkeys drop forced two handed items (#2910)
* Monkeys drop forced two handed items (#56329)

Monkeys cannot wield twohanded items.
But are not forced to drop items that must be wielded two handed.
This forces monkeys to drop items if they need to be two handed.
(Also makes monkey ais not try and pick up 2 handed weapons)

* Monkeys drop forced two handed items

Co-authored-by: NightRed <nightred@gmail.com>
2021-01-28 03:04:40 +01:00
SkyratBot
d7f054b035 [MIRROR] Refactors monkeys into a species (#2379)
* Refactors monkeys into a species

* aaa

Co-authored-by: Qustinnus <Floydje123@hotmail.com>
Co-authored-by: Azarak <azarak10@gmail.com>
2020-12-31 21:08:07 +01:00
SkyratBot
7159d73113 [MIRROR] Makes it so player-controller monkeyized humans dont also keep AI control + extra AI controller fixes (#2214)
* Makes it so player-controller monkeyized humans dont also keep AI control + extra AI controller fixes (#55515)

AI controllers now properly check if a mob is client-controlled and dont start processing if its the case.
AI controllers now handle deletion on unpossesion if that's filled in as an argument
Dead monkeys stop attacking things

* Makes it so player-controller monkeyized humans dont also keep AI control + extra AI controller fixes

Co-authored-by: Qustinnus <Floydje123@hotmail.com>
2020-12-18 08:16:14 +01:00
SkyratBot
7a185e0b4d [MIRROR] [READY] Creates Datumized AI and applies it to monkeys (#2166)
* [READY] Creates Datumized AI and applies it to monkeys (#55238)

New AI system, implemented for monkeys.

* [READY] Creates Datumized AI and applies it to monkeys

Co-authored-by: Qustinnus <Floydje123@hotmail.com>
2020-12-13 13:45:09 +00:00