* Adds tourist robots that order food and drinks from the bar and cafeteria (#57010)
* Adds Tourism Economy
Co-authored-by: Emmanuel S. <emmanuelssr@ gmail.com>
Co-authored-by: ATH1909 <42606352+ATH1909@ users.noreply.github.com>
Co-authored-by: coiax <yellowbounder@ gmail.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Adds tourist robots that order food and drinks from the bar and cafeteria
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
Co-authored-by: Emmanuel S. <emmanuelssr@ gmail.com>
Co-authored-by: ATH1909 <42606352+ATH1909@ users.noreply.github.com>
Co-authored-by: coiax <yellowbounder@ gmail.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Allows ghosts to start messages with asterisks in deadchat again (#57159)
#56519 had noble goals in trying to make emote code more robust for
ghosts, but in doing so it undid #47144, which was made to allow people
to start messages with asterisks in deadchat without getting hassled by
the game thinking you're emoting. This re-limits the emote checker to
the only two emotes ghosts have ever had, *spin and *flip.
* Allows ghosts to start messages with asterisks in deadchat again
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
* Update eggcluster radial menu (#57125)
- Updated radial menu for spider selection from an egg clusters. It
will now also include a small button for showing additional information
about given spider type. No need to wiki dive to find out about what
each spider type does.
- You can now a choose spider from an egg cluster from a distance
instead of having to be next to them as a ghost, which was rather
annoying and confused new players about why they cannot choose any
spider type.
- "Click to play" button on when spider egg cluster matures will now
actually give you a selection of spiders to choose from instead of
doing nothing and being a dead weight in the chat.
* Spider egg cluster selection update
Co-authored-by: Arkatos1 <43862960+Arkatos1@users.noreply.github.com>
* Spiders on web now ignore an absence of gravity. (#57129)
Being on a web (not next to one, as is the case with rods in space) lets spiders ignore an absence of gravity.
* Spiders on web now ignore an absence of gravity.
Co-authored-by: Gurkenglas <gurkenglas@hotmail.de>
* Adds pulling rabbits from top-hats (#56773)
This PR makes it so using a wand on a top-hat makes a rabbit appear in
your hand! Fun! There's a 10% chance that instead of a cute bun you get
angry bees though, but a true performer will soldier on anyway. You can
now also scoop up rabbits in your hands, and scooping animals only
requires one free hand to do so instead of all your hands being free.
* Adds pulling rabbits from top-hats
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
* Implements JPS (Jump Point Search) Pathfinding (#56780)
So a month or so ago I wanted to make it so dogs in my dog AI PR could path through doors if they had access, and was told I'd need to improve our pathfinding efficiency if I wanted to use full pathfinding for them. Thus, enter JPS, a pathfinding algorithm that allows for massive timesavings in systems with uniform cost grids like ours. This code is still fairly rough and needs polishing, but it's fully functional and already shows massive savings over traditional A*! I plan for this to replace A* as our default pathing method, but I'll leave the A* code in place in case someone ever needs it for whatever reason, like if a specific case needs variable cost pathing.
Note that this allows for diagonal pathing instead of the cardinal pathing our A* uses right now, and the current version of the code costs the same to move diagonally as it does to move laterally, which may change later. There's also a lot of dummy/test code in right now in general, but you should still be able to test it out for yourself by spawning a bot like a medibot and using your PDA to summon it.
Preliminary Profile Results
A preliminary profile is available here. Using one medibot by itself on Metastation, I generated a list of 500 random blob spawn points around the station, gave the medibot all access, then let each algorithm tackle the list. The old A* algorithm took a total of 86 seconds to complete the list and processed 978065 nodes, while JPS took a total of 46 seconds and processed only 100062 nodes, for a 47% decrease in total time and an almost 90% decrease in nodes processed!
Why It's Good For The Game
Significantly cheaper pathing, which will very much come in handy for the AI datums I'm looking to dig into, what's not to like?
* Implements JPS (Jump Point Search) Pathfinding
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
* moves gun related icons to guns folder (#57077)
moves ammo icons, projectile icons and hitscan effect icons to guns folder
renames projectile.dmi to ballistic.dmi so its less confusing
moves rcd ammo from ammo.dmi to tools.dmi with the rcd
* moves gun related icons to guns folder
Co-authored-by: Fikou <piotrbryla@onet.pl>
* cult construct stuff (#57027)
edits sprites for wizard cult constructs to have more sheen
fixes wizard cult constructs not working
makes soulstone code a bit cleaner i think
makes cult spells use second defines
fixes wraith jaunts being invisible
* cult construct stuff
Co-authored-by: Fikou <piotrbryla@onet.pl>
* Fixes overdose_start() not being called on reagents (#57037)
Co-authored-by: Rohesie <rohesie@ gmail.com>
* Fixes overdose_start() not being called on reagents
Co-authored-by: Thalpy <33956696+Thalpy@users.noreply.github.com>
Co-authored-by: Rohesie <rohesie@ gmail.com>
* pAI's with Binary Encryption keys installed can use them (#57033)
* pAI's with Binary Encryption keys installed can use them
Co-authored-by: RaveRadbury <3204033+RaveRadbury@users.noreply.github.com>
* New flight potion wing sprites for moths (#56412)
Wing sprites are courtesy of Papaporo Paprito over on Fulpstation!
This PR adds a second sprite for flight potion wings for moths.
A new system is implemented to make this possible, using radial menus.
* New flight potion wing sprites for moths
* Update species.dm
Co-authored-by: Jack7D1 <59462654+Jack7D1@users.noreply.github.com>
Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>
Co-authored-by: Azarak <azarak10@gmail.com>
* Re-simplifies corpse examination messages. (#57026)
Dead examination messages are just like they were before. If they are revivable, they are simply dead and lifeless. If they are not, their soul is departed. No needless text.
* Re-simplifies corpse examination messages.
Co-authored-by: itseasytosee <55666666+itseasytosee@users.noreply.github.com>
* replaces all instances of ammo_casing/BB to loaded_projectile again without crashing this time
* a
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>
* AdjustHealth proc cleanup (#56966)
This PR cleans up duplicate definition of the AdjustHealth proc for simplemobs, as otherwise you cannot properly locate the definition via VSCode DMcode plugins. No functionality changes, as this is exactly how it already works - duplicate definition calls the "real" proc definition via ..(). Autodoc documentation of the relevant proc included.
* AdjustHealth proc cleanup
Co-authored-by: Arkatos1 <43862960+Arkatos1@users.noreply.github.com>
* Refactors the Light Eater and gives it some flavortext. Some minor behavior changes included. (#55551)
Converts the effects of the nightmares light eater into a component and a couple elements
Adds some flavor text to the light eater
Makes the effects of the nightmare's light eater dispel if the armblade is destroyed
Probably a net increase in code quality
More flavortext
The nightmare's light eater effect can be dispelled if you are willing to sacrifice the armblade
* Refactors the Light Eater and gives it some flavortext. Some minor behavior changes included.
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
* ethereals no longer have their weakness to brute damage scale up based on their current charge level (#56844)
* ethereals no longer have their weakness to brute damage scale up based on their current charge level
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
* Vines get destroyed on bud's Destroy() (#56902)
Simple fix for #56879 caused by qdelling the bud without clearing up the vines.
* Vines get destroyed on bud's Destroy()
Co-authored-by: Hadzabadza <hadzabadza@yandex.ru>
* Fixes bullying socially anxious dead people by blowing kisses at their corpse (#56732)
At the end of #56698 I added interactions for people with the social anxiety quirk so they sometimes get flustered when hit by a kiss, but I realized precisely 0.2 seconds too late that I didn't actually check if they were alive or conscious before doing so.
This PR fixes this so those reactions will only happen if they're conscious or in soft crit. I also changed the description of the kiss of death lipstick, cause I forgot to put one
* Fixes bullying socially anxious dead people by blowing kisses at their corpse
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
* Makes n2o nontoxic, for reasons (#56839)
Counter to the original intent of the change seen here #50126, n2o will currently deal damage when used with both internal tanks and floods, as the threshold picked for it was about 0.15 moles at room temperature. Even outside this oversight, the original goal can't easily be achieved. Because breathing works off partial pressures, anything you can do with an anesthetic can you can do with an n2o flood.
Therefore I don't think it's behavior worth keeping, as even as a way to disincentivize non-antag n2o floods it would do little.
* Makes n2o nontoxic, for reasons
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Refactors sharpness to use a bitfield (#56817)
Refactors sharpness to use bitfield instead of bitflags in case someone wants to add more types of sharp things, or unique behaviour with them
* Refactors sharpness to use a bitfield
* Update bullets.dm
Co-authored-by: Sparkezel <53384660+Sparkezel@users.noreply.github.com>
Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>
* Headcrab/Headslub now can be spawned via gold core
* Update code/modules/mob/living/simple_animal/hostile/headcrab.dm
Co-authored-by: Gandalf <jzo123@hotmail.com>
* No More Calling get_equipped_items() in mob/living/Crossed(), Makes Slippery Component Work Without it (#56820)
* gets rid of mob/living/crossed and makes clown pdas work without it
* makes squeaky work without COMSIG_ITEM_WEARERECROSSED
* No More Calling get_equipped_items() in mob/living/Crossed(), Makes Slippery Component Work Without it
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
* Refactor can_inject, and introduce try_inject (#56816)
Splits can_inject into can_inject and try_inject. The latter can perform side effects, while the former cannot. Moved the show_error bool parameter to a flag that try_inject checks.
Changes the signature to can_inject(mob/user, target_zone, injection_flags). This was previously redefined in several places, making it impossible to use named parameters. This refactor now allows named parameters to be used, and thus avoiding the ugliness of TRUE, FALSE, FALSE in parameters.
* Refactor can_inject, and introduce try_inject
Co-authored-by: Mothblocks <35135081+Jared-Fogle@users.noreply.github.com>