* 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>
* Fixes HC random paying out double when deconverted antag (#57148)
Fixes hardcore random paying out double as deconverted antag by just doubling it when the round ends instead of starts
* Fixes HC random paying out double as deconverted antag
Co-authored-by: Time-Green <timkoster1@hotmail.com>
* 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>
* 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>
* people with conspiracy phobias are scared of gas miners (#56834)
WHERE IS THE GAS GIANT KOWALSKI?
* people with conspiracy phobias are scared of gas miners
Co-authored-by: Fikou <piotrbryla@onet.pl>
* how to annoy everyone in one commit
* blep
* Update code/controllers/subsystem/vote.dm
Co-authored-by: Gandalf <jzo123@hotmail.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Refactors ambience to a subsystem (#56723)
Ambience is now in a subsystem, and plays every now and then without you having to move to a new area for it to play
* Refactors ambience to a subsystem
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
* Enables 514 testing on master, Removes all reliance on extools outside of maptick (#56724)
* Uses 514's map_cpu var when it's available
* Uses auxtools for the debugger, to supply cross verison compatibility
* Nukes extools reference tracking, reinstates the old ref tracking system
* Enables 514 testing on master, Removes all reliance on extools outside of maptick
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* repaths plasteel tiles to iron
* Update robot_modules.dm
* a
* fuck me
Co-authored-by: Fikou <piotrbryla@onet.pl>
Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>
* [READY] Adds station traits: Small modifiers that can randomly be chosen each round
* conflicts
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>
* Adds Extrovert and Introvert Quirks (#56490)
Adds Extrovert and Introvert quirks. Removes the free bar moodlet, gives it to extroverts, makes a corresponding library moodlet for introverts. Introvert and Extrovert are blacklisted and therefore mutually exclusive.
Seems a bit thin, could we do x?
Yeah sure, and I'd appreciate feedback on where you'd like to see these quirks go. I want to start basic with "where do they spend their free time?" Rather than trying to do something big like moodlets for speaking a lot/little, especially because that seems a bit unbalanced and we already have a quirk that penalizes speech. I'm also looking to avoid unrealistic stereotypes, speech penalties to introverts are kind of unreasonable, introverts aren't inherently bad at talking, they just like alone time.
Why make it free?
I'm taking away a pre-existing moodlet that was free for everyone, also positive quirks are capped at 6 and I see this quirk as being essential to character building so I would prefer not to make someone pick between giving any sort of depth to their character and their powergaming loadout.
Having players define their character as introverted or extroverted and reinforcing the decision through gameplay mechanics is a great way to get them thinking about their character beyond an avatar to make other spacemen horizontal with. I'd argue that it is as foundational as decisions like gender, species, and age.
This opens up the library as a social space, as the two people who take introvert might occasionally run into each other when they are recovering mood and sanity there.
* Adds Extrovert and Introvert Quirks
Co-authored-by: RaveRadbury <3204033+RaveRadbury@users.noreply.github.com>
* Refactors Holodeck to Use Map Templates, Again! Black Magic OOM Crashing No Longer Included (#55645)
Refactors the holodeck to use map templates instead of copy_contents_to, which every maintainer seems to have complaints about.
Fixes#41485 because the matches become part of the spawned list created by ssatoms
Fixes#54789 because the holodeck area no longer has the NO_TELEPORT flag
Fixes#55676 because the map templates cant be changed midround unlike the program copies in the centcom z level
Fixes#49318 because the holodeck no longer creates new areas like the original did
This pr also changes initTemplateBounds to be a /datum/map_template proc instead of a parsed_map proc. This was mainly so I wouldn't have to duplicate vars between map_template and parsed_map. It's also nice because there's no longer a parsed_map proc inside the map_template file, especially when it didn't need to be a parsed_map proc.
The holodeck sims wont take up space in the centcom z level any more (which allows for more possible programs in the future), and map templates are more heavily tested. This is also a chance to future proof the holodeck against bugs. Holodeck also seems more responsive. This should allow for a second custom holodeck in some future ruin as well, although that of course will not be in play for the near future because of the offstation content ban. Also I documented the fuck out of the holodeck
* Refactors Holodeck to Use Map Templates, Again! Black Magic OOM Crashing No Longer Included
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
* Prevents the most common case of fire settling with an excited group (#56317)
Basically when a group with a breakdown timer one tick away from settling merges with a group with hotspots in
it, and the one with a high breakdown timer is larger, the group would settle without respecting the timer of
the hotspot group, causing fwoosh levels of flame.
There's two other ways to achieve this, if you had one group of tiles that are close to the same gasmix as
another
group, and they became inactive, we'd have the same issue. I've solved this by moving the hotspot subprocess to
after active turfs and before excited groups, just for safety ya feel me?
It's still in theory possible, but much much harder. The hard solution to this would be to integrate heat with
how we reset excited group timers, and split excited groups into smaller portions, but I'm not sure I like that
idea.
I need to mull it over.
* Prevents the most common case of fire settling with an excited group
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* once again but better this time
* Makes it so that equipping them has no sound
* Update code/modules/mob/mob.dm
Co-authored-by: Azarak <azarak10@gmail.com>
Co-authored-by: Azarak <azarak10@gmail.com>
* Fixes same-name for floor tile recipes. (#56207)
When you try to seal a breach you'll need to make sure there's lattice, and over the lattice you need to put a floor tile. The material floor tiles don't work for this, or at least the iron one doesn't. The regular one does. But it's sort of a guess on which is which while creating the recipe, unless the names are different.
* Fixes regular and material floor tile recipes having the same name.
Co-authored-by: Rohesie <rohesie@gmail.com>
* Add better weakref support to qdel (#56206)
* Add better weakref support to qdel
* change request
* Add better weakref support to qdel
Co-authored-by: spookydonut <github@spooksoftware.com>
* Add weakref support to qdel (#56171)
qdel() should allow usage of weakrefs to avoid harddels on long duration qdel_in usage
* Add weakref support to qdel
Co-authored-by: spookydonut <github@spooksoftware.com>
* Allow dynamic to be configured when used as the forced secret mode (#56122)
Allow dynamic to be configured (roundstart rulesets) when used as the forced secret mode
* Allow dynamic to be configured when used as the forced secret mode
Co-authored-by: Mothblocks <35135081+Jared-Fogle@users.noreply.github.com>
* [READY] A victory for revolutionaries will no longer end the round on dynamic, instead no new security and command will be allowed to join (#55956)
Currently, a victory for revoutionaries leads to the round abruptly ending on dynamic. This has been replaced by all revolutionaries being deconverted, and no new security or command positions being available.
Also attempts to unionize (pun intended) copy and paste code in the round start and late join revolutionary rulesets into being handled under the revolutionary team instead.
* [READY] A victory for revolutionaries will no longer end the round on dynamic, instead no new security and command will be allowed to join
Co-authored-by: Mothblocks <35135081+Jared-Fogle@users.noreply.github.com>
* Finishes the allocation refactor (#55965)
#53841 continuation
I recall that the reason for infinite stuns and such was that the priority wasn't being cleared properly when something hitched and I fixed it and I don't remember where exactly but it works now (TM)
A variation of this is TMed on TGMC and it works fine
* Finishes the allocation refactor
Co-authored-by: TiviPlus <57223640+TiviPlus@users.noreply.github.com>
* Merge pull request #55810 from NotRanged/democracy
Admins cancelling a vote now leaves a log and message
* Admins cancelling a vote now leaves a log and message
Co-authored-by: 81Denton <32391752+81Denton@users.noreply.github.com>
* The Great Radio Rework: NTNET Part 1 of many.
* Update airlock.dm
Co-authored-by: WarlockD <warlockd@gmail.com>
Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>
* Butthurt Admin Prevention (#55661)
It's a story as old as time itself. Admin loads a new shuttle, decorates it, and then shuttle catastrophe triggers and the admin gets deeply, deeply owned. With this, you can set what emergency shuttle they picked and prevent any more changes to the shuttle!
* Shuttle Manipulator now gives admins the option to prevent shuttle purchases when they change the emergency shuttle.
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>