Skip to content

Commit 6812ade

Browse files
wraith-54321ComxyFikouRhialsGhommie
authored
Buget cuts (#2942)
* stuff * works mirror * cool stuff * oh * Update fire_ball.dm * Wizard Spell Cooldown Changes (#76981) Mutate prev = 40 / 37.5 / 35 / 32.5 / 30 Mutate now = 40 / 35 / 30 Spell cards prev = 6 / 5 / 4 / 3 / 2 Spell cards now = 6 / 4 / 2 Teleport prev = 60 / 50 / 40 / 30 / 20 Teleport now = 60 / 40 / 20 Shape change prev = 20 / 16.75 / 12.5 / 8.75 / 5 Shape change now = 20 / 12 / 4 Swap prev = 30 / 24 / 18 / 12 / 6 Swap now = 25 / 15 / 5 I also deleted the invocation for swap to make it more usable. When I added the spell I thought it would be used more but I have never seen it been used. For a lot of spells it seems like it is useless to upgrade them, since it costs a lot but does little in a lot of cases. Maybe this goes for more spells than my pr changes but I wanted how this comes over first. I rather do not do balance changes since it ruins my gbp even though I am trying to improve the game but I still thought this was worth it since it might also make the swap spell more relevant. :cl: balance: Changes some cooldowns and upgrades of spells. /:cl: * Update _base_event.dm * fixes cursor catchers not working without widescreen (#77372) ## About The Pull Request apparently vis x and vis y dont exist unless the object is transformed ## Changelog :cl: fix: sniper scope and kinesis should work without widescreen /:cl: * port (tgstation#75665) * Restores drone holiday headwear and extends it to assistants (#78347) drone_hat defined a piece of headwear that drones would spawn with when the corresponding holiday is active. While peeking at holiday code for my own amusement, I noticed that it wasn't actually used anywhere and must have become deprecated at some point. I have re-implemented that functionality, and extended it to assistants. Now, all drones/assistants spawning without headwear during a holiday will receive the holiday's defined holiday_hat (if there is one). This modifies a few of the holiday_hat entries, particularly the mask entries since the new system is head-only, and adds a few more in there as well. ![image](https://github.com/tgstation/tgstation/assets/28870487/f44d8499-957c-4b71-843b-26ab77f46ff4) There's probably some balance implications to, say, spawning all the assistants with fire helmets or pirate bandanas, but I see that as being balanced out by the infrequency of these cases. Restores an piece of drone code that fell off the wagon somewhere amongst the removals and reworks. As for implementing it for assistants, seeing assistants in funny hats makes me laugh a lil bit :) :cl: Rhials qol: Restores holiday hats for drones. qol: Extends holiday hat behavior to assistants. Get festive! /:cl: * Adds a sleeve of tiling colors for several holidays. (#79188) Inspired by #79108. This concerns Christmas, many national holidays and a few gimmicky ones where it'd make sense. Oh, yeah, I've also added "Sacrebleu" to the list of possible station prefixes for the Bastille day, since "Merde" is already there. <details> <summary>some screenshots (got tired of restarting the server over and over halfway through)</summary> ![Booze Complex Fifty-Four 2023-03-17 090724](https://github.com/tgstation/tgstation/assets/42542238/c09e6c3d-8fab-45d6-802e-13687e83b9a7) ![Merde Tomb Seventeen 2023-07-14 084422](https://github.com/tgstation/tgstation/assets/42542238/045f7c32-9a17-4e24-9d33-c51596e348e6) **No, it isn't the french flag again, it's the tram tiles that always display the pattern in vertical stripes...** ![Southern Cross Outpost 39 2023-02-06 012622](https://github.com/tgstation/tgstation/assets/42542238/f6e24875-35b0-4b03-a4f8-72f8d976005d) removed the white) : ![Festive Space-hulk XLIII 2023-12-25 013720](https://github.com/tgstation/tgstation/assets/42542238/8328ff54-88d9-4be6-9d5e-773fbba7046c) </details> Implemeting a smidge of festivity and/or celebration to several holidays. Open to suggestions and thoughts. :cl: image: Several holidays now have themed floor and tram tiling. /:cl: * Dehardcodes HR core blacklist (#77075) Alternative to / closes #77069 Their PR reminded me I wanted to de-hardcode this list at some point and make it rely on a flag set on the jobs. So this pr does that. I also made a combination flag of the flags copied across all station jobs. Makes it easier to see at a glance which jobs have a unique flag set and which are just copied across everything. Makes it more maintainable for future us / downstreams to add new jobs which may potentially be in this blacklist. :cl: Melbert fix: Prisoner slots can no longer be controlled by Plexagon HR Core. (special things to distributivgesetz) fix: HoPs can open more assistant job slots if a non-assistant job is the overflow role code: Dehardcode the HR core blacklist for jobs which cannot have more slots opened by the HoP /:cl: * Blocks (most instances of) screen elements from entering base atom `/Click` (#82236) Fixes #76495 This PR prevents (most) screen elements from running base `/atom/proc/Click` and `/mob/proc/ClickOn()` when clickend. (The only exception I found to it was the cursor catcher for scopes.) Why? Most, if not everything in `ClickOn` is considered "in world" interacting. It abides by `incapacitated`, runs `faceAtom`, etc. This means, currently, you can "interact" with screen elements using in world elements. For example, TK-ing / pointing a gun at your mood face. Right now this affects very little, but there is a large potential for errors. All you have to do is forget a sanity check in `afterattack` and suddenly you have an item that can affect your screen objects. The only example I found was the `/item/godstaff`, which can color some of your screen elements. But there may be more. Like guns. Note: Many, many screen elements ALREADY do not fall down into atom click. They simply don't call parent. Which is totally fine. I am just ensuring ALL* screen elements do not fall down into atom click. :cl: Melbert fix: Blocks mobs from trying to "physically" interact with some of their hud elements, such as using Telekinesis or point a gun at your mood meter. /:cl: * spell cards fix * Standardizes Adding Datum Actions into a proc/define (Bonus AI Support) (Bonus Useless Code Cleanup) (#79389) The way we add multiple actions has been very unstandardized, with several implementations of this code doing certain things wrongly (i.e. not nullchecking `ai_controller`), so let's do something in the vein of cases. There are still a few things that simply can't be done here, but this gets the most generic "give my mob some actions and also maybe tell the AI about it" stuff done. This is only useful in cases where we don't ever need to reference the ability ever again when it's added. In an ideal world we would never need to reference the ability again and it would all be self-contained, but this is not an ideal world. However, a lot of the latticework has been built around certain implementations of this behavior making refactoring it just a bit easier. I also did a lot of auditing on `Destroy()` stuff, because `/datum/action`s listen to signals when their parent is `qdel`ing, so we don't need to neither hold nor clear references on our mob's `Destroy()`. This was all cleaned up now because even if we couldn't use `grant_multiple_actions()` (the new proc I add in this PR), it's just not useful at all and will further hinder efforts to implement this new proc. Also also, I noticed in some places (such as megafauna) that we were initializing a lot of datum actions _in nullspace_. We didn't pass the `src` argument to `New()`. I quickly fixed that, as well as got rid of the useless types we had going on. Also also also, I added a define macro to handle some of the cases that melbert was speaking about in his review down below. All you need to do is invoke the define on the typepath, and you should be good to go from there. There's probably a better way to do it, lmk though. we do the whole `do while` thing in order to prevent code leakages. * Very easy to change the implementation. In case we need to do something different in how we add actions or anything like that, we can simply just edit instances where this proc is located. * Standardizes addition behavior. There's a lot of cases like the aforementioned not-null-checking `ai_controller` that we really need to look out for, so having it all in one accessible proc ensures standard behavior. * Reduces copy-pasta. A lot of mobs had their own individual implementation of this, so let's just clean up all those lines of code. :cl: refactor: The way mobs get specialized actions (like revenants shocking lights or regal rats summoning rats to their side when you slap them) have been modified, please report any bugs. /:cl: This doesn't touch the following case FTR: * Instances where we need to do work on the `/datum/action` after we `Grant()` it, like if we were to edit some variable on the action or if we need to call procs on said action. I don't like how the current code is so reliant on storing a variable to it, but that's a windmill to attack another time. * Adds 'Bloody Spreader' component that bloodies everything it touches (#78743) Adds 'Bloody Spreader' component that bloodies everything it touches! For example inserting an item into it if it is a storage item. Or entering it if it's a turf, or bumping onto it, or... you get the point, hopefully. Added this component to the MEAT backpack, meat slabs, bouncy castles, meateor fluff, meateor heart, and the heretic sanguine blade. Gave most of these the blood walk component as well, which spreads blood if it's dragged around. Meat slabs contain a limited amount of both components, eventually they will 'dry out'. Meat isn't meaty and squelchy enough, this will make it meatier. It also makes the janitor suffer. :cl: code: Adds 'Bloody Spreader' component that bloodies everything it touches! code: For example inserting an item into it if it is a storage item. Or entering it if it's a turf, or bumping onto it, or... you get the point, hopefully. add: Added this component to the MEAT backpack, meat slabs, bouncy castles, meateor fluff, meateor heart, and the heretic sanguine blade. add: Gave most of these the blood walk component as well, which spreads blood if it's dragged around. add: Meat slabs contain a limited amount of both components, eventually they will 'dry out'. code: Added a signal for when an item is entered into storage. /:cl: * new wizard ability and basic leaper refactor (#79237) refactors leapers into basic mobs and adds a new ability for wizards. for 2 points wizards can buy their own leaper pet. they will get a contract which lets them pick their pet's name and color ![thefrogs](https://github.com/tgstation/tgstation/assets/138636438/8df9b893-d07d-4e51-a9fa-644830cc7a81) after they sign the contract they will get a frog statue which is used to contain the leaper. players can use this statue to release or recall the leaper into the statue. when its in the statue it will slowly regain health or even revive from the dead, but if it gets gibbed then the statue will be useless. also adds a new ai behavior for leapers which lets them go swim in water (and splash around) for a period of time. i gave this behavior to frogs and crabs too when riding the leaper, the players will get access to all its abilities, it now has new abilities, it can create frog minions that suicide bomb the enemies and it can also create a shower of poisonous structures. https://github.com/tgstation/tgstation/assets/138636438/931aa7b4-09f0-493f-bdb6-f3bdd0915b22 also when riding the leaper, players can point at walls near it so it will destroy it. alternatively players can give commands to their leapers to use abilities and to follow them if they are not riding it. wizards cant be force dismounted from their frogs, and only wizards can ride the frogs. this also removes leapers from cytology as they now are much more dangerous and have a new home refactors leapers into basic mobs, and gives more gameplay opportunities for wizards :cl: refactor: leapers have been refactored into basic mobs please report any bugs add: wizards can now summon a leaper pet removal: removes leapers from cytology /:cl: * double * Re-pr of #70522 "Space Dragon Update: Up Close and Personal" (#75607) This PR is a re-pr of ##70522 , with some tweaks: Notably: - Wavespeak is not a say override, but instead uses a mindlink. Meaning carp and space dragons can still talk verbally, but they can also use telepathy to talk to all carp and the dragon. - I would refactor Mind Linker a bit further to be a full datum rather than a component but that's for another time. - Removed the gravity aura component in favor of using the existing forced gravity proximity monitor. - Also fixed a bug involving that. Lol. - Minor refactoring around the place. - Reduced the volume on a lot of space dragon sounds. - Edited the roundend report for Space Dragons to collate all entries into one per player. ![image](https://github.com/tgstation/tgstation/assets/51863163/5c3222b2-a80c-4df9-a060-4c5733ab712f) Space dragon still plays pretty "play lame win game" right now, the optimal strategy for them is to find the cheesiest spot for a portal and spam their stun / fire breath to make it unreachable. I was a fan of the original PR so I updated it and brought it back. :cl: IndieanaJones, Melbert balance: Space Dragon can no longer choose its rift locations freely, and instead is given 5 pre-determined locations to pick from instead balance: Space Dragon itself has been buffed in order to support a more confrontational playstyle, however its wing gust now requires a line of sight to targets in order to affect them. balance: Player Space Carp from rifts now have buffed health, but reduced object damage values. They also gain a temporary speed boost when hit by Space Dragon's fire breath instead of taking damage. balance: Carp rift spawn times have been reduced, the healing AOE is now a 3x3 instead of a 1x1, and apply normal gravity in a large radius around them balance: Space Dragon and rift carps now communicate on a private mind link channel via action button similar to Raw Prophets and Slimepeople. fix: Fixed Gravity Generator forced gravity not applying. fix: Intern Announcer will no longer replace Space Dragon announcements. qol: The roundend report for space dragons now collates all players who played a carp into one entry, rather than one per carp spawned. qol: Space Dragon sounds are much less ear piercingly loud. /:cl: --------- Co-authored-by: IndieanaJones <[email protected]> Co-authored-by: IndieanaJones <[email protected]> * Revert "new wizard ability and basic leaper refactor (#79237)" This reverts commit 7d592d1. * Revert "Standardizes Adding Datum Actions into a proc/define (Bonus AI Support) (Bonus Useless Code Cleanup) (#79389)" This reverts commit ac0f461. * Revert "Adds 'Bloody Spreader' component that bloodies everything it touches (#78743)" This reverts commit 711c1f3. * Revert "double" This reverts commit 05409aa. * Reapply "Adds 'Bloody Spreader' component that bloodies everything it touches (#78743)" This reverts commit a48b8ea. * feex * Improves Cursed Items Wizard Event (#79941) I was bored and stumbled upon this and I remembered how pissed off I got that smoke would spawn on all humans during this event despite nothing *magical* happening to them. So, I fixed that (as well as saving us from iterating through `alive_mob_list` TWICE) and did some other code improvements while in the area. * We use define keys instead of raw strings (typo prevention) * No more single-letter variables (way more readable too) * Better indentation * Better list multilining * Some more documentation * Use legitimate boolean dichotomy yep it looks good you don't get smoke spawning on you for no reason at all when you didn't do anything :cl: fix: During the "Cursed Items" wizard event, you should only have smoke spawn on you if you actually had a cursed item equipped to you. /:cl: --------- Co-authored-by: Fikou <[email protected]> * Bounty Hunters, Fugitives, and Paradox Clones now have orbit menu categories (#75774) This adds Paradox Clones, Fugitives, and Bounty Hunters to their own orbit category. Paradox Clones use the hostile red color for the dropdown menu, while Fugitives use orange and Hunters use yellow. Here's how it looks: ![image](https://github.com/tgstation/tgstation/assets/28870487/1b3642da-ec0e-40e6-abd5-c21c7302010f) This also fixes the wizard minion antag datum's antagpanel_category being text, rather than the proper define. Tracking these guys down doesn't need to be as hard as it is. :cl: qol: Fugitives, Bounty Hunters, and Paradox Clones will now appear in the orbit menu. /:cl: * Deviant Crew antag panel category, Obsessed crew now shown in orbit menu, Paradox Clone orbit tab is now white (#80450) ## About The Pull Request This rounds up the "Other" (Brainwashed, Hypnotised, Wizard Revenge, and Obsession) antagonist category into the new "Deviant Crew" category. This tab is white! Obsessed crew are now displayed in the orbit panel (no other antagonists in this group are though). The Spacetime Aberrations (Paradox Clone) group has also been changed to be white. Here's how that looks: ![image](https://github.com/tgstation/tgstation/assets/28870487/415b8cbb-7ac3-4e24-9f74-466480c2aab0) ## Why It's Good For The Game As was the case with paradox clones, observers can already discern when a player is obsessed. It shouldn't be a pain to observe these guys, especially when they're a more RP oriented antag that are (usually) deserving of the audience. I made paradox clones and obsessed the same color because they're both in the broader spectrum of "fucked up crew". Also converts common text entries to a single define. That is good coding practice I think. ## Changelog :cl: Rhials qol: Obsessed crewmembers are now displayed in the orbit panel. qol: The Paradox Clone orbit menu tab is now white. Neat! /:cl: * Wizard Apprentices now spawn at their summoning contract, instead of the Wizard Den (#80473) ## About The Pull Request Wizard apprentices will now spawn on the summoning contract's turf, instead of in the wizard den. Originally, apprentices would be spawned on the contract with a puff of smoke, and then sent to their spawn point by the wizard antag datum. It makes more sense for them to spawn in with the smoke, and whoever summoned them. ## Why It's Good For The Game More consistency with how most other antag spawners work. I watched a wizard get confused by this last night which was kind of funny and prompted me to make this change. ## Changelog :cl: Rhials qol: Wizard apprentices now spawn on the same tile as the contract that summoned them. /:cl: * Minor update to admin secrets panel (free antags for everyone) (#81292) ## About The Pull Request Remakes a button in admin secrets panel from everyone is traitor to everyone is admin chosen antag. ## Why It's Good For The Game Slightly better buttons for admin to push ## Changelog :cl: admin: remade everyone is traitor into everyone is antag in secrets panel /:cl: * Replace cigarette smoke with particles, add a big puff when taking cigarettes out of your mouth (#83101) - Cigarette particles are now particles rather than baked in - Taking a cigarette out of your mouth release a big puff of smoke https://github.com/tgstation/tgstation/assets/51863163/183b39e7-3367-43a1-b750-99e66838d60f Looks better :cl: Melbert add: Cigarette smoke is now more smokey. add: Taking a cigarette out of your mouth will let out a big puff of smoke. /:cl: --------- Co-authored-by: san7890 <[email protected]> * Staff of Shrinking for the wizard (#83115) <!-- Write **BELOW** The Headers and **ABOVE** The comments else it may not be viewable. --> <!-- You can view Contributing.MD for a detailed description of the pull request process. --> Adds a new staff for the wizard that shoots shrink rays. Also a corresponding wand that comes with the wand belt. Shrinking is a mechanic already implemented by abductors, but it's not often used because it doesn't fit their kit super well. That's a huge shame because shrinking stuff/people is really funny. And you know where funny stuff fits well? The wizard kit. OH YEAH and being shrunken now gives you the squash component so you can be squashed as though you were a roach, though this only deals 10 damage instead of gibbing you tiny staff ![68747470733a2f2f696462322e616666656374656461726330372e636f2e756b2f696d616765732f32353836323339392f38333131352f31333237383435323531373936343834343132322e706e67](https://github.com/tgstation/tgstation/assets/8345184/af777602-036f-4171-ad43-5dafa7b29414) tiny wand ![68747470733a2f2f696462322e616666656374656461726330372e636f2e756b2f696d616765732f32353836323339392f38333131352f393439333932353034373033303238393530372e706e67](https://github.com/tgstation/tgstation/assets/8345184/81241789-404f-4d8e-8473-2ec74b171f55) exhausted wand turns back to a big wand sprite :) ![68747470733a2f2f696462322e616666656374656461726330372e636f2e756b2f696d616765732f32353836323339392f38333131352f323039323438333731323537303338313239362e706e67](https://github.com/tgstation/tgstation/assets/8345184/c2073952-c16b-4113-9ca9-527cfdbcfd16) Shrinking stuff is funny, plus it gives the wizard something new to do besides polymorphing everyone or turning everybody to stone or ei nathing people. <!-- If your PR modifies aspects of the game that can be concretely observed by players or admins you should add a changelog. If your change does NOT meet this description, remove this section. Be sure to properly mark your PRs to prevent unnecessary GBP loss. You can read up on GBP and it's effects on PRs in the tgstation guides for contributors. Please note that maintainers freely reserve the right to remove and add tags should they deem it appropriate. You can attempt to finagle the system all you want, but it's best to shoot for clear communication right off the bat. --> :cl: add: New funny wizard staff/wand that shrinks stuff. add: Being shrunken now leaves you vulnerable to being crushed to death. /:cl: <!-- Both :cl:'s are required for the changelog to work! You can put your name to the right of the first :cl: if you want to overwrite your GitHub username as author ingame. --> <!-- You can use multiple of the same prefix (they're only used for the icon ingame) and delete the unneeded ones. Despite some of the tags, changelogs should generally represent how a player might be affected by the changes rather than a summary of the PR's contents. --> * Adds 9 wizard perks (#83262) Add new spells category for wizards: Perks. perks are not really spells, but useful (and not so useful) improvements for your wizard which provide more variety for builds. https://youtu.be/eeVvUkVE3xQ All perks cost 2 points, they work without wizard’s uniform, cannot refund, effect start only at the station (perks will not work at the wizard’s base). Perk can only be purchased once. 9 added perks: 1. Four Hands - gives you 2 extra hands. 2. Worm Born - on death, wizard turns into a large worm and can no longer return to his previous form. ![Снимок экрана 2024-06-02 223645](https://github.com/tgstation/tgstation/assets/120736708/2dfac647-4c3c-4824-8320-73fc98cc61fd) 3. Dejavu - every 60 seconds returns wizard to where he was 60 seconds ago and restores his health to the amount he had 60 seconds ago. 4. Sale Off - When buying something from a book of spells, wizard has a chance not to spend points for the purchase, depending on the purchase price. 1/2/3/4 price chance 50/25/15/10%. You can no longer refund purchases. 5. Gamble - Give wizard 2 random perks. 6. Heart Eater - By eating someone's heart, the wizard has a chance to either increase his maximum HP and stamina by 25 or lose 10 percent of his maximum HP but get a random mutation. 7. Slime Friends - Slimes is your friends now. Every 20 Seconds you spend 50 nutriments to spawn random big angry slime. 8. Transparence - wizard becomes half transparent, any projectiles pass through, but you loses 25% of max HP and you get a stalker who will follow you to the station to kill you. 9. Magnetism - Wizard gain gravitational anomaly that orbit around him, which attracts objects and people. https://youtu.be/gp6ZtTrZu7I Gives the wizard more options to create a fun and interesting builds :cl: add: new wizard spells category - perks. add: adds 9 wizard perks. /:cl: --------- Co-authored-by: Jacquerel <[email protected]> * Use defines for spellbook categories (#82938) Spellbook entries' categories now use defines Prettier Less of a chance for misspelling a category Renaming a category is easier (for localized downstreams especially less strain) * Fixes the duration of wizard spell mutate (#84263) ## About The Pull Request Fixes the remove_mutations proc of the wizard's spell mutate, so it calls the parent and actually removes the said mutations. Honestly the fact that it previously didn't call the parent function is byond me. Fixes #79491 ## Why It's Good For The Game No more infinite hulk for wizards! * Adds Untie Shoes, a 1-point wizard spell. (#84880) Added Untie Shoes. This is a wizard spell that's seemingly weak but has some power under the surface. The first level unties, then knots shoes. The second level allows you to tie jackboots and the like. The third level allows you to summon shoes if the target has none. And, for the true pranksters out there, the fourth level makes invocations silent and gestureless. Also, it always slows noncarbons down a bit. It's also given to clowns after Jubilation, and the wizard themself, at max level for the latter, if they dont have it already. Knotted shoes make the wearer unable to walk without being stunned and tripping on the floor. Let that sink in! Anyone hit twice by the spell is forced to crawl around or risk stepping on broken glass. Worse, they need to go through a looong process to untie their shoes to even drop them. This spell has infinite range, although casting from beyond screen range or through zlevels multiplies the cooldown by ten, which is excellent for softening up targets. It's a 1-point, ranged, supportive spell with low cooldown, which makes it excellent as a deterrent for harassing wizards at long range - something they often lack answers to. It's great for whittling down antimagic charges. It's funny. This spell is silly, comical, yet also very versatile and adds a rather large amount of depth to Wizard while also expanding on shoe knotting, which is inherently funny and rarely looked at. I also wanted it to work through camera consoles because that's EXTREMELY funny. The long cooldown should prevent it from being too annoying. :cl: add: Adds Untie Shoes, a 1-point wizard spell. It can be upgraded to untie jackboots, summon shoes to untie, and become completely silent! /:cl: * Allows for some locs to have spells cast while inside, such as PAI cards (for PAIs), AI cards (for AIs), and mechas (#77418) Spiritual successor to #76716 - Some spells can now be cast while the mob is within the contents of certain atoms. - PAIs can now cast if within a PAI card - AIs can now cast if within an AI card - People within vehicles (mechas and cars) can now cast their spells - Repulse and Knock now have unique interactions for being cast within a locker Carlac's PR gave me an idea for how to tackle this in a relatively clean way so I went ahead and adapted the suggestion to something that works for the cast chain. This isn't perfect, some spells will need to be updated, but they can be done piecemeal. This is something that, IN THEORY, should have already been wholesale supported by the spell refactor - any atom you pass into the cast chain should "just work ™️ ", either rejecting if it fails the valid target check or doing the spell effects as if the atom passed was the caster. 🆑 Melbert add: PAIs can now cast wizard spells should they have any. add: AIs located in intellicards can now cast wizard spells should they have any. add: Some spells, such as AoE or conjure spells, are now castable from within Mechas or Clown Cars. To varying degrees of success. add: Knock will now unlock and open closets you are hiding within. add: Repulse will now throw open closets you are hiding within. /🆑 * Update _conjure_item.dm * Revert " Adds 9 wizard perks (#83262)" This reverts commit 67152e9. * Monkeymancers can interact with runes (#85289) Hey hey party people. I watched a monkeymancer round last night. It was hilarious, but the guy couldn't activate his ritual rune. Sucks! Turns out, monkies don't call `attack_hand()`, they call `attack_paw()`. This means that monkey dexterity was never the problem stopping the rune from activating, but the fact that the attack chain was never even trying to interact with the rune effect in the first place. I've added a new atom interaction flag that routes through attack_paw, so now monkies can be given their own specific interaction behaviors for cases like this. ![image](https://github.com/user-attachments/assets/db5bab0e-30ab-4e3b-b1a6-ae392b23fcab) Closes #85267. Also makes it a bit easier to make interact behaviors scalable to monkies in the future. :cl: Rhials fix: Monkey wizards can now interact with grand ritual runes. /:cl: * DEAL WITH TOMORROW * Adds Roach Infusion to the DNA infuser (#76393) - Adds Roach Infusion to the DNA infuser. - Bonuses include: - All infused organs are 2x as healthy, notably your heart: Meaning getting revived after being dead a while is easier - When being attacked from behind or while lying down, take 50% less damage from brute attacks - Lose disgust 32x faster, making it a non-issue - Higher toxin purge threshold (5 units, up from 3) - Virus resistance (same as spaceacillin) - 100 innate bomb armor, preventing explosions from gibbing you - 90 innate bio armor - Immunity to appendicitis, radiation, and to being gibbed by nuclear bombs - Downsides include: - Knockdowns are 3x as long - get 3x as hungry - Ingest reagents to your stomach 1.5x slower - Take 2x as much damage from toxins - Toxins over the purge threshold deal 4x more liver damage (effectively 2x, as the liver has 2x health) - Becoming a bug - Roaches are gross - Adds a way to kill roaches without having them splat. If they are sprayed with bug spray, they will simply fall over, and can be scooped up. https://github.com/tgstation/tgstation/assets/51863163/5078c493-9e28-42cb-ae51-45fa25b67a34 More content for the DNA infuser, which benefits greatly from variety. While initially it may seem like a lot of bonuses, a lot of them are very niche, with the exception being the brute resilience which is the big "actually useful" bonus you gain. The infusion is intended to be given to Engineers, offering innate Radiation immunity to allow them to work on the Supermatter without needing a rad suit. Likewise, if the work goes south and the Supermatter goes boom, their body will more than likely survive the blast. :cl: Melbert add: Adds the Roach infusion to the DNA infuser. Do you want to survive a nuclear apocalypse? Visit genetics today. add: Adds a way to kill Roaches without splatting them. Visit botany for a spray bottle of pestkiller. qol: Infuser book is more book-like fix: DNA infuser correctly gives on-success feedback messages /:cl: --------- Co-authored-by: Jacquerel <[email protected]> * AHHHH * pain * oh * ah * h * Space dragon no longer turns the entire roundend report bold (#81370) ## About The Pull Request Fixes the entire roundend report turning bold if there was a space dragon with carp. ## Why It's Good For The Game yet another roundend report issue fixed. ## Changelog :cl: fix: Space Dragon's carp allies no longer turn the entire roundend report into bold. /:cl: * min * Fixes Shadow Walk (#77518) ## About The Pull Request Phased mobs are not turfs so the new check failed. Fixes this and adds a unit test for it. Also makes shadow walk VV-able to any level of lightness. ## Changelog :cl: Melbert fix: Fixes Shadow Walk /:cl: * Update clockwork_cult.dm * Update maintenance_loot.dm * Update liver.dm * Update liver.dm * Update cockroach.dm --------- Co-authored-by: Comxy <[email protected]> Co-authored-by: Fikou <[email protected]> Co-authored-by: Rhials <[email protected]> Co-authored-by: Ghom <[email protected]> Co-authored-by: MrMelbert <[email protected]> Co-authored-by: san7890 <[email protected]> Co-authored-by: carlarctg <[email protected]> Co-authored-by: Ben10Omintrix <[email protected]> Co-authored-by: IndieanaJones <[email protected]> Co-authored-by: IndieanaJones <[email protected]> Co-authored-by: Rhials <[email protected]> Co-authored-by: Holoo <[email protected]> Co-authored-by: PKPenguin321 <[email protected]> Co-authored-by: Xackii <[email protected]> Co-authored-by: Jacquerel <[email protected]> Co-authored-by: larentoun <[email protected]> Co-authored-by: MrDas <[email protected]> Co-authored-by: John Willard <[email protected]> Co-authored-by: Lucy <[email protected]> Co-authored-by: dwasint <[email protected]>
1 parent ce87898 commit 6812ade

File tree

226 files changed

+2458
-590
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

226 files changed

+2458
-590
lines changed

code/__DEFINES/antagonists.dm

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,10 @@ GLOBAL_LIST_INIT(human_invader_antagonists, list(
331331
#define ANTAG_GROUP_SYNDICATE "Syndicate"
332332
#define ANTAG_GROUP_WIZARDS "Wizard Federation"
333333
#define ANTAG_GROUP_XENOS "Xenomorph Infestation"
334+
#define ANTAG_GROUP_FUGITIVES "Escaped Fugitives"
335+
#define ANTAG_GROUP_HUNTERS "Bounty Hunters"
336+
#define ANTAG_GROUP_PARADOX "Spacetime Aberrations"
337+
#define ANTAG_GROUP_CREW "Deviant Crew"
334338

335339
#define HUNTER_PACK_COPS "Spacepol Officers"
336340
#define HUNTER_PACK_RUSSIAN "Russian Smugglers"

code/__DEFINES/colors.dm

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,13 @@
3333
#define COLOR_HALF_TRANSPARENT_BLACK "#0000007A"
3434

3535
#define COLOR_RED "#FF0000"
36+
#define COLOR_CHRISTMAS_RED "#D6001C"
37+
#define COLOR_OLD_GLORY_RED "#B22234"
38+
#define COLOR_FRENCH_RED "#EF4135"
39+
#define COLOR_ETHIOPIA_RED "#DA121A"
40+
#define COLOR_UNION_JACK_RED "#C8102E"
41+
#define COLOR_MEDIUM_DARK_RED "#CC0000"
42+
#define COLOR_PINK_RED "EF3340"
3643
#define COLOR_SYNDIE_RED "#F10303"
3744
#define COLOR_SYNDIE_RED_HEAD "#760500"
3845
#define COLOR_MOSTLY_PURE_RED "#FF3300"
@@ -50,7 +57,10 @@
5057

5158
#define COLOR_YELLOW "#FFFF00"
5259
#define COLOR_VIVID_YELLOW "#FBFF23"
60+
#define COLOR_TANGERINE_YELLOW "#FFCC00"
5361
#define COLOR_VERY_SOFT_YELLOW "#FAE48E"
62+
#define COLOR_GOLD "#FFD700"
63+
#define COLOR_ETHIOPIA_YELLOW "#FCDD09"
5464

5565
#define COLOR_OLIVE "#808000"
5666
#define COLOR_ASSISTANT_OLIVE "#828163"
@@ -63,6 +73,9 @@
6373
#define COLOR_VERY_PALE_LIME_GREEN "#DDFFD3"
6474
#define COLOR_VERY_DARK_LIME_GREEN "#003300"
6575
#define COLOR_GREEN "#008000"
76+
#define COLOR_CHRISTMAS_GREEN "#00873E"
77+
#define COLOR_IRISH_GREEN "#169B62"
78+
#define COLOR_ETHIOPIA_GREEN "#078930"
6679
#define COLOR_DARK_MODERATE_LIME_GREEN "#44964A"
6780
#define COLOR_PAI_GREEN "#00FF88"
6881
#define COLOR_PALE_GREEN "#20e28e"
@@ -72,6 +85,10 @@
7285
#define COLOR_DARK_CYAN "#00A2FF"
7386
#define COLOR_TEAL "#008080"
7487
#define COLOR_BLUE "#0000FF"
88+
#define COLOR_OLD_GLORY_BLUE "#3C3B6E"
89+
#define COLOR_FRENCH_BLUE "#0055A4"
90+
#define COLOR_UNION_JACK_BLUE "#012169"
91+
#define COLOR_TRUE_BLUE "#0066CC"
7592
#define COLOR_STRONG_BLUE "#1919c8"
7693
#define COLOR_CENTCOM_BLUE "#134975"
7794
#define COLOR_BRIGHT_BLUE "#2CB2E8"
@@ -99,6 +116,7 @@
99116
#define COLOR_DARK_PURPLE "#551A8B"
100117

101118
#define COLOR_ORANGE "#FF9900"
119+
#define COLOR_IRISH_ORANGE "#FF883E"
102120
#define COLOR_ENGINEERING_ORANGE "#FFA62B"
103121
#define COLOR_MOSTLY_PURE_ORANGE "#ff8000"
104122
#define COLOR_TAN_ORANGE "#FF7B00"
@@ -248,12 +266,13 @@
248266
#define CIRCUIT_COLOR_ENGINEERING "#F8D700"
249267
#define CIRCUIT_COLOR_SUPPLY "#C47749"
250268

251-
/// Highly Saturated Colors
252-
#define COLOR_BRIGHT_RED "#FF6666"
253-
#define COLOR_BRIGHT_YELLOW "#EAFF51"
254-
#define COLOR_BRIGHT_GREEN "#41FC66"
255-
#define COLOR_BRIGHT_TEAL "#42FFF2"
256-
#define COLOR_BRIGHT_PURPLE "#5D5DFC"
269+
/// Colors for pride week
270+
#define COLOR_PRIDE_RED "#FF6666"
271+
#define COLOR_PRIDE_ORANGE "#FC9F3C"
272+
#define COLOR_PRIDE_YELLOW "#EAFF51"
273+
#define COLOR_PRIDE_GREEN "#41FC66"
274+
#define COLOR_PRIDE_BLUE "#42FFF2"
275+
#define COLOR_PRIDE_PURPLE "#5D5DFC"
257276

258277
/// The default color for admin say, used as a fallback when the preference is not enabled
259278
#define DEFAULT_ASAY_COLOR COLOR_MOSTLY_PURE_RED

code/__DEFINES/dcs/signals/signals_atom/signals_atom_mouse.dm

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,5 @@
2828
#define COMSIG_MOUSEDROPPED_ONTO "mousedropped_onto"
2929
///from base of mob/MouseWheelOn(): (/atom, delta_x, delta_y, params)
3030
#define COMSIG_MOUSE_SCROLL_ON "mousescroll_on"
31+
/// From /atom/movable/screen/click(): (atom/target, atom/location, control, params, mob/user)
32+
#define COMSIG_SCREEN_ELEMENT_CLICK "screen_element_click"

code/__DEFINES/dcs/signals/signals_storage.dm

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,5 @@
55
/// Sent after dumping into some other storage object: (atom/dest_object, mob/user)
66
#define COMSIG_STORAGE_DUMP_POST_TRANSFER "storage_dump_into_storage"
77

8+
/// Sent to the STORAGE when an ITEM is STORED INSIDE.
9+
#define COMSIG_STORAGE_STORED_ITEM "storage_storing_item"

code/__DEFINES/holiday.dm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#define HOLIDAY_HAT_CHANCE 20

code/__DEFINES/interaction_flags.dm

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,14 @@
2020
#define INTERACT_ATOM_ALLOW_USER_LOCATION (1<<9)
2121
/// ignores mobility check
2222
#define INTERACT_ATOM_IGNORE_MOBILITY (1<<10)
23+
// Bypass all adjacency checks for mouse drop
24+
#define INTERACT_ATOM_MOUSEDROP_IGNORE_ADJACENT (1<<11)
25+
/// Bypass all can_perform_action checks for mouse drop
26+
#define INTERACT_ATOM_MOUSEDROP_IGNORE_USABILITY (1<<12)
27+
/// Bypass all adjacency and other checks for mouse drop
28+
#define INTERACT_ATOM_MOUSEDROP_IGNORE_CHECKS (INTERACT_ATOM_MOUSEDROP_IGNORE_ADJACENT | INTERACT_ATOM_MOUSEDROP_IGNORE_USABILITY)
29+
/// calls try_interact() on attack_paw() and returns that.
30+
#define INTERACT_ATOM_ATTACK_PAW (1<<13)
2331

2432
/// attempt pickup on attack_hand for items
2533
#define INTERACT_ITEM_ATTACK_HAND_PICKUP (1<<0)

code/__DEFINES/is_helpers.dm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ GLOBAL_LIST_INIT(glass_sheet_types, typecacheof(list(
286286
GLOBAL_LIST_INIT(book_types, typecacheof(list(
287287
/obj/item/book,
288288
/obj/item/spellbook,
289-
)))
289+
/obj/item/infuser_book)))
290290

291291
// Jobs
292292
#define is_job(job_type) (istype(job_type, /datum/job))

code/__DEFINES/jobs.dm

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,8 +207,11 @@
207207
#define JOB_ASSIGN_QUIRKS (1<<7)
208208
/// Whether this job can be an intern.
209209
#define JOB_CAN_BE_INTERN (1<<8)
210-
/// Whether this job is enabled/disabled by the spooktober config
211-
#define JOB_SPOOKTOBER (1<<9)
210+
/// This job cannot have more slots opened by the Head of Personnel (but admins or other random events can still do this).
211+
#define JOB_CANNOT_OPEN_SLOTS (1<<9)
212+
213+
/// Combination flag for jobs which are considered regular crew members of the station.
214+
#define STATION_JOB_FLAGS (JOB_ANNOUNCE_ARRIVAL|JOB_CREW_MANIFEST|JOB_EQUIP_RANK|JOB_CREW_MEMBER|JOB_NEW_PLAYER_JOINABLE|JOB_REOPEN_ON_ROUNDSTART_LOSS|JOB_ASSIGN_QUIRKS|JOB_CAN_BE_INTERN)
212215

213216
#define FACTION_NONE "None"
214217
#define FACTION_STATION "Station"

code/__DEFINES/mobs.dm

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -590,14 +590,15 @@
590590

591591
///Squash flags. For squashable element
592592

593-
///Whether or not the squashing requires the squashed mob to be lying down
593+
/// Squashing will not occur if the mob is not lying down (bodyposition is LYING_DOWN)
594594
#define SQUASHED_SHOULD_BE_DOWN (1<<0)
595-
///Whether or not to gib when the squashed mob is moved over
595+
/// If present, outright gibs the squashed mob instead of just dealing damage
596596
#define SQUASHED_SHOULD_BE_GIBBED (1<<1)
597-
598-
597+
/// If squashing always passes if the mob is dead
598+
#define SQUASHED_ALWAYS_IF_DEAD (1<<2)
599599
/// Don't squash our mob if its not located in a turf
600600
#define SQUASHED_DONT_SQUASH_IN_CONTENTS (1<<3)
601+
601602
/*
602603
* Defines for "AI emotions", allowing the AI to expression emotions
603604
* with status displays via emotes.

code/__DEFINES/time.dm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
#define FESTIVE_SEASON "Festive Season"
3737
#define GARBAGEDAY "Garbage Day"
3838
#define MONKEYDAY "Monkey Day"
39+
#define PRIDE_WEEK "Pride Week"
3940
#define MOTH_WEEK "Moth Week"
4041
#define IAN_HOLIDAY "Ian's Birthday"
4142
/*

code/__DEFINES/traits/declarations.dm

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -125,13 +125,13 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
125125
/// This human is immune to the effects of being exploded. (ex_act)
126126
#define TRAIT_BOMBIMMUNE "bomb_immunity"
127127
/// This mob won't get gibbed by nukes going off
128-
/* #define TRAIT_NUKEIMMUNE "nuke_immunity" */
128+
#define TRAIT_NUKEIMMUNE "nuke_immunity"
129129
/// Can't be given viruses
130130
#define TRAIT_VIRUSIMMUNE "virus_immunity"
131131
/// Won't become a husk under any circumstances
132132
/* #define TRAIT_UNHUSKABLE "trait_unhuskable" */
133133
/// Reduces the chance viruses will spread to this mob, and if the mob has a virus, slows its advancement
134-
/* #define TRAIT_VIRUS_RESISTANCE "virus_resistance" */
134+
#define TRAIT_VIRUS_RESISTANCE "virus_resistance"
135135
#define TRAIT_GENELESS "geneless"
136136
#define TRAIT_PIERCEIMMUNE "pierce_immunity"
137137
#define TRAIT_NODISMEMBER "dismember_immunity"
@@ -1022,9 +1022,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
10221022
/// Isn't attacked harmfully by blob structures
10231023
#define TRAIT_BLOB_ALLY "blob_ally"
10241024
/// Has the chuuni component
1025-
/* #define TRAIT_CHUUNIBYOU "chuunibyou" */
1025+
#define TRAIT_CHUUNIBYOU "chuunibyou"
10261026
/// Has splattercasting
1027-
/* #define TRAIT_SPLATTERCASTER "splattercaster" */
1027+
#define TRAIT_SPLATTERCASTER "splattercaster"
10281028

10291029
///Traits given by station traits
10301030
/* #define STATION_TRAIT_ASSISTANT_GIMMICKS "station_trait_assistant_gimmicks" */
@@ -1154,7 +1154,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
11541154
/// This atom can have spells cast from it if a mob is within it
11551155
/// This means the "caster" of the spell is changed to the mob's loc
11561156
/// Note this doesn't mean all spells are guaranteed to work or the mob is guaranteed to cast
1157-
/* #define TRAIT_CASTABLE_LOC "castable_loc" */
1157+
#define TRAIT_CASTABLE_LOC "castable_loc"
11581158

11591159
/// Needs above trait to work.
11601160
/// This trait makes it so that any cast spells will attempt to transfer to the location's location.

code/__DEFINES/turfs.dm

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,3 +96,14 @@
9696
#define TURF_PATHING_PASS_PROC 1
9797
/// Turf is never passable
9898
#define TURF_PATHING_PASS_NO 2
99+
100+
/// Define the alpha for holiday/colored tile decals
101+
#define DECAL_ALPHA 60
102+
/// Generate horizontal striped color turf decals
103+
#define PATTERN_DEFAULT "default"
104+
/// Generate vertical striped color turf decals
105+
#define PATTERN_VERTICAL_STRIPE "vertical"
106+
/// Generate random color turf decals
107+
#define PATTERN_RANDOM "random"
108+
/// Generate rainbow color turf decals
109+
#define PATTERN_RAINBOW "rainbow"

code/__DEFINES/~monkestation/blueshift.dm

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -270,14 +270,6 @@ See the examinemore module for information.
270270
#define BOOT_UNSEAL_MESSAGE "relax their grip on your legs"
271271
#define BOOT_SEAL_MESSAGE "seal around your feet"
272272

273-
/// Colors for pride week
274-
#define COLOR_PRIDE_RED "#FF6666"
275-
#define COLOR_PRIDE_ORANGE "#FC9F3C"
276-
#define COLOR_PRIDE_YELLOW "#EAFF51"
277-
#define COLOR_PRIDE_GREEN "#41FC66"
278-
#define COLOR_PRIDE_BLUE "#42FFF2"
279-
#define COLOR_PRIDE_PURPLE "#5D5DFC"
280-
281273
/// Trait that changes the ending effects of twitch leaving your system
282274
#define TRAIT_TWITCH_ADAPTED "twitch_adapted"
283275

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
//flag to block the qdel that normally happens when a projectile is blocked
2+
#define PROJECTILE_INTERRUPT_BLOCK_QDEL (4<<0)

code/__DEFINES/~monkestation/jobs.dm

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
11
#define JOB_SECURITY_ASSISTANT "Security Assistant"
2+
/// Whether this job is enabled/disabled by the spooktober config
3+
#define JOB_SPOOKTOBER (1<<16)

code/__HELPERS/matrices.dm

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,20 @@
6868
//doesn't have an object argument because this is "Stacking" with the animate call above
6969
//3 billion% intentional
7070

71+
/// Similar to shake but more spasm-y and jerk-y
72+
/atom/proc/spasm_animation(loops = -1)
73+
var/list/transforms = list(
74+
matrix(transform).Translate(-1, 0),
75+
matrix(transform).Translate(0, 1),
76+
matrix(transform).Translate(1, 0),
77+
matrix(transform).Translate(0, -1),
78+
)
79+
80+
animate(src, transform = transforms[1], time = 0.2, loop = loops)
81+
animate(transform = transforms[2], time = 0.1)
82+
animate(transform = transforms[3], time = 0.2)
83+
animate(transform = transforms[4], time = 0.3)
84+
7185
/**
7286
* Shear the transform on either or both axes.
7387
* * x - X axis shearing

code/_globalvars/lists/maintenance_loot.dm

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,9 +197,12 @@ GLOBAL_LIST_INIT(uncommon_loot, list(//uncommon: useful items
197197
/obj/item/pen/screwdriver = 1,
198198
) = 8,
199199

200+
//monkestation edit start
200201
list(//artifacts
201202
/obj/effect/artifact_spawner = 4,
203+
/obj/item/a_gift/anything/wiz_name = 2,
202204
) = 8,
205+
//monkestation edit end
203206

204207
list(//construction and crafting
205208
/obj/item/beacon = 1,
@@ -349,14 +352,15 @@ GLOBAL_LIST_INIT(rarity_loot, list(//rare: really good items
349352
) = 1,
350353

351354
list(//misc
352-
/obj/item/book/granter/crafting_recipe/maint_gun/pipegun_prime = 1,
355+
/obj/item/book/granter/crafting_recipe/maint_gun/pipegun_prime = 1, //monkestation edit: added maint_gun
353356
/obj/item/book/granter/crafting_recipe/trash_cannon = 1,
354-
/obj/item/book/granter/crafting_recipe/maint_gun/laser_musket_prime = 1,
357+
/obj/item/book/granter/crafting_recipe/maint_gun/laser_musket_prime = 1, //monkestation edit
355358
/obj/item/book/granter/sign_language = 1,
356359
/obj/item/disk/nuclear/fake = 1,
357360
/obj/item/skillchip/brainwashing = 1,
358361
/obj/item/tattoo_kit = 1,
359362
/obj/item/folder/ancient_paperwork = 1,
363+
/obj/item/seeds/tree/money = 1, //monkestation edit
360364
) = 1,
361365

362366
))

code/_globalvars/traits/_traits.dm

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
3333
"TRAIT_AREA_SENSITIVE" = TRAIT_AREA_SENSITIVE,
3434
"TRAIT_ASHSTORM_IMMUNE" = TRAIT_ASHSTORM_IMMUNE,
3535
"TRAIT_BLOCKING_EXPLOSIVES" = TRAIT_BLOCKING_EXPLOSIVES,
36+
"TRAIT_CASTABLE_LOC" = TRAIT_CASTABLE_LOC,
3637
"TRAIT_DEL_ON_SPACE_DUMP" = TRAIT_DEL_ON_SPACE_DUMP,
3738
"TRAIT_FISH_CASE_COMPATIBILE" = TRAIT_FISH_CASE_COMPATIBILE,
3839
"TRAIT_FISH_SAFE_STORAGE" = TRAIT_FISH_SAFE_STORAGE,
@@ -56,7 +57,6 @@ GLOBAL_LIST_INIT(traits_by_type, list(
5657
"TRAIT_VOIDSTORM_IMMUNE" = TRAIT_VOIDSTORM_IMMUNE,
5758
"TRAIT_WEATHER_IMMUNE" = TRAIT_WEATHER_IMMUNE,
5859
/* "TRAIT_BOULDER_BREAKER" = TRAIT_BOULDER_BREAKER, */
59-
/* "TRAIT_CASTABLE_LOC" = TRAIT_CASTABLE_LOC, */
6060
/* "TRAIT_CHASM_STOPPER" = TRAIT_CHASM_STOPPER, */
6161
/* "TRAIT_HAS_LABEL" = TRAIT_HAS_LABEL, */
6262
/* "TRAIT_IMMERSED" = TRAIT_IMMERSED, */
@@ -179,6 +179,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
179179
"TRAIT_CHEF_KISS" = TRAIT_CHEF_KISS,
180180
"TRAIT_CHUNKYFINGERS" = TRAIT_CHUNKYFINGERS,
181181
"TRAIT_CHUNKYFINGERS_IGNORE_BATON" = TRAIT_CHUNKYFINGERS_IGNORE_BATON,
182+
"TRAIT_CHUUNIBYOU" = TRAIT_CHUUNIBYOU,
182183
"TRAIT_CLEANBOT_WHISPERER" = TRAIT_CLEANBOT_WHISPERER,
183184
"TRAIT_CLIFF_WALKER" = TRAIT_CLIFF_WALKER,
184185
"TRAIT_CLOWN_ENJOYER" = TRAIT_CLOWN_ENJOYER,
@@ -365,6 +366,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
365366
"TRAIT_NO_TRANSFORM" = TRAIT_NO_TRANSFORM,
366367
"TRAIT_NO_UNDERWEAR" = TRAIT_NO_UNDERWEAR,
367368
"TRAIT_NO_ZOMBIFY" = TRAIT_NO_ZOMBIFY,
369+
"TRAIT_NUKEIMMUNE" = TRAIT_NUKEIMMUNE,
368370
"TRAIT_OCCULTIST" = TRAIT_OCCULTIST,
369371
"TRAIT_OIL_FRIED" = TRAIT_OIL_FRIED,
370372
"TRAIT_ON_ELEVATED_SURFACE" = TRAIT_ON_ELEVATED_SURFACE,
@@ -443,6 +445,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
443445
"TRAIT_SPECIAL_TRAUMA_BOOST" = TRAIT_SPECIAL_TRAUMA_BOOST,
444446
"TRAIT_SPIDER_CONSUMED" = TRAIT_SPIDER_CONSUMED,
445447
"TRAIT_SPIRITUAL" = TRAIT_SPIRITUAL,
448+
"TRAIT_SPLATTERCASTER" = TRAIT_SPLATTERCASTER,
446449
"TRAIT_SPRAY_PAINTABLE" = TRAIT_SPRAY_PAINTABLE,
447450
"TRAIT_SPRINTING" = TRAIT_SPRINTING,
448451
"TRAIT_STABLEHEART" = TRAIT_STABLEHEART,
@@ -491,6 +494,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
491494
"TRAIT_VENTCRAWLER_ALWAYS" = TRAIT_VENTCRAWLER_ALWAYS,
492495
"TRAIT_VENTCRAWLER_NUDE" = TRAIT_VENTCRAWLER_NUDE,
493496
"TRAIT_VIRUSIMMUNE" = TRAIT_VIRUSIMMUNE,
497+
"TRAIT_VIRUS_RESISTANCE" = TRAIT_VIRUS_RESISTANCE,
494498
"TRAIT_VORACIOUS" = TRAIT_VORACIOUS,
495499
"TRAIT_WAS_EVOLVED" = TRAIT_WAS_EVOLVED,
496500
"TRAIT_WATER_BREATHING" = TRAIT_WATER_BREATHING,
@@ -516,7 +520,6 @@ GLOBAL_LIST_INIT(traits_by_type, list(
516520
/* "TRAIT_BOXING_READY" = TRAIT_BOXING_READY, */
517521
/* "TRAIT_BRAWLING_KNOCKDOWN_BLOCKED" = TRAIT_BRAWLING_KNOCKDOWN_BLOCKED, */
518522
/* "TRAIT_CATLIKE_GRACE" = TRAIT_CATLIKE_GRACE, */
519-
/* "TRAIT_CHUUNIBYOU" = TRAIT_CHUUNIBYOU, */
520523
/* "TRAIT_DETECTIVES_TASTE" = TRAIT_DETECTIVES_TASTE, */
521524
/* "TRAIT_DISCO_DANCER" = TRAIT_DISCO_DANCER, */
522525
/* "TRAIT_DISPLAY_JOB_IN_BINARY" = TRAIT_DISPLAY_JOB_IN_BINARY, */
@@ -559,7 +562,6 @@ GLOBAL_LIST_INIT(traits_by_type, list(
559562
/* "TRAIT_NO_STAGGER" = TRAIT_NO_STAGGER, */
560563
/* "TRAIT_NO_THROWING" = TRAIT_NO_THROWING, */
561564
/* "TRAIT_NO_TWOHANDING" = TRAIT_NO_TWOHANDING, */
562-
/* "TRAIT_NUKEIMMUNE" = TRAIT_NUKEIMMUNE, */
563565
/* "TRAIT_OFF_BALANCE_TACKLER" = TRAIT_OFF_BALANCE_TACKLER, */
564566
/* "TRAIT_OVERDOSEIMMUNE" = TRAIT_OVERDOSEIMMUNE, */
565567
/* "TRAIT_PAPER_MASTER" = TRAIT_PAPER_MASTER, */
@@ -578,7 +580,6 @@ GLOBAL_LIST_INIT(traits_by_type, list(
578580
/* "TRAIT_SLOW_FLIP" = TRAIT_SLOW_FLIP, */
579581
/* "TRAIT_SPEECH_BOOSTER" = TRAIT_SPEECH_BOOSTER, */
580582
/* "TRAIT_SPELLS_LOTTERY" = TRAIT_SPELLS_LOTTERY, */
581-
/* "TRAIT_SPLATTERCASTER" = TRAIT_SPLATTERCASTER, */
582583
/* "TRAIT_STIMMED" = TRAIT_STIMMED, */
583584
/* "TRAIT_STIMULATED" = TRAIT_STIMULATED, */
584585
/* "TRAIT_STRENGTH" = TRAIT_STRENGTH, */
@@ -595,7 +596,6 @@ GLOBAL_LIST_INIT(traits_by_type, list(
595596
/* "TRAIT_TOSS_GUN_HARD" = TRAIT_TOSS_GUN_HARD, */
596597
/* "TRAIT_UNHUSKABLE" = TRAIT_UNHUSKABLE, */
597598
/* "TRAIT_USER_SCOPED" = TRAIT_USER_SCOPED, */
598-
/* "TRAIT_VIRUS_RESISTANCE" = TRAIT_VIRUS_RESISTANCE, */
599599
/* "TRAIT_WOUND_LICKER" = TRAIT_WOUND_LICKER, */
600600
/* "TRAIT_XRAY_HEARING" = TRAIT_XRAY_HEARING, */
601601
),

code/_onclick/hud/alert.dm

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1059,6 +1059,9 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
10591059
return 1
10601060

10611061
/atom/movable/screen/alert/Click(location, control, params)
1062+
SHOULD_CALL_PARENT(TRUE)
1063+
1064+
..()
10621065
if(!usr || !usr.client)
10631066
return FALSE
10641067
if(usr != owner)

0 commit comments

Comments
 (0)