From d403c7273f24cdb7fabd4eadcd469d339c854f99 Mon Sep 17 00:00:00 2001
From: HMBGERDO <61080616+HMBGERDO@users.noreply.github.com>
Date: Wed, 5 Jul 2023 20:46:49 +0200
Subject: [PATCH 01/44] Projectile accuracy tweak (#21225)
* If we hit target we didnt aim at, there is no accuracy
* 1 tile 100% accuracy
* sniper projectiles always accurate
---
code/modules/projectiles/guns/energy/laser.dm | 1 +
code/modules/projectiles/guns/projectile/sniper.dm | 1 +
code/modules/projectiles/projectile_base.dm | 9 +++++++--
3 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm
index e5dda15c465c..89788897814c 100644
--- a/code/modules/projectiles/guns/energy/laser.dm
+++ b/code/modules/projectiles/guns/energy/laser.dm
@@ -195,6 +195,7 @@
damage = 10
speed = 0.75
impact_effect_type = /obj/effect/temp_visual/impact_effect/purple_laser
+ forced_accuracy = TRUE
var/can_knockdown = TRUE
/obj/item/projectile/beam/laser/sniper/Range()
diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm
index f3f5b4bcda57..eb5c4f90d3cd 100644
--- a/code/modules/projectiles/guns/projectile/sniper.dm
+++ b/code/modules/projectiles/guns/projectile/sniper.dm
@@ -58,6 +58,7 @@
damage = 70
weaken = 10 SECONDS
armour_penetration_flat = 70
+ forced_accuracy = TRUE
/obj/item/ammo_box/magazine/sniper_rounds/antimatter
name = "sniper rounds (Antimatter)"
diff --git a/code/modules/projectiles/projectile_base.dm b/code/modules/projectiles/projectile_base.dm
index e7cbdd4e6b8a..2129f44d1e83 100644
--- a/code/modules/projectiles/projectile_base.dm
+++ b/code/modules/projectiles/projectile_base.dm
@@ -55,7 +55,7 @@
var/stamina = 0
var/jitter = 0
/// Number of times an object can pass through an object. -1 is infinite
- var/forcedodge = 0
+ var/forcedodge = 0
var/dismemberment = 0 //The higher the number, the greater the bonus to dismembering. 0 will not dismember at all.
var/impact_effect_type //what type of impact effect to show when hitting something
var/ricochets = 0
@@ -78,6 +78,7 @@
/// Does this projectile do extra damage to / break shields?
var/shield_buster = FALSE
+ var/forced_accuracy = FALSE
/obj/item/projectile/New()
return ..()
@@ -212,7 +213,11 @@
return 0
var/distance = get_dist(get_turf(A), starting) // Get the distance between the turf shot from and the mob we hit and use that for the calculations.
- def_zone = ran_zone(def_zone, max(100-(7*distance), 5)) //Lower accurancy/longer range tradeoff. 7 is a balanced number to use.
+ if(!forced_accuracy)
+ if(get_dist(A, original) <= 1)
+ def_zone = ran_zone(def_zone, max(100 - (7 * distance), 5)) //Lower accurancy/longer range tradeoff. 7 is a balanced number to use.
+ else
+ def_zone = pick(list("head", "chest", "l_arm", "r_arm", "l_leg", "r_leg")) // If we were aiming at one target but another one got hit, no accuracy is applied
if(isturf(A) && hitsound_wall)
var/volume = clamp(vol_by_damage() + 20, 0, 100)
From 088f8302165477ed722a896da43389b105438068 Mon Sep 17 00:00:00 2001
From: Luc <89928798+lewcc@users.noreply.github.com>
Date: Fri, 7 Jul 2023 05:11:10 -0700
Subject: [PATCH 02/44] Fix typo with voice analyzer (#21582)
---
code/modules/assembly/voice.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/code/modules/assembly/voice.dm b/code/modules/assembly/voice.dm
index 8032d5c49322..4d6b7e987a15 100644
--- a/code/modules/assembly/voice.dm
+++ b/code/modules/assembly/voice.dm
@@ -15,7 +15,7 @@
if(recorded || listening)
. += "A meter on it flickers with every nearby sound."
else
- . += "It is is deactivated."
+ . += "It is deactivated."
/obj/item/assembly/voice/hear_talk(mob/living/M as mob, list/message_pieces)
hear_input(M, multilingual_to_message(message_pieces), 0)
From f663cd73c39afee15626bcccd4e1acfe9a9d0d0d Mon Sep 17 00:00:00 2001
From: Divulf <134484326+Divulf@users.noreply.github.com>
Date: Sat, 8 Jul 2023 00:17:55 +1200
Subject: [PATCH 03/44] Fixes false wall examine text to match regular walls.
Also makes fake walls very weak to simplemobs that have the ability to smash
objects. (#21575)
---
code/game/objects/structures/false_walls.dm | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm
index 6658200cfafb..46134ecda00c 100644
--- a/code/game/objects/structures/false_walls.dm
+++ b/code/game/objects/structures/false_walls.dm
@@ -21,6 +21,8 @@
var/walltype = /turf/simulated/wall
var/girder_type = /obj/structure/girder/displaced
var/opening = FALSE
+ /// Minimum environment smash level (found on simple animals) to break through this instantly
+ var/env_smash_level = ENVIRONMENT_SMASH_STRUCTURES
density = TRUE
opacity = TRUE
@@ -38,13 +40,14 @@
var/healthpercent = (obj_integrity/max_integrity) * 100
switch(healthpercent)
if(100)
- return "It looks fully intact."
+ . += "It looks fully intact."
if(70 to 99)
- return "It looks slightly damaged."
+ . += "It looks slightly damaged."
if(40 to 70)
- return "It looks moderately damaged."
+ . += "It looks moderately damaged."
if(0 to 40)
- return "It looks heavily damaged."
+ . += "It looks heavily damaged."
+ . += "
Using a lit welding tool on this item will allow you to slice through it, eventually removing the outer layer."
/obj/structure/falsewall/Destroy()
density = FALSE
@@ -116,6 +119,12 @@
if(istype(W, /obj/item/gun/energy/plasmacutter) || istype(W, /obj/item/pickaxe/drill/diamonddrill) || istype(W, /obj/item/pickaxe/drill/jackhammer) || istype(W, /obj/item/melee/energy/blade) || istype(W, /obj/item/twohanded/required/pyro_claws))
dismantle(user, TRUE)
+/obj/structure/falsewall/attack_animal(mob/living/simple_animal/M)
+ . = ..()
+ if(. && M.environment_smash >= env_smash_level)
+ deconstruct(FALSE)
+ to_chat(M, "You smash through the wall.")
+
/obj/structure/falsewall/screwdriver_act(mob/living/user, obj/item/I)
if(opening)
to_chat(user, "You must wait until the door has stopped moving.")
From 1499f24b124e1a4236a8b4d8b4b4f0b16217db1d Mon Sep 17 00:00:00 2001
From: Sadhorizon <108196626+Sadhorizon@users.noreply.github.com>
Date: Fri, 7 Jul 2023 14:22:19 +0200
Subject: [PATCH 04/44] Adds Supply Medal (#21539)
* cargo medal
* need 4 speed
changed name and description
* rename #2
past two were written at 3AM and are rather meh.
---
.../structures/crates_lockers/closets/secure/cargo_lockers.dm | 1 +
code/modules/clothing/under/accessories/accessory.dm | 4 ++++
2 files changed, 5 insertions(+)
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/cargo_lockers.dm b/code/game/objects/structures/crates_lockers/closets/secure/cargo_lockers.dm
index a357cef4cef3..478b8c01c32e 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/cargo_lockers.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/cargo_lockers.dm
@@ -25,3 +25,4 @@
new /obj/item/door_remote/quartermaster(src)
new /obj/item/organ/internal/eyes/cybernetic/meson(src)
new /obj/item/storage/bag/garment/quartermaster(src)
+ new /obj/item/clothing/accessory/medal/supply(src)
diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm
index 8abcf85f7bc4..853e06440edb 100644
--- a/code/modules/clothing/under/accessories/accessory.dm
+++ b/code/modules/clothing/under/accessories/accessory.dm
@@ -263,6 +263,10 @@
name = "meritous legal medal"
desc = "An award issued by the Magistrate to legal staff who uphold the rule of law."
+/obj/item/clothing/accessory/medal/supply
+ name = "stable supply medal"
+ desc = "An award issued by the Quartermaster to supply staff dedicated to being effective."
+
/obj/item/clothing/accessory/medal/heart
name = "bronze heart medal"
desc = "A rarely-awarded medal for those who sacrifice themselves in the line of duty to save their fellow crew."
From a3dc32cf344dbd441e85f6cbb694b166dc1f5e4b Mon Sep 17 00:00:00 2001
From: ATP-Engineer <120416457+ATP-Engineer@users.noreply.github.com>
Date: Fri, 7 Jul 2023 08:23:15 -0400
Subject: [PATCH 05/44] Fixes issue where Turret Control sprites arent actually
updated in previous PR (#21538)
* Removes actual turret file
FUCK
* Fixes turret controllers not actually being changed
GOD DAMNIT.
---
icons/obj/machines/turret_control.dmi | Bin 1216 -> 687 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/icons/obj/machines/turret_control.dmi b/icons/obj/machines/turret_control.dmi
index 34e15ac1764a74620ae1afe99affb0ece09f637b..a98f036d86e6d1446091131ce9a907d5aff6281d 100644
GIT binary patch
delta 591
zcmV-V0z~u#aWbEo|%^d
zR)}Fzep(uKg9zvY3go3ERZ_S$M+ZVF2MTGtQ0Q*`-MEpXOscK8bJH|#5iVsti!!b$9$5JbdKO7Lzw@Qje~)
zi=6QGT(x9fa+kN)XAPsk$b(nUv&tM|a9*4exjVAfih+UomZytjNX4zUbN1%l3Xo{y
zpA@QSh=_Q+e7BoN@EX?33R&wX6@*Hsxe8<%^egkFWk%yY#)e
z+Vt%e|FUP)i$Cp`ePZwWbN=%Sg%j2l{_EMR<+D%N>-}HA
zaBI!^xl8Z)sBrv$@U$rNOR}HM|AU2f@4Y_nU86p+R5X4?
zzPmMMX2s_xr=M0opXc&t=i1*&KZ}0e+o`@##;NZ9IW>WG;w%mf1YpDA3+MHJ)HHml
z?^nJ3?)c>Tn0-HL82&y!S?D9KanfEtzQ(R0O>C<0QYoV+vrn5F$shQ#$!%Xu-Lszz
zuS3r6h|!CFdz{_Bv5Q~h!~a`vpR<1lF*nTnuN&}@k@a7+-*e_W><6#6aMjxQT%X13
z{IBrm%;(HYBBS3Ozg~UPd{fx8&+Uo-E+qc5sy`)v>Y4OReg#A6_8RM-k3KWjwe=sF
zVYIN@Vc*P}k3Shc1{&@CkXSWS<^P_VXUrlt^M5k1o=>-PIQaSJ`v*<`DfyA$$
zXV`C4_14*aW_s-C>Id-6D
zrp)2L@WwzsA^%@&iOsz8C#TQi-|%vI_M*OBZ|iCnPpnhk{aHTwc)3>KOM87#B%k;B
zcl9j$iyw7G!c(Mjo&RxeZ}5I~-22_W?g{m!pBXPb&N-28$M91vi~;1L1@q6>Fzl!=
z5ny0MhB=qAw*H7tU}a!Ig$>=p2TJYbWVjyelIQ1REx6my-psV)-SK8;#+dJq4=!Yg
z{#)XEB{1Ktc3Sy2hT9;S1q^1tUQYNd3es0pzzx*W&V7R!B;yLwqsXq^@Y=Y}=E(yw
lkeQZ$%F$BI3Elq;R>>P%?%iQ~1S~EXJYD@<);T3K0RVtJ_geq}
From 8aa859b0f44d5ee76ce787742c06190153fb93fb Mon Sep 17 00:00:00 2001
From: GDN <96800819+GDNgit@users.noreply.github.com>
Date: Fri, 7 Jul 2023 07:23:34 -0500
Subject: [PATCH 06/44] Reduces the amount of perf organic space suit injects
(#21537)
---
code/modules/antagonists/changeling/powers/mutations.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm
index 30dbaeb3b7f3..b6eabd3a5d75 100644
--- a/code/modules/antagonists/changeling/powers/mutations.dm
+++ b/code/modules/antagonists/changeling/powers/mutations.dm
@@ -447,7 +447,7 @@
/obj/item/clothing/suit/space/changeling/process()
if(ishuman(loc))
var/mob/living/carbon/human/H = loc
- H.reagents.add_reagent("perfluorodecalin", REAGENTS_METABOLISM)
+ H.reagents.add_reagent("perfluorodecalin", 0.2)
/obj/item/clothing/head/helmet/space/changeling
name = "flesh mass"
From 0ac521e633d9838d1b3a05030f1bb980c8bd7c94 Mon Sep 17 00:00:00 2001
From: BiancaWilkson <42818125+BiancaWilkson@users.noreply.github.com>
Date: Fri, 7 Jul 2023 08:25:32 -0400
Subject: [PATCH 07/44] RCD ammo can be directly clicked (#21536)
---
code/game/objects/items/weapons/RCD.dm | 37 +++++++++++++++-----------
1 file changed, 22 insertions(+), 15 deletions(-)
diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm
index 2a85984094e0..a7df1f0adab1 100644
--- a/code/game/objects/items/weapons/RCD.dm
+++ b/code/game/objects/items/weapons/RCD.dm
@@ -162,27 +162,28 @@
if(user.incapacitated() || !user.Adjacent(src))
return FALSE
return TRUE
-
-/obj/item/rcd/attackby(obj/item/W, mob/user, params)
- if(!istype(W, /obj/item/rcd_ammo))
- return ..()
-
- var/obj/item/rcd_ammo/R = W
- if((matter + R.ammoamt) > max_matter)
+/**
+*Tries to load ammo into an RCD, borgs will not use this.
+* Arguments:
+* * cart - the compressed matter catridge to insert
+* * user - the user to display the chat messages to
+*/
+/obj/item/rcd/proc/load(obj/item/rcd_ammo/cart, mob/living/user)
+ if(matter == max_matter)
to_chat(user, "The RCD can't hold any more matter-units.")
- return
-
- if(!user.unEquip(R))
- to_chat(user, "[R] is stuck to your hand!")
- return
-
- matter += R.ammoamt
- qdel(R)
+ return FALSE
+ matter = clamp((matter + cart.ammoamt), 0, 100)
+ qdel(cart)
playsound(loc, 'sound/machines/click.ogg', 50, 1)
to_chat(user, "The RCD now holds [matter]/[max_matter] matter-units.")
update_icon(UPDATE_OVERLAYS)
SStgui.update_uis(src)
+/obj/item/rcd/attackby(obj/item/W, mob/user, params)
+ if(!istype(W, /obj/item/rcd_ammo))
+ return ..()
+ var/obj/item/rcd_ammo/R = W
+ load(R, user)
/**
* Creates and displays a radial menu to a user when they trigger the `attack_self` of the RCD.
*
@@ -690,6 +691,12 @@
materials = list(MAT_METAL=16000, MAT_GLASS=8000)
var/ammoamt = 20
+/obj/item/rcd_ammo/attackby(obj/item/I, mob/user)
+ if(!istype(I, /obj/item/rcd) || issilicon(user))
+ return ..()
+ var/obj/item/rcd/R = I
+ R.load(src, user)
+
/obj/item/rcd_ammo/large
ammoamt = 100
From e212ca48eda906d7d6de7e5ca6c6f73fae12ba57 Mon Sep 17 00:00:00 2001
From: Contrabang <91113370+Contrabang@users.noreply.github.com>
Date: Fri, 7 Jul 2023 08:26:07 -0400
Subject: [PATCH 08/44] Updates wallets (#21531)
* wallet update wooo
* didnt want to do that
* undo accidental changes
* i have a problem
* i swear I can type comments well
---
.../objects/items/weapons/storage/wallets.dm | 102 +++++-------------
code/modules/arcade/prize_datums.dm | 12 +--
code/modules/mob/inventory_procs.dm | 5 +
icons/obj/wallets.dmi | Bin 1957 -> 1159 bytes
4 files changed, 36 insertions(+), 83 deletions(-)
diff --git a/code/game/objects/items/weapons/storage/wallets.dm b/code/game/objects/items/weapons/storage/wallets.dm
index f44d5d5b7b57..35f67a630a74 100644
--- a/code/game/objects/items/weapons/storage/wallets.dm
+++ b/code/game/objects/items/weapons/storage/wallets.dm
@@ -33,6 +33,10 @@
var/obj/item/card/id/front_id = null
+ // allows for clicking of stuff on our person/on the ground to put in the wallet, so easy to stick your ID in your wallet
+ use_to_pickup = TRUE
+ pickup_all_on_tile = FALSE
+
/obj/item/storage/wallet/remove_from_storage(obj/item/I, atom/new_location)
. = ..()
@@ -57,35 +61,32 @@
if(wearing_human.wear_id == src)
wearing_human.sec_hud_set_ID()
- update_appearance(UPDATE_NAME|UPDATE_ICON_STATE)
+ update_appearance(UPDATE_NAME|UPDATE_OVERLAYS)
-/obj/item/storage/wallet/update_icon_state()
- if(front_id)
- switch(front_id.icon_state)
- if("silver")
- icon_state = "walletid_silver"
- return
- if("gold")
- icon_state = "walletid_gold"
- return
- if("centcom")
- icon_state = "walletid_centcom"
- return
- else
- icon_state = "walletid"
- return
- icon_state = "wallet"
+/obj/item/storage/wallet/update_overlays()
+ . = ..()
+ if(!front_id)
+ return
+ . += mutable_appearance(front_id.icon, front_id.icon_state)
+ . += front_id.overlays
+ . += mutable_appearance(icon, "wallet_overlay")
+ // fuck yeah, ass photo in my wallet
+ var/obj/item/photo/photo = locate(/obj/item/photo) in contents
+ if(!photo)
+ return
+ var/mutable_appearance/MA = mutable_appearance(photo.appearance)
+ MA.pixel_x = 11
+ MA.pixel_y = 1
+ . += MA
+ . += mutable_appearance(icon, "photo_overlay")
/obj/item/storage/wallet/update_name(updates)
. = ..()
if(front_id)
name = "wallet displaying [front_id]"
else
- name = get_empty_wallet_name()
-
-/obj/item/storage/wallet/proc/get_empty_wallet_name()
- return initial(name)
+ name = initial(name)
/obj/item/storage/wallet/GetID()
return front_id
@@ -112,62 +113,9 @@
new cash(src)
new coin(src)
-//////////////////////////////////////
-// Color Wallets //
-//////////////////////////////////////
-/obj/item/storage/wallet/color
+// Arcade Wallet
+/obj/item/storage/wallet/cheap
name = "cheap wallet"
- desc = "A cheap wallet from the arcade."
+ desc = "A cheap and flimsy wallet from the arcade."
storage_slots = 5 //smaller storage than normal wallets
-
-/obj/item/storage/wallet/color/Initialize(mapload)
- . = ..()
- if(!item_color)
- var/color_wallet = pick(subtypesof(/obj/item/storage/wallet/color))
- new color_wallet(loc)
- qdel(src)
- return
- update_appearance(UPDATE_NAME|UPDATE_DESC|UPDATE_ICON_STATE)
-
-/obj/item/storage/wallet/color/update_desc(updates)
- . = ..()
- desc = "A cheap, [item_color] wallet from the arcade."
-
-/obj/item/storage/wallet/color/update_icon_state()
- if(front_id)
- switch(front_id.icon_state)
- if("silver")
- icon_state = "[item_color]_walletid_silver"
- return
- if("gold")
- icon_state = "[item_color]_walletid_gold"
- return
- if("centcom")
- icon_state = "[item_color]_walletid_centcom"
- return
- else
- icon_state = "[item_color]_walletid"
- return
- icon_state = "[item_color]_wallet"
-
-/obj/item/storage/wallet/color/blue
- item_color = "blue"
-
-/obj/item/storage/wallet/color/red
- item_color = "red"
-
-/obj/item/storage/wallet/color/yellow
- item_color = "yellow"
-
-/obj/item/storage/wallet/color/green
- item_color = "green"
-
-/obj/item/storage/wallet/color/pink
- item_color = "pink"
-
-/obj/item/storage/waller/color/brown
- item_color = "brown"
-
-/obj/item/storage/wallet/color/get_empty_wallet_name()
- return "cheap [item_color] wallet"
diff --git a/code/modules/arcade/prize_datums.dm b/code/modules/arcade/prize_datums.dm
index 8fe06e4771c8..325a284b60fe 100644
--- a/code/modules/arcade/prize_datums.dm
+++ b/code/modules/arcade/prize_datums.dm
@@ -117,6 +117,12 @@ GLOBAL_DATUM_INIT(global_prizes, /datum/prizes, new())
typepath = /obj/item/ammo_box/caps
cost = 30
+/datum/prize_item/wallet
+ name = "Cheap Wallet"
+ desc = "A cheap and big enough for standard issue ID cards."
+ typepath = /obj/item/storage/wallet/cheap
+ cost = 30
+
/datum/prize_item/crayons
name = "Box of Crayons"
desc = "A six-pack of crayons, just like back in kindergarten."
@@ -141,12 +147,6 @@ GLOBAL_DATUM_INIT(global_prizes, /datum/prizes, new())
typepath = /obj/item/deck/cards/tiny/doublecards
cost = 50
-/datum/prize_item/wallet
- name = "Colored Wallet"
- desc = "Brightly colored and big enough for standard issue ID cards."
- typepath = /obj/item/storage/wallet/color
- cost = 50
-
/datum/prize_item/id_sticker
name = "Prisoner ID Sticker"
desc = "A sticker that can make any ID look like a prisoner ID."
diff --git a/code/modules/mob/inventory_procs.dm b/code/modules/mob/inventory_procs.dm
index b871d35e75a2..043f016d9789 100644
--- a/code/modules/mob/inventory_procs.dm
+++ b/code/modules/mob/inventory_procs.dm
@@ -251,6 +251,11 @@
S.handle_item_insertion(src)
return 1
+ S = M.get_item_by_slot(slot_wear_id)
+ if(istype(S) && S.can_be_inserted(src, 1)) //else we put in a wallet
+ S.handle_item_insertion(src)
+ return 1
+
S = M.get_item_by_slot(slot_belt)
if(istype(S) && S.can_be_inserted(src, 1)) //else we put in belt
S.handle_item_insertion(src)
diff --git a/icons/obj/wallets.dmi b/icons/obj/wallets.dmi
index 0a96bc16f5c86896236b4e801fcd89db5a223f48..a6d8d66b910e5fbd338286f3f05ebc6cccf65551 100644
GIT binary patch
literal 1159
zcmV;21bF+2P)V=-0C=2*%CQQAFce1NIrk}kbT8F*%~B$gL0_Q+ylnz$BgsYa?H$})+|Gfo
z#;fb?2s2n(IG2$A(0JbNq}DKrhsL8N5jcznBgQXqdBR54=!Fgi<00X~CL_t(|ob6gaNE=Zc{!%QsJcp8a
zgVWh&va|&es?(+Thk_zfs!I{0(7_=E7Zn@})kSCu-TZ^NNU=p)5UVtyi-I`R!6k_q
ziov!z4yC7GMPjz;|?_eYWM)KL=vfOs^bQ`|SUln9Uu5RXRm(XLh;XS0s`rc@085SEzZzRj|Xcr>Du3jhF%
z+Xq$kKhe$|_erJ;eQX7-6dIL_nn7^sDC;jlZ(70{|HA@2sf*yVXr=0jjYlx0r|s
z4MVfYuT4Q!Pi@^W+SLjG&@|1cOQ$nnOl%oQQX^FL6yew+U?%`jxjnhXM8GG%wRecm
zS$*EBZPVW2M9B`2AAp(H1r6e^L{?*k@AwmrUGgXV=x&wf#Nu50$#QopL
z$b=LCJ4U@_KL-=?tOJbbpPj?cwh=V!F9RqXrk_1;=vO+B+0;
zK#8K?K0rl5J;s=+2)zE!kFs&BEKXJ?g&$*PaPl@NxA`p*8bmhUllKN0EXiU@M)jBSldZlcq;zW296Kp`f)hfx;h@QZ=x?L16p9{xKK|22BUD
zEWgg#4Q-%)cL9tsbhO9_OSyzq+h$oVc?sgMb0+7;7(-ZMsJ|54b~~JrdvTV_IWF^U
zBO-GLP;dYz7YYW^EX&4^U-Qyzf+TP%$#P1vs|uZH&{vkWcu8G35ZOhTIAbCfc<6UFP}6*Wp24-jEvkX-uJRZdfwgv
zw*krn5l;v}iJCtX^aY?MKn-62Y68^o1)wHC4f4Ez`Nr>dQ1cG(1)wHC4PO9i0@UyY
zpe8^KUjS+X)bItMCO{2e0BQo%sCfZg-43tEx`od7U&O!v_hgGGToYhD)~$=?=htK1
zx>rPSZ3#Hd&wB-~3Ba?ncHr4rufSCYTu)73M{$1MD{$QbqWO8Rz_lRQ(INx5`K3s?
zI^Na`aLoZuzaa4nTuYBT&GGY(sHu;|U0VX8pT>I)HUBE?3qVbP8omJ31gPN)Kuv%e
Z{{ZhW7FpFGF_q(@FWqOfZ
zbhNf=K@gE(D3juo&|csAq)ni
zOF)7q4LW>Sw1YqD5WIwatM`NF
zJ>r+zr(}d>vf2912+l77UVD98&K$BRP}--R#AcMT)>z?zErZggI7j(Yc5s2r$WB
zG?O&*KED#oc?i2!c0hLuwbdKDKS<%R?E82)IF0JuIw835oO^+^|CF<|RK92L_~tCV
z12reeSvDi%8YGbPz1Zmc~Iof+C7S0wiNke<|Gp1rcYIYVyg$9ss
zdo@0P55!^ecgFR-ndyRkSyYwl;a@$CZL^BHaCcJW?W1S+8}-b8H>Tg_5~EmgiE*?~
zr5gQSX=hZFI!Udn7edN~KVqV$vwu(4);^ohHu4A|wIbcaYvE(ywDaQPVq8J5`EK(E
zHM`9xsq&ebQzbkzVf$KITexuAAhtx37jdyXA)yiad1Pcp!^E~(R-?Ur2uSZ}+i`aY
zaUo?AtBx%XHO&l|5nJvd2?Rx>e0jdFrHyy{OQ3TWXu6{m5t}nt>=ELRxVzJ6Skt
zyxh*W=%oc8YKlA8-9|PNYZfnwC~;zM!@-J2?_X@W~f#AS%
z^8;&Xm%{BhsuO|O7AgI8^UgC0Vp}!94H<&$SRY2wmSkX5gcu@TpFwU0*|G%TARr55
zAY)|^loCv~`V{r?uz=%*(2V9c8>>jW4L0tpU!bUZ?O+g%;DgqVC@1^vsDdcG%Rfd0)uK(93
zt68Klz0Sdj*!F5{fM(m)pFiFosytGy2))^*Mk~Md7TG0kdpV&7mFO1+k(l0l{
zH-h`=_9A%9MuF^@Bu2H4Ld)gsxPsXI3~UfA>y0-;u>7^c$21xkV0xfKU7C?NUPR`Sib(&Vw}x
z%GShsw#0x%X!-4mb)P9LVxcprB1hIbbaLYObmQaz?bxvj9`fc(>Yn1+DJA;3!HI@c
zY{FO+?C+p@`^uc(h$ZSnE8SqLf^V{#=~b=ktnOJAQwmEGKNZDEFyX%IJ!O*NlExMEm~
zihVj-b~$!@3N}=k0y}#3HR3Al=-<&+JFC_?Il?ntik66V>k?59RqV;X)4iH$i9xOc
z*|o#k?g1RyiOvSHtA*n3kE%;m(Qw2UtUoIec-ECsH!znC)py7y+(3=ubNg0W6JD_gpvqh{O<4;%18@$`
Date: Fri, 7 Jul 2023 08:26:50 -0400
Subject: [PATCH 09/44] showers wake you up (#21530)
---
code/modules/mob/living/living_defense.dm | 3 +++
1 file changed, 3 insertions(+)
diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm
index fa5ad75f4b62..924b2a93e7da 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/living_defense.dm
@@ -237,6 +237,9 @@
/mob/living/water_act(volume, temperature, source, method = REAGENT_TOUCH)
. = ..()
adjust_fire_stacks(-(volume * 0.2))
+ if(method == REAGENT_TOUCH)
+ // 100 volume - 20 seconds of lost sleep
+ AdjustSleeping(-(volume * 0.2 SECONDS), bound_lower = 1 SECONDS) // showers cannot save you from sleeping gas, 1 second lower boundary
//This is called when the mob is thrown into a dense turf
/mob/living/proc/turf_collision(turf/T, speed)
From e15438fdfeb65307632452321d1e87653631313f Mon Sep 17 00:00:00 2001
From: Zelf <108688684+ArcZelf@users.noreply.github.com>
Date: Fri, 7 Jul 2023 13:28:42 +0100
Subject: [PATCH 10/44] Reworks the "derelict5" space ruin. (#21524)
* drink mini potions before big potions
* fix numero uno
* adds the paper in mission_code
* fix numero dos
* fix numero tres
---
.../RandomRuins/SpaceRuins/derelict5.dmm | 3533 +++++++++--------
.../mission_code/ruins/derelict5.dm | 5 +
paradise.dme | 1 +
3 files changed, 1905 insertions(+), 1634 deletions(-)
create mode 100644 code/modules/awaymissions/mission_code/ruins/derelict5.dm
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/derelict5.dmm b/_maps/map_files/RandomRuins/SpaceRuins/derelict5.dmm
index 8725b8a95b92..782e15a30898 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/derelict5.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/derelict5.dmm
@@ -1,1745 +1,2010 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
-"a" = (
-/turf/template_noop,
-/area/template_noop)
-"b" = (
-/turf/simulated/mineral,
+"aN" = (
+/obj/effect/spawner/lootdrop/crate_spawner,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plasteel,
/area/ruin/space/unpowered)
-"d" = (
-/turf/simulated/floor/plating/asteroid/airless,
+"bO" = (
+/mob/living/simple_animal/hostile/skeleton,
+/turf/simulated/floor/plasteel,
/area/ruin/space/unpowered)
-"e" = (
-/turf/simulated/wall,
+"bQ" = (
+/obj/structure/table,
+/obj/item/stack/ore/gold{
+ pixel_x = 8
+ },
+/obj/item/stack/ore/gold{
+ pixel_y = -5
+ },
+/obj/item/stack/ore/gold{
+ pixel_y = 2
+ },
+/obj/item/stack/ore/gold{
+ pixel_x = -5
+ },
+/turf/simulated/floor/plasteel,
/area/ruin/space/unpowered)
-"f" = (
-/obj/effect/spawner/random_spawners/wall_rusted_always,
-/turf/simulated/wall,
+"dz" = (
+/obj/structure/closet/crate,
+/obj/item/storage/bag/ore,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plasteel,
/area/ruin/space/unpowered)
-"g" = (
-/turf/simulated/floor/plating,
+"et" = (
+/mob/living/simple_animal/cockroach,
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"fi" = (
+/obj/structure/closet/cabinet,
+/obj/item/clothing/under/suit/charcoal,
+/obj/item/clothing/shoes/laceup,
+/obj/item/clothing/glasses/sunglasses,
+/obj/item/paper/fluff/ruins/derelict5,
+/turf/simulated/floor/plasteel,
/area/ruin/space/unpowered)
-"h" = (
+"fV" = (
/obj/structure/closet/crate,
+/obj/item/clothing/suit/armor/vest,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"hG" = (
+/obj/structure/kitchenspike,
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"iS" = (
+/obj/structure/door_assembly,
+/obj/structure/barricade/wooden/crude,
/turf/simulated/floor/plating,
/area/ruin/space/unpowered)
-"i" = (
+"jz" = (
/obj/effect/spawner/lootdrop/crate_spawner,
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"kb" = (
+/obj/structure/table,
+/obj/item/storage/toolbox/mechanical,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"kO" = (
/turf/simulated/floor/plating,
/area/ruin/space/unpowered)
-"j" = (
-/obj/structure/barricade/wooden,
-/obj/structure/door_assembly,
+"kR" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/table,
+/obj/machinery/kitchen_machine/microwave,
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"mn" = (
+/obj/structure/closet/crate,
+/obj/item/toy/plushie/nianplushie,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"nb" = (
+/obj/structure/sign/biohazard{
+ pixel_y = 32
+ },
+/obj/effect/decal/cleanable/cobweb2,
/turf/simulated/floor/plating,
/area/ruin/space/unpowered)
-"k" = (
+"ph" = (
+/obj/structure/table,
+/obj/item/stack/ore/uranium{
+ pixel_y = 11
+ },
+/obj/item/stack/ore/uranium{
+ pixel_y = 11;
+ pixel_x = 9
+ },
+/obj/item/stack/ore/uranium{
+ pixel_y = 2
+ },
+/obj/item/stack/ore/uranium{
+ pixel_y = 10;
+ pixel_x = -8
+ },
+/obj/item/stack/ore/uranium{
+ pixel_y = 4;
+ pixel_x = 9
+ },
+/obj/item/stack/ore/uranium{
+ pixel_y = 4;
+ pixel_x = -9
+ },
+/obj/effect/decal/cleanable/cobweb,
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"qF" = (
+/obj/effect/spawner/lootdrop/crate_spawner,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/cobweb2,
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"qY" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/item/chair,
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"rc" = (
+/obj/structure/table,
+/obj/item/flashlight/lamp,
+/obj/item/storage/fancy/cigarettes/cigpack_robustgold{
+ pixel_x = -11;
+ pixel_y = 12
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"rI" = (
+/obj/structure/closet/crate,
+/obj/item/pickaxe,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"sd" = (
+/obj/item/twohanded/required/kirbyplants/dead,
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"vg" = (
+/obj/structure/table_frame,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"vE" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"wy" = (
+/obj/machinery/door/airlock,
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"xs" = (
+/obj/effect/decal/cleanable/fungus,
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"xQ" = (
+/obj/structure/table,
+/obj/item/gun/projectile/revolver/russian,
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"yY" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"zr" = (
/obj/structure/table,
/obj/item/storage/toolbox/electrical,
-/turf/simulated/floor/plating,
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"zy" = (
+/obj/structure/table,
+/obj/item/circular_saw,
+/obj/item/scalpel{
+ pixel_y = 8
+ },
+/obj/item/hemostat{
+ pixel_y = -17
+ },
+/obj/item/retractor{
+ pixel_x = -5;
+ pixel_y = -15
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"zN" = (
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"Bm" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/insectguts,
+/turf/simulated/floor/plasteel,
/area/ruin/space/unpowered)
-"l" = (
+"Gx" = (
+/obj/effect/decal/cleanable/blood,
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"Gz" = (
/obj/effect/decal/remains/human,
+/obj/effect/decal/cleanable/blood,
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"KU" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/blood/splatter,
/turf/simulated/floor/plating,
/area/ruin/space/unpowered)
-"m" = (
+"Li" = (
+/obj/structure/door_assembly,
+/obj/structure/barricade/wooden/crude,
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"LA" = (
/obj/structure/table,
-/obj/item/storage/toolbox/syndicate,
-/turf/simulated/floor/plating,
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"LD" = (
+/obj/structure/closet/cabinet,
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"LZ" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/cobweb,
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"Nv" = (
+/obj/structure/falsewall/rock_ancient,
+/turf/simulated/floor/plating/asteroid/airless,
+/area/ruin/space/unpowered)
+"Oc" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/blood/splatter,
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"Oj" = (
+/obj/machinery/door/airlock/external,
+/obj/structure/barricade/wooden/crude,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"Pq" = (
+/obj/effect/spawner/random_spawners/wall_rusted_always,
+/turf/simulated/wall,
+/area/ruin/space/unpowered)
+"Qx" = (
+/turf/simulated/mineral/ancient,
/area/ruin/space/unpowered)
-"n" = (
+"Se" = (
+/turf/simulated/wall,
+/area/ruin/space/unpowered)
+"SX" = (
/obj/structure/table,
-/turf/simulated/floor/plating,
+/obj/item/reagent_containers/food/snacks/beans{
+ pixel_x = 10
+ },
+/obj/item/reagent_containers/food/snacks/beans{
+ pixel_x = -5
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"TT" = (
+/turf/template_noop,
+/area/template_noop)
+"VL" = (
+/mob/living/simple_animal/cockroach,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"VS" = (
+/turf/simulated/mineral,
/area/ruin/space/unpowered)
-"o" = (
-/obj/structure/barricade/wooden,
+"Wy" = (
+/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plating,
/area/ruin/space/unpowered)
-"p" = (
-/obj/structure/barricade/wooden,
-/obj/machinery/door/airlock/external,
+"WA" = (
/turf/simulated/floor/plating/asteroid/airless,
/area/ruin/space/unpowered)
-"q" = (
+"WG" = (
+/obj/structure/table,
+/obj/item/storage/toolbox/syndicate,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"Yx" = (
+/obj/structure/table,
+/obj/item/reagent_containers/glass/bottle/sacid{
+ pixel_x = -6
+ },
+/obj/item/reagent_containers/glass/bottle/salicylic{
+ pixel_x = 8
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"Zv" = (
+/obj/structure/table,
+/obj/item/lighter/zippo{
+ pixel_x = -7;
+ pixel_y = -8
+ },
+/obj/item/kitchen/knife/combat/survival{
+ pixel_y = -9;
+ pixel_x = 9
+ },
+/obj/item/stack/spacecash/c100{
+ pixel_y = 6
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"ZP" = (
+/obj/structure/table_frame,
+/turf/simulated/floor/plasteel,
+/area/ruin/space/unpowered)
+"ZZ" = (
/obj/machinery/door/airlock/external,
-/turf/simulated/floor/plating,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plasteel,
/area/ruin/space/unpowered)
(1,1,1) = {"
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
"}
(2,1,1) = {"
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-b
-b
-b
-a
-a
-a
-a
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+VS
+VS
+VS
+TT
+TT
+TT
+TT
"}
(3,1,1) = {"
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-b
-b
-b
-a
-a
-a
-a
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+VS
+VS
+VS
+TT
+TT
+TT
+TT
"}
(4,1,1) = {"
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-b
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-b
-a
-a
-a
-b
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+VS
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+VS
+TT
+TT
+TT
+VS
"}
(5,1,1) = {"
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
"}
(6,1,1) = {"
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-d
-d
-d
-d
-a
-a
-a
-a
-a
-a
-a
-a
-a
-b
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-b
-a
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+WA
+WA
+WA
+WA
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+VS
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+VS
+TT
"}
(7,1,1) = {"
-a
-a
-a
-a
-a
-a
-a
-a
-a
-d
-d
-d
-d
-d
-d
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+WA
+WA
+WA
+WA
+WA
+WA
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
"}
(8,1,1) = {"
-a
-a
-a
-a
-a
-a
-a
-a
-b
-b
-b
-b
-b
-d
-d
-d
-d
-a
-a
-a
-a
-a
-a
-a
-a
-a
-b
-b
-b
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+Qx
+Qx
+WA
+WA
+WA
+WA
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+VS
+VS
+VS
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
"}
(9,1,1) = {"
-a
-a
-a
-a
-a
-a
-a
-b
-b
-b
-b
-b
-b
-d
-d
-d
-d
-d
-d
-d
-a
-a
-a
-a
-a
-a
-b
-b
-b
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+WA
+WA
+WA
+WA
+WA
+WA
+WA
+TT
+TT
+TT
+TT
+TT
+TT
+VS
+VS
+VS
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
"}
(10,1,1) = {"
-a
-a
-a
-a
-a
-a
-a
-b
-b
-b
-b
-b
-b
-b
-b
-b
-d
-d
-d
-d
-d
-a
-a
-a
-a
-a
-a
-b
-b
-b
-b
-a
-a
-a
-a
-a
-a
-a
-a
-a
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+WA
+WA
+WA
+WA
+WA
+TT
+TT
+TT
+TT
+TT
+TT
+VS
+VS
+VS
+VS
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
"}
(11,1,1) = {"
-a
-a
-a
-a
-a
-a
-a
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-d
-d
-a
-a
-a
-a
-a
-a
-b
-b
-b
-b
-a
-a
-a
-a
-a
-a
-a
-a
-a
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+WA
+WA
+TT
+TT
+TT
+TT
+TT
+TT
+VS
+VS
+VS
+VS
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
"}
(12,1,1) = {"
-a
-a
-a
-a
-a
-a
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-d
-d
-d
-d
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+TT
+TT
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+WA
+WA
+WA
+WA
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
"}
(13,1,1) = {"
-a
-a
-a
-a
-a
-a
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-d
-d
-d
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+TT
+TT
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+WA
+WA
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
"}
(14,1,1) = {"
-a
-a
-a
-a
-a
-a
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-d
-d
-d
-d
-d
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+TT
+TT
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+WA
+WA
+WA
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
"}
(15,1,1) = {"
-a
-a
-a
-a
-a
-a
-b
-b
-b
-b
-b
-b
-b
-f
-f
-e
-f
-e
-e
-e
-b
-b
-d
-d
-d
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+TT
+TT
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Pq
+Pq
+Se
+Pq
+Se
+Qx
+Qx
+Qx
+Qx
+Qx
+WA
+WA
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
"}
(16,1,1) = {"
-a
-a
-a
-a
-a
-a
-b
-b
-b
-b
-b
-b
-g
-i
-i
-l
-g
-f
-g
-g
-b
-b
-d
-d
-d
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+TT
+TT
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+Qx
+Qx
+Pq
+aN
+kO
+LA
+vg
+kb
+Pq
+LZ
+Qx
+Qx
+Qx
+Qx
+WA
+WA
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
"}
(17,1,1) = {"
-a
-a
-a
-a
-a
-a
-a
-a
-b
-b
-b
-e
-g
-g
-g
-g
-h
-f
-g
-g
-e
-b
-d
-d
-d
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+Qx
+Se
+zN
+vE
+zN
+Wy
+vE
+Pq
+zN
+VL
+Pq
+Qx
+Qx
+Qx
+WA
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
"}
(18,1,1) = {"
-a
-a
-a
-a
-a
-a
-a
-a
-b
-b
-b
-e
-g
-g
-k
-m
-i
-e
-g
-g
-b
-b
-d
-d
-d
-d
-a
-a
-a
-a
-a
-a
-b
-b
-b
-a
-a
-a
-a
-a
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+Qx
+Se
+qF
+vE
+zr
+WG
+vg
+Se
+vE
+KU
+Se
+Qx
+Qx
+Qx
+WA
+WA
+WA
+TT
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+TT
+TT
+TT
+TT
+TT
"}
(19,1,1) = {"
-a
-a
-a
-a
-a
-a
-a
-a
-b
-b
-b
-f
-e
-j
-f
-f
-e
-e
-d
-i
-e
-b
-b
-b
-d
-d
-d
-d
-d
-a
-a
-a
-b
-b
-b
-b
-b
-a
-a
-a
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+Qx
+Pq
+Se
+iS
+Pq
+Pq
+Se
+Se
+zN
+xs
+Qx
+Qx
+Qx
+Qx
+Qx
+WA
+WA
+WA
+TT
+TT
+TT
+WA
+Qx
+Qx
+Qx
+Qx
+Qx
+TT
+TT
+TT
"}
(20,1,1) = {"
-a
-a
-a
-a
-a
-a
-a
-a
-a
-b
-b
-b
-g
-g
-i
-h
-i
-e
-g
-g
-f
-b
-b
-b
-d
-d
-d
-d
-d
-d
-d
-d
-d
-d
-b
-b
-b
-a
-a
-a
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+Qx
+Se
+ph
+kO
+zN
+fV
+rI
+Se
+kO
+vE
+Pq
+Qx
+Qx
+Qx
+Qx
+WA
+WA
+WA
+WA
+WA
+WA
+WA
+WA
+WA
+Qx
+Qx
+Qx
+TT
+TT
+TT
"}
(21,1,1) = {"
-a
-a
-a
-a
-a
-a
-a
-a
-a
-b
-b
-b
-g
-g
-g
-g
-g
-e
-g
-d
-f
-b
-b
-b
-d
-d
-d
-d
-d
-d
-d
-d
-d
-d
-b
-b
-b
-b
-b
-a
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+Qx
+Qx
+ZP
+Bm
+yY
+Wy
+vE
+Li
+zN
+zN
+Pq
+Qx
+Qx
+Qx
+Qx
+WA
+WA
+WA
+WA
+WA
+WA
+WA
+WA
+WA
+Qx
+Qx
+Qx
+Qx
+Qx
+TT
"}
(22,1,1) = {"
-a
-a
-a
-a
-a
-a
-a
-a
-a
-b
-b
-e
-g
-g
-g
-g
-g
-j
-g
-g
-e
-b
-b
-b
-d
-d
-d
-d
-d
-d
-d
-d
-d
-d
-d
-d
-b
-b
-b
-a
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+Qx
+Se
+bQ
+vg
+jz
+mn
+dz
+Se
+vE
+kO
+Se
+Qx
+Qx
+Qx
+Qx
+WA
+WA
+WA
+WA
+WA
+WA
+WA
+WA
+WA
+WA
+Qx
+Qx
+Qx
+Qx
+TT
"}
(23,1,1) = {"
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-b
-e
-h
-h
-g
-n
-g
-e
-g
-d
-e
-e
-e
-b
-d
-d
-d
-d
-d
-d
-d
-d
-d
-d
-d
-d
-b
-b
-b
-b
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+Qx
+Qx
+Pq
+Se
+Pq
+Se
+Pq
+Se
+zN
+vE
+Se
+Se
+Se
+Se
+Qx
+WA
+WA
+WA
+WA
+WA
+WA
+WA
+WA
+WA
+WA
+Qx
+Qx
+Qx
+Qx
+Qx
"}
(24,1,1) = {"
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-b
-b
-f
-f
-j
-f
-g
-e
-d
-o
-p
-o
-q
-d
-d
-d
-d
-d
-d
-d
-d
-d
-d
-d
-d
-d
-b
-b
-b
-b
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+Qx
+zN
+vE
+hG
+bO
+zN
+Pq
+kO
+vE
+Oj
+vE
+vE
+ZZ
+Nv
+WA
+WA
+WA
+WA
+WA
+WA
+WA
+WA
+WA
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
"}
(25,1,1) = {"
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-b
-i
-h
-g
-f
-i
-e
-e
-b
-e
-e
-e
-b
-d
-d
-d
-d
-d
-d
-d
-d
-d
-d
-d
-d
-b
-b
-b
-b
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+Qx
+Qx
+kO
+kO
+Gx
+Wy
+Se
+zN
+kO
+Se
+Se
+Se
+Se
+Qx
+Qx
+Qx
+WA
+WA
+WA
+WA
+WA
+WA
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
"}
(26,1,1) = {"
-a
-a
-a
-b
-a
-a
-a
-a
-a
-a
-a
-b
-b
-e
-f
-e
-b
-b
-b
-b
-b
-b
-b
-b
-d
-d
-d
-d
-d
-d
-d
-d
-d
-d
-d
-d
-d
-b
-b
-b
+TT
+TT
+TT
+VS
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+Qx
+Qx
+Gx
+zN
+zN
+zN
+Se
+Oc
+kO
+Pq
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+WA
+WA
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
"}
(27,1,1) = {"
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-d
-d
-d
-d
-d
-d
-d
-d
-d
-d
-d
-b
-b
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+Qx
+Qx
+zN
+Wy
+Wy
+Li
+et
+Wy
+Se
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Pq
+Se
+wy
+Se
+Pq
+Se
+Qx
+Qx
+Qx
+Qx
+Qx
"}
(28,1,1) = {"
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-d
-d
-d
-d
-d
-d
-d
-d
-d
-d
-b
-b
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+Qx
+zy
+Yx
+zN
+LD
+Se
+nb
+zN
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Se
+fi
+vE
+zN
+zN
+kR
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
"}
(29,1,1) = {"
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-d
-d
-d
-d
-d
-d
-d
-d
-d
-d
-b
-b
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Se
+Pq
+Se
+Se
+Pq
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Pq
+zN
+zN
+qY
+zN
+SX
+Pq
+Qx
+Qx
+Qx
+Qx
+Qx
"}
(30,1,1) = {"
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-d
-d
-d
-d
-d
-d
-d
-d
-d
-d
-d
-b
-b
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Se
+vE
+zN
+Gz
+zN
+vE
+Pq
+Qx
+Qx
+Qx
+Qx
+Qx
"}
(31,1,1) = {"
-a
-a
-a
-b
-b
-a
-a
-a
-a
-a
-a
-a
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-d
-d
-d
-d
-d
-d
-d
-d
-d
-b
-b
-b
-b
+TT
+TT
+TT
+VS
+VS
+TT
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Pq
+sd
+xQ
+Zv
+rc
+vE
+Se
+Qx
+Qx
+Qx
+Qx
+Qx
"}
(32,1,1) = {"
-a
-a
-b
-b
-b
-a
-a
-a
-a
-a
-a
-a
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-d
-d
-d
-d
-d
-d
-d
-d
-b
-b
-b
-a
+TT
+TT
+VS
+VS
+VS
+TT
+TT
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Se
+Qx
+Pq
+Pq
+Se
+Pq
+Se
+Qx
+Qx
+Qx
+Qx
+TT
"}
(33,1,1) = {"
-a
-a
-b
-b
-b
-b
-a
-a
-a
-a
-a
-a
-a
-a
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-d
-d
-d
-d
-d
-d
-b
-b
-b
-b
-b
-a
+TT
+TT
+VS
+VS
+VS
+VS
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+TT
"}
(34,1,1) = {"
-a
-a
-a
-b
-b
-b
-a
-a
-a
-a
-a
-a
-a
-a
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-d
-d
-b
-b
-b
-b
-b
-a
+TT
+TT
+TT
+VS
+VS
+VS
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+TT
"}
(35,1,1) = {"
-a
-a
-b
-a
-a
-a
-a
-a
-a
-b
-a
-a
-a
-a
-a
-a
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-a
-a
+TT
+TT
+VS
+TT
+TT
+TT
+TT
+TT
+TT
+VS
+TT
+TT
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+TT
+TT
"}
(36,1,1) = {"
-a
-a
-b
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-a
-a
+TT
+TT
+VS
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+TT
+TT
"}
(37,1,1) = {"
-a
-a
-a
-a
-a
-a
-b
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-a
-a
+TT
+TT
+TT
+TT
+TT
+TT
+VS
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+TT
+TT
"}
(38,1,1) = {"
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-b
-b
-b
-b
-b
-b
-b
-a
-a
-a
-a
-a
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+Qx
+TT
+TT
+TT
+TT
+TT
"}
(39,1,1) = {"
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
"}
(40,1,1) = {"
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
+TT
"}
diff --git a/code/modules/awaymissions/mission_code/ruins/derelict5.dm b/code/modules/awaymissions/mission_code/ruins/derelict5.dm
new file mode 100644
index 000000000000..a34ec65cd4db
--- /dev/null
+++ b/code/modules/awaymissions/mission_code/ruins/derelict5.dm
@@ -0,0 +1,5 @@
+//stuff for the derelict 5 space ruin (derelict5.dmm)
+
+/obj/item/paper/fluff/ruins/derelict5
+ name = "The Bunker Key"
+ info = "In a game of direction I hold the key, to find your way solve this riddle for me,
Three tiles east from the front door, stand still turn right and look straight forth,
Continue onward, touch the wall and you'll see, the bunker entrance is where you will be."
diff --git a/paradise.dme b/paradise.dme
index 1e26e9276005..95bf8675307a 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -1441,6 +1441,7 @@
#include "code\modules\awaymissions\mission_code\challenge.dm"
#include "code\modules\awaymissions\mission_code\ghost_role_spawners\golems.dm"
#include "code\modules\awaymissions\mission_code\ghost_role_spawners\oldstation_spawns.dm"
+#include "code\modules\awaymissions\mission_code\ruins\derelict5.dm"
#include "code\modules\awaymissions\mission_code\ruins\gps_ruin.dm"
#include "code\modules\awaymissions\mission_code\ruins\oldstation.dm"
#include "code\modules\awaymissions\mission_code\ruins\snowbiodome.dm"
From 326fdd76250016341485856956b480f2855d6d74 Mon Sep 17 00:00:00 2001
From: Sadhorizon <108196626+Sadhorizon@users.noreply.github.com>
Date: Fri, 7 Jul 2023 14:29:17 +0200
Subject: [PATCH 11/44] Cigarette vendor tweaks (#21523)
* justice4cigars
* oop
minor tweak, left empty spaces in code
* consistnecy
moved robust golds out of conttraband for beach vendors
* consistency fix
* carth's suggestion + carps
---
code/game/machinery/vendors/generic_vendors.dm | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/code/game/machinery/vendors/generic_vendors.dm b/code/game/machinery/vendors/generic_vendors.dm
index f44e701440c5..51cb6f9c31a3 100644
--- a/code/game/machinery/vendors/generic_vendors.dm
+++ b/code/game/machinery/vendors/generic_vendors.dm
@@ -891,16 +891,20 @@
icon_state = "cigs"
icon_lightmask = "cigs"
products = list(
- /obj/item/storage/fancy/cigarettes/cigpack_robust = 12,
+ /obj/item/storage/fancy/cigarettes/cigpack_robust = 6,
+ /obj/item/storage/fancy/cigarettes/cigpack_carp = 6,
/obj/item/storage/fancy/cigarettes/cigpack_uplift = 6,
/obj/item/storage/fancy/cigarettes/cigpack_midori = 6,
/obj/item/storage/fancy/cigarettes/cigpack_random = 6,
+ /obj/item/storage/fancy/cigarettes/cigpack_robustgold = 1,
+ /obj/item/clothing/mask/cigarette/cigar/havana = 2,
/obj/item/reagent_containers/food/pill/patch/nicotine = 10,
/obj/item/storage/box/matches = 10,
/obj/item/lighter/random = 4,
- /obj/item/storage/fancy/rollingpapers = 5)
- contraband = list(/obj/item/lighter/zippo = 4, /obj/item/storage/fancy/cigarettes/cigpack_robustgold = 1, /obj/item/clothing/mask/cigarette/cigar/havana = 2)
+ /obj/item/lighter/zippo = 2)
+ contraband = list(/obj/item/storage/fancy/rollingpapers = 5)
prices = list(/obj/item/storage/fancy/cigarettes/cigpack_robust = 25,
+ /obj/item/storage/fancy/cigarettes/cigpack_carp = 25,
/obj/item/storage/fancy/cigarettes/cigpack_uplift = 35,
/obj/item/storage/fancy/cigarettes/cigpack_midori = 60,
/obj/item/storage/fancy/cigarettes/cigpack_random = 80,
@@ -908,6 +912,7 @@
/obj/item/reagent_containers/food/pill/patch/nicotine = 70,
/obj/item/storage/box/matches = 20,
/obj/item/lighter/random = 40,
+ /obj/item/lighter/zippo = 80,
/obj/item/storage/fancy/rollingpapers = 30,
/obj/item/clothing/mask/cigarette/cigar/havana = 80)
refill_canister = /obj/item/vending_refill/cigarette
@@ -938,10 +943,12 @@
/obj/item/storage/fancy/cigarettes/cigpack_robust = 3,
/obj/item/storage/fancy/cigarettes/cigpack_carp = 3,
/obj/item/storage/fancy/cigarettes/cigpack_midori = 3,
+ /obj/item/storage/fancy/cigarettes/cigpack_robustgold = 1,
+ /obj/item/clothing/mask/cigarette/cigar/havana = 2,
/obj/item/storage/box/matches = 10,
- /obj/item/lighter/random = 4,
+ /obj/item/lighter/zippo = 4,
/obj/item/storage/fancy/rollingpapers = 5)
- contraband = list(/obj/item/storage/fancy/cigarettes/cigpack_robustgold = 1, /obj/item/clothing/mask/cigarette/cigar/havana = 2, /obj/item/lighter/zippo = 3)
+ contraband = list()
prices = list()
/obj/machinery/economy/vending/wallmed
From 742bddd653745e4bdb7448431a5b956f75a3a915 Mon Sep 17 00:00:00 2001
From: ATP-Engineer <120416457+ATP-Engineer@users.noreply.github.com>
Date: Fri, 7 Jul 2023 08:30:03 -0400
Subject: [PATCH 12/44] Ports TGs new crates! (not really) (#21509)
* Removes old .dmi
Removes old .dmi to import new file
* Ports TG crates (not really)
Ports TG style garbage cans (no animation in current state)
---
icons/obj/crates.dmi | Bin 11340 -> 12595 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/icons/obj/crates.dmi b/icons/obj/crates.dmi
index 1b72e14432b8f56ad2c8f50aa05d13b773a0d686..10d0b26c7e4273df54aa388786300666b4dd8143 100644
GIT binary patch
literal 12595
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
Date: Fri, 7 Jul 2023 07:30:55 -0500
Subject: [PATCH 13/44] Contort body day 1 changes (#21512)
* Contort body day 1 changes
* Update code/modules/antagonists/changeling/powers/contort_body.dm
Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com>
---------
Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com>
---
code/__HELPERS/mob_helpers.dm | 4 ++--
code/game/machinery/doors/airlock.dm | 3 +++
code/modules/antagonists/changeling/powers/contort_body.dm | 4 ++--
code/modules/mob/living/living_status_procs.dm | 2 +-
4 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/code/__HELPERS/mob_helpers.dm b/code/__HELPERS/mob_helpers.dm
index 0a7c096beec7..b2190f4626e0 100644
--- a/code/__HELPERS/mob_helpers.dm
+++ b/code/__HELPERS/mob_helpers.dm
@@ -334,7 +334,7 @@
msg_admin_attack("[key_name_admin(user)] vs [target_info]: [what_done]", loglevel)
-/proc/do_mob(mob/user, mob/target, time = 30, progress = 1, list/extra_checks = list(), only_use_extra_checks = FALSE)
+/proc/do_mob(mob/user, mob/target, time = 30, progress = 1, list/extra_checks = list(), only_use_extra_checks = FALSE, requires_upright = TRUE)
if(!user || !target)
return 0
var/user_loc = user.loc
@@ -375,7 +375,7 @@
drifting = 0
user_loc = user.loc
- if((!drifting && user.loc != user_loc) || target.loc != target_loc || user.get_active_hand() != holding || user.incapacitated() || (L && IS_HORIZONTAL(L)) || check_for_true_callbacks(extra_checks))
+ if((!drifting && user.loc != user_loc) || target.loc != target_loc || user.get_active_hand() != holding || user.incapacitated() || (requires_upright && L && IS_HORIZONTAL(L)) || check_for_true_callbacks(extra_checks))
. = 0
break
if(progress)
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 3a146a7d15f8..0c2189cd313e 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -753,6 +753,9 @@ GLOBAL_LIST_EMPTY(airlock_emissive_underlays)
return TRUE
var/mob/living/living_mover = mover
if((istype(living_mover) && HAS_TRAIT(living_mover, TRAIT_CONTORTED_BODY) && IS_HORIZONTAL(living_mover))) // We really dont want people to get shocked on a door they're passing through
+ if(density && !do_mob(living_mover, living_mover, 2 SECONDS, requires_upright = FALSE))
+ return FALSE
+ living_mover.forceMove(get_turf(src))
return TRUE
if(isElectrified() && density && isitem(mover))
var/obj/item/I = mover
diff --git a/code/modules/antagonists/changeling/powers/contort_body.dm b/code/modules/antagonists/changeling/powers/contort_body.dm
index c79146f93ecc..427444685102 100644
--- a/code/modules/antagonists/changeling/powers/contort_body.dm
+++ b/code/modules/antagonists/changeling/powers/contort_body.dm
@@ -1,8 +1,8 @@
/datum/action/changeling/contort_body
name = "Contort Body"
- desc = "We contort our body, allowing us to fit in and under things we normally wouldn't be able to. Costs 5 chemicals."
+ desc = "We contort our body, allowing us to fit in and under things we normally wouldn't be able to. Costs 25 chemicals."
button_icon_state = "contort_body"
- chemical_cost = 5
+ chemical_cost = 25
dna_cost = 2
power_type = CHANGELING_PURCHASABLE_POWER
diff --git a/code/modules/mob/living/living_status_procs.dm b/code/modules/mob/living/living_status_procs.dm
index 6d5bd6726a47..0e4c10361bd0 100644
--- a/code/modules/mob/living/living_status_procs.dm
+++ b/code/modules/mob/living/living_status_procs.dm
@@ -112,7 +112,7 @@ STATUS EFFECTS
/mob/living/proc/on_lying_down(new_lying_angle)
if(layer == initial(layer)) //to avoid things like hiding larvas.
if(HAS_TRAIT(src, TRAIT_CONTORTED_BODY))
- layer = TURF_LAYER + 0.2
+ layer = BLASTDOOR_LAYER
else
layer = LYING_MOB_LAYER //so mob lying always appear behind standing mobs
pixel_y = PIXEL_Y_OFFSET_LYING
From 9793ea3c33d76e5e74dc2fc7a642cbeb4e10ae1c Mon Sep 17 00:00:00 2001
From: Octus <62493359+OctusGit@users.noreply.github.com>
Date: Fri, 7 Jul 2023 07:33:29 -0500
Subject: [PATCH 14/44] Fire rolling no longer hardstuns you because its not
2016 and is current year (#21500)
* changes fire code
* reworks stuff a bit, i think i did what GDN said?
---
code/__HELPERS/trait_helpers.dm | 1 -
code/modules/mob/living/carbon/carbon.dm | 13 ++++++++-----
2 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/code/__HELPERS/trait_helpers.dm b/code/__HELPERS/trait_helpers.dm
index 8dd96b8d9bc1..5b2dac17aed7 100644
--- a/code/__HELPERS/trait_helpers.dm
+++ b/code/__HELPERS/trait_helpers.dm
@@ -282,4 +282,3 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_CANNOT_PULL "pullblocked"
/// Abstract condition that prevents movement if being pulled and might be resisted against. Handcuffs and straight jackets, basically.
#define TRAIT_RESTRAINED "restrained"
-
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index c30d0f2efe8f..03333c3028e9 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -923,18 +923,21 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
return FALSE
/mob/living/carbon/resist_fire()
+ if(IsKnockedDown())
+ return
fire_stacks -= 5
- Weaken(6 SECONDS, TRUE) //We dont check for CANWEAKEN, I don't care how immune to weakening you are, if you're rolling on the ground, you're busy.
+ Weaken (2 SECONDS, TRUE) //Your busy dying from fire, no way you could be able to roll and reach for a snack in your bag
+ KnockDown(6 SECONDS, TRUE) //Ok now you can have that snack if you want
spin(32, 2)
visible_message("[src] rolls on the floor, trying to put [p_themselves()] out!",
"You stop, drop, and roll!")
- sleep(3 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(extinguish_roll), 3 SECONDS))
+
+/mob/living/carbon/proc/extinguish_roll()
if(fire_stacks <= 0)
- visible_message("[src] has successfully extinguished [p_themselves()]!",
- "You extinguish yourself.")
+ visible_message("[src] has successfully extinguished [p_themselves()]!","You extinguish yourself.")
ExtinguishMob()
-
/mob/living/carbon/resist_restraints()
INVOKE_ASYNC(src, PROC_REF(resist_muzzle))
var/obj/item/I = null
From 66440b41393b686f3fca70b31a62a6f52caf78d0 Mon Sep 17 00:00:00 2001
From: Vi3trice <80771500+Vi3trice@users.noreply.github.com>
Date: Fri, 7 Jul 2023 08:35:05 -0400
Subject: [PATCH 15/44] Glass floor interactions properly check if objects are
above them for fire and blobs (#21490)
* It's used elsewhere already
* Update obj_defense.dm
---
code/game/objects/obj_defense.dm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm
index e8e384700620..0208d9b27506 100644
--- a/code/game/objects/obj_defense.dm
+++ b/code/game/objects/obj_defense.dm
@@ -90,7 +90,7 @@
/obj/blob_act(obj/structure/blob/B)
if(isturf(loc))
var/turf/T = loc
- if((T.intact && level == 1) || T.transparent_floor) //the blob doesn't destroy thing below the floor
+ if(level == 1 && (T.intact||T.transparent_floor)) //the blob doesn't destroy thing below the floor
return
take_damage(400, BRUTE, MELEE, 0, get_dir(src, B))
@@ -200,7 +200,7 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e
/obj/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume, global_overlay = TRUE)
if(isturf(loc))
var/turf/T = loc
- if((T.intact && level == 1) || T.transparent_floor) //fire can't damage things hidden below the floor.
+ if(level == 1 && (T.intact||T.transparent_floor)) //fire can't damage things hidden below the floor.
return
..()
if(QDELETED(src)) // Some items, like patches, might get qdeled in the parent call
From 765c419feb1bde2acfa717163216025c8846017a Mon Sep 17 00:00:00 2001
From: DGamerL <108773801+DGamerL@users.noreply.github.com>
Date: Fri, 7 Jul 2023 14:40:59 +0200
Subject: [PATCH 16/44] Buffs Nanocalcium (#21476)
* The buffs
* snowball review
* Farie Review
---
code/datums/uplink_items/uplink_general.dm | 2 +-
code/modules/reagents/chemistry/reagents/medicine.dm | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/code/datums/uplink_items/uplink_general.dm b/code/datums/uplink_items/uplink_general.dm
index 7880b89cd4c5..7d6593aa2044 100644
--- a/code/datums/uplink_items/uplink_general.dm
+++ b/code/datums/uplink_items/uplink_general.dm
@@ -543,7 +543,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
desc = "Stolen prototype full body repair nanites. Contains one prototype nanite autoinjector and guide."
reference = "NCAI"
item = /obj/item/storage/box/syndie_kit/bonerepair
- cost = 4
+ cost = 2
/datum/uplink_item/device_tools/syndicate_teleporter
name = "Experimental Syndicate Teleporter"
diff --git a/code/modules/reagents/chemistry/reagents/medicine.dm b/code/modules/reagents/chemistry/reagents/medicine.dm
index ad1ca14add72..7c93b13c63db 100644
--- a/code/modules/reagents/chemistry/reagents/medicine.dm
+++ b/code/modules/reagents/chemistry/reagents/medicine.dm
@@ -1333,6 +1333,8 @@
H.blood_volume += 10
for(var/datum/disease/critical/heart_failure/HF in H.viruses)
HF.cure() //Won't fix a stopped heart, but it will sure fix a critical one. Shock is not fixed as healing will fix it
+ for(var/obj/item/organ/O as anything in (H.internal_organs + H.bodyparts))
+ O.germ_level = 0
if(M.health < 40)
update_flags |= M.adjustOxyLoss(-5 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
update_flags |= M.adjustToxLoss(-1 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
From 4317881bccfd704cba0e00909a7c4b058519b7ea Mon Sep 17 00:00:00 2001
From: matttheficus <57759731+matttheficus@users.noreply.github.com>
Date: Fri, 7 Jul 2023 08:41:26 -0400
Subject: [PATCH 17/44] Adds Hydrocodone to the Syndi Med Duffel (#21472)
* fix time
* a slight reduction
---
code/game/objects/items/weapons/storage/backpack.dm | 1 +
code/modules/reagents/reagent_containers/chemical_bottle.dm | 5 +++++
2 files changed, 6 insertions(+)
diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm
index aa2638ccfcad..bf10509cec90 100644
--- a/code/game/objects/items/weapons/storage/backpack.dm
+++ b/code/game/objects/items/weapons/storage/backpack.dm
@@ -574,6 +574,7 @@
new /obj/item/FixOVein(src)
new /obj/item/clothing/suit/straight_jacket(src)
new /obj/item/clothing/mask/muzzle(src)
+ new /obj/item/reagent_containers/glass/bottle/reagent/hydrocodone(src)
/obj/item/storage/backpack/duffel/syndie/med/surgery_fake //for maint spawns
name = "surgery duffelbag"
diff --git a/code/modules/reagents/reagent_containers/chemical_bottle.dm b/code/modules/reagents/reagent_containers/chemical_bottle.dm
index 8a0598e375b8..0dc559fff079 100644
--- a/code/modules/reagents/reagent_containers/chemical_bottle.dm
+++ b/code/modules/reagents/reagent_containers/chemical_bottle.dm
@@ -219,6 +219,11 @@
desc = "A reagent bottle. Contains morphine."
list_reagents = list("morphine" = 50)
+/obj/item/reagent_containers/glass/bottle/reagent/hydrocodone
+ name = "hydrocodone bottle"
+ desc = "A reagent bottle. Contains hydrocodone."
+ list_reagents = list("hydrocodone" = 30)
+
/obj/item/reagent_containers/glass/bottle/reagent/insulin
name = "insulin bottle"
desc = "A reagent bottle. Contains insulin."
From dd9079aa1ae00a202ab010de8985270d0e2e9aac Mon Sep 17 00:00:00 2001
From: matttheficus <57759731+matttheficus@users.noreply.github.com>
Date: Fri, 7 Jul 2023 08:41:54 -0400
Subject: [PATCH 18/44] Adds Cargo Office Access to JaniKeyring + Fits in
JaniBelt (#21471)
* oopsies
* oops here's another fix
---
code/game/objects/items/control_wand.dm | 2 +-
code/game/objects/items/weapons/storage/belt.dm | 3 ++-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/code/game/objects/items/control_wand.dm b/code/game/objects/items/control_wand.dm
index a2153c3f4570..4a93310a9538 100644
--- a/code/game/objects/items/control_wand.dm
+++ b/code/game/objects/items/control_wand.dm
@@ -169,7 +169,7 @@
var/cooldown = 0
/// How fast does the keyring open an airlock. It is not set here so that it can be set via the user's role.
var/hack_speed
- additional_access = list(ACCESS_MEDICAL, ACCESS_RESEARCH, ACCESS_CONSTRUCTION, ACCESS_CARGO, ACCESS_MINING, ACCESS_KITCHEN, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CHAPEL_OFFICE)
+ additional_access = list(ACCESS_MEDICAL, ACCESS_RESEARCH, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_MINING, ACCESS_KITCHEN, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CHAPEL_OFFICE)
/obj/item/door_remote/janikeyring/examine(mob/user)
. = ..()
diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm
index bd28508adaa8..4b8546033124 100644
--- a/code/game/objects/items/weapons/storage/belt.dm
+++ b/code/game/objects/items/weapons/storage/belt.dm
@@ -515,7 +515,8 @@
/obj/item/holosign_creator/janitor,
/obj/item/melee/flyswatter,
/obj/item/storage/bag/trash,
- /obj/item/twohanded/push_broom
+ /obj/item/twohanded/push_broom,
+ /obj/item/door_remote/janikeyring
)
/obj/item/storage/belt/janitor/full/populate_contents()
From e0ebc106d1d046a88f0e45827360cf5b372ed64f Mon Sep 17 00:00:00 2001
From: Sadhorizon <108196626+Sadhorizon@users.noreply.github.com>
Date: Fri, 7 Jul 2023 14:42:41 +0200
Subject: [PATCH 19/44] how did nobody nottice this before (#21467)
---
icons/obj/clothing/suits.dmi | Bin 160261 -> 160239 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi
index 4bbc478f1b9a462623a44fc2505e483a4984b894..999aae14dd5ef90750d7d4267427336a2756ae97 100644
GIT binary patch
delta 120354
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