* 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>
* Adds a (hopefully) comprehensive guide to writing an AI Datum in our repo (#61811)
AI Controllers are pretty difficult to learn if you don't have someone to explain the concepts, I thought I could cut that out by having a handy dandy guide to show people. If we're ever to eventually move all simplemobs onto basic mobs, we need to have a weapon like this to combat the questions.
The more people who understand Datum AI, the better. I remember a few maintainers mentioning that it would be nicer to have more guides in the repo, since it is essentially 9,970 bytes of future review prevention.
* Adds a (hopefully) comprehensive guide to writing an AI Datum in our repo
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* stops the monkey ai from committing 53k runtimes and makes it so they can disposal people again (#62121)
* stops the monkey ai from committing 53k runtimes and makes it so they can disposal people again
Co-authored-by: Seris02 <49109742+Seris02@users.noreply.github.com>
* 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>
* 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>
* Hauntium is chill with the undead, buffs hauntium stats (#61584)
* Hauntium is chill with the undead, buffs hauntium stats
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* 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>
* fixes bad arguments to /datum/footstep/Attach() (vary to sound_vary) (#61231)
#60479 changed the attach argument "vary" into "sound_vary" but didnt change the two associative arguments for vary to sound_vary. this does that. now Attach() wont runtime for the footstep element
* fixes bad arguments to /datum/footstep/Attach() (vary to sound_vary)
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
* 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>
* 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>
* Fixes carps being given orders without a friend. Fixes sentient carps being unridable (#60441)
* Fixes carps being given orders without a friend. Fixes sentient carps being unridable
Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
* 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>
* Makes carps not lose track of who they're following if vision gets obstructed (#60274)
* Makes carps not lose track of who they're following if vision gets obstructed
Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
* Monkeys and dogs no longer yoink items they can't reach. (#60150)
* Monkeys and dogs no longer yoink items they can't reach.
Title. More ai behavior botherations.
* Monkeys and dogs no longer yoink items they can't reach.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Reverts Entered() passing dir instead of old loc (#59910)
* Reverts Entered() passing dir instead of old loc
Co-authored-by: Rohesie <rohesie@gmail.com>
* 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>
Adds set_density()
Fixes one instance of a duplicate density assignment on an object.
Comments two hacky usages of density which will have to forgo using the setter for now.
Lets us append code to the event of density changing.
Pretty sure this is leading up to some multitile object thing -Lemon
Co-authored-by: Rohesie <rohesie@gmail.com>
* Corgis will no longer pick up non-items (like entire cars) (#59246)
I made one hell of a whoopsie with dog AI, letting dogs fetch and pick up and carry around things that are absolutely not meant to be carryable, basically anything that isn't anchored. This restricts their carrying ability to items.
Fixes: #59202
* Corgis will no longer pick up non-items (like entire cars)
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
* I hate TGUI even if its better than what we had before
* this is why linters exist
* you need to be a Head or the Warden to get items
* does this please you linter?
* foundation
* basic interactions
* yea I can spell okay?
* linters please leave me alone
* begone debug code
* if you are dead, no interacting
* linters leave me alone
* linters are stealing my soul
* forgot to do this
* sound framework, probably wont work though
* max length, and interaction cooldowns
* message can now be a list and minor code improve
* I am a slave and linters are my master
* fix improper static reference
* add json loading/saving functionality
* default for message is now a list
* jsonize def interactions; implement requirements
* bad
* bug fix; CtrlShiftClick to interact
* minor qol fix
* fix CtrlShiftClick and remove debug code
* haha docker has security measures
* this was painful
* why are you in this branch
* begone
* bruh
* begone
Co-authored-by: Matthew <matthew@tfaluc.com>
Co-authored-by: Matthew J <GoldenKeyboard@users.noreply.github.com>
* use SIGNAL_HANDLER REEEEEE (#59242)
makes as many procs as i can find use the SIGNAL_HANDLER define which i assumed they all already did
* USE SIGNAL_HANDLER REEEEEE
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
* Tidy HTML folder (#58761)
This PR aims to make the HTML folder a little more organized, as well as remove a few unused files.
Why It's Good For The Game
Doesn't change anything for the player, however makes the files more organized.
* Tidy HTML folder
Co-authored-by: Celotajs <81999976+celotajstg@users.noreply.github.com>
* (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>
* dogs now resist before fetching or harassing, to unbuckle from stuff if they need to (#58686)
fixes#58656 (Pets can move while buckled in their beds)
* dogs now resist before fetching or harassing, to unbuckle from stuff if they need to
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* 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>
* ai_behaviour cleanup ft. less chatty tourists (#57945)
Each of these lines is punctuated by an audio sting every 8 seconds without refrain.
So, this PR adds a new vocalisation limiter to tourist bots who can't find a seat. Instead of always vocalising every 8 seconds, they're now guaranteed to vocalise the first time and then have a 60% chance to have vocalised again each minute thereafter.
Tourists waiting for food now have an approx 40% chance to have vocalised in any given minute. This should be considered alongside the fact that multiple (up to 10) tourists can be present at any given point in time and with the difficulty in players killing them, they can create a lot of unnecessary audio spam. If the tourists are being served rapidly, they're also giving regular guaranted audio stings on top of that which compounds the chances any given bot will output an audio cue.
The AI controller now passes the larger value between the behaviour's `action_cooldown` in real seconds (as opposed to deciseconds) and delta_time when performing behaviours. This has no gameplay changes outside of those documented in this PR, since no AI behaviours with cooldowns greater than the AI controller's delta_time attempted to use delta_time.
Finally, customers now have 10 minutes of patience before leaving instead of 100 minutes of patience due to a minor oversight where their patience was in deciseconds while delta_time was subtracted in seconds.
* ai_behaviour cleanup ft. less chatty tourists
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>