Squashed commit of the following:
commitf49219c019Merge:4d7a67497c5040dc286eAuthor: Fordoxia <143041327+Fordoxia@users.noreply.github.com> Date: Fri May 3 01:25:48 2024 +0100 Merge branch 'master' of https://github.com/Fordoxia/CRUNCHParadise commit5040dc286eAuthor: DGamerL <108773801+DGamerL@users.noreply.github.com> Date: Fri May 3 01:49:04 2024 +0200 Makes mentor PMs show up as mentor PMs again (#25351) commitfe59ff5c3dAuthor: Contrabang <91113370+Contrabang@users.noreply.github.com> Date: Thu May 2 19:33:24 2024 -0400 adds more hand keybinds (#25225) commitb14830c85aAuthor: GDN <96800819+GDNgit@users.noreply.github.com> Date: Thu May 2 18:17:19 2024 -0500 Timer log now includes the function called (#25308) commit073ad533faAuthor: CRUNCH <143041327+Fordoxia@users.noreply.github.com> Date: Thu May 2 18:38:45 2024 +0100 Autodocs robot_mob.dm. Removes an unused proc. (#25331) * Autodoc. Removes unused proc. * removes a space * Update code/modules/mob/living/silicon/robot/robot_mob.dm Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com> * Update robot_mob.dm * Update robot_mob.dm --------- Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com> Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> commit02a09a7c7fAuthor: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com> Date: Thu May 2 13:17:12 2024 +0100 Upgrades TGS build script to actually build RUSTG (#25340) commit2144a93627Author: Henri215 <77684085+Henri215@users.noreply.github.com> Date: Thu May 2 08:52:00 2024 -0300 Mining charges, second try! (#24790) * mining charges * Apply suggestions from code review Co-authored-by: warriorstar-orion <orion@snowfrost.garden> * span class * deconstruct comment update * Apply suggestions from code review Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/game/objects/items/weapons/explosives.dm Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com> * ops * Update code/game/objects/items/weapons/explosives.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Signed-off-by: Henri215 <77684085+Henri215@users.noreply.github.com> * Update code/modules/mining/equipment/mining_charges.dm Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Signed-off-by: Henri215 <77684085+Henri215@users.noreply.github.com> --------- Signed-off-by: Henri215 <77684085+Henri215@users.noreply.github.com> Co-authored-by: warriorstar-orion <orion@snowfrost.garden> Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com> Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> commitd587effe2cAuthor: Christasmurf <25437893+Christasmurf@users.noreply.github.com> Date: Thu May 2 12:37:44 2024 +0100 Beret + softcap .dmi split (#25314) * beret softcap dmi split * icon rename * dme crlf to lf * tsf cap fixes * Apply suggestions from code review Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> Signed-off-by: Christasmurf <25437893+Christasmurf@users.noreply.github.com> * vox cap icon name * remove beret subtype on fluff * Update code/modules/clothing/head/soft_caps.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> Signed-off-by: Christasmurf <25437893+Christasmurf@users.noreply.github.com> --------- Signed-off-by: Christasmurf <25437893+Christasmurf@users.noreply.github.com> Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> commit15e7fcdb3fAuthor: Divulf <134484326+Divulf@users.noreply.github.com> Date: Thu May 2 21:59:35 2024 +1200 Improves barsigns and makes them buildable. (#24685) * Improves barsigns and makes them buildable. * Requested fixes. * fingerprints and a parent call on attack_hand() (sure hope this doesn't break anything) * More fixes. (the change to barsigns.dmi is removing a bunch of almost-transparent pixels on the mead bay sign that shouldn't have been there) * Even more fixes. * Better code and sprite fixes. * early returns * better * more * switch * qwertyuiop * whoops * maps are stupid * mcramon sprites :o * i hope mapmerge works this time * i hope mapmerge works THIS time * zrsxdctfhghfcdszzsxdgcfhv --------- Co-authored-by: S34N <12197162+S34NW@users.noreply.github.com> commitfd30c12047Author: Charlie Nolan <funnyman3595@gmail.com> Date: Wed May 1 20:04:42 2024 -0700 Secondary goals will now refuse to generate if messaging is offline. (#25170) * Secondary goals will now refuse to generate if messaging is offline. * Apply suggestions from code review Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Signed-off-by: Charlie Nolan <funnyman3595@gmail.com> --------- Signed-off-by: Charlie Nolan <funnyman3595@gmail.com> Co-authored-by: FunnyMan3595 (Charlie Nolan) <funnyman@google.com> Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> commit13c583d2bfAuthor: Mikhail Dzianishchyts <mikhail.dzianishchyts@gmail.com> Date: Thu May 2 04:57:26 2024 +0300 Sanitize empty values in `file2list()` (#25255) * Sanitize empty values in `file2list()` * seperator --------- Signed-off-by: Mikhail Dzianishchyts <mikhail.dzianishchyts@gmail.com> commit87aef93586Author: asciodev <81930475+asciodev@users.noreply.github.com> Date: Wed May 1 20:36:02 2024 -0400 Allow borgs to use holopads (#25094) * Allow borgs to use holopads * Revert kludge cyborg icon fix in favor of sane fix * Further remove cyborg hologram kludge For cyborgs, a false value was previously set for the safety argument when calling `/proc/getHologramIcon` (from commit17c96bc24d). This was because the `icon/A` parameter was mistakenly set to `robot.icon`, which caused a runtime error to occur when `Height()` is called on it in line 1008, preventing cyborg holograms from appearing. Setting a false safety value made use of the so-conditional `new(A)` call on line 1003, which created a new icon from the `robot.icon` string. This kludge prevented a runtime and made cyborg holograms appear. The kludge was removed in commitdbb8851ae3, but the false safety value remained. This commit fixes that. * Update code/game/machinery/hologram.dm Signed-off-by: DGamerL <108773801+DGamerL@users.noreply.github.com> --------- Signed-off-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> commitba4994d889Author: Mikhail Dzianishchyts <mikhail.dzianishchyts@gmail.com> Date: Thu May 2 03:35:39 2024 +0300 Tweak recipes of glasses (#25070) * Tweak recipes of glasses * Allow some sunglasses as ingredient * Revert time of recipes commit5ca09c7fe7Author: Mikhail Dzianishchyts <mikhail.dzianishchyts@gmail.com> Date: Thu May 2 03:27:10 2024 +0300 Don't walk without gravity while being space drugged (#25248) * Don't walk without gravity while being space drugged * Update code/modules/reagents/chemistry/reagents/drugs.dm Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com> Signed-off-by: Mikhail Dzianishchyts <mikhail.dzianishchyts@gmail.com> --------- Signed-off-by: Mikhail Dzianishchyts <mikhail.dzianishchyts@gmail.com> Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com> commit24726c60feAuthor: Adrer <erwin@lombok.demon.nl> Date: Thu May 2 02:20:07 2024 +0200 Moving pulled objects as a borg checks if the turf is adjacent to you. (#25253) * Move_Pulled now checks for adjacency of the turf you are moving something to. * Move comment to correct line. * Update code/modules/mob/mob_movement.dm Co-authored-by: GDN <96800819+GDNgit@users.noreply.github.com> Signed-off-by: DGamerL <108773801+DGamerL@users.noreply.github.com> --------- Signed-off-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Co-authored-by: adrermail@gmail.com <adrermail@gmail.com> Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Co-authored-by: GDN <96800819+GDNgit@users.noreply.github.com> commit31390ff2e1Author: Luc <89928798+lewcc@users.noreply.github.com> Date: Wed May 1 20:14:23 2024 -0400 Check against current mob for admin keybinds (#25341) commit45b0f34d95Author: Mikhail Dzianishchyts <mikhail.dzianishchyts@gmail.com> Date: Thu May 2 03:06:23 2024 +0300 Don't check side pressure if filter isn't.. filtering (#25019) commit50a986b8deAuthor: Charlie Nolan <funnyman3595@gmail.com> Date: Wed May 1 17:04:50 2024 -0700 Makes tesla movement pretty (#24786) * They hate how easy this is * No more deciseconds * Intermediate code * Made tesla movement pretty. * Lint. * Update code/modules/mob/mob_movement.dm Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com> * Review comments. --------- Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com> Co-authored-by: FunnyMan3595 (Charlie Nolan) <funnyman@google.com> commite19559ad54Author: CRUNCH <143041327+Fordoxia@users.noreply.github.com> Date: Thu May 2 01:01:24 2024 +0100 The Gibber Now Drops 6 Meat Instead of 3 When Gibbing. (#25287) * Update gibber.dm * extra commit1feb21eed1Author: CRUNCH <143041327+Fordoxia@users.noreply.github.com> Date: Thu May 2 00:58:35 2024 +0100 [FIX] Cyborgs With Guns Can Now Perform Executions (With Guns!). (#25275) * borg execution time * Update gun.dm * Update gun.dm * Update gun.dm commit41eff52facAuthor: DGamerL <108773801+DGamerL@users.noreply.github.com> Date: Thu May 2 01:55:38 2024 +0200 Renames most processing SS' to the convention of `SS[SS name here]` (#25302) * Renames most processing SS' * Contra review commit271d67d237Author: Deniz <66401072+Oyu07@users.noreply.github.com> Date: Thu May 2 02:54:00 2024 +0300 Adds MARK: to some comments (#25184) * robot_upgrades * disability * airlock * mecha * Abcudtor * Forgot a space here * Some style changes + additions * removed a no comment * comment change * empty * empty again dont dare look insde * ault Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> --------- Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> commit4a1f396707Author: dearmochi <1496804+dearmochi@users.noreply.github.com> Date: Thu May 2 08:52:14 2024 +0900 Grant TRAIT_NOFIRE while cloning (#25327) * Grant TRAIT_NOFIRE while cloning * Update code/game/machinery/clonepod.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> Signed-off-by: DGamerL <108773801+DGamerL@users.noreply.github.com> --------- Signed-off-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> commitf8ebba6ed1Author: Burzah <116982774+Burzah@users.noreply.github.com> Date: Wed May 1 16:49:05 2024 -0700 Adds logging for thrall deconversions (#25305) * thrall deconversion logging inside water.dm * moves logging to vamp_thrall.dm instead commitf0209d975bAuthor: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> Date: Wed May 1 19:46:42 2024 -0400 ion scatter gets 2 more pellets and 5 degrees more spread (#25269) * ion scatter gets 2 more pellets and 5 degrees more spread * mech ion as well commit96aa08823cAuthor: DGamerL <108773801+DGamerL@users.noreply.github.com> Date: Thu May 2 01:23:31 2024 +0200 Adds it (#25254) commitaf7f35a0feAuthor: Arthri <41360489+Arthri@users.noreply.github.com> Date: Thu May 2 07:23:26 2024 +0800 Remove tgui say error (#25273) * Remove the error * Build and update tgui * Restore precautionary if statement * Build and update tgui * trigger ci --------- Co-authored-by: Arthri <41360489+a@users.noreply.github.com> Co-authored-by: /tg/ui Builder <41898282+github-actions[bot]@users.noreply.github.com> commita3a1be49b0Author: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> Date: Wed May 1 19:23:19 2024 -0400 modsuits have the same virus protection as space suits / biosuits (#25310) commitdaf76d3aaaAuthor: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> Date: Wed May 1 19:23:09 2024 -0400 gives lavaland plants 50 potency (#25322) commit55ed33a253Author: DGamerL <108773801+DGamerL@users.noreply.github.com> Date: Thu May 2 01:23:03 2024 +0200 Changes incorporeal_move to defines (#25319) * Changes incorporeal_mvoe to defines * Lets the switch use defines too commitf2dd4f6595Author: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> Date: Wed May 1 19:22:59 2024 -0400 fix shield generators on zlvl change (#25318) commit3e5a3ea35cAuthor: Luc <89928798+lewcc@users.noreply.github.com> Date: Wed May 1 16:37:44 2024 -0400 works (#25337) commitf97a9ee934Author: paradisess13[bot] <165046124+paradisess13[bot]@users.noreply.github.com> Date: Wed May 1 19:05:54 2024 +0100 NanoMap Auto-Update (Wed May 1 01:16:06 UTC 2024) (#25329) Co-authored-by: NanoMap Generation <action@github.com> commit9d2c9d9ed1Author: DGamerL <108773801+DGamerL@users.noreply.github.com> Date: Wed May 1 13:27:37 2024 +0200 Removes a variable that is only set once (#25003) * One of the variables of all time * Oyu review commit44fb00ca25Author: Сиротка <114731039+ErdGinalD@users.noreply.github.com> Date: Wed May 1 13:42:57 2024 +0300 Qol + fix for mecha (#25206) * Qol + fix for mecha * Update code/game/mecha/mecha.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * Update code/game/mecha/mecha.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> --------- Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> commit86530f4e3eAuthor: Сиротка <114731039+ErdGinalD@users.noreply.github.com> Date: Wed May 1 13:40:48 2024 +0300 BUFF: Mining Grenade launcher (#25204) * BUFF: Mining Grenade launcher * Update weapons.dm commit14ce47830dAuthor: Charlie Nolan <funnyman3595@gmail.com> Date: Wed May 1 03:39:01 2024 -0700 Reduce the chance of getting no changes to a stat when mutating plants. (#25179) * Reduce the chance of getting no changes to a stat when mutating plants. * Update code/modules/hydroponics/seeds.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> --------- Co-authored-by: FunnyMan3595 (Charlie Nolan) <funnyman@google.com> Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> commit7daf219ec0Author: larentoun <31931237+larentoun@users.noreply.github.com> Date: Wed May 1 13:37:08 2024 +0300 More Crowbar Acts (#24986) * crowbar acts part 1 * livings checked * convert istypes to tool behaviour * solars * use tool_volume * Update code/modules/research/server.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: larentoun <31931237+larentoun@users.noreply.github.com> * Update code/modules/power/generators/portable generators/pacman.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: larentoun <31931237+larentoun@users.noreply.github.com> * return * return returns * Update code/modules/mob/living/simple_animal/bot/mulebot.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> Signed-off-by: larentoun <31931237+larentoun@users.noreply.github.com> * Update code/game/objects/structures/janicart.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> Signed-off-by: larentoun <31931237+larentoun@users.noreply.github.com> --------- Signed-off-by: larentoun <31931237+larentoun@users.noreply.github.com> Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> commit4d7a67497cMerge:afd185773aa2e7d95306Author: Fordoxia <143041327+Fordoxia@users.noreply.github.com> Date: Wed May 1 04:00:48 2024 +0100 Merge branch 'master' of https://github.com/Fordoxia/CRUNCHParadise commita2e7d95306Author: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com> Date: Tue Apr 30 22:41:03 2024 +0100 Moves a custom item to the right file (#25325) commit6ea2f09570Author: DGamerL <108773801+DGamerL@users.noreply.github.com> Date: Tue Apr 30 20:41:45 2024 +0200 Removes a rogue # (#25313) commit9271d9e106Author: Charlie Nolan <funnyman3595@gmail.com> Date: Tue Apr 30 05:29:19 2024 -0700 Added tracking of when a secondary goal is handed out. (#25168) Co-authored-by: FunnyMan3595 (Charlie Nolan) <funnyman@google.com> commit4ea0bbd6daAuthor: CRUNCH <143041327+Fordoxia@users.noreply.github.com> Date: Tue Apr 30 13:07:18 2024 +0100 Tweaks Farragus Robotics, Adds a Corpse Delivery Chute! (#25090) * Fixing some minor typos for cyborg upgrade flavour text Throws in some missing apostrophes, capitalisation, and the letter "s." * Briefcase Full of Cash buff Increases the amount of cash in the Syndicate Briefcase Full of Cash from 600 Cr to 1000 Cr * Reverts double-feature PR * Reverts a broken revert * Reverting again because Ebba told me to * And reverting yet again * Makes farragus less bad * Tweaks * Reconstruction * Tweaks * Merge Deconflict AGAIN * Update cerestation.dmm * More deconflictation * Update cerestation.dmm commit107950f50eAuthor: CRUNCH <143041327+Fordoxia@users.noreply.github.com> Date: Tue Apr 30 12:51:15 2024 +0100 Removes Advanced Reagent Scanner from Service & Medical Cyborgs, Transfers Functionality to Innate Reagent Vision. (#24457) * Update robot_modules.dm * Adds advanced reagent vision * rounding * Update code/datums/outfits/outfit_debug.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * Update code/modules/clothing/clothing.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * Update atoms.dm * This one hyphen will kill me if I don't fix it. * Update code/game/atoms.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * Update code/game/atoms.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * Update atoms.dm * Update code/game/atoms.dm Co-authored-by: GDN <96800819+GDNgit@users.noreply.github.com> * Update code/modules/clothing/clothing.dm Co-authored-by: GDN <96800819+GDNgit@users.noreply.github.com> Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com> --------- Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com> Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> Co-authored-by: GDN <96800819+GDNgit@users.noreply.github.com> commit773ee4afedAuthor: S34N <12197162+S34NW@users.noreply.github.com> Date: Tue Apr 30 12:45:41 2024 +0100 Update the TGUI conflict merge resolution to properly commit rebuilt bundles (#25246) * update the tgui conflict merge process * tidy this commit94b5d22034Author: larentoun <31931237+larentoun@users.noreply.github.com> Date: Tue Apr 30 14:40:41 2024 +0300 Records Multiline (#24991) * pre-wrap for labeledlist * multiline for pdas * consoles fix * update tgui * update tgui bundle commit54d563ada1Author: Charlie Nolan <funnyman3595@gmail.com> Date: Tue Apr 30 04:23:16 2024 -0700 Reverse direction of requests console messages. (#25169) Also fixes a bad error message. Co-authored-by: FunnyMan3595 (Charlie Nolan) <funnyman@google.com> Co-authored-by: paradisess13[bot] <165046124+paradisess13[bot]@users.noreply.github.com> commitafd185773aMerge:8b0ff64cc0ec2c5638fcAuthor: Fordoxia <143041327+Fordoxia@users.noreply.github.com> Date: Tue Apr 30 03:45:45 2024 +0100 Merge branch 'master' of https://github.com/Fordoxia/CRUNCHParadise commitec2c5638fcAuthor: Zantox <vetle.neumann@protonmail.com> Date: Tue Apr 30 02:57:36 2024 +0200 Add ventcrawl unit-test (#24830) * Add ventcrawl unit-test * Fix linting * Solve chair-flipping without HANDS_BLOCKED * Remove unit_test_dummy variable * Use `isturf` helper in ventcrawl unit-test Co-authored-by: Ryan <80364400+Sirryan2002@users.noreply.github.com> * Update code/modules/unit_tests/atmos/test_ventcrawl.dm --------- Signed-off-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Co-authored-by: Ryan <80364400+Sirryan2002@users.noreply.github.com> Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> commit3e9c29258eAuthor: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com> Date: Mon Apr 29 20:51:19 2024 -0400 Diverse Traders (#24883) * Diverse Traders Types * Trader Type control, announcements, species spawning * Trader Outfits * Posh Moth - Posh Cane * Landmarks, Trader ID Name Change * Trader Shuttle Adjustment - Landmarks for Item Pools * Outfit Survival Kit changes * Added another refill for the hand labeler due to more cargo * Trader Shuttle locker fix * Item Stocks, Item Stock Assignments, Box Kits, Love Bottle * Mech access, No double mechs, Small box fix * Removed Solgov Gunkit from General Pool * Spacing * Moved traders to not be event subtypes, added documentation to vars * Boxed spacing, removed improper * Moved postequip, used box variables * Lore team requested change - Bolt action instead of AK * Changed landmark * Moved soviet ammo to minor gear, increased soviet minor gear to 8. * Obfuscated Cybersun * Lootpool Adjustments * Readded Solgov Kit to general pool at low weight * Commas! * Spelling Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * Comments Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * Re-Nulled After_Equip_Job * Removed extraneous var spaces * Relocated space in trader introduction message * Robomoon is now once again Cybersun * Impropered Enforcer Kit * No more ERT box for non-NT boxes * Fixed turbine kit stock part amount * Subtyped skrell/unathi suit boxes * Replaced meson cyber eye (nodrop issue) with meson sunglasses/gar mesons * Reduced weight on arm/esword implant rare items * Also reduced arm laser weight * Added a couple items to skipjack large - more 'random', filled in reduced weights * Path typo fix Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * Removed trailing / in path Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * Removed Cheap Breacher suit from inventory * Apply suggestions from code review Signed-off-by: DGamerL <108773801+DGamerL@users.noreply.github.com> --------- Signed-off-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> commit417d6fe8cfAuthor: Luc <89928798+lewcc@users.noreply.github.com> Date: Mon Apr 29 20:50:35 2024 -0400 Makes kudzu much more likely to entangle you (#25167) * lets kudzu entangle you * Increase buckle time * Apply suggestions from code review Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> --------- Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> commit48db11cd84Author: Сиротка <114731039+ErdGinalD@users.noreply.github.com> Date: Tue Apr 30 03:14:26 2024 +0300 Ash Walkers now Ash Doctors (#25207) * Ash Walkers now Ash Doctors * Update other.dm commit6848ee8502Author: S34N <12197162+S34NW@users.noreply.github.com> Date: Tue Apr 30 01:12:49 2024 +0100 Updates readme, licence files (#25259) * test * more * more stuff * images * more! * sanity? * details * fix licences, update readme * remove GPL disclaimer * more docs * wiki link * spacing tweaks * text change * wording * DM language reference * Update README.md Signed-off-by: S34N <12197162+S34NW@users.noreply.github.com> --------- Signed-off-by: S34N <12197162+S34NW@users.noreply.github.com> commit2e4089dc15Author: S34N <12197162+S34NW@users.noreply.github.com> Date: Mon Apr 29 03:07:25 2024 +0100 Various TG Chat message sorting fixes (#25229) * Fixes unsorted emotes, announcements, votes, surgery, prayers, ahelp responses * Apply suggestions from code review Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> --------- Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> commit4add53d6c1Author: Сиротка <114731039+ErdGinalD@users.noreply.github.com> Date: Mon Apr 29 05:00:34 2024 +0300 Add alternative Spear recipe for Ash walkers (#25208) * Add alternative Spear recipe for Ash walkers * Update recipes.dm * Update code/modules/crafting/recipes.dm Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> * Update code/modules/crafting/recipes.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> Signed-off-by: Сиротка <114731039+ErdGinalD@users.noreply.github.com> --------- Signed-off-by: Сиротка <114731039+ErdGinalD@users.noreply.github.com> Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> commit7f37f93408Author: Сиротка <114731039+ErdGinalD@users.noreply.github.com> Date: Mon Apr 29 04:33:25 2024 +0300 fix avoiding powerfist antidrop (#25274) * fix avoiding powerfist antidrop * Update code/game/objects/items/weapons/powerfist.dm Co-authored-by: HMBGERDO <61080616+HMBGERDO@users.noreply.github.com> Signed-off-by: Сиротка <114731039+ErdGinalD@users.noreply.github.com> * Update code/game/objects/items/weapons/powerfist.dm Co-authored-by: 1080pCat <96908085+1080pCat@users.noreply.github.com> Signed-off-by: Сиротка <114731039+ErdGinalD@users.noreply.github.com> --------- Signed-off-by: Сиротка <114731039+ErdGinalD@users.noreply.github.com> Co-authored-by: HMBGERDO <61080616+HMBGERDO@users.noreply.github.com> Co-authored-by: 1080pCat <96908085+1080pCat@users.noreply.github.com> commit83c9d8878aAuthor: Rayforx <154929127+Rayforx@users.noreply.github.com> Date: Mon Apr 29 00:21:48 2024 +0200 Blood level QoL for vampires (#25075) commita50683ef28Author: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> Date: Sun Apr 28 18:03:14 2024 -0400 Adds the SPRK-12 Energy Pistol (#24869) * Adds the SPRK-12 Pistol * I Was improper and forgot to name it right Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * check it * Update gun.dm * less copypasta * Apply suggestions from code review Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> Co-authored-by: warriorstar-orion <orion@snowfrost.garden> Signed-off-by: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> * early return --------- Signed-off-by: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> Co-authored-by: warriorstar-orion <orion@snowfrost.garden> commitfb027f73ddAuthor: DGamerL <108773801+DGamerL@users.noreply.github.com> Date: Sun Apr 28 22:57:26 2024 +0200 Changes the `is_changeling` and `is_mindslave` procs into proper defines (#25212) * Changes these procs into proper defines * Henri review commitfc7acc4597Author: Burzah <116982774+Burzah@users.noreply.github.com> Date: Sun Apr 28 13:05:39 2024 -0700 adjusted logic for humanize_spider (#25286) commita42bacb9faAuthor: BiancaWilkson <42818125+BiancaWilkson@users.noreply.github.com> Date: Sun Apr 28 15:53:29 2024 -0400 fifty percent off deal (#25243) commit057e9f16ebAuthor: Code-Lyoko0 <degg444@gmail.com> Date: Sun Apr 28 14:51:34 2024 -0500 Informs Deathsquad that the bomb has been armed during Epsilon Alert. (#25242) * informs the Death Squad that the bomb has been armed during Epsilon Alert * Contra review, properly qdel'ing the radio on destory commit6fa7a48ba8Author: Contrabang <91113370+Contrabang@users.noreply.github.com> Date: Sun Apr 28 15:48:13 2024 -0400 ibheriewfofi0wnmfeionfm (#25294) commitdaa368ca10Author: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> Date: Sun Apr 28 15:48:00 2024 -0400 day 1 shadow tweaks (#25290) commit36f7c43c9cAuthor: larentoun <31931237+larentoun@users.noreply.github.com> Date: Sun Apr 28 06:01:16 2024 +0300 Better Gas Scans (Chatbox and Colored!) (#24975) * feat: Better Gas Analyzer AND TGUI! https://github.com/ss220-space/Paradise/pull/2333 https://github.com/ss220-space/Paradise/pull/2461 https://github.com/ss220-space/Paradise/pull/2522 * rename atmos helpers * remove tgui * more fixes * better act self * now scanner finally works again * what if we want turf beneath the target? * fix chatbox * color code the gases * unnecessary stuff removal * ghosts can now scan portable atmospherics * better code * do we really need to know that? * change colors * add a space to separate gases from other info * update tgui bundle * update dark-theme CO2 color commit1d4d95a10bAuthor: Contrabang <91113370+Contrabang@users.noreply.github.com> Date: Sat Apr 27 21:43:58 2024 -0400 yes (#25297) commita3e43a3161Author: warriorstar-orion <orion@snowfrost.garden> Date: Sat Apr 27 20:06:39 2024 -0400 fix: null check during morph eat (#25291) commitd2d932d4d1Author: paradisess13[bot] <165046124+paradisess13[bot]@users.noreply.github.com> Date: Sat Apr 27 12:22:22 2024 +0100 NanoMap Auto-Update (Sat Apr 27 01:09:53 UTC 2024) (#25280) Co-authored-by: NanoMap Generation <action@github.com> commit572b79bce9Author: DGamerL <108773801+DGamerL@users.noreply.github.com> Date: Sat Apr 27 10:25:17 2024 +0200 Removes num2dir (#25261) commitdbc3bf1c8bAuthor: GDN <96800819+GDNgit@users.noreply.github.com> Date: Sat Apr 27 03:23:48 2024 -0500 Removes a lot of lists (#25272) * Removes a lot of lists * Update code/game/turfs/simulated/floor.dm Signed-off-by: GDN <96800819+GDNgit@users.noreply.github.com> * Update code/game/turfs/simulated/floor/misc_floor.dm Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Signed-off-by: GDN <96800819+GDNgit@users.noreply.github.com> * Update code/game/turfs/simulated/floor/mineral_floors.dm Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Signed-off-by: GDN <96800819+GDNgit@users.noreply.github.com> * Update code/game/turfs/simulated/floor/mineral_floors.dm Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Signed-off-by: GDN <96800819+GDNgit@users.noreply.github.com> --------- Signed-off-by: GDN <96800819+GDNgit@users.noreply.github.com> Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> commite810b3a9c7Author: Adrer <erwin@lombok.demon.nl> Date: Sat Apr 27 10:21:13 2024 +0200 Security level changes no longer force depowered lights on. (#25245) Co-authored-by: adrermail@gmail.com <adrermail@gmail.com> commitb165839073Author: Christasmurf <25437893+Christasmurf@users.noreply.github.com> Date: Sat Apr 27 01:17:59 2024 +0100 Biosuit resprite (#25004) * biosuits babeyyy * minor changes to comments * lil booties * suggested change commite73dc13a29Author: Luc <89928798+lewcc@users.noreply.github.com> Date: Fri Apr 26 20:00:51 2024 -0400 Improves interactions with display cases. (#25228) * better player info for display case * this too * improved messaging * finish out the docs * Update code/game/objects/structures/displaycase.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> Signed-off-by: Luc <89928798+lewcc@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> Signed-off-by: Luc <89928798+lewcc@users.noreply.github.com> --------- Signed-off-by: Luc <89928798+lewcc@users.noreply.github.com> Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> commit7a45c712b8Author: DGamerL <108773801+DGamerL@users.noreply.github.com> Date: Sat Apr 27 00:32:00 2024 +0200 Adds a stamina meter (#24782) * Finally done * Contra + Qwerty review * I don't think I broke anything :D * Lewc review commit88af37bfcfAuthor: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> Date: Fri Apr 26 18:31:09 2024 -0400 Adds the NTSS Shadow (#24778) * WIP * change this * the rest of the fucking owl * removes QWERTODO * let us fix the CC beacons too * makes it look better * makes CI work on everything but shadow, asking warriorstar * exclude ntss shadow from window spawner checks * final changes hopefully * moved around parts of the shuttle * Update code/modules/atmospherics/machinery/components/trinary_devices/filter.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * moves it moves it to it's own file * move it move it * bobby_drop_tables * oops * fuck --------- Co-authored-by: warriorstar-orion <orion@snowfrost.garden> Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> commit78e782dfcbAuthor: S34N <12197162+S34NW@users.noreply.github.com> Date: Fri Apr 26 23:11:08 2024 +0100 skip nanomap when no changes needed (#25182) commit8b0ff64cc0Merge:c75279f7c87ab24d6519Author: Fordoxia <fordoxia@googlemail.com> Date: Fri Apr 26 22:42:06 2024 +0100 Merge branch 'master' of https://github.com/Fordoxia/CRUNCHParadise commit7ab24d6519Author: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> Date: Fri Apr 26 16:50:36 2024 -0400 fixes tarot card capitalization in uplink (#25278) commitc75279f7c8Merge:8c704101de5b8ae44d03Author: Fordoxia <143041327+Fordoxia@users.noreply.github.com> Date: Fri Apr 26 16:23:32 2024 +0100 Merge branch 'master' of https://github.com/Fordoxia/CRUNCHParadise commit5b8ae44d03Author: PopeDaveThe3th <80988376+PopeDaveThe3th@users.noreply.github.com> Date: Thu Apr 25 15:14:31 2024 -0400 whoops (#25268) commit5adf1408d1Author: Mikhail Dzianishchyts <mikhail.dzianishchyts@gmail.com> Date: Thu Apr 25 22:04:31 2024 +0300 Bring `respawn_enabled` back to config (#25264) commit20701d905cAuthor: Contrabang <91113370+Contrabang@users.noreply.github.com> Date: Thu Apr 25 14:20:50 2024 -0400 Shades now drop bodies when killed/destroyed (#24784) * this was a bit of a pain * yes * damger reviwe * funny review * Apply suggestions from code review Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> --------- Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> commite204ca6694Author: 1080pCat <96908085+1080pCat@users.noreply.github.com> Date: Fri Apr 26 04:20:35 2024 +1000 pens (#25159) commitae7da539e3Author: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com> Date: Thu Apr 25 19:20:14 2024 +0100 Fixes an SQL update file + null character save issue (#25149) * This is what I get for sending a PR * I DID SAY TESTING: None commit1377fd1166Author: Mikhail Dzianishchyts <mikhail.dzianishchyts@gmail.com> Date: Thu Apr 25 06:00:44 2024 +0300 [s] Disguise with plant trick (#25260) * Fix plant-disguise trick * Resolve name collision commitaf5d187014Author: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> Date: Wed Apr 24 19:10:46 2024 -0400 Adds magic tarot cards [SERIOUS DO NOT CLOSE AFTER AFD] (#24933) * starts it * Update magic_tarot.dm * MORE PROGRESS * So many thanks to Cloudbucket, for sprites * The Work, the Art, continues. * more changes * pushes the Work foward. All cards done. * and more thanks github * adds to BSH * tochat * Finishes QWERTYTODO. Magic key. World smoke * Isaac and his mother lived alone in a small house on a hill. Isaac kept to himself, drawing pictures and playing with his toys as his mom watched Christian broadcasts on the television. Life was simple, and they were both happy. That was, until the day Isaac’s mom heard a voice from above. “Your son has become corrupted by sin. He needs to be saved.” “I will do my best to save him, my Lord,” Isaac’s mother replied, rushing into Isaac’s room, removing all that was evil from his life. Again the voice called to her, "Isaac’s soul is still corrupt. He needs to be cut off from all that is evil in this world and confess his sins." “I will follow your instructions, Lord. I have faith in thee,” Isaac’s mother replied, as she locked Isaac in his room, away from the evils of the world. One last time, Isaac’s mom heard the voice of God calling to her. “You've done as I've asked, but I still question your devotion to me. To prove your faith, I will ask one more thing of you." "Yes Lord, anything!” Isaac’s mother begged. "To prove your love and devotion, I require a sacrifice. Your son, Isaac, will be this sacrifice. Go into his room and end his life, as an offering to me to prove you love me above all else." "Yes Lord", she replied, grabbing a butcher’s knife from the kitchen. Isaac, watching through a crack in his door, trembled in fear. Scrambling around his room to find a hiding place, he noticed a trap door to the basement hidden under his rug. Without hesitation, he flung open the hatch, just as his mother burst through his door, and threw himself down into the unknown depths below. * nanny bag it before I forget * Apply suggestions from code review Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> * returns early * Apply suggestions from code review Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> * RE-RE-RE-REVIEW * Apply suggestions from code review Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Co-authored-by: synthtee <127706731+SynthTwo@users.noreply.github.com> * requested changes and such * duh * Apply suggestions from code review Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> * returns early * Update code/datums/status_effects/buffs.dm Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> * new hrefs here to troll CI :trollface: * Update code/game/gamemodes/wizard/magic_tarot.dm Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Signed-off-by: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> --------- Signed-off-by: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> Co-authored-by: synthtee <127706731+SynthTwo@users.noreply.github.com> commit69d6a8df21Author: GDN <96800819+GDNgit@users.noreply.github.com> Date: Wed Apr 24 16:21:11 2024 -0500 Overhauls player facing verb UI (#24060) * Preference verb overhaul * this too * Update code/__DEFINES/preferences_defines.dm * Update code/modules/client/preference/preferences.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * fixes + better html * removes unused define --------- Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> commite615738e22Author: S34N <12197162+S34NW@users.noreply.github.com> Date: Wed Apr 24 20:42:12 2024 +0100 All your TGUI belong to us (#25250) commit0c5fdaa57bAuthor: Luc <89928798+lewcc@users.noreply.github.com> Date: Wed Apr 24 15:40:45 2024 -0400 Updates contributing guide regarding signals, removes SIGNAL_HANDLER_DOES_SLEEP (#24824) * Updates contributing guide, removes DOES_SLEEP * Update .github/CONTRIBUTING.md Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> --------- Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> commit3333fd051fAuthor: larentoun <31931237+larentoun@users.noreply.github.com> Date: Wed Apr 24 22:38:47 2024 +0300 if you have PROCCALL rights, you can call it from VV (#25030) commit20a0836d1aAuthor: Rayforx <154929127+Rayforx@users.noreply.github.com> Date: Wed Apr 24 07:45:43 2024 +0200 Update ghost_bar.dm (#25234) commitc3af4456e1Author: chuga-git <98280110+chuga-git@users.noreply.github.com> Date: Wed Apr 24 00:45:37 2024 -0500 Restricts rubbershot's guaranteed knockdown range (#25178) * restricts rubbershot knockdown range * actually commit the right version * Henri review commita2de7f4533Author: GDN <96800819+GDNgit@users.noreply.github.com> Date: Wed Apr 24 00:45:25 2024 -0500 fixes a radial menu gc false positive (#25237) commit6c756f98c0Author: DGamerL <108773801+DGamerL@users.noreply.github.com> Date: Wed Apr 24 07:45:16 2024 +0200 Makes the walls from Desecrated Duel GC properly (#24990) * GC is a thing of all time * Spacing commitd233824addAuthor: GDN <96800819+GDNgit@users.noreply.github.com> Date: Wed Apr 24 00:45:03 2024 -0500 nerfs machine overload (#25153) commit752deb8119Author: Mikhail Dzianishchyts <mikhail.dzianishchyts@gmail.com> Date: Tue Apr 23 22:09:44 2024 +0300 Make it possible to get out of abductors experimentation machine (#24842) * Make it possible to get out of abductors experimentation machine * Better roll of result * Better message of escape attempt * Apply suggestions from code review * Remove unnecessary check * Slightly tweak values commit8c704101deMerge:339ded7dd367cba07b99Author: Fordoxia <143041327+Fordoxia@users.noreply.github.com> Date: Tue Apr 23 03:22:48 2024 +0100 Merge branch 'master' of https://github.com/Fordoxia/CRUNCHParadise commit67cba07b99Author: SchrodingersWolf <108938550+SchrodingersWolf@users.noreply.github.com> Date: Mon Apr 22 21:14:08 2024 -0400 Fixes Cerestation Medical Storage disposals bin, also simplifies disposals in Medbay Break Room (#24776) * Fixes Medbay Storage disposals bin * Life is pain * Rogue pipe be gone commit853f108c89Author: Contrabang <91113370+Contrabang@users.noreply.github.com> Date: Mon Apr 22 20:50:48 2024 -0400 [SERIOUS] Improves admin tooling for radiation (#24968) * lets clean some radiation * changes * lgtm commitde6a54fbdeAuthor: DGamerL <108773801+DGamerL@users.noreply.github.com> Date: Tue Apr 23 02:49:52 2024 +0200 Removes all mentions of `return .` where they would be unnecessary (#25142) * Removes all mentions of `return .` * I can do this all day * Arthri review * Update code/__HELPERS/sanitize_values.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/__HELPERS/sanitize_values.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> --------- Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> commit6b442d3ed2Author: warriorstar-orion <orion@snowfrost.garden> Date: Mon Apr 22 20:48:08 2024 -0400 cere: increase maint loot spawns (#25152) commita1ca632a19Author: Aylong <69762909+AyIong@users.noreply.github.com> Date: Tue Apr 23 01:37:59 2024 +0300 [TGUI] Coin Mint (#24885) * Backend * Simplify * Almost ready * Done., i think * You can now craft a money bag * Autodoc * Fingerprints * Earlier return if no money bag * Update code/modules/mining/mint.dm * Update code/modules/mining/mint.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * Update tgui.bundle.js * Rebuild * Fuckin hell * Rebuild * Update tgui.bundle.js * Update code/modules/mining/mint.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * Update code/modules/mining/mint.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> --------- Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> commit2cfa9d620fAuthor: Mikhail Dzianishchyts <mikhail.dzianishchyts@gmail.com> Date: Tue Apr 23 01:04:38 2024 +0300 Fixes exploit (#25101) commit7fa44a31fbAuthor: Mikhail Dzianishchyts <mikhail.dzianishchyts@gmail.com> Date: Tue Apr 23 00:32:49 2024 +0300 Full Auto Gun Mode Component (#24998) * Full Auto Gun Mode Component * Apply some refactoring * spaces mhmm * Some signal movement * Apply DGamerL suggestions * Unknown SIGNAL_HANDLER no more * Fix runtime if uid is passed * Why the hell you even care * god you serious --------- Co-authored-by: Gottfrei <zweisen@gmail.com> commit00be61a811Author: Mikhail Dzianishchyts <mikhail.dzianishchyts@gmail.com> Date: Mon Apr 22 23:53:14 2024 +0300 Better round start time handling after using delay (#25035) commit2d1d7e283bAuthor: GDN <96800819+GDNgit@users.noreply.github.com> Date: Mon Apr 22 15:46:21 2024 -0500 makes some uis no longer automatically update (#25121) * makes some uis no longer automatically update * fixes cloning sporadically not working * Revert "fixes cloning sporadically not working" This reverts commit2d88887cf6. * Update code/modules/hydroponics/seed_extractor.dm Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> * Update code/modules/hydroponics/seed_extractor.dm * Update code/modules/hydroponics/seed_extractor.dm --------- Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> commit80438de316Author: larentoun <31931237+larentoun@users.noreply.github.com> Date: Mon Apr 22 23:46:20 2024 +0300 Remove automatedannouncer mob (#24727) * remove automated announcer mob * remove list(z) from autosay * typo * remove more of unused role args * missed passing a value... * move comment * better check * better check * comment for say_understands * Update code/modules/mob/living/brain/living_brain.dm Co-authored-by: Charlie Nolan <funnyman3595@gmail.com> --------- Co-authored-by: Charlie Nolan <funnyman3595@gmail.com> commit8b6fec0622Author: Charlie Nolan <funnyman3595@gmail.com> Date: Mon Apr 22 13:38:01 2024 -0700 Prevent duplicate messages when sending a PM to yourself. (#25124) * Prevent duplicate messages when replying to yourself. * Oops. --------- Co-authored-by: FunnyMan3595 (Charlie Nolan) <funnyman@google.com> commit58c61475e6Author: GDN <96800819+GDNgit@users.noreply.github.com> Date: Mon Apr 22 15:37:16 2024 -0500 fixes repair borg not working in some cases (#25151) commit3449f5175dAuthor: warriorstar-orion <orion@snowfrost.garden> Date: Mon Apr 22 16:33:14 2024 -0400 ci: add maplints/fix matching stacked disposals/pipes (#25120) commit831776b40dAuthor: GDN <96800819+GDNgit@users.noreply.github.com> Date: Mon Apr 22 15:33:07 2024 -0500 fixes some action button issues (#25140) * fixes some action button issues * murder * thanks autocopy * morph and xenos * Update code/datums/action.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> --------- Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> commit71bc06cd4eAuthor: DGamerL <108773801+DGamerL@users.noreply.github.com> Date: Mon Apr 22 22:32:58 2024 +0200 Halves the damage dealt by PKAs to blobs (#25154) * Makes PKAs deal half damage to blobs * Update code/modules/events/blob/theblob.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> --------- Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> commit15483d1b88Author: S34N <12197162+S34NW@users.noreply.github.com> Date: Mon Apr 22 21:32:52 2024 +0100 Add modern equivalents of legacy IE-only CSS rules/properties (#25205) * alternatives to legacy -ms stuff from TGUI * tgui build * bundle * rebuild --------- Co-authored-by: paradisess13[bot] <165046124+paradisess13[bot]@users.noreply.github.com> commitfdea9d7669Author: 1080pCat <96908085+1080pCat@users.noreply.github.com> Date: Mon Apr 22 23:08:45 2024 +1000 Update cerestation.dmm (#25190) commit5fe22f485cAuthor: chuga-git <98280110+chuga-git@users.noreply.github.com> Date: Mon Apr 22 08:00:03 2024 -0500 permits mobs with chunky fingers to fire blowgun (#25176) commit4b0f774cdcAuthor: Code-Lyoko0 <degg444@gmail.com> Date: Mon Apr 22 05:29:06 2024 -0500 make the station not go into delta alert when the Death Squad arms the nuke (#25163) commit339ded7dd3Merge:8481f50f90f12f75c652Author: Fordoxia <143041327+Fordoxia@users.noreply.github.com> Date: Mon Apr 22 01:52:33 2024 +0100 Merge branch 'master' of https://github.com/Fordoxia/CRUNCHParadise commitf12f75c652Author: Charlie Nolan <funnyman3595@gmail.com> Date: Sun Apr 21 16:47:32 2024 -0700 Update CONTRIBUTING.md (#25235) commit6d3549c3caAuthor: DGamerL <108773801+DGamerL@users.noreply.github.com> Date: Mon Apr 22 01:34:33 2024 +0200 LOOK IT'S COCAINE BEAR (1985) (#25086) commitebbbf62cecAuthor: tristan1333 <ttb09RD@gmail.com> Date: Mon Apr 22 09:06:47 2024 +1000 Chicken meat/burger, Onigiri, Seaweed, updated boiled rice sprite (#24813) * Adds chicken meat, burger, onigiri, updates boiled rice sprite * Update code/modules/food_and_drinks/food/foods/side_dishes.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * Update code/game/objects/items/stacks/seaweed.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * changed chickenburger pathname, deleted old boiled rice sprite * Transfers reagents from rice to onigiri * Update code/modules/research/designs/biogenerator_designs.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * All sushi now requires seaweed * new seaweed desc, attackverb oopsy daisy, seaweed attack_self doesn't show pointless list, Onigiri goes in hand * moved seaweed sprite to organic.dmi * Update code/modules/research/designs/biogenerator_designs.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * Update organic.dmi * re * goal * oops * early return * Update code/modules/food_and_drinks/food/foods/side_dishes.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * Update code/modules/food_and_drinks/food/foods/side_dishes.dm Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> * Update code/modules/food_and_drinks/food/foods/side_dishes.dm Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> * Update code/modules/food_and_drinks/food/foods/side_dishes.dm Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> --------- Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> commit224c488c40Author: Burzah <116982774+Burzah@users.noreply.github.com> Date: Sun Apr 21 15:54:06 2024 -0700 CA Gang (#25233) commit0a38123ff8Author: DGamerL <108773801+DGamerL@users.noreply.github.com> Date: Mon Apr 22 00:39:59 2024 +0200 Adds me to `CONTRIBUTING.md` (#25232) * I WILL conflict burza and funny * Okaaaaaaaay fiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiine commit8481f50f90Merge:5b793c36ed4f8d91a316Author: Fordoxia <143041327+Fordoxia@users.noreply.github.com> Date: Sun Apr 21 21:54:14 2024 +0100 Merge branch 'master' of https://github.com/Fordoxia/CRUNCHParadise commit4f8d91a316Author: Charlie Nolan <funnyman3595@gmail.com> Date: Sun Apr 21 12:45:47 2024 -0700 oops (#25210) Co-authored-by: FunnyMan3595 (Charlie Nolan) <funnyman@google.com> commit9e6dcf9c46Author: GDN <96800819+GDNgit@users.noreply.github.com> Date: Sun Apr 21 13:26:35 2024 -0500 removes the remaining datum redeclares (#25220) * removes the remaining datum redeclares * the two fixes * finneee contra * OK CONTRA * readd * CURSED TO BE BROWN! * facking automerge commitf83ef617e9Author: Luc <89928798+lewcc@users.noreply.github.com> Date: Sun Apr 21 11:59:23 2024 -0400 Expands "genderless" to all species, adds body-type option, removes some gender checks (#23910) * adds most body type support, removes some gender checks * remove gender from species, accessories * restore pick_list * re-adds limitations on accessories * Universal access to body hair * remove unused var * Update example config, some preference saving code * updates tgui bundle * oops * Remove formatting * hopefully undoes formatting changes * dammit * been meaning to fix this one for a while * dgamer reviews * move body_type into human_defines * sql file changes * update tgui * Update db code * bump versions --------- Co-authored-by: S34N <12197162+S34NW@users.noreply.github.com> Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> commit9bc9b4b67aAuthor: DGamerL <108773801+DGamerL@users.noreply.github.com> Date: Sun Apr 21 17:24:50 2024 +0200 Removes duplicate definitions of `/datum/gamemode` on almost every gamemode file (#25219) * Why did every gamemode do this :( * Contra request commit585a885b1fAuthor: DGamerL <108773801+DGamerL@users.noreply.github.com> Date: Sun Apr 21 16:53:25 2024 +0200 Easy fix (#25216) commitf6196809f2Author: paradisess13[bot] <165046124+paradisess13[bot]@users.noreply.github.com> Date: Sat Apr 20 10:08:45 2024 +0100 NanoMap Auto-Update (Sat Apr 20 01:09:53 UTC 2024) (#25211) Co-authored-by: NanoMap Generation <action@github.com>
@@ -26,3 +26,8 @@ _build_dependencies.sh @AffectedArc07
|
||||
dreamchecker.exe @AffectedArc07
|
||||
rust_g.dll @AffectedArc07
|
||||
librust_g.so @AffectedArc07
|
||||
|
||||
### S34NW
|
||||
|
||||
# TGUI stuff
|
||||
/tgui/bin @S34NW
|
||||
|
||||
@@ -157,7 +157,7 @@ if(thing == TRUE)
|
||||
return "bleh"
|
||||
var/other_thing = pick(TRUE, FALSE)
|
||||
if(other_thing == FALSE)
|
||||
return "meh"
|
||||
return "meh"
|
||||
|
||||
// Good
|
||||
var/thing = pick(TRUE, FALSE)
|
||||
@@ -165,7 +165,7 @@ if(thing)
|
||||
return "bleh"
|
||||
var/other_thing = pick(TRUE, FALSE)
|
||||
if(!other_thing)
|
||||
return "meh"
|
||||
return "meh"
|
||||
```
|
||||
|
||||
### Use `pick(x, y, z)`, not `pick(list(x, y, z))`
|
||||
@@ -452,6 +452,32 @@ Look for code examples on how to properly use it.
|
||||
addtimer(CALLBACK(target, PROC_REF(dothing), arg1, arg2, arg3), 5 SECONDS)
|
||||
```
|
||||
|
||||
### Signals
|
||||
|
||||
Signals are a slightly more advanced topic, but are often useful for attaching external behavior to objects that should be triggered when a specific event occurs.
|
||||
|
||||
When defining procs that should be called by signals, you must include `SIGNAL_HANDLER` after the proc header. This ensures that no sleeping code can be called from within a signal handler, as that can cause problems with the signal system.
|
||||
|
||||
Since callbacks can be connected to many signals with `RegisterSignal`, it can be difficult to pin down the source that a callback is invoked from. Any new `SIGNAL_HANDLER` should be followed by a comment listing the signals that the proc is expected to be invoked for. If there are multiple signals to be handled, separate them with a `+`.
|
||||
|
||||
```dm
|
||||
/atom/movable/proc/when_moved(atom/movable/A)
|
||||
SIGNAL_HANDLER // COMSIG_MOVABLE_MOVED
|
||||
do_something()
|
||||
|
||||
/datum/component/foo/proc/on_enter(datum/source, atom/enterer)
|
||||
SIGNAL_HANDLER // COMSIG_ATOM_ENTERED + COMSIG_ATOM_INITIALIZED_ON
|
||||
do_something_else()
|
||||
```
|
||||
|
||||
If your proc does have something that needs to sleep (such as a `do_after()`), do not simply omit the `SIGNAL_HANDLER`. Instead, call the sleeping code with `INVOKE_ASYNC` from within the signal handling function.
|
||||
|
||||
```dm
|
||||
/atom/movable/proc/when_moved(atom/movable/A)
|
||||
SIGNAL_HANDLER // COMSIG_MOVABLE_MOVED
|
||||
INVOKE_ASYNC(src, PROC_REF(thing_that_sleeps), arg1)
|
||||
```
|
||||
|
||||
### Operators
|
||||
|
||||
#### Spacing of operators
|
||||
@@ -834,8 +860,10 @@ Each role inherits the lower role's responsibilities (IE: Headcoders also have c
|
||||
`Commit Access` members have write access to the repository and can merge your PRs. People included in this role are:
|
||||
|
||||
- [AffectedArc07](https://github.com/AffectedArc07)
|
||||
- [Burzah](https://github.com/Burzah)
|
||||
- [Charliminator](https://github.com/hal9000PR)
|
||||
- [Contrabang](https://github.com/Contrabang)
|
||||
- [DGamerL](https://github.com/DGamerL)
|
||||
- [lewcc](https://github.com/lewcc)
|
||||
|
||||
---
|
||||
@@ -846,6 +874,7 @@ Each role inherits the lower role's responsibilities (IE: Headcoders also have c
|
||||
- [Charliminator](https://github.com/hal9000PR)
|
||||
- [Contrabang](https://github.com/Contrabang)
|
||||
- [DGamerL](https://github.com/DGamerL)
|
||||
- [FunnyMan3595](https://github.com/FunnyMan3595)
|
||||
- [Henri215](https://github.com/Henri215)
|
||||
- [lewcc](https://github.com/lewcc)
|
||||
- [Sirryan2002](https://github.com/Sirryan2002)
|
||||
|
||||
|
After Width: | Height: | Size: 5.9 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="218.06666564941406" height="35" viewBox="0 0 218.06666564941406 35"><rect width="103" height="35" fill="#31C4F3"/><rect x="103" width="115.06666564941406" height="35" fill="#389AD5"/><text x="51.5" y="21.5" font-size="12" font-family="'Roboto', sans-serif" fill="#FFFFFF" text-anchor="middle" letter-spacing="2">COMPILES</text><text x="160.53333282470703" y="21.5" font-size="12" font-family="'Montserrat', sans-serif" fill="#FFFFFF" text-anchor="middle" font-weight="900" letter-spacing="2">SOMETIMES</text></svg>
|
||||
|
After Width: | Height: | Size: 561 B |
|
After Width: | Height: | Size: 5.2 KiB |
|
After Width: | Height: | Size: 9.2 KiB |
|
After Width: | Height: | Size: 23 KiB |
@@ -0,0 +1,31 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="258.708" height="35.059" viewBox="0 0 258.708 35.059">
|
||||
<title>made-with-crayons</title>
|
||||
<g>
|
||||
<rect x="72.75" width="185.958" height="35" style="fill: #5593c8"/>
|
||||
<rect y="0.029" width="112.375" height="35" style="fill: #a7bfc1"/>
|
||||
<g>
|
||||
<path d="M131.225,15.814a2.168,2.168,0,0,0-1.062-.306,1.871,1.871,0,0,0-1.02.288,2.014,2.014,0,0,0-.72.8,2.621,2.621,0,0,0,0,2.292,2.057,2.057,0,0,0,.72.8,1.839,1.839,0,0,0,1.02.294,2.371,2.371,0,0,0,1.026-.264,3.351,3.351,0,0,0,.978-.72l1.44,1.536a5.109,5.109,0,0,1-1.65,1.188,4.591,4.591,0,0,1-4.188-.126,4.125,4.125,0,0,1-1.59-1.578,4.461,4.461,0,0,1-.576-2.255,4.254,4.254,0,0,1,.588-2.214A4.178,4.178,0,0,1,127.811,14a4.838,4.838,0,0,1,4.212-.156,4.631,4.631,0,0,1,1.584,1.092l-1.44,1.716A3.017,3.017,0,0,0,131.225,15.814Z" style="fill: #fff"/>
|
||||
<path d="M141.935,22l-1.116-2.269H139.5V22H137V13.588h3.924a3.967,3.967,0,0,1,2.622.78,2.721,2.721,0,0,1,.93,2.208,3.324,3.324,0,0,1-.366,1.6,2.716,2.716,0,0,1-1.05,1.074l1.7,2.748ZM139.5,17.812h1.428a1.192,1.192,0,0,0,.87-.3,1.157,1.157,0,0,0,.306-.864,1.12,1.12,0,0,0-.306-.846,1.207,1.207,0,0,0-.87-.294H139.5Z" style="fill: #fff"/>
|
||||
<path d="M154.5,22l-.492-1.345h-3.4l-.5,1.345h-2.568l3.588-8.412h2.568L157.163,22Zm-3.192-3.168h2.04l-1.008-2.748Z" style="fill: #fff"/>
|
||||
<path d="M167.519,13.588l-3.024,5.748V22H162V19.384l-3.084-5.8h2.5l1.836,3.432,1.788-3.432Z" style="fill: #fff"/>
|
||||
<path d="M177.161,14A4.188,4.188,0,0,1,178.8,15.55a4.239,4.239,0,0,1,.594,2.226,4.323,4.323,0,0,1-.594,2.25,4.2,4.2,0,0,1-1.644,1.572,5.123,5.123,0,0,1-4.7,0,4.214,4.214,0,0,1-1.638-1.572,4.327,4.327,0,0,1-.594-2.25,4.244,4.244,0,0,1,.594-2.226A4.2,4.2,0,0,1,172.463,14a5.174,5.174,0,0,1,4.7,0Zm-3.336,1.812a2.178,2.178,0,0,0-.756.822,2.4,2.4,0,0,0-.282,1.158,2.434,2.434,0,0,0,.282,1.164,2.215,2.215,0,0,0,.756.834,1.855,1.855,0,0,0,1.026.306,1.778,1.778,0,0,0,1-.306,2.126,2.126,0,0,0,.726-.828,2.559,2.559,0,0,0,.264-1.17,2.533,2.533,0,0,0-.264-1.158,2.094,2.094,0,0,0-.72-.822,1.8,1.8,0,0,0-1.008-.3A1.882,1.882,0,0,0,173.825,15.808Z" style="fill: #fff"/>
|
||||
<path d="M188.675,13.588h2.28V22h-2.124l-3.564-4.68V22h-2.292V13.588h2.136l3.564,4.692Z" style="fill: #fff"/>
|
||||
<path d="M199.582,15.628a4.26,4.26,0,0,0-1.32-.276.9.9,0,0,0-.51.126.414.414,0,0,0-.186.366.573.573,0,0,0,.36.522,6.372,6.372,0,0,0,1.14.4,11.024,11.024,0,0,1,1.464.51,2.7,2.7,0,0,1,1,.786,2.151,2.151,0,0,1,.426,1.392,2.369,2.369,0,0,1-.462,1.481,2.769,2.769,0,0,1-1.248.906,4.892,4.892,0,0,1-1.758.3,6.744,6.744,0,0,1-2.166-.366,6.019,6.019,0,0,1-1.878-1l.936-1.9a5.6,5.6,0,0,0,1.554.93,4.277,4.277,0,0,0,1.578.378,1.121,1.121,0,0,0,.636-.155.508.508,0,0,0,.228-.444.581.581,0,0,0-.372-.534,6.335,6.335,0,0,0-1.152-.39,10.531,10.531,0,0,1-1.452-.474,2.575,2.575,0,0,1-1-.762,2.081,2.081,0,0,1-.42-1.356,2.386,2.386,0,0,1,.432-1.422,2.724,2.724,0,0,1,1.218-.93,4.77,4.77,0,0,1,1.83-.324,6.76,6.76,0,0,1,1.884.27,6.245,6.245,0,0,1,1.632.714l-.924,1.92A8.056,8.056,0,0,0,199.582,15.628Z" style="fill: #fff"/>
|
||||
</g>
|
||||
<g>
|
||||
<path d="M15.789,13.469l2.461,6.539,2.455-6.539h1.916V22H21.145V19.188l.146-3.762L18.771,22H17.711L15.2,15.432l.146,3.756V22H13.867V13.469Z" style="fill: #fff"/>
|
||||
<path d="M31.894,20.014h-3.3L27.9,22H26.357l3.223-8.531h1.33L34.138,22H32.591Zm-2.889-1.2h2.473l-1.236-3.539Z" style="fill: #fff"/>
|
||||
<path d="M37.745,22V13.469h2.52a3.952,3.952,0,0,1,2.007.5,3.436,3.436,0,0,1,1.356,1.43,4.538,4.538,0,0,1,.48,2.121v.428a4.519,4.519,0,0,1-.483,2.133A3.4,3.4,0,0,1,42.248,21.5,4.135,4.135,0,0,1,40.2,22Zm1.482-7.336V20.8h.967a2.229,2.229,0,0,0,1.79-.729,3.165,3.165,0,0,0,.636-2.09v-.475a3.251,3.251,0,0,0-.6-2.117,2.142,2.142,0,0,0-1.752-.731Z" style="fill: #fff"/>
|
||||
<path d="M53.211,18.191h-3.5V20.8h4.1V22H48.225V13.469h5.537v1.2H49.707V17.02h3.5Z" style="fill: #fff"/>
|
||||
<path d="M69.97,19.891l1.313-6.422h1.471L70.784,22H69.366l-1.623-6.229L66.085,22H64.661l-1.969-8.531h1.471l1.324,6.41,1.629-6.41h1.242Z" style="fill: #fff"/>
|
||||
<path d="M78.041,22H76.564V13.469h1.477Z" style="fill: #fff"/>
|
||||
<path d="M88.5,14.664h-2.66V22H84.367V14.664H81.73v-1.2H88.5Z" style="fill: #fff"/>
|
||||
<path d="M99.03,22H97.554V18.215H93.739V22H92.257V13.469h1.482V17.02h3.814V13.469H99.03Z" style="fill: #fff"/>
|
||||
</g>
|
||||
<g>
|
||||
<polygon points="229.048 13.138 245.607 13.138 245.607 21.862 229.031 21.862 229.048 13.138" style="fill: #fff"/>
|
||||
<rect x="223.736" y="13.138" width="3.472" height="8.725" style="fill: #fff"/>
|
||||
<polygon points="221.628 21.602 215.375 17.502 221.626 13.4 221.628 21.602" style="fill: #fff"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.5 KiB |
|
After Width: | Height: | Size: 7.3 KiB |
|
After Width: | Height: | Size: 6.1 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 7.1 KiB |
|
After Width: | Height: | Size: 12 KiB |
@@ -101,7 +101,7 @@ jobs:
|
||||
# Check if a workflow file would be modified by the merge (permissions prevent pushes if so)
|
||||
latest_workflow_commit=$(git log -n 1 --pretty=format:"%H" upstream/$BASE_BRANCH -- .github/workflows)
|
||||
if ! git branch --contains $latest_workflow_commit | grep -q "$(git rev-parse --abbrev-ref HEAD)"; then
|
||||
gh pr comment ${{ github.event.issue.html_url }} --body "GitHub Actions can not push to this branch as workflow files have been changed since your branch was last updated. Please update your branch past https://github.com/ParadiseSS13/Paradise/commit/$latest_workflow_commit before using this command again."#
|
||||
gh pr comment ${{ github.event.issue.html_url }} --body "GitHub Actions can not push to this branch as workflow files have been changed since your branch was last updated. Please update your branch past https://github.com/ParadiseSS13/Paradise/commit/$latest_workflow_commit before using this command again."
|
||||
echo "FAIL_NOTIFIED=true" >> "$GITHUB_ENV"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -43,4 +43,7 @@ jobs:
|
||||
git pull origin master
|
||||
git commit -m "NanoMap Auto-Update (`date`)" -a || true
|
||||
git push -f -u origin nanomap-render
|
||||
gh pr create -t "Automatic NanoMap Update" -b "This pull request updates the server NanoMaps. Please review the diff images before merging." -l "NanoMaps" -H "nanomap-render" -B "master"
|
||||
result=$(gh pr create -t "Automatic NanoMap Update" -b "This pull request updates the server NanoMaps. Please review the diff images before merging." -l "NanoMaps" -H "nanomap-render" -B "master")
|
||||
if echo "$result" | grep -q "No commits between master and nanomap-render"
|
||||
echo "No NanoMaps update required, skipping."
|
||||
exit 78
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
version: 1
|
||||
# The BYOND version to use
|
||||
# Must be interpreted as a string, keep quoted
|
||||
byond: "515.1620"
|
||||
byond: '515.1633'
|
||||
# Folders to create in "<instance_path>/Configuration/GameStaticFiles/"
|
||||
static_files:
|
||||
# Config directory should be static
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
Paradise
|
||||
Copyright (C) 2010-2016 Paradise, Baystation12, Goonstation and tgstation13.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
|
||||
Any files located in the Paradise/goon, Paradise/icons/goonstation, or Paradise/sound/goonstation directories, or any subdirectories of mentioned directories are licensed under the Creative Commons 3.0 BY-NC-SA license (https://creativecommons.org/licenses/by-nc-sa/3.0) from Goonstation.
|
||||
@@ -0,0 +1,361 @@
|
||||
Creative Commons Legal Code
|
||||
|
||||
Attribution-NonCommercial-ShareAlike 3.0 Unported
|
||||
|
||||
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
|
||||
LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
|
||||
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
|
||||
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
|
||||
REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR
|
||||
DAMAGES RESULTING FROM ITS USE.
|
||||
|
||||
License
|
||||
|
||||
THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
|
||||
COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
|
||||
COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
|
||||
AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
|
||||
|
||||
BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE
|
||||
TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY
|
||||
BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS
|
||||
CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND
|
||||
CONDITIONS.
|
||||
|
||||
1. Definitions
|
||||
|
||||
a. "Adaptation" means a work based upon the Work, or upon the Work and
|
||||
other pre-existing works, such as a translation, adaptation,
|
||||
derivative work, arrangement of music or other alterations of a
|
||||
literary or artistic work, or phonogram or performance and includes
|
||||
cinematographic adaptations or any other form in which the Work may be
|
||||
recast, transformed, or adapted including in any form recognizably
|
||||
derived from the original, except that a work that constitutes a
|
||||
Collection will not be considered an Adaptation for the purpose of
|
||||
this License. For the avoidance of doubt, where the Work is a musical
|
||||
work, performance or phonogram, the synchronization of the Work in
|
||||
timed-relation with a moving image ("synching") will be considered an
|
||||
Adaptation for the purpose of this License.
|
||||
b. "Collection" means a collection of literary or artistic works, such as
|
||||
encyclopedias and anthologies, or performances, phonograms or
|
||||
broadcasts, or other works or subject matter other than works listed
|
||||
in Section 1(g) below, which, by reason of the selection and
|
||||
arrangement of their contents, constitute intellectual creations, in
|
||||
which the Work is included in its entirety in unmodified form along
|
||||
with one or more other contributions, each constituting separate and
|
||||
independent works in themselves, which together are assembled into a
|
||||
collective whole. A work that constitutes a Collection will not be
|
||||
considered an Adaptation (as defined above) for the purposes of this
|
||||
License.
|
||||
c. "Distribute" means to make available to the public the original and
|
||||
copies of the Work or Adaptation, as appropriate, through sale or
|
||||
other transfer of ownership.
|
||||
d. "License Elements" means the following high-level license attributes
|
||||
as selected by Licensor and indicated in the title of this License:
|
||||
Attribution, Noncommercial, ShareAlike.
|
||||
e. "Licensor" means the individual, individuals, entity or entities that
|
||||
offer(s) the Work under the terms of this License.
|
||||
f. "Original Author" means, in the case of a literary or artistic work,
|
||||
the individual, individuals, entity or entities who created the Work
|
||||
or if no individual or entity can be identified, the publisher; and in
|
||||
addition (i) in the case of a performance the actors, singers,
|
||||
musicians, dancers, and other persons who act, sing, deliver, declaim,
|
||||
play in, interpret or otherwise perform literary or artistic works or
|
||||
expressions of folklore; (ii) in the case of a phonogram the producer
|
||||
being the person or legal entity who first fixes the sounds of a
|
||||
performance or other sounds; and, (iii) in the case of broadcasts, the
|
||||
organization that transmits the broadcast.
|
||||
g. "Work" means the literary and/or artistic work offered under the terms
|
||||
of this License including without limitation any production in the
|
||||
literary, scientific and artistic domain, whatever may be the mode or
|
||||
form of its expression including digital form, such as a book,
|
||||
pamphlet and other writing; a lecture, address, sermon or other work
|
||||
of the same nature; a dramatic or dramatico-musical work; a
|
||||
choreographic work or entertainment in dumb show; a musical
|
||||
composition with or without words; a cinematographic work to which are
|
||||
assimilated works expressed by a process analogous to cinematography;
|
||||
a work of drawing, painting, architecture, sculpture, engraving or
|
||||
lithography; a photographic work to which are assimilated works
|
||||
expressed by a process analogous to photography; a work of applied
|
||||
art; an illustration, map, plan, sketch or three-dimensional work
|
||||
relative to geography, topography, architecture or science; a
|
||||
performance; a broadcast; a phonogram; a compilation of data to the
|
||||
extent it is protected as a copyrightable work; or a work performed by
|
||||
a variety or circus performer to the extent it is not otherwise
|
||||
considered a literary or artistic work.
|
||||
h. "You" means an individual or entity exercising rights under this
|
||||
License who has not previously violated the terms of this License with
|
||||
respect to the Work, or who has received express permission from the
|
||||
Licensor to exercise rights under this License despite a previous
|
||||
violation.
|
||||
i. "Publicly Perform" means to perform public recitations of the Work and
|
||||
to communicate to the public those public recitations, by any means or
|
||||
process, including by wire or wireless means or public digital
|
||||
performances; to make available to the public Works in such a way that
|
||||
members of the public may access these Works from a place and at a
|
||||
place individually chosen by them; to perform the Work to the public
|
||||
by any means or process and the communication to the public of the
|
||||
performances of the Work, including by public digital performance; to
|
||||
broadcast and rebroadcast the Work by any means including signs,
|
||||
sounds or images.
|
||||
j. "Reproduce" means to make copies of the Work by any means including
|
||||
without limitation by sound or visual recordings and the right of
|
||||
fixation and reproducing fixations of the Work, including storage of a
|
||||
protected performance or phonogram in digital form or other electronic
|
||||
medium.
|
||||
|
||||
2. Fair Dealing Rights. Nothing in this License is intended to reduce,
|
||||
limit, or restrict any uses free from copyright or rights arising from
|
||||
limitations or exceptions that are provided for in connection with the
|
||||
copyright protection under copyright law or other applicable laws.
|
||||
|
||||
3. License Grant. Subject to the terms and conditions of this License,
|
||||
Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
|
||||
perpetual (for the duration of the applicable copyright) license to
|
||||
exercise the rights in the Work as stated below:
|
||||
|
||||
a. to Reproduce the Work, to incorporate the Work into one or more
|
||||
Collections, and to Reproduce the Work as incorporated in the
|
||||
Collections;
|
||||
b. to create and Reproduce Adaptations provided that any such Adaptation,
|
||||
including any translation in any medium, takes reasonable steps to
|
||||
clearly label, demarcate or otherwise identify that changes were made
|
||||
to the original Work. For example, a translation could be marked "The
|
||||
original work was translated from English to Spanish," or a
|
||||
modification could indicate "The original work has been modified.";
|
||||
c. to Distribute and Publicly Perform the Work including as incorporated
|
||||
in Collections; and,
|
||||
d. to Distribute and Publicly Perform Adaptations.
|
||||
|
||||
The above rights may be exercised in all media and formats whether now
|
||||
known or hereafter devised. The above rights include the right to make
|
||||
such modifications as are technically necessary to exercise the rights in
|
||||
other media and formats. Subject to Section 8(f), all rights not expressly
|
||||
granted by Licensor are hereby reserved, including but not limited to the
|
||||
rights described in Section 4(e).
|
||||
|
||||
4. Restrictions. The license granted in Section 3 above is expressly made
|
||||
subject to and limited by the following restrictions:
|
||||
|
||||
a. You may Distribute or Publicly Perform the Work only under the terms
|
||||
of this License. You must include a copy of, or the Uniform Resource
|
||||
Identifier (URI) for, this License with every copy of the Work You
|
||||
Distribute or Publicly Perform. You may not offer or impose any terms
|
||||
on the Work that restrict the terms of this License or the ability of
|
||||
the recipient of the Work to exercise the rights granted to that
|
||||
recipient under the terms of the License. You may not sublicense the
|
||||
Work. You must keep intact all notices that refer to this License and
|
||||
to the disclaimer of warranties with every copy of the Work You
|
||||
Distribute or Publicly Perform. When You Distribute or Publicly
|
||||
Perform the Work, You may not impose any effective technological
|
||||
measures on the Work that restrict the ability of a recipient of the
|
||||
Work from You to exercise the rights granted to that recipient under
|
||||
the terms of the License. This Section 4(a) applies to the Work as
|
||||
incorporated in a Collection, but this does not require the Collection
|
||||
apart from the Work itself to be made subject to the terms of this
|
||||
License. If You create a Collection, upon notice from any Licensor You
|
||||
must, to the extent practicable, remove from the Collection any credit
|
||||
as required by Section 4(d), as requested. If You create an
|
||||
Adaptation, upon notice from any Licensor You must, to the extent
|
||||
practicable, remove from the Adaptation any credit as required by
|
||||
Section 4(d), as requested.
|
||||
b. You may Distribute or Publicly Perform an Adaptation only under: (i)
|
||||
the terms of this License; (ii) a later version of this License with
|
||||
the same License Elements as this License; (iii) a Creative Commons
|
||||
jurisdiction license (either this or a later license version) that
|
||||
contains the same License Elements as this License (e.g.,
|
||||
Attribution-NonCommercial-ShareAlike 3.0 US) ("Applicable License").
|
||||
You must include a copy of, or the URI, for Applicable License with
|
||||
every copy of each Adaptation You Distribute or Publicly Perform. You
|
||||
may not offer or impose any terms on the Adaptation that restrict the
|
||||
terms of the Applicable License or the ability of the recipient of the
|
||||
Adaptation to exercise the rights granted to that recipient under the
|
||||
terms of the Applicable License. You must keep intact all notices that
|
||||
refer to the Applicable License and to the disclaimer of warranties
|
||||
with every copy of the Work as included in the Adaptation You
|
||||
Distribute or Publicly Perform. When You Distribute or Publicly
|
||||
Perform the Adaptation, You may not impose any effective technological
|
||||
measures on the Adaptation that restrict the ability of a recipient of
|
||||
the Adaptation from You to exercise the rights granted to that
|
||||
recipient under the terms of the Applicable License. This Section 4(b)
|
||||
applies to the Adaptation as incorporated in a Collection, but this
|
||||
does not require the Collection apart from the Adaptation itself to be
|
||||
made subject to the terms of the Applicable License.
|
||||
c. You may not exercise any of the rights granted to You in Section 3
|
||||
above in any manner that is primarily intended for or directed toward
|
||||
commercial advantage or private monetary compensation. The exchange of
|
||||
the Work for other copyrighted works by means of digital file-sharing
|
||||
or otherwise shall not be considered to be intended for or directed
|
||||
toward commercial advantage or private monetary compensation, provided
|
||||
there is no payment of any monetary compensation in con-nection with
|
||||
the exchange of copyrighted works.
|
||||
d. If You Distribute, or Publicly Perform the Work or any Adaptations or
|
||||
Collections, You must, unless a request has been made pursuant to
|
||||
Section 4(a), keep intact all copyright notices for the Work and
|
||||
provide, reasonable to the medium or means You are utilizing: (i) the
|
||||
name of the Original Author (or pseudonym, if applicable) if supplied,
|
||||
and/or if the Original Author and/or Licensor designate another party
|
||||
or parties (e.g., a sponsor institute, publishing entity, journal) for
|
||||
attribution ("Attribution Parties") in Licensor's copyright notice,
|
||||
terms of service or by other reasonable means, the name of such party
|
||||
or parties; (ii) the title of the Work if supplied; (iii) to the
|
||||
extent reasonably practicable, the URI, if any, that Licensor
|
||||
specifies to be associated with the Work, unless such URI does not
|
||||
refer to the copyright notice or licensing information for the Work;
|
||||
and, (iv) consistent with Section 3(b), in the case of an Adaptation,
|
||||
a credit identifying the use of the Work in the Adaptation (e.g.,
|
||||
"French translation of the Work by Original Author," or "Screenplay
|
||||
based on original Work by Original Author"). The credit required by
|
||||
this Section 4(d) may be implemented in any reasonable manner;
|
||||
provided, however, that in the case of a Adaptation or Collection, at
|
||||
a minimum such credit will appear, if a credit for all contributing
|
||||
authors of the Adaptation or Collection appears, then as part of these
|
||||
credits and in a manner at least as prominent as the credits for the
|
||||
other contributing authors. For the avoidance of doubt, You may only
|
||||
use the credit required by this Section for the purpose of attribution
|
||||
in the manner set out above and, by exercising Your rights under this
|
||||
License, You may not implicitly or explicitly assert or imply any
|
||||
connection with, sponsorship or endorsement by the Original Author,
|
||||
Licensor and/or Attribution Parties, as appropriate, of You or Your
|
||||
use of the Work, without the separate, express prior written
|
||||
permission of the Original Author, Licensor and/or Attribution
|
||||
Parties.
|
||||
e. For the avoidance of doubt:
|
||||
|
||||
i. Non-waivable Compulsory License Schemes. In those jurisdictions in
|
||||
which the right to collect royalties through any statutory or
|
||||
compulsory licensing scheme cannot be waived, the Licensor
|
||||
reserves the exclusive right to collect such royalties for any
|
||||
exercise by You of the rights granted under this License;
|
||||
ii. Waivable Compulsory License Schemes. In those jurisdictions in
|
||||
which the right to collect royalties through any statutory or
|
||||
compulsory licensing scheme can be waived, the Licensor reserves
|
||||
the exclusive right to collect such royalties for any exercise by
|
||||
You of the rights granted under this License if Your exercise of
|
||||
such rights is for a purpose or use which is otherwise than
|
||||
noncommercial as permitted under Section 4(c) and otherwise waives
|
||||
the right to collect royalties through any statutory or compulsory
|
||||
licensing scheme; and,
|
||||
iii. Voluntary License Schemes. The Licensor reserves the right to
|
||||
collect royalties, whether individually or, in the event that the
|
||||
Licensor is a member of a collecting society that administers
|
||||
voluntary licensing schemes, via that society, from any exercise
|
||||
by You of the rights granted under this License that is for a
|
||||
purpose or use which is otherwise than noncommercial as permitted
|
||||
under Section 4(c).
|
||||
f. Except as otherwise agreed in writing by the Licensor or as may be
|
||||
otherwise permitted by applicable law, if You Reproduce, Distribute or
|
||||
Publicly Perform the Work either by itself or as part of any
|
||||
Adaptations or Collections, You must not distort, mutilate, modify or
|
||||
take other derogatory action in relation to the Work which would be
|
||||
prejudicial to the Original Author's honor or reputation. Licensor
|
||||
agrees that in those jurisdictions (e.g. Japan), in which any exercise
|
||||
of the right granted in Section 3(b) of this License (the right to
|
||||
make Adaptations) would be deemed to be a distortion, mutilation,
|
||||
modification or other derogatory action prejudicial to the Original
|
||||
Author's honor and reputation, the Licensor will waive or not assert,
|
||||
as appropriate, this Section, to the fullest extent permitted by the
|
||||
applicable national law, to enable You to reasonably exercise Your
|
||||
right under Section 3(b) of this License (right to make Adaptations)
|
||||
but not otherwise.
|
||||
|
||||
5. Representations, Warranties and Disclaimer
|
||||
|
||||
UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING AND TO THE
|
||||
FULLEST EXTENT PERMITTED BY APPLICABLE LAW, LICENSOR OFFERS THE WORK AS-IS
|
||||
AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE
|
||||
WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT
|
||||
LIMITATION, WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS,
|
||||
ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT
|
||||
DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED
|
||||
WARRANTIES, SO THIS EXCLUSION MAY NOT APPLY TO YOU.
|
||||
|
||||
6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE
|
||||
LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR
|
||||
ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES
|
||||
ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS
|
||||
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
7. Termination
|
||||
|
||||
a. This License and the rights granted hereunder will terminate
|
||||
automatically upon any breach by You of the terms of this License.
|
||||
Individuals or entities who have received Adaptations or Collections
|
||||
from You under this License, however, will not have their licenses
|
||||
terminated provided such individuals or entities remain in full
|
||||
compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will
|
||||
survive any termination of this License.
|
||||
b. Subject to the above terms and conditions, the license granted here is
|
||||
perpetual (for the duration of the applicable copyright in the Work).
|
||||
Notwithstanding the above, Licensor reserves the right to release the
|
||||
Work under different license terms or to stop distributing the Work at
|
||||
any time; provided, however that any such election will not serve to
|
||||
withdraw this License (or any other license that has been, or is
|
||||
required to be, granted under the terms of this License), and this
|
||||
License will continue in full force and effect unless terminated as
|
||||
stated above.
|
||||
|
||||
8. Miscellaneous
|
||||
|
||||
a. Each time You Distribute or Publicly Perform the Work or a Collection,
|
||||
the Licensor offers to the recipient a license to the Work on the same
|
||||
terms and conditions as the license granted to You under this License.
|
||||
b. Each time You Distribute or Publicly Perform an Adaptation, Licensor
|
||||
offers to the recipient a license to the original Work on the same
|
||||
terms and conditions as the license granted to You under this License.
|
||||
c. If any provision of this License is invalid or unenforceable under
|
||||
applicable law, it shall not affect the validity or enforceability of
|
||||
the remainder of the terms of this License, and without further action
|
||||
by the parties to this agreement, such provision shall be reformed to
|
||||
the minimum extent necessary to make such provision valid and
|
||||
enforceable.
|
||||
d. No term or provision of this License shall be deemed waived and no
|
||||
breach consented to unless such waiver or consent shall be in writing
|
||||
and signed by the party to be charged with such waiver or consent.
|
||||
e. This License constitutes the entire agreement between the parties with
|
||||
respect to the Work licensed here. There are no understandings,
|
||||
agreements or representations with respect to the Work not specified
|
||||
here. Licensor shall not be bound by any additional provisions that
|
||||
may appear in any communication from You. This License may not be
|
||||
modified without the mutual written agreement of the Licensor and You.
|
||||
f. The rights granted under, and the subject matter referenced, in this
|
||||
License were drafted utilizing the terminology of the Berne Convention
|
||||
for the Protection of Literary and Artistic Works (as amended on
|
||||
September 28, 1979), the Rome Convention of 1961, the WIPO Copyright
|
||||
Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996
|
||||
and the Universal Copyright Convention (as revised on July 24, 1971).
|
||||
These rights and subject matter take effect in the relevant
|
||||
jurisdiction in which the License terms are sought to be enforced
|
||||
according to the corresponding provisions of the implementation of
|
||||
those treaty provisions in the applicable national law. If the
|
||||
standard suite of rights granted under applicable copyright law
|
||||
includes additional rights not granted under this License, such
|
||||
additional rights are deemed to be included in the License; this
|
||||
License is not intended to restrict the license of any rights under
|
||||
applicable law.
|
||||
|
||||
|
||||
Creative Commons Notice
|
||||
|
||||
Creative Commons is not a party to this License, and makes no warranty
|
||||
whatsoever in connection with the Work. Creative Commons will not be
|
||||
liable to You or any party on any legal theory for any damages
|
||||
whatsoever, including without limitation any general, special,
|
||||
incidental or consequential damages arising in connection to this
|
||||
license. Notwithstanding the foregoing two (2) sentences, if Creative
|
||||
Commons has expressly identified itself as the Licensor hereunder, it
|
||||
shall have all rights and obligations of Licensor.
|
||||
|
||||
Except for the limited purpose of indicating to the public that the
|
||||
Work is licensed under the CCPL, Creative Commons does not authorize
|
||||
the use by either party of the trademark "Creative Commons" or any
|
||||
related trademark or logo of Creative Commons without the prior
|
||||
written consent of Creative Commons. Any permitted use will be in
|
||||
compliance with Creative Commons' then-current trademark usage
|
||||
guidelines, as may be published on its website or otherwise made
|
||||
available upon request from time to time. For the avoidance of doubt,
|
||||
this trademark restriction does not form part of this License.
|
||||
|
||||
Creative Commons may be contacted at https://creativecommons.org/.
|
||||
|
||||
@@ -1,60 +0,0 @@
|
||||
THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
|
||||
|
||||
BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
|
||||
|
||||
1. Definitions
|
||||
|
||||
"Adaptation" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered an Adaptation for the purpose of this License.
|
||||
"Collection" means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(g) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined above) for the purposes of this License.
|
||||
"Distribute" means to make available to the public the original and copies of the Work or Adaptation, as appropriate, through sale or other transfer of ownership.
|
||||
"License Elements" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, Noncommercial, ShareAlike.
|
||||
"Licensor" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License.
|
||||
"Original Author" means, in the case of a literary or artistic work, the individual, individuals, entity or entities who created the Work or if no individual or entity can be identified, the publisher; and in addition (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in, interpret or otherwise perform literary or artistic works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal entity who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organization that transmits the broadcast.
|
||||
"Work" means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary, scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or artistic work.
|
||||
"You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation.
|
||||
"Publicly Perform" means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images.
|
||||
"Reproduce" means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium.
|
||||
|
||||
2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws.
|
||||
|
||||
3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:
|
||||
|
||||
to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections;
|
||||
to create and Reproduce Adaptations provided that any such Adaptation, including any translation in any medium, takes reasonable steps to clearly label, demarcate or otherwise identify that changes were made to the original Work. For example, a translation could be marked "The original work was translated from English to Spanish," or a modification could indicate "The original work has been modified.";
|
||||
to Distribute and Publicly Perform the Work including as incorporated in Collections; and,
|
||||
to Distribute and Publicly Perform Adaptations.
|
||||
|
||||
The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. Subject to Section 8(f), all rights not expressly granted by Licensor are hereby reserved, including but not limited to the rights described in Section 4(e).
|
||||
|
||||
4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:
|
||||
|
||||
You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required by Section 4(d), as requested. If You create an Adaptation, upon notice from any Licensor You must, to the extent practicable, remove from the Adaptation any credit as required by Section 4(d), as requested.
|
||||
You may Distribute or Publicly Perform an Adaptation only under: (i) the terms of this License; (ii) a later version of this License with the same License Elements as this License; (iii) a Creative Commons jurisdiction license (either this or a later license version) that contains the same License Elements as this License (e.g., Attribution-NonCommercial-ShareAlike 3.0 US) ("Applicable License"). You must include a copy of, or the URI, for Applicable License with every copy of each Adaptation You Distribute or Publicly Perform. You may not offer or impose any terms on the Adaptation that restrict the terms of the Applicable License or the ability of the recipient of the Adaptation to exercise the rights granted to that recipient under the terms of the Applicable License. You must keep intact all notices that refer to the Applicable License and to the disclaimer of warranties with every copy of the Work as included in the Adaptation You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Adaptation, You may not impose any effective technological measures on the Adaptation that restrict the ability of a recipient of the Adaptation from You to exercise the rights granted to that recipient under the terms of the Applicable License. This Section 4(b) applies to the Adaptation as incorporated in a Collection, but this does not require the Collection apart from the Adaptation itself to be made subject to the terms of the Applicable License.
|
||||
You may not exercise any of the rights granted to You in Section 3 above in any manner that is primarily intended for or directed toward commercial advantage or private monetary compensation. The exchange of the Work for other copyrighted works by means of digital file-sharing or otherwise shall not be considered to be intended for or directed toward commercial advantage or private monetary compensation, provided there is no payment of any monetary compensation in con-nection with the exchange of copyrighted works.
|
||||
If You Distribute, or Publicly Perform the Work or any Adaptations or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing entity, journal) for attribution ("Attribution Parties") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and, (iv) consistent with Section 3(b), in the case of an Adaptation, a credit identifying the use of the Work in the Adaptation (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). The credit required by this Section 4(d) may be implemented in any reasonable manner; provided, however, that in the case of a Adaptation or Collection, at a minimum such credit will appear, if a credit for all contributing authors of the Adaptation or Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties.
|
||||
|
||||
For the avoidance of doubt:
|
||||
Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License;
|
||||
Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License if Your exercise of such rights is for a purpose or use which is otherwise than noncommercial as permitted under Section 4(c) and otherwise waives the right to collect royalties through any statutory or compulsory licensing scheme; and,
|
||||
Voluntary License Schemes. The Licensor reserves the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License that is for a purpose or use which is otherwise than noncommercial as permitted under Section 4(c).
|
||||
Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Adaptations or Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the Original Author's honor or reputation. Licensor agrees that in those jurisdictions (e.g. Japan), in which any exercise of the right granted in Section 3(b) of this License (the right to make Adaptations) would be deemed to be a distortion, mutilation, modification or other derogatory action prejudicial to the Original Author's honor and reputation, the Licensor will waive or not assert, as appropriate, this Section, to the fullest extent permitted by the applicable national law, to enable You to reasonably exercise Your right under Section 3(b) of this License (right to make Adaptations) but not otherwise.
|
||||
|
||||
5. Representations, Warranties and Disclaimer
|
||||
|
||||
UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING AND TO THE FULLEST EXTENT PERMITTED BY APPLICABLE LAW, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO THIS EXCLUSION MAY NOT APPLY TO YOU.
|
||||
|
||||
6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
7. Termination
|
||||
|
||||
This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Adaptations or Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.
|
||||
Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.
|
||||
|
||||
8. Miscellaneous
|
||||
|
||||
Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License.
|
||||
Each time You Distribute or Publicly Perform an Adaptation, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License.
|
||||
If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
|
||||
No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent.
|
||||
This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You.
|
||||
The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law.
|
||||
@@ -0,0 +1,359 @@
|
||||
Creative Commons Legal Code
|
||||
|
||||
Attribution-ShareAlike 3.0 Unported
|
||||
|
||||
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
|
||||
LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
|
||||
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
|
||||
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
|
||||
REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR
|
||||
DAMAGES RESULTING FROM ITS USE.
|
||||
|
||||
License
|
||||
|
||||
THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
|
||||
COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
|
||||
COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
|
||||
AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
|
||||
|
||||
BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE
|
||||
TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY
|
||||
BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS
|
||||
CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND
|
||||
CONDITIONS.
|
||||
|
||||
1. Definitions
|
||||
|
||||
a. "Adaptation" means a work based upon the Work, or upon the Work and
|
||||
other pre-existing works, such as a translation, adaptation,
|
||||
derivative work, arrangement of music or other alterations of a
|
||||
literary or artistic work, or phonogram or performance and includes
|
||||
cinematographic adaptations or any other form in which the Work may be
|
||||
recast, transformed, or adapted including in any form recognizably
|
||||
derived from the original, except that a work that constitutes a
|
||||
Collection will not be considered an Adaptation for the purpose of
|
||||
this License. For the avoidance of doubt, where the Work is a musical
|
||||
work, performance or phonogram, the synchronization of the Work in
|
||||
timed-relation with a moving image ("synching") will be considered an
|
||||
Adaptation for the purpose of this License.
|
||||
b. "Collection" means a collection of literary or artistic works, such as
|
||||
encyclopedias and anthologies, or performances, phonograms or
|
||||
broadcasts, or other works or subject matter other than works listed
|
||||
in Section 1(f) below, which, by reason of the selection and
|
||||
arrangement of their contents, constitute intellectual creations, in
|
||||
which the Work is included in its entirety in unmodified form along
|
||||
with one or more other contributions, each constituting separate and
|
||||
independent works in themselves, which together are assembled into a
|
||||
collective whole. A work that constitutes a Collection will not be
|
||||
considered an Adaptation (as defined below) for the purposes of this
|
||||
License.
|
||||
c. "Creative Commons Compatible License" means a license that is listed
|
||||
at https://creativecommons.org/compatiblelicenses that has been
|
||||
approved by Creative Commons as being essentially equivalent to this
|
||||
License, including, at a minimum, because that license: (i) contains
|
||||
terms that have the same purpose, meaning and effect as the License
|
||||
Elements of this License; and, (ii) explicitly permits the relicensing
|
||||
of adaptations of works made available under that license under this
|
||||
License or a Creative Commons jurisdiction license with the same
|
||||
License Elements as this License.
|
||||
d. "Distribute" means to make available to the public the original and
|
||||
copies of the Work or Adaptation, as appropriate, through sale or
|
||||
other transfer of ownership.
|
||||
e. "License Elements" means the following high-level license attributes
|
||||
as selected by Licensor and indicated in the title of this License:
|
||||
Attribution, ShareAlike.
|
||||
f. "Licensor" means the individual, individuals, entity or entities that
|
||||
offer(s) the Work under the terms of this License.
|
||||
g. "Original Author" means, in the case of a literary or artistic work,
|
||||
the individual, individuals, entity or entities who created the Work
|
||||
or if no individual or entity can be identified, the publisher; and in
|
||||
addition (i) in the case of a performance the actors, singers,
|
||||
musicians, dancers, and other persons who act, sing, deliver, declaim,
|
||||
play in, interpret or otherwise perform literary or artistic works or
|
||||
expressions of folklore; (ii) in the case of a phonogram the producer
|
||||
being the person or legal entity who first fixes the sounds of a
|
||||
performance or other sounds; and, (iii) in the case of broadcasts, the
|
||||
organization that transmits the broadcast.
|
||||
h. "Work" means the literary and/or artistic work offered under the terms
|
||||
of this License including without limitation any production in the
|
||||
literary, scientific and artistic domain, whatever may be the mode or
|
||||
form of its expression including digital form, such as a book,
|
||||
pamphlet and other writing; a lecture, address, sermon or other work
|
||||
of the same nature; a dramatic or dramatico-musical work; a
|
||||
choreographic work or entertainment in dumb show; a musical
|
||||
composition with or without words; a cinematographic work to which are
|
||||
assimilated works expressed by a process analogous to cinematography;
|
||||
a work of drawing, painting, architecture, sculpture, engraving or
|
||||
lithography; a photographic work to which are assimilated works
|
||||
expressed by a process analogous to photography; a work of applied
|
||||
art; an illustration, map, plan, sketch or three-dimensional work
|
||||
relative to geography, topography, architecture or science; a
|
||||
performance; a broadcast; a phonogram; a compilation of data to the
|
||||
extent it is protected as a copyrightable work; or a work performed by
|
||||
a variety or circus performer to the extent it is not otherwise
|
||||
considered a literary or artistic work.
|
||||
i. "You" means an individual or entity exercising rights under this
|
||||
License who has not previously violated the terms of this License with
|
||||
respect to the Work, or who has received express permission from the
|
||||
Licensor to exercise rights under this License despite a previous
|
||||
violation.
|
||||
j. "Publicly Perform" means to perform public recitations of the Work and
|
||||
to communicate to the public those public recitations, by any means or
|
||||
process, including by wire or wireless means or public digital
|
||||
performances; to make available to the public Works in such a way that
|
||||
members of the public may access these Works from a place and at a
|
||||
place individually chosen by them; to perform the Work to the public
|
||||
by any means or process and the communication to the public of the
|
||||
performances of the Work, including by public digital performance; to
|
||||
broadcast and rebroadcast the Work by any means including signs,
|
||||
sounds or images.
|
||||
k. "Reproduce" means to make copies of the Work by any means including
|
||||
without limitation by sound or visual recordings and the right of
|
||||
fixation and reproducing fixations of the Work, including storage of a
|
||||
protected performance or phonogram in digital form or other electronic
|
||||
medium.
|
||||
|
||||
2. Fair Dealing Rights. Nothing in this License is intended to reduce,
|
||||
limit, or restrict any uses free from copyright or rights arising from
|
||||
limitations or exceptions that are provided for in connection with the
|
||||
copyright protection under copyright law or other applicable laws.
|
||||
|
||||
3. License Grant. Subject to the terms and conditions of this License,
|
||||
Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
|
||||
perpetual (for the duration of the applicable copyright) license to
|
||||
exercise the rights in the Work as stated below:
|
||||
|
||||
a. to Reproduce the Work, to incorporate the Work into one or more
|
||||
Collections, and to Reproduce the Work as incorporated in the
|
||||
Collections;
|
||||
b. to create and Reproduce Adaptations provided that any such Adaptation,
|
||||
including any translation in any medium, takes reasonable steps to
|
||||
clearly label, demarcate or otherwise identify that changes were made
|
||||
to the original Work. For example, a translation could be marked "The
|
||||
original work was translated from English to Spanish," or a
|
||||
modification could indicate "The original work has been modified.";
|
||||
c. to Distribute and Publicly Perform the Work including as incorporated
|
||||
in Collections; and,
|
||||
d. to Distribute and Publicly Perform Adaptations.
|
||||
e. For the avoidance of doubt:
|
||||
|
||||
i. Non-waivable Compulsory License Schemes. In those jurisdictions in
|
||||
which the right to collect royalties through any statutory or
|
||||
compulsory licensing scheme cannot be waived, the Licensor
|
||||
reserves the exclusive right to collect such royalties for any
|
||||
exercise by You of the rights granted under this License;
|
||||
ii. Waivable Compulsory License Schemes. In those jurisdictions in
|
||||
which the right to collect royalties through any statutory or
|
||||
compulsory licensing scheme can be waived, the Licensor waives the
|
||||
exclusive right to collect such royalties for any exercise by You
|
||||
of the rights granted under this License; and,
|
||||
iii. Voluntary License Schemes. The Licensor waives the right to
|
||||
collect royalties, whether individually or, in the event that the
|
||||
Licensor is a member of a collecting society that administers
|
||||
voluntary licensing schemes, via that society, from any exercise
|
||||
by You of the rights granted under this License.
|
||||
|
||||
The above rights may be exercised in all media and formats whether now
|
||||
known or hereafter devised. The above rights include the right to make
|
||||
such modifications as are technically necessary to exercise the rights in
|
||||
other media and formats. Subject to Section 8(f), all rights not expressly
|
||||
granted by Licensor are hereby reserved.
|
||||
|
||||
4. Restrictions. The license granted in Section 3 above is expressly made
|
||||
subject to and limited by the following restrictions:
|
||||
|
||||
a. You may Distribute or Publicly Perform the Work only under the terms
|
||||
of this License. You must include a copy of, or the Uniform Resource
|
||||
Identifier (URI) for, this License with every copy of the Work You
|
||||
Distribute or Publicly Perform. You may not offer or impose any terms
|
||||
on the Work that restrict the terms of this License or the ability of
|
||||
the recipient of the Work to exercise the rights granted to that
|
||||
recipient under the terms of the License. You may not sublicense the
|
||||
Work. You must keep intact all notices that refer to this License and
|
||||
to the disclaimer of warranties with every copy of the Work You
|
||||
Distribute or Publicly Perform. When You Distribute or Publicly
|
||||
Perform the Work, You may not impose any effective technological
|
||||
measures on the Work that restrict the ability of a recipient of the
|
||||
Work from You to exercise the rights granted to that recipient under
|
||||
the terms of the License. This Section 4(a) applies to the Work as
|
||||
incorporated in a Collection, but this does not require the Collection
|
||||
apart from the Work itself to be made subject to the terms of this
|
||||
License. If You create a Collection, upon notice from any Licensor You
|
||||
must, to the extent practicable, remove from the Collection any credit
|
||||
as required by Section 4(c), as requested. If You create an
|
||||
Adaptation, upon notice from any Licensor You must, to the extent
|
||||
practicable, remove from the Adaptation any credit as required by
|
||||
Section 4(c), as requested.
|
||||
b. You may Distribute or Publicly Perform an Adaptation only under the
|
||||
terms of: (i) this License; (ii) a later version of this License with
|
||||
the same License Elements as this License; (iii) a Creative Commons
|
||||
jurisdiction license (either this or a later license version) that
|
||||
contains the same License Elements as this License (e.g.,
|
||||
Attribution-ShareAlike 3.0 US)); (iv) a Creative Commons Compatible
|
||||
License. If you license the Adaptation under one of the licenses
|
||||
mentioned in (iv), you must comply with the terms of that license. If
|
||||
you license the Adaptation under the terms of any of the licenses
|
||||
mentioned in (i), (ii) or (iii) (the "Applicable License"), you must
|
||||
comply with the terms of the Applicable License generally and the
|
||||
following provisions: (I) You must include a copy of, or the URI for,
|
||||
the Applicable License with every copy of each Adaptation You
|
||||
Distribute or Publicly Perform; (II) You may not offer or impose any
|
||||
terms on the Adaptation that restrict the terms of the Applicable
|
||||
License or the ability of the recipient of the Adaptation to exercise
|
||||
the rights granted to that recipient under the terms of the Applicable
|
||||
License; (III) You must keep intact all notices that refer to the
|
||||
Applicable License and to the disclaimer of warranties with every copy
|
||||
of the Work as included in the Adaptation You Distribute or Publicly
|
||||
Perform; (IV) when You Distribute or Publicly Perform the Adaptation,
|
||||
You may not impose any effective technological measures on the
|
||||
Adaptation that restrict the ability of a recipient of the Adaptation
|
||||
from You to exercise the rights granted to that recipient under the
|
||||
terms of the Applicable License. This Section 4(b) applies to the
|
||||
Adaptation as incorporated in a Collection, but this does not require
|
||||
the Collection apart from the Adaptation itself to be made subject to
|
||||
the terms of the Applicable License.
|
||||
c. If You Distribute, or Publicly Perform the Work or any Adaptations or
|
||||
Collections, You must, unless a request has been made pursuant to
|
||||
Section 4(a), keep intact all copyright notices for the Work and
|
||||
provide, reasonable to the medium or means You are utilizing: (i) the
|
||||
name of the Original Author (or pseudonym, if applicable) if supplied,
|
||||
and/or if the Original Author and/or Licensor designate another party
|
||||
or parties (e.g., a sponsor institute, publishing entity, journal) for
|
||||
attribution ("Attribution Parties") in Licensor's copyright notice,
|
||||
terms of service or by other reasonable means, the name of such party
|
||||
or parties; (ii) the title of the Work if supplied; (iii) to the
|
||||
extent reasonably practicable, the URI, if any, that Licensor
|
||||
specifies to be associated with the Work, unless such URI does not
|
||||
refer to the copyright notice or licensing information for the Work;
|
||||
and (iv) , consistent with Ssection 3(b), in the case of an
|
||||
Adaptation, a credit identifying the use of the Work in the Adaptation
|
||||
(e.g., "French translation of the Work by Original Author," or
|
||||
"Screenplay based on original Work by Original Author"). The credit
|
||||
required by this Section 4(c) may be implemented in any reasonable
|
||||
manner; provided, however, that in the case of a Adaptation or
|
||||
Collection, at a minimum such credit will appear, if a credit for all
|
||||
contributing authors of the Adaptation or Collection appears, then as
|
||||
part of these credits and in a manner at least as prominent as the
|
||||
credits for the other contributing authors. For the avoidance of
|
||||
doubt, You may only use the credit required by this Section for the
|
||||
purpose of attribution in the manner set out above and, by exercising
|
||||
Your rights under this License, You may not implicitly or explicitly
|
||||
assert or imply any connection with, sponsorship or endorsement by the
|
||||
Original Author, Licensor and/or Attribution Parties, as appropriate,
|
||||
of You or Your use of the Work, without the separate, express prior
|
||||
written permission of the Original Author, Licensor and/or Attribution
|
||||
Parties.
|
||||
d. Except as otherwise agreed in writing by the Licensor or as may be
|
||||
otherwise permitted by applicable law, if You Reproduce, Distribute or
|
||||
Publicly Perform the Work either by itself or as part of any
|
||||
Adaptations or Collections, You must not distort, mutilate, modify or
|
||||
take other derogatory action in relation to the Work which would be
|
||||
prejudicial to the Original Author's honor or reputation. Licensor
|
||||
agrees that in those jurisdictions (e.g. Japan), in which any exercise
|
||||
of the right granted in Section 3(b) of this License (the right to
|
||||
make Adaptations) would be deemed to be a distortion, mutilation,
|
||||
modification or other derogatory action prejudicial to the Original
|
||||
Author's honor and reputation, the Licensor will waive or not assert,
|
||||
as appropriate, this Section, to the fullest extent permitted by the
|
||||
applicable national law, to enable You to reasonably exercise Your
|
||||
right under Section 3(b) of this License (right to make Adaptations)
|
||||
but not otherwise.
|
||||
|
||||
5. Representations, Warranties and Disclaimer
|
||||
|
||||
UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR
|
||||
OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY
|
||||
KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,
|
||||
INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF
|
||||
LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS,
|
||||
WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION
|
||||
OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
|
||||
|
||||
6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE
|
||||
LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR
|
||||
ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES
|
||||
ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS
|
||||
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
7. Termination
|
||||
|
||||
a. This License and the rights granted hereunder will terminate
|
||||
automatically upon any breach by You of the terms of this License.
|
||||
Individuals or entities who have received Adaptations or Collections
|
||||
from You under this License, however, will not have their licenses
|
||||
terminated provided such individuals or entities remain in full
|
||||
compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will
|
||||
survive any termination of this License.
|
||||
b. Subject to the above terms and conditions, the license granted here is
|
||||
perpetual (for the duration of the applicable copyright in the Work).
|
||||
Notwithstanding the above, Licensor reserves the right to release the
|
||||
Work under different license terms or to stop distributing the Work at
|
||||
any time; provided, however that any such election will not serve to
|
||||
withdraw this License (or any other license that has been, or is
|
||||
required to be, granted under the terms of this License), and this
|
||||
License will continue in full force and effect unless terminated as
|
||||
stated above.
|
||||
|
||||
8. Miscellaneous
|
||||
|
||||
a. Each time You Distribute or Publicly Perform the Work or a Collection,
|
||||
the Licensor offers to the recipient a license to the Work on the same
|
||||
terms and conditions as the license granted to You under this License.
|
||||
b. Each time You Distribute or Publicly Perform an Adaptation, Licensor
|
||||
offers to the recipient a license to the original Work on the same
|
||||
terms and conditions as the license granted to You under this License.
|
||||
c. If any provision of this License is invalid or unenforceable under
|
||||
applicable law, it shall not affect the validity or enforceability of
|
||||
the remainder of the terms of this License, and without further action
|
||||
by the parties to this agreement, such provision shall be reformed to
|
||||
the minimum extent necessary to make such provision valid and
|
||||
enforceable.
|
||||
d. No term or provision of this License shall be deemed waived and no
|
||||
breach consented to unless such waiver or consent shall be in writing
|
||||
and signed by the party to be charged with such waiver or consent.
|
||||
e. This License constitutes the entire agreement between the parties with
|
||||
respect to the Work licensed here. There are no understandings,
|
||||
agreements or representations with respect to the Work not specified
|
||||
here. Licensor shall not be bound by any additional provisions that
|
||||
may appear in any communication from You. This License may not be
|
||||
modified without the mutual written agreement of the Licensor and You.
|
||||
f. The rights granted under, and the subject matter referenced, in this
|
||||
License were drafted utilizing the terminology of the Berne Convention
|
||||
for the Protection of Literary and Artistic Works (as amended on
|
||||
September 28, 1979), the Rome Convention of 1961, the WIPO Copyright
|
||||
Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996
|
||||
and the Universal Copyright Convention (as revised on July 24, 1971).
|
||||
These rights and subject matter take effect in the relevant
|
||||
jurisdiction in which the License terms are sought to be enforced
|
||||
according to the corresponding provisions of the implementation of
|
||||
those treaty provisions in the applicable national law. If the
|
||||
standard suite of rights granted under applicable copyright law
|
||||
includes additional rights not granted under this License, such
|
||||
additional rights are deemed to be included in the License; this
|
||||
License is not intended to restrict the license of any rights under
|
||||
applicable law.
|
||||
|
||||
|
||||
Creative Commons Notice
|
||||
|
||||
Creative Commons is not a party to this License, and makes no warranty
|
||||
whatsoever in connection with the Work. Creative Commons will not be
|
||||
liable to You or any party on any legal theory for any damages
|
||||
whatsoever, including without limitation any general, special,
|
||||
incidental or consequential damages arising in connection to this
|
||||
license. Notwithstanding the foregoing two (2) sentences, if Creative
|
||||
Commons has expressly identified itself as the Licensor hereunder, it
|
||||
shall have all rights and obligations of Licensor.
|
||||
|
||||
Except for the limited purpose of indicating to the public that the
|
||||
Work is licensed under the CCPL, Creative Commons does not authorize
|
||||
the use by either party of the trademark "Creative Commons" or any
|
||||
related trademark or logo of Creative Commons without the prior
|
||||
written consent of Creative Commons. Any permitted use will be in
|
||||
compliance with Creative Commons' then-current trademark usage
|
||||
guidelines, as may be published on its website or otherwise made
|
||||
available upon request from time to time. For the avoidance of doubt,
|
||||
this trademark restriction does not form part of the License.
|
||||
|
||||
Creative Commons may be contacted at https://creativecommons.org/.
|
||||
@@ -1,7 +1,3 @@
|
||||
Note: New submissions as of 5th January 2015 now fall under AGPL v3, prior code is
|
||||
still licensed GPL v3, see README.md for details.
|
||||
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
@@ -1,51 +1,146 @@
|
||||
# Paradise
|
||||
[](https://github.com/ParadiseSS13/Paradise/actions?query=workflow%3ACI)
|
||||
[](https://github.com/ParadiseSS13/Paradise/actions?query=workflow%3A%22Render+Nanomaps%22)
|
||||
[](http://isitmaintained.com/project/paradisess13/paradise "Average time to resolve an issue")
|
||||
[](http://isitmaintained.com/project/paradisess13/paradise "Percentage of issues still open")
|
||||
<a href="#"><img src=".github/assets/paradise.png" alt="Paradise Station"></a>
|
||||
|
||||
[](http://forthebadge.com)
|
||||
[](http://forthebadge.com)
|
||||
[](http://forthebadge.com)
|
||||
## <p align="center">Welcome to the main repository for the Paradise Station version of [Space Station 13](https://spacestation13.com/).</p>
|
||||
|
||||
# Useful Links
|
||||
<p align="center">
|
||||
<a href="https://github.com/ParadiseSS13/Paradise/actions?query=workflow%3ACI"><img src="https://github.com/ParadiseSS13/Paradise/workflows/CI/badge.svg" alt="CI"></a>
|
||||
<a href="https://github.com/ParadiseSS13/Paradise/actions?query=workflow%3A%22Render+Nanomaps%22"><img src="https://github.com/ParadiseSS13/Paradise/workflows/Render%20Nanomaps/badge.svg" alt="Render Nanomaps"></a>
|
||||
<a href="http://isitmaintained.com/project/paradisess13/paradise"><img src="http://isitmaintained.com/badge/resolution/paradisess13/paradise.svg" alt="Average time to resolve an issue"></a>
|
||||
<a href="http://isitmaintained.com/project/paradisess13/paradise"><img src="http://isitmaintained.com/badge/open/paradisess13/paradise.svg" alt="Percentage of issues still open"></a>
|
||||
</p>
|
||||
|
||||
- [Discord](https://discordapp.com/invite/YJDsXFE)
|
||||
- [Documentation](https://codedocs.paradisestation.org)
|
||||
- [Website](https://www.paradisestation.org/)
|
||||
|
||||
# Useful Documents
|
||||
<p align="center">
|
||||
<a href="https://xkcd.com/371/"><img src=".github/assets/compiles-sometimes.svg" alt="Compiles sometimes"></a>
|
||||
<a href="https://www.reddit.com/r/SS13/comments/5oplxp/what_is_the_main_problem_with_byond_as_an_engine/dclbu1a/"><img src=".github/assets/made-in-byond.gif" alt="Made in BYOND"></a>
|
||||
<a href="https://xkcd.com/1811/"><img src=".github/assets/made-with-crayons.svg" alt="Made with crayons"></a>
|
||||
</p>
|
||||
|
||||
- [Autodocumentation Guide](.github/AUTODOC_GUIDE.md)
|
||||
- [Code of Conduct](./CODE_OF_CONDUCT.md)
|
||||
- [Contribution Guide](.github/CONTRIBUTING.md)
|
||||
- [Installation Guide](.github/DOWNLOADING.md)
|
||||
|
||||
|
||||
|
||||
<p align="center">
|
||||
<a href="https://discord.gg/paradisess13">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset=".github/assets/discord-light.png">
|
||||
<source media="(prefers-color-scheme: light)" srcset=".github/assets/discord-dark.png">
|
||||
<img width="15%" alt="Discord" hspace="3%" src=".github/assets/discord-dark.png">
|
||||
</picture>
|
||||
</a>
|
||||
<a href="https://codedocs.paradisestation.org">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset=".github/assets/book-light.png">
|
||||
<source media="(prefers-color-scheme: light)" srcset=".github/assets/book-dark.png">
|
||||
<img alt="Code docs" width="15%" hspace="3%" src=".github/assets/book-dark.png">
|
||||
</picture>
|
||||
</a>
|
||||
<a href="https://www.paradisestation.org/">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset=".github/assets/web-light.png">
|
||||
<source media="(prefers-color-scheme: light)" srcset=".github/assets/web-dark.png">
|
||||
<img width="15%" alt="Website" hspace="3%" src=".github/assets/web-dark.png">
|
||||
</picture>
|
||||
</a>
|
||||
<a href="https://paradisestation.org/wiki">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset=".github/assets/wiki-light.png">
|
||||
<source media="(prefers-color-scheme: light)" srcset=".github/assets/wiki-dark.png">
|
||||
<img width="15%" alt="Game Wiki" hspace="3%" src=".github/assets/wiki-dark.png">
|
||||
</picture>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
|
||||
> [!TIP]
|
||||
> Want to contribute for the first time but unsure where to start?<br>
|
||||
> Join our Discord and check out the [#coding_chat](https://discord.com/channels/145533722026967040/145700319819464704) channel for helpful links and advice!<br>
|
||||
> Alternatively, have a look at our community maintained [Guide to Contributing](https://paradisestation.org/wiki/index.php?title=Guide_to_Contributing)
|
||||
|
||||
# Useful Documents and Links
|
||||
|
||||
- ### [Dream Maker (DM) Reference](https://www.byond.com/docs/ref/)
|
||||
|
||||
This reference site by the creators of BYOND details information on the DM language, the syntax used, functionality of native procs, and a lot more. This is always useful to have on hand when contributing.
|
||||
|
||||
- ### [Autodocumentation Guide](.github/AUTODOC_GUIDE.md)
|
||||
|
||||
This guide shows you how to leave code comments that comply with "autodocumentation", a system designed to make everyone's lives easier when reading or reviewing code!
|
||||
|
||||
- ### [Code of Conduct](./CODE_OF_CONDUCT.md)
|
||||
|
||||
All contributors are expected to read our Code of Conduct before they take part in our community.
|
||||
|
||||
- ### [Contribution Guide](.github/CONTRIBUTING.md)
|
||||
|
||||
Not sure how to take part and contribute? This guide gives an overview of how to make comments, pull requests, and open issues.
|
||||
|
||||
This guide also sets out our code standards that we expect all submitted code to adhere to.
|
||||
|
||||
- ### [Community Maintained Guide to Contributing](https://paradisestation.org/wiki/index.php?title=Guide_to_Contributing)
|
||||
|
||||
This community maintained guide covers how to set yourself up for success when attempting to contribute to Paracode.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> Paradise does not provide precompiled binaries, requiring you to build from source to host a local server.<br>
|
||||
> Building Paradise is quick and simple, all you need to install is [BYOND](https://www.byond.com/download/).<br>
|
||||
> You can learn more in our [Installation Guide](.github/DOWNLOADING.md).
|
||||
|
||||
- ### [Paradise Station Development Team Structure](https://www.paradisestation.org/dev/policy/)
|
||||
|
||||
A detailed policy document that governs how the Paradise Station Development Team functions, from the various roles that help keep things running to the process each PR goes through depending on the content.
|
||||
|
||||
- ### [TGUI Tutorial](tgui/docs/tutorial-and-examples.md)
|
||||
|
||||
TGUI is a user interface framework, built on InfernoJS, for all new player-facing UIs.
|
||||
|
||||
TGUI is very different to most other BYOND user interfaces as it is written entirely in JavaScript with some data passed to and from DreamMaker. If you are looking to get to grips with TGUI, this tutorial is a good starting point. Additional information can also be found [here.](tgui)
|
||||
|
||||
- ### [Mapping Guide](https://hackmd.io/@tgstation/SyVma0dS5#san7890s-A-Z-Guide-to-Mapping)
|
||||
|
||||
Mapping for Paradise station can be daunting to new contributors. Here's a comprehensive quick-start put together by a community member that takes you from A-Z.
|
||||
|
||||
---
|
||||
|
||||
|
||||
### LICENSE
|
||||
# LICENSES
|
||||
|
||||
Paradise is licensed under the GNU Affero General Public License version 3.
|
||||
As of 5th January 2015 any new contributions are licensed under the AGPL as well,
|
||||
if you wish to submit code under the GPL v3 then commits and files must be marked as such
|
||||
in comments. If you wish to use our code in a closed source manner you may use anything
|
||||
before commit 445615b8439bf606ff204a42c8e7b6b69d983255,
|
||||
which is licensed under GPL v3.
|
||||
The major change here is that if you host a server using any code licensed under AGPL you
|
||||
are required to provide full source code for your servers users as well,
|
||||
including addons and modifications you have made.
|
||||
> [!CAUTION]
|
||||
> If you wish to use our code in a closed source manner (i.e. not make it available to the public and/or those who connect to services you offer using this code) you must **only** use code prior to commit [1af3ddef2af85937251e24384c2173c4b6c3222b on 2015/01/05 22:04 GMT](https://github.com/ParadiseSS13/Paradise/commit/1af3ddef2af85937251e24384c2173c4b6c3222b), which is licenced under GPLv3.
|
||||
|
||||
See [this](https://www.gnu.org/licenses/why-affero-gpl.html) for more information.
|
||||
### Click each banner for further information
|
||||
|
||||
Any files located in the
|
||||
`Paradise/goon`,
|
||||
`Paradise/icons/goonstation`, or
|
||||
`Paradise/sound/goonstation`
|
||||
directories, or any subdirectories of mentioned directories are licensed under the
|
||||
Creative Commons 3.0 BY-NC-SA license
|
||||
(https://creativecommons.org/licenses/by-nc-sa/3.0)
|
||||
---
|
||||
|
||||
All other assets including icons and sound files are licensed under the
|
||||
Creative Commons 3.0 BY-SA license (https://creativecommons.org/licenses/by-sa/3.0/),
|
||||
unless otherwise indicated.
|
||||
<details>
|
||||
<summary><a href="#"><img src="https://img.shields.io/badge/licence-AGPL_3-red?style=for-the-badge" alt="AGPLv3 license"></a></summary>
|
||||
|
||||
>All code after and including commit [1af3ddef2af85937251e24384c2173c4b6c3222b on 2015/01/05 22:04 GMT](https://github.com/ParadiseSS13/Paradise/commit/1af3ddef2af85937251e24384c2173c4b6c3222b) is licensed under the [GNU Affero General Public License version 3](https://www.gnu.org/licenses/agpl-3.0.en.html) unless otherwise specified within the folder or file.
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><a href="#"><img src="https://img.shields.io/badge/licence-GPL_3-orange?style=for-the-badge" alt="GPLv3 license"></a></summary>
|
||||
|
||||
>All code prior to commit [1af3ddef2af85937251e24384c2173c4b6c3222b on 2015/01/05 22:04 GMT](https://github.com/ParadiseSS13/Paradise/commit/1af3ddef2af85937251e24384c2173c4b6c3222b) is licensed under the [GPL General Public License version 3](https://www.gnu.org/licenses/gpl-3.0.en.html)
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><a href="#"><img src="https://img.shields.io/badge/licence-MIT-green?style=for-the-badge" alt="MIT license"></a></summary>
|
||||
|
||||
>Some files are licenced under the [MIT license](https://opensource.org/license/MIT), these files will clearly specify this licence at the head of each file.
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><a href="#"><img src="https://img.shields.io/badge/licence-CC_3.0_BY--NC--SA-blue?style=for-the-badge" alt="Creative Commons 3.0 BY-NC-SA" align="centre"></a></summary>
|
||||
|
||||
>Any files with the ancestor directories [`Paradise/icons/goonstation`](icons/goonstation) or [`Paradise/sound/goonstation`](sound/goonstation) are licensed under the [Creative Commons 3.0 BY-NC-SA license](https://creativecommons.org/licenses/by-nc-sa/3.0).
|
||||
>
|
||||
>Further files or folders may also fall under this licence, and any such instances will be specified within the folder or file.
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><a href="#"><img src="https://img.shields.io/badge/licence-CC_3.0_BY--SA-lightblue?style=for-the-badge" alt="Creative Commons 3.0 BY-SA"></a></summary>
|
||||
|
||||
>All other non-code assets, including icons and sound files, are licensed under the [Creative Commons 3.0 BY-SA license](https://creativecommons.org/licenses/by-sa/3.0/), unless otherwise specified within the folder or file.
|
||||
</details>
|
||||
|
||||
@@ -27,6 +27,7 @@ CREATE TABLE `characters` (
|
||||
`real_name` varchar(55) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`name_is_always_random` tinyint(1) NOT NULL,
|
||||
`gender` varchar(11) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`body_type` varchar(11) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`age` smallint(4) NOT NULL,
|
||||
`species` varchar(45) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`language` varchar(45) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
#Add a choice for what type of brain borgs want to have
|
||||
|
||||
ALTER TABLE `characters`
|
||||
ADD COLUMN `cyborg_brain_type` VARCHAR(11) NOT NULL DEFAULT 'MMI' AFTER `height`;
|
||||
ADD COLUMN `cyborg_brain_type` ENUM('MMI', 'Robobrain', 'Positronic') NOT NULL DEFAULT 'MMI' AFTER `height`;
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
# Updating DB from 54-55 - lewc
|
||||
# Adds a new `body_type` (gender sprite) column to the `characters` table
|
||||
|
||||
# Add the new column next to the existing `gender` one
|
||||
ALTER TABLE `characters`
|
||||
ADD COLUMN `body_type` varchar(11) COLLATE utf8mb4_unicode_ci NOT NULL AFTER `gender`;
|
||||
|
||||
# Set the `body_type` column to whatever's already in `gender`, so that it doesn't change existing characters
|
||||
UPDATE `characters` SET `body_type` = `gender` WHERE `gender` IS NOT NULL
|
||||
@@ -126,6 +126,11 @@
|
||||
/obj/structure/bed,
|
||||
/turf/simulated/floor/mineral/titanium/purple,
|
||||
/area/ruin/space/powered)
|
||||
"Z" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/blank_tarot_card,
|
||||
/turf/simulated/floor/mineral/titanium/purple,
|
||||
/area/ruin/space/powered)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
@@ -277,7 +282,7 @@ b
|
||||
j
|
||||
r
|
||||
w
|
||||
n
|
||||
Z
|
||||
j
|
||||
b
|
||||
a
|
||||
|
||||
@@ -551,7 +551,6 @@
|
||||
info = "Nothing of interest to report.";
|
||||
name = "november report"
|
||||
},
|
||||
/obj/item/pen,
|
||||
/obj/item/tape,
|
||||
/obj/item/radio/intercom{
|
||||
freerange = 1;
|
||||
@@ -559,7 +558,7 @@
|
||||
name = "intercom"
|
||||
},
|
||||
/obj/item/paper_bin,
|
||||
/obj/item/pen,
|
||||
/obj/item/pen/multi/syndicate,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/simulated/floor/plasteel/dark,
|
||||
/area/ruin/space/syndicate_listening_station)
|
||||
|
||||
@@ -523,7 +523,7 @@
|
||||
/obj/item/paper_bin{
|
||||
pixel_x = -6
|
||||
},
|
||||
/obj/item/pen,
|
||||
/obj/item/pen/multi/syndicate,
|
||||
/turf/simulated/floor/mineral/plastitanium,
|
||||
/area/ruin/space/mech_transport)
|
||||
"MA" = (
|
||||
|
||||
@@ -5200,6 +5200,7 @@
|
||||
},
|
||||
/obj/item/coin/antagtoken/syndicate,
|
||||
/obj/structure/table,
|
||||
/obj/item/pen/multi/syndicate,
|
||||
/turf/simulated/floor/plating/asteroid/ancient,
|
||||
/area/ruin/space/moonbase19)
|
||||
"rk" = (
|
||||
|
||||
@@ -259,7 +259,6 @@
|
||||
/area/ruin/space/onehalf/hallway)
|
||||
"aM" = (
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/machinery/door/poddoor{
|
||||
id_tag = "bayint1";
|
||||
name = "mining drone bay blast door"
|
||||
@@ -636,9 +635,6 @@
|
||||
/area/ruin/space/onehalf/hallway)
|
||||
"bA" = (
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
@@ -653,15 +649,6 @@
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/ruin/space/onehalf/drone_bay)
|
||||
"bC" = (
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/ruin/space/onehalf/drone_bay)
|
||||
"bD" = (
|
||||
/obj/structure/disposalpipe/junction{
|
||||
dir = 8
|
||||
@@ -1643,7 +1630,7 @@ aD
|
||||
aq
|
||||
aX
|
||||
bm
|
||||
bC
|
||||
bn
|
||||
bT
|
||||
aa
|
||||
cn
|
||||
|
||||
@@ -98,11 +98,11 @@
|
||||
pixel_x = 4
|
||||
},
|
||||
/obj/item/paper/syndicate_druglab,
|
||||
/obj/item/pen,
|
||||
/obj/item/flashlight/lamp/green/off{
|
||||
pixel_y = 12;
|
||||
pixel_x = -6
|
||||
},
|
||||
/obj/item/pen/multi/syndicate,
|
||||
/turf/simulated/floor/carpet/black,
|
||||
/area/ruin/space/syndicate_druglab)
|
||||
"qa" = (
|
||||
|
||||
@@ -2985,7 +2985,7 @@
|
||||
dir = 8
|
||||
},
|
||||
/obj/item/hand_labeler,
|
||||
/obj/item/pen,
|
||||
/obj/item/pen/multi/syndicate,
|
||||
/turf/simulated/floor/plasteel{
|
||||
dir = 9;
|
||||
icon_state = "darkgreen"
|
||||
@@ -3423,7 +3423,7 @@
|
||||
"th" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/paper_bin,
|
||||
/obj/item/pen,
|
||||
/obj/item/pen/multi/syndicate,
|
||||
/obj/structure/extinguisher_cabinet{
|
||||
name = "north bump";
|
||||
pixel_y = 30
|
||||
@@ -3760,7 +3760,7 @@
|
||||
/area/ruin/unpowered/syndicate_space_base/service)
|
||||
"vd" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/pen,
|
||||
/obj/item/pen/multi/syndicate,
|
||||
/obj/item/paper_bin,
|
||||
/obj/item/stamp/syndicate,
|
||||
/obj/machinery/light_switch{
|
||||
@@ -8462,7 +8462,7 @@
|
||||
dir = 8
|
||||
},
|
||||
/obj/item/hand_labeler,
|
||||
/obj/item/pen,
|
||||
/obj/item/pen/multi/syndicate,
|
||||
/turf/simulated/floor/plasteel{
|
||||
dir = 10;
|
||||
icon_state = "darkgreen"
|
||||
|
||||
@@ -498,6 +498,7 @@
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/obj/item/pen/multi/syndicate,
|
||||
/turf/simulated/floor/engine,
|
||||
/area/ruin/space/unpowered)
|
||||
"tX" = (
|
||||
|
||||
@@ -665,7 +665,7 @@
|
||||
"bV" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/folder/syndicate/yellow,
|
||||
/obj/item/pen,
|
||||
/obj/item/pen/multi/syndicate,
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "dark"
|
||||
},
|
||||
|
||||
@@ -3133,10 +3133,6 @@
|
||||
icon_state = "stage_stairs"
|
||||
},
|
||||
/area/ruin/space/derelict/crew_quarters)
|
||||
"hF" = (
|
||||
/obj/structure/sign/barsign,
|
||||
/turf/simulated/wall/mineral/titanium/nodecon,
|
||||
/area/ruin/space/derelict/crew_quarters)
|
||||
"hH" = (
|
||||
/obj/machinery/door/airlock/public/glass{
|
||||
name = "Eastern Annex"
|
||||
@@ -7572,6 +7568,13 @@
|
||||
},
|
||||
/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
|
||||
/area/ruin/space/derelict/crew_quarters)
|
||||
"Qq" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/barsign{
|
||||
pixel_y = 32
|
||||
},
|
||||
/turf/simulated/floor/plasteel/dark,
|
||||
/area/ruin/space/derelict/crew_quarters)
|
||||
"QN" = (
|
||||
/turf/simulated/wall/mineral/titanium/nodecon/nosmooth,
|
||||
/area/ruin/space/derelict/arrival)
|
||||
@@ -13520,8 +13523,8 @@ gn
|
||||
gG
|
||||
gG
|
||||
gG
|
||||
hF
|
||||
hT
|
||||
aV
|
||||
Qq
|
||||
in
|
||||
iK
|
||||
je
|
||||
|
||||
@@ -167,6 +167,7 @@
|
||||
/area/ruin/space/unpowered)
|
||||
"aF" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/blank_tarot_card,
|
||||
/turf/simulated/floor/wood{
|
||||
icon_state = "wood-broken6"
|
||||
},
|
||||
|
||||
@@ -234,6 +234,10 @@
|
||||
icon_state = "red"
|
||||
},
|
||||
/area/holodeck/source_emptycourt)
|
||||
"aS" = (
|
||||
/obj/effect/landmark/spawner/tradergearmajor,
|
||||
/turf/simulated/floor/mineral/titanium,
|
||||
/area/shuttle/trade/sol)
|
||||
"aT" = (
|
||||
/obj/structure/sign/poster/official/random,
|
||||
/turf/simulated/wall/indestructible/riveted,
|
||||
@@ -2878,12 +2882,12 @@
|
||||
"kf" = (
|
||||
/obj/docking_port/stationary{
|
||||
area_type = /area/syndicate_mothership;
|
||||
dwidth = 15;
|
||||
dwidth = 16;
|
||||
height = 21;
|
||||
id = "emergency_syndicate";
|
||||
name = "404 Not Found";
|
||||
turf_type = /turf/simulated/floor/plating/asteroid/snow/airless;
|
||||
width = 33
|
||||
width = 41
|
||||
},
|
||||
/turf/simulated/floor/plating/asteroid/snow/airless,
|
||||
/area/syndicate_mothership)
|
||||
@@ -3174,6 +3178,15 @@
|
||||
},
|
||||
/turf/simulated/floor/plasteel/dark,
|
||||
/area/syndicate_mothership)
|
||||
"lc" = (
|
||||
/obj/machinery/barsign{
|
||||
pixel_y = 32
|
||||
},
|
||||
/turf/simulated/floor/plasteel{
|
||||
dir = 1;
|
||||
icon_state = "green"
|
||||
},
|
||||
/area/centcom/evac)
|
||||
"le" = (
|
||||
/obj/effect/landmark/spawner/syndieprisonwarp,
|
||||
/turf/simulated/floor/plasteel/dark,
|
||||
@@ -4489,11 +4502,11 @@
|
||||
"pf" = (
|
||||
/obj/docking_port/stationary/transit{
|
||||
dir = 4;
|
||||
dwidth = 15;
|
||||
dwidth = 16;
|
||||
height = 21;
|
||||
id = "emergency_transit";
|
||||
name = "emergency in transit";
|
||||
width = 33
|
||||
width = 41
|
||||
},
|
||||
/turf/space/transit,
|
||||
/area/space/centcomm)
|
||||
@@ -5371,10 +5384,6 @@
|
||||
/obj/effect/landmark/spawner/syndie,
|
||||
/turf/simulated/floor/wood,
|
||||
/area/syndicate_mothership)
|
||||
"sd" = (
|
||||
/obj/structure/sign/barsign,
|
||||
/turf/simulated/wall/indestructible/riveted,
|
||||
/area/ghost_bar)
|
||||
"se" = (
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 4
|
||||
@@ -5804,6 +5813,12 @@
|
||||
},
|
||||
/turf/simulated/floor/mineral/plastitanium/red,
|
||||
/area/shuttle/syndicate)
|
||||
"tP" = (
|
||||
/obj/machinery/barsign/ghost_bar{
|
||||
pixel_y = 32
|
||||
},
|
||||
/turf/simulated/floor/wood,
|
||||
/area/ghost_bar)
|
||||
"tQ" = (
|
||||
/obj/machinery/mech_bay_recharge_port/upgraded/unsimulated{
|
||||
dir = 8;
|
||||
@@ -6181,7 +6196,7 @@
|
||||
/turf/simulated/floor/carpet/green,
|
||||
/area/ghost_bar)
|
||||
"vf" = (
|
||||
/obj/effect/landmark/spawner/soltrader,
|
||||
/obj/effect/landmark/spawner/trader,
|
||||
/obj/structure/chair/comfy/brown,
|
||||
/turf/simulated/floor/wood,
|
||||
/area/trader_station/sol)
|
||||
@@ -6281,7 +6296,7 @@
|
||||
/area/centcom/control)
|
||||
"vu" = (
|
||||
/obj/structure/railing,
|
||||
/obj/effect/landmark/spawner/soltrader,
|
||||
/obj/effect/landmark/spawner/trader,
|
||||
/obj/structure/chair/comfy/brown{
|
||||
dir = 4
|
||||
},
|
||||
@@ -6331,7 +6346,7 @@
|
||||
/area/trader_station/sol)
|
||||
"vD" = (
|
||||
/obj/structure/railing,
|
||||
/obj/effect/landmark/spawner/soltrader,
|
||||
/obj/effect/landmark/spawner/trader,
|
||||
/obj/structure/chair/comfy/brown{
|
||||
dir = 8
|
||||
},
|
||||
@@ -7981,7 +7996,7 @@
|
||||
/turf/simulated/wall/indestructible/syndicate,
|
||||
/area/admin)
|
||||
"Cv" = (
|
||||
/obj/structure/sign/barsign{
|
||||
/obj/machinery/barsign{
|
||||
pixel_y = -32
|
||||
},
|
||||
/obj/machinery/icemachine,
|
||||
@@ -9234,7 +9249,7 @@
|
||||
/area/centcom/specops)
|
||||
"GT" = (
|
||||
/obj/structure/chair,
|
||||
/obj/structure/sign/barsign{
|
||||
/obj/machinery/barsign{
|
||||
pixel_y = 32
|
||||
},
|
||||
/obj/effect/landmark/spawner/tdomeobserve,
|
||||
@@ -11981,6 +11996,10 @@
|
||||
/obj/item/lighter,
|
||||
/turf/simulated/floor/plasteel/dark,
|
||||
/area/centcom/specops)
|
||||
"PT" = (
|
||||
/obj/effect/landmark/spawner/tradergearminor,
|
||||
/turf/simulated/floor/mineral/titanium,
|
||||
/area/shuttle/trade/sol)
|
||||
"PU" = (
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/turf/simulated/floor/plasteel/dark,
|
||||
@@ -12184,11 +12203,11 @@
|
||||
},
|
||||
/obj/docking_port/stationary{
|
||||
dir = 4;
|
||||
dwidth = 15;
|
||||
dwidth = 16;
|
||||
height = 21;
|
||||
id = "emergency_away";
|
||||
name = "emergency centcom";
|
||||
width = 33
|
||||
width = 41
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/shuttle/escape)
|
||||
@@ -12922,7 +12941,7 @@
|
||||
pixel_y = 5
|
||||
},
|
||||
/obj/structure/table/wood,
|
||||
/obj/structure/sign/barsign{
|
||||
/obj/machinery/barsign{
|
||||
pixel_y = -32
|
||||
},
|
||||
/turf/simulated/floor/plasteel{
|
||||
@@ -13923,11 +13942,6 @@
|
||||
},
|
||||
/turf/simulated/wall/indestructible/fakeglass,
|
||||
/area/centcom/specops)
|
||||
"Xi" = (
|
||||
/obj/effect/spawner/window,
|
||||
/obj/structure/sign/barsign,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/centcom/evac)
|
||||
"Xj" = (
|
||||
/turf/simulated/floor/transparent/glass,
|
||||
/area/centcom/specops)
|
||||
@@ -46015,8 +46029,8 @@ Ng
|
||||
Ng
|
||||
So
|
||||
Vs
|
||||
Xi
|
||||
Xx
|
||||
Qe
|
||||
lc
|
||||
YO
|
||||
ZZ
|
||||
gI
|
||||
@@ -48808,9 +48822,9 @@ vG
|
||||
of
|
||||
oI
|
||||
pc
|
||||
rK
|
||||
PT
|
||||
pc
|
||||
uP
|
||||
aS
|
||||
pc
|
||||
vY
|
||||
of
|
||||
@@ -49322,9 +49336,9 @@ vG
|
||||
of
|
||||
oS
|
||||
pc
|
||||
pa
|
||||
rK
|
||||
pc
|
||||
pa
|
||||
uP
|
||||
pc
|
||||
wa
|
||||
of
|
||||
@@ -49336,11 +49350,11 @@ aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
Db
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
Db
|
||||
aN
|
||||
aN
|
||||
@@ -49375,10 +49389,10 @@ Db
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
Db
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
Db
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
@@ -50621,12 +50635,12 @@ aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
Db
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
od
|
||||
od
|
||||
vy
|
||||
@@ -50656,6 +50670,13 @@ XB
|
||||
od
|
||||
ux
|
||||
ux
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
Db
|
||||
aN
|
||||
aN
|
||||
@@ -50746,13 +50767,6 @@ aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
"}
|
||||
(141,1,1) = {"
|
||||
aN
|
||||
@@ -51906,12 +51920,12 @@ aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
Db
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
vy
|
||||
Ez
|
||||
Fq
|
||||
@@ -51941,6 +51955,13 @@ Pb
|
||||
vy
|
||||
Iv
|
||||
Zp
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
Db
|
||||
aN
|
||||
aN
|
||||
@@ -52031,13 +52052,6 @@ aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
"}
|
||||
(146,1,1) = {"
|
||||
aN
|
||||
@@ -52420,12 +52434,12 @@ aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
Db
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
vy
|
||||
EE
|
||||
Fo
|
||||
@@ -52455,6 +52469,13 @@ JC
|
||||
vy
|
||||
Iv
|
||||
Zp
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
Db
|
||||
aN
|
||||
aN
|
||||
@@ -52545,13 +52566,6 @@ aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
"}
|
||||
(148,1,1) = {"
|
||||
aN
|
||||
@@ -53705,7 +53719,6 @@ aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
Db
|
||||
aN
|
||||
aN
|
||||
@@ -53716,6 +53729,7 @@ aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
od
|
||||
JC
|
||||
Mc
|
||||
@@ -53740,6 +53754,13 @@ qF
|
||||
od
|
||||
Iv
|
||||
Zp
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
Db
|
||||
aN
|
||||
aN
|
||||
@@ -53830,13 +53851,6 @@ aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
"}
|
||||
(153,1,1) = {"
|
||||
aN
|
||||
@@ -54990,11 +55004,11 @@ aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
Db
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
Db
|
||||
aN
|
||||
aN
|
||||
@@ -55029,10 +55043,10 @@ Db
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
Db
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
Db
|
||||
aN
|
||||
aN
|
||||
aN
|
||||
@@ -73022,8 +73036,8 @@ vd
|
||||
Ml
|
||||
vd
|
||||
xy
|
||||
sd
|
||||
Jy
|
||||
Me
|
||||
tP
|
||||
Jy
|
||||
Jy
|
||||
Jy
|
||||
|
||||
@@ -22947,11 +22947,11 @@
|
||||
"brK" = (
|
||||
/obj/docking_port/stationary{
|
||||
dir = 4;
|
||||
dwidth = 15;
|
||||
dwidth = 16;
|
||||
height = 21;
|
||||
id = "emergency_home";
|
||||
name = "emergency evac bay";
|
||||
width = 33
|
||||
width = 41
|
||||
},
|
||||
/turf/space,
|
||||
/area/space)
|
||||
@@ -23086,7 +23086,7 @@
|
||||
/area/station/maintenance/port)
|
||||
"bsg" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/clothing/head/soft/grey{
|
||||
/obj/item/clothing/head/soft{
|
||||
pixel_x = -2;
|
||||
pixel_y = 3
|
||||
},
|
||||
@@ -24963,10 +24963,6 @@
|
||||
"bzd" = (
|
||||
/turf/simulated/floor/plasteel/goonplaque/memorial,
|
||||
/area/station/hallway/secondary/exit)
|
||||
"bze" = (
|
||||
/obj/structure/sign/barsign,
|
||||
/turf/simulated/wall,
|
||||
/area/station/service/bar)
|
||||
"bzf" = (
|
||||
/turf/simulated/floor/plasteel{
|
||||
dir = 1;
|
||||
@@ -40410,6 +40406,7 @@
|
||||
d2 = 4;
|
||||
icon_state = "1-4"
|
||||
},
|
||||
/obj/structure/closet/emcloset,
|
||||
/turf/simulated/floor/plating/airless,
|
||||
/area/station/science/toxins/test)
|
||||
"cDL" = (
|
||||
@@ -52972,7 +52969,6 @@
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/structure/sign/securearea{
|
||||
pixel_x = -32
|
||||
},
|
||||
@@ -63680,6 +63676,12 @@
|
||||
},
|
||||
/turf/simulated/floor/engine,
|
||||
/area/station/science/xenobiology)
|
||||
"iYj" = (
|
||||
/obj/machinery/barsign{
|
||||
pixel_y = 32
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/hallway/primary/starboard/west)
|
||||
"iYo" = (
|
||||
/obj/item/taperecorder,
|
||||
/obj/structure/table,
|
||||
@@ -67423,13 +67425,6 @@
|
||||
icon_state = "darkyellow"
|
||||
},
|
||||
/area/station/science/robotics/chargebay)
|
||||
"kOa" = (
|
||||
/obj/structure/closet/emcloset,
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/simulated/floor/plating/airless,
|
||||
/area/station/science/toxins/test)
|
||||
"kOt" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/turf/simulated/floor/plasteel,
|
||||
@@ -71305,9 +71300,9 @@
|
||||
"mIA" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/stamp/granted,
|
||||
/obj/item/clothing/head/soft,
|
||||
/obj/item/clothing/head/soft/cargo,
|
||||
/obj/item/hand_labeler,
|
||||
/obj/item/clothing/head/soft,
|
||||
/obj/item/clothing/head/soft/cargo,
|
||||
/turf/simulated/floor/plasteel{
|
||||
dir = 4;
|
||||
icon_state = "brown"
|
||||
@@ -72200,6 +72195,15 @@
|
||||
icon_state = "whitepurple"
|
||||
},
|
||||
/area/station/science/toxins/mixing)
|
||||
"nhM" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/simulated/floor/plasteel/airless,
|
||||
/area/station/science/toxins/test)
|
||||
"nhZ" = (
|
||||
/obj/structure/cable{
|
||||
d2 = 4;
|
||||
@@ -74887,7 +74891,6 @@
|
||||
/area/station/maintenance/apmaint)
|
||||
"owP" = (
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/turf/simulated/floor/plating/airless,
|
||||
/area/station/maintenance/asmaint)
|
||||
"oxe" = (
|
||||
@@ -87545,6 +87548,11 @@
|
||||
},
|
||||
/turf/simulated/floor/wood,
|
||||
/area/station/security/permabrig)
|
||||
"uGP" = (
|
||||
/obj/structure/table,
|
||||
/obj/effect/spawner/lootdrop/maintenance,
|
||||
/turf/simulated/floor/plasteel/airless,
|
||||
/area/station/science/toxins/test)
|
||||
"uHC" = (
|
||||
/obj/machinery/computer/communications{
|
||||
dir = 4
|
||||
@@ -93748,6 +93756,13 @@
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/maintenance/apmaint)
|
||||
"xQI" = (
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/simulated/floor/plasteel/airless,
|
||||
/area/station/science/toxins/test)
|
||||
"xQL" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/storage/toolbox/mechanical,
|
||||
@@ -130556,8 +130571,8 @@ bmq
|
||||
bmq
|
||||
bmq
|
||||
bzo
|
||||
bze
|
||||
bAk
|
||||
aUS
|
||||
iYj
|
||||
bHy
|
||||
bDb
|
||||
bEy
|
||||
@@ -152679,9 +152694,9 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
doE
|
||||
doE
|
||||
doE
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aab
|
||||
@@ -152934,15 +152949,15 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aab
|
||||
gnU
|
||||
ldS
|
||||
clB
|
||||
cnk
|
||||
cid
|
||||
cie
|
||||
cie
|
||||
cie
|
||||
cij
|
||||
cvs
|
||||
cie
|
||||
cie
|
||||
@@ -153191,18 +153206,18 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aab
|
||||
aab
|
||||
ldS
|
||||
cjZ
|
||||
cjZ
|
||||
cjZ
|
||||
cie
|
||||
cie
|
||||
ckb
|
||||
cdK
|
||||
xQI
|
||||
cjZ
|
||||
udq
|
||||
ckb
|
||||
nhM
|
||||
cie
|
||||
cie
|
||||
cie
|
||||
clA
|
||||
@@ -153448,19 +153463,19 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aab
|
||||
ldS
|
||||
cjZ
|
||||
cjZ
|
||||
cjZ
|
||||
clB
|
||||
ckb
|
||||
ckb
|
||||
aab
|
||||
cie
|
||||
cie
|
||||
cdK
|
||||
cjZ
|
||||
udq
|
||||
ckb
|
||||
ckb
|
||||
cie
|
||||
cie
|
||||
jgm
|
||||
cjZ
|
||||
@@ -153705,13 +153720,13 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aab
|
||||
aab
|
||||
ldS
|
||||
clA
|
||||
kOa
|
||||
jgm
|
||||
cie
|
||||
ckb
|
||||
cie
|
||||
ckb
|
||||
cdK
|
||||
cjZ
|
||||
@@ -153963,9 +153978,9 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
cid
|
||||
cid
|
||||
cie
|
||||
aaa
|
||||
aab
|
||||
aab
|
||||
cie
|
||||
cie
|
||||
ckb
|
||||
@@ -154220,13 +154235,13 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
cid
|
||||
aab
|
||||
aab
|
||||
cie
|
||||
cie
|
||||
ckb
|
||||
ckb
|
||||
ckb
|
||||
ckb
|
||||
cdK
|
||||
cjZ
|
||||
udq
|
||||
@@ -154476,10 +154491,10 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
cij
|
||||
aab
|
||||
aab
|
||||
cie
|
||||
cie
|
||||
ckb
|
||||
ckb
|
||||
ckb
|
||||
ckb
|
||||
@@ -154733,9 +154748,9 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aab
|
||||
cie
|
||||
cie
|
||||
ckb
|
||||
ckb
|
||||
ckb
|
||||
ckb
|
||||
@@ -155249,7 +155264,7 @@ aaa
|
||||
aaa
|
||||
aab
|
||||
cie
|
||||
ckb
|
||||
uGP
|
||||
ckb
|
||||
ckb
|
||||
ckb
|
||||
|
||||
@@ -2819,7 +2819,7 @@
|
||||
/area/station/maintenance/fore)
|
||||
"aqv" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/structure/sign/barsign{
|
||||
/obj/machinery/barsign{
|
||||
pixel_y = 32
|
||||
},
|
||||
/obj/item/wrench,
|
||||
@@ -4880,7 +4880,7 @@
|
||||
/turf/simulated/floor/engine,
|
||||
/area/station/engineering/controlroom)
|
||||
"avL" = (
|
||||
/obj/structure/sign/barsign{
|
||||
/obj/machinery/barsign{
|
||||
pixel_y = 32
|
||||
},
|
||||
/turf/simulated/floor/plasteel{
|
||||
@@ -9070,7 +9070,7 @@
|
||||
/area/station/service/bar)
|
||||
"aGA" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/structure/sign/barsign{
|
||||
/obj/machinery/barsign{
|
||||
pixel_y = 32
|
||||
},
|
||||
/obj/machinery/chem_dispenser/soda{
|
||||
@@ -10845,7 +10845,6 @@
|
||||
/area/station/maintenance/incinerator)
|
||||
"aLk" = (
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
},
|
||||
@@ -11828,7 +11827,6 @@
|
||||
},
|
||||
/area/station/service/bar)
|
||||
"aOd" = (
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/machinery/atmospherics/pipe/simple/visible{
|
||||
dir = 10
|
||||
},
|
||||
@@ -54205,7 +54203,7 @@
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/sign/barsign{
|
||||
/obj/machinery/barsign{
|
||||
pixel_y = 32
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
@@ -62697,17 +62695,6 @@
|
||||
},
|
||||
/turf/simulated/floor/carpet/blue,
|
||||
/area/station/command/office/blueshield)
|
||||
"dNS" = (
|
||||
/obj/docking_port/stationary{
|
||||
dir = 4;
|
||||
dwidth = 15;
|
||||
height = 21;
|
||||
id = "emergency_home";
|
||||
name = "emergency evac bay";
|
||||
width = 33
|
||||
},
|
||||
/turf/space,
|
||||
/area/space)
|
||||
"dNZ" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/simulated/floor/plasteel{
|
||||
@@ -64687,12 +64674,6 @@
|
||||
icon_state = "neutralfull"
|
||||
},
|
||||
/area/station/hallway/primary/central)
|
||||
"dUY" = (
|
||||
/obj/machinery/light,
|
||||
/obj/machinery/alarm/directional/south,
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/hallway/secondary/exit)
|
||||
"dUZ" = (
|
||||
/obj/machinery/light,
|
||||
/obj/machinery/status_display{
|
||||
@@ -66935,6 +66916,17 @@
|
||||
icon_state = "vault"
|
||||
},
|
||||
/area/station/turret_protected/ai)
|
||||
"eKm" = (
|
||||
/obj/docking_port/stationary{
|
||||
dir = 4;
|
||||
dwidth = 16;
|
||||
height = 21;
|
||||
id = "emergency_home";
|
||||
name = "emergency evac bay";
|
||||
width = 41
|
||||
},
|
||||
/turf/space,
|
||||
/area/space)
|
||||
"eKu" = (
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber/on{
|
||||
dir = 8
|
||||
@@ -70042,9 +70034,6 @@
|
||||
/area/station/command/office/hop)
|
||||
"gFa" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
@@ -73775,10 +73764,6 @@
|
||||
icon_state = "bar"
|
||||
},
|
||||
/area/station/service/kitchen)
|
||||
"iVe" = (
|
||||
/obj/effect/spawner/airlock,
|
||||
/turf/simulated/wall,
|
||||
/area/station/service/chapel/office)
|
||||
"iVg" = (
|
||||
/obj/machinery/economy/atm/directional/west,
|
||||
/turf/simulated/floor/plasteel{
|
||||
@@ -76873,6 +76858,10 @@
|
||||
icon_state = "neutralfull"
|
||||
},
|
||||
/area/station/engineering/atmos)
|
||||
"kQP" = (
|
||||
/obj/effect/spawner/airlock,
|
||||
/turf/simulated/wall,
|
||||
/area/station/hallway/secondary/exit)
|
||||
"kRp" = (
|
||||
/obj/structure/cable{
|
||||
d1 = 1;
|
||||
@@ -82625,15 +82614,6 @@
|
||||
},
|
||||
/area/station/security/prison/cell_block)
|
||||
"ont" = (
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
@@ -84289,6 +84269,12 @@
|
||||
icon_state = "darkred"
|
||||
},
|
||||
/area/station/security/main)
|
||||
"pib" = (
|
||||
/obj/machinery/light,
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/obj/machinery/alarm/directional/south,
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/hallway/secondary/exit)
|
||||
"pjk" = (
|
||||
/turf/simulated/floor/engine,
|
||||
/area/station/science/test_chamber)
|
||||
@@ -136445,7 +136431,7 @@ dUQ
|
||||
dYU
|
||||
dIx
|
||||
abj
|
||||
aaa
|
||||
abj
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
@@ -136700,7 +136686,8 @@ dIx
|
||||
dIx
|
||||
dIx
|
||||
dIx
|
||||
iVe
|
||||
dIx
|
||||
kQP
|
||||
abj
|
||||
aaa
|
||||
aaa
|
||||
@@ -136744,7 +136731,6 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
"}
|
||||
(145,1,1) = {"
|
||||
aaa
|
||||
@@ -136945,6 +136931,7 @@ dLA
|
||||
dMo
|
||||
dKP
|
||||
dKP
|
||||
dKP
|
||||
dOv
|
||||
dPb
|
||||
eBl
|
||||
@@ -137001,7 +136988,6 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
"}
|
||||
(146,1,1) = {"
|
||||
aaa
|
||||
@@ -137203,6 +137189,7 @@ sZI
|
||||
dPM
|
||||
dPM
|
||||
dPM
|
||||
dPM
|
||||
rCw
|
||||
dPM
|
||||
dPM
|
||||
@@ -137258,7 +137245,6 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
"}
|
||||
(147,1,1) = {"
|
||||
aaa
|
||||
@@ -137460,6 +137446,7 @@ hVf
|
||||
dKo
|
||||
dKo
|
||||
dKo
|
||||
dKo
|
||||
rvx
|
||||
dKo
|
||||
dKo
|
||||
@@ -137515,7 +137502,6 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
"}
|
||||
(148,1,1) = {"
|
||||
aaa
|
||||
@@ -137714,6 +137700,7 @@ cYk
|
||||
cYk
|
||||
cYk
|
||||
dbR
|
||||
cYk
|
||||
dbV
|
||||
ddw
|
||||
dNa
|
||||
@@ -137772,7 +137759,6 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
"}
|
||||
(149,1,1) = {"
|
||||
aaa
|
||||
@@ -137971,6 +137957,7 @@ dKo
|
||||
dKo
|
||||
dKo
|
||||
hVf
|
||||
dKo
|
||||
dNb
|
||||
dNN
|
||||
dOw
|
||||
@@ -138029,7 +138016,6 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
"}
|
||||
(150,1,1) = {"
|
||||
aaa
|
||||
@@ -138228,6 +138214,7 @@ dKo
|
||||
gkk
|
||||
dKo
|
||||
hVf
|
||||
dKo
|
||||
dNc
|
||||
dNO
|
||||
dXF
|
||||
@@ -138286,7 +138273,6 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
"}
|
||||
(151,1,1) = {"
|
||||
aaa
|
||||
@@ -138485,6 +138471,7 @@ dKo
|
||||
dKo
|
||||
dKo
|
||||
hVf
|
||||
dKo
|
||||
dNb
|
||||
dNP
|
||||
dOw
|
||||
@@ -138543,7 +138530,6 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
"}
|
||||
(152,1,1) = {"
|
||||
aaa
|
||||
@@ -138742,6 +138728,7 @@ dKp
|
||||
dKp
|
||||
dKp
|
||||
dIh
|
||||
dKo
|
||||
dOu
|
||||
dNQ
|
||||
dOx
|
||||
@@ -138755,7 +138742,7 @@ joI
|
||||
dNc
|
||||
dNQ
|
||||
dOw
|
||||
dUY
|
||||
pib
|
||||
dIH
|
||||
abj
|
||||
aaa
|
||||
@@ -138800,7 +138787,6 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
"}
|
||||
(153,1,1) = {"
|
||||
aaa
|
||||
@@ -138999,6 +138985,7 @@ wgY
|
||||
rIb
|
||||
rIb
|
||||
pJE
|
||||
dKo
|
||||
dNb
|
||||
bGr
|
||||
dOw
|
||||
@@ -139057,7 +139044,6 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
"}
|
||||
(154,1,1) = {"
|
||||
aaa
|
||||
@@ -139259,6 +139245,7 @@ iFB
|
||||
iqq
|
||||
iqq
|
||||
iqq
|
||||
iqq
|
||||
uFa
|
||||
sbt
|
||||
sDb
|
||||
@@ -139282,7 +139269,6 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaZ
|
||||
aaa
|
||||
aaa
|
||||
@@ -139515,6 +139501,7 @@ nIs
|
||||
ngE
|
||||
kuJ
|
||||
kuJ
|
||||
kuJ
|
||||
tJT
|
||||
dXn
|
||||
dXn
|
||||
@@ -139571,7 +139558,6 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
"}
|
||||
(156,1,1) = {"
|
||||
aaa
|
||||
@@ -139772,6 +139758,7 @@ dTJ
|
||||
dMs
|
||||
jac
|
||||
jac
|
||||
jac
|
||||
vSW
|
||||
scA
|
||||
ajq
|
||||
@@ -139828,7 +139815,6 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
"}
|
||||
(157,1,1) = {"
|
||||
aaa
|
||||
@@ -140030,6 +140016,7 @@ dVp
|
||||
dKp
|
||||
dKp
|
||||
dKp
|
||||
dKp
|
||||
pGr
|
||||
rev
|
||||
vJu
|
||||
@@ -140085,7 +140072,6 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
"}
|
||||
(158,1,1) = {"
|
||||
aaa
|
||||
@@ -140287,6 +140273,7 @@ ulH
|
||||
dTy
|
||||
dTy
|
||||
dTy
|
||||
dTy
|
||||
rmq
|
||||
msT
|
||||
dKP
|
||||
@@ -140342,7 +140329,6 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
"}
|
||||
(159,1,1) = {"
|
||||
aaa
|
||||
@@ -140543,6 +140529,7 @@ kpd
|
||||
dHO
|
||||
evE
|
||||
evE
|
||||
evE
|
||||
tJT
|
||||
dKQ
|
||||
jpk
|
||||
@@ -140599,7 +140586,6 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
"}
|
||||
(160,1,1) = {"
|
||||
aaa
|
||||
@@ -140800,6 +140786,7 @@ abj
|
||||
abj
|
||||
abj
|
||||
abj
|
||||
abj
|
||||
pjC
|
||||
dKP
|
||||
pjC
|
||||
@@ -140856,7 +140843,6 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
"}
|
||||
(161,1,1) = {"
|
||||
aaa
|
||||
@@ -141057,6 +141043,7 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
pjC
|
||||
dKQ
|
||||
pjC
|
||||
@@ -141113,7 +141100,6 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
"}
|
||||
(162,1,1) = {"
|
||||
aaa
|
||||
@@ -141317,8 +141303,8 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
dNS
|
||||
aaa
|
||||
eKm
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
|
||||
@@ -6218,10 +6218,6 @@
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/engineering/control)
|
||||
"aHe" = (
|
||||
/obj/structure/sign/barsign,
|
||||
/turf/simulated/wall,
|
||||
/area/station/service/bar)
|
||||
"aHg" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
@@ -10928,7 +10924,7 @@
|
||||
/area/station/public/locker)
|
||||
"aVT" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/clothing/head/soft/grey{
|
||||
/obj/item/clothing/head/soft{
|
||||
pixel_x = -2;
|
||||
pixel_y = 3
|
||||
},
|
||||
@@ -42602,11 +42598,11 @@
|
||||
"cZp" = (
|
||||
/obj/docking_port/stationary{
|
||||
dir = 2;
|
||||
dwidth = 15;
|
||||
dwidth = 16;
|
||||
height = 21;
|
||||
id = "emergency_home";
|
||||
name = "emergency evac bay";
|
||||
width = 33
|
||||
width = 41
|
||||
},
|
||||
/turf/space,
|
||||
/area/space)
|
||||
@@ -71465,20 +71461,6 @@
|
||||
/obj/effect/landmark/damageturf,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/maintenance/apmaint)
|
||||
"oDZ" = (
|
||||
/obj/structure/cable{
|
||||
d1 = 4;
|
||||
d2 = 8;
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/maintenance/port)
|
||||
"oEe" = (
|
||||
/obj/machinery/atmospherics/trinary/filter{
|
||||
dir = 4;
|
||||
@@ -86653,6 +86635,14 @@
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/maintenance/xenobio_south)
|
||||
"uXN" = (
|
||||
/obj/machinery/barsign{
|
||||
pixel_y = -32
|
||||
},
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "redcorner"
|
||||
},
|
||||
/area/station/hallway/primary/starboard)
|
||||
"uYf" = (
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
@@ -115249,7 +115239,7 @@ nBj
|
||||
cgt
|
||||
cdT
|
||||
wfa
|
||||
oDZ
|
||||
bqQ
|
||||
cCj
|
||||
cdT
|
||||
kNJ
|
||||
@@ -127048,8 +127038,8 @@ bjp
|
||||
bez
|
||||
vtx
|
||||
boY
|
||||
bqA
|
||||
aHe
|
||||
uXN
|
||||
bsp
|
||||
ded
|
||||
bEv
|
||||
bEv
|
||||
|
||||
@@ -491,10 +491,6 @@
|
||||
},
|
||||
/turf/simulated/floor/beach/sand,
|
||||
/area/ruin/powered/beach)
|
||||
"Ds" = (
|
||||
/obj/structure/sign/barsign,
|
||||
/turf/simulated/wall/mineral/sandstone,
|
||||
/area/ruin/powered/beach)
|
||||
"Ec" = (
|
||||
/obj/machinery/door/airlock/sandstone{
|
||||
name = "Beach Access"
|
||||
@@ -566,6 +562,12 @@
|
||||
},
|
||||
/turf/simulated/floor/pod,
|
||||
/area/ruin/powered/beach)
|
||||
"Yz" = (
|
||||
/obj/machinery/barsign{
|
||||
pixel_y = 32
|
||||
},
|
||||
/turf/simulated/floor/beach/sand,
|
||||
/area/ruin/powered/beach)
|
||||
|
||||
(1,1,1) = {"
|
||||
aa
|
||||
@@ -1087,8 +1089,8 @@ aC
|
||||
aC
|
||||
aC
|
||||
JF
|
||||
Ds
|
||||
bE
|
||||
aj
|
||||
Yz
|
||||
bE
|
||||
bE
|
||||
bE
|
||||
|
||||
@@ -47,7 +47,7 @@ GLOBAL_LIST(contractors)
|
||||
/// Denotes that this power can not be obtained normally. Primarily used for base types such as [/datum/action/changeling/weapon].
|
||||
#define CHANGELING_UNOBTAINABLE_POWER 3
|
||||
|
||||
#define CHANGELING_FAKEDEATH_TIME 50 SECONDS
|
||||
#define CHANGELING_FAKEDEATH_TIME 50 SECONDS
|
||||
#define CHANGELING_ABSORB_RECENT_SPEECH 8 //The amount of recent spoken lines to gain on absorbing a mob
|
||||
|
||||
/**
|
||||
@@ -62,9 +62,6 @@ GLOBAL_LIST(contractors)
|
||||
*/
|
||||
#define PULSEDEMON_SOURCE_DRAIN_INVALID (-1)
|
||||
|
||||
/proc/ischangeling(mob/M) // TODO: Someone please convert these to proper defines some day.
|
||||
return M.mind?.has_antag_datum(/datum/antagonist/changeling)
|
||||
#define IS_CHANGELING(mob) (isliving(mob) && mob?:mind?:has_antag_datum(/datum/antagonist/changeling))
|
||||
|
||||
// Helper proc that determines if a mob is a mindslave.
|
||||
/proc/ismindslave(mob/living/carbon/human/H)
|
||||
return istype(H) && H.mind.has_antag_datum(/datum/antagonist/mindslave, FALSE)
|
||||
#define IS_MINDSLAVE(mob) (ishuman(mob) && mob?:mind?:has_antag_datum(/datum/antagonist/mindslave, FALSE))
|
||||
|
||||
@@ -37,6 +37,10 @@
|
||||
#define SLOT_HUD_COLLAR 23
|
||||
#define SLOT_HUD_AMOUNT 23
|
||||
|
||||
// Boolean defines for hands
|
||||
#define HAND_BOOL_RIGHT 0
|
||||
#define HAND_BOOL_LEFT 1
|
||||
|
||||
// accessory slots
|
||||
#define ACCESSORY_SLOT_DECOR 1
|
||||
#define ACCESSORY_SLOT_UTILITY 2
|
||||
|
||||
@@ -157,3 +157,10 @@
|
||||
#define STATUS_EFFECT_CONSTANT * 20
|
||||
|
||||
#define IS_HORIZONTAL(x) x.body_position
|
||||
|
||||
/// Compatible firemode is in the gun. Wait until it's held in the user hands.
|
||||
#define AUTOFIRE_STAT_IDLE (1<<0)
|
||||
/// Gun is active and in the user hands. Wait until user does a valid click.
|
||||
#define AUTOFIRE_STAT_ALERT (1<<1)
|
||||
/// Gun is shooting.
|
||||
#define AUTOFIRE_STAT_FIRING (1<<2)
|
||||
|
||||
@@ -10,10 +10,6 @@
|
||||
/// Every proc you pass to RegisterSignal must have this.
|
||||
#define SIGNAL_HANDLER SHOULD_NOT_SLEEP(TRUE)
|
||||
|
||||
/// Signifies that this proc is used to handle signals, but also sleeps.
|
||||
/// Do not use this for new work.
|
||||
#define SIGNAL_HANDLER_DOES_SLEEP
|
||||
|
||||
/// A wrapper for _AddElement that allows us to pretend we're using normal named arguments
|
||||
#define AddElement(arguments...) _AddElement(list(##arguments))
|
||||
/// A wrapper for _RemoveElement that allows us to pretend we're using normal named arguments
|
||||
|
||||
@@ -219,8 +219,17 @@
|
||||
|
||||
/////////////////
|
||||
|
||||
///from base of client/Click(): (atom/target, atom/location, control, params, mob/user)
|
||||
// /client signals
|
||||
|
||||
/// from base of client/Click(): (atom/target, atom/location, control, params, mob/user)
|
||||
#define COMSIG_CLIENT_CLICK "atom_client_click"
|
||||
/// from base of client/MouseDown(): (/client, object, location, control, params)
|
||||
#define COMSIG_CLIENT_MOUSEDOWN "client_mousedown"
|
||||
/// from base of client/MouseUp(): (/client, object, location, control, params)
|
||||
#define COMSIG_CLIENT_MOUSEUP "client_mouseup"
|
||||
#define COMPONENT_CLIENT_MOUSEUP_INTERCEPT (1<<0)
|
||||
/// from base of client/MouseUp(): (/client, object, location, control, params)
|
||||
#define COMSIG_CLIENT_MOUSEDRAG "client_mousedrag"
|
||||
|
||||
///from base of area/Entered(): (/area)
|
||||
#define COMSIG_ENTER_AREA "enter_area"
|
||||
@@ -708,11 +717,16 @@
|
||||
|
||||
// /obj/item/gun signals
|
||||
|
||||
///called in /obj/item/gun/process_fire (user, target, params, zone_override)
|
||||
/// called in /obj/item/gun/process_fire (user, target, params, zone_override)
|
||||
#define COMSIG_MOB_FIRED_GUN "mob_fired_gun"
|
||||
|
||||
///called in /obj/item/gun/process_fire (user, target)
|
||||
/// called in /obj/item/gun/process_fire (user, target)
|
||||
#define COMSIG_GUN_FIRED "gun_fired"
|
||||
/// called in /datum/component/automatic_fire/proc/on_mouse_down: (client/clicker, atom/target, turf/location, control, params)
|
||||
#define COMSIG_AUTOFIRE_ONMOUSEDOWN "autofire_onmousedown"
|
||||
#define COMPONENT_AUTOFIRE_ONMOUSEDOWN_BYPASS (1<<0)
|
||||
/// called in /datum/component/automatic_fire/proc/process_shot(): (atom/target, mob/living/shooter, allow_akimbo, params)
|
||||
#define COMSIG_AUTOFIRE_SHOT "autofire_shot"
|
||||
#define COMPONENT_AUTOFIRE_SHOT_SUCCESS (1<<0)
|
||||
|
||||
// /obj/item/grenade signals
|
||||
|
||||
@@ -1044,3 +1058,9 @@
|
||||
|
||||
// Sent when a mob spawner is attacked directly or via projectile.
|
||||
#define COMSIG_SPAWNER_SET_TARGET "spawner_set_target"
|
||||
|
||||
/// Used by admin-tooling to remove radiation
|
||||
#define COMSIG_ADMIN_DECONTAMINATE "admin_decontaminate"
|
||||
|
||||
/// Sent when bodies transfer between shades/shards and constructs
|
||||
#define COMSIG_SHADE_TO_CONSTRUCT_TRANSFER "shade_to_construct_transfer"
|
||||
|
||||
@@ -50,17 +50,18 @@
|
||||
#define DNA_UI_EYES_G 35
|
||||
#define DNA_UI_EYES_B 36
|
||||
#define DNA_UI_GENDER 37
|
||||
#define DNA_UI_BEARD_STYLE 38
|
||||
#define DNA_UI_HAIR_STYLE 39
|
||||
#define DNA_UI_HACC_STYLE 40
|
||||
#define DNA_UI_BACC_STYLE 41
|
||||
#define DNA_UI_HAIR_GRADIENT_STYLE 42
|
||||
#define DNA_UI_HEAD_MARK_STYLE 43
|
||||
#define DNA_UI_BODY_MARK_STYLE 44
|
||||
#define DNA_UI_TAIL_MARK_STYLE 45
|
||||
#define DNA_UI_PHYSIQUE 46
|
||||
#define DNA_UI_HEIGHT 47
|
||||
#define DNA_UI_LENGTH 48 // Update this when you add something, or you WILL break shit.
|
||||
#define DNA_UI_BODY_TYPE 38
|
||||
#define DNA_UI_BEARD_STYLE 39
|
||||
#define DNA_UI_HAIR_STYLE 40
|
||||
#define DNA_UI_HACC_STYLE 41
|
||||
#define DNA_UI_BACC_STYLE 42
|
||||
#define DNA_UI_HAIR_GRADIENT_STYLE 43
|
||||
#define DNA_UI_HEAD_MARK_STYLE 44
|
||||
#define DNA_UI_BODY_MARK_STYLE 45
|
||||
#define DNA_UI_TAIL_MARK_STYLE 46
|
||||
#define DNA_UI_PHYSIQUE 47
|
||||
#define DNA_UI_HEIGHT 48
|
||||
#define DNA_UI_LENGTH 49 // Update this when you add something, or you WILL break shit.
|
||||
|
||||
#define DNA_SE_LENGTH 55 // Was STRUCDNASIZE, size 27. 15 new blocks added = 42, plus room to grow.
|
||||
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
#define BLOOD_VOLUME_MAXIMUM 2000
|
||||
#define BLOOD_VOLUME_NORMAL 560
|
||||
#define BLOOD_VOLUME_SAFE 501
|
||||
#define BLOOD_VOLUME_STABLE 357
|
||||
#define BLOOD_VOLUME_OKAY 336
|
||||
#define BLOOD_VOLUME_BAD 224
|
||||
#define BLOOD_VOLUME_SURVIVE 122
|
||||
|
||||
@@ -107,6 +107,7 @@
|
||||
#define ui_healthdoll "EAST-1:28,CENTER-1:15"
|
||||
#define ui_health "EAST-1:28,CENTER:17"
|
||||
#define ui_internal "EAST-1:28,CENTER+1:19"
|
||||
#define ui_stamina "EAST-1:28,CENTER-2:15"
|
||||
|
||||
//borgs
|
||||
#define ui_borg_health "EAST-1:28,CENTER-1:15" //borgs have the health display where humans have the pressure damage indicator.
|
||||
|
||||
@@ -58,6 +58,10 @@
|
||||
|
||||
#define isclothing(A) (istype(A, /obj/item/clothing))
|
||||
|
||||
#define isprojectile(A) (istype(A, /obj/item/projectile))
|
||||
|
||||
#define isgun(A) (istype(A, /obj/item/gun))
|
||||
|
||||
#define is_pen(W) (istype(W, /obj/item/pen) || istype(W, /obj/item/flashlight/pen))
|
||||
|
||||
#define is_pda(W) (istype(W, /obj/item/pda))
|
||||
|
||||
@@ -14,4 +14,4 @@
|
||||
#define MARTIAL_COMBO_STEP_HELP "Help"
|
||||
|
||||
// A check used for all act types. Such as disarm_act
|
||||
#define MARTIAL_ARTS_ACT_CHECK if((. = ..()) != FALSE) return .
|
||||
#define MARTIAL_ARTS_ACT_CHECK if((. = ..()) != FALSE) return
|
||||
|
||||
@@ -398,7 +398,7 @@
|
||||
#define INVESTIGATE_BOMB "bombs"
|
||||
|
||||
// The SQL version required by this version of the code
|
||||
#define SQL_VERSION 54
|
||||
#define SQL_VERSION 55
|
||||
|
||||
// Vending machine stuff
|
||||
#define CAT_NORMAL (1<<0)
|
||||
|
||||
@@ -263,8 +263,6 @@
|
||||
#define ispathsilicon(A) (ispath(A, /mob/living/silicon))
|
||||
#define ispathanimal(A) (ispath(A, /mob/living/simple_animal))
|
||||
|
||||
#define isAutoAnnouncer(A) (istype((A), /mob/living/automatedannouncer))
|
||||
|
||||
#define iscameramob(A) (istype((A), /mob/camera))
|
||||
#define isAIEye(A) (istype((A), /mob/camera/aiEye))
|
||||
#define isovermind(A) (istype((A), /mob/camera/blob))
|
||||
@@ -359,3 +357,9 @@
|
||||
#define TS_TIER_3 3
|
||||
#define TS_TIER_4 4
|
||||
#define TS_TIER_5 5
|
||||
|
||||
/* Defines used for `incorporeal_move` */
|
||||
#define NO_INCORPOREAL_MOVE 0
|
||||
#define INCORPOREAL_MOVE_NORMAL 1
|
||||
#define INCORPOREAL_MOVE_NINJA 2
|
||||
#define INCORPOREAL_MOVE_HOLY_BLOCK 3
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
#define PREFTOGGLE_CHAT_DEAD (1<<1)
|
||||
#define PREFTOGGLE_CHAT_GHOSTEARS (1<<2)
|
||||
#define PREFTOGGLE_CHAT_GHOSTSIGHT (1<<3)
|
||||
#define PREFTOGGLE_CHAT_PRAYER (1<<4)
|
||||
#define PREFTOGGLE_CHAT_PRAYER (1<<4) // Defunct
|
||||
#define PREFTOGGLE_CHAT_RADIO (1<<5)
|
||||
// #define PREFTOGGLE_AZERTY (1<<6) // obsolete
|
||||
#define PREFTOGGLE_CHAT_DEBUGLOGS (1<<7)
|
||||
@@ -81,6 +81,21 @@
|
||||
#error toggles_2 bitflag over 16777215. Please make an issue report and postpone the feature you are working on.
|
||||
#endif
|
||||
|
||||
// This is a list index. Required to start at 1 instead of 0 so it's properly placed in the list
|
||||
#define PREFTOGGLE_CATEGORY_GENERAL 1
|
||||
#define PREFTOGGLE_CATEGORY_LIVING 2
|
||||
#define PREFTOGGLE_CATEGORY_GHOST 3
|
||||
#define PREFTOGGLE_CATEGORY_ADMIN 4
|
||||
|
||||
// Preftoggle type defines
|
||||
/// Special toggles, stuff that just overrides set_toggles entirely
|
||||
#define PREFTOGGLE_SPECIAL 0
|
||||
/// Interacts with the sound bitflag
|
||||
#define PREFTOGGLE_SOUND 1
|
||||
/// Interacts with the toggles bitflag
|
||||
#define PREFTOGGLE_TOGGLE1 2
|
||||
/// Interacts with the toggles2 bitflag
|
||||
#define PREFTOGGLE_TOGGLE2 3
|
||||
|
||||
|
||||
// Admin attack logs filter system, see /proc/add_attack_logs and /proc/msg_admin_attack
|
||||
@@ -133,6 +148,7 @@
|
||||
#define TAB_ANTAG 2
|
||||
#define TAB_GEAR 3
|
||||
#define TAB_KEYS 4
|
||||
#define TAB_TOGGLES 5
|
||||
|
||||
// Colourblind modes
|
||||
#define COLOURBLIND_MODE_NONE "None"
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
#define STATUS_EFFECT_SHADOW_MEND /datum/status_effect/shadow_mend //Quick, powerful heal that deals damage afterwards. Heals 15 brute/burn every second for 3 seconds.
|
||||
#define STATUS_EFFECT_VOID_PRICE /datum/status_effect/void_price //The price of healing yourself with void energy. Deals 3 brute damage every 3 seconds for 30 seconds.
|
||||
|
||||
#define STATUS_EFFECT_SHADOW_MEND_DEVIL /datum/status_effect/shadow_mend/devil //Tarot version, hurts others over self
|
||||
|
||||
#define STATUS_EFFECT_HIPPOCRATIC_OATH /datum/status_effect/hippocraticOath //Gives you an aura of healing as well as regrowing the Rod of Asclepius if lost
|
||||
|
||||
#define STATUS_EFFECT_REGENERATIVE_CORE /datum/status_effect/regenerative_core
|
||||
@@ -37,6 +39,8 @@
|
||||
|
||||
#define STATUS_EFFECT_BLOODDRUNK /datum/status_effect/blooddrunk //Stun immunity and greatly reduced damage taken
|
||||
|
||||
#define STATUS_EFFECT_BLOODDRUNK_CHARIOT /datum/status_effect/blooddrunk/chariot //adds pacifism
|
||||
|
||||
#define STATUS_EFFECT_DASH /datum/status_effect/dash // Grants the ability to dash, expiring after a few secodns
|
||||
|
||||
/// Rapid burn/brute/oxy/blood healing from the cling ability
|
||||
@@ -62,6 +66,12 @@
|
||||
|
||||
#define STATUS_EFFECT_BEARSERKER_RAGE /datum/status_effect/bearserker_rage
|
||||
|
||||
#define STATUS_EFFECT_XRAY /datum/status_effect/xray // Xray vision for 2 minutes
|
||||
|
||||
#define STATUS_EFFECT_BADASS /datum/status_effect/badass // Badass trait for 2 minutes.
|
||||
|
||||
#define STATUS_EFFECT_REVERSED_SUN /datum/status_effect/reversed_sun // Weaker eternal darkness, nightvision, but nearsight
|
||||
|
||||
/////////////
|
||||
// DEBUFFS //
|
||||
/////////////
|
||||
@@ -114,6 +124,8 @@
|
||||
|
||||
#define STATUS_EFFECT_PEPPERSPRAYED /datum/status_effect/pepper_spray
|
||||
|
||||
#define STATUS_EFFECT_REVERSED_HIGH_PRIESTESS /datum/status_effect/reversed_high_priestess //Bubblegum will chase the person hit by the effect, grabbing people at random. This can and WILL include the caster.
|
||||
|
||||
//#define STATUS_EFFECT_NECROPOLIS_CURSE /datum/status_effect/necropolis_curse
|
||||
//#define CURSE_BLINDING 1 //makes the edges of the target's screen obscured
|
||||
//#define CURSE_SPAWNING 2 //spawns creatures that attack the target only
|
||||
|
||||
@@ -242,7 +242,6 @@
|
||||
continue
|
||||
if(is_same_root_atom(M, speaker_coverage[ear]))
|
||||
. |= M
|
||||
return .
|
||||
|
||||
/proc/inLineOfSight(X1,Y1,X2,Y2,Z=1,PX1=16.5,PY1=16.5,PX2=16.5,PY2=16.5)
|
||||
var/turf/T
|
||||
|
||||
@@ -139,6 +139,11 @@
|
||||
if(initial(D.name))
|
||||
GLOB.keybindings += new path()
|
||||
|
||||
for(var/path in subtypesof(/datum/preference_toggle))
|
||||
var/datum/preference_toggle/pref_toggle = path
|
||||
if(initial(pref_toggle.name))
|
||||
GLOB.preference_toggles += new path()
|
||||
|
||||
for(var/path in subtypesof(/datum/objective))
|
||||
var/datum/objective/O = path
|
||||
if(isnull(initial(O.name)))
|
||||
|
||||
@@ -43,8 +43,6 @@
|
||||
if(hairstyle == "Bald") //Just in case.
|
||||
valid_hairstyles += hairstyle
|
||||
continue
|
||||
if((gender == MALE && S.gender == FEMALE) || (gender == FEMALE && S.gender == MALE))
|
||||
continue
|
||||
if(species == "Machine") //If the user is a species who can have a robotic head...
|
||||
if(!robohead)
|
||||
robohead = GLOB.all_robolimbs["Morpheus Cyberkinetics"]
|
||||
@@ -72,8 +70,6 @@
|
||||
if(facialhairstyle == "Shaved") //Just in case.
|
||||
valid_facial_hairstyles += facialhairstyle
|
||||
continue
|
||||
if((gender == MALE && S.gender == FEMALE) || (gender == FEMALE && S.gender == MALE))
|
||||
continue
|
||||
if(species == "Machine") //If the user is a species who can have a robotic head...
|
||||
if(!robohead)
|
||||
robohead = GLOB.all_robolimbs["Morpheus Cyberkinetics"]
|
||||
@@ -171,10 +167,13 @@
|
||||
current_species = GLOB.all_species[species]
|
||||
|
||||
if(!current_species || current_species.name == "Human")
|
||||
if(gender==FEMALE)
|
||||
return capitalize(pick(GLOB.first_names_female)) + " " + capitalize(pick(GLOB.last_names))
|
||||
else
|
||||
return capitalize(pick(GLOB.first_names_male)) + " " + capitalize(pick(GLOB.last_names))
|
||||
switch(gender)
|
||||
if(FEMALE)
|
||||
return capitalize(pick(GLOB.first_names_female)) + " " + capitalize(pick(GLOB.last_names))
|
||||
if(MALE)
|
||||
return capitalize(pick(GLOB.first_names_male)) + " " + capitalize(pick(GLOB.last_names))
|
||||
else
|
||||
return capitalize(pick(GLOB.first_names_male + GLOB.first_names_female)) + " " + capitalize(pick(GLOB.last_names))
|
||||
else
|
||||
return current_species.get_random_name(gender)
|
||||
|
||||
@@ -190,7 +189,6 @@
|
||||
return min(max(. + rand(-25, 25), -185), 34)
|
||||
else if(species == "Vox")
|
||||
. = rand(1, 6)
|
||||
return .
|
||||
|
||||
/proc/skintone2racedescription(tone, species = "Human")
|
||||
if(species == "Human")
|
||||
@@ -610,7 +608,7 @@ GLOBAL_LIST_EMPTY(do_after_once_tracker)
|
||||
var/viewX
|
||||
var/viewY
|
||||
if(isnum(view))
|
||||
var/totalviewrange = 1 + 2 * view
|
||||
var/totalviewrange = (view < 0 ? -1 : 1) + 2 * view
|
||||
viewX = totalviewrange
|
||||
viewY = totalviewrange
|
||||
else if(istext(view))
|
||||
@@ -626,6 +624,12 @@ GLOBAL_LIST_EMPTY(do_after_once_tracker)
|
||||
|
||||
return list(viewX, viewY)
|
||||
|
||||
/proc/in_view_range(mob/user, atom/A)
|
||||
var/list/view_range = getviewsize(user.client.view)
|
||||
var/turf/source = get_turf(user)
|
||||
var/turf/target = get_turf(A)
|
||||
return ISINRANGE(target.x, source.x - view_range[1], source.x + view_range[1]) && ISINRANGE(target.y, source.y - view_range[2], source.y + view_range[2])
|
||||
|
||||
//Used in chemical_mob_spawn. Generates a random mob based on a given gold_core_spawnable value.
|
||||
/proc/create_random_mob(spawn_location, mob_class = HOSTILE_SPAWN)
|
||||
var/static/list/mob_spawn_meancritters = list() // list of possible hostile mobs
|
||||
|
||||
@@ -12,9 +12,12 @@
|
||||
return default
|
||||
|
||||
/proc/sanitize_inlist(value, list/List, default)
|
||||
if(value in List) return value
|
||||
if(default) return default
|
||||
if(length(List)) return pick(List)
|
||||
if(value in List)
|
||||
return value
|
||||
if(default)
|
||||
return default
|
||||
if(length(List))
|
||||
return pick(List)
|
||||
|
||||
/proc/sanitize_json(json_input)
|
||||
if(length(json_input) && istext(json_input))
|
||||
@@ -23,31 +26,37 @@
|
||||
|
||||
|
||||
//more specialised stuff
|
||||
/proc/sanitize_gender(gender,neuter=0,plural=0, default="male")
|
||||
/proc/sanitize_gender(gender, neuter = FALSE, default = "male")
|
||||
switch(gender)
|
||||
if(MALE, FEMALE)return gender
|
||||
if(MALE, FEMALE, PLURAL)
|
||||
return gender
|
||||
if(NEUTER)
|
||||
if(neuter) return gender
|
||||
else return default
|
||||
if(PLURAL)
|
||||
if(plural) return gender
|
||||
else return default
|
||||
if(neuter)
|
||||
return gender
|
||||
else
|
||||
return default
|
||||
return default
|
||||
|
||||
/proc/sanitize_hexcolor(color, default="#000000")
|
||||
if(!istext(color)) return default
|
||||
if(!istext(color))
|
||||
return default
|
||||
var/len = length(color)
|
||||
if(len != 7 && len !=4) return default
|
||||
if(text2ascii(color,1) != 35) return default //35 is the ascii code for "#"
|
||||
if(len != 7 && len !=4)
|
||||
return default
|
||||
if(text2ascii(color, 1) != 35)
|
||||
return default //35 is the ascii code for "#"
|
||||
. = "#"
|
||||
for(var/i=2,i<=len,i++)
|
||||
var/ascii = text2ascii(color,i)
|
||||
switch(ascii)
|
||||
if(48 to 57) . += ascii2text(ascii) //numbers 0 to 9
|
||||
if(97 to 102) . += ascii2text(ascii) //letters a to f
|
||||
if(65 to 70) . += ascii2text(ascii+32) //letters A to F - translates to lowercase
|
||||
else return default
|
||||
return .
|
||||
if(48 to 57)
|
||||
. += ascii2text(ascii) //numbers 0 to 9
|
||||
if(97 to 102)
|
||||
. += ascii2text(ascii) //letters a to f
|
||||
if(65 to 70)
|
||||
. += ascii2text(ascii + 32) //letters A to F - translates to lowercase
|
||||
else
|
||||
return default
|
||||
|
||||
/proc/sanitize_ooccolor(color)
|
||||
var/list/HSL = rgb2hsl(hex2num(copytext(color,2,4)),hex2num(copytext(color,4,6)),hex2num(copytext(color,6,8)))
|
||||
|
||||
@@ -26,11 +26,6 @@
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/proc/iscrowbar(O)
|
||||
if(istype(O, /obj/item/crowbar))
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/proc/iscoil(O)
|
||||
if(istype(O, /obj/item/stack/cable_coil))
|
||||
return TRUE
|
||||
|
||||
@@ -70,20 +70,14 @@
|
||||
return num_list
|
||||
|
||||
//Splits the text of a file at seperator and returns them in a list.
|
||||
/proc/file2list(filename, seperator="\n")
|
||||
return splittext(return_file_text(filename),seperator)
|
||||
|
||||
|
||||
//Turns a direction into text
|
||||
|
||||
/proc/num2dir(direction)
|
||||
switch(direction)
|
||||
if(1.0) return NORTH
|
||||
if(2.0) return SOUTH
|
||||
if(4.0) return EAST
|
||||
if(8.0) return WEST
|
||||
else
|
||||
stack_trace("UNKNOWN DIRECTION: [direction]")
|
||||
/proc/file2list(filename, separator = "\n", no_empty = TRUE)
|
||||
var/list/result = list()
|
||||
for(var/line in splittext(return_file_text(filename), separator))
|
||||
var/text = trim(line)
|
||||
if(no_empty && !text)
|
||||
continue
|
||||
result += text
|
||||
return result
|
||||
|
||||
/proc/dir2text(direction)
|
||||
switch(direction)
|
||||
@@ -193,7 +187,6 @@
|
||||
if(rights & R_MENTOR) . += "[seperator]+MENTOR"
|
||||
if(rights & R_VIEWRUNTIMES) . += "[seperator]+VIEWRUNTIMES"
|
||||
if(rights & R_MAINTAINER) . += "[seperator]+MAINTAINER"
|
||||
return .
|
||||
|
||||
/proc/ui_style2icon(ui_style)
|
||||
switch(ui_style)
|
||||
|
||||
@@ -262,40 +262,6 @@
|
||||
/proc/format_frequency(f)
|
||||
return "[round(f / 10)].[f % 10]"
|
||||
|
||||
/obj/proc/atmosanalyzer_scan(datum/gas_mixture/air_contents, mob/user, obj/target = src)
|
||||
var/obj/icon = target
|
||||
if(isliving(user))
|
||||
user.visible_message("<span class='notice'>[user] uses the analyzer on [target].</span>", "<span class='notice'>You use the analyzer on [target].</span>")
|
||||
var/pressure = air_contents.return_pressure()
|
||||
var/total_moles = air_contents.total_moles()
|
||||
var/volume = air_contents.return_volume()
|
||||
|
||||
user.show_message("<span class='notice'>Results of analysis of [bicon(icon)] [target].</span>", 1)
|
||||
if(total_moles>0)
|
||||
var/o2_concentration = air_contents.oxygen/total_moles
|
||||
var/n2_concentration = air_contents.nitrogen/total_moles
|
||||
var/co2_concentration = air_contents.carbon_dioxide/total_moles
|
||||
var/plasma_concentration = air_contents.toxins/total_moles
|
||||
var/n2o_concentration = air_contents.sleeping_agent/total_moles
|
||||
|
||||
var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+plasma_concentration+n2o_concentration)
|
||||
|
||||
user.show_message("<span class='notice'>Pressure: [round(pressure,0.1)] kPa</span>", 1)
|
||||
user.show_message("<span class='notice'>Nitrogen: [round(n2_concentration*100)] % ([round(air_contents.nitrogen,0.01)] moles)</span>", 1)
|
||||
user.show_message("<span class='notice'>Oxygen: [round(o2_concentration*100)] % ([round(air_contents.oxygen,0.01)] moles)</span>", 1)
|
||||
user.show_message("<span class='notice'>CO2: [round(co2_concentration*100)] % ([round(air_contents.carbon_dioxide,0.01)] moles)</span>", 1)
|
||||
user.show_message("<span class='notice'>Plasma: [round(plasma_concentration*100)] % ([round(air_contents.toxins,0.01)] moles)</span>", 1)
|
||||
user.show_message("<span class='notice'>Nitrous Oxide: [round(n2o_concentration*100)] % ([round(air_contents.sleeping_agent,0.01)] moles)</span>", 1)
|
||||
if(unknown_concentration>0.01)
|
||||
user.show_message("<span class='danger'>Unknown: [round(unknown_concentration*100)] % ([round(unknown_concentration*total_moles,0.01)] moles)</span>", 1)
|
||||
user.show_message("<span class='notice'>Total: [round(total_moles,0.01)] moles</span>", 1)
|
||||
user.show_message("<span class='notice'>Temperature: [round(air_contents.temperature-T0C)] °C</span>", 1)
|
||||
user.show_message("<span class='notice'>Volume: [round(volume)] Liters</span>", 1)
|
||||
else
|
||||
user.show_message("<span class='notice'>[target] is empty!</span>", 1)
|
||||
user.show_message("<span class='notice'>Volume: [round(volume)] Liters</span>", 1)
|
||||
return
|
||||
|
||||
//Picks a string of symbols to display as the law number for hacked or ion laws
|
||||
/proc/ionnum()
|
||||
return "[pick("!","@","#","$","%","^","&","*")][pick("!","@","#","$","%","^","&","*")][pick("!","@","#","$","%","^","&","*")][pick("!","@","#","$","%","^","&","*")]"
|
||||
@@ -323,7 +289,6 @@
|
||||
if(A.control_disabled)
|
||||
continue
|
||||
. += A
|
||||
return .
|
||||
|
||||
//Find an active ai with the least borgs. VERBOSE PROCNAME HUH!
|
||||
/proc/select_active_ai_with_fewest_borgs()
|
||||
@@ -1207,7 +1172,7 @@ GLOBAL_LIST_INIT(wall_items, typecacheof(list(/obj/machinery/power/apc, /obj/mac
|
||||
/obj/machinery/computer/security/telescreen, /obj/machinery/airlock_controller,
|
||||
/obj/item/storage/secure/safe, /obj/machinery/door_timer, /obj/machinery/flasher, /obj/machinery/keycard_auth,
|
||||
/obj/structure/mirror, /obj/structure/closet/fireaxecabinet, /obj/machinery/computer/security/telescreen/entertainment,
|
||||
/obj/structure/sign)))
|
||||
/obj/structure/sign, /obj/machinery/barsign)))
|
||||
|
||||
/proc/gotwallitem(loc, dir)
|
||||
for(var/obj/O in loc)
|
||||
@@ -1951,6 +1916,27 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
|
||||
pixel_x = initialpixelx
|
||||
pixel_y = initialpixely
|
||||
|
||||
/// Returns a turf based on text inputs, original turf and viewing client
|
||||
/proc/parse_caught_click_modifiers(list/modifiers, turf/origin, client/viewing_client)
|
||||
if(!modifiers)
|
||||
return
|
||||
|
||||
var/screen_loc = splittext(modifiers["screen-loc"], ",")
|
||||
var/list/actual_view = getviewsize(viewing_client ? viewing_client.view : world.view)
|
||||
var/click_turf_x = splittext(screen_loc[1], ":")
|
||||
var/click_turf_y = splittext(screen_loc[2], ":")
|
||||
var/click_turf_z = origin.z
|
||||
|
||||
var/click_turf_px = text2num(click_turf_x[2])
|
||||
var/click_turf_py = text2num(click_turf_y[2])
|
||||
click_turf_x = origin.x + text2num(click_turf_x[1]) - round(actual_view[1] / 2) - 1
|
||||
click_turf_y = origin.y + text2num(click_turf_y[1]) - round(actual_view[2] / 2) - 1
|
||||
|
||||
var/turf/click_turf = locate(clamp(click_turf_x, 1, world.maxx), clamp(click_turf_y, 1, world.maxy), click_turf_z)
|
||||
LAZYSET(modifiers, "icon-x", "[(click_turf_px - click_turf.pixel_x) + ((click_turf_x - click_turf.x) * world.icon_size)]")
|
||||
LAZYSET(modifiers, "icon-y", "[(click_turf_py - click_turf.pixel_y) + ((click_turf_y - click_turf.y) * world.icon_size)]")
|
||||
return click_turf
|
||||
|
||||
/proc/params2turf(scr_loc, turf/origin, client/C)
|
||||
if(!scr_loc)
|
||||
return null
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
GLOBAL_LIST_EMPTY(preference_toggles)
|
||||
|
||||
GLOBAL_LIST_INIT(preference_toggle_groups, list(
|
||||
"General Preferences" = PREFTOGGLE_CATEGORY_GENERAL,
|
||||
"In-Round Preferences" = PREFTOGGLE_CATEGORY_LIVING,
|
||||
"Ghost Preferences" = PREFTOGGLE_CATEGORY_GHOST,
|
||||
"Admin Preferences" = PREFTOGGLE_CATEGORY_ADMIN,
|
||||
))
|
||||
@@ -47,4 +47,71 @@ actually if you do something in that proc like changing user location or whateve
|
||||
to inform the game this action was expected and its fine
|
||||
*/
|
||||
/atom/proc/MouseDrop_T(atom/dropping, mob/user, params) // return TRUE if you want to prevent us click the object after it
|
||||
return
|
||||
return FALSE
|
||||
|
||||
/client/MouseDown(datum/object, location, control, params)
|
||||
if(QDELETED(object)) // Yep, you can click on qdeleted things before they have time to nullspace. Fun.
|
||||
return
|
||||
SEND_SIGNAL(src, COMSIG_CLIENT_MOUSEDOWN, object, location, control, params)
|
||||
if(mouse_down_icon)
|
||||
mouse_pointer_icon = mouse_down_icon
|
||||
var/delay = mob.CanMobAutoclick(object, location, params)
|
||||
if(delay)
|
||||
selected_target[1] = object
|
||||
selected_target[2] = params
|
||||
while(selected_target[1])
|
||||
Click(selected_target[1], location, control, selected_target[2])
|
||||
sleep(delay)
|
||||
|
||||
/client/MouseUp(object, location, control, params)
|
||||
if(SEND_SIGNAL(src, COMSIG_CLIENT_MOUSEUP, object, location, control, params) & COMPONENT_CLIENT_MOUSEUP_INTERCEPT)
|
||||
click_intercept_time = world.time
|
||||
if(mouse_up_icon)
|
||||
mouse_pointer_icon = mouse_up_icon
|
||||
selected_target[1] = null
|
||||
|
||||
/mob/proc/CanMobAutoclick(object, location, params)
|
||||
return FALSE
|
||||
|
||||
/mob/living/carbon/CanMobAutoclick(atom/object, location, params)
|
||||
if(!object.IsAutoclickable())
|
||||
return FALSE
|
||||
var/obj/item/active_item = get_active_hand()
|
||||
return active_item?.CanItemAutoclick(object, location, params)
|
||||
|
||||
/obj/item/proc/CanItemAutoclick(object, location, params)
|
||||
return FALSE
|
||||
|
||||
/atom/proc/IsAutoclickable()
|
||||
return TRUE
|
||||
|
||||
/obj/screen/IsAutoclickable()
|
||||
return FALSE
|
||||
|
||||
/obj/screen/click_catcher/IsAutoclickable()
|
||||
return TRUE
|
||||
|
||||
// The actual arguments of this:
|
||||
// MouseDrag(src_object as null|atom in usr.client,
|
||||
// over_object as null|atom in usr.client,
|
||||
// src_location as null|turf|text in usr.client,
|
||||
// over_location as null|turf|text in usr.client,
|
||||
// src_control as text, over_control as text, params as text)
|
||||
/client/MouseDrag(src_object, atom/over_object, src_location, turf/over_location, src_control, over_control, params)
|
||||
var/list/modifiers = params2list(params)
|
||||
if(!drag_start) // If we're just starting to drag
|
||||
drag_start = world.time
|
||||
drag_details = modifiers.Copy()
|
||||
mouseParams = params
|
||||
mouse_location_UID = isturf(over_location) ? over_location.UID() : over_location
|
||||
mouse_object_UID = over_object?.UID()
|
||||
if(selected_target[1] && over_object?.IsAutoclickable())
|
||||
selected_target[1] = over_object
|
||||
selected_target[2] = params
|
||||
SEND_SIGNAL(src, COMSIG_CLIENT_MOUSEDRAG, src_object, over_object, src_location, over_location, src_control, over_control, params)
|
||||
return ..()
|
||||
|
||||
/client/MouseDrop(atom/src_object, atom/over_object, atom/src_location, atom/over_location, src_control, over_control, params)
|
||||
..()
|
||||
drag_start = 0
|
||||
drag_details = null
|
||||
|
||||
@@ -329,6 +329,9 @@
|
||||
mymob.healths = new /atom/movable/screen/healths()
|
||||
infodisplay += mymob.healths
|
||||
|
||||
mymob.staminas = new /atom/movable/screen/healths/stamina()
|
||||
infodisplay += mymob.staminas
|
||||
|
||||
mymob.healthdoll = new()
|
||||
infodisplay += mymob.healthdoll
|
||||
|
||||
@@ -483,16 +486,3 @@
|
||||
H.r_hand.screen_loc = null
|
||||
if(H.l_hand)
|
||||
H.l_hand.screen_loc = null
|
||||
|
||||
|
||||
/mob/living/carbon/human/verb/toggle_hotkey_verbs()
|
||||
set category = "OOC"
|
||||
set name = "Toggle Hotkey Buttons"
|
||||
set desc = "This disables or enables the user interface buttons which can be used with hotkeys."
|
||||
|
||||
if(hud_used.hotkey_ui_hidden)
|
||||
client.screen += hud_used.hotkeybuttons
|
||||
hud_used.hotkey_ui_hidden = FALSE
|
||||
else
|
||||
client.screen -= hud_used.hotkeybuttons
|
||||
hud_used.hotkey_ui_hidden = TRUE
|
||||
|
||||
@@ -10,6 +10,7 @@ GLOBAL_LIST_EMPTY(radial_menus)
|
||||
var/datum/radial_menu/parent
|
||||
|
||||
/atom/movable/screen/radial/Destroy()
|
||||
parent.current_user.screen -= src
|
||||
parent = null
|
||||
return ..()
|
||||
|
||||
@@ -245,7 +246,7 @@ GLOBAL_LIST_EMPTY(radial_menus)
|
||||
QDEL_LIST_CONTENTS(elements)
|
||||
QDEL_NULL(close_button)
|
||||
anchor = null
|
||||
. = ..()
|
||||
return ..()
|
||||
|
||||
/*
|
||||
Presents radial menu to user anchored to anchor (or user if the anchor is currently in users screen)
|
||||
|
||||
@@ -486,9 +486,9 @@
|
||||
var/mob/M = usr
|
||||
switch(name)
|
||||
if("right hand", "r_hand")
|
||||
M.activate_hand("r")
|
||||
M.activate_hand(HAND_BOOL_RIGHT)
|
||||
if("left hand", "l_hand")
|
||||
M.activate_hand("l")
|
||||
M.activate_hand(HAND_BOOL_LEFT)
|
||||
return TRUE
|
||||
|
||||
/atom/movable/screen/swap_hand
|
||||
@@ -562,3 +562,7 @@
|
||||
/atom/movable/screen/component_button/Click(params)
|
||||
if(parent)
|
||||
parent.component_click(src, params)
|
||||
|
||||
/atom/movable/screen/healths/stamina
|
||||
icon_state = "stamina_0"
|
||||
screen_loc = ui_stamina
|
||||
|
||||
@@ -77,9 +77,12 @@
|
||||
/mob/dead/observer/MiddleShiftControlClickOn(atom/A)
|
||||
return
|
||||
|
||||
/atom/proc/attack_ghost(mob/user)
|
||||
/atom/proc/attack_ghost(mob/dead/observer/user)
|
||||
if(SEND_SIGNAL(src, COMSIG_ATOM_ATTACK_GHOST, user) & COMPONENT_CANCEL_ATTACK_CHAIN)
|
||||
return TRUE
|
||||
if(user.client)
|
||||
if(user.gas_scan && atmos_scan(user=user, target=src, silent=TRUE))
|
||||
return TRUE
|
||||
|
||||
// health + machine analyzer for ghosts
|
||||
/mob/living/attack_ghost(mob/dead/observer/user)
|
||||
@@ -106,14 +109,3 @@
|
||||
/obj/effect/portal/attack_ghost(mob/user as mob)
|
||||
if(target)
|
||||
user.forceMove(get_turf(target))
|
||||
|
||||
/obj/machinery/atmospherics/attack_ghost(mob/dead/observer/user)
|
||||
if(!istype(user)) // Make sure user is actually an observer. Revenents also use attack_ghost, but do not have the toggle gas analyzer var.
|
||||
return
|
||||
if(user.gas_analyzer)
|
||||
if(istype(src, /obj/machinery/atmospherics/pipe))
|
||||
var/obj/machinery/atmospherics/pipe/T = src
|
||||
atmosanalyzer_scan(T.parent.air, user, T)
|
||||
else if(istype(src, /obj/machinery/atmospherics/unary))
|
||||
var/obj/machinery/atmospherics/unary/T = src
|
||||
atmosanalyzer_scan(T.air_contents, user, T)
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
var/allow_antag_hud = TRUE
|
||||
/// Forbid players from rejoining if they use AntagHUD?
|
||||
var/restrict_antag_hud_rejoin = TRUE
|
||||
/// Enable respanws by default?
|
||||
/// Enable respawns by default?
|
||||
var/respawn_enabled = FALSE
|
||||
/// Enable CID randomiser buster?
|
||||
var/enabled_cid_randomiser_buster = FALSE
|
||||
@@ -93,8 +93,8 @@
|
||||
CONFIG_LOAD_BOOL(guest_ban, data["guest_ban"])
|
||||
CONFIG_LOAD_BOOL(allow_antag_hud, data["allow_antag_hud"])
|
||||
CONFIG_LOAD_BOOL(restrict_antag_hud_rejoin, data["restrict_antag_hud_rejoin"])
|
||||
CONFIG_LOAD_BOOL(respawn_enabled, data["respawn_enabled"])
|
||||
CONFIG_LOAD_BOOL(enabled_cid_randomiser_buster, data["enable_cid_randomiser_buster"])
|
||||
CONFIG_LOAD_BOOL(respawn_enabled, data["respawn_enabled"])
|
||||
CONFIG_LOAD_BOOL(forbid_singulo_possession, data["prevent_admin_singlo_possession"])
|
||||
CONFIG_LOAD_BOOL(popup_admin_pm, data["popup_admin_pm"])
|
||||
CONFIG_LOAD_BOOL(allow_holidays, data["allow_holidays"])
|
||||
|
||||
@@ -13,6 +13,8 @@ PROCESSING_SUBSYSTEM_DEF(radiation)
|
||||
var/rad_cache_update_interval = 5 SECONDS
|
||||
var/list/turf_rad_cache = list()
|
||||
var/list/prev_rad_cache = list()
|
||||
/// Lazy list of all radioactive components
|
||||
var/list/all_radiations
|
||||
|
||||
|
||||
/datum/controller/subsystem/processing/radiation/proc/warn(datum/component/radioactive/contamination)
|
||||
|
||||
@@ -81,9 +81,9 @@ SUBSYSTEM_DEF(ticker)
|
||||
switch(current_state)
|
||||
if(GAME_STATE_STARTUP)
|
||||
// This is ran as soon as the MC starts firing, and should only run ONCE, unless startup fails
|
||||
round_start_time = world.time + (GLOB.configuration.general.lobby_time SECONDS)
|
||||
pregame_timeleft = GLOB.configuration.general.lobby_time SECONDS
|
||||
to_chat(world, "<b><span class='darkmblue'>Welcome to the pre-game lobby!</span></b>")
|
||||
round_start_time = world.time + pregame_timeleft
|
||||
to_chat(world, "<B><span class='darkmblue'>Welcome to the pre-game lobby!</span></B>")
|
||||
to_chat(world, "Please, setup your character and select ready. Game will start in [GLOB.configuration.general.lobby_time] seconds")
|
||||
current_state = GAME_STATE_PREGAME
|
||||
fire() // TG says this is a good idea
|
||||
@@ -95,12 +95,9 @@ SUBSYSTEM_DEF(ticker)
|
||||
return
|
||||
|
||||
// This is so we dont have sleeps in controllers, because that is a bad, bad thing
|
||||
if(!delay_end)
|
||||
pregame_timeleft = max(0, round_start_time - world.time) // Normal lobby countdown when roundstart was not delayed
|
||||
else
|
||||
pregame_timeleft = max(0, pregame_timeleft - wait) // If roundstart was delayed, we should resume the countdown where it left off
|
||||
pregame_timeleft = max(0, round_start_time - world.time)
|
||||
|
||||
if(pregame_timeleft <= 600 && !tipped) // 60 seconds
|
||||
if(pregame_timeleft <= 1 MINUTES && !tipped)
|
||||
send_tip_of_the_round()
|
||||
tipped = TRUE
|
||||
|
||||
|
||||
@@ -341,7 +341,7 @@ SUBSYSTEM_DEF(timer)
|
||||
return
|
||||
|
||||
// Sort it first
|
||||
var/list/sorted = sortTim(GLOB.timers_by_type, GLOBAL_PROC_REF(cmp_numeric_dsc), TRUE)
|
||||
var/list/sorted = sortTim(GLOB.timers_by_proc, GLOBAL_PROC_REF(cmp_numeric_dsc), TRUE)
|
||||
|
||||
// DOOMP EET
|
||||
var/timer_json_file = file("[GLOB.log_directory]/timers.json")
|
||||
@@ -571,14 +571,14 @@ SUBSYSTEM_DEF(timer)
|
||||
CRASH("this timer is attached to no object, the attempted proc to call was [callBack.delegate]")
|
||||
. = "[callBack.object.type]"
|
||||
|
||||
GLOBAL_LIST_EMPTY(timers_by_type)
|
||||
GLOBAL_LIST_EMPTY(timers_by_proc)
|
||||
// Allows us to track what types generate the most timers. Just invokes the global addtimer
|
||||
/datum/proc/addtimer(datum/callback/callback, wait = 0, flags = 0)
|
||||
var/tt = "[type]"
|
||||
if(tt in GLOB.timers_by_type)
|
||||
GLOB.timers_by_type[tt]++
|
||||
var/timer_function = "[type][callback.delegate]"
|
||||
if(timer_function in GLOB.timers_by_proc)
|
||||
GLOB.timers_by_proc[timer_function]++
|
||||
else
|
||||
GLOB.timers_by_type[tt] = 1
|
||||
GLOB.timers_by_proc[timer_function] = 1
|
||||
return global.addtimer(callback, wait, flags)
|
||||
|
||||
/**
|
||||
@@ -594,7 +594,7 @@ GLOBAL_LIST_EMPTY(timers_by_type)
|
||||
if(!check_rights(R_DEBUG | R_VIEWRUNTIMES))
|
||||
return
|
||||
|
||||
var/list/sorted = sortTim(GLOB.timers_by_type, GLOBAL_PROC_REF(cmp_numeric_dsc), TRUE)
|
||||
var/list/sorted = sortTim(GLOB.timers_by_proc, GLOBAL_PROC_REF(cmp_numeric_dsc), TRUE)
|
||||
var/list/text = list("<h1>Timer Log</h1>", "<ul>")
|
||||
for(var/key in sorted)
|
||||
text += "<li>[key] - [sorted[key]]</li>"
|
||||
|
||||
@@ -97,7 +97,7 @@ SUBSYSTEM_DEF(changelog)
|
||||
/client/verb/changes()
|
||||
set name = "Changelog"
|
||||
set desc = "View the changelog."
|
||||
set category = "OOC"
|
||||
set category = null
|
||||
// Just invoke the actual CL thing
|
||||
SSchangelog.OpenChangelog(src)
|
||||
|
||||
|
||||
@@ -49,6 +49,7 @@ SUBSYSTEM_DEF(mapping)
|
||||
log_startup_progress("We feel like [cave_theme] today...")
|
||||
// Load all Z level templates
|
||||
preloadTemplates()
|
||||
preloadTemplates(path = "code/modules/unit_tests/atmos/")
|
||||
|
||||
// Load the station
|
||||
loadStation()
|
||||
|
||||
@@ -120,7 +120,8 @@
|
||||
return
|
||||
if(!status_only)
|
||||
button.name = name
|
||||
button.desc = desc
|
||||
if(desc)
|
||||
button.desc = "[desc] [initial(button.desc)]"
|
||||
if(owner?.hud_used && background_icon_state == ACTION_BUTTON_DEFAULT_BACKGROUND)
|
||||
var/list/settings = owner.hud_used.get_action_buttons_icons()
|
||||
if(button.icon != settings["bg_icon"])
|
||||
@@ -679,7 +680,7 @@
|
||||
var/datum/spell/spell = target
|
||||
|
||||
if(owner)
|
||||
return spell.can_cast(owner)
|
||||
return spell.can_cast(owner, show_message = TRUE)
|
||||
return FALSE
|
||||
|
||||
/datum/action/spell_action/apply_unavailable_effect(atom/movable/screen/movable/action_button/button)
|
||||
@@ -698,7 +699,7 @@
|
||||
// Make a holder for the charge text
|
||||
var/image/count_down_holder = image('icons/effects/effects.dmi', icon_state = "nothing")
|
||||
count_down_holder.plane = FLOAT_PLANE + 1.1
|
||||
var/text = S.cooldown_handler.statpanel_info()
|
||||
var/text = S.cooldown_handler.cooldown_info()
|
||||
count_down_holder.maptext = "<div style=\"font-size:6pt;color:[recharge_text_color];font:'Small Fonts';text-align:center;\" valign=\"bottom\">[text]</div>"
|
||||
button.add_overlay(count_down_holder)
|
||||
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
/**
|
||||
* A component for tracking and manipulating bodies held inside constructs/shades
|
||||
* Will drop the body/brain when the parent dies or is deleted.
|
||||
*/
|
||||
/datum/component/construct_held_body
|
||||
dupe_mode = COMPONENT_DUPE_ALLOWED
|
||||
/// A reference to either a mob, or a brain organ that is held inside our parent. Will drop when parent dies/is deleted
|
||||
var/atom/movable/held_body
|
||||
|
||||
/datum/component/construct_held_body/Initialize(atom/movable/new_body)
|
||||
. = ..()
|
||||
add_body(new_body)
|
||||
|
||||
/datum/component/construct_held_body/Destroy(force, silent)
|
||||
if(held_body)
|
||||
stack_trace("/datum/component/construct_held_body had a held body still despite being destroyed. Body is [held_body] ([held_body.type])")
|
||||
held_body = null
|
||||
return ..()
|
||||
|
||||
/datum/component/construct_held_body/PostTransfer()
|
||||
held_body.forceMove(parent) // forcemove them to the new parent
|
||||
|
||||
/datum/component/construct_held_body/RegisterWithParent()
|
||||
RegisterSignal(parent, COMSIG_MOB_DEATH, PROC_REF(drop_body))
|
||||
RegisterSignal(parent, COMSIG_PARENT_QDELETING, PROC_REF(drop_body))
|
||||
RegisterSignal(parent, COMSIG_SHADE_TO_CONSTRUCT_TRANSFER, PROC_REF(transfer_held_body))
|
||||
|
||||
/datum/component/construct_held_body/UnregisterFromParent()
|
||||
UnregisterSignal(parent, COMSIG_MOB_DEATH)
|
||||
UnregisterSignal(parent, COMSIG_PARENT_QDELETING)
|
||||
UnregisterSignal(parent, COMSIG_SHADE_TO_CONSTRUCT_TRANSFER)
|
||||
|
||||
/datum/component/construct_held_body/proc/add_body(atom/movable/new_body)
|
||||
held_body = new_body
|
||||
RegisterSignal(new_body, COMSIG_PARENT_QDELETING, PROC_REF(_null_held_body))
|
||||
new_body.forceMove(parent)
|
||||
|
||||
/datum/component/construct_held_body/proc/_null_held_body()
|
||||
SIGNAL_HANDLER // COMSIG_PARENT_QDELETING
|
||||
UnregisterSignal(held_body, COMSIG_PARENT_QDELETING)
|
||||
held_body = null
|
||||
|
||||
/datum/component/construct_held_body/proc/transfer_held_body(mob/living/current_parent, mob/living/new_body_holder)
|
||||
SIGNAL_HANDLER // COMSIG_SHADE_TO_CONSTRUCT_TRANSFER
|
||||
new_body_holder.TakeComponent(src)
|
||||
|
||||
/datum/component/construct_held_body/proc/drop_body()
|
||||
SIGNAL_HANDLER // COMSIG_MOB_DEATH + COMSIG_PARENT_QDELETING
|
||||
INVOKE_ASYNC(src, PROC_REF(_drop_body))
|
||||
|
||||
/datum/component/construct_held_body/proc/_drop_body() // call me lazy ig
|
||||
if(!held_body) // Null check for empty bodies
|
||||
return
|
||||
var/mob/living/parent_mob = parent
|
||||
held_body.forceMove(get_turf(parent))
|
||||
SSticker.mode?.cult_team?.add_cult_immunity(held_body)
|
||||
|
||||
var/mob/living/held_mob = held_body
|
||||
if(ismob(held_body)) // Check if the held_body is a mob
|
||||
held_mob.key = parent_mob.key
|
||||
held_mob.cancel_camera()
|
||||
else if(istype(held_body, /obj/item/organ/internal/brain)) // Check if the held_body is a brain
|
||||
var/obj/item/organ/internal/brain/brain = held_body
|
||||
if(brain.brainmob) // Check if the brain has a brainmob
|
||||
brain.brainmob.key = parent_mob.key // Set the key to the brainmob
|
||||
held_mob = brain.brainmob
|
||||
|
||||
if(!istype(held_mob) || QDELETED(held_mob))
|
||||
CRASH("/datum/component/construct_held_body/proc/_drop_body attempted to drop a body despite having no body, or a qdeleted body")
|
||||
|
||||
parent_mob.mind.transfer_to(held_mob) // Transfer the mind to the original mob
|
||||
// goodbye construct antag datums!
|
||||
held_mob.mind.remove_antag_datum(/datum/antagonist/cultist, silent_removal = TRUE)
|
||||
held_mob.mind.remove_antag_datum(/datum/antagonist/wizard/construct, silent_removal = TRUE)
|
||||
held_body = null
|
||||
qdel(src) // our job here is done
|
||||
@@ -0,0 +1,325 @@
|
||||
#define AUTOFIRE_MOUSEUP 0
|
||||
#define AUTOFIRE_MOUSEDOWN 1
|
||||
|
||||
/datum/component/automatic_fire
|
||||
var/client/clicker
|
||||
var/mob/living/shooter
|
||||
var/atom/target
|
||||
var/turf/target_loc // For dealing with locking on targets due to BYOND engine limitations (the mouse input only happening when mouse moves).
|
||||
var/autofire_stat = AUTOFIRE_STAT_IDLE
|
||||
var/mouse_parameters
|
||||
/// Time between individual shots.
|
||||
var/autofire_shot_delay = 0.3 SECONDS
|
||||
/// This seems hacky but there can be two MouseDown() without a MouseUp() in between if the user holds click and uses alt+tab, printscreen or similar.
|
||||
var/mouse_status = AUTOFIRE_MOUSEUP
|
||||
/// Should dual wielding be allowed?
|
||||
var/allow_akimbo
|
||||
|
||||
/// windup autofire vars
|
||||
/// Whether the delay between shots increases over time, simulating a spooling weapon
|
||||
var/windup_autofire = FALSE
|
||||
/// the reduction to shot delay for windup
|
||||
var/current_windup_reduction = 0
|
||||
/// the percentage of autfire_shot_delay that is added to current_windup_reduction
|
||||
var/windup_autofire_reduction_multiplier = 0.3
|
||||
/// How high of a reduction that current_windup_reduction can reach
|
||||
var/windup_autofire_cap = 0.3
|
||||
/// How long it takes for weapons that have spooled-up to reset back to the original firing speed
|
||||
var/windup_spindown = 3 SECONDS
|
||||
/// Timer for tracking the spindown reset timings
|
||||
var/timerid
|
||||
COOLDOWN_DECLARE(next_shot_cd)
|
||||
|
||||
/datum/component/automatic_fire/Initialize(autofire_shot_delay, windup_autofire, windup_autofire_reduction_multiplier, windup_autofire_cap, windup_spindown, allow_akimbo = TRUE)
|
||||
. = ..()
|
||||
if(!isgun(parent))
|
||||
return COMPONENT_INCOMPATIBLE
|
||||
var/obj/item/gun = parent
|
||||
RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(wake_up))
|
||||
if(autofire_shot_delay)
|
||||
src.autofire_shot_delay = autofire_shot_delay
|
||||
src.allow_akimbo = allow_akimbo
|
||||
if(windup_autofire)
|
||||
src.windup_autofire = windup_autofire
|
||||
src.windup_autofire_reduction_multiplier = windup_autofire_reduction_multiplier
|
||||
src.windup_autofire_cap = windup_autofire_cap
|
||||
src.windup_spindown = windup_spindown
|
||||
if(autofire_stat == AUTOFIRE_STAT_IDLE && ismob(gun.loc))
|
||||
var/mob/user = gun.loc
|
||||
wake_up(src, user)
|
||||
|
||||
/datum/component/automatic_fire/Destroy()
|
||||
autofire_off()
|
||||
return ..()
|
||||
|
||||
/datum/component/automatic_fire/process(seconds_per_tick)
|
||||
if(autofire_stat != AUTOFIRE_STAT_FIRING)
|
||||
STOP_PROCESSING(SSprojectiles, src)
|
||||
return
|
||||
process_shot()
|
||||
|
||||
/datum/component/automatic_fire/proc/wake_up(datum/source, mob/user, slot)
|
||||
SIGNAL_HANDLER // COMSIG_ITEM_EQUIPPED
|
||||
|
||||
if(autofire_stat == AUTOFIRE_STAT_ALERT)
|
||||
return // We've updated the firemode. No need for more.
|
||||
if(autofire_stat == AUTOFIRE_STAT_FIRING)
|
||||
stop_autofiring() // Let's stop shooting to avoid issues.
|
||||
return
|
||||
if(user.is_holding(parent))
|
||||
autofire_on(user.client)
|
||||
|
||||
// There is a gun and there is a user wielding it. The component now waits for the mouse click.
|
||||
/datum/component/automatic_fire/proc/autofire_on(client/user_client)
|
||||
if(autofire_stat != AUTOFIRE_STAT_IDLE)
|
||||
return
|
||||
autofire_stat = AUTOFIRE_STAT_ALERT
|
||||
if(!QDELETED(user_client))
|
||||
clicker = user_client
|
||||
shooter = user_client.mob
|
||||
RegisterSignal(user_client, COMSIG_CLIENT_MOUSEDOWN, PROC_REF(on_mouse_down))
|
||||
if(!QDELETED(shooter))
|
||||
RegisterSignal(shooter, COMSIG_MOB_LOGOUT, PROC_REF(autofire_off))
|
||||
UnregisterSignal(shooter, COMSIG_MOB_LOGIN)
|
||||
RegisterSignal(parent, list(COMSIG_PARENT_QDELETING, COMSIG_ITEM_DROPPED), PROC_REF(autofire_off))
|
||||
parent.RegisterSignal(src, COMSIG_AUTOFIRE_ONMOUSEDOWN, TYPE_PROC_REF(/obj/item/gun, autofire_bypass_check))
|
||||
parent.RegisterSignal(parent, COMSIG_AUTOFIRE_SHOT, TYPE_PROC_REF(/obj/item/gun, do_autofire))
|
||||
|
||||
/datum/component/automatic_fire/proc/autofire_off(datum/source)
|
||||
SIGNAL_HANDLER // COMSIG_MOB_LOGOUT
|
||||
|
||||
if(autofire_stat == AUTOFIRE_STAT_IDLE)
|
||||
return
|
||||
if(autofire_stat == AUTOFIRE_STAT_FIRING)
|
||||
stop_autofiring()
|
||||
|
||||
autofire_stat = AUTOFIRE_STAT_IDLE
|
||||
|
||||
if(!QDELETED(clicker))
|
||||
UnregisterSignal(clicker, list(COMSIG_CLIENT_MOUSEDOWN, COMSIG_CLIENT_MOUSEUP, COMSIG_CLIENT_MOUSEDRAG))
|
||||
mouse_status = AUTOFIRE_MOUSEUP // In regards to the component there's no click anymore to care about.
|
||||
clicker = null
|
||||
if(!QDELETED(shooter))
|
||||
RegisterSignal(shooter, COMSIG_MOB_LOGIN, PROC_REF(on_client_login))
|
||||
UnregisterSignal(shooter, COMSIG_MOB_LOGOUT)
|
||||
UnregisterSignal(parent, list(COMSIG_PARENT_QDELETING, COMSIG_ITEM_DROPPED))
|
||||
shooter = null
|
||||
parent.UnregisterSignal(parent, COMSIG_AUTOFIRE_SHOT)
|
||||
parent.UnregisterSignal(src, COMSIG_AUTOFIRE_ONMOUSEDOWN)
|
||||
|
||||
/datum/component/automatic_fire/proc/on_client_login(mob/source)
|
||||
SIGNAL_HANDLER // COMSIG_MOB_LOGIN
|
||||
if(!source.client)
|
||||
return
|
||||
if(source.is_holding(parent))
|
||||
autofire_on(source.client)
|
||||
|
||||
/datum/component/automatic_fire/proc/on_mouse_down(client/source, atom/_target, turf/location, control, params)
|
||||
SIGNAL_HANDLER // COMSIG_CLIENT_MOUSEDOWN
|
||||
|
||||
var/list/modifiers = params2list(params) // If they're shift+clicking, for example, let's not have them accidentally shoot.
|
||||
|
||||
if(modifiers["shift"])
|
||||
return
|
||||
if(modifiers["ctrl"])
|
||||
return
|
||||
if(modifiers["middle"])
|
||||
return
|
||||
if(modifiers["right"])
|
||||
return
|
||||
if(modifiers["alt"])
|
||||
return
|
||||
if(source.mob.in_throw_mode)
|
||||
return
|
||||
if(!isturf(source.mob.loc)) // No firing inside lockers and stuff.
|
||||
return
|
||||
if(get_dist(source.mob, _target) < 2) // Adjacent clicking.
|
||||
return
|
||||
|
||||
if(isnull(location) || istype(_target, /obj/screen)) // Clicking on a screen object.
|
||||
if(_target.plane != CLICKCATCHER_PLANE) // The clickcatcher is a special case. We want the click to trigger then, under it.
|
||||
return // If we click and drag on our worn backpack, for example, we want it to open instead.
|
||||
_target = parse_caught_click_modifiers(modifiers, get_turf(source.eye), source)
|
||||
params = list2params(modifiers)
|
||||
if(!_target)
|
||||
CRASH("Failed to get the turf under clickcatcher")
|
||||
|
||||
if(SEND_SIGNAL(src, COMSIG_AUTOFIRE_ONMOUSEDOWN, source, _target, location, control, params) & COMPONENT_AUTOFIRE_ONMOUSEDOWN_BYPASS)
|
||||
return
|
||||
|
||||
source.click_intercept_time = world.time // From this point onwards Click() will no longer be triggered.
|
||||
|
||||
if(autofire_stat == AUTOFIRE_STAT_IDLE)
|
||||
CRASH("on_mouse_down() called with [autofire_stat] autofire_stat")
|
||||
if(autofire_stat == AUTOFIRE_STAT_FIRING)
|
||||
stop_autofiring() // This can happen if we click and hold and then alt+tab, printscreen or other such action. MouseUp won't be called then and it will keep autofiring.
|
||||
|
||||
target = _target
|
||||
target_loc = get_turf(target)
|
||||
mouse_parameters = params
|
||||
INVOKE_ASYNC(src, PROC_REF(start_autofiring))
|
||||
|
||||
/datum/component/automatic_fire/proc/start_autofiring()
|
||||
if(autofire_stat == AUTOFIRE_STAT_FIRING)
|
||||
return
|
||||
autofire_stat = AUTOFIRE_STAT_FIRING
|
||||
|
||||
clicker.mouse_override_icon = 'icons/effects/mouse_pointers/weapon_pointer.dmi'
|
||||
clicker.mouse_pointer_icon = clicker.mouse_override_icon
|
||||
|
||||
if(mouse_status == AUTOFIRE_MOUSEUP) // See mouse_status definition for the reason for this.
|
||||
RegisterSignal(clicker, COMSIG_CLIENT_MOUSEUP, PROC_REF(on_mouse_up))
|
||||
mouse_status = AUTOFIRE_MOUSEDOWN
|
||||
|
||||
RegisterSignal(shooter, COMSIG_MOB_SWAPPED_HANDS, PROC_REF(stop_autofiring))
|
||||
|
||||
if(isgun(parent))
|
||||
var/obj/item/gun/shoota = parent
|
||||
if(!shoota.on_autofire_start(shooter)) // This is needed because the minigun has a do_after before firing and signals are async.
|
||||
stop_autofiring()
|
||||
return
|
||||
|
||||
if(autofire_stat != AUTOFIRE_STAT_FIRING)
|
||||
return // Things may have changed while on_autofire_start() was being processed, due to do_after's sleep.
|
||||
|
||||
if(!process_shot()) // First shot is processed instantly.
|
||||
return // If it fails, such as when the gun is empty, then there's no need to schedule a second shot.
|
||||
|
||||
START_PROCESSING(SSprojectiles, src)
|
||||
RegisterSignal(clicker, COMSIG_CLIENT_MOUSEDRAG, PROC_REF(on_mouse_drag))
|
||||
|
||||
/datum/component/automatic_fire/proc/on_mouse_up(datum/source, atom/object, turf/location, control, params)
|
||||
SIGNAL_HANDLER // COMSIG_CLIENT_MOUSEUP
|
||||
|
||||
UnregisterSignal(clicker, COMSIG_CLIENT_MOUSEUP)
|
||||
mouse_status = AUTOFIRE_MOUSEUP
|
||||
if(autofire_stat == AUTOFIRE_STAT_FIRING)
|
||||
stop_autofiring()
|
||||
return COMPONENT_CLIENT_MOUSEUP_INTERCEPT
|
||||
|
||||
/datum/component/automatic_fire/proc/stop_autofiring(datum/source, atom/object, turf/location, control, params)
|
||||
SIGNAL_HANDLER // COMSIG_MOB_SWAPPED_HANDS
|
||||
|
||||
if(autofire_stat != AUTOFIRE_STAT_FIRING)
|
||||
return
|
||||
|
||||
STOP_PROCESSING(SSprojectiles, src)
|
||||
autofire_stat = AUTOFIRE_STAT_ALERT
|
||||
if(clicker)
|
||||
clicker.mouse_override_icon = null
|
||||
clicker.mouse_pointer_icon = clicker.mouse_override_icon
|
||||
UnregisterSignal(clicker, COMSIG_CLIENT_MOUSEDRAG)
|
||||
if(!QDELETED(shooter))
|
||||
UnregisterSignal(shooter, COMSIG_MOB_SWAPPED_HANDS)
|
||||
target = null
|
||||
target_loc = null
|
||||
mouse_parameters = null
|
||||
|
||||
/datum/component/automatic_fire/proc/on_mouse_drag(client/source, atom/src_object, atom/over_object, turf/src_location, turf/over_location, src_control, over_control, params)
|
||||
SIGNAL_HANDLER // COMSIG_CLIENT_MOUSEDRAG
|
||||
|
||||
if(isnull(over_location)) // This happens when the mouse is over an inventory or screen object, or on entering deep darkness, for example.
|
||||
var/list/modifiers = params2list(params)
|
||||
var/new_target = parse_caught_click_modifiers(modifiers, get_turf(source.eye), source)
|
||||
params = list2params(modifiers)
|
||||
mouse_parameters = params
|
||||
if(!new_target)
|
||||
if(QDELETED(target)) // No new target acquired, and old one was deleted, get us out of here.
|
||||
stop_autofiring()
|
||||
CRASH("on_mouse_drag failed to get the turf under screen object [over_object.type]. Old target was incidentally QDELETED.")
|
||||
target = get_turf(target) // If previous target wasn't a turf, let's turn it into one to avoid locking onto a potentially moving target.
|
||||
target_loc = target
|
||||
CRASH("on_mouse_drag failed to get the turf under screen object [over_object.type]")
|
||||
target = new_target
|
||||
target_loc = new_target
|
||||
return
|
||||
|
||||
target = over_object
|
||||
target_loc = get_turf(over_object)
|
||||
mouse_parameters = params
|
||||
|
||||
/datum/component/automatic_fire/proc/process_shot()
|
||||
if(autofire_stat != AUTOFIRE_STAT_FIRING)
|
||||
return FALSE
|
||||
|
||||
if(!COOLDOWN_FINISHED(src, next_shot_cd))
|
||||
return TRUE
|
||||
|
||||
if(QDELETED(target) || get_turf(target) != target_loc) // Target moved or got destroyed since we last aimed.
|
||||
target = target_loc // So we keep firing on the emptied tile until we move our mouse and find a new target.
|
||||
|
||||
if(get_dist(shooter, target) <= 0)
|
||||
target = get_step(shooter, shooter.dir) // Shoot in the direction faced if the mouse is on the same tile as we are.
|
||||
target_loc = target
|
||||
else if(!in_view_range(shooter, target))
|
||||
stop_autofiring() // Elvis has left the building.
|
||||
return FALSE
|
||||
|
||||
shooter.face_atom(target)
|
||||
var/next_delay = autofire_shot_delay
|
||||
if(windup_autofire)
|
||||
next_delay = clamp(next_delay - current_windup_reduction, round(autofire_shot_delay * windup_autofire_cap), autofire_shot_delay)
|
||||
current_windup_reduction = (current_windup_reduction + round(autofire_shot_delay * windup_autofire_reduction_multiplier))
|
||||
timerid = addtimer(CALLBACK(src, PROC_REF(windup_reset), FALSE), windup_spindown, TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_STOPPABLE)
|
||||
|
||||
COOLDOWN_START(src, next_shot_cd, next_delay)
|
||||
|
||||
if(SEND_SIGNAL(parent, COMSIG_AUTOFIRE_SHOT, target, shooter, allow_akimbo, mouse_parameters) & COMPONENT_AUTOFIRE_SHOT_SUCCESS)
|
||||
return TRUE
|
||||
|
||||
stop_autofiring()
|
||||
return FALSE
|
||||
|
||||
/// Reset for our windup, resetting everything back to initial values after a variable set amount of time (determined by var/windup_spindown).
|
||||
/datum/component/automatic_fire/proc/windup_reset(deltimer)
|
||||
current_windup_reduction = initial(current_windup_reduction)
|
||||
if(deltimer && timerid)
|
||||
deltimer(timerid)
|
||||
|
||||
// Gun procs.
|
||||
|
||||
/obj/item/gun/proc/on_autofire_start(mob/living/shooter)
|
||||
if(semicd || shooter.incapacitated() || !can_trigger_gun(shooter))
|
||||
return FALSE
|
||||
|
||||
if(!can_shoot())
|
||||
shoot_with_empty_chamber(shooter)
|
||||
return FALSE
|
||||
|
||||
var/other_hand = shooter.get_organ(shooter.hand ? BODY_ZONE_PRECISE_R_HAND : BODY_ZONE_PRECISE_L_HAND)
|
||||
if(weapon_weight == WEAPON_HEAVY && (shooter.get_inactive_hand() || !other_hand))
|
||||
to_chat(shooter, "<span class='warning'>You need to use both hands!</span>")
|
||||
return FALSE
|
||||
|
||||
return TRUE
|
||||
|
||||
/obj/item/gun/proc/autofire_bypass_check(datum/source, client/clicker, atom/target, turf/location, control, params)
|
||||
SIGNAL_HANDLER // COMSIG_AUTOFIRE_ONMOUSEDOWN
|
||||
|
||||
if(clicker.mob.get_active_hand() != src)
|
||||
return COMPONENT_AUTOFIRE_ONMOUSEDOWN_BYPASS
|
||||
|
||||
/obj/item/gun/proc/do_autofire(datum/source, atom/target, mob/living/shooter, allow_akimbo, params)
|
||||
SIGNAL_HANDLER // COMSIG_AUTOFIRE_SHOT
|
||||
|
||||
if(semicd || shooter.incapacitated())
|
||||
return NONE
|
||||
|
||||
if(!can_shoot())
|
||||
shoot_with_empty_chamber(shooter)
|
||||
return NONE
|
||||
|
||||
INVOKE_ASYNC(src, PROC_REF(do_autofire_shot), source, target, shooter, allow_akimbo, params)
|
||||
return COMPONENT_AUTOFIRE_SHOT_SUCCESS // All is well, we can continue shooting.
|
||||
|
||||
/obj/item/gun/proc/do_autofire_shot(datum/source, atom/target, mob/living/shooter, allow_akimbo, params)
|
||||
var/obj/item/gun/akimbo_gun = shooter.get_inactive_hand()
|
||||
var/bonus_spread = 0
|
||||
if(isgun(akimbo_gun) && weapon_weight < WEAPON_MEDIUM && allow_akimbo)
|
||||
if(akimbo_gun.weapon_weight < WEAPON_MEDIUM && akimbo_gun.can_trigger_gun(shooter))
|
||||
bonus_spread = dual_wield_spread
|
||||
addtimer(CALLBACK(akimbo_gun, TYPE_PROC_REF(/obj/item/gun, process_fire), target, shooter, TRUE, params, null, bonus_spread), 1)
|
||||
process_fire(target, shooter, TRUE, params, null, bonus_spread)
|
||||
|
||||
#undef AUTOFIRE_MOUSEUP
|
||||
#undef AUTOFIRE_MOUSEDOWN
|
||||
@@ -13,17 +13,17 @@
|
||||
var/can_contaminate
|
||||
|
||||
/datum/component/radioactive/Initialize(_strength = 0, _source, _half_life = RAD_HALF_LIFE, _can_contaminate = TRUE)
|
||||
if(!istype(parent, /atom))
|
||||
return COMPONENT_INCOMPATIBLE
|
||||
strength = _strength
|
||||
source = _source
|
||||
hl3_release_date = _half_life
|
||||
can_contaminate = _can_contaminate
|
||||
if(istype(parent, /atom))
|
||||
RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(rad_examine))
|
||||
if(isitem(parent))
|
||||
RegisterSignal(parent, COMSIG_ITEM_ATTACK, PROC_REF(rad_attack))
|
||||
RegisterSignal(parent, COMSIG_ITEM_ATTACK_OBJ, PROC_REF(rad_attack))
|
||||
else
|
||||
return COMPONENT_INCOMPATIBLE
|
||||
RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(rad_examine))
|
||||
RegisterSignal(parent, COMSIG_ADMIN_DECONTAMINATE, PROC_REF(admin_decontaminate))
|
||||
if(isitem(parent))
|
||||
RegisterSignal(parent, COMSIG_ITEM_ATTACK, PROC_REF(rad_attack))
|
||||
RegisterSignal(parent, COMSIG_ITEM_ATTACK_OBJ, PROC_REF(rad_attack))
|
||||
if(strength > RAD_MINIMUM_CONTAMINATION)
|
||||
SSradiation.warn(src)
|
||||
//Let's make er glow
|
||||
@@ -31,10 +31,12 @@
|
||||
var/atom/movable/master = parent
|
||||
master.add_filter("rad_glow", 2, list("type" = "outline", "color" = "#39ff1430", "size" = 2))
|
||||
addtimer(CALLBACK(src, PROC_REF(glow_loop), master), rand(1, 19)) //Things should look uneven
|
||||
LAZYADD(SSradiation.all_radiations, src)
|
||||
START_PROCESSING(SSradiation, src)
|
||||
|
||||
/datum/component/radioactive/Destroy()
|
||||
STOP_PROCESSING(SSradiation, src)
|
||||
LAZYREMOVE(SSradiation.all_radiations, src)
|
||||
var/atom/movable/master = parent
|
||||
master.remove_filter("rad_glow")
|
||||
return ..()
|
||||
@@ -99,6 +101,17 @@
|
||||
return
|
||||
strength -= strength / hl3_release_date
|
||||
|
||||
/datum/component/radioactive/proc/admin_decontaminate()
|
||||
SIGNAL_HANDLER
|
||||
. = TRUE
|
||||
if(ismob(parent))
|
||||
var/mob/M = parent
|
||||
M.radiation = 0
|
||||
if(ismob(source))
|
||||
var/mob/M = source
|
||||
M.radiation = 0
|
||||
qdel(src)
|
||||
|
||||
#undef RAD_AMOUNT_LOW
|
||||
#undef RAD_AMOUNT_MEDIUM
|
||||
#undef RAD_AMOUNT_HIGH
|
||||
|
||||
@@ -158,7 +158,7 @@
|
||||
|
||||
var/charge_loss = 1 // how many charges do we lose
|
||||
|
||||
if(istype(hitby, /obj/item/projectile))
|
||||
if(isprojectile(hitby))
|
||||
var/obj/item/projectile/P = hitby
|
||||
if(P.shield_buster)
|
||||
charge_loss = 3
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
var/obj/item/I = AM
|
||||
if(I.flags & ABSTRACT)
|
||||
return
|
||||
else if(istype(AM, /obj/item/projectile))
|
||||
else if(isprojectile(AM))
|
||||
var/obj/item/projectile/P = AM
|
||||
if(P.original != parent)
|
||||
return
|
||||
|
||||
@@ -537,7 +537,10 @@
|
||||
|
||||
/client/proc/view_var_Topic(href, href_list, hsrc)
|
||||
//This should all be moved over to datum/admins/Topic() or something ~Carn
|
||||
if(!check_rights(R_ADMIN|R_MOD, FALSE) && !((href_list["datumrefresh"] || href_list["Vars"] || href_list["VarsList"]) && check_rights(R_VIEWRUNTIMES, FALSE)))
|
||||
if(!check_rights(R_ADMIN|R_MOD, FALSE) \
|
||||
&& !((href_list["datumrefresh"] || href_list["Vars"] || href_list["VarsList"]) && check_rights(R_VIEWRUNTIMES, FALSE)) \
|
||||
&& !((href_list["proc_call"]) && check_rights(R_PROCCALL, FALSE)) \
|
||||
)
|
||||
return // clients with R_VIEWRUNTIMES can still refresh the window/view references/view lists. they cannot edit anything else however.
|
||||
|
||||
if(view_var_Topic_list(href, href_list, hsrc)) // done because you can't use UIDs with lists and I don't want to snowflake into the below check to supress warnings
|
||||
|
||||
@@ -209,11 +209,11 @@
|
||||
if(!ghost.client)
|
||||
continue
|
||||
if((ghost.client.prefs.toggles & PREFTOGGLE_CHAT_GHOSTSIGHT) && !(ghost in viewers(user_turf, null)))
|
||||
ghost.show_message("<span class='emote'>[user] ([ghost_follow_link(user, ghost)]) [msg]</span>")
|
||||
ghost.show_message("<span class='emote'>[user] ([ghost_follow_link(user, ghost)]) [msg]</span>", chat_message_type = MESSAGE_TYPE_LOCALCHAT)
|
||||
|
||||
if(isobserver(user))
|
||||
for(var/mob/dead/observer/ghost in viewers(user))
|
||||
ghost.show_message("<span class=deadsay>[displayed_msg]</span>", EMOTE_VISIBLE)
|
||||
ghost.show_message("<span class=deadsay>[displayed_msg]</span>", EMOTE_VISIBLE, chat_message_type = MESSAGE_TYPE_LOCALCHAT)
|
||||
|
||||
else if((emote_type & EMOTE_AUDIBLE) && !user.mind?.miming)
|
||||
user.audible_message(displayed_msg, deaf_message = "<span class='emote'>You see how <b>[user]</b> [msg]</span>")
|
||||
@@ -283,10 +283,10 @@
|
||||
for(var/mob/O as anything in can_see)
|
||||
if(O.status_flags & PASSEMOTES)
|
||||
for(var/obj/item/holder/H in O.contents)
|
||||
H.show_message(text, EMOTE_VISIBLE)
|
||||
H.show_message(text, EMOTE_VISIBLE, chat_message_type = MESSAGE_TYPE_LOCALCHAT)
|
||||
|
||||
for(var/mob/living/M in O.contents)
|
||||
M.show_message(text, EMOTE_VISIBLE)
|
||||
M.show_message(text, EMOTE_VISIBLE, chat_message_type = MESSAGE_TYPE_LOCALCHAT)
|
||||
|
||||
if(O.client?.prefs.toggles2 & PREFTOGGLE_2_RUNECHAT)
|
||||
O.create_chat_message(user, runechat_text, symbol = RUNECHAT_SYMBOL_EMOTE)
|
||||
@@ -636,7 +636,7 @@
|
||||
if(!ghost.client)
|
||||
continue
|
||||
if(ghost.client.prefs.toggles & PREFTOGGLE_CHAT_GHOSTSIGHT && !(ghost in viewers(origin_turf, null)))
|
||||
ghost.show_message("[ghost_follow_link(src, ghost)] [ghost_text]")
|
||||
ghost.show_message("[ghost_follow_link(src, ghost)] [ghost_text]", chat_message_type = MESSAGE_TYPE_LOCALCHAT)
|
||||
|
||||
visible_message(text)
|
||||
|
||||
|
||||
@@ -23,9 +23,7 @@
|
||||
effect_in = effect
|
||||
if(isnull(effect_out))
|
||||
effect_out = effect
|
||||
if(D.start(atom_to_teleport, destination, variance_range, force_teleport, effect_in, effect_out, sound_in, sound_out, bypass_area_flag, safe_turf_pick, do_effect))
|
||||
return TRUE
|
||||
return FALSE
|
||||
return D.start(atom_to_teleport, destination, variance_range, force_teleport, effect_in, effect_out, sound_in, sound_out, bypass_area_flag, safe_turf_pick, do_effect)
|
||||
|
||||
/datum/teleport
|
||||
var/atom/movable/teleatom //atom to teleport
|
||||
@@ -166,6 +164,16 @@
|
||||
|
||||
playSpecials(curturf,effectin,soundin)
|
||||
|
||||
if(isliving(teleatom))
|
||||
var/mob/living/target_mob = teleatom
|
||||
if(target_mob.buckled)
|
||||
target_mob.buckled.unbuckle_mob(target_mob, force = TRUE)
|
||||
if(target_mob.has_buckled_mobs())
|
||||
target_mob.unbuckle_all_mobs(force = TRUE)
|
||||
if(ismachinery(target_mob.loc) || istype(target_mob.loc, /obj/item/mecha_parts/mecha_equipment/medical/sleeper))
|
||||
var/obj/location = target_mob.loc
|
||||
location.force_eject_occupant(target_mob)
|
||||
|
||||
if(force_teleport)
|
||||
teleatom.forceMove(destturf)
|
||||
playSpecials(destturf,effectout,soundout)
|
||||
@@ -173,13 +181,6 @@
|
||||
if(teleatom.Move(destturf))
|
||||
playSpecials(destturf,effectout,soundout)
|
||||
|
||||
if(isliving(teleatom))
|
||||
var/mob/living/L = teleatom
|
||||
if(L.buckled)
|
||||
L.buckled.unbuckle_mob(L, force = TRUE)
|
||||
if(L.has_buckled_mobs())
|
||||
L.unbuckle_all_mobs(force = TRUE)
|
||||
|
||||
destarea.Entered(teleatom)
|
||||
|
||||
return TRUE
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
var/rights
|
||||
|
||||
/datum/keybinding/admin/can_use(client/C, mob/M)
|
||||
if(rights && !check_rights(rights, FALSE))
|
||||
if(rights && !check_rights(rights, FALSE, M))
|
||||
return FALSE
|
||||
return !isnull(C.holder) && ..()
|
||||
|
||||
|
||||