Skip to content

Commit 3ae2f61

Browse files
Jolly-66Red-byte3Dtgstation-serverOwai-SeekSparkezel
committed
May 17th Upstream Merge (#86)
* smartpipesmoment (#58898) * Automatic changelog generation for PR #58898 [ci skip] * Adds BBQ Sauce to the Chef Produce Console (#58645) * BBQ Sauce and Meat Product * Up BBQ, Remove Meat * Automatic changelog generation for PR #58645 [ci skip] * fixes single tank bombs (#58818) * fixes single tank bombs * move qdel later * Automatic changelog generation for PR #58818 [ci skip] * Fixes uplink type being unchangeable and radio uplink frequency (#58908) * Fixes uplink-related bugs * Actually fixes radio uplink properly * Automatic changelog generation for PR #58908 [ci skip] * Fix spammable logging in grenades (#58781) Adds an early return in chem grenade wires if the grenade is not secure * Automatic changelog generation for PR #58781 [ci skip] * Smart organ storage fix (#58864) * Automatic changelog generation for PR #58864 [ci skip] * Caps misfire probability (#58902) Not the proper fix for this but it at least prevents the exploitative behaviour. This'll do for now, prevents infinite recursive loops * Automatic changelog generation for PR #58902 [ci skip] * Automatic changelog compile [ci skip] * Turns existing comments in the file DMdoc comments, adds like one new comment (#58894) Co-authored-by: Your mother <mothmilk666666666666@tfwno.gf> * Fix pda overlays (#58892) Fixes PDA overlays, such as lights, pai and so on * Automatic changelog generation for PR #58892 [ci skip] * Changes how the messages for becoming an eldritch monster look (#58896) Co-authored-by: Your mother <mothmilk666666666666@tfwno.gf> * Automatic changelog generation for PR #58896 [ci skip] * Updates the PDA painter so that it paints standard PDAs. Restores PDA painter functionality after the PDA GAGS PR. (#58867) * Automatic changelog compile [ci skip] Closes 58842 (PDAs can't be painted to "standard" aka assistant's PDAs ) Also fixes the PDA painter after 58844 (99ce137e6c3e13f18ad4f822fa58186c957355b5) updated the way the PDA was displayed without updating the PDA painter. Co-authored-by: celotajstg <celotajstg@users.noreply.github.com> Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com> * Automatic changelog generation for PR #58867 [ci skip] * Fixes felinid disliked foods (#58891) * Automatic changelog generation for PR #58891 [ci skip] * moves sdql spell to vv dropdown (#58911) * Automatic changelog generation for PR #58911 [ci skip] * refactors is_flying_animal into simple_flight element (#58914) * Automatic changelog generation for PR #58914 [ci skip] * (code bounty) refactors all uses of Crossed() and Uncrossed() into signals sent to loc, tracked by connect_loc (#58340) Co-authored-by: Jared-Fogle <35135081+Mothblocks@users.noreply.github.com> Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com> * Automatic changelog generation for PR #58340 [ci skip] * Geyser rebalancing, gives miners points for discovering geysers (#58859) Co-authored-by: Matthew J. <GoldenKeyboard@users.noreply.github.com> * Automatic changelog generation for PR #58859 [ci skip] * Add admin tool for adding specific fantasy affixes (#58884) A new option when using VV on atom movables is to add a custom fantasy "affixes". * Automatic changelog generation for PR #58884 [ci skip] * Removes the Gamer Cube in Delta Cargo (#58915) Changes up Delta cargo to remove the gamer cube, since it stands out too much from the surroundings. (Also, directional glass is something we should really be aiming to get rid of in most cases, especially when it's free standing panes such as it is here) * Automatic changelog generation for PR #58915 [ci skip] * Refactors pet bonuses to be an element (#58912) * Automatic changelog generation for PR #58912 [ci skip] * Automatic changelog compile [ci skip] * Gives the monkey a gun (#58565) This adds a rare-ish negative station trait that gives Pun Pun a weapon, fills their heart with anger, and bloodies up the location they spawn in. (Yes the weapon is even more rarely a gun) A request for one of the weapons to be a sign meant that a random sign type was added here as well. * Automatic changelog generation for PR #58565 [ci skip] * Sentience Fun Balloon TGUI (#58724) Gives the sentience fun balloon a TGUI interface before popping! Set the group name and balloon range without needing to VV! * Automatic changelog generation for PR #58724 [ci skip] * Refactors playtime tracking code. (#58186) * Automatic changelog generation for PR #58186 [ci skip] * Fixes flypeople moffin eating (#58923) * Automatic changelog generation for PR #58923 [ci skip] * Add code improvements from BeeStation-Hornet by ike709 (#58922) Co-authored-by: celotajstg <celotajstg@users.noreply.github.com> * Automatic changelog generation for PR #58922 [ci skip] * Properly fixes the stray extuingisher and adds cameras to drone bays (#58917) * Automatic changelog generation for PR #58917 [ci skip] * The Wallening Approacheth: Adds directional variants to most wall mounts (#58809) * Fixes / new magic shoes sprite (#58750) Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog generation for PR #58750 [ci skip] * Fixes bloodbeam for real (#58855) * Automatic changelog generation for PR #58855 [ci skip] * Mail holidays. (#58728) * Automatic changelog generation for PR #58728 [ci skip] * Fixes slightly more harddels (#58935) * Documents BEPIS.dm code. (#58934) * Lavaland Xeno Nest Fix 1.5 (#58792) * Automatic changelog generation for PR #58792 [ci skip] * Tend Wounds and Debride Infection surgeries now estimate how long you have left to finish (#58682) * Automatic changelog generation for PR #58682 [ci skip] * Social Anxiety rework (#58721) Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> * Automatic changelog generation for PR #58721 [ci skip] * Replace Maint. Drone machinery whitelist with last touched check & other tweaks (#58802) Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog generation for PR #58802 [ci skip] * Fix Wizard Loadouts from the Wizard Spellbook crashing the server. (#58939) * Automatic changelog generation for PR #58939 [ci skip] * tramprocess only fires on maps with trams (#58940) * Automatic changelog generation for PR #58940 [ci skip] * Automatic changelog compile [ci skip] * The Tilening v1 (#58932) About The Pull Request Ports smooth tiles from TGMC and textured tiles(with color tweaks) from Skyrat, TauCeti, and Eris. I was sent the sprites on discord and told it was from Skyrat, but the PR credits TauCeti AND Eris so im just going to credit all 3 thanks other servers :) Shoutout to @Imaginos16 for all the help you rock. Details: Resprites the grey, dark, and white tiles. Adds textured version of grey, dark, and white tiles with variations. Adds smooth tiles. New tiles added to reskinning with rotational support. Sprite changes to yellowsiding, plastic, materialfloor, plaque, reacharge_floor, sepia, chapel, and pinkblack to match the new base tiles. Small consistency adjustments on wood_tile and its broken states. Removes 2 unused dirt floor tiles. Reorganized icons\turf\floors.dmi. Sprite adjustments to various icons in icons\obj\tiles.dmi to match the updated sprites. Consistency resprites for glass_wire and tile_e. Small decal tweaks to fit the new base tiles. dreamseeker_z7J61czzMG Normal, Dark, White, Smooth + textured and size variations. Some areas on Meta Example of texture tile usage. NO mapping changes in this PR, thats for @EOBGames to do ;) Why It's Good For The Game 60 shades of grey yee yee ass old floor sprite days are over. Changelog 🆑 Twaticus, Imaginos16 imageadd: Resprites (almost) all base floor tiles. imageadd: Ports smooth tiles & textured versions of grey, black, and white tiles. imageadd: Dance floor item icons are no longer massive. /🆑 * Automatic changelog generation for PR #58932 [ci skip] * Gives botany plants a new formula for calculating bite size, fixes swallowing watermelons whole (#58795) About The Pull Request This PR gives botany plants a new formula for getting the size of their bites. The formula is (potency / 20) * (max_volume / 100) * (modifier) + 1. This brings your average 100 potency plant to a bite size of 6 units per bite. [(5 * 1 * 1) + 1] - For reference, a Tomato has 14 units of reagents with default genes at 100 potency, so this means a tomato is eaten in 3 bites. This PR also goes through and audits all the plant's bite modifiers to bring them in line with the new formula. This makes the bite modifier actually a bite modifier instead of some weird constant var that lies about what it actually does. Fixes #55527 Why It's Good For The Game Currently, all plants are eaten in a single bite. Including watermelons and the dank weeds. This is bad. image This PR brings them all in line so you no longer swallow watermelons whole, so you stop accidentally getting fat. I also audited all the plants so their relative bitesizes make sense with the new formula. Only apples and potatos are eaten in 1 bite. Plants with more reagents naturally should now have larger bitesizes, and plants with less reagents have smaller bitesizes. Balance is restored. Changelog 🆑 Melbert fix: You no longer eat all botany plants plants in 1 bite. Apples and Potatos retain their unique 1 bite behavior. code: Botany plants use a new formula for calculating bite size. All botany plants have had their bite modifier adjusted to match. /🆑 * Automatic changelog generation for PR #58795 [ci skip] * fixes infinite range changeling stings (#58946) * Automatic changelog generation for PR #58946 [ci skip] * Adds using a door remote on a door's tile (#58943) * Automatic changelog generation for PR #58943 [ci skip] * fixes blood filter message (#58942) * Automatic changelog generation for PR #58942 [ci skip] * Fixes big roundstart ductnets breaking world init (#58659) closes: #58623 (Having two stationary plumbing tanks connected broke the map) you can now map infinitely huge plumbing networks Byond mistakes big chains of connecting ducts for an infinite loops, so when a lot of ducts (about 60) initialize at once and chain connect, byond kills the worldtick. Plumbing already had an internal duct limit of about 800~ ducts, which has now finally been fixed aswell. The plumbing subsystem (SSfluids, I need to rename this shit) tells one duct to start connecting and uses the timer subsystem to call them one by one. * Automatic changelog generation for PR #58659 [ci skip] * - added cycling and removed toxins access (wtf?) from the external airlocks behind holodeck (#58938) norill commented 2 days ago About The Pull Request added cycling and removed toxins access (wtf?) from the external airlocks behind holodeck replaced medical crate with freezer in abandoned medbay storage changed name and description of surgery room disposals to inform that they are connected to the morgue Why It's Good For The Game that replaced medical crate spawned organs that would decay if not in a freezer Changelog 🆑 add: changed name and description of surgery room disposals to inform that they are connected to the morgue /🆑 * Automatic changelog generation for PR #58938 [ci skip] * prevents tram from stealing its own landmarks (#58962) * stop stealing the landmark please!!! * better fix * GOOFUDDERS: YOU CAN MILK ANYTHING (You can only milk cows, goats gutlunches but with componentized goodcode) (#58910) Co-authored-by: 81Denton <32391752+81Denton@users.noreply.github.com> Co-authored-by: Qustinnus <Floydje123@hotmail.com> * Automatic changelog generation for PR #58910 [ci skip] * Kills BOTH /poison paths by turning poisonous into an element. (+fantasty prefix, sanity on attackingtarget signal, and more) (#58882) * Automatic changelog generation for PR #58882 [ci skip] * Automatic changelog compile [ci skip] * fixes master (adds a name to the venomous prefix, fixes bad signal in udders.dm) (#59007) * Update prefixes.dm * widening the scope to be fixing master in general * Removes bad return from processables that broke cooking (#58983) * Automatic changelog generation for PR #58983 [ci skip] * Reduce default Maint. Drone playtime requirement (#59011) * Automatic changelog generation for PR #59011 [ci skip] * Tidy HTML folder (#58761) This PR aims to make the HTML folder a little more organized, as well as remove a few unused files. Why It's Good For The Game Doesn't change anything for the player, however makes the files more organized. * Fix proximity checkers not being destroyed (#58989) monitor.checkers is a lazy list, this was runtiming. lol bee code * Automatic changelog generation for PR #58989 [ci skip] * Created Documentation for hosting a Server Via AWS & CDN (#58768) About The Pull Request The Documentation on how to set up a CDN for is very paltry. After about 2 weeks this is what i have figured out what works. Its probly not the best set up you can do for AWS based CDN and Host. But like I said, most of the existing documentation is figure it our yourself styled. Why It's Good For The Game Its good for Server Hosts and Admins Changelog None Needed * Automatic changelog compile [ci skip] * validate THIS integration tests (#59024) Hi, the #58882 PR missed that validate takes an item, no parent var lookup required. Why It's Good For The Game UNFUCKS MASTER * Builds SDMM for CI instead of using releases. (#58963) * Revert "Builds SDMM for CI instead of using releases. (#58963)" (#59035) This reverts commit 308be5801700043336326391390059625a426071. * Fix reaction chamber "remove" button (#59022) * Automatic changelog generation for PR #59022 [ci skip] * Improves c-4 code readability (#58976) I looked up the c4 code the other day to learn about how x-4 was directional now and found out the code is full of variables that were mostly "M" or "AM" or "UM" that made reading it real hard so I made my own vars to make it a little better looking * Commission Plaques (#58995) Adds commission plaques- these commemorate the day a station was added to the game (adjusted for SS13 time) and the day it was removed (in the case of removed stations). If I got any of the dates wrong, please feel free to tell me. They're added to every in rotation station, as well as the Derelict and Runtime Station. Many thanks to Fikou for providing the git hashes for each commit to add/remove a station: It's a neat nod to the maps' OOC history, as well as simply being some nice flavour. * Automatic changelog generation for PR #58995 [ci skip] * Automatic changelog compile [ci skip] * fixes hologrids having two connect_loc elements (#59041) * Electrolite removal (#59019) * Automatic changelog generation for PR #59019 [ci skip] * CONTRIBUTING.md now has isnull checks on the iconstate2appearance example (#59005) * Automatic changelog generation for PR #59005 [ci skip] * Double the changelog retry delay, improve timer (#59003) resolveasset didn't know about the asset yet, so this was failing without the normal webserver provided sleep. This isn't perfect. Ideally it would not try to fetch the next month until it got a response from the `get_month` indicating the server had sent the asset, as this is when resolveasset would know the asset existed. * Gives skeletons NOTRANSSTING trait (#58994) * Automatic changelog generation for PR #58994 [ci skip] * Fix blazing oil not being damaged by sprayed water (#58992) :cl: coiax fix: Blazing Oil blobs can now be damaged by sprayed water from fire extinguishers, as intended. /:cl: Because the mechanism of how the water damages the blob has changed, the extinguish damage has been increased, otherwise you had to empty a fire extinguisher to kill even one single blob tile. * Automatic changelog generation for PR #58992 [ci skip] * Vatbeast growing now requires enriched liquid electricity (#58990) * Vatbeasts now require enriched liquid electricity * Automatic changelog generation for PR #58990 [ci skip] * Cargo console mail clarifications (#58822) * Automatic changelog generation for PR #58822 [ci skip] * Fixes grammar in a compile warning (#59077) * Automatic changelog compile [ci skip] * resprites chapel altars (#59047) * Automatic changelog generation for PR #59047 [ci skip] * Preserve out of resources runtimes. (#59049) Knowing what lines triggered this bug will help me nag lummox, but the runtime never made it to logs because world/Error would runtime on log_game and Reboot() I need to know if its list creation or list expansion or both. * Split malf AI antag datum away from traitor, enable malf AI roundstart ruleset. (#59064) Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog generation for PR #59064 [ci skip] * Fixes a runtime with ai trying to use a browser ui (#59062) * Fixes medical borgs on skateboards look weird (#59059) Co-authored-by: dragomagol <66640614+dragomagol@users.noreply.github.com> * Automatic changelog generation for PR #59059 [ci skip] * Adds back in a signal dropped by #45217 (#59053) * Automatic changelog generation for PR #59053 [ci skip] * Fixes typo in explodable.dm (#59050) * A bunch of new tile variants and dark tile decal. (#59046) * Automatic changelog generation for PR #59046 [ci skip] * Fixes trashbags fitting in janitor wintercoats (#59060) Co-authored-by: Enricode <SgtHunk@users.noreply.github.com> * Automatic changelog generation for PR #59060 [ci skip] * fixes udders not performing some things (#59025) * Automatic changelog generation for PR #59025 [ci skip] * roaches will no longer try to step on themselves (#59008) * Automatic changelog generation for PR #59008 [ci skip] * Improves Grenade code readability (#58978) Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Fixes some fucked Destroy()s (#58973) Some stuff was failing to return qdel hints, might as well sweep that upppppp (Hey mothblocks I know you're reading this, we should really lint for this, but don't push yourself over it I know you're busy as it is) * Fixes unfilled activators giving chromosomes (#58974) * Automatic changelog generation for PR #58974 [ci skip] * big Icebox rework (mostly maint) (#58788) * 1984 * dir wall mounts+minor fixes * Automatic changelog generation for PR #58788 [ci skip] * h (#59023) * Automatic changelog generation for PR #59023 [ci skip] * addsblast (#59063) * Automatic changelog generation for PR #59063 [ci skip] * Fixes connect_loc related hard dels (#58945) Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> * Converts arrivals, aux, and cargo shuttle wall mounts (#58956) * arrivals aux cargo wall mounts * cargo shuttle buttons * converts emergency shuttle mounts up to wall mounts pt 1 (#58958) * converts emergency shuttle wall mounts pt 2(#58959) * away mission wall directional mounts conversion (#58964) * ferry, hunter, infiltrator, and labour wall mount conversion (#58965) * mining, pirate, and ruin wall mount conversion (#58966) * snowdin shuttle, whiteship wall mount conversion (#58968) * misc map wall mount conversion (#58969) * Converts space ruin wall mounts to dir (#58975) * space ruin wall mounts * anywhere ruins * Automatic changelog compile [ci skip] * Converts Kilostation wall mounts to dirs (#58998) * kilo wallmount dirs * Converts lavaland and icemoon ruin wall mounts to dir (#58977) * icemoon ruin wall mounts * lavaland ruin wall mounts * icebox wall mount conversion (#59004) * meta wallmount conversion (#59026) * tram wall mount conversion (#59030) * delta wallmount conversion (#59039) * big connect_loc fix. teleporters dont cause runtimes and movables registered to things entering their turf no longer have themselves entering their turf sent to them (#59065) * Automatic changelog generation for PR #59065 [ci skip] * Componentizes Duffelbag Curse and turns it into an RPGloot modifier (+ curse announcement element) (#59029) Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog generation for PR #59029 [ci skip] * Add workflow_dispatch to GBP collection (#59092) Lets the action be run manually, which is useful for debugging fail cases. * refactors rpg loot is now a global datum singleton and so is embedopocalypse and stickapocalypse (#59093) * ogey * lint * Automatic changelog generation for PR #59093 [ci skip] * Fixes layering for piggyback rides (#59082) * Automatic changelog generation for PR #59082 [ci skip] * Removes a LIE from the code (#59074) * ambience subsystem no longer plays to people in lobby (#59071) * Automatic changelog generation for PR #59071 [ci skip] * Fix regal rat runtime (#59061) * fixes issue with ghosts being able to affect the world, oversight from the crossed refactor (#59010) * as anything in _SendSignal * Revert "as anything in _SendSignal" This reverts commit 350c4b33d975d25003afb2cab2458a3026676559. * ghosts can no longer affect the world (hopefully) * Automatic changelog generation for PR #59010 [ci skip] * Removes Revolutionaries becoming enemies of the revolution (#59015) * Don't become an enemy of the revolution if you're a rev * Im an idiot, thanks Co-authored-by: Jordan Brown <Cyberboss@users.noreply.github.com> * untested code moment * i hope this works * Update revolution.dm Co-authored-by: Jordan Brown <Cyberboss@users.noreply.github.com> * Automatic changelog generation for PR #59015 [ci skip] * Fixes footprint stacking (#58918) * Fixes footprint stacking, replace_decal needed to return parent, and just, didn't. I'm not sure where the fuck this came from, or even how to test for it, but here you are * Adds a unit test to prevent regressions on this error in future * Uses TEST_ASSERT_EQUAL instead of TEST_ASSERT Thank you moth man Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Updates a comment to more accurately describe my pain * maybe fixes it? Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog generation for PR #58918 [ci skip] * Adds deflection messages for no damage attacks against objects (#58873) * Adds deflection messages for no damage attacks * Changes the addition to ", which doesn't leave a mark" instead * Automatic changelog generation for PR #58873 [ci skip] * Changes the atmos hardsuit description to better reflect it's low radiation protection (#58871) * Better atmos hardsuit description. * Improved description * Better again * Automatic changelog generation for PR #58871 [ci skip] * bruh moment (#58819) * Automatic changelog generation for PR #58819 [ci skip] * Fixes some more holes in the ref tracker (#58972) * Fixes some more holes in the ref tracker The reference tracker was failing to check null keyed assoc list entries, along with being unable to check both lists in a list(list() = list()) pair This resolves that, and adds some new logic to the unit test to check for this sort of thing * Seperates the ref tracking unit test into 6 subtasks as requested * Plasmaman paramedics now start with nitrile gloves (#58926) Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog generation for PR #58926 [ci skip] * Automatic changelog compile [ci skip] * Fix issues I created where dynamic gives out multiple incorrect antag datums to ineligible people and gives 1 too many traitor objectives. (#59099) * Automatic changelog generation for PR #59099 [ci skip] * Fixes a ci error caused by adding an element to something that'd being deleted (#59108) So that's why mythril coins kept harddeleting. Man I'm glad I added an error on adding elements to qdeleted objects. * Stop singularities from consuming themselves (#58987) This bug was fixed by one of the connect_loc PRs, but this is still useful as it contains a CRASH for when it happens if this bug comes back again. * Automatic changelog generation for PR #58987 [ci skip] * fixes simple_flying element missing ELEMENT_DETACH ! (#59096) * Automatic changelog generation for PR #59096 [ci skip] * changes duct layer of alkaline input in reaction chamber to 4th (#59095) * Automatic changelog generation for PR #59095 [ci skip] * actionninja's code now properly insults admins without any messed up spans (#59102) * Automatic changelog generation for PR #59102 [ci skip] * Dead people can no longer offer items (#59106) * Automatic changelog generation for PR #59106 [ci skip] * Makes timer subsystems available as a new subsystem type (#59073) * Fixes geysers being unplungerable (#59088) * Automatic changelog generation for PR #59088 [ci skip] * Is that a fucking rocke- (#59056) Being hit directly by a rocket launcher now has a 1% chance to make you briefly try processing what's about to happen before exploding you. * Adds new sprites for assembly part vendors and custom vendors (#59051) * Automatic changelog generation for PR #59051 [ci skip] * makes the web weaving mutation let you weave webs into cloth (#59079) * Automatic changelog generation for PR #59079 [ci skip] * Improves Code Readability for Syndi grenades (#58979) * Improves Code Readability for Syndi grenades (#58979) * Automatic changelog compile [ci skip] * Transfers icon path to the emojis to define (#58948) * Automatic changelog generation for PR #58948 [ci skip] * The changeling spacesuit no longer has a battery hud (#59036) Also allows this property to be put on other suits * Automatic changelog generation for PR #59036 [ci skip] * Moves secure closet locking to Right click (#58774) Co-authored-by: Enricode <SgtHunk@users.noreply.github.com> Co-authored-by: tjatpbnj <tjmayfield05@gmail.com> * Automatic changelog generation for PR #58774 [ci skip] * Brings Cryopods up to /tg/ standards (#59098) Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog generation for PR #59098 [ci skip] * Automatic changelog compile [ci skip] * Buckling to wheelchairs no longer gives people the immobile trait, allowing paraplegics to do more things (#59097) * Automatic changelog generation for PR #59097 [ci skip] * fixes bike horns (#59125) * Automatic changelog generation for PR #59125 [ci skip] * fixes recyclers eating themselves roundstart (#59120) * Automatic changelog generation for PR #59120 [ci skip] * Micro-optimize TGUI_CREATE_MESSAGE (#59142) * fixes antag business * fixes this thing?? * fixes missing icons * untested btw * e * rage against the machine Co-authored-by: InsaneRed <47158596+InsaneRed@users.noreply.github.com> Co-authored-by: tgstation-server <tgstation-server@tgstation13.org> Co-authored-by: Winter Flare <7543955+Owai-Seek@users.noreply.github.com> Co-authored-by: Sparkezel <53384660+Sparkezel@users.noreply.github.com> Co-authored-by: RandomGamer123 <31096837+RandomGamer123@users.noreply.github.com> Co-authored-by: Maurukas <66576896+Maurukas@users.noreply.github.com> Co-authored-by: norill <norill@wp.pl> Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com> Co-authored-by: Changelogs <action@github.com> Co-authored-by: interestingusernam3 <51925758+interestingusernam3@users.noreply.github.com> Co-authored-by: Your mother <mothmilk666666666666@tfwno.gf> Co-authored-by: Celotajs <81999976+celotajstg@users.noreply.github.com> Co-authored-by: Greniza <61635418+Greniza@users.noreply.github.com> Co-authored-by: celotajstg <celotajstg@users.noreply.github.com> Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com> Co-authored-by: ArcaneDefence <51932756+ArcaneDefence@users.noreply.github.com> Co-authored-by: Fikou <piotrbryla@onet.pl> Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com> Co-authored-by: Kylerace <kylerlumpkin1@gmail.com> Co-authored-by: Jared-Fogle <35135081+Mothblocks@users.noreply.github.com> Co-authored-by: Time-Green <timkoster1@hotmail.com> Co-authored-by: Matthew J. <GoldenKeyboard@users.noreply.github.com> Co-authored-by: EOBGames <58124831+EOBGames@users.noreply.github.com> Co-authored-by: dragomagol <66640614+dragomagol@users.noreply.github.com> Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk> Co-authored-by: BootlegBow <69032410+BootlegBow@users.noreply.github.com> Co-authored-by: YakumoChen <king_yoshi42@yahoo.com> Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com> Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> Co-authored-by: ishitbyabullet <deathzombine@outlook.com> Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com> Co-authored-by: RaveRadbury <3204033+RaveRadbury@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: Jonathan Rubenstein <jrubcop@gmail.com> Co-authored-by: Twaticus <46540570+Twaticus@users.noreply.github.com> Co-authored-by: MMMiracles <lolaccount1@hotmail.com> Co-authored-by: 81Denton <32391752+81Denton@users.noreply.github.com> Co-authored-by: Qustinnus <Floydje123@hotmail.com> Co-authored-by: ORCACommander <ORCACommander@users.noreply.github.com> Co-authored-by: Funce <funce.973@gmail.com> Co-authored-by: AnturK <AnturK@users.noreply.github.com> Co-authored-by: antropod <antropod@gmail.com> Co-authored-by: manofpepsi <71612753+manofpepsi@users.noreply.github.com> Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com> Co-authored-by: coiax <yellowbounder@gmail.com> Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com> Co-authored-by: Paper Kristy <61478538+TaeruAlethea@users.noreply.github.com> Co-authored-by: Swept <sweptwastaken@protonmail.com> Co-authored-by: SgtHunk <68669754+SgtHunk@users.noreply.github.com> Co-authored-by: Enricode <SgtHunk@users.noreply.github.com> Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com> Co-authored-by: Jordan Brown <Cyberboss@users.noreply.github.com> Co-authored-by: cacogen <25089914+cacogen@users.noreply.github.com> Co-authored-by: GuillaumePrata <55374212+GuillaumePrata@users.noreply.github.com> Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com> Co-authored-by: Kokonut <38844529+maxymax13@users.noreply.github.com> Co-authored-by: Clyde-Thunderpants <80003925+Clyde-Thunderpants@users.noreply.github.com> Co-authored-by: NopemanMcHalt <36963049+NopemanMcHalt@users.noreply.github.com> Co-authored-by: itseasytosee <55666666+itseasytosee@users.noreply.github.com> Co-authored-by: tjatpbnj <tjmayfield05@gmail.com> Co-authored-by: MrMelbert <kmelbert4@gmail.com>
1 parent 54f5ad4 commit 3ae2f61

File tree

901 files changed

+108505
-117130
lines changed

Some content is hidden

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

901 files changed

+108505
-117130
lines changed

.github/CONTRIBUTING.md

+98
Original file line numberDiff line numberDiff line change
@@ -547,6 +547,103 @@ for (var/month in 1 to 12)
547547
for (var/i in reagents)
548548
```
549549

550+
### Icons are for image manipulation and defining an obj's `.icon` var, appearances are for everything else.
551+
BYOND will allow you to use a raw icon file or even an icon datum for underlays, overlays, and what not (you can even use strings to refer to an icon state on the current icon). The issue is these get converted by BYOND to appearances on every overlay insert or removal involving them, and this process requires inserting the new appearance into the global list of appearances, and informing clients about them.
552+
553+
Converting them yourself to appearances and storing this converted value will ensure this process only has to happen once for the lifetime of the round. Helper functions exist to do most of the work for you.
554+
555+
556+
Bad:
557+
```dm
558+
/obj/machine/update_overlays(blah)
559+
if (stat & broken)
560+
add_overlay(icon(broken_icon)) //this icon gets created, passed to byond, converted to an appearance, then deleted.
561+
return
562+
if (is_on)
563+
add_overlay("on") //also bad, the converstion to an appearance still has to happen
564+
else
565+
add_overlay(iconstate2appearance(icon, "off")) //this might seem alright, but not storing the value just moves the repeated appearance generation to this proc rather then the core overlay management. It would only be acceptable (and to some degree perferred) if this overlay is only ever added once (like in init code)
566+
```
567+
568+
Good:
569+
```dm
570+
/obj/machine/update_overlays(var/blah)
571+
var/static/on_overlay
572+
var/static/off_overlay
573+
var/static/broken_overlay
574+
if(isnull(on_overlay)) //static vars initialize with global variables, meaning src is null and this won't pass integration tests unless you check.
575+
on_overlay = iconstate2appearance(icon, "on")
576+
off_overlay = iconstate2appearance(icon, "off")
577+
broken_overlay = icon2appearance(broken_icon)
578+
if (stat & broken)
579+
add_overlay(broken_overlay)
580+
return
581+
if (is_on)
582+
add_overlay(on_overlay)
583+
else
584+
add_overlay(off_overlay)
585+
...
586+
```
587+
588+
Note: images are appearances with extra steps, and don't incur the overhead in conversion.
589+
590+
591+
### Do not abuse associated lists.
592+
Associated lists that could instead be variables or statically defined number indexed lists will use more memory, as associated lists have a 24 bytes per item overhead (vs 8 for lists and most vars), and are slower to search compared to static/global variables and lists with known indexes.
593+
594+
595+
Bad:
596+
```dm
597+
/obj/machine/update_overlays(var/blah)
598+
var/static/our_overlays
599+
if(isnull(our_overlays)
600+
our_overlays = list("on" = iconstate2appearance(overlay_icon, "on"), "off" = iconstate2appearance(overlay_icon, "off"), "broken" = iconstate2appearance(overlay_icon, "broken"))
601+
if (stat & broken)
602+
add_overlay(our_overlays["broken"])
603+
return
604+
...
605+
```
606+
607+
Good:
608+
```dm
609+
#define OUR_ON_OVERLAY 1
610+
#define OUR_OFF_OVERLAY 2
611+
#define OUR_BROKEN_OVERLAY 3
612+
/obj/machine/update_overlays(var/blah
613+
var/static/our_overlays
614+
if(isnull(our_overlays)
615+
our_overlays = list(iconstate2appearance(overlay_icon, "on"), iconstate2appearance(overlay_icon, "off"), iconstate2appearance(overlay_icon, "broken"))
616+
if (stat & broken)
617+
add_overlay(our_overlays[OUR_BROKEN_OVERLAY])
618+
return
619+
...
620+
621+
#undef OUR_ON_OVERLAY
622+
#undef OUR_OFF_OVERLAY
623+
#undef OUR_BROKEN_OVERLAY
624+
```
625+
Storing these in a flat (non-associated) list saves on memory, and using defines to reference locations in the list saves CPU time searching the list.
626+
627+
Also good:
628+
```dm
629+
/obj/machine/update_overlays(var/blah)
630+
var/static/on_overlay
631+
var/static/off_overlay
632+
var/static/broken_overlay
633+
if(isnull(on_overlay))
634+
on_overlay = iconstate2appearance(overlay_icon, "on")
635+
off_overlay = iconstate2appearance(overlay_icon, "off")
636+
broken_overlay = iconstate2appearance(overlay_icon, "broken")
637+
if (stat & broken)
638+
add_overlay(broken_overlay)
639+
return
640+
...
641+
```
642+
Proc variables, static variables, and global variables are resolved at compile time, so the above is equivalent to the second example, but is easier to read, and avoids the need to store a list.
643+
644+
Note: While there has historically been a strong impulse to use associated lists for caching of computed values, this is the easy way out and leaves a lot of hidden overhead. Please keep this in mind when designing core/root systems that are intended for use by other code/coders. It's normally better for consumers of such systems to handle their own caching using vars and number indexed lists, than for you to do it using associated lists.
645+
646+
550647
### Other Notes
551648
* Code should be modular where possible; if you are working on a new addition, then strongly consider putting it in its own file unless it makes sense to put it with similar ones (i.e. a new tool would go in the "tools.dm" file)
552649

@@ -564,6 +661,7 @@ for (var/i in reagents)
564661

565662
* The dlls section of tgs3.json is not designed for dlls that are purely `call()()`ed since those handles are closed between world reboots. Only put in dlls that may have to exist between world reboots.
566663

664+
567665
#### Enforced not enforced
568666
The following coding styles are not only not enforced at all, but are generally frowned upon to change for little to no reason:
569667

.github/RUNNING_A_SERVER.md

+56
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,62 @@ Web delivery of game resources makes it quicker for players to join and reduces
8989
* If you keep up to date with /tg/ you could reuse /tg/'s rsc cdn at http://tgstation13.download/byond/tgstation.zip. Otherwise you can use cdn services like CDN77 or cloudflare (requires adding a page rule to enable caching of the zip), or roll your own cdn using route 53 and vps providers.
9090
* Regardless even offloading the rsc to a website without a CDN will be a massive improvement over the in game system for transferring files.
9191

92+
### All In One Amazon Web Services Hosting and Content delivery network.
93+
**Important Note**
94+
It is very Importat to note that since AWS is all highly integrated its "easier" than some solutions. However the Price to ***Performance Ratio is terrible***.
95+
96+
/tg/ Using around 7TB of bandwidth a month. These costs add up. So AWS is probly only a solution for low to mid pop servers
97+
98+
**Please use [AWS Cost Estimator](https://calculator.s3.amazonaws.com/index.html) to determine if this solution is right for you.**
99+
100+
This also may not be the best AWS set up but it works.
101+
102+
This guide is also assuming you are setting up a production server and not a server that you bring up and down on weekends.
103+
It is highly recommended to reference AWS support documentation while reading this guide. This guide is not a How to AWS.
104+
105+
**Required AWS Services**
106+
1. Elastic Computer 2 (EC2)
107+
* What size and class is up to you but 4GB of RAM is a minimum.
108+
1. Route53
109+
* Domain registration and assigning "Elastic" IP addresses to said web addresses
110+
1. S3
111+
* This will be your storage point and distrobution point for your .RSC file
112+
1. Identity and Access Management (IAM)
113+
* Required for EC2 to S3 file transfers
114+
115+
**Required Software**
116+
1. Microsoft Windows
117+
1. MariaDB
118+
1. TGS4
119+
1. Notepad++ or other code editor for writing batch scripts
120+
1. AWS Command Line V2
121+
122+
**Instructions**
123+
1. After you go through setting up an AWS account you will need to create an IAM role and an IAM user. the IAM user will be made for debug testing. The IAM role will be used as an internal credential for the EC2 instance to talk with S3
124+
* The role and user creation are almost identical. give them names, select programatic access, then you will click atatych existing policey, Here you can use admin access or S3 full access. both can be found via search. the difference for roles is that you will on the first step declare it for use with EC2 and this one will need full admin access
125+
1. Create your Amazon EC2 instance. There will be a config option asking for an IAM role. use the IAM role created in the previous step.
126+
* A blank Windows Server is recommended
127+
* You will also need to define a security policey. 3 are recommended. a Remote Desktop Protocol Policey, a Maria DB Policey, and an SS13 policey. the Latter will use the port(s) of your dream demon settings. Make sure the SS13 policey whitelists all IP addresses.
128+
1. Creat your S3 bucket. this is a very simple process. only thing you need to edit is making the bucket public and making sure its in the same region as your EC2 instance.
129+
1. In the EC2 control panel, go to Elastic IP's. get one and assign it to your EC2 instance. This will result in the server IP address not changing and is required for joining the game via url instead of ip address
130+
1. In Route 53 you will register a domain name. The you will create a hosted zone and tell your domain to use the IP address you used for your EC2 instance.
131+
1. Install the required software
132+
* AWSCL2 you will need to run the configuration using the IAM User you created above.
133+
* TGS4: Make sure the TGS4 scripts from /tools/ are installed per tgs 4 instructions after you have set up your repository and done your first fetch. You will need to Also install a batch file similar to what i have provided into the event scripts folder. You can manually run the batch file to test connection to your S3 bucket.
134+
* Copy `compile_options.dm` into code overrides preserving the directory structure and altering the code as mentioned in the above CDN instructions.
135+
* Filename: DeploymentComplete.bat
136+
```Batch
137+
@echo off
138+
cd "C:\Program Files\Amazon\AWSCLIV2"
139+
aws s3 cp "C:\Instance_Path\Game\Live\tgstation.rsc" s3://BucketName/tgstation.rsc --acl public-read
140+
```
141+
142+
7. In your TGS4's instance's static config files edit resources.txt to point to the resource file uploaded by the batch file. it should resemble `http://BucketName.s3.AWSRegion.amazonaws.com/tgstation.rsc` You can get this url from the S3 object management page after its been uploaded for the first time. *Make sure you do not use use HTTPS. Byond can not do encryption*
143+
7. Tell TGS4 to fetch and deploy. If everything goes according to plan, your server will be compiled and the resource uploaded automatically to amazon S3. You can verify that by checking on the file your bucket via aws web management.
144+
7. Test your client side connection.
145+
* Tell TGS4 to run the compiled server
146+
* Attempt to log in. AWS has a stupid fast transfer speed. you should download client side data faster than you can recognize it happened.
147+
92148
## IRC BOT SETUP
93149

94150
Included in the repository is a python3 compatible IRC bot capable of relaying adminhelps to a specified

.github/workflows/gbp_collect.yml

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ name: GBP Collection
33
on:
44
schedule:
55
- cron: "20 * * * *"
6+
workflow_dispatch:
67
jobs:
78
gbp_collection:
89
runs-on: ubuntu-latest

.vscode/settings.json

+3-6
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,9 @@
1212
"editor.codeActionsOnSave": {
1313
"source.fixAll.eslint": true
1414
},
15-
"workbench.editorAssociations": [
16-
{
17-
"filenamePattern": "*.dmi",
18-
"viewType": "imagePreview.previewEditor"
19-
}
20-
],
15+
"workbench.editorAssociations": {
16+
"*.dmi": "imagePreview.previewEditor"
17+
},
2118
"files.eol": "\n",
2219
"gitlens.advanced.blame.customArguments": ["-w"],
2320
"tgstationTestExplorer.project.resultsType": "json",

_maps/RandomRuins/AnywhereRuins/golem_ship.dmm

+12-28
Original file line numberDiff line numberDiff line change
@@ -92,19 +92,15 @@
9292
dir = 4;
9393
name = "shrine of the liberator"
9494
},
95-
/obj/machinery/light{
96-
dir = 8
97-
},
95+
/obj/machinery/light/directional/west,
9896
/turf/open/floor/mineral/titanium/purple,
9997
/area/ruin/powered/golem_ship)
10098
"r" = (
10199
/obj/machinery/computer/shuttle,
102100
/turf/open/floor/mineral/titanium/purple,
103101
/area/ruin/powered/golem_ship)
104102
"t" = (
105-
/obj/structure/extinguisher_cabinet{
106-
pixel_y = 30
107-
},
103+
/obj/structure/extinguisher_cabinet/directional/north,
108104
/turf/open/floor/mineral/titanium/purple,
109105
/area/ruin/powered/golem_ship)
110106
"u" = (
@@ -143,9 +139,7 @@
143139
/turf/open/floor/mineral/titanium/purple,
144140
/area/ruin/powered/golem_ship)
145141
"z" = (
146-
/obj/structure/extinguisher_cabinet{
147-
pixel_y = -30
148-
},
142+
/obj/structure/extinguisher_cabinet/directional/south,
149143
/turf/open/floor/mineral/titanium/purple,
150144
/area/ruin/powered/golem_ship)
151145
"A" = (
@@ -161,7 +155,7 @@
161155
/obj/item/storage/firstaid/fire,
162156
/obj/structure/table/wood,
163157
/obj/item/storage/firstaid/fire,
164-
/obj/machinery/light,
158+
/obj/machinery/light/directional/south,
165159
/turf/open/floor/mineral/titanium/purple,
166160
/area/ruin/powered/golem_ship)
167161
"C" = (
@@ -198,7 +192,7 @@
198192
/turf/open/floor/mineral/titanium/purple,
199193
/area/ruin/powered/golem_ship)
200194
"I" = (
201-
/obj/machinery/light/small,
195+
/obj/machinery/light/small/directional/south,
202196
/turf/open/floor/plating,
203197
/area/ruin/powered/golem_ship)
204198
"K" = (
@@ -210,32 +204,24 @@
210204
/turf/open/floor/mineral/titanium/purple,
211205
/area/ruin/powered/golem_ship)
212206
"L" = (
213-
/obj/machinery/light/small{
214-
dir = 1
215-
},
207+
/obj/machinery/light/small/directional/north,
216208
/turf/open/floor/mineral/titanium/purple,
217209
/area/ruin/powered/golem_ship)
218210
"M" = (
219211
/obj/effect/mob_spawn/human/golem/adamantine,
220-
/obj/machinery/light/small{
221-
dir = 1
222-
},
212+
/obj/machinery/light/small/directional/north,
223213
/turf/open/floor/mineral/titanium/purple,
224214
/area/ruin/powered/golem_ship)
225215
"N" = (
226-
/obj/machinery/light{
227-
dir = 1
228-
},
216+
/obj/machinery/light/directional/north,
229217
/turf/open/floor/mineral/titanium/purple,
230218
/area/ruin/powered/golem_ship)
231219
"O" = (
232-
/obj/machinery/light{
233-
dir = 8
234-
},
220+
/obj/machinery/light/directional/west,
235221
/turf/open/floor/mineral/titanium/purple,
236222
/area/ruin/powered/golem_ship)
237223
"Q" = (
238-
/obj/machinery/light/small,
224+
/obj/machinery/light/small/directional/south,
239225
/turf/open/floor/mineral/titanium/purple,
240226
/area/ruin/powered/golem_ship)
241227
"T" = (
@@ -245,13 +231,11 @@
245231
/area/ruin/powered/golem_ship)
246232
"U" = (
247233
/obj/effect/mob_spawn/human/golem/adamantine,
248-
/obj/machinery/light/small,
234+
/obj/machinery/light/small/directional/south,
249235
/turf/open/floor/mineral/titanium/purple,
250236
/area/ruin/powered/golem_ship)
251237
"V" = (
252-
/obj/machinery/light/small{
253-
dir = 1
254-
},
238+
/obj/machinery/light/small/directional/north,
255239
/turf/open/floor/plating,
256240
/area/ruin/powered/golem_ship)
257241
"Y" = (

0 commit comments

Comments
 (0)