* Adds a cool pair of salesman shades to the maintenace loot pile (#62141)
Adds a pair of tinted glasses to the maintenance loot pool that has a unique effect when the wearer is at low sanity. Also adds a signal that sends the sanity amount of a mob every time SetSanity is called.
* Adds a cool pair of salesman shades to the maintenace loot pile
Co-authored-by: MMMiracles <lolaccount1@hotmail.com>
* Emagging the communications console now lets you purchase dangerous shuttles. Moves some to this system (including Disco Inferno and the Oh, Hi Daniel) (#62056)
Emagging the shuttle will now let you buy dangerous shuttles (anything marked emag_only).
This includes:
Disco Inferno (which returns, at 10,000 credits)
Oh, Hi Daniel (which returns, at 10,000 credits)
Hyperfractal Gigashuttle (which has been moved over, and now costs 10,000 credits)
Grand Corporate Monastery (which has been moved over, and now costs 18,000 credits)
Purchasing a shuttle while it's emagged will censor your name.
Adding the capability for emag shuttles allows for some fun design space. Previously, shuttles like the Disco Inferno and Oh, Hi Daniel were removed for being grief messes, but now that an antagonist is (in most cases) required to purchase, this now becomes an act of in-game chaos, rather than just grief.
This can also help administrative efforts. Buying grief shuttles presently just makes you valid to the crew, which is tough considering the people who buy this are the ones in command. Now, buying grief shuttles not only requires an emag (which a basic griefer cannot get), but can now be deemed as a traitorous act.
* Emagging the communications console now lets you purchase dangerous shuttles. Moves some to this system (including Disco Inferno and the Oh, Hi Daniel)
Co-authored-by: Mothblocks <35135081+Mothblocks@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>
* Refactor rolling paper to use customizable reagent holder (#61758)
The component can accept dryable items and food items now. Any instance of the component can be set to use dryable items, just like normally food items are used. To add the dryable item, it's the same as with food. You attack with the item in hand. I am currently thinking about more uses for dryable items and also more ways the component can be used.
* Refactor rolling paper to use customizable reagent holder
Co-authored-by: Jack LeCroy <3073035+jacklecroy@users.noreply.github.com>
* Oh hi Mark.
* hand dryer 4000
* E
* fur dyer
* actually makes it work
* Update fur_dyer.dm
* Update fur_dyer.dm
* Final touches!
* Update jobs.txt
* le straight razor
* f
* Update hhmirror.dm
* updoot
* Update IceBoxStation_skyrat.dmm
* E
* No more failure penalties, it's bad.
* logic errors
* actual hairdye
* Update barber.dm
* Rebases to newer map versions
Fixes multiple issues with the original map changes in this PR, which are as follows but not limited to:
• Trapping Lawyers in their office on Blueshift
• Incorrect curtain types
• Awkward atmos
• Broken disposals
• Missing wallmounts
• Missing firelocks
* camera on meta
* Update jobs.dm
* more dyesprays
Co-authored-by: Kat <evesovereign@hotmail.co.uk>
* Power generation (collectors, coils, grounding rods) cleanup (#62144)
* Energy collection: Mass rework
Radiation Collectors and Tesla Coils are now subtyles of a common
energy_accumulator type. This type combines common code such as smoothing
output over energy received, computing power output, and handling wire
connections.
Inline calculations using machine energy units are now performed by
common math functions in maths.dm. Rather than reference 0.1,
1 SECONDS is used to make it clear this is to calculate to and from
tickrate dependent units.
Constants which are written in terms of tickrate dependent units are now
written in terms of joules, and use these helpers to convert to and from
these units. With SSmachines.wait / (1 SECONDS) being 2, this usually
means doubling the values of constants which were previously defined in
terms of machine energy units.
* Energy collection: Map path update
> git ls-files | grep dmm | xargs sed -i 's1rad_collector1energy_accumulator/&1g'
> git ls-files | grep dmm | xargs sed -i 's1tesla_coil1energy_accumulator/&1g'
> git ls-files | grep dmm | xargs sed -i 's1grounding_rod1energy_accumulator/&1g'
* Power generation (collectors, coils, grounding rods) cleanup
* object path update (#8882)
* [MDB IGNORE] Missed some paths (#8886)
* object path update
* oops missed a couple paths
Co-authored-by: esainane <esainane+github@gmail.com>
Co-authored-by: ORCACommander <orcacommander1@gmail.com>
* magatsuchi is trying to remove your stray bracket! (#62157)
removes a stray bracket in the stripping message, effectively enhancing user experience by 2000%
* magatsuchi is trying to remove your stray bracket!
Co-authored-by: magatsuchi <88991542+magatsuchi@users.noreply.github.com>
* Make Monkified Affect Person's Name Again (#62127)
This PR re-adds a mechanic lost during the monkey species refactor where the monkified mutation gave the afflicted a generic monkey name as opposed to keeping their original name.
* Monkified Mutation Gives Generic Monkey Name Again
Co-authored-by: IndieanaJones <47086570+IndieanaJones@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>
* Broken Secways will say it's broken, rather than the component. (#62096)
changes it from
"/datum/component/riding/vehicle/secway sputters and refuses to move!"
to
"The secway sputters and refuses to move!"
* Broken Secways will say it's broken, rather than the component.
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Gives Atmos tech external access by default (#62126)
Right now Atmos Techs have external airlock access only on skeleton crew.
So on a high pop round if you are the guy that is trying to repair a breach you need to use one of the 3 external airlocks you have access, Arrivals, Departures or Atmos, to move in/out and start repairs instead of being able to use the nearest external airlock to the breach.
This PR changes that.
If repairing the station is annoying/too much effort the players will simply not fix it.
Right now, if you fix a breach on a department and want to go into it to do further repairs, you either need to trap yourself into the breached room, screaming at the AI/hacking your way back into the main department area or walk all the way to one of the 3 airlocks you have access and then follow the hallway back to the department entrance, probably going across multiple external airlocks on your trip.
Or you just put down a holo fan, weld a external wall down and you are back inside the station in 30 seconds with no issues.
The lack of access is mostly a trap for new Atmos Techs.
* Gives Atmos tech external airlock access by default
Co-authored-by: GuillaumePrata <55374212+GuillaumePrata@users.noreply.github.com>
* runtime fixes for old calls of do_teleport (#62026)
Co-authored-by: Kylerace <kylerlumpkin1@ gmail.com>
* runtime fixes for old calls of do_teleport
Co-authored-by: Seris02 <49109742+Seris02@users.noreply.github.com>
Co-authored-by: Kylerace <kylerlumpkin1@ gmail.com>
* Improves readability on id_trims/jobs (#61484)
So anyway, I want to buff Atmospherics Technician access with my hard earned GBP, accidentally fell into the refactor rabbit hole and decided I should make things cleaner first...
Just makes things easier to read, now the extra extra_access is added on top of the minimal_access so it is easier to see which jobs have access to what based on the pop/config options.
I wanted to rename a few things on the config but since skeleton crew access is something that admins are talking about I will leave it for later and just improve readability here.
Also, this was a lot of copy pasta, moving things to be in alphabetical order, removing unnecessary ones, I read it 10 times but I might still have lost some access in the pool so scream at me if I dropped something.
Did you know the HoS had access to maints twice? I know command has benefits above the crew but twice the maint access is too much...
Hopefully it will be harder for small mistakes like this to slip by.
* Improves readability on id_trims/jobs
* Fixed our job access, hopefully.
Co-authored-by: GuillaumePrata <55374212+GuillaumePrata@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Drowsiness refactor (#62104)
Creates two procs in /mob/status_procs for handling drowsiness changes (with check for negative values), and refactors all code to use these procs instead of assigning values to the mob's drowsiness themselves.
* Drowsiness refactor
* Fixing more stuff in our code
Co-authored-by: thatoneplebeian <67017991+thatoneplebeian@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Fixes a few hard deletes and runtimes I either caused, or ran into when trying to fix hard deletes (#61953)
Please don't try and send chat messages if you have nothing to say
Fixes a spurious runtime.
Fixes a runtime caused by my lack of understanding of huds. remove_hud_from is intended for hud watchers, remove_from_hud is intended for hud items. Doesn't really make sense most of the time, and just runtimes out the ass
Fixes a runtime in shapeshifting, restore should not run if the object is not restoring, or if it's deleting. it should run if it's not restoring, and it's not deleted. 4head
Fun fact, if there's two turret control boards they'll override each other. Use weakrefs. Oh also removes a var called cp, nothing good will come of that
Today in: Good lord the stacking machine is an afront to god, we discover that the labor claims console was attempting to act as a console, which of course fails when it comes time to clear it's improperly named var. Disgusting
Attempts to fix potential wound ref hangs in surgeries? maybe?
Fixes a runtime in luminescent stuff I created in my big harddel crusade. owner is a mob, not a species
Fixes a runtime related to headspikes deleting themselves twice. Pain
Fixes hard deletes sourced from the prophet trauma. Good fucking lord this is awful
Offhand item is somehow hard deleting. I have no idea how. Here's hoping signals fixes it, because if it doesn't I'm stumped. It's not a common scenario, but it does happen in spurts that suggest repeated usage
* Fixes a few hard deletes and runtimes I either caused, or ran into when trying to fix hard deletes
* Update turret_id_system.dm
* Update turret_id_system.dm
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* fixes mode switch actions on storage items being broken (#62059)
Checks the wrong variable, changed it so that it now checks the correct variable
* fixes mode switch actions on storage items being broken
Co-authored-by: Fikou <23585223+Fikou@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>
* Adds SHOULD_NOT_SLEEP to Destroy. Why didn't we do this before. (#61943)
* Adds SHOULD_NOT_SLEEP to Destroy. Why didn't we do this before.
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Refactors the list datatype to support composite lists. Adapts a lot of circuits to be able to properly use composite lists. Adds the dispenser shell (#61856)
Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>
Co-authored-by: Colovorat <35225170+Colovorat@ users.noreply.github.com>
* Refactors the list datatype to support composite lists. Adapts a lot of circuits to be able to properly use composite lists. Adds the dispenser shell
Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>
Co-authored-by: Colovorat <35225170+Colovorat@ users.noreply.github.com>
* Delete seeds whenever a plant is deletes, delete plant genes when a seed is deleted, + refactor various gene adding / deleting (#61747)
* Delete seeds whenever a plant is deletes, delete plant genes when a seed is deleted, + refactor various gene adding / deleting
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Replaces the Mafia button with the Minigames button. Adds tgui panels for selecting minigames and for CTF (#61638)
This PR replaces the Mafia button on the observer HUD with a minigames button that allows you to access both CTF and Mafia.
It also adds a CTF menu that allows you to view current scores, players needed to start a game, and joining a ctf game without needing to move to the spawner.
Co-authored-by: Jared-Fogle <35135081+Mothblocks@ users.noreply.github.com>
* Replaces the Mafia button with the Minigames button. Adds tgui panels for selecting minigames and for CTF
Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
Co-authored-by: Jared-Fogle <35135081+Mothblocks@ users.noreply.github.com>
* fixes penetrator rounds phasing through vehicles (#61907)
When I gave vehicles the PASSMACHINE flag in #61793 I forgot that penetrator rounds existed leading to them completely ignoring mechs. This time I created a new flag for vehicles, added it to water particle effects, and excluded it from the penetrator rounds.
Additionally this flag has been added to the heretic's phasing ability.
* fixes penetrator rounds phasing through vehicles
Co-authored-by: Invalid <51190031+InvalidArgument3@users.noreply.github.com>
* [s] Cleanup escalation unsafe procs (#61905)
Fixes admins spawning in atoms and datums without the DF_VAR_EDITED flag
* [s] Cleanup escalation unsafe procs
Co-authored-by: Jordan Brown <Cyberboss@users.noreply.github.com>
* Fix disky teleporting itself off the emergency shuttle on transit. (#61786)
Fixes#61782
Did a minor cleanup in the stationloving component to better represent what the proc the destination_in_bounds proc actually did. It is now atom_in_bounds since it's called after the atom has moved and works on the atom's turf. This doesn't fix the problem, but it obfuscated things a bit since it was deceptively named.
The issue is that when the e-shuttle leaves the station, for every turf on the shuttle it first moves the turf's contents to hyperspace, then moves the turf to hyperspace, then changes the area. Since the player holding disky enters Hyperspace first then has the shuttle turf constructed around them, disky teleports back to the station because it enters a non-whitelisted location.
Instead of whitelisting Hyperspace, I changed the order of operations to turf transfer, area transfer and finally atom transfer. This fixes the issue (as now disky moves from z=2 to z=12 /area/shuttle/escape, where escape shuttle is whitelisted instead of z=12 /area/transit, where /area/transit is not whitelisted).
* Fix disky teleporting itself off the emergency shuttle on transit.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Mime Fan vs Clown Enjoyer (#61818)
Changes the flavor of the clown fan quirk to something more appropriate
* Mime Fan vs Clown Enjoyer
* Update maint_loot_common.dm
Co-authored-by: Hulkamania <39933245+JetBrody@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Fixes spirit holding component not working on null rods by adding the subtype picker component to null rods (#60767)
Null rods were not calling parent on attack_self and thus not sending signals to the component. DUMB! STINKY!!!!
I have elected to make subtype picking a component itself so this mistake will never be remade
fixes#60712 (possessed blades cannot awaken a spirit)
also, fixes spirit holder not making sounds
* Fixes spirit holding component not working on null rods by adding the subtype picker component to null rods
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* Lizard Firebreath is now a cone of fire instead of a fireball (#61742)
This PR reworks the firebreath mutation from being a wizard fireball that one hit crits with a power chromosome to a wave of fire.
The cone is 3 tiles, or 5 with the power chromosome, and travels in mostly a three wide column.
The closer you are to the caster, the more fire damage you take.
Non-antags can get wizard fireball and that's really dumb, this re-flavors it to be more like a dragon's breath, while removing the stupid aspect.
* Lizard Firebreath is now a cone of fire instead of a fireball
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Add the ability to cancel incoming and outgoing cross comms console messages for admins (#61799)
You can now cancel incoming and outgoing cross comms console messages.
* Add the ability to cancel incoming and outgoing cross comms console messages for admins
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* Refactors how circuit size is calculated. Fixed module circuit size not taking up capacity equal to the amount of circuit components inside of it. (#61554)
Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>
* Refactors how circuit size is calculated. Fixed module circuit size not taking up capacity equal to the amount of circuit components inside of it.
Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>