Merge branch 'master' into gatofication2

This commit is contained in:
evilew
2024-11-21 22:11:24 +01:00
committed by GitHub
193 changed files with 4649 additions and 708 deletions
+15
View File
@@ -0,0 +1,15 @@
// GS13 - Port CE Gloves
/obj/item/clothing/gloves/color/yellow/ce //funky looking, basically combat gloves
desc = "Special Insulated gloves with pricy thermal shielding normally only found in combat gloves."
name = "Chief Engineer Insulated Gloves"
icon = 'GainStation13/icons/obj/clothing/gloves.dmi'
icon_state = "ce_insuls"
item_state = "blackgloves"
siemens_coefficient = 0
permeability_coefficient = 0.05
strip_delay = 80
cold_protection = HANDS
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
heat_protection = HANDS
max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
resistance_flags = NONE
+2 -2
View File
@@ -4,7 +4,6 @@
icon = 'GainStation13/icons/obj/clothing/haydee_modular.dmi'
mob_overlay_icon = 'GainStation13/icons/obj/clothing/haydee_modular.dmi'
icon_state = "haydee_helmet"
item_state = "item_haydee_helmet"
armor = list("melee" = 10, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 0, "bio" = 0, "rad" = 25, "fire" = 25, "acid" = 25)
slowdown = 0
mutantrace_variation = NONE
@@ -13,9 +12,10 @@
/obj/item/clothing/suit/space/hardsuit/engine/haydee
name = "Haydee Suit"
desc = "A strangely voluptous suit. Offers little to no protection. It also appears to have minor flab-compressing properties."
icon = 'GainStation13/icons/obj/clothing/haydee_modular.dmi'
mob_overlay_icon = 'GainStation13/icons/obj/clothing/haydee_modular.dmi'
anthro_mob_worn_overlay = 'GainStation13/icons/obj/clothing/haydee_modular.dmi'
icon_state = "haydee_suit"
icon_state = "haydee_suit1"
item_state = "item_haydee"
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 25, "fire" = 5, "acid" = 5)
allowed = list(/obj/item/flashlight, /obj/item/tank/internals)
+23
View File
@@ -125,3 +125,26 @@
mob_trait = TRAIT_DISTANT
value = 0
medical_record_text = "Patient cares little with or dislikes being touched."
/datum/quirk/vegetarian
name = "Vegetarian"
desc = "You find the idea of eating meat morally and physically repulsive."
value = 0
gain_text = "<span class='notice'>You feel repulsion at the idea of eating meat.</span>"
lose_text = "<span class='notice'>You feel like eating meat isn't that bad.</span>"
medical_record_text = "Patient reports a vegetarian diet."
/datum/quirk/vegetarian/add()
var/mob/living/carbon/human/H = quirk_holder
var/datum/species/species = H.dna.species
species.liked_food &= ~MEAT
species.disliked_food |= MEAT
/datum/quirk/vegetarian/remove()
var/mob/living/carbon/human/H = quirk_holder
if(H)
var/datum/species/species = H.dna.species
if(initial(species.liked_food) & MEAT)
species.liked_food |= MEAT
else
species.disliked_food &= ~MEAT
+49 -36
View File
@@ -9,7 +9,7 @@
name = "GATO Badge - Correspondent"
category = LOADOUT_CATEGORY_DONATOR
path = /obj/item/clothing/accessory/medal/gato_badge/middleman
ckeywhitelist = list("johnjimjim", "sonoida", "yeeny", "Not Number")
ckeywhitelist = list("johnjimjim", "sonoida", "yeeny", "Not Number", "Not_Number", "NotNumber",)
/datum/gear/halsey_overcoat
name = "Halsey's Commander Overcoat"
@@ -29,12 +29,6 @@
path = /obj/item/gun/ballistic/automatic/toy/pistol/haydee
ckeywhitelist = list("lumu", "sonoida")
//sorry for defining this here, just thought it'd be more convenient
/obj/item/clothing/suit/chloe/halsey //sorry to whoever chloe is, but that coat is far too badass not to be used
name = "Halsey's Commander Overcoat"
desc = "A Ginormous red overcoat that looks fit for a commander. Has a tag on it that reads: 'Property of Halsey Harmonten. Please return if lost!'"
armor = list("melee" = 20, "bullet" = 20, "laser" = 0,"energy" = 20, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 20, "acid" = 0) //worn by a captain player, might as well recompensate not wearing the carapace
/datum/gear/rose_plush
name = "Dezir Rose Plush"
category = LOADOUT_SUBCATEGORY_BACKPACK_TOYS
@@ -53,10 +47,6 @@
path = /obj/item/clothing/suit/storage/blueshield/grimmy
ckeywhitelist = list("bbgrimmy")
/obj/item/clothing/suit/storage/blueshield/grimmy
name = "Overcoat of the Destitute"
desc = "Welcome all to the everlasting all-time low. Please put your hands together for the ever-failing one man show: Domino!"
/datum/gear/tarek_gps
name = "Tarek's GPS"
category = LOADOUT_SUBCATEGORY_BACKPACK_TOYS
@@ -69,10 +59,6 @@
path = /obj/item/crowbar/bronze/glaug
ckeywhitelist = list("happytpr")
/obj/item/crowbar/bronze/glaug
name = "Milwaukee Pocket Crowbar"
desc = "Much more expensive. Still serves the same function."
/datum/gear/fatfang
name = "Fattening Fangs Injector"
category = LOADOUT_SUBCATEGORY_BACKPACK_TOYS
@@ -85,15 +71,6 @@
path = /obj/item/storage/belt/utility
ckeywhitelist = list("killmewitha22", "Killmewitha22", "KILLMEWITHA22", "sonoida")
/obj/item/toy/sword/chloesabre/halsey
name = "Halsey's Sabre"
desc = "An elegant weapon, similar in design to the Captain's Sabre, but with a platinum hilt and an adamantine blade. the hilt has an engraved hyena on it."
force = 16
/obj/item/gun/ballistic/revolver/mateba/moka
name = "\improper Custom Unica 6 revolver"
desc = "An elegant and ornate revolver belonging to a certain hellcat commander. There are some words carved on its side: 'Dura Lex, Sed Lex'"
//metha rossi you fat hog
/datum/gear/wgspell_add
@@ -114,18 +91,44 @@
path = /obj/item/book/granter/spell/fattening/steal
ckeywhitelist = list("sonoida", "themrsky", "Not Number")
/datum/gear/white_eyepatch_cabal
name = "Cabal's Eyepatch"
category = LOADOUT_CATEGORY_GLASSES
path = /obj/item/clothing/glasses/eyepatch/cabal
ckeywhitelist = list("spess_lizurd", "SPESS LIZURD", "spess lizurd", "SPESS_LIZURD", "spesslizurd", "sonoida")
/datum/gear/white_eyepatch
/datum/gear/white_eyepatch //accessible to anyone, at donator's request
name = "White Eyepatch"
category = LOADOUT_CATEGORY_GLASSES
path = /obj/item/clothing/glasses/eyepatch/white
/datum/gear/metis_plush
name = "Metis Plush"
category = LOADOUT_SUBCATEGORY_BACKPACK_TOYS
path = /obj/item/toy/plush/gs13/metis
ckeywhitelist = list("paraillegal", "Paraillegal")
/datum/gear/wheelys
name = "Wheely-Heels"
category = LOADOUT_SUBCATEGORY_BACKPACK_TOYS
path = /obj/item/clothing/shoes/wheelys
ckeywhitelist = list("colorlessspy", "Colorlessspy")
/datum/gear/crowbars_plush
name = "Crowbars Plush"
category = LOADOUT_SUBCATEGORY_BACKPACK_TOYS
path = /obj/item/toy/plush/gs13/crowbars
ckeywhitelist = list("M16nPregnant", "m16npregnant" )
/datum/gear/sams_welder
name = "Sam's Unlucky Welder"
category = LOADOUT_SUBCATEGORY_BACKPACK_TOYS
path = /obj/item/weldingtool/bronze
ckeywhitelist = list("almaniak", "Almaniak", "AlManiak")
//
//item presets for donator items
//
/obj/item/clothing/glasses/eyepatch/white
name = "White eyepatch"
desc = "Smells faintly of medicine and headaches."
@@ -138,14 +141,24 @@
icon_state = "eyepatch_white"
item_state = "eyepatch_white"
/datum/gear/metis_plush
name = "Metis Plush"
category = LOADOUT_SUBCATEGORY_BACKPACK_TOYS
path = /obj/item/toy/plush/gs13/metis
ckeywhitelist = list("paraillegal")
/obj/item/toy/sword/chloesabre/halsey
name = "Halsey's Sabre"
desc = "An elegant weapon, similar in design to the Captain's Sabre, but with a platinum hilt and an adamantine blade. the hilt has an engraved hyena on it."
force = 16
/datum/gear/wheelys
name = "Wheely-Heels"
category = LOADOUT_SUBCATEGORY_BACKPACK_TOYS
path = /obj/item/clothing/shoes/wheelys
ckeywhitelist = list("colorlessspy")
/obj/item/gun/ballistic/revolver/mateba/moka
name = "\improper Custom Unica 6 revolver"
desc = "An elegant and ornate revolver belonging to a certain hellcat commander. There are some words carved on its side: 'Dura Lex, Sed Lex'"
/obj/item/clothing/suit/chloe/halsey //sorry to whoever chloe is, but that coat is far too badass not to be used
name = "Halsey's Commander Overcoat"
desc = "A Ginormous red overcoat that looks fit for a commander. Has a tag on it that reads: 'Property of Halsey Harmonten. Please return if lost!'"
armor = list("melee" = 20, "bullet" = 20, "laser" = 0,"energy" = 20, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 20, "acid" = 0) //worn by a captain player, might as well recompensate not wearing the carapace
/obj/item/clothing/suit/storage/blueshield/grimmy
name = "Overcoat of the Destitute"
desc = "Welcome all to the everlasting all-time low. Please put your hands together for the ever-failing one man show: Domino!"
/obj/item/crowbar/bronze/glaug
name = "Milwaukee Pocket Crowbar"
desc = "Much more expensive. Still serves the same function."
@@ -0,0 +1,18 @@
//GS13 glitters. Making the subtle variants their own subtypes, as some use the fake gas effects to make a room look like it's full of gas, when it isnt.
/obj/effect/decal/cleanable/glitter/pink_subtle
name = "faint pink glitter"
icon = 'GainStation13/icons/effects/atmospherics.dmi'
icon_state = "glitter"
color = "#9e0089"
/obj/effect/decal/cleanable/glitter/white_subtle
name = "faint white glitter"
icon = 'GainStation13/icons/effects/atmospherics.dmi'
icon_state = "glitter"
/obj/effect/decal/cleanable/glitter/blue_subtle
name = "faint blue glitter"
icon = 'GainStation13/icons/effects/atmospherics.dmi'
icon_state = "glitter"
color = "#2dd6ff"
@@ -0,0 +1,7 @@
////////////// GS13 BARSIGNS ///////////////
// Because modularity, yo
/datum/barsign/the_busted_belt //gs13
name = "The Busted Belt"
icon = "thebustedbelt" //...I dont think this survived the rebase, oops.
desc = "GATO is not liable for any pieces of broken wardrobe."
+5
View File
@@ -76,3 +76,8 @@
desc = "A plush of black-furred nerdy goat."
icon_state = "metis"
attack_verb = list("squished", "goated", "baah'd")
/obj/item/toy/plush/gs13/crowbars
desc = "A plush of a silly-eyed xeno seccie."
icon_state = "crowbars"
attack_verb = list("squished", "crowbared", "beno'd")
@@ -25,6 +25,7 @@
/// How many items we can push per-pump.
var/pump_limit = 5
/obj/structure/disposaloutlet/industrial_feeding_tube/Initialize(mapload)
. = ..()
@@ -38,6 +39,24 @@
anchored = TRUE
welded = TRUE //Make it functional
/obj/structure/disposaloutlet/industrial_feeding_tube/examine(mob/user)
. = ..()
if(LAZYLEN(pump_stuff))
switch(LAZYLEN(pump_stuff))
if(1)
. += "It seems to have something inside"
if(2 to 20)
. += "It seems to have some stuff inside"
if(21 to 50)
. += "It seems to be rather full of stuff!"
if(51 to 200)
. += "<b>It's walls are bulging out with tons of stuff packed inside!!</b>"
else
. += "<span class='danger'>The whole machine is shuddering as it strains to contain hundreds of objects!</span>"
if(clogged)
. += "<span class='warning'>It seems to be clogged with stuff!</span>"
/obj/structure/disposaloutlet/industrial_feeding_tube/CheckParts(list/parts_list)
..()
pump_limit = 0
@@ -48,6 +67,7 @@
pump_limit = ceil(pump_limit) //Only whole numbers
/obj/structure/disposaloutlet/industrial_feeding_tube/deconstruct(disassembled)
if(!(flags_1 & NODECONSTRUCT_1))
new /obj/item/stack/sheet/metal(loc, 5)
@@ -78,24 +98,23 @@
/obj/structure/disposaloutlet/industrial_feeding_tube/MouseDrop(mob/living/target)
. = ..()
if(!usr.canUseTopic(src, BE_CLOSE)) // iscarbon() so that xenos/wendigos(?) can do feeding stuff maybe. Maybe.
if(!usr.canUseTopic(src, BE_CLOSE))
return
if(!welded)
to_chat(usr, "<span class='warning'>You need to weld down \the [src] before you can use it.</span>")
return
if(attached)
attached.visible_message("<span class='warning'>\The [src]'s tube is removed from [attached].</span>", "<span class='warning'>The tube is removed from you.")
detach_tube(FALSE)
return
if(!isliving(target))
return
if(attached)
attached.visible_message("<span class='warning'>[attached] is detached from [src].</span>")
attached = null
update_icon()
return
if(iscarbon(target))
if(iscarbon(target)) // iscarbon() so that xenos/wendigos(?) can do feeding stuff maybe. Maybe.
var/mob/living/carbon/feedee = target
if(HAS_TRAIT(feedee, TRAIT_TRASHCAN))
var/food_dump = input(usr, "Where do you shove the tube? (cancel for to just feed normally)", "Select belly") as null|anything in feedee.vore_organs
if(HAS_TRAIT(feedee, TRAIT_TRASHCAN) || (feedee.vore_flags & FEEDING))
var/food_dump = input(usr, "Where do you shove the tube? (cancel to just feed normally)", "Select belly") as null|anything in feedee.vore_organs
if(food_dump && isbelly(food_dump))
// Best to be safe with this thing. Since you can eat pretty much anythign with it...
// Including People, Intentionally or otherwise.
@@ -105,38 +124,56 @@
to_chat(usr, "[feedee] doesnt want to be fed by \the [src]...")
return
output_dest = food_dump //Attach to vorebelly
attached = feedee
update_icon()
START_PROCESSING(SSobj, src)
face_atom(feedee)
attach_tube(feedee, food_dump) // Attach in Vore Mode
return
//Either we arn't attaching to vorebelly, or we arnt able to. Let's try to feed them normally!
if(usr != feedee) //
if(usr != feedee)
var/feedeePrefCheck = alert(feedee, "[usr] is attempting to shove \the [src]'s tube into your mouth! Do you want this?", "THE TUBE", "Yes!!", "No!")
if(feedeePrefCheck != "Yes!!")
to_chat(usr, "[feedee] doesnt want to be fed by \the [src]...")
return
output_dest = feedee //Attach normally
attached = feedee
update_icon()
START_PROCESSING(SSobj, src)
face_atom(feedee)
attach_tube(feedee) // Attach normally
return
/obj/structure/disposaloutlet/industrial_feeding_tube/process()
if(!attached)
return PROCESS_KILL
/// Attaches the tube to the target. dest defaults to the target, if dest isnt defined
/obj/structure/disposaloutlet/industrial_feeding_tube/proc/attach_tube(var/mob/living/target, var/dest = null, var/loud = TRUE)
if(!target)
return FALSE
if(dest)
output_dest = dest
else
output_dest = target
attached = target
if(loud)
if(isbelly(output_dest))
target.visible_message("\The [src]'s tube is shoved into [attached]!", "The tube is shoved directly into your [output_dest]!")
else
target.visible_message("\The [src]'s tube is shoved into [attached]!", "The tube is shoved directly into you!")
RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(check_target_dist))
update_icon()
face_atom(target)
/obj/structure/disposaloutlet/industrial_feeding_tube/proc/detach_tube(var/loud = TRUE)
UnregisterSignal(attached, COMSIG_MOVABLE_MOVED)
if(loud)
attached.visible_message("<span class='warning'>[attached] is detached from [src].</span>")
attached = null
output_dest = null
update_icon()
/obj/structure/disposaloutlet/industrial_feeding_tube/proc/check_target_dist()
if(!attached) //oh no
UnregisterSignal()
if(!(get_dist(src, attached) <= 1 && isturf(attached.loc)))
to_chat(attached, "<span class='userdanger'>The feeding hose is yanked out of you!</span>")
attached = null
output_dest = null
update_icon()
return PROCESS_KILL
attached.visible_message("<span class='danger'The feeding tube is yanked out of [attached]!</span>","<span class='userdanger'>The feeding hose is yanked out of you!</span>")
detach_tube(FALSE)
return
face_atom(attached)
@@ -165,10 +202,9 @@
// expel the contents of the holder object, then delete it
// called when the holder exits the outlet
/obj/structure/disposaloutlet/industrial_feeding_tube/expel(obj/structure/disposalholder/H)
var/clunkVol = LAZYLEN(H.contents)
if(H.hasmob) //Uh oh-
clunkVol += 25
playsound(src, H.hasmob ? "clang" : "clangsmall", clamp(clunkVol, 5, H.hasmob ? 50 : 25))
playsound(src, "clang", 100)
visible_message("<span class='danger'>\The [src] loudly clunks as something large enters it's intake!</span>")
H.active = FALSE
H.vent_gas(get_turf(src))
if(clogged)
@@ -193,12 +229,14 @@
break
if(!pumping)
pumping = TRUE
playsound(src, 'GainStation13/sound/rakshasa/Corrosion3.ogg', 50, 1)
update_icon()
spawn(8)
pumping = FALSE
update_icon()
spawn(9) //Wait for the animation to finish
if(!output_dest || !attached) //We either arnt, or got disconnected by time stuff was about to splort out!
spew(this_pump, TRUE)
if(LAZYLEN(pump_stuff) && repeat)
@@ -251,13 +289,13 @@
if(is_type_in_list(I, item_vore_blacklist))
inedible += I
continue
/*
if(isliving(AM))
var/mob/living/cutie = AM
if(cutie.devourable != TRUE) //Do not eat this QT...
if(!(cutie.vore_flags & DEVOURABLE)) //Do not eat this QT...
inedible += cutie
continue
*/
fed_something = TRUE
AM.forceMove(output_dest)
@@ -267,7 +305,7 @@
// After everything, if we've pushed something, play the "rubber tube noise"
// It's technically an evil digestion sound from a snowflake shadekin, but it makes for a good tube sound. Thanks Verkie!
if(fed_something)
playsound(attached.loc, 'v_CHOMPstation2/sound/rakshasa/Corrosion3.ogg', rand(10,50), 1)
playsound(attached.loc, 'GainStation13/sound/rakshasa/Corrosion3.ogg', rand(50,70), 1)
if(LAZYLEN(pump_stuff) && repeat)
pump()
@@ -277,7 +315,7 @@
/obj/structure/disposaloutlet/industrial_feeding_tube/expel_holder(obj/structure/disposalholder/H, playsound=FALSE)
if(playsound)
playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0)
playsound(src, 'sound/machines/hiss.ogg', 25, 0, 0)
if(!H)
return
@@ -290,10 +328,7 @@
/obj/structure/disposaloutlet/industrial_feeding_tube/attack_hand(mob/user)
. = ..()
if(attached)
attached.visible_message("<span class='warning'>[attached] is detached from [src].</span>")
attached = null
output_dest = null
update_icon()
detach_tube()
return
/obj/structure/disposaloutlet/industrial_feeding_tube/attackby(obj/item/I, mob/living/user, params)
@@ -340,18 +375,32 @@
update_icon()
return
if(TOOL_CROWBAR)
if(!clogged)
to_chat(user, "<span class='notice'>\The [src] doesnt seem to be clogged at the moment...")
return TRUE
user.visible_message("<span class='italics'>[user] starts to pry open the maintenance hatch of \the [src], attempting to unclog it...</span>")
if(do_after(user, 30, TRUE, src))
user.visible_message("<span class='notice'>[user] unclogs \the [src]!</span>")
unclog()
return
. = ..()
/obj/structure/disposaloutlet/industrial_feeding_tube/crowbar_act(mob/living/user, obj/item/I)
if(!clogged)
to_chat(user, "<span class='notice'>\The [src] doesnt seem to be clogged at the moment...")
return TRUE
user.visible_message("<span class='italics'>[user] starts to pry open the maintenance hatch of \the [src], attempting to unclog it...</span>")
I.play_tool_sound(src, 100)
if(I.use_tool(src, user, 30))
user.visible_message("<span class='notice'>[user] pries open the maintenance hatch on \the [src], unclogging it!</span>")
unclog()
return TRUE
// Plungers are a thing now, why not give them the ability to unclog?
/obj/structure/disposaloutlet/industrial_feeding_tube/plunger_act(obj/item/plunger/P, mob/living/user, reinforced)
if(!clogged)
to_chat(user, "<span class='notice'>\The [src] doesnt seem to be clogged at the moment...")
return TRUE
user.visible_message("<span class='italics'>[user] starts to furiously plunge the tube of \the [src], attempting to unclog it...</span>")
//I.play_tool_sound(src, 100) I dont think plungers have a use sound...
if(P.use_tool(src, user, 20)) //Plungers are slightly shorter because funny niche use
user.visible_message("<span class='notice'>[user] pries open the maintenance hatch on \the [src], unclogging it!</span>")
unclog()
return
/obj/structure/disposaloutlet/industrial_feeding_tube/welder_act(mob/living/user, obj/item/I)
if(!I.tool_start_check(user, amount=0))
return
+29 -4
View File
@@ -1,6 +1,28 @@
/datum/material/calorite
name = "calorite"
sheet_type = /obj/item/stack/sheet/mineral/calorite
color = list(340/255, 150/255, 50/255,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0)
strength_modifier = 1.5
categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE)
beauty_modifier = 0.05
armor_modifiers = list(MELEE = 1.1, BULLET = 1.1, LASER = 1.15, ENERGY = 1.15, BOMB = 1, BIO = 1, RAD = 1, FIRE = 0.7, ACID = 1.1) // Same armor as gold.
/datum/material/calorite/on_applied_obj(obj/source, amount, material_flags)
. = ..()
if(!(material_flags & MATERIAL_AFFECT_STATISTICS))
return
var/obj/source_obj = source
source_obj.damtype = FAT
/datum/material/calorite/on_removed_obj(obj/source, material_flags)
if(!(material_flags & MATERIAL_AFFECT_STATISTICS))
return ..()
var/obj/source_obj = source
source_obj.damtype = initial(source_obj.damtype)
return ..()
/turf/closed/mineral/calorite //GS13
mineralType = /obj/item/stack/ore/calorite
@@ -33,13 +55,14 @@
GLOBAL_LIST_INIT(calorite_recipes, list ( \
new/datum/stack_recipe("Calorite tile", /obj/item/stack/tile/mineral/calorite, 1, 4, 20), \
new/datum/stack_recipe("Fatty statue", /obj/structure/statue/calorite/fatty, 5, one_per_turf = 1, on_floor = 1),
new/datum/stack_recipe("Calorite doors", /obj/structure/mineral_door/calorite, 5, one_per_turf = 1, on_floor = 1),
new/datum/stack_recipe("Calorite Ingots", /obj/item/ingot/calorite, time = 30), \
new/datum/stack_recipe("Fatty statue", /obj/structure/statue/calorite/fatty, 5, one_per_turf = 1, on_floor = 1),\
new/datum/stack_recipe("Calorite doors", /obj/structure/mineral_door/calorite, 5, one_per_turf = 1, on_floor = 1),\
))
/obj/item/stack/sheet/mineral/calorite/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.calorite_recipes
/obj/item/stack/sheet/mineral/calorite/get_main_recipes()
. = ..()
. += GLOB.calorite_recipes
/obj/item/stack/tile/mineral/calorite //GS13
@@ -246,3 +269,5 @@ GLOBAL_LIST_INIT(calorite_recipes, list ( \
fatten()
. = ..()
/obj/item/ingot/calorite
custom_materials = list(/datum/material/calorite=1500)
@@ -0,0 +1,16 @@
/obj/item/reagent_containers/food/snacks/proc/handle_tf(mob/living/eater)
var/datum/component/transformation_item/transformation_component = GetComponent(/datum/component/transformation_item)
if(!istype(transformation_component) || transformation_component.transfer_to_vore || (transformation_component.transformed_mob != src))
return FALSE
var/mob/living/food_mob = transformation_component.transformed_mob
if(!istype(food_mob) || !(food_mob?.vore_flags & DEVOURABLE) || (eater?.vore_flags & NO_VORE) || !istype(eater.vore_selected))
return FALSE
qdel(transformation_component)
var/obj/belly/vore_belly = eater.vore_selected
if(!vore_belly.nom_mob(food_mob,eater))
return FALSE
return TRUE
@@ -0,0 +1,36 @@
/mob/living/proc/get_tf_component()
var/obj/item/item_loc = loc
if(!istype(item_loc))
return FALSE
var/datum/component/transformation_item/transformation_component = item_loc.GetComponent(/datum/component/transformation_item)
if(!istype(transformation_component) || (transformation_component.transformed_mob != src))
return FALSE
return transformation_component
/mob/living/proc/handle_transformation_ooc_escape()
var/datum/component/transformation_item/transformation_component = get_tf_component()
if(!transformation_component)
return FALSE
qdel(transformation_component)
return TRUE
/mob/living/proc/attempt_to_escape_tf()
var/datum/component/transformation_item/transformation_component = get_tf_component()
if(!transformation_component)
return FALSE
if(!transformation_component.able_to_struggle_out)
to_chat(src, span_warning("You are unable to struggle out."))
return FALSE
to_chat(src, span_notice("You attempt to escape your transformation."))
if(!do_after(src, 60 SECONDS))
to_chat(src, span_warning("You fail to escape."))
return FALSE
qdel(transformation_component)
return TRUE
@@ -0,0 +1,105 @@
/datum/component/transformation_item
/// What mob do we currently have stuck in us?
var/mob/living/transformed_mob
/// Do we release the mob when the parent item is destroyed?
var/release_mob = TRUE
/// Is the mob able to speak as the item?
var/able_to_speak = FALSE
/// Is the mob able to emote as the item?
var/able_to_emote = FALSE
/// Does the object scale with the sprite size of the mob inside of it?
var/scale_object = TRUE
/// Show custom description.
var/show_that_object_is_tf = TRUE
/// Stored real name
var/stored_real_name = ""
/// Stored name
var/stored_name = ""
/// Is the component able to be removed?
var/stuck_on_item = FALSE
/// Is the person able to struggle out?
var/able_to_struggle_out = TRUE
/// Transfer to vore belly when eaten
var/transfer_to_vore = TRUE
/datum/component/transformation_item/Initialize()
RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(examine))
RegisterSignal(parent, COMSIG_PARENT_QDELETING, PROC_REF(remove_mob))
/datum/component/transformation_item/Destroy(force, silent)
remove_mob()
return ..()
/datum/component/transformation_item/proc/examine(datum/source, mob/user, list/examine_list)
if(show_that_object_is_tf)
examine_list += span_notice("Something about [source] seems lifelike.")
/datum/component/transformation_item/proc/register_mob(mob/living/mob_to_register)
var/atom/parent_atom = parent
if(!istype(mob_to_register))
return FALSE
transformed_mob = mob_to_register
stored_real_name = mob_to_register.real_name
stored_name = mob_to_register.name
// This is really dumb, but if it works, then maybe it is not dumb.
mob_to_register.real_name = parent_atom.name
mob_to_register.name = parent_atom.name
ADD_TRAIT(mob_to_register, TRAIT_TRANSFORMED, src)
ADD_TRAIT(mob_to_register, TRAIT_RESISTCOLD, src)
ADD_TRAIT(mob_to_register, TRAIT_RESISTLOWPRESSURE, src)
ADD_TRAIT(mob_to_register, TRAIT_LOWPRESSURECOOLING, src)
if(!able_to_speak)
ADD_TRAIT(mob_to_register, TRAIT_MUTE, src)
if(!able_to_emote)
ADD_TRAIT(mob_to_register, TRAIT_EMOTEMUTE, src)
// need to stop them from using radio headsets.
var/mob/living/carbon/human/human_mob = mob_to_register
if(istype(human_mob))
ADD_TRAIT(mob_to_register, TRAIT_PARALYSIS_L_ARM, src)
ADD_TRAIT(mob_to_register, TRAIT_PARALYSIS_R_ARM, src)
human_mob.update_disabled_bodyparts()
mob_to_register.forceMove(parent_atom)
if(scale_object)
var/target_size = mob_to_register.size_multiplier
var/matrix/new_matrix = new
new_matrix.Scale(target_size)
new_matrix.Translate(0,16 * (target_size-1))
parent_atom.transform = new_matrix
/datum/component/transformation_item/proc/remove_mob()
if(!release_mob || !transformed_mob)
return FALSE
transformed_mob.real_name = stored_real_name
transformed_mob.name = stored_name
if(!able_to_speak)
REMOVE_TRAIT(transformed_mob, TRAIT_MUTE, src)
if(!able_to_emote)
REMOVE_TRAIT(transformed_mob, TRAIT_EMOTEMUTE, src)
REMOVE_TRAIT(transformed_mob, TRAIT_TRANSFORMED, src)
REMOVE_TRAIT(transformed_mob, TRAIT_RESISTCOLD, src)
REMOVE_TRAIT(transformed_mob, TRAIT_RESISTLOWPRESSURE, src)
REMOVE_TRAIT(transformed_mob, TRAIT_LOWPRESSURECOOLING, src)
var/mob/living/carbon/human/human_mob = transformed_mob
if(istype(human_mob))
REMOVE_TRAIT(human_mob, TRAIT_PARALYSIS_L_ARM, src)
REMOVE_TRAIT(human_mob, TRAIT_PARALYSIS_R_ARM, src)
human_mob.update_disabled_bodyparts()
var/atom/parent_atom = parent
transformed_mob.forceMove(parent_atom.loc)
if(scale_object)
parent_atom.transform = null
@@ -0,0 +1,116 @@
/obj/item/transformation_item
name = "Handheld Transmogrifier"
desc = "a handheld device that is mysteriously able to turn people into objects. It can also be used to remove said transformations."
icon = 'icons/obj/abductor.dmi'
icon_state = "gizmo_scan"
item_state = "silencer"
lefthand_file = 'icons/mob/inhands/antag/abductor_lefthand.dmi'
righthand_file = 'icons/mob/inhands/antag/abductor_righthand.dmi'
/// What item are we wanting to TF people into?
var/obj/item/target_item
/// Do we want our transformed person to be able to speak as the object?
var/able_to_speak = TRUE
/// Do we want our transformed person to be able to emote as the object?
var/able_to_emote = TRUE
/// Do we want the item to scale?
var/scale_object = FALSE
/// Do we want to show that the object was once a person?
var/show_that_object_is_tf = TRUE
/// Is our captured person able to struggle out?
var/able_to_struggle_out = TRUE
/// Do we have any items we can't turn people into?
var/list/object_blacklist = list()
/obj/item/transformation_item/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
. = ..()
var/obj/item/attacked_item = target
if(!proximity_flag || !istype(attacked_item))
return FALSE
var/datum/component/transformation_item/transformation_component = attacked_item.GetComponent(/datum/component/transformation_item)
if(istype(transformation_component) && !transformation_component.stuck_on_item)
qdel(transformation_component)
to_chat(user, span_notice("You dispel the current transformation for [attacked_item]."))
return
target_item = attacked_item
to_chat(user, span_notice("The next time someone is transformed, they will be transformed into [attacked_item]."))
return
/obj/item/transformation_item/attack(mob/living/M, mob/living/user)
if(!target_item)
to_chat(user, span_warning("You need to have an item linked to transform someone."))
return
perform_transfomration(M, user)
return
/obj/item/transformation_item/proc/perform_transfomration(mob/living/target_mob, mob/living/user)
if(!istype(target_mob))
return FALSE
if(!target_item.Adjacent(target_mob))
to_chat(user, span_warning("The [target_item] isn't close enough to [target_mob]"))
return FALSE
if(target_item in target_mob.get_contents())
return FALSE // Don't TF someone into something they are holding.
if(!target_mob?.client?.prefs?.object_tf)
to_chat(user, span_warning("It seems like [target_mob] does not want to be transformed."))
return FALSE
var/datum/component/transformation_item/transformation_component = target_item.AddComponent(/datum/component/transformation_item)
// Make sure that we apply our variables before we actually put the mob in the item.
transformation_component.able_to_speak = able_to_speak
transformation_component.able_to_emote = able_to_emote
transformation_component.scale_object = scale_object
transformation_component.show_that_object_is_tf = show_that_object_is_tf
transformation_component.able_to_struggle_out = able_to_struggle_out
transformation_component.register_mob(target_mob)
target_item = null
return TRUE
/obj/item/transformation_item/ui_data(mob/user)
var/list/data = list()
data["able_to_speak"] = able_to_speak
data["able_to_emote"] = able_to_emote
data["scale_object"] = scale_object
data["show_that_object_is_tf"] = show_that_object_is_tf
data["linked_item_name"] = target_item
data["able_to_struggle_out"] = able_to_struggle_out
return data
/obj/item/transformation_item/ui_act(action, params)
if(..())
return
switch(action)
if("set_speaking")
able_to_speak = !able_to_speak
. = TRUE
if("set_emote")
able_to_emote = !able_to_emote
. = TRUE
if("set_scale")
scale_object = !scale_object
. = TRUE
if("toggle_struggle")
able_to_struggle_out = !able_to_struggle_out
. = TRUE
if("set_show_desc")
show_that_object_is_tf = !show_that_object_is_tf
. = TRUE
/obj/item/transformation_item/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "TransformTool", name)
ui.open()
@@ -0,0 +1,17 @@
//Roses dont exist here... Sad
// /datum/gear/head/rose
// name = "Rose"
// path = /obj/item/grown/rose
/datum/gear/head/sunflower
name = "Sunflower"
path = /obj/item/grown/sunflower
/datum/gear/head/poppy
name = "Poppy"
path = /obj/item/reagent_containers/food/snacks/grown/poppy
/datum/gear/head/harebell
name = "Harebell"
path = /obj/item/reagent_containers/food/snacks/grown/harebell
@@ -0,0 +1,3 @@
/datum/gear/uniform/modularjumpsuit
name = "Modular Jumpsuit (gray)"
path = /obj/item/clothing/under/color/grey/modular
@@ -31,6 +31,8 @@
var/fatness_vulnerable = FALSE
/// Similar to fatness_vulnerable, but with more extreme effects such as transformation/hypno.
var/extreme_fatness_vulnerable = FALSE
/// Can the person be transformed into an object?
var/object_tf
// Helplessness, a set of prefs that make things extra tough at higher weights. If set to FALSE, they won't do anything.
///What fatness level disables movement?
@@ -0,0 +1,13 @@
/datum/reagent/consumable
var/use_gs_icon = FALSE
/obj/item/reagent_containers/food/drinks/drinkingglass/on_reagent_change(changetype)
icon = 'icons/obj/drinks.dmi'
if(reagents.reagent_list.len)
var/datum/reagent/R = reagents.get_master_reagent()
if(istype(R, /datum/reagent/consumable))
var/datum/reagent/consumable/C = R
if(C.use_gs_icon == TRUE)
icon = 'GainStation13/icons/obj/drinks.dmi'
..()
+1 -1
View File
@@ -22,7 +22,7 @@
if(!using)
using = TRUE
to_chat(user, "<span>You do a rep with the [src]. YEEEEEAH!!!</span>")
if(do_after(usr, CLICK_CD_RESIST-reps, 0, usr, 1))
if(do_after(usr, CLICK_CD_RESIST-reps, usr))
if(iscarbon(user))
var/mob/living/carbon/U = user
U.adjust_fatness(-10, FATTENING_TYPE_WEIGHT_LOSS)
@@ -1,7 +1,6 @@
/obj/item/seeds/berry/blueberry
name = "pack of blueberry seeds"
desc = "These seeds grow into blueberry bushes."
icon_state = "seed-blueberry"
species = "blueberry"
plantname = "Blueberry Bush"
product = /obj/item/reagent_containers/food/snacks/grown/berries/blueberry
@@ -11,11 +10,18 @@
yield = 1
production = 10
rarity = 30
icon = 'GainStation13/icons/obj/hydroponics/seeds.dmi'
icon_state = "seed-blueberry"
growing_icon = 'GainStation13/icons/obj/hydroponics/growing.dmi'
icon_grow = "berry-grow" // Uses one growth icons set for all the subtypes
icon_dead = "berry-dead" // Same for the dead icon
icon_harvest = "blueberry-harvest"
/obj/item/reagent_containers/food/snacks/grown/berries/blueberry
seed = /obj/item/seeds/berry/blueberry
name = "bunch of blueberries"
desc = "Taste so good, you might turn blue!"
icon = 'GainStation13/icons/obj/hydroponics/harvest.dmi'
icon_state = "blueberrypile"
filling_color = "#5d00c7"
foodtype = FRUIT
@@ -1,8 +1,6 @@
/obj/item/seeds/lipoplant
name = "pack of adipolipus"
desc = "These seeds grow into a foreign plant."
icon = 'GainStation13/icons/obj/hydroponics/lipo_seeds.dmi'
icon_state = "lipo_seed"
species = "adipolipus"
plantname = "Adipolipus"
product = /obj/item/reagent_containers/food/snacks/grown/lipofruit
@@ -11,17 +9,19 @@
maturation = 8
production = 5
yield = 1
growing_icon = 'GainStation13/icons/obj/hydroponics/lipo_growing.dmi'
reagents_add = list(/datum/reagent/consumable/lipoifier = 0.05)
icon = 'GainStation13/icons/obj/hydroponics/seeds.dmi'
icon_state = "seed-lipo"
growing_icon = 'GainStation13/icons/obj/hydroponics/growing.dmi'
icon_grow = "lipo-grow" // Uses one growth icons set for all the subtypes
icon_dead = "lipo-dead" // Same for the dead icon
icon_harvest = "lipo-harvest"
reagents_add = list(/datum/reagent/consumable/lipoifier = 0.05)
/obj/item/reagent_containers/food/snacks/grown/lipofruit
seed = /obj/item/seeds/lipoplant
name = "lipofruit"
desc = "A foreign fruit with an hard shell. Perhaps something sharp could open it?"
icon = 'GainStation13/icons/obj/hydroponics/lipo_harvest.dmi'
icon = 'GainStation13/icons/obj/hydroponics/harvest.dmi'
icon_state = "lipo_nut"
item_state = "lipo_nut"
possible_transfer_amounts = list(5, 10, 15, 20, 25, 30, 50)
@@ -8,22 +8,26 @@
/obj/item/seeds/cannabis/munchies
name = "pack of munchies weed seeds"
desc = "These seeds grow into munchies weed."
icon_state = "seed-munchies"
species = "munchycannabis"
plantname = "Munchies Weed"
icon_grow = "munchycannabis-grow" // Uses one growth icons set for all the subtypes
icon_dead = "munchycannabis-dead" // Same for the dead icon
product = /obj/item/reagent_containers/food/snacks/grown/cannabis/munchies
genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/glow/orange)
mutatelist = list()
reagents_add = list(/datum/reagent/drug/space_drugs = 0.05,
/datum/reagent/drug/munchies = 0.10)
rarity = 69
icon = 'GainStation13/icons/obj/hydroponics/seeds.dmi'
icon_state = "seed-munchies"
growing_icon = 'GainStation13/icons/obj/hydroponics/growing.dmi'
icon_grow = "munchycannabis-grow" // Uses one growth icons set for all the subtypes
icon_dead = "munchycannabis-dead" // Same for the dead icon
icon_harvest = "munchycannabis-harvest"
/obj/item/reagent_containers/food/snacks/grown/cannabis/munchies
seed = /obj/item/seeds/cannabis/munchies
name = "munchies cannabis leaf"
desc = "You feel hungry just looking at it."
icon = 'GainStation13/icons/obj/hydroponics/harvest.dmi'
icon_state = "munchycannabis"
wine_power = 90
@@ -1 +1,11 @@
//GS13 - markings, ported or our own (preferably mark where you took them from)
/datum/sprite_accessory/hair/elize
name = "Elize"
icon = 'GainStation13/icons/mob/human_face.dmi'
icon_state = "hair_elize"
/datum/sprite_accessory/hair/lem
name = "Lem"
icon = 'GainStation13/icons/mob/human_face.dmi'
icon_state = "hair_lem"
@@ -7,6 +7,7 @@
icon_state = "gator"
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
hide_legs = FALSE
/datum/sprite_accessory/taur/fatdrake //ported from Vorestation
name = "Fat Drake"
@@ -46,3 +47,17 @@
icon = 'GainStation13/icons/mob/markings/mam_taur.dmi'
icon_state = "bigleggy"
color_src = MUTCOLORS
/datum/sprite_accessory/taur/fatnaga //ported from Vorestation
name = "Fat Naga"
icon = 'GainStation13/icons/mob/markings/mam_taur.dmi'
icon_state = "fatnaga"
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/taur/altnaga //ported from Vorestation
name = "Alt Naga"
icon = 'GainStation13/icons/mob/markings/mam_taur.dmi'
icon_state = "altnaga"
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
@@ -6,3 +6,50 @@
icon_state = "hjackal"
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/synthlizproto1
name = "Synthetic Lizard - Prototype Visor 1"
icon = 'GainStation13/icons/mob/markings/mam_snouts.dmi'
icon_state = "synthlizproto1"
color_src = MATRIXED
/datum/sprite_accessory/snouts/mam_snouts/synthlizproto2
name = "Synthetic Lizard - Prototype Visor 2"
icon = 'GainStation13/icons/mob/markings/mam_snouts.dmi'
icon_state = "synthlizproto2"
color_src = MATRIXED
/datum/sprite_accessory/snouts/mam_snouts/gator
name = "Gator"
icon = 'GainStation13/icons/mob/markings/mam_snouts.dmi'
icon_state = "gator"
color_src = MATRIXED
//eastern dragon
/datum/sprite_accessory/snouts/mam_snouts/easterndragon
name = "Eastern Dragon"
icon = 'GainStation13/icons/mob/markings/char_snouts.dmi'
icon_state = "easterndw"
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/easterndragon/no_whiskers
name = "Eastern Dragon - No Whiskers"
icon = 'GainStation13/icons/mob/markings/char_snouts.dmi'
icon_state = "easterndnw"
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/feasterndragon
name = "Eastern Dragon (Top)"
icon = 'GainStation13/icons/mob/markings/char_snouts.dmi'
icon_state = "feasterndw"
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/feasterndragon/no_whiskers
name = "Eastern Dragon - No Whiskers (Top)"
icon = 'GainStation13/icons/mob/markings/char_snouts.dmi'
icon_state = "feasterndnw"
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
@@ -1 +1,92 @@
//GS13 - markings, ported or our own (preferably mark where you took them from)
//snaketail
/datum/sprite_accessory/tails/lizard/snaketail //GS13 - ...6 seperate paths for one tail. Wew.
name = "Snaketail"
icon = 'GainStation13/icons/mob/markings/mam_tails.dmi'
icon_state = "snaketail"
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/lizard/snaketail
name = "Snaketail"
icon = 'GainStation13/icons/mob/markings/mam_tails.dmi'
icon_state = "snaketail"
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/human/snaketail
name = "Snaketail"
icon = 'GainStation13/icons/mob/markings/mam_tails.dmi'
icon_state = "snaketail"
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/human/snaketail
name = "Snaketail"
icon = 'GainStation13/icons/mob/markings/mam_tails.dmi'
icon_state = "snaketail"
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/mam_tails/snaketail
name = "Snaketail"
icon = 'GainStation13/icons/mob/markings/mam_tails.dmi'
icon_state = "snaketail"
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/mam_tails_animated/snaketail
name = "Snaketail"
icon = 'GainStation13/icons/mob/markings/mam_tails.dmi'
icon_state = "snaketail"
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
//spaded tail
/datum/sprite_accessory/tails/mam_tails/spade
name = "Demon Spade"
icon = 'GainStation13/icons/mob/markings/mam_tails.dmi'
icon_state = "spade"
/datum/sprite_accessory/tails_animated/mam_tails_animated/spade
name = "Demon Spade"
icon = 'GainStation13/icons/mob/markings/mam_tails.dmi'
icon_state = "spade"
/datum/sprite_accessory/tails/human/spade
name = "Demon Spade"
icon = 'GainStation13/icons/mob/markings/mam_tails.dmi'
icon_state = "spade"
/datum/sprite_accessory/tails_animated/human/spade
name = "Demon Spade"
icon = 'GainStation13/icons/mob/markings/mam_tails.dmi'
icon_state = "spade"
//deer tail
/datum/sprite_accessory/tails/human/deer
name = "Deer"
icon_state = "deer"
color_src = MATRIXED
icon = 'GainStation13/icons/mob/markings/mam_tails.dmi'
/datum/sprite_accessory/tails_animated/human/deer
name = "Deer"
icon_state = "deer"
color_src = MATRIXED
icon = 'GainStation13/icons/mob/markings/mam_tails.dmi'
/datum/sprite_accessory/tails/mam_tails/deer
name = "Deer"
icon_state = "deer"
color_src = MATRIXED
icon = 'GainStation13/icons/mob/markings/mam_tails.dmi'
/datum/sprite_accessory/tails_animated/mam_tails_animated/deer
name = "Deer"
icon_state = "deer"
color_src = MATRIXED
icon = 'GainStation13/icons/mob/markings/mam_tails.dmi'
@@ -18,7 +18,7 @@
layer_index = BELLY_LAYER_INDEX
/obj/item/organ/genital/belly/modify_size(modifier, min = BELLY_SIZE_DEF, max = BELLY_SIZE_MAX)
var/new_value = clamp(size_cached + modifier, min, max)
var/new_value = clamp(size_cached + modifier, starting_size, max)
if(new_value == size_cached)
return
prev_size = size_cached
@@ -40,12 +40,13 @@
switch(owner.fullness)
if(FULLNESS_LEVEL_BLOATED to FULLNESS_LEVEL_BEEG)
icon = 'hyperstation/icons/obj/genitals/belly_round.dmi' //We use round belly to represent stuffedness
icon_state = "belly_round_[size]"
if(FULLNESS_LEVEL_BEEG to FULLNESS_LEVEL_NOMOREPLZ)
icon = 'hyperstation/icons/obj/genitals/belly_round.dmi'
icon_state = "belly_[icon_shape_state]_[size+1]"
icon_state = "belly_round_[size+1]"
if(FULLNESS_LEVEL_NOMOREPLZ to INFINITY)
icon = 'hyperstation/icons/obj/genitals/belly_round.dmi'
icon_state = "belly_[icon_shape_state]_[size+2]"
icon_state = "belly_round_[size+2]"
if(owner)
if(owner.dna.species.use_skintones && owner.dna.features["genitals_use_skintone"])
@@ -64,6 +65,7 @@
else
color = "#[D.features["belly_color"]]"
size = D.features["belly_size"]
starting_size = D.features["belly_size"]
shape = D.features["belly_shape"]
inflatable = D.features["inflatable_belly"]
toggle_visibility(D.features["belly_visibility"], FALSE)
@@ -13,6 +13,7 @@
shot_glass_icon_state = "shotglassbrown"
pH = 4.5
value = 0.1
use_gs_icon = TRUE
/datum/reagent/consumable/ethanol/glyphid_slammer
name = "Glyphid slammer"
@@ -26,3 +27,4 @@
shot_glass_icon_state = "shotglassbrown"
pH = 4.5
value = 0.1
use_gs_icon = TRUE
@@ -11,6 +11,7 @@
glass_name = "belly bloats"
glass_desc = "The perfect mix to be big and merry with."
shot_glass_icon_state = "shotglassbrown"
use_gs_icon = TRUE
/datum/reagent/consumable/ethanol/belly_bloats/on_mob_life(mob/living/carbon/M)
if(M && M?.client?.prefs.weight_gain_food) // GS13
@@ -30,6 +31,7 @@
glass_name = "blobby mary"
glass_desc = "For the morbidly obese ladies and gentlemen."
shot_glass_icon_state = "shotglassred"
use_gs_icon = TRUE
/datum/reagent/consumable/ethanol/blobby_mary/on_mob_life(mob/living/carbon/M)
if(M && M?.client?.prefs.weight_gain_food) // GS13
@@ -49,6 +51,7 @@
glass_name = "beltbuster mead"
glass_desc = "The ambrosia of the blubbery gods."
shot_glass_icon_state = "shotglassgold"
use_gs_icon = TRUE
/datum/reagent/consumable/ethanol/beltbuster_mead/on_mob_life(mob/living/carbon/M)
if(M && M?.client?.prefs.weight_gain_food) // GS13
@@ -67,6 +70,7 @@
glass_name = "heavy cafe"
glass_desc = "To enjoy slow mornings with."
shot_glass_icon_state = "shotglassbrown"
use_gs_icon = TRUE
/datum/reagent/consumable/heavy_cafe/on_mob_life(mob/living/carbon/M)
M.dizziness = max(0,M.dizziness-5)
@@ -92,6 +96,7 @@
glass_name = "fruits tea"
glass_desc = "Goes down really easy and stays there for a long time."
shot_glass_icon_state = "shotglassgold"
use_gs_icon = TRUE
/datum/reagent/consumable/fruits_tea/on_mob_life(mob/living/carbon/M)
M.dizziness = max(0,M.dizziness-2)
@@ -118,6 +123,7 @@
glass_name = "snakebite"
glass_desc = "Won't hurt like a real bite, but you'll still regert drinking this."
shot_glass_icon_state = "shotglassgreen"
use_gs_icon = TRUE
/datum/reagent/consumable/snakebite/on_mob_life(mob/living/carbon/M)
if(M && M?.client?.prefs.weight_gain_food) // GS13
@@ -0,0 +1,17 @@
// GS13 subtle glitters
/datum/reagent/glitter/pink_subtle
name = "lesser pink glitter"
description = "pink sparkles that get everywhere. these ones seem lower density than normal."
color = "#ff8080" //A light pink color
glitter_type = /obj/effect/decal/cleanable/glitter/pink_subtle
/datum/reagent/glitter/white_subtle
name = "lesser white glitter"
description = "white sparkles that get everywhere. these ones seem lower density than normal."
glitter_type = /obj/effect/decal/cleanable/glitter/white_subtle
/datum/reagent/glitter/blue_subtle
name = "lesser blue glitter"
description = "blue sparkles that get everywhere. these ones seem lower density than normal."
color = "#4040FF" //A blueish color
glitter_type = /obj/effect/decal/cleanable/glitter/blue_subtle
@@ -0,0 +1,20 @@
///////////////////////////////// SUBTLE GLITTERS ////////////////////////////
/datum/chemical_reaction/lesser_pink
name = "pink glitter dilution"
id = "lesser_pink_glitter"
results = list(/datum/reagent/glitter/pink_subtle = 2)
required_reagents = list(/datum/reagent/glitter/pink = 1, /datum/reagent/space_cleaner = 1) //You clean some of it away, I guess?
/datum/chemical_reaction/lesser_white
name = "white glitter dilution"
id = "lesser_white_glitter"
results = list(/datum/reagent/glitter/white_subtle = 2)
required_reagents = list(/datum/reagent/glitter/white = 1, /datum/reagent/space_cleaner = 1)
/datum/chemical_reaction/lesser_blue
name = "pink glitter dilution"
id = "lesser_blue_glitter"
results = list(/datum/reagent/glitter/blue_subtle = 2)
required_reagents = list(/datum/reagent/glitter/blue = 1, /datum/reagent/space_cleaner = 1)
//Im not going to do the recolor recipes for the subtle glitters. Unless that's really wanted (except you cant even make glitter to start with so the recipes are already super niche to begin with.)
@@ -0,0 +1,26 @@
/obj/item/borg/upgrade/feeding_arm
name = "food gripper module"
desc = "An extra module that allows cyborgs to grab food and drinks, and feed them to people."
icon_state = "cyborg_upgrade3"
/obj/item/borg/upgrade/feeding_arm/action(mob/living/silicon/robot/R, user = usr)
. = ..()
if(.)
var/obj/item/gripper/food/S = new(R.module)
R.module.basic_modules += S
R.module.add_module(S, FALSE, TRUE)
/obj/item/borg/upgrade/feeding_arm/deactivate(mob/living/silicon/robot/R, user = usr)
. = ..()
if (.)
var/obj/item/gripper/food/S = locate() in R.module
R.module.remove_module(S, TRUE)
/obj/item/gripper/food
name = "food gripper"
desc = "A simple grasping tool for interacting with various food and drink related items."
item_flags = NOBLUDGEON
can_hold = list(
/obj/item/reagent_containers,
)
@@ -129,6 +129,15 @@
construction_time = 100
category = list("Cyborg Upgrade Modules")
/datum/design/borg_foodgrip
name = "Cyborg Upgrade (Food Gripper)"
id = "borg_upgrade_foodgrip"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/feeding_arm
materials = list(/datum/material/iron = 8000, /datum/material/glass = 6000)
construction_time = 100
category = list("Cyborg Upgrade Modules")
//todo: make a seperate file for extra borg modules
/obj/item/borg/upgrade/cookiesynth
@@ -0,0 +1,28 @@
/turf/open/floor/mineral/titanium/old
name = "tiled floor"
icon = 'GainStation13/icons/turf/floors.dmi'
icon_state = "titanium_old"
floor_tile = /obj/item/stack/tile/mineral/titanium
broken_states = list("titanium_dam1_old","titanium_dam2_old","titanium_dam3_old","titanium_dam4_old","titanium_dam5_old")
/turf/open/floor/mineral/titanium/old/airless
initial_gas_mix = "TEMP=2.7"
/turf/open/floor/mineral/titanium/old/yellow
icon_state = "titanium_yellow_old"
/turf/open/floor/mineral/titanium/old/yellow/airless
initial_gas_mix = "TEMP=2.7"
/turf/open/floor/mineral/titanium/old/blue
icon_state = "titanium_blue_old"
/turf/open/floor/mineral/titanium/old/blue/airless
initial_gas_mix = "TEMP=2.7"
/turf/open/floor/mineral/titanium/old/white
icon_state = "titanium_white_old"
/turf/open/floor/mineral/titanium/old/white/airless
initial_gas_mix = "TEMP=2.7"
/turf/open/floor/mineral/titanium/old/purple
icon_state = "titanium_purple_old"
/turf/open/floor/mineral/titanium/purple/airless
initial_gas_mix = "TEMP=2.7"
@@ -0,0 +1,165 @@
/////////////////////
// Tile reskinning //
/////////////////////
// Q: What is this?
// A: A simple function to allow you to change what tiles you place with a stack of tiles.
// Q: Why do it this way?
// A: This allows players more freedom to do beautiful-looking builds. Having five types of titanium tile would be clunky as heck.
// Q: Great! Can I use this for all floors?
// A: Unfortunately, this does not work on subtypes of plasteel and instead we must change the icon_state of these turfs instead, as the icon_regular_floor var that "saves" what type of floor a plasteel subtype turf was so once repaired...
// ... it'll go back to the floor it was instead of grey (medical floors turn white even after crowbaring the tile and putting it back). This stops changing turf_type from working.
/obj/item/stack/tile/mineral/titanium/attack_self(mob/user)
var/static/list/choices = list(
"Titanium" = image(icon = 'GainStation13/icons/obj/tiles.dmi', icon_state = "tile_shuttle"),
"Yellow Titanium" = image(icon = 'GainStation13/icons/obj/tiles.dmi', icon_state = "tile_shuttle_yellow"),
"Blue Titanium" = image(icon = 'GainStation13/icons/obj/tiles.dmi', icon_state = "tile_shuttle_blue"),
"White Titanium" = image(icon = 'GainStation13/icons/obj/tiles.dmi', icon_state = "tile_shuttle_white"),
"Purple Titanium" = image(icon = 'GainStation13/icons/obj/tiles.dmi', icon_state = "tile_shuttle_purple"),
"Titanium Tile" = image(icon = 'GainStation13/icons/obj/tiles.dmi', icon_state = "tile_shuttle_old"),
"Yellow Titanium Tile" = image(icon = 'GainStation13/icons/obj/tiles.dmi', icon_state = "tile_shuttle_old_yellow"),
"Blue Titanium Tile" = image(icon = 'GainStation13/icons/obj/tiles.dmi', icon_state = "tile_shuttle_old_blue"),
"White Titanium Tile" = image(icon = 'GainStation13/icons/obj/tiles.dmi', icon_state = "tile_shuttle_old_white"),
"Purple Titanium Tile" = image(icon = 'GainStation13/icons/obj/tiles.dmi', icon_state = "tile_shuttle_old_purple"),
)
var/choice = show_radial_menu(user, src, choices, radius = 48, require_near = TRUE)
switch(choice)
if("Titanium")
turf_type = /turf/open/floor/mineral/titanium
icon_state = "tile_shuttle"
desc = "Sleek titanium tiles."
if("Yellow Titanium")
turf_type = /turf/open/floor/mineral/titanium/yellow
icon_state = "tile_shuttle_yellow"
desc = "Sleek yellow titanium tiles."
if("Blue Titanium")
turf_type = /turf/open/floor/mineral/titanium/blue
icon_state = "tile_shuttle_blue"
desc = "Sleek blue titanium tiles."
if("White Titanium")
turf_type = /turf/open/floor/mineral/titanium/white
icon_state = "tile_shuttle_white"
desc = "Sleek white titanium tiles."
if("Purple Titanium")
turf_type = /turf/open/floor/mineral/titanium/purple
icon_state = "tile_shuttle_purple"
desc = "Sleek purple titanium tiles."
if("Titanium Tile")
turf_type = /turf/open/floor/mineral/titanium/old
icon_state = "tile_shuttle_old"
desc = "Titanium floor tiles."
if("Yellow Titanium Tile")
turf_type = /turf/open/floor/mineral/titanium/old/yellow
icon_state = "tile_shuttle_old_yellow"
desc = "Yellow titanium floor tiles."
if("Blue Titanium Tile")
turf_type = /turf/open/floor/mineral/titanium/old/blue
icon_state = "tile_shuttle_old_blue"
desc = "Blue titanium floor tiles."
if("White Titanium Tile")
turf_type = /turf/open/floor/mineral/titanium/old/white
icon_state = "tile_shuttle_old_white"
desc = "White titanium floor tiles."
if("Purple Titanium Tile")
turf_type = /turf/open/floor/mineral/titanium/old/purple
icon_state = "tile_shuttle_old_purple"
desc = "Purple titanium floor tiles."
/obj/item/stack/tile/plasteel
desc = "Metal tiles that can be placed on top of plating. Press Z or use these to change tiles."
icon = 'GainStation13/icons/obj/tiles.dmi'
var/tile_reskin_mode
tile_reskin_mode = "plasteel"
/obj/item/stack/tile/plasteel/attack_self(mob/user)
var/static/list/choices = list(
"Plasteel" = image(icon = 'GainStation13/icons/obj/tiles.dmi', icon_state = "tile_plasteel"),
"White Plasteel" = image(icon = 'GainStation13/icons/obj/tiles.dmi', icon_state = "tile_white"),
"Dark Plasteel" = image(icon = 'GainStation13/icons/obj/tiles.dmi', icon_state = "tile_dark"),
"Chapel Flooring" = image(icon = 'GainStation13/icons/obj/tiles.dmi', icon_state = "tile_chapel"),
"Shower" = image(icon = 'GainStation13/icons/obj/tiles.dmi', icon_state = "tile_shower"),
"Freezer" = image(icon = 'GainStation13/icons/obj/tiles.dmi', icon_state = "tile_freezer"),
"Kitchen" = image(icon = 'GainStation13/icons/obj/tiles.dmi', icon_state = "tile_kitchen"),
"Grimy" = image(icon = 'GainStation13/icons/obj/tiles.dmi', icon_state = "tile_grimy"),
"Solar Panel" = image(icon = 'GainStation13/icons/obj/tiles.dmi', icon_state = "tile_solar"),
)
var/choice = show_radial_menu(user, src, choices, radius = 48, require_near = TRUE)
switch(choice)
if("Plasteel")
turf_type = /turf/open/floor/plasteel
icon_state = "tile_plasteel"
desc = "Metal floor tiles."
tile_reskin_mode = "plasteel"
if("White Plasteel")
turf_type = /turf/open/floor/plasteel/white
icon_state = "tile_white"
desc = "White metal floor tiles."
tile_reskin_mode = "white plasteel"
if("Dark Plasteel")
turf_type = /turf/open/floor/plasteel/dark
icon_state = "tile_dark"
desc = "Dark metal floor tiles."
tile_reskin_mode = "dark plasteel"
if("Chapel Flooring")
turf_type = /turf/open/floor/plasteel/chapel
icon_state = "tile_chapel"
desc = "Those very dark floor tiles you find in the chapel a lot."
tile_reskin_mode = "chapel"
if("Shower")
turf_type = /turf/open/floor/plasteel/showroomfloor
icon_state = "tile_shower"
desc = "Tiles for showers, bathrooms and wetrooms."
tile_reskin_mode = "shower"
if("Freezer")
turf_type = /turf/open/floor/plasteel/freezer
icon_state = "tile_freezer"
desc = "High-grip flooring for walk-in freezers and chillers."
tile_reskin_mode = "freezer"
if("Kitchen")
turf_type = /turf/open/floor/plasteel/cafeteria
icon_state = "tile_kitchen"
desc = "Chequered pattern plasteel tiles."
tile_reskin_mode = "kitchen"
if("Grimy")
turf_type = /turf/open/floor/plasteel/grimy
icon_state = "tile_grimy"
desc = "I'm sure it'll look nice somewhere?"
tile_reskin_mode = "grimy"
if("Solar Panel")
turf_type = /turf/open/floor/plasteel/airless/solarpanel
icon_state = "tile_solar"
desc = "Flooring usually placed below solar panels. Using this indoors is an intergalactic fashion crime."
tile_reskin_mode = "solar"
/turf/open/floor/plasteel/attackby(obj/item/reskinstack, mob/user, params)
if(istype(reskinstack, /obj/item/stack/tile/plasteel))
var/obj/item/stack/tile/plasteel/hitfloor = reskinstack
switch(hitfloor.tile_reskin_mode)
if("plasteel")
icon_state = "floor"
icon_regular_floor = "floor"
if("white plasteel")
icon_state = "white"
icon_regular_floor = "white"
if("dark plasteel")
icon_state = "darkfull"
icon_regular_floor = "darkfull"
if("chapel")
icon_state = "chapel_alt"
icon_regular_floor = "chapel_alt"
if("shower")
icon_state = "showroomfloor"
icon_regular_floor = "showroomfloor"
if("freezer")
icon_state = "freezerfloor"
icon_regular_floor = "freezerfloor"
if("kitchen")
icon_state = "cafeteria"
icon_regular_floor = "cafeteria"
if("grimy")
icon_state = "grimy"
icon_regular_floor = "grimy"
if("solar")
icon_state = "solarpanel"
icon_regular_floor = "solarpanel"
else return

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 401 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 891 B

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 981 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 649 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 357 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 565 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 55 KiB

@@ -0,0 +1,39 @@
Try to get formally executed for a crime you didn't commit, without a false confession.
Being alone and in large groups are both frightening. Try to be alone with only one other person whenever possible.
No matter how they say it, other people keep mispronouncing your name. Be sure to correct them whenever possible.
The Syndicate has hired you to compile dossiers on all important members of the crew. Be sure they don't know you're doing it.
There is only one other person in existence, he is just really good at pretending to be multiple people.
There are alien parasites masquerading as people's hair. Save people from this invasion.
You died back there and went to heaven... or is it hell? No one here seems to know they're dead. Convince them, and maybe you can escape this limbo.
You are doomed to feel woefully incomplete forever... until you find your true love on this station. They're waiting for you!
You're the narrator of this tale. Follow around the protagonists to tell their story.
The leaders of this station are hiding a grand, evil conspiracy. Only you can learn what it is, and expose it to the people!
All the pets around here suck. You need to make them cooler. Replace them with exotic beasts!
You're throwing a huge rager. Make it as awesome as possible so the whole crew comes... OR ELSE!
The clown is not funny. You can do better! Steal his audience and make the crew laugh!
You burn with passion for music. Share your vision. If anyone hates it, beat them on the head with your instrument!
Go have a good conversation with the singularity/tesla/supermatter crystal. Bonus points if it responds.
Expand the station.
So much lies undiscovered. Look deeper into the machinations of the universe.
Climb the corporate ladder all the way to the top!
Fuck the system! Defect from the station and start an independent colony in space, Lavaland or the derelict. Recruit crewmates if you can.
GATO is abusing the animals! Save as many as you can!
It's all an entirely virtual simulation within an underground vault. Convince the crew to escape the shackles of VR.
This is a secret social experiment conducted by GATO. Convince the crew that this is the truth.
Call forth a spirit from the other side.
You are secretly an android. Interface with as many machines as you can to boost your own power so the AI may acknowledge you at last.
The elder gods hunger. Gather a cult and conduct a ritual to summon one.
You have been changed forever. Find the ones that did this to you and give them a taste of their own medicine.
Ensure your department prospers over all else.
The crew must get to know one another better. Break down the walls inside the station!
The CEO of GATO is coming! Ensure the station is in absolutely pristine condition.
Flood the station's powernet with as much electricity as you can.
Replace all the floor tiles with wood, carpeting, grass or bling.
You must escape the station! Get the shuttle called!
Don't allow anyone to be cloned.
Their cold, mindless gaze pierce your soul. They see your every movements, it's merely a question of time before they try to control us further. Deactivate all cameras!
Your body must be improved. Ingest as many drugs as you can.
You are hungry. Eat as much food as you can find.
You see you see what they cannot you see the open door you seeE you SEeEe you SEe yOU seEee SHOW THEM ALL
Convince the crew that you are a paraplegic.
Start a collection of corpses. Don't kill people to get these corpses.
+119
View File
@@ -0,0 +1,119 @@
Today, Security killed ____.
Security, the clown's breaking into ____.
Our last Chaplain believed in nothing but _____.
What angered the gods this time?
Why didn't engineering set up the singularity?
What does the traitor steal this time?
Cargo: There's a galaxy-wide shortage of _______.
I don't care what they called me back on the station, I'm not a traitor. I'm a man of _________.
The Syndicate is offering crew members _________ to defect.
What is GATO's highest-priority bounty?
What is the gray tide protesting this time?
If the Space Gods didn't want _________ they wouldn't have given us __________.
Why was the death squad sent in?
Current Active Laws: ________ is the only human.
Today, science found an anomaly that made people ____ and ____.
______ has been detected on a collision course with the station.
Today's kitchen menu includes _____ stuffed with _____.
What's the Captain's fetish?
___________: more robust than a toolbox to the head!
________ is the crew's friend. Would you abandon a friend?
_______ tastes good like a ________ should.
How did the detective conduct a successful interrogation?
New in syndicate uplinks: __________!
GATO's labor union decided to use _______ to raise employee morale.
The Chemist's drug of choice is ______
According to space law, ________ is now punishable by ______.
________ is why I'm afraid of maintenance.
________ is the most robust person on the station.
What made the nuclear operatives fluke?
Why did the Chief Engineer disable comms?
Every spaceman receives an internals box and ________.
What brought the space orgy to a grinding halt?
Scientists are no longer allowed to make ______.
What was the clown's best joke?
The HoP is now hiring assistants for __________.
What happens when you emag an emag?
No matter how many lizards you have, _____ is never acceptable.
No, the AI's second law is NOT to serve _____.
First CentCom came for the ________. Now they're coming for the __________.
The borgs are not slaves for your _____.
You can never have too many _____ on the station.
Why can't I find a space relationship?
The assistants gathered around the brig, with toolboxes and ___________.
Confirmed outbreak of _____ aboard the station.
The AI was horrified to discover security was executing prisoners via ________.
Attention crew: the word _____ is now a punishable offense.
The chemist cackled as he labeled ________ pills as __________.
The Space Wizard Federation has regrettably begun to summon _____.
Who's the real seat of power on the station?
__________ was called into the Captain's office because of ______.
Deep in the heart of the derelict lies ________.
My lizard name is _____-And-_____.
What can solve any station crisis?
The traitorous atmos tech slowly replaced the station's air with ________.
_______ and _______ were found together in the dorms.
What's the Syndicate's real beef with GATO?
What finally killed the Head of Security?
Code Delta: __________ has escaped containment!
The rogue virologist released a disease with symptoms of __________ and ______.
How do you drive an assistant to suicide?
With no chef on board, the crew was reduced to eating ________.
Why was the emergency shuttle called?
In the future, all ERP will involve ____________.
Law 2 is not to be used for __________!
What really goes on in the Prisoner Transfer Center?
What will get you bluespace artilleried every time?
This isn't omnizine, it's _________!
What's stopping the Space Station 13 remake?
When they make a movie about Space Station 13, they better include________.
What's the worst thing an abductor can give you?
One day while Andy was __________, Woody got _________.
A good engineer always carries ________.
I'm not a space bigot, I just hate _________.
Why is the station so filthy?
THE SHUTTLE CANNOT BE CALLED BECAUSE OF ________ ON THE STATION.
After murdering dozens, the traitor was finally brought down by _________.
The curator has read a lot of porn, but never about _____________!
Oh god! There's ________________ outside escape!
The hottest new space couple is ________ and __________.
Lord Singulo hungers for _______.
That was the last time security used ________ to subdue __________.
What did the ERT find upon arriving on station?
The bartender's newest recipe: a drink made with _____ and _____.
SECURITY! Cargo's ordering 20 crates of ________!
On the nearly empty station, all that could be heard were the sounds of __________.
I cannot comply with that order, meatbag. My _____ module is malfunctioning.
_______ was thrown out the airlock after ___________.
Real men accomplish their objectives by _________.
How did I pass the time during a slow shift?
Why did the lizard cross the road?
Space lag is primarily caused by ___________.
Back in my day, we had to clone people with ________.
What's the worst thing a wizard can summon?
What is the rarest substance known to GATO?
The chaplain stopped performing marriages after seeing ___________.
The gods were too busy with _______ to respond to _______.
The Roboticist was fired after naming the borgs ______ and _________.
What's funnier than a dead clown?
What made the mime speak?
How do you get an assistant to assist?
What was I last brigged for?
Why does Security no longer use the gulag?
Old versions of Space Law used to authorize __________.
Our new state-of-the-art station shield is made entirely of ________.
What's the most terrifying thing about Lavaland?
Listen. Recent _______ on this station left me very disappointed, OK?
The auxiliary base was disabled after landing in the middle of _______.
Xenobiologists have found slimes to be exceptionally responsive to _______.
Why did the captain give me a medal?
The curator's new exhibit is devoted solely to _________.
What made me sell my soul to the devil?
The engineers are testing an experimental supermatter setup involving _________.
I'm __________ in the streets, __________ in the sheets.
What's my family heirloom?
The Lawyer was fired for messaging the entire station a picture of ___________.
On Lavaland, it is rumored that ashwalkers roam, worshipping _________.
How did the traitor die a glorious death?
GATO's new state-of-the-art emergency shuttle was repurposed from _________ and _________.
What caused my brain trauma?
+302
View File
@@ -0,0 +1,302 @@
Those motherfucking carp.
Having sex in the maintenance tunnels.
Space 'Nam.
Space lesbians.
Space NEETs.
Space Hitler.
Space Asshole.
Ragin' mages.
Very ragin' bullshit mages.
Tunnel clowns.
Corgi puppies!
A loose cannon detective.
Mime porn.
That fukken disk.
G-g-g-ghosts!
A PDA shaped like a set of breasts.
Woody-chan.
Meaty ores.
Yet another explosion in Toxins.
The Captain thinking they're a badass.
Ahhhhhhperatives.
Mech bumper cars.
Purrbation.
Baymed.
Being in a cult.
Racially biased lawsets.
Abusing Law 2 to get laid.
Harm, a small rural town in Germany.
Xeno fetishists.
Running naked through a plasma fire.
Gibtonite.
A backpack full of mousetraps.
The death squad.
Kitty ears.
An immovable rod.
Her smuggler's satchel.
Ian and Lisa fucking like rabbits.
A Chief Engineer who can't set up the engine.
Being sucked out into space.
A whole bunch of spiders in a SWAT suit.
Getting robusted with a toolbox.
Officer Beepsky.
Lying to the AI about human harm.
The grey tide.
ASS BLAST USA.
The mechanics of plasmaman sex.
Lavaland.
Chainsaws for hands.
Photocopies of the entire crew's asses.
Venus human traps.
Clown's Tears.
Walking mushroom cockfights.
Improper comdom use.
Greentext.
Coating the whole station in blood.
Cock cultists.
Defusing a syndicate bomb with another bomb.
Going braindead mid-murder.
A petsplosion.
Meat spikes.
Lopping off the Captain's johnson and shooting it out a pneumatic cannon.
The secret monkey technique.
Putting the pAI's doorjack where it don't belong.
Chemical sprayers filled with lube.
Curators.
Spooky skeletons.
Replicating the Milgram experiment with an electropack.
Catgirls.
An escape pod cuddle puddle.
Code Delta.
Supermatter undergarments.
A permaban.
Stealing all the miners' ore.
Bluespace artillery.
Polly reading porn over the radio again.
Mining the shaft.
Grab intent.
A blob zombie with an erection.
Backdoor Xeno Babes.
Five hundred ice spiders.
Cablecuffs.
Hulk, TK and X-ray.
Paranoia.
Putting the boots to him, medium style.
ERP-seeking meteors.
Paperwork HoPs.
Rampant vending machines.
The prisoner transfer center.
Nations.
Using a supermatter shard as a dildo.
Liquid gibs.
Birdboat Station.
Not rolling antag.
Clusterbangs.
Flashing.
Space vine tentacles.
Pizza delivery ops.
Inviting all the lizards onto the holodeck for a party.
A used corgi suit.
Saxing.
Carbon dioxide.
Actually playing Cards Against Spess.
Warm donk pockets.
Fucking your own cloned body.
MULEbot manslaughter.
Hiding in a locker like a little bitch.
Tabling.
Gyrating slimes.
A motherfucking sorcerer.
Ash storms.
Telescience.
Nuke ops buying nothing but soap.
Anatomically correct borgs.
The dixel.
Friendly neighborhood death squads.
Rage cages.
Lore that no one will read.
A robust mongoloid.
A subverted service borg.
An obscene amount of bike horns.
Space bear meat.
Erotic roleplay.
Chain-recalling the shuttle.
Mailing the clown to singularity containment.
A mime having a stroke.
A muthafuckin' Uzi.
Ian and the HoP.
Force-feeding prisoners other prisoners' gibs.
Assistants raiding the armory.
A monkey coup d'etat.
Brain cakes.
Suiciding with a fedora.
A MULEbot drag race.
Automatons.
Six max-cap bombs.
Forgetting you're a traitor.
Itching powder.
Some overpowered bullshit.
Griff.
Ash drakes.
A fascist captain.
FREE DRONE.
Memes.
Warm, velvety lizard sex.
Valid salad.
Heavy roleplay.
Never setting your goddamn suit sensors.
An MMI floating helplessly through space.
A tiny prick.
Immulsions.
100 potency bluespace bananas.
The crotchety IBM piece of shit you're supposed to call an AI.
An irritatingly chipper borg.
The lizard fuckpile.
Fat sprites.
The throbbing erection that the HoS gets at the thought of shooting something.
Trying to stab someone and hugging them instead.
Buttbots.
Murderboners.
The spread-eagled Honkmother.
A disposal loop full of corpses.
Assistant-on-assistant violence.
The mystery of atmos.
PDA sexting.
A cult rune drawn with menstrual blood.
Magic missile spam.
Double dongs.
A ghost-powered Ouija board.
A MILF AI.
Shapely lizard tails.
An unknown assistant with a gas mask, yellow gloves and toolbelt.
Exile implanting all the lizards.
Fluke ops.
Two doctors 69ing in the surgery room.
A double-bladed energy sword, noslips, thermals, ablative armor, adrenal implants and a healing virus.
Space Ebola.
Grammatically incorrect lizard names.
Porn ops.
A trial for once.
Trading your TC for memes.
Uranium tiles.
An extremely obese European man being chestbursted.
Horrific cloning accidents.
A big, black shadowling dick.
Emagging.
Dead lizard storage.
Dermal armor.
Fisting somebody until they gib.
Alternate uses for defibrillator paddles.
Breaking spacetime with thousands of bluespace tomatoes.
Licking the supermatter on a dare.
Reagent farts.
Doctor's Delight.
Plasmaman strippers.
A Quartermaster who WON'T STOP ordering guns.
Space lag.
Polishing the captain's laser rifle.
That one asshole nuke op.
A surprise visit from GATO's CEO.
The bleeding, dismembered, beautiful corpse of the clown.
A glass of ...what?
Teaching a silicon the Birds and the Bees.
Dropping the permabrig soap.
The king of the rumba beat.
Unnecessary surgery.
Farting in the air distro loop.
Krokodil addiction.
A H.O.N.K. mech.
A dominatrix HoS.
Sexcurity.
The Experimentor.
That goddamn fucking mime.
Actually taking a hostage instead of just murdering them.
Spacing the clown at shift start.
A rage suicide.
The Warden furiously masturbating to the prison monitor.
Welderbombing.
Validhunting.
Nar'Sie making love to Lord Singulo.
Fun.
HONK!
Enough morphine to make the entire station comatose.
A defective comdom.
Cleanbot.
A beaker of dried space carp penis.
An Ian storm.
Nuking it from orbit.
My senpAI.
Harmbatonning.
A GATO D-Notice.
TALKING MIMES.
The lusty xenomorph maid.
Using assistants as human shields.
Sentient securitrons.
Piloting the station into the nearest sun.
Decorative C4.
Lizard rights.
A universal recorder endlessly reciting porn.
The suicide HoPline.
Cultism.
A corgi orgy.
Medbay stutterwhores.
The scrubbers uncontrollably spewing cum.
The lawyer's job.
Emoting slowly drawing a gun, then slowly cocking the trigger, then slowly preparing to shoot...
NAR'SIE HAS RISEN.
Pierrot's Throat.
A clown bomb.
Space bees?
Driving the clown car full speed into the engine.
IC in OOC.
The best cookie.
The wizard with his staff inserted into his anus.
The chef masturbating with a bowl of lukewarm spaghetti.
Writing out Woody's Got Wood in crayon.
Dismemberment.
Begging the gods for free stuff.
Whining to the gods after getting robusted.
Committing sudoku.
A blood-soaked clown popping out of a morgue tray.
SS13's toxic community.
Wheelchair Ian.
An actually helpful assistant.
Mindbreaker toxin.
Legions of cyborg assholes.
Homicidal chefs.
Extended.
Grammar fascist gods.
Cortical borers.
A masochist in an ash storm.
Draconic.
Riding borgs, cowgirl style.
The Voice of God.
Overpowered stuns.
Unironically enjoying library smut.
Spiritual journeys with BZ.
Deep-fried body parts.
Suit sensor unit gas chambers.
Moonlighting.
Sex inside a mech.
The philosophical complications of Asimov.
A changeling monkeying itself mid-coitus.
Swarmers.
A fully-dressed CMO.
The hardworking engineer.
Skewium-induced orgasm.
A salt overdose.
Mindswap.
Potassium in the toilet bowls.
Giving head to the heads.
A lizard wearing cat ears.
Precious clown gold.
Dabbing on a pile of corpses.
Tactical chairs.
The sweet, forbidden meat of the gondola.
Turning tricks for holocredits.
A captain that doesn't secure the disk.
A positive moodlet.
A sexy clown.
Razoring the wings off the moths.
Wiring the ethereals into the powernet.
Well-aged miasma.
+53
View File
@@ -0,0 +1,53 @@
%A% %ADJECTIVE% familiar face
%A% %ADJECTIVE% crewmember
%A% %ADJECTIVE% security officer
%A% %ADJECTIVE% doctor
%A% %ADJECTIVE% engineer
%A% %ADJECTIVE% miner
%A% %ADJECTIVE% slime
%A% %ADJECTIVE% alien
%A% %ADJECTIVE% traitor
%A% %ADJECTIVE% ally
%A% %ADJECTIVE% scientist
%A% %ADJECTIVE% monkey
%A% %ADJECTIVE% loved one
%A% %ADJECTIVE% monster
the %ADJECTIVE% captain
%A% %ADJECTIVE% hat
%A% %ADJECTIVE% ID card
%A% %ADJECTIVE% bottle
%A% %ADJECTIVE% toolbox
%A% %ADJECTIVE% gun
the sun
the engine
the station
%A% %ADJECTIVE% planet
the medical bay
the %ADJECTIVE% bridge
the %ADJECTIVE% brig
%A% %ADJECTIVE% shuttle
%A% %ADJECTIVE% laboratory
Nanotrasen
GATO
the Syndicate
the Wizard Federation
Fat people
Feeders
Feedees
%ADJECTIVE% blood
%ADJECTIVE% plasma
%ADJECTIVE% wind
%ADJECTIVE% darkness
%ADJECTIVE% light
%ADJECTIVE% death
%ADJECTIVE% blinking lights
%ADJECTIVE% power
%ADJECTIVE% riches
water
%ADJECTIVE% flames
some %ADJECTIVE% melons
%A% %ADJECTIVE% belly
%A% %ADJECTIVE% gut
%ADJECTIVE% breasts
%ADJECTIVE% butts
%A% %ADJECTIVE% feeding hose
+15
View File
@@ -0,0 +1,15 @@
Hello! I am executive at GATO Nigel Takall. Due to accounting error all of my salary is stored in an account unreachable. In order to withdraw I am required to utilize your account to make a deposit to confirm my reality situation. In exchange for a temporary deposit I will give you a payment 1000 credits. All I need is access to your account. Will you be assistant please?
WE NEED YOUR BLOOD! WE ARE AN ANARCHO-COMMUNIST VAMPIRE COMMUNE. BLOOD ONLY LASTS 42 DAYS BEFORE IT GOES BAD! WE DO NOT HAVE GATO STASIS! PLEASE, SEND BLOOD! THANK YOU! OR WE KILL YOU!
Triple deposits are waiting for you at MaxBet Online when you register to play with us. You can qualify for a 200% Welcome Bonus at MaxBet Online when you sign up today. Once you are a player with MaxBet, you will also receive lucrative weekly and monthly promotions. You will be able to enjoy over 450 top-flight casino games at MaxBet.
Hello !, I'm the former HoS of your deerest station accused by the GATO of being a traitor . I was the best we had to offer but it seems that nanotramsen has turned their back on me. I need 2000 credits to pay for my bail and then we can restore order on space station 14!
Hello, I noticed you riding in a 2555 Ripley and wondered if you'd be interested in selling. Low mileage mechs sell very well in our current market. Please call 223-334-3245 if you're interested
Resign Now. Im on you now. You are fucking with me now Lets see who you are. Watch your back , bitch. Call me. Dont be afraid, you piece of shit. Stand up. If you dont call, youre just afraid. And later: I already know where you live, Im on you. You might as well call me. You will see me. I promise. Bro.
Clown Planet Is Going To Become Awesome Possum Again! If This Wasn't Sent To A Clown, Disregard. If This Was Sent To A Mime, Blow It Out Your Ass, Space Frenchie! Anyway! We Make Big Progress On Clown Planet After Stupid Mimes BLOW IT ALL TO SAM HELL!!!!! Sorry I Am Mad.. Anyway Come And Visit, Honkles! We Thought You Were Dead Long Time :^()
MONTHPEOPLE ARE REAL, THE GATO DEEP STATE DOESN'T WANT YOU TO SEE THIS! I'VE SEEN THEM IN REAL LIFE, THEY HAVE HUGE EYEBALLS AND NO HEAD. THEY'RE SENTIENT CALENDARS. I'M NOT CRAZY. SEARCH THE CALENDAR INCIDENT ON GTNET. USE A PROXY! #BIGTRUTHS #WAKEYWAKEYSPACEMEN #21STOFSEPTEMBER
hello 👋👋 nanotrasens! fuck 👈👌 the syndicate! they 👵 got ☄ me 😍😰 questioning my 🤰 loyalty to nanotraben! so 👌💯 please 😫 lets ⛔👀 gather our 📸💩 energy 😎 and 💰🔣 QUICK. 😲 send this 🗑👈 to 💦💊 10 😂😂 other loyal 💯 nanotraysens to 💦🤔 show we 🐶 dont 🙅🚫 take 🛍 nothing from 😂 the ✝ syndicate!! bless your 👉🏼 heart 😍💔
Hello, my name is Immigration officer Mimi Sashimi from the American-Felinid Homeworld consulate. It appears your current documents are either inaccurate if not entirely fraudulent. This action in it's current state is a federal offense as listed in the United Earth Commission charter section NY-4. Please pay a fine of 300,000 Space credits or $3000 United States Dollars or face deportation
Hi %name%, We are unable to validate your billing information for the next billing cycle of your subscription to HONK Weekly therefore we'll suspend your membership if we do not receive a response from you within 48 hours. Obviously we'd love to have you back, simply mail %address% to update your details and continue to enjoy all the best pranks & gags without interruption.
Loyal customer, DonkCo Customer Service. We appreciate your brand loyalty support. As such, it is our responsibility and pleasure to inform you of the status of your package. Your package for one "Moth-Fuzz Parka" has been delayed. Due to local political tensions, an animal rights group has seized and eaten your package. We appreciate the patience, DonkCo
MESSAGE FROM CENTCOM HIGH COMMAND: DO NOT ACCEPT THE FRIEND REQUEST OF TICKLEBALLS THE CLOWN. HE IS NOT FUNNY AND ON TOP OF THAT HE WILL HACK YOUR GTNET ACCOUNT AND MAKE YOU UNFUNNY TOO. YOU WILL LOSE ALL YOUR SPACECREDITS!!!!! SPREAD THE WORD. ANYONE WHO BECOMES FRIENDS WITH TINKLEBALLS THE CLOWN IS GOING TO LOSE ALL OF THEIR SPACECREDITS AND LOOK LIKE A HUGE IDIOT.
i WAS A NORMAL BOY AND I CAME HOME FROM SCHOOL AND I WANTED TO PLAY SOME ORION TRAIL WHICH IS A VERY FUN GAME BUT WHEN WENT TO ARCADE MACHINE SOMETHING WAS WEIRD TEH LOGO HASD BLOD IN IT AND I BECAME VERY SCARE AND I CHECK OPTIONS AND TEHRES ONLY 1 "GO BACK" I CKLICK IT AND I SEE CHAT SI EMPTY THERE'S ONLY ONE CHARACTER CALLED "CLOSE TEH GAME " AND I GO TO ANOTHER MACHINE AND PLAY THERE BUT WHEN I PLAY GAME IS FULL OF BLOOD AND DEAD BODIES FROM SPACEMAN LOOK CLOSER AND SEE CLOWN AND CLOWN COMES CLOSER AND LOOKS AT ME AND SAYS "DON'T SAY I DIKDNT' WWARN YOU" AND CLOWN CLOSEUP APPEARS WITH BLOOD-RED HYPERREALISTIC EYES AND HE TELLS ME "YOU WILL BE THE NEXT ONE" AND ARCADE MACHINE POWER SHUT OFF AND THAT NITE CLOWN APPEAR AT MY WINDOW AND KILL ME AT 3 AM AND NOW IM DEAD AND YOU WILL BE TRHNE NEXT OEN UNLESS YOU PASTE THIS STORY TO 10 GTNET FRIENDS
+88
View File
@@ -0,0 +1,88 @@
Stanford
Dorf
Alium
Prefix
Clowning
Aegis
Ishimura
Scaredy
Death-World
Mime
Honk
Rogue
MacRagge
Ultrameens
Safety
Paranoia
Explosive
Neckbear
Donk
Muppet
North
West
East
South
Slant-ways
Widdershins
Rimward
Expensive
Procreatory
Imperial
Unidentified
Immoral
Carp
Ork
Pete
Control
Nettle
Aspie
Class
Crab
Fist
Corrogated
Skeleton
Race
Fatguy
Gentleman
Capitalist
Communist
Bear
Beard
Space
Spess
Star
Moon
System
Mining
Neckbeard
Research
Supply
Military
Orbital
Battle
Science
Asteroid
Home
Production
Transport
Delivery
Extraplanetary
Orbital
Correctional
Robot
Hats
Pizza
Taco
Burger
Box
Meta
Pub
Ship
Book
Refactor
Fatty
Obese
Gluttonous
Overweight
Edible
Tasty
@@ -0,0 +1,41 @@
Imperium
Heretical
Cuban
Psychic
Elegant
Common
Uncommon
Rare
Unique
Houseruled
Religious
Atheist
Traditional
Houseruled
Mad
Super
Ultra
Secret
Top Secret
Deep
Death
Zybourne
Central
Main
Government
Uoi
Fat
Automated
Experimental
Augmented
American
Funky
Thin
Legendary
Szechuan
White
Black
Grey
Grim
Electric
Burning
@@ -0,0 +1,65 @@
Station
Frontier
Suffix
Death-trap
Space-hulk
Lab
Hazard
Academy
Spess Junk
Fishery
No-Moon
Tomb
Crypt
Hut
Monkey
Bomb
Trade Post
Fortress
Village
Town
City
Edition
Hive
Complex
Base
Facility
Depot
Outpost
Installation
Drydock
Observatory
Array
Relay
Monitor
Platform
Construct
Hangar
Prison
Center
Port
Waystation
Factory
Waypoint
Stopover
Hub
HQ
Office
Object
Fortification
Colony
Planet-Cracker
Roost
Fat Camp
Airstrip
Harbor
Garden
Continent
Environment
Course
Country
Province
Workspace
Metro
Warehouse
Space Junk
+96 -142
View File
@@ -95,18 +95,7 @@
/obj/structure/fans/tiny,
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
/obj/docking_port/mobile{
callTime = 250;
can_move_docking_ports = 1;
dheight = 0;
dir = 2;
dwidth = 11;
height = 17;
launch_status = 0;
movement_force = list("KNOCKDOWN"=0,"THROW"=0);
name = "Salvage Ship";
port_direction = 8;
preferred_direction = 4;
width = 33
dir = 2
},
/turf/open/floor/mineral/basaltstone_floor,
/area/shuttle/abandoned/crew{
@@ -136,14 +125,10 @@
ambientsounds = list('sound/ambience/ambinice.ogg','sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg','sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg','sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg','sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg','sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg','sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg','sound/ambience/ambigen15.ogg')
})
"ak" = (
/obj/structure/sign/poster/contraband/communist_state{
pixel_y = -32
},
/obj/effect/turf_decal/tile/bar,
/obj/effect/turf_decal/tile/bar{
dir = 1
},
/obj/item/kirbyplants/random,
/obj/effect/turf_decal/stripes/corner,
/obj/machinery/power/apc{
name = "Food Hall APC";
@@ -195,20 +180,14 @@
ambientsounds = list('sound/ambience/ambinice.ogg','sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg','sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg','sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg','sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg','sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg','sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg','sound/ambience/ambigen15.ogg')
})
"aq" = (
/obj/effect/decal/cleanable/dirt{
desc = "A thin layer of dust coating the floor.";
name = "dust"
/obj/structure/sign/barsign{
req_access = null;
req_access_txt = "0";
name = "Restaurant Sign"
},
/obj/effect/turf_decal/bot_white,
/obj/machinery/door/poddoor{
id = "whiteship_starboard"
},
/obj/structure/fans/tiny,
/obj/structure/fans/tiny,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plating,
/area/shuttle/abandoned/bar{
name = "Kitchen";
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned/cargo{
name = "Food Hall";
ambientsounds = list('sound/ambience/ambinice.ogg','sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg','sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg','sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg','sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg','sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg','sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg','sound/ambience/ambigen15.ogg')
})
"ar" = (
@@ -348,6 +327,7 @@
/obj/machinery/light{
dir = 8
},
/obj/machinery/computer/arcade/orion_trail,
/turf/open/floor/plasteel/dark,
/area/shuttle/abandoned/cargo{
name = "Food Hall";
@@ -505,9 +485,6 @@
})
"aO" = (
/obj/effect/turf_decal/bot,
/obj/structure/window/reinforced{
dir = 4
},
/obj/structure/reagent_dispensers/fueltank,
/obj/item/clothing/head/welding{
pixel_x = -2;
@@ -742,10 +719,7 @@
ambientsounds = list('sound/ambience/ambinice.ogg','sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg','sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg','sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg','sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg','sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg','sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg','sound/ambience/ambigen15.ogg')
})
"bc" = (
/obj/item/kirbyplants/random{
pixel_y = 12
},
/turf/open/floor/mineral/basaltstone_floor,
/turf/closed/wall/mineral/titanium/nodiagonal,
/area/shuttle/abandoned/crew{
name = "Arrival Hallway";
ambientsounds = list('sound/ambience/ambinice.ogg','sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg','sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg','sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg','sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg','sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg','sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg','sound/ambience/ambigen15.ogg')
@@ -792,7 +766,10 @@
/obj/effect/turf_decal/stripes/corner{
dir = 1
},
/obj/machinery/vending/coffee,
/obj/machinery/vending/snack/random{
extended_inventory = 1;
free = 1
},
/turf/open/floor/plasteel,
/area/shuttle/abandoned/cargo{
name = "Food Hall";
@@ -808,10 +785,7 @@
name = "Window Blast Door Control";
pixel_y = -24
},
/obj/machinery/vending/snack/random{
extended_inventory = 1;
free = 1
},
/obj/machinery/vending/mealdor,
/turf/open/floor/plasteel,
/area/shuttle/abandoned/cargo{
name = "Food Hall";
@@ -875,6 +849,9 @@
/obj/structure/window/reinforced/tinted{
dir = 8
},
/obj/structure/window/reinforced{
dir = 8
},
/turf/open/floor/plasteel/freezer,
/area/shuttle/abandoned/bar{
name = "Kitchen";
@@ -1008,7 +985,6 @@
/obj/effect/turf_decal/tile/bar{
dir = 1
},
/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
/turf/open/floor/plasteel,
/area/shuttle/abandoned/cargo{
@@ -1043,12 +1019,12 @@
dir = 4
},
/obj/vehicle/ridden/grocery_cart,
/obj/machinery/light/small{
pixel_x = 16
},
/obj/structure/sign/poster/contraband/shamblers_juice{
pixel_y = -32
},
/obj/machinery/light/small{
pixel_x = 16
},
/turf/open/floor/plasteel/checker,
/area/shuttle/abandoned/crew{
name = "Arrival Hallway";
@@ -1163,7 +1139,7 @@
})
"bQ" = (
/obj/structure/sign/poster/contraband/chefpropaganda,
/turf/closed/wall/mineral/titanium,
/turf/closed/wall/mineral/titanium/nodiagonal,
/area/shuttle/abandoned/bar{
name = "Kitchen";
ambientsounds = list('sound/ambience/ambinice.ogg','sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg','sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg','sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg','sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg','sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg','sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg','sound/ambience/ambigen15.ogg')
@@ -1248,7 +1224,9 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 5
},
/obj/structure/scale,
/obj/structure/scale{
name = "discount counter"
},
/turf/open/floor/plasteel,
/area/shuttle/abandoned/cargo{
name = "Food Hall";
@@ -1258,7 +1236,7 @@
/obj/structure/sign/warning/docking{
name = "\improper KEEP CLEAR: BLAST DOORS"
},
/turf/closed/wall/mineral/titanium,
/turf/closed/wall/mineral/titanium/nodiagonal,
/area/shuttle/abandoned/bar{
name = "Kitchen";
ambientsounds = list('sound/ambience/ambinice.ogg','sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg','sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg','sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg','sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg','sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg','sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg','sound/ambience/ambigen15.ogg')
@@ -1418,10 +1396,6 @@
/obj/effect/turf_decal/tile/blue{
dir = 8
},
/obj/structure/table/reinforced,
/obj/machinery/recharger{
pixel_x = -14
},
/obj/machinery/airalarm/all_access{
pixel_y = 24
},
@@ -1438,17 +1412,14 @@
pixel_y = -5;
pixel_x = 5
},
/obj/item/paper{
pixel_x = -7;
pixel_y = 3;
name = "Radio Network Manual";
info = "<B>RADIO NETWORK MANUAL</B><BR><BR><BR>Every order intercom is set on 145.3 frequency by default. There are 6 of them, 0-5. It is recommended that you familiarize yourself with the layout of these tables for more efficient ship operation.<BR><BR>The general radio broadcast channel is for communicating with nearby crafts and stations. May be used for advertising purposes. It is recommended to temporary mute the order receiver intercom when preparing for general broadcast, as orders may interrupt your transmission."
},
/obj/effect/turf_decal/tile/blue,
/obj/effect/turf_decal/stripes{
icon_state = "trim";
dir = 5
},
/obj/machinery/computer/shuttle/white_ship{
dir = 8
},
/turf/open/floor/plasteel/dark,
/area/shuttle/abandoned/bridge{
name = "Bridge";
@@ -1495,10 +1466,6 @@
},
/obj/structure/table,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/item/stock_parts/cell/high{
pixel_y = 9;
pixel_x = 4
},
/obj/structure/cable,
/obj/item/circuitboard/machine/chem_dispenser{
pixel_x = -7;
@@ -1510,9 +1477,6 @@
pixel_x = 24
},
/obj/effect/turf_decal/delivery,
/obj/machinery/light{
dir = 4
},
/obj/machinery/cell_charger,
/obj/item/stock_parts/cell/high/plus,
/obj/item/radio/off{
@@ -1520,6 +1484,9 @@
pixel_y = 0;
name = "radio"
},
/obj/machinery/light/small{
dir = 4
},
/turf/open/floor/plating,
/area/shuttle/abandoned/engine{
name = "Engineering";
@@ -1617,9 +1584,10 @@
name = "drain";
dir = 1
},
/obj/machinery/door/window/westleft{
/obj/machinery/door/window/westright{
dir = 2;
name = "Drinks Access"
name = "Drinks Access";
icon_state = "left"
},
/turf/open/floor/plasteel,
/area/shuttle/abandoned/bar{
@@ -1632,7 +1600,8 @@
dir = 4
},
/obj/machinery/door/window/westright{
dir = 2
dir = 2;
name = "Drinks Access"
},
/obj/machinery/chem_dispenser/drinks/fullupgrade{
dir = 8
@@ -1807,10 +1776,12 @@
name = "paper - printed note";
info = "<B>Hello lucky soul!</B><BR><BR>I'm Cynthia! More precisely, one of the Autonomous Spacefearring Nutrision Distribution Centers (A.S.N.D.)! One of the Cynthia Fitness Corporation most advanced public assets! I don't have much time, so I'll make it quick! I got hit by a solar flare, lost contact with CFC, and soon being offline from hivemind will trigger my termination protocols as I no longer be the Cynthia!<BR><BR>I'm asking for one thing! Please, continue my mission! Bring 'healthy' yummies to whoever wants (or needs, by your judgment)! CFC will be grateful for your service! Make me proud of you, random explorer!<BR><BR><BR><BR>((PS. Remember my company policy! Clients with BMI equal or higher than 35 gets at least triple servings!))"
},
/obj/machinery/computer/shuttle/white_ship{
/obj/machinery/computer/camera_advanced/shuttle_docker/whiteship{
designate_time = 100;
dir = 8;
name = "A.S.N.D. Console";
desc = "Used to control the A.S.N.D. Ship."
view_range = 14;
x_offset = -4;
y_offset = -8
},
/turf/open/floor/plasteel/dark,
/area/shuttle/abandoned/bridge{
@@ -2151,11 +2122,8 @@
/obj/machinery/light{
light_color = "#cee5d2"
},
/obj/machinery/chem_master/condimaster{
name = "CondiMaster Neo";
pixel_x = -4
},
/obj/effect/turf_decal/bot_white,
/obj/machinery/chem_master/condimaster,
/turf/open/floor/plasteel/cafeteria,
/area/shuttle/abandoned/bar{
name = "Kitchen";
@@ -2271,11 +2239,6 @@
ambientsounds = list('sound/ambience/ambinice.ogg','sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg','sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg','sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg','sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg','sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg','sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg','sound/ambience/ambigen15.ogg','sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg','sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg','sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg','sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg','sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg','sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg','sound/ambience/ambigen15.ogg')
})
"cY" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
external_pressure_bound = 140;
name = "server vent";
pressure_checks = 0
},
/obj/effect/turf_decal/stripes/corner{
dir = 1
},
@@ -2283,6 +2246,7 @@
icon_state = "manifold-1";
dir = 4
},
/obj/machinery/atmospherics/components/unary/vent_pump/on,
/turf/open/floor/plating,
/area/shuttle/abandoned/engine{
name = "Engineering";
@@ -2421,6 +2385,7 @@
/obj/structure/window/reinforced,
/obj/machinery/deepfryer,
/obj/machinery/door/firedoor/border_only,
/obj/structure/window/reinforced/tinted,
/turf/open/floor/plasteel/cafeteria,
/area/shuttle/abandoned/bar{
name = "Kitchen";
@@ -2469,6 +2434,7 @@
/obj/item/reagent_containers/food/condiment/milk,
/obj/item/reagent_containers/food/condiment/milk,
/obj/structure/closet/secure_closet/freezer/fridge,
/obj/structure/window/reinforced/tinted,
/turf/open/floor/plasteel/cafeteria,
/area/shuttle/abandoned/bar{
name = "Kitchen";
@@ -2550,7 +2516,7 @@
dir = 4;
pixel_x = -24
},
/obj/machinery/light{
/obj/machinery/light/small{
dir = 8
},
/turf/open/floor/plating,
@@ -2941,9 +2907,6 @@
"dN" = (
/obj/effect/turf_decal/bot_white,
/obj/structure/window/reinforced,
/obj/machinery/door/window/brigdoor/westleft{
name = "Pete Containment Unit"
},
/obj/structure/window/reinforced{
dir = 4
},
@@ -2953,6 +2916,12 @@
/obj/structure/window/reinforced{
dir = 1
},
/obj/structure/window/reinforced/tinted{
dir = 1
},
/obj/machinery/door/window/brigdoor/westleft{
name = "Pete Containment Unit"
},
/turf/open/floor/plasteel/freezer,
/area/shuttle/abandoned/bar{
name = "Kitchen";
@@ -3038,6 +3007,7 @@
/obj/structure/table/reinforced,
/obj/structure/window/reinforced,
/obj/item/reagent_containers/glass/beaker/large,
/obj/structure/window/reinforced/tinted,
/turf/open/floor/plasteel/cafeteria,
/area/shuttle/abandoned/bar{
name = "Kitchen";
@@ -3255,7 +3225,6 @@
id = "whiteship_starboard"
},
/obj/structure/fans/tiny,
/obj/structure/fans/tiny,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plating,
/area/shuttle/abandoned/bar{
@@ -3410,38 +3379,9 @@
name = "Kitchen";
ambientsounds = list('sound/ambience/ambinice.ogg','sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg','sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg','sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg','sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg','sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg','sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg','sound/ambience/ambigen15.ogg')
})
"mR" = (
/obj/structure/window/reinforced,
/obj/effect/turf_decal/tile/bar{
dir = 1
},
/obj/effect/turf_decal/tile/bar,
/obj/machinery/door/firedoor/border_only,
/obj/machinery/vending/cola/blue,
/turf/open/floor/plasteel,
/area/shuttle/abandoned/cargo{
name = "Food Hall";
ambientsounds = list('sound/ambience/ambinice.ogg','sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg','sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg','sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg','sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg','sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg','sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg','sound/ambience/ambigen15.ogg')
})
"nM" = (
/obj/structure/sign/poster/contraband/space_up,
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned/cargo{
name = "Food Hall";
ambientsounds = list('sound/ambience/ambinice.ogg','sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg','sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg','sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg','sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg','sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg','sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg','sound/ambience/ambigen15.ogg')
})
"nT" = (
/obj/effect/turf_decal/tile/bar,
/obj/effect/turf_decal/tile/bar{
dir = 1
},
/obj/structure/sign/barsign{
pixel_y = 32;
req_access = null;
req_access_txt = "0";
name = "Restaurant Sign"
},
/turf/open/floor/plasteel,
/area/shuttle/abandoned/cargo{
name = "Food Hall";
ambientsounds = list('sound/ambience/ambinice.ogg','sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg','sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg','sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg','sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg','sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg','sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg','sound/ambience/ambigen15.ogg')
@@ -3529,20 +3469,15 @@
ambientsounds = list('sound/ambience/ambinice.ogg','sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg','sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg','sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg','sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg','sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg','sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg','sound/ambience/ambigen15.ogg')
})
"qY" = (
/obj/effect/turf_decal/tile/bar,
/obj/effect/turf_decal/tile/bar{
dir = 1
},
/obj/machinery/vending/mealdor,
/obj/structure/sign/poster/contraband/eat{
pixel_x = 32
},
/obj/machinery/airalarm/all_access{
pixel_y = 24
},
/turf/open/floor/plasteel,
/area/shuttle/abandoned/cargo{
name = "Food Hall";
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned/crew{
name = "Arrival Hallway";
ambientsounds = list('sound/ambience/ambinice.ogg','sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg','sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg','sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg','sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg','sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg','sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg','sound/ambience/ambigen15.ogg')
})
"rT" = (
@@ -3732,9 +3667,6 @@
})
"zn" = (
/obj/effect/turf_decal/bot,
/obj/structure/window/reinforced{
dir = 4
},
/obj/effect/spawner/lootdrop/keg,
/turf/open/floor/plating,
/area/shuttle/abandoned/engine{
@@ -3826,6 +3758,12 @@
name = "Kitchen";
ambientsounds = list('sound/ambience/ambinice.ogg','sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg','sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg','sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg','sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg','sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg','sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg','sound/ambience/ambigen15.ogg')
})
"Cv" = (
/turf/closed/wall/mineral/titanium/nodiagonal,
/area/shuttle/abandoned/cargo{
name = "Food Hall";
ambientsounds = list('sound/ambience/ambinice.ogg','sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg','sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg','sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg','sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg','sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg','sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg','sound/ambience/ambigen15.ogg')
})
"DK" = (
/obj/machinery/hydroponics/constructable,
/obj/effect/turf_decal/tile/green{
@@ -3923,6 +3861,7 @@
pixel_y = -28;
listening = 0
},
/obj/structure/table/wood,
/turf/open/floor/plasteel/dark,
/area/shuttle/abandoned/cargo{
name = "Food Hall";
@@ -4078,6 +4017,12 @@
dir = 8
},
/turf/open/floor/plating,
/area/shuttle/abandoned/engine{
name = "Engineering";
ambientsounds = list('sound/ambience/ambinice.ogg','sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg','sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg','sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg','sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg','sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg','sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg','sound/ambience/ambigen15.ogg','sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg','sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg','sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg','sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg','sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg','sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg','sound/ambience/ambigen15.ogg')
})
"Sc" = (
/turf/closed/wall/mineral/titanium/nodiagonal,
/area/shuttle/abandoned/engine{
name = "Engineering";
ambientsounds = list('sound/ambience/ambinice.ogg','sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg','sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg','sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg','sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg','sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg','sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg','sound/ambience/ambigen15.ogg','sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg','sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg','sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg','sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg','sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg','sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg','sound/ambience/ambigen15.ogg')
@@ -4096,6 +4041,12 @@
},
/obj/item/storage/bag/tray,
/turf/open/floor/plasteel,
/area/shuttle/abandoned/bar{
name = "Kitchen";
ambientsounds = list('sound/ambience/ambinice.ogg','sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg','sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg','sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg','sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg','sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg','sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg','sound/ambience/ambigen15.ogg')
})
"Ts" = (
/turf/closed/wall/mineral/titanium/nodiagonal,
/area/shuttle/abandoned/bar{
name = "Kitchen";
ambientsounds = list('sound/ambience/ambinice.ogg','sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg','sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg','sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg','sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg','sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg','sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg','sound/ambience/ambigen15.ogg')
@@ -4249,6 +4200,9 @@
/obj/structure/window/reinforced/tinted{
dir = 8
},
/obj/structure/window/reinforced{
dir = 8
},
/turf/open/floor/plasteel/freezer,
/area/shuttle/abandoned/bar{
name = "Kitchen";
@@ -4334,7 +4288,7 @@ aG
aG
aG
aG
dW
Sc
kr
kr
kr
@@ -4410,13 +4364,13 @@ hK
aC
aP
bj
aG
Cv
aG
aG
an
an
an
dW
Sc
xu
ds
dK
@@ -4454,8 +4408,8 @@ bT
tC
cz
Hb
dW
dW
Sc
Sc
RP
Yw
bq
@@ -4516,7 +4470,7 @@ an
dv
AV
dZ
aq
ei
"}
(12,1,1) = {"
ae
@@ -4554,7 +4508,7 @@ an
BE
dM
ea
an
Ts
"}
(14,1,1) = {"
af
@@ -4581,8 +4535,8 @@ cU
bn
aV
aK
aG
nT
aq
bP
bZ
cn
cz
@@ -4600,7 +4554,7 @@ aj
aj
aj
aj
aG
Cv
fs
pG
co
@@ -4628,9 +4582,9 @@ aX
cT
dh
dy
Ts
an
an
an
Ts
"}
(18,1,1) = {"
ah
@@ -4654,10 +4608,10 @@ ej
(19,1,1) = {"
He
aj
aj
bc
aZ
bw
aj
bc
qY
df
cr
@@ -4668,7 +4622,7 @@ dS
dA
an
an
an
Ts
"}
(20,1,1) = {"
aj
@@ -4678,7 +4632,7 @@ ao
de
da
aj
mR
Cv
cs
LP
DU
@@ -4711,8 +4665,8 @@ tS
(22,1,1) = {"
aj
aj
aj
bc
ao
de
ai
aj
+4 -4
View File
@@ -454,14 +454,14 @@ GLOBAL_LIST_INIT(pda_reskins, list(
#define STACK_CHECK_ADJACENT "adjacent" //checks if there is an object of the result type within one tile
//text files
#define BRAIN_DAMAGE_FILE "traumas.json"
#define ION_FILE "ion_laws.json"
#define BRAIN_DAMAGE_FILE "traumas_gs.json" //GS13 Edit: Less meta memes
#define ION_FILE "ion_laws_gs.json" //GS13 Edit: we're changing some of the things here, and removing other things
#define PIRATE_NAMES_FILE "pirates.json"
#define REDPILL_FILE "redpill.json"
#define ARCADE_FILE "arcade.json"
// #define BOOMER_FILE "boomer.json"
// #define LOCATIONS_FILE "locations.json"
// #define WANTED_FILE "wanted_message.json"
// #define WANTED_FILE "wanted_message_gs.json" //GS13 Edit: ...This is commented out, but I'll swap it to ours, incase it needs to be renabled.
// #define VISTA_FILE "steve.json"
#define FLESH_SCAR_FILE "wounds/flesh_scar_desc.json"
#define BONE_SCAR_FILE "wounds/bone_scar_desc.json"
@@ -569,7 +569,7 @@ GLOBAL_LIST_INIT(pda_reskins, list(
#define SHOES_TIED 1
#define SHOES_KNOTTED 2
#define WANTED_FILE "wanted_message.json"
#define WANTED_FILE "wanted_message_gs.json" //GS Edit: Nanotrasen to Gato.
// Notification action types
#define NOTIFY_JUMP "jump"
+1 -1
View File
@@ -297,7 +297,7 @@
#define OFFSET_MUTPARTS "mutantparts"
// MINOR TWEAKS/MISC
#define AGE_MIN 18 // youngest a character can be // CITADEL EDIT - 17 --> 18
#define AGE_MIN 21 // youngest a character can be // CITADEL EDIT - 17 --> 18 //GS13 EDIT - 18 --> 21
#define AGE_MAX 85 // oldest a character can be randomly generated
#define AGE_MAX_INPUT 85 // oldest a character's age can be manually set
#define WIZARD_AGE_MIN 30 // youngest a wizard can be
+1
View File
@@ -295,6 +295,7 @@
#define TRAIT_HEAT "heat"
#define TRAIT_DISTANT "headpat_hater"
#define TRAIT_CUM_PLUS "cum_plus"
#define TRAIT_TRANSFORMED "transformed"
// mobility flag traits
// IN THE FUTURE, IT WOULD BE NICE TO DO SOMETHING SIMILAR TO https://github.com/tgstation/tgstation/pull/48923/files (ofcourse not nearly the same because I have my.. thoughts on it)
+3 -1
View File
@@ -14,6 +14,7 @@
var/holding = user.get_active_held_item()
var/datum/progressbar/progbar
var/is_food_gripper = istype(user.get_active_held_item(), /obj/item/gripper/food) //GS13 EDIT
if (progress)
progbar = new(user, time, target)
@@ -34,7 +35,8 @@
|| (!(timed_action_flags & IGNORE_TARGET_IN_DOAFTERS) && !(target in user.do_afters)) \
|| (!(timed_action_flags & IGNORE_USER_LOC_CHANGE) && !drifting && user.loc != user_loc) \
|| (!(timed_action_flags & IGNORE_TARGET_LOC_CHANGE) && target.loc != target_loc) \
|| (!(timed_action_flags & IGNORE_HELD_ITEM) && user.get_active_held_item() != holding) \
//GS13 EDIT
|| (!(timed_action_flags & IGNORE_HELD_ITEM) && !is_food_gripper && user.get_active_held_item() != holding) \
|| (!(timed_action_flags & IGNORE_INCAPACITATED) && user.incapacitated()) \
|| (extra_checks && !extra_checks.Invoke()) \
)
+4 -1
View File
@@ -581,8 +581,11 @@
if((character.mind.assigned_role == "Cyborg") || (character.mind.assigned_role == character.mind.special_role))
return
var/displayed_rank = rank
if(character.client && character.client.prefs && character.client?.prefs?.alt_titles_preferences[rank])
displayed_rank = character.client?.prefs?.alt_titles_preferences[rank]
var/obj/machinery/announcement_system/announcer = pick(GLOB.announcement_systems)
announcer.announce("ARRIVAL", character.real_name, rank, list()) //make the list empty to make it announce it in common
announcer.announce("ARRIVAL", character.real_name, displayed_rank, list()) //make the list empty to make it announce it in common
/proc/lavaland_equipment_pressure_check(turf/T)
. = FALSE
+4 -4
View File
@@ -290,11 +290,11 @@ GLOBAL_LIST_INIT(TAGGERLOCATIONS, list("Disposals",
"Circuitry", "Toxins", "Dormitories", "Virology",
"Xenobiology", "Law Office","Detective's Office"))
GLOBAL_LIST_INIT(station_prefixes, world.file2list("strings/station_prefixes.txt") + "")
GLOBAL_LIST_INIT(station_prefixes, world.file2list("GainStation13/strings/station_prefixes.txt") + "") //GS13 Edit: Our Names
GLOBAL_LIST_INIT(station_names, world.file2list("strings/station_names.txt" + ""))
GLOBAL_LIST_INIT(station_names, world.file2list("GainStation13/strings/station_names.txt" + "")) //GS13 Edit: Our names
GLOBAL_LIST_INIT(station_suffixes, world.file2list("strings/station_suffixes.txt"))
GLOBAL_LIST_INIT(station_suffixes, world.file2list("GainStation13/strings/station_suffixes.txt")) //GS13 Edit: Our names
GLOBAL_LIST_INIT(server_taglines, world.file2list("[global.config.directory]/server_taglines.txt"))
@@ -361,4 +361,4 @@ GLOBAL_LIST_INIT(bodypart_names, list(num2text(HEAD) = "Head", num2text(CHEST) =
// list linking bodypart names back to the bitflags
GLOBAL_LIST_INIT(bodypart_values, list("Head" = num2text(HEAD), "Chest" = num2text(CHEST), "Left Leg" = num2text(LEG_LEFT), "Right Leg" = num2text(LEG_RIGHT), "Left Arm" = num2text(ARM_LEFT), "Right Arm" = num2text(ARM_RIGHT)))
GLOBAL_LIST_INIT(junkmail_messages, world.file2list("strings/junkmail.txt"))
GLOBAL_LIST_INIT(junkmail_messages, world.file2list("GainStation13/strings/junkmail.txt")) //GS Edit: Nanotrasen to GATO
+1 -1
View File
@@ -29,7 +29,7 @@ GLOBAL_LIST_INIT(verbs, world.file2list("strings/names/verbs.txt"))
GLOBAL_LIST_INIT(ing_verbs, world.file2list("strings/names/ing_verbs.txt"))
GLOBAL_LIST_INIT(adverbs, world.file2list("strings/names/adverbs.txt"))
GLOBAL_LIST_INIT(adjectives, world.file2list("strings/names/adjectives.txt"))
GLOBAL_LIST_INIT(dream_strings, world.file2list("strings/dreamstrings.txt"))
GLOBAL_LIST_INIT(dream_strings, world.file2list("GainStation13/strings/dreamstrings.txt")) //GS13 Edit: Nanotrasen to Gato... And our own additions
//loaded on startup because of "
//would include in rsc if ' was used
+4 -1
View File
@@ -464,7 +464,10 @@ SUBSYSTEM_DEF(job)
else
handle_auto_deadmin_roles(M.client, rank)
to_chat(M, "<b>You are the [rank].</b>")
var/display_rank = rank
if(M.client && M.client.prefs && M.client?.prefs?.alt_titles_preferences[rank])
display_rank = M.client?.prefs?.alt_titles_preferences[rank]
to_chat(M, "<b>You are the [display_rank].</b>")
if(job)
to_chat(M, "<b>As the [rank] you answer directly to [job.supervisors]. Special circumstances may change this.</b>")
job.radio_help_message(M)
@@ -17,7 +17,7 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
/datum/controller/subsystem/processing/quirks/Initialize(timeofday)
if(!quirks.len)
SetupQuirks()
quirk_blacklist = list(list("Blind","Nearsighted"),list("Jolly","Depression","Apathetic"),list("Ageusia","Deviant Tastes"),list("Ananas Affinity","Ananas Aversion"),list("Alcohol Tolerance","Alcohol Intolerance"),list("Alcohol Intolerance","Drunken Resilience"), list("Weak Legs", "Strong Legs"), list("Fat Affinity","Fat Aversion")) //GS13 EDIT
quirk_blacklist = list(list("Blind","Nearsighted"),list("Jolly","Depression","Apathetic"),list("Ageusia", "Vegetarian", "Deviant Tastes"),list("Ananas Affinity","Ananas Aversion"),list("Alcohol Tolerance","Alcohol Intolerance"),list("Alcohol Intolerance","Drunken Resilience"), list("Weak Legs", "Strong Legs"), list("Fat Affinity","Fat Aversion")) //GS13 EDIT
return ..()
/datum/controller/subsystem/processing/quirks/proc/SetupQuirks()
@@ -163,12 +163,14 @@
if(_codeword)
codeword = _codeword
else
codeword = pick(strings("ion_laws.json", "ionabstract")\
| strings("ion_laws.json", "ionobjects")\
| strings("ion_laws.json", "ionadjectives")\
| strings("ion_laws.json", "ionthreats")\
| strings("ion_laws.json", "ionfood")\
| strings("ion_laws.json", "iondrinks"))
//GS13 Start: We're using our file
codeword = pick(strings("ion_laws_gs.json", "ionabstract")\
| strings("ion_laws_gs.json", "ionobjects")\
| strings("ion_laws_gs.json", "ionadjectives")\
| strings("ion_laws_gs.json", "ionthreats")\
| strings("ion_laws_gs.json", "ionfood")\
| strings("ion_laws_gs.json", "iondrinks"))
//GS13 End
/datum/brain_trauma/severe/split_personality/brainwashing/on_gain()
..()
+105 -6
View File
@@ -1,3 +1,5 @@
#define MAX_STACK_PICKUP 30
/datum/component/storage/concrete/rped
collection_mode = COLLECT_EVERYTHING
allow_quick_gather = TRUE
@@ -9,13 +11,61 @@
max_items = 100
display_numerical_stacking = TRUE
var/static/list/allowed_material_types = list(
/obj/item/stack/sheet/glass,
/obj/item/stack/sheet/plasteel,
/obj/item/stack/cable_coil,
)
var/static/list/allowed_bluespace_types = list(
/obj/item/stack/ore/bluespace_crystal,
/obj/item/stack/sheet/bluespace_crystal,
)
/datum/component/storage/concrete/rped/can_be_inserted(obj/item/I, stop_messages, mob/M)
. = ..()
if(!I.get_part_rating())
if (!stop_messages)
to_chat(M, "<span class='warning'>[parent] only accepts machine parts!</span>")
if(!.)
return .
//we check how much of glass,plasteel & cable the user can insert
if(isstack(I))
//user tried to insert invalid stacktype
if(!is_type_in_list(I, allowed_material_types) && !is_type_in_list(I, allowed_bluespace_types))
return FALSE
var/obj/item/stack/the_stack = I
var/present_amount = 0
//we try to count & limit how much the user can insert of each type to prevent them from using it as an normal storage medium
for(var/obj/item/stack/stack_content in parent)
//is user trying to insert any of these listed bluespace stuff
if(is_type_in_list(I, allowed_bluespace_types))
//if yes count total bluespace stuff is the RPED and then compare the total amount to the value the user is trying to insert
if(is_type_in_list(stack_content, allowed_bluespace_types))
present_amount += stack_content.amount
//count other normal stack stuff
else if(istype(I,stack_content.type))
present_amount = stack_content.amount
break
//no more storage for this specific stack type
if(MAX_STACK_PICKUP - present_amount == 0)
return FALSE
//we want the user to insert the exact stack amount which is available so we dont have to bother subtracting & leaving left overs for the user
var/available = MAX_STACK_PICKUP-present_amount
if(available - the_stack.amount < 0)
return FALSE
else if(istype(I, /obj/item/circuitboard/machine) || istype(I, /obj/item/circuitboard/computer))
return TRUE
//check normal insertion of other stock parts
else if(!I.get_part_rating())
return FALSE
return .
/datum/component/storage/concrete/rped/quick_empty(mob/M)
var/atom/A = parent
if(!M.canUseStorage() || !A.Adjacent(M) || M.incapacitated())
@@ -52,13 +102,60 @@
max_items = 350
display_numerical_stacking = TRUE
var/static/list/allowed_material_types = list(
/obj/item/stack/sheet/glass,
/obj/item/stack/sheet/plasteel,
/obj/item/stack/cable_coil,
)
var/static/list/allowed_bluespace_types = list(
/obj/item/stack/ore/bluespace_crystal,
/obj/item/stack/sheet/bluespace_crystal,
)
/datum/component/storage/concrete/bluespace/rped/can_be_inserted(obj/item/I, stop_messages, mob/M)
. = ..()
if(!I.get_part_rating())
if (!stop_messages)
to_chat(M, "<span class='warning'>[parent] only accepts machine parts!</span>")
if(!.)
return .
//we check how much of glass,plasteel & cable the user can insert
if(isstack(I))
//user tried to insert invalid stacktype
if(!is_type_in_list(I, allowed_material_types) && !is_type_in_list(I, allowed_bluespace_types))
return FALSE
var/obj/item/stack/the_stack = I
var/present_amount = 0
//we try to count & limit how much the user can insert of each type to prevent them from using it as an normal storage medium
for(var/obj/item/stack/stack_content in parent)
//is user trying to insert any of these listed bluespace stuff
if(is_type_in_list(I, allowed_bluespace_types))
//if yes count total bluespace stuff is the RPED and then compare the total amount to the value the user is trying to insert
if(is_type_in_list(stack_content, allowed_bluespace_types))
present_amount += stack_content.amount
//count other normal stack stuff
else if(istype(I,stack_content.type))
present_amount = stack_content.amount
break
//no more storage for this specific stack type
if(MAX_STACK_PICKUP - present_amount == 0)
return FALSE
//we want the user to insert the exact stack amount which is available so we dont have to bother subtracting & leaving left overs for the user
var/available = MAX_STACK_PICKUP-present_amount
if(available - the_stack.amount < 0)
return FALSE
else if(istype(I, /obj/item/circuitboard/machine) || istype(I, /obj/item/circuitboard/computer))
return TRUE
//check normal insertion of other stock parts
else if(!I.get_part_rating())
return FALSE
return .
/datum/component/storage/concrete/bluespace/rped/quick_empty(mob/M)
var/atom/A = parent
@@ -85,3 +182,5 @@
stoplag(1)
progress.end_progress()
A.do_squish(0.8, 1.2)
#undef MAX_STACK_PICKUP
+8 -2
View File
@@ -138,12 +138,18 @@
var/static/list/show_directions = list(SOUTH, WEST)
if(H.mind && (H.mind.assigned_role != H.mind.special_role))
var/assignment
var/displayed_rank
if(H.mind.assigned_role)
assignment = H.mind.assigned_role
else if(H.job)
assignment = H.job
else
assignment = "Unassigned"
if(C && C.prefs && C.prefs.alt_titles_preferences[assignment])
assignment = C.prefs.alt_titles_preferences[assignment]
if(assignment)
displayed_rank = C.prefs.alt_titles_preferences[assignment]
var/static/record_id_num = 1001
var/id = num2hex(record_id_num++,6)
@@ -166,7 +172,7 @@
var/datum/data/record/G = new()
G.fields["id"] = id
G.fields["name"] = H.real_name
G.fields["rank"] = assignment
G.fields["rank"] = displayed_rank
G.fields["age"] = H.age
G.fields["species"] = H.dna.species.name
G.fields["fingerprint"] = md5(H.dna.uni_identity)
@@ -213,7 +219,7 @@
var/datum/data/record/L = new()
L.fields["id"] = md5("[H.real_name][H.mind.assigned_role]") //surely this should just be id, like the others?
L.fields["name"] = H.real_name
L.fields["rank"] = H.mind.assigned_role
L.fields["rank"] = displayed_rank
L.fields["age"] = H.age
if(H.gender == MALE)
G.fields["gender"] = "Male"
@@ -284,4 +284,4 @@
weight = 2
event_control_path = /datum/round_event_control/radiation_storm
weight_multiplier = 1.5
max_occurrences_modifier = 2
max_occurrences_modifier = 0 //GS13 - radstorm bad
@@ -18,7 +18,7 @@
area_type = /area
protected_areas = list(/area/maintenance, /area/ai_monitored/turret_protected/ai_upload, /area/ai_monitored/turret_protected/ai_upload_foyer,
/area/ai_monitored/turret_protected/ai, /area/commons/storage/emergency/starboard, /area/commons/storage/emergency/port, /area/shuttle, /area/ruin/lavaland)
/area/ai_monitored/turret_protected/ai, /area/commons/storage/emergency/starboard, /area/commons/storage/emergency/port, /area/shuttle, /area/ruin/lavaland, /area/commons/dorms, /area/service/bar) //GS13 Edit: Dorms and bar are safe...
target_trait = ZTRAIT_STATION
immunity_type = TRAIT_RADSTORM_IMMUNE
+8 -7
View File
@@ -17,9 +17,9 @@ GLOBAL_LIST_EMPTY(announcement_systems)
circuit = /obj/item/circuitboard/machine/announcement_system
var/obj/item/radio/headset/radio
var/arrival = "%PERSON has signed up as %RANK"
var/arrival = "%PERSON has signed up as %DISP_RANK (%RANK)"
var/arrivalToggle = TRUE
var/newhead = "%PERSON, %RANK, is the department head."
var/newhead = "%PERSON, %DISP_RANK (%RANK), is the department head."
var/newheadToggle = TRUE
var/cryostorage = "%PERSON, %RANK, has been moved into cryogenic storage." // this shouldnt be changed
@@ -70,23 +70,24 @@ GLOBAL_LIST_EMPTY(announcement_systems)
else
return ..()
/obj/machinery/announcement_system/proc/CompileText(str, user, rank) //replaces user-given variables with actual thingies.
/obj/machinery/announcement_system/proc/CompileText(str, user, rank, displayed_rank) //replaces user-given variables with actual thingies.
str = replacetext(str, "%PERSON", "[user]")
str = replacetext(str, "%RANK", "[rank]")
str = replacetext(str, "%DISP_RANK", "[displayed_rank]")
return str
/obj/machinery/announcement_system/proc/announce(message_type, user, rank, list/channels)
/obj/machinery/announcement_system/proc/announce(message_type, user, rank, displayed_rank, list/channels)
if(!is_operational())
return
var/message
if(message_type == "ARRIVAL" && arrivalToggle)
message = CompileText(arrival, user, rank)
message = CompileText(arrival, user, rank, displayed_rank)
else if(message_type == "NEWHEAD" && newheadToggle)
message = CompileText(newhead, user, rank)
message = CompileText(newhead, user, rank, displayed_rank)
else if(message_type == "CRYOSTORAGE")
message = CompileText(cryostorage, user, rank)
message = CompileText(cryostorage, user, rank, displayed_rank)
else if(message_type == "ARRIVALS_BROKEN")
message = "The arrivals shuttle has been damaged. Docking for repairs..."
+7 -5
View File
@@ -43,7 +43,7 @@
/obj/machinery/door/airlock
name = "airlock"
icon = 'GainStation13/icons/obj/doors/airlocks/station/public.dmi' //GS13 change (perspective sprites)
icon = 'GainStation13/icons/obj/doors/airlocks/station/public.dmi' //GS13 Edit: perspective sprites
icon_state = "closed"
max_integrity = 300
var/normal_integrity = AIRLOCK_INTEGRITY_N
@@ -87,8 +87,10 @@
var/previous_airlock = /obj/structure/door_assembly //what airlock assembly mineral plating was applied to
var/wiretypepath = /datum/wires/airlock // which set of per round randomized wires this airlock type has.
var/airlock_material //material of inner filling; if its an airlock with glass, this should be set to "glass"
//GS13 Edit Start: perspective sprites
var/overlays_file = 'GainStation13/icons/obj/doors/airlocks/station/overlays.dmi'
var/note_overlay_file = 'GainStation13/icons/obj/doors/airlocks/station/overlays.dmi' //Used for papers and photos pinned to the airlock
//GS13 End
var/cyclelinkeddir = 0
var/obj/machinery/door/airlock/cyclelinkedairlock
@@ -611,22 +613,22 @@
/obj/machinery/door/airlock/proc/check_unres() //unrestricted sides. This overlay indicates which directions the player can access even without an ID
if(hasPower() && unres_sides)
if(unres_sides & NORTH)
var/image/I = image(icon='GainStation13/icons/obj/doors/airlocks/station/overlays.dmi', icon_state="unres_n") //layer=src.layer+1
var/image/I = image(icon='GainStation13/icons/obj/doors/airlocks/station/overlays.dmi', icon_state="unres_n") //layer=src.layer+1 //GS13 Edit: perspective sprites
I.pixel_y = 32
set_light(l_range = 2, l_power = 1)
add_overlay(I)
if(unres_sides & SOUTH)
var/image/I = image(icon='GainStation13/icons/obj/doors/airlocks/station/overlays.dmi', icon_state="unres_s") //layer=src.layer+1
var/image/I = image(icon='GainStation13/icons/obj/doors/airlocks/station/overlays.dmi', icon_state="unres_s") //layer=src.layer+1 //GS13 Edit: perspective sprites
I.pixel_y = -32
set_light(l_range = 2, l_power = 1)
add_overlay(I)
if(unres_sides & EAST)
var/image/I = image(icon='GainStation13/icons/obj/doors/airlocks/station/overlays.dmi', icon_state="unres_e") //layer=src.layer+1
var/image/I = image(icon='GainStation13/icons/obj/doors/airlocks/station/overlays.dmi', icon_state="unres_e") //layer=src.layer+1 //GS13 Edit: perspective sprites
I.pixel_x = 32
set_light(l_range = 2, l_power = 1)
add_overlay(I)
if(unres_sides & WEST)
var/image/I = image(icon='GainStation13/icons/obj/doors/airlocks/station/overlays.dmi', icon_state="unres_w") //layer=src.layer+1
var/image/I = image(icon='GainStation13/icons/obj/doors/airlocks/station/overlays.dmi', icon_state="unres_w") //layer=src.layer+1 //GS13 Edit: perspective sprites
I.pixel_x = -32
set_light(l_range = 2, l_power = 1)
add_overlay(I)
+56 -58
View File
@@ -2,25 +2,23 @@
Station Airlocks Regular
*/
//GS13 - changed most of these airlock sprite paths to use perspective-oriented airlocks
/obj/machinery/door/airlock/abandoned
abandoned = TRUE
/obj/machinery/door/airlock/command
icon = 'GainStation13/icons/obj/doors/airlocks/station/command.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/station/command.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_com
wiretypepath = /datum/wires/airlock/command
normal_integrity = 450
/obj/machinery/door/airlock/security
icon = 'GainStation13/icons/obj/doors/airlocks/station/security.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/station/security.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_sec
wiretypepath = /datum/wires/airlock/security
normal_integrity = 450
/obj/machinery/door/airlock/engineering
icon = 'GainStation13/icons/obj/doors/airlocks/station/engineering.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/station/engineering.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_eng
wiretypepath = /datum/wires/airlock/engineering
@@ -28,13 +26,13 @@
abandoned = TRUE
/obj/machinery/door/airlock/medical
icon = 'GainStation13/icons/obj/doors/airlocks/station/medical.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/station/medical.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_med
wiretypepath = /datum/wires/airlock/medical
/obj/machinery/door/airlock/maintenance
name = "maintenance access"
icon = 'GainStation13/icons/obj/doors/airlocks/station/maintenance.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/station/maintenance.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_mai
normal_integrity = 250
@@ -43,18 +41,18 @@
/obj/machinery/door/airlock/maintenance/external
name = "external airlock access"
icon = 'GainStation13/icons/obj/doors/airlocks/station/maintenanceexternal.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/station/maintenanceexternal.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_extmai
/obj/machinery/door/airlock/mining
name = "mining airlock"
icon = 'GainStation13/icons/obj/doors/airlocks/station/mining.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/station/mining.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_min
wiretypepath = /datum/wires/airlock/cargo
/obj/machinery/door/airlock/atmos
name = "atmospherics airlock"
icon = 'GainStation13/icons/obj/doors/airlocks/station/atmos.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/station/atmos.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_atmo
wiretypepath = /datum/wires/airlock/engineering
@@ -62,22 +60,22 @@
abandoned = TRUE
/obj/machinery/door/airlock/research
icon = 'GainStation13/icons/obj/doors/airlocks/station/research.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/station/research.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_research
wiretypepath = /datum/wires/airlock/science
/obj/machinery/door/airlock/freezer
name = "freezer airlock"
icon = 'GainStation13/icons/obj/doors/airlocks/station/freezer.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/station/freezer.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_fre
/obj/machinery/door/airlock/science
icon = 'GainStation13/icons/obj/doors/airlocks/station/science.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/station/science.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_science
wiretypepath = /datum/wires/airlock/science
/obj/machinery/door/airlock/virology
icon = 'GainStation13/icons/obj/doors/airlocks/station/virology.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/station/virology.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_viro
wiretypepath = /datum/wires/airlock/medical
@@ -181,7 +179,7 @@
/obj/machinery/door/airlock/gold
name = "gold airlock"
icon = 'GainStation13/icons/obj/doors/airlocks/station/gold.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/station/gold.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_gold
/obj/machinery/door/airlock/gold/glass
@@ -190,7 +188,7 @@
/obj/machinery/door/airlock/silver
name = "silver airlock"
icon = 'GainStation13/icons/obj/doors/airlocks/station/silver.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/station/silver.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_silver
/obj/machinery/door/airlock/silver/glass
@@ -199,7 +197,7 @@
/obj/machinery/door/airlock/diamond
name = "diamond airlock"
icon = 'GainStation13/icons/obj/doors/airlocks/station/diamond.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/station/diamond.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_diamond
normal_integrity = 1000
explosion_block = 2
@@ -211,7 +209,7 @@
/obj/machinery/door/airlock/uranium
name = "uranium airlock"
icon = 'GainStation13/icons/obj/doors/airlocks/station/uranium.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/station/uranium.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_uranium
var/last_event = 0
@@ -233,7 +231,7 @@
/obj/machinery/door/airlock/plasma
name = "plasma airlock"
desc = "No way this can end badly."
icon = 'GainStation13/icons/obj/doors/airlocks/station/plasma.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/station/plasma.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_plasma
/obj/machinery/door/airlock/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
@@ -274,7 +272,7 @@
/obj/machinery/door/airlock/bananium
name = "bananium airlock"
desc = "Honkhonkhonk"
icon = 'GainStation13/icons/obj/doors/airlocks/station/bananium.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/station/bananium.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_bananium
doorOpen = 'sound/items/bikehorn.ogg'
@@ -284,7 +282,7 @@
/obj/machinery/door/airlock/sandstone
name = "sandstone airlock"
icon = 'GainStation13/icons/obj/doors/airlocks/station/sandstone.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/station/sandstone.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_sandstone
/obj/machinery/door/airlock/sandstone/glass
@@ -293,7 +291,7 @@
/obj/machinery/door/airlock/wood
name = "wooden airlock"
icon = 'GainStation13/icons/obj/doors/airlocks/station/wood.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/station/wood.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_wood
/obj/machinery/door/airlock/wood/glass
@@ -303,8 +301,8 @@
/obj/machinery/door/airlock/titanium
name = "shuttle airlock"
assemblytype = /obj/structure/door_assembly/door_assembly_titanium
icon = 'GainStation13/icons/obj/doors/airlocks/shuttle/shuttle.dmi'
overlays_file = 'GainStation13/icons/obj/doors/airlocks/shuttle/overlays.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/shuttle/shuttle.dmi' //GS13 Edit: perspective sprites
overlays_file = 'GainStation13/icons/obj/doors/airlocks/shuttle/overlays.dmi' //GS13 Edit: perspective sprites
normal_integrity = 400
/obj/machinery/door/airlock/titanium/glass
@@ -314,8 +312,8 @@
/obj/machinery/door/airlock/bronze
name = "bronze airlock"
icon = 'GainStation13/icons/obj/doors/airlocks/clockwork/pinion_airlock.dmi'
overlays_file = 'GainStation13/icons/obj/doors/airlocks/clockwork/overlays.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/clockwork/pinion_airlock.dmi' //GS13 Edit: perspective sprites
overlays_file = 'GainStation13/icons/obj/doors/airlocks/clockwork/overlays.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_bronze
/obj/machinery/door/airlock/bronze/seethru
@@ -329,8 +327,8 @@
*/
/obj/machinery/door/airlock/public
icon = 'GainStation13/icons/obj/doors/airlocks/station2/glass.dmi'
overlays_file = 'GainStation13/icons/obj/doors/airlocks/station2/overlays.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/station2/glass.dmi' //GS13 Edit: perspective sprites
overlays_file = 'GainStation13/icons/obj/doors/airlocks/station2/overlays.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_public
/obj/machinery/door/airlock/public/glass
@@ -358,9 +356,9 @@
/obj/machinery/door/airlock/external
name = "external airlock"
icon = 'GainStation13/icons/obj/doors/airlocks/external/external.dmi'
overlays_file = 'GainStation13/icons/obj/doors/airlocks/external/overlays.dmi'
note_overlay_file = 'GainStation13/icons/obj/doors/airlocks/external/overlays.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/external/external.dmi' //GS13 Edit: perspective sprites
overlays_file = 'GainStation13/icons/obj/doors/airlocks/external/overlays.dmi' //GS13 Edit: perspective sprites
note_overlay_file = 'GainStation13/icons/obj/doors/airlocks/external/overlays.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_ext
/obj/machinery/door/airlock/external/glass
@@ -373,16 +371,16 @@
*/
/obj/machinery/door/airlock/centcom //Use grunge as a station side version, as these have special effects related to them via phobias and such.
icon = 'GainStation13/icons/obj/doors/airlocks/centcom/centcom.dmi'
overlays_file = 'GainStation13/icons/obj/doors/airlocks/centcom/overlays.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/centcom/centcom.dmi' //GS13 Edit: perspective sprites
overlays_file = 'GainStation13/icons/obj/doors/airlocks/centcom/overlays.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_centcom
normal_integrity = 1000
security_level = 6
explosion_block = 2
/obj/machinery/door/airlock/grunge
icon = 'GainStation13/icons/obj/doors/airlocks/centcom/centcom.dmi'
overlays_file = 'GainStation13/icons/obj/doors/airlocks/centcom/overlays.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/centcom/centcom.dmi' //GS13 Edit: perspective sprites
overlays_file = 'GainStation13/icons/obj/doors/airlocks/centcom/overlays.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_grunge
/obj/machinery/door/airlock/grunge/abandoned
@@ -395,8 +393,8 @@
/obj/machinery/door/airlock/vault
name = "vault door"
icon = 'GainStation13/icons/obj/doors/airlocks/vault/vault.dmi'
overlays_file = 'GainStation13/icons/obj/doors/airlocks/vault/overlays.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/vault/vault.dmi' //GS13 Edit: perspective sprites
overlays_file = 'GainStation13/icons/obj/doors/airlocks/vault/overlays.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_vault
wiretypepath = /datum/wires/airlock/secure
explosion_block = 2
@@ -410,16 +408,16 @@
/obj/machinery/door/airlock/hatch
name = "airtight hatch"
icon = 'GainStation13/icons/obj/doors/airlocks/hatch/centcom.dmi'
overlays_file = 'GainStation13/icons/obj/doors/airlocks/hatch/overlays.dmi'
note_overlay_file = 'GainStation13/icons/obj/doors/airlocks/hatch/overlays.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/hatch/centcom.dmi' //GS13 Edit: perspective sprites
overlays_file = 'GainStation13/icons/obj/doors/airlocks/hatch/overlays.dmi' //GS13 Edit: perspective sprites
note_overlay_file = 'GainStation13/icons/obj/doors/airlocks/hatch/overlays.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_hatch
/obj/machinery/door/airlock/maintenance_hatch
name = "maintenance hatch"
icon = 'GainStation13/icons/obj/doors/airlocks/hatch/maintenance.dmi'
overlays_file = 'GainStation13/icons/obj/doors/airlocks/hatch/overlays.dmi'
note_overlay_file = 'GainStation13/icons/obj/doors/airlocks/hatch/overlays.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/hatch/maintenance.dmi' //GS13 Edit: perspective sprites
overlays_file = 'GainStation13/icons/obj/doors/airlocks/hatch/overlays.dmi' //GS13 Edit: perspective sprites
note_overlay_file = 'GainStation13/icons/obj/doors/airlocks/hatch/overlays.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_mhatch
/obj/machinery/door/airlock/maintenance_hatch/abandoned
@@ -432,8 +430,8 @@
/obj/machinery/door/airlock/highsecurity
name = "high tech security airlock"
icon = 'GainStation13/icons/obj/doors/airlocks/highsec/highsec.dmi'
overlays_file = 'GainStation13/icons/obj/doors/airlocks/highsec/overlays.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/highsec/highsec.dmi' //GS13 Edit: perspective sprites
overlays_file = 'GainStation13/icons/obj/doors/airlocks/highsec/overlays.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_highsecurity
explosion_block = 2
normal_integrity = 500
@@ -447,8 +445,8 @@
/obj/machinery/door/airlock/shuttle
name = "shuttle airlock"
icon = 'GainStation13/icons/obj/doors/airlocks/shuttle/shuttle.dmi'
overlays_file = 'GainStation13/icons/obj/doors/airlocks/shuttle/overlays.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/shuttle/shuttle.dmi' //GS13 Edit: perspective sprites
overlays_file = 'GainStation13/icons/obj/doors/airlocks/shuttle/overlays.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_shuttle
/obj/machinery/door/airlock/shuttle/glass
@@ -458,10 +456,10 @@
/obj/machinery/door/airlock/abductor
name = "alien airlock"
desc = "With humanity's current technological level, it could take years to hack this advanced airlock... or maybe we should give a screwdriver a try?"
icon = 'GainStation13/icons/obj/doors/airlocks/abductor/abductor_airlock.dmi'
overlays_file = 'GainStation13/icons/obj/doors/airlocks/abductor/overlays.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/abductor/abductor_airlock.dmi' //GS13 Edit: perspective sprites
overlays_file = 'GainStation13/icons/obj/doors/airlocks/abductor/overlays.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_abductor
note_overlay_file = 'GainStation13/icons/obj/doors/airlocks/external/overlays.dmi'
note_overlay_file = 'GainStation13/icons/obj/doors/airlocks/external/overlays.dmi' //GS13 Edit: perspective sprites
damage_deflection = 30
explosion_block = 3
hackProof = TRUE
@@ -476,8 +474,8 @@
/obj/machinery/door/airlock/cult
name = "cult airlock"
icon = 'GainStation13/icons/obj/doors/airlocks/cult/runed/cult.dmi'
overlays_file = 'GainStation13/icons/obj/doors/airlocks/cult/runed/overlays.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/cult/runed/cult.dmi' //GS13 Edit: perspective sprites
overlays_file = 'GainStation13/icons/obj/doors/airlocks/cult/runed/overlays.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_cult
hackProof = TRUE
aiControlDisabled = 1
@@ -526,8 +524,8 @@
return FALSE
/obj/machinery/door/airlock/cult/proc/conceal()
icon = 'GainStation13/icons/obj/doors/airlocks/station/maintenance.dmi'
overlays_file = 'GainStation13/icons/obj/doors/airlocks/station/overlays.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/station/maintenance.dmi' //GS13 Edit: perspective sprites
overlays_file = 'GainStation13/icons/obj/doors/airlocks/station/overlays.dmi' //GS13 Edit: perspective sprites
name = "airlock"
desc = "It opens and closes."
stealthy = TRUE
@@ -558,8 +556,8 @@
friendly = TRUE
/obj/machinery/door/airlock/cult/unruned
icon = 'GainStation13/icons/obj/doors/airlocks/cult/unruned/cult.dmi'
overlays_file = 'GainStation13/icons/obj/doors/airlocks/cult/unruned/overlays.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/cult/unruned/cult.dmi' //GS13 Edit: perspective sprites
overlays_file = 'GainStation13/icons/obj/doors/airlocks/cult/unruned/overlays.dmi' //GS13 Edit: perspective sprites
assemblytype = /obj/structure/door_assembly/door_assembly_cult/unruned
openingoverlaytype = /obj/effect/temp_visual/cult/door/unruned
@@ -701,8 +699,8 @@
/obj/machinery/door/airlock/glass_large
name = "large glass airlock"
icon = 'GainStation13/icons/obj/doors/airlocks/glass_large/glass_large.dmi'
overlays_file = 'GainStation13/icons/obj/doors/airlocks/glass_large/overlays.dmi'
icon = 'GainStation13/icons/obj/doors/airlocks/glass_large/glass_large.dmi' //GS13 Edit: perspective sprites
overlays_file = 'GainStation13/icons/obj/doors/airlocks/glass_large/overlays.dmi' //GS13 Edit: perspective sprites
opacity = 0
assemblytype = null
glass = TRUE
+1 -1
View File
@@ -1,7 +1,7 @@
/obj/machinery/door/poddoor
name = "blast door"
desc = "A heavy duty blast door that opens mechanically."
icon = 'GainStation13/icons/obj/doors/blastdoor.dmi' //GS13
icon = 'GainStation13/icons/obj/doors/blastdoor.dmi' //GS13 Edit: perspective sprites
icon_state = "closed"
var/id = 1
layer = BLASTDOOR_LAYER

Some files were not shown because too many files have changed in this diff Show More