* Tweaks to robo-tourists (#57497)
balance: Robotourists pay more for food now
qol: Only one robo-tourist will wait at the door at any time, preventing constant spam if you only have 2 seats.
qol: more variation in robo-tourist colors
* Tweaks to robo-tourists
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
* Dog AI 2.0 (#57186)
Now that JPS and AI movement datums are fully merged, I'm here to take another (my third actually) crack at giving dogs fun AI. Here's a video demonstration (somewhat WIP), and a quick rundown of everything dogs will be able to do. Basically all of these behaviors are generic and can be extended to other simple mobs,
Commands and Friendship
Fetching
Attack/Harass
Heel
Play Dead
* Dog AI 2.0
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
* Space Dragons are now actually capable of flight. (#57428)
* Space Dragons are now actually capable of flight.
* Gives them the tag so the flying animation doesn't apply, it looks like shit without this
* Space Dragons are now actually capable of flight.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Purges two redundant proc calls. (#57421)
Title. dna.species.handle_body() calls remove_overlay(BODY_LAYER) already. I added a comment about the other one.
* Purges two redundant proc calls with human icon updates.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Partial revert of datum poll creation, fixes duplicated irv votes (#57462)
* Partial revert of datum poll creation + stops duplicated votes from being trusted from clients
Reverts the part of jordies poll refactor that allowed a duplicated vote in the db to make it back on the client's vote screen.
Also fixes the code that would allowed duplicated votes to be passed from the client. (not from jordie's poll refactor pr.)
The race condition still exists, thats harder to fix, counting code handles this correctly
* Update poll.dm
* Update poll.dm
* Partial revert of datum poll creation, fixes duplicated irv votes
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
* Cayenne can pick up the nuclear authentication disk (#57395)
Co-authored-by: Emmanuel S. <emmanuelssr@ gmail.com>
Co-authored-by: Jordan Brown <Cyberboss@ users.noreply.github.com>
* Cayenne can pick up the nuclear authentication disk
Co-authored-by: Fikou <piotrbryla@onet.pl>
Co-authored-by: Emmanuel S. <emmanuelssr@ gmail.com>
Co-authored-by: Jordan Brown <Cyberboss@ users.noreply.github.com>
* Tweaks cryostylane to use the new reaction mechanics, incorporating stasis iceblocks, freezing, temporary organ decay prevention and surgery speed modifiers.
* Update holder.dm
* Update holder.dm
Co-authored-by: Thalpy <33956696+Thalpy@users.noreply.github.com>
Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>
* No more negative blood levels, defibs should no longer add toxin damage for slimepeople. (#57348)
* No more negative blood levels, defibs should no longer add toxin damage for slimepeople.
Co-authored-by: prodirus <44090982+prodirus@users.noreply.github.com>
* Fixes an oversight with monkeys and revenant essence draining but my branch exists (#57368)
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Fixes an oversight with monkeys and revenant essence draining but my branch exists
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Minor typo and comment fixes follow-up for ID card rework (#57318)
* Minor typo and comment fixes follow-up for ID card rework
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Fixes runtimes from firing projectiles, adds unit test for firing guns (#57345)
* Fixes runtimes from firing projectiles, adds unit test for firing guns
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
* Changes how organ failure is processed to make it more interesting, and ports liver to the new system. (#57246)
Co-authored-by: coiax <yellowbounder@ gmail.com>
* Changes how organ failure is processed to make it more interesting, and ports liver to the new system.
Co-authored-by: EdgeLordExe <42111655+EdgeLordExe@users.noreply.github.com>
Co-authored-by: coiax <yellowbounder@ gmail.com>
* Japanese Tourists! Oh, and beef stroganoff, I guess! (#57305)
Co-authored-by: Qustinnus <Floydje123@ hotmail.com>
Co-authored-by: Jordan Brown <Cyberboss@ users.noreply.github.com>
* Japanese Tourists! Oh, and beef stroganoff, I guess!
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: Qustinnus <Floydje123@ hotmail.com>
Co-authored-by: Jordan Brown <Cyberboss@ users.noreply.github.com>
* Miscellaneous appearance fixes. (#57133)
* Fixes modular computer runtimes
- Adds a proc to eat the source arg of the update icon signal.
* Fixes a couple things not passing the right args
- Fixes the alien leap hallucination passing a string as the first arg to updat_icon
- Fixes the roulette machine passing the payout as the first arg to update_icon.
* Miscellaneous appearance fixes.
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
* Fixes TRAIT_NOBREATH crit damage being applied after death (#57220)
* Fixes TRAIT_NOBREATH crit damage being applied after death
Co-authored-by: Hadzabadza <hadzabadza@yandex.ru>
* adds a bitflag for no random pixel shift on dropping, adds turf_flags var to replace usage of flags_1 on turfs (#57263)
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* adds a bitflag for no random pixel shift on dropping, adds turf_flags var to replace usage of flags_1 on turfs
Co-authored-by: Fikou <piotrbryla@onet.pl>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Makes borgs unable to self-bucket hat (#57257)
Adds a check when someone tries to put a hat on a borg to make sure a borg can't put one of its own modules on itself, preventing janiborgs from having nodrop borg module buckets on their head
Also makes thrown hats respect nodrop hats that are already worn, so that you can't easily remove a placed nodrop hat with any old hat.
Prevents janny borgs from memeing on people by giving them a cursed bucket that fuses with their hand and utterly ruins their day.
* Fixes borg module buckets dropping to the floor
Co-authored-by: ArcaneDefence <51932756+ArcaneDefence@users.noreply.github.com>
* 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>