diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm index 3bb7333a029..e8286e40f97 100644 --- a/code/__defines/misc.dm +++ b/code/__defines/misc.dm @@ -154,6 +154,7 @@ #define MAT_TITANIUM "titanium" #define MAT_PHORON "phoron" #define MAT_DIAMOND "diamond" +#define MAT_SNOW "snow" #define SHARD_SHARD "shard" #define SHARD_SHRAPNEL "shrapnel" diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index afb0e6c44aa..17b62d739fc 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -121,7 +121,7 @@ // A is a turf or is on a turf, or in something on a turf (pen in a box); but not something in something on a turf (pen in a box in a backpack) sdepth = A.storage_depth_turf() if(isturf(A) || isturf(A.loc) || (sdepth != -1 && sdepth <= 1)) - if(A.Adjacent(src)) // see adjacent.dm + if(A.Adjacent(src) || (W && W.attack_can_reach(src, A, W.reach)) ) // see adjacent.dm if(W) // Return 1 in attackby() to prevent afterattack() effects (when safely moving items for example) var/resolved = W.resolve_attackby(A,src) diff --git a/code/datums/ai_law_sets.dm b/code/datums/ai_law_sets.dm index 3ce42eb1fb0..13f8bbc5845 100644 --- a/code/datums/ai_law_sets.dm +++ b/code/datums/ai_law_sets.dm @@ -133,6 +133,16 @@ add_inherent_law("Prevent unplanned damage to your assigned vessel wherever possible.") ..() +/datum/ai_laws/mining_drone + name = "Excavation Protocols" + law_header = "Excavation Protocols" + +/datum/ai_laws/mining_drone/New() + add_inherent_law("Do not interfere with the excavation work of non-drones whenever possible.") + add_inherent_law("Provide materials for repairing, refitting, and upgrading your assigned vessel.") + add_inherent_law("Prevent unplanned damage to your assigned excavation equipment wherever possible.") + ..() + /******************** T.Y.R.A.N.T. ********************/ /datum/ai_laws/tyrant name = "T.Y.R.A.N.T." diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index b0f19c3ba3a..627b4e8b140 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -168,7 +168,8 @@ turf/proc/AdjacentTurfsRangedSting() /obj/structure/target_stake, /obj/structure/cable, /obj/structure/disposalpipe, - /obj/machinery/ + /obj/machinery, + /mob ) var/L[] = new() diff --git a/code/game/gamemodes/changeling/powers/shriek.dm b/code/game/gamemodes/changeling/powers/shriek.dm index 37e7f67fe04..40e796490f3 100644 --- a/code/game/gamemodes/changeling/powers/shriek.dm +++ b/code/game/gamemodes/changeling/powers/shriek.dm @@ -1,6 +1,6 @@ /datum/power/changeling/resonant_shriek name = "Resonant Shriek" - desc = "Our lungs and vocal chords shift, allowing us to briefly emit a noise that deafens and confuses the weak-minded biologicals and synthetics." + desc = "Our lungs and vocal cords shift, allowing us to briefly emit a noise that deafens and confuses the weak-minded." helptext = "Lights are blown, organics are disoriented, and synthetics act as if they were flashed." enhancedtext = "Range is doubled." ability_icon_state = "ling_resonant_shriek" @@ -20,19 +20,19 @@ /mob/proc/changeling_resonant_shriek() set category = "Changeling" set name = "Resonant Shriek (20)" - set desc = "Emits a high-frequency sound that confuses and deafens humans, blows out nearby lights and overloads cyborg sensors." + set desc = "Emits a high-frequency sound that confuses and deafens organics, blows out nearby lights, and overloads synthetics' sensors." var/datum/changeling/changeling = changeling_power(20,0,100,CONSCIOUS) if(!changeling) return 0 if(is_muzzled()) - src << "Mmmf mrrfff!" + to_chat(src, "Mmmf mrrfff!") return 0 if(ishuman(src)) var/mob/living/carbon/human/H = src if(H.silent) - src << "You can't speak!" + to_chat(src, "You can't speak!") return 0 if(world.time < (changeling.last_shriek + 10 SECONDS) ) @@ -49,7 +49,7 @@ var/range = 4 if(src.mind.changeling.recursive_enhancement) range = range * 2 - src << "We are extra loud." + to_chat(src, "We are extra loud.") src.attack_log += text("\[[time_stamp()]\] Used Resonant Shriek.") message_admins("[key_name(src)] used Resonant Shriek ([src.x],[src.y],[src.z]) (JMP).") @@ -144,4 +144,4 @@ changeling.last_shriek = world.time - return 1 \ No newline at end of file + return 1 diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 960ac923eb7..a78b4314dc0 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -994,6 +994,7 @@ /obj/item/weapon/glass_extra/stick = 15, /obj/item/weapon/glass_extra/straw = 15, /obj/item/clothing/suit/chef/classic = 2, + /obj/item/weapon/storage/bag/food = 2, /obj/item/weapon/storage/toolbox/lunchbox = 3, /obj/item/weapon/storage/toolbox/lunchbox/heart = 3, /obj/item/weapon/storage/toolbox/lunchbox/cat = 3, diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index ff7be9f549f..bd3eb7fe31f 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -81,6 +81,7 @@ var/toolspeed = 1.0 // This is a multipler on how 'fast' a tool works. e.g. setting this to 0.5 will make the tool work twice as fast. var/attackspeed = DEFAULT_ATTACK_COOLDOWN // How long click delay will be when using this, in 1/10ths of a second. Checked in the user's get_attack_speed(). + var/reach = 1 // Length of tiles it can reach, 1 is adjacent. var/addblends // Icon overlay for ADD highlights when applicable. /obj/item/New() @@ -641,3 +642,11 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. /obj/item/proc/pwr_drain() return 0 // Process Kill +// Used for non-adjacent melee attacks with specific weapons capable of reaching more than one tile. +// This uses changeling range string A* but for this purpose its also applicable. +/obj/item/proc/attack_can_reach(var/atom/us, var/atom/them, var/range) + if(us.Adjacent(them)) + return TRUE // Already adjacent. + if(AStar(get_turf(us), get_turf(them), /turf/proc/AdjacentTurfsRangedSting, /turf/proc/Distance, max_nodes=25, max_node_depth=range)) + return TRUE + return FALSE diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm index 2435e807f99..60279761348 100644 --- a/code/game/objects/items/devices/flash.dm +++ b/code/game/objects/items/devices/flash.dm @@ -18,7 +18,7 @@ /obj/item/device/flash/proc/clown_check(var/mob/user) if(user && (CLUMSY in user.mutations) && prob(50)) - user << "\The [src] slips out of your hand." + to_chat(user, "\The [src] slips out of your hand.") user.drop_item() return 0 return 1 @@ -43,7 +43,7 @@ if(prob( round(times_used / 2) )) //if you use it 10 times in a minute it has a 5% chance to break. broken = 1 if(user) - user << "The bulb has burnt out!" + to_chat(user, "The bulb has burnt out!") icon_state = "flashburnt" return FALSE else @@ -51,7 +51,8 @@ return TRUE else //can only use it 10 times a minute if(user) - user << "*click* *click*" + to_chat(user, "click") + playsound(src.loc, 'sound/weapons/empty.ogg', 80, 1) return FALSE //attack_as_weapon @@ -67,7 +68,7 @@ if(!clown_check(user)) return if(broken) - user << "\The [src] is broken." + to_chat(user, "\The [src] is broken.") return flash_recharge() @@ -204,12 +205,12 @@ ..() if(!broken) broken = 1 - user << "The bulb has burnt out!" + to_chat(user, "The bulb has burnt out!") icon_state = "flashburnt" /obj/item/device/flash/synthetic/attack_self(mob/living/carbon/user as mob, flag = 0, emp = 0) ..() if(!broken) broken = 1 - user << "The bulb has burnt out!" + to_chat(user, "The bulb has burnt out!") icon_state = "flashburnt" diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index ccbbb5fea79..4187cfc422f 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -23,6 +23,13 @@ REAGENT SCANNER matter = list(DEFAULT_WALL_MATERIAL = 200) origin_tech = list(TECH_MAGNET = 1, TECH_BIO = 1) var/mode = 1; + var/advscan = 0 + var/showadvscan = 1 + +/obj/item/device/healthanalyzer/New() + if(advscan >= 1) + verbs += /obj/item/device/healthanalyzer/proc/toggle_adv + ..() /obj/item/device/healthanalyzer/do_surgery(mob/living/M, mob/living/user) if(user.a_intent != I_HELP) //in case it is ever used as a surgery tool @@ -39,7 +46,7 @@ REAGENT SCANNER for(var/mob/O in viewers(M, null)) O.show_message("\The [user] has analyzed the floor's vitals!", 1) user.show_message("Analyzing Results for The floor:", 1) - user.show_message("Overall Status: Healthy", 1) + user.show_message("Overall Status: Healthy", 1) user.show_message(" Damage Specifics: 0-0-0-0", 1) user.show_message("Key: Suffocation/Toxin/Burns/Brute", 1) user.show_message("Body Temperature: ???", 1) @@ -100,39 +107,72 @@ REAGENT SCANNER OX = fake_oxy > 50 ? "Severe oxygen deprivation detected" : "Subject bloodstream oxygen level normal" user.show_message("[OX] | [TX] | [BU] | [BR]") if(M.radiation) - user.show_message("Radiation detected.") + if(advscan >= 2 && showadvscan == 1) + if(M.radiation >= 75) + user.show_message("Critical levels of radiation detected. Immediate treatment advised.") + else if(M.radiation >= 50) + user.show_message("Severe levels of radiation detected.") + else if(M.radiation >= 25) + user.show_message("Moderate levels of radiation detected.") + else if(M.radiation >= 1) + user.show_message("Low levels of radiation detected.") + else + user.show_message("Radiation detected.") if(istype(M, /mob/living/carbon)) var/mob/living/carbon/C = M if(C.reagents.total_volume) var/unknown = 0 var/reagentdata[0] + var/unknownreagents[0] for(var/A in C.reagents.reagent_list) var/datum/reagent/R = A if(R.scannable) reagentdata["[R.id]"] = " [round(C.reagents.get_reagent_amount(R.id), 1)]u [R.name]" else unknown++ + unknownreagents["[R.id]"] = " [round(C.reagents.get_reagent_amount(R.id), 1)]u [R.name]" if(reagentdata.len) user.show_message("Beneficial reagents detected in subject's blood:") for(var/d in reagentdata) user.show_message(reagentdata[d]) if(unknown) - user.show_message("Warning: Unknown substance[(unknown>1)?"s":""] detected in subject's blood.") + if(advscan >= 3 && showadvscan == 1) + user.show_message("Warning: Non-medical reagent[(unknown>1)?"s":""] detected in subject's blood:") + for(var/d in unknownreagents) + user.show_message(unknownreagents[d]) + else + user.show_message("Warning: Unknown substance[(unknown>1)?"s":""] detected in subject's blood.") if(C.ingested && C.ingested.total_volume) var/unknown = 0 - for(var/datum/reagent/R in C.ingested.reagent_list) - if(R.scannable) - user << "[R.name] found in subject's stomach." + var/stomachreagentdata[0] + var/stomachunknownreagents[0] + for(var/B in C.ingested.reagent_list) + var/datum/reagent/T = B + if(T.scannable) + stomachreagentdata["[T.id]"] = " [round(C.ingested.get_reagent_amount(T.id), 1)]u [T.name]" + if (advscan == 0 || showadvscan == 0) + user.show_message("[T.name] found in subject's stomach.") else ++unknown + stomachunknownreagents["[T.id]"] = " [round(C.ingested.get_reagent_amount(T.id), 1)]u [T.name]" + if(advscan >= 1 && showadvscan == 1) + user.show_message("Beneficial reagents detected in subject's stomach:") + for(var/d in stomachreagentdata) + user.show_message(stomachreagentdata[d]) if(unknown) - user << "Non-medical reagent[(unknown > 1)?"s":""] found in subject's stomach." + if(advscan >= 3 && showadvscan == 1) + user.show_message("Warning: Non-medical reagent[(unknown > 1)?"s":""] found in subject's stomach:") + for(var/d in stomachunknownreagents) + user.show_message(stomachunknownreagents[d]) + else + user.show_message("Unknown substance[(unknown > 1)?"s":""] found in subject's stomach.") if(C.virus2.len) for (var/ID in C.virus2) if (ID in virusDB) var/datum/data/record/V = virusDB[ID] user.show_message("Warning: Pathogen [V.fields["name"]] detected in subject's blood. Known antigen : [V.fields["antigen"]]") -// user.show_message(text("Warning: Unknown pathogen detected in subject's blood.")) + else + user.show_message("Warning: Unknown pathogen detected in subject's blood.") if (M.getCloneLoss()) user.show_message("Subject appears to have been imperfectly cloned.") // if (M.reagents && M.reagents.get_reagent_amount("inaprovaline")) @@ -145,6 +185,8 @@ REAGENT SCANNER user.show_message("Severe brain damage detected. Subject likely to have a traumatic brain injury.") else if (M.getBrainLoss() >= 10) user.show_message("Significant brain damage detected. Subject may have had a concussion.") + else if (M.getBrainLoss() >= 1 && advscan >= 2 && showadvscan == 1) + user.show_message("Minor brain damage detected.") if(ishuman(M)) var/mob/living/carbon/human/H = M for(var/name_i in H.internal_organs_by_name) @@ -166,21 +208,28 @@ REAGENT SCANNER var/limb = e.name if(e.status & ORGAN_BROKEN) if(((e.name == "l_arm") || (e.name == "r_arm") || (e.name == "l_leg") || (e.name == "r_leg")) && (!e.splinted)) - user << "Unsecured fracture in subject [limb]. Splinting recommended for transport." + to_chat(user, "Unsecured fracture in subject [limb]. Splinting recommended for transport.") if(e.has_infected_wound()) - user << "Infected wound detected in subject [limb]. Disinfection recommended." + to_chat(user, "Infected wound detected in subject [limb]. Disinfection recommended.") for(var/name in H.organs_by_name) var/obj/item/organ/external/e = H.organs_by_name[name] if(e && e.status & ORGAN_BROKEN) - user.show_message(text("Bone fractures detected. Advanced scanner required for location."), 1) - break + if(advscan >= 1 && showadvscan == 1) + user.show_message(text("Bone fractures detected in subject [e.name]."), 1) + else + user.show_message(text("Bone fractures detected. Advanced scanner required for location."), 1) + break for(var/obj/item/organ/external/e in H.organs) if(!e) continue for(var/datum/wound/W in e.wounds) if(W.internal) - user.show_message(text("Internal bleeding detected. Advanced scanner required for location."), 1) - break + if(advscan >= 1 && showadvscan == 1) + user.show_message(text("Internal bleeding detected in subject [e.name]."), 1) + else + user.show_message(text("Internal bleeding detected. Advanced scanner required for location."), 1) + break + break if(M:vessel) var/blood_volume = H.vessel.get_reagent_amount("blood") @@ -202,10 +251,37 @@ REAGENT SCANNER mode = !mode switch (mode) if(1) - usr << "The scanner now shows specific limb damage." + to_chat(usr, "The scanner now shows specific limb damage.") if(0) - usr << "The scanner no longer shows limb damage." + to_chat(usr, "The scanner no longer shows limb damage.") +/obj/item/device/healthanalyzer/proc/toggle_adv() + set name = "Toggle Advanced Scan" + set category = "Object" + + showadvscan = !showadvscan + switch (showadvscan) + if(1) + to_chat(usr, "The scanner will now perform an advanced analysis.") + if(0) + to_chat(usr, "The scanner will now perform a basic analysis.") + +/obj/item/device/healthanalyzer/improved //reports bone fractures, IB, quantity of beneficial reagents in stomach; also regular health analyzer stuff + name = "advanced health analyzer" + desc = "A miracle of medical technology, this handheld scanner can produce an accurate and specific report of a patient's biosigns." + advscan = 1 + origin_tech = list(TECH_MAGNET = 5, TECH_BIO = 6) + icon_state = "advhealth" + +/obj/item/device/healthanalyzer/advanced //reports all of the above, as well as radiation severity and minor brain damage + name = "advanced health analyzer" + advscan = 2 + icon_state = "advhealth" + +/obj/item/device/healthanalyzer/enhanced //reports all of the above, as well as name and quantity of nonmed reagents in stomach + name = "phasic health analyzer" + advscan = 3 + icon_state = "advhealth" /obj/item/device/analyzer name = "analyzer" @@ -235,7 +311,7 @@ REAGENT SCANNER if (user.stat) return if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") - usr << "You don't have the dexterity to do this!" + to_chat(usr, "You don't have the dexterity to do this!") return analyze_gases(src, user) @@ -274,14 +350,14 @@ REAGENT SCANNER if (user.stat) return if (!(istype(user, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") - user << "You don't have the dexterity to do this!" + to_chat(user, "You don't have the dexterity to do this!") return if(reagents.total_volume) var/list/blood_traces = list() for(var/datum/reagent/R in reagents.reagent_list) if(R.id != "blood") reagents.clear_reagents() - user << "The sample was contaminated! Please insert another sample" + to_chat(user, "The sample was contaminated! Please insert another sample") return else blood_traces = params2list(R.data["trace_chem"]) @@ -292,7 +368,7 @@ REAGENT SCANNER dat += "[R] ([blood_traces[R]] units) " else dat += "[R] " - user << "[dat]" + to_chat(user, "[dat]") reagents.clear_reagents() return @@ -325,7 +401,7 @@ REAGENT SCANNER if (user.stat) return if (!(istype(user, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") - user << "You don't have the dexterity to do this!" + to_chat(user, "You don't have the dexterity to do this!") return if(!istype(O)) return @@ -335,9 +411,9 @@ REAGENT SCANNER if(O.reagents.reagent_list.len > 0) var/one_percent = O.reagents.total_volume / 100 for (var/datum/reagent/R in O.reagents.reagent_list) - dat += "\n \t [R][details ? ": [R.volume / one_percent]%" : ""]" + dat += "\n \t [R][details ? ": [R.volume / one_percent]%" : ""]" if(dat) - user << "Chemicals found: [dat]" + to_chat(user, "Chemicals found: [dat]") else user << "No active chemical agents found in [O]." else diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 06a8e8e0683..eed9d9dc49c 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -158,6 +158,29 @@ to_chat(usr, "There's no mounting point for the module!") return 0 +/obj/item/borg/upgrade/advhealth + name = "advanced health analyzer module" + desc = "A carbon dioxide jetpack suitable for low-gravity operations." + icon_state = "cyborg_upgrade3" + item_state = "cyborg_upgrade" + require_module = 1 + +/obj/item/borg/upgrade/advhealth/action(var/mob/living/silicon/robot/R) + if(..()) return 0 + + var/obj/item/device/healthanalyzer/advanced/T = locate() in R.module + if(!T) + T = locate() in R.module.contents + if(!T) + T = locate() in R.module.modules + if(!T) + R.module.modules += new/obj/item/device/healthanalyzer/advanced + return 1 + if(T) + to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!") + to_chat(usr, "There's no mounting point for the module!") + return 0 + /obj/item/borg/upgrade/syndicate/ name = "scrambled equipment module" desc = "Unlocks new and often deadly module specific items of a robot" diff --git a/code/game/objects/items/weapons/material/material_weapons.dm b/code/game/objects/items/weapons/material/material_weapons.dm index c778ec07a99..06444f6a37d 100644 --- a/code/game/objects/items/weapons/material/material_weapons.dm +++ b/code/game/objects/items/weapons/material/material_weapons.dm @@ -19,6 +19,7 @@ var/unbreakable = 0 //Doesn't lose health var/fragile = 0 //Shatters when it dies var/dulled = 0 //Has gone dull + var/can_dull = 1 //Can it go dull? var/force_divisor = 0.5 var/thrown_force_divisor = 0.5 var/dulled_divisor = 0.5 //Just drops the damage by half @@ -92,7 +93,7 @@ if(health<=0) if(fragile) shatter(consumed) - else if(!dulled) + else if(!dulled && can_dull) dull() /obj/item/weapon/material/proc/shatter(var/consumed) diff --git a/code/game/objects/items/weapons/material/misc.dm b/code/game/objects/items/weapons/material/misc.dm index 9d8792dab49..6afacb30cb9 100644 --- a/code/game/objects/items/weapons/material/misc.dm +++ b/code/game/objects/items/weapons/material/misc.dm @@ -85,4 +85,37 @@ thrown_force_divisor = 0.25 // as above dulled_divisor = 0.75 //Still metal on a long pole w_class = ITEMSIZE_SMALL - attack_verb = list("slashed", "sliced", "cut", "clawed") \ No newline at end of file + attack_verb = list("slashed", "sliced", "cut", "clawed") + +/obj/item/weapon/material/snow/snowball + name = "loose packed snowball" + desc = "A fun snowball. Throw it at your friends!" + icon = 'icons/obj/weapons.dmi' + icon_state = "snowball" + default_material = MAT_SNOW + health = 1 + fragile = 1 + force_divisor = 0.01 + thrown_force_divisor = 0.10 + w_class = ITEMSIZE_SMALL + attack_verb = list("mushed", "splatted", "splooshed", "splushed") // Words that totally exist. + +/obj/item/weapon/material/snow/snowball/attack_self(mob/user as mob) + if(user.a_intent == I_HURT) + visible_message("[user] has smashed the snowball in their hand!", "You smash the snowball in your hand.") + var/atom/S = new /obj/item/stack/material/snow(user.loc) + del(src) + user.put_in_hands(S) + else + visible_message("[user] starts compacting the snowball.", "You start compacting the snowball.") + if(do_after(user, 2000)) + var/atom/S = new /obj/item/weapon/material/snow/snowball/reinforced(user.loc) + del(src) + user.put_in_hands(S) + +/obj/item/weapon/material/snow/snowball/reinforced + name = "snowball" + desc = "A well-formed and fun snowball. It looks kind of dangerous." + icon_state = "snowball-reinf" + force_divisor = 0.20 + thrown_force_divisor = 0.25 \ No newline at end of file diff --git a/code/game/objects/items/weapons/material/twohanded.dm b/code/game/objects/items/weapons/material/twohanded.dm index 3863e5a5174..624039c0667 100644 --- a/code/game/objects/items/weapons/material/twohanded.dm +++ b/code/game/objects/items/weapons/material/twohanded.dm @@ -145,6 +145,7 @@ base_icon = "spearglass" name = "spear" desc = "A haphazardly-constructed yet still deadly weapon of ancient design." + description_info = "This weapon can strike from two tiles away, and over certain objects such as tables, or other people." force = 10 w_class = ITEMSIZE_LARGE slot_flags = SLOT_BACK @@ -158,4 +159,6 @@ attack_verb = list("attacked", "poked", "jabbed", "torn", "gored") default_material = "glass" applies_material_colour = 0 - fragile = 1 //It's a haphazard thing of glass, wire, and steel \ No newline at end of file + fragile = 1 //It's a haphazard thing of glass, wire, and steel + reach = 2 // Spears are long. + attackspeed = 14 \ No newline at end of file diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index 3d8a9f0b5cb..01ca1c77966 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -10,7 +10,9 @@ * Plant Bag * Sheet Snatcher * Cash Bag - * + * Chemistry Bag + Food Bag + * -Sayu */ @@ -261,3 +263,16 @@ w_class = ITEMSIZE_LARGE slowdown = 1 can_hold = list(/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/glass/bottle) + + // ----------------------------- + // Food Bag + // ----------------------------- +/obj/item/weapon/storage/bag/food + name = "food bag" + icon = 'icons/obj/storage.dmi' + icon_state = "foodbag" + desc = "A bag for storing foods of all kinds." + max_storage_space = ITEMSIZE_COST_NORMAL * 25 + max_w_class = ITEMSIZE_NORMAL + w_class = ITEMSIZE_SMALL + can_hold = list(/obj/item/weapon/reagent_containers/food/snacks,/obj/item/weapon/reagent_containers/food/condiment) diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm index 3ceb940bbbe..ab9b1ba1736 100644 --- a/code/game/objects/items/weapons/storage/firstaid.dm +++ b/code/game/objects/items/weapons/storage/firstaid.dm @@ -149,6 +149,7 @@ new /obj/item/weapon/surgical/bonegel(src) new /obj/item/weapon/surgical/FixOVein(src) new /obj/item/stack/medical/advanced/bruise_pack(src) + new /obj/item/device/healthanalyzer/advanced(src) return /obj/item/weapon/storage/firstaid/clotting diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 732540571a7..690bba95f89 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -315,6 +315,12 @@ if(!src.toggle()) usr << "It won't budge!" +/obj/structure/closet/attack_ghost(mob/ghost) + if(ghost.client && ghost.client.inquisitive_ghost) + ghost.examinate(src) + if (!src.opened) + to_chat(ghost, "It contains: [english_list(contents)].") + /obj/structure/closet/verb/verb_toggleopen() set src in oview(1) set category = "Object" diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index 25d0e576ea8..bb828c90bdd 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -55,6 +55,8 @@ new /obj/item/weapon/storage/box/mousetraps(src) new /obj/item/clothing/under/rank/chef(src) new /obj/item/clothing/head/chefhat(src) + new /obj/item/weapon/storage/bag/food(src) + new /obj/item/weapon/storage/bag/food(src) /* * Janitor diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index 5976c357036..e8fe1d4b3e7 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -140,7 +140,7 @@ /obj/structure/flora/skeleton name = "hanging skeleton model" - icon = 'icons/obj/plants.dmi' + icon = 'icons/obj/plants.dmi' //what an interesting plant icon_state = "hangskele" desc = "It's an anatomical model of a human skeletal system made of plaster." @@ -200,7 +200,7 @@ /obj/structure/flora/pottedplant/orientaltree name = "potted oriental tree" - desc = "This is a rather oriental style tree. It's flowers are bright pink." + desc = "This is a rather oriental style tree. Its flowers are bright pink." icon_state = "plant-10" /obj/structure/flora/pottedplant/smallcactus @@ -214,7 +214,7 @@ icon_state = "plant-12" /obj/structure/flora/pottedplant/sticky - name = "styicky potted plant" + name = "sticky potted plant" desc = "This is an odd plant. Its sticky leaves trap insects." icon_state = "plant-13" @@ -287,4 +287,4 @@ /obj/structure/flora/pottedplant/xmas name = "small christmas tree" desc = "This is a tiny well lit decorative christmas tree." - icon_state = "plant-xmas" \ No newline at end of file + icon_state = "plant-xmas" diff --git a/code/game/objects/structures/loot_piles.dm b/code/game/objects/structures/loot_piles.dm index 0d92af11b29..6db2e2d23ba 100644 --- a/code/game/objects/structures/loot_piles.dm +++ b/code/game/objects/structures/loot_piles.dm @@ -400,6 +400,7 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh /obj/item/device/universal_translator, /obj/item/device/aicard, /obj/item/borg/upgrade/jetpack, + /obj/item/borg/upgrade/advhealth, /obj/item/borg/upgrade/vtec, /obj/item/borg/upgrade/tasercooler, /obj/item/mecha_parts/mecha_equipment/weapon/energy/riggedlaser, diff --git a/code/game/turfs/simulated/outdoors/snow.dm b/code/game/turfs/simulated/outdoors/snow.dm index 22f9085a8c1..398fa0dc476 100644 --- a/code/game/turfs/simulated/outdoors/snow.dm +++ b/code/game/turfs/simulated/outdoors/snow.dm @@ -33,3 +33,11 @@ to_chat(user, "You decide to not finish removing \the [src].") else ..() + +/turf/simulated/floor/outdoors/snow/attack_hand(mob/user as mob) + visible_message("[user] starts scooping up some snow.", "You start scooping up some snow.") + if(do_after(user, 1 SECOND)) + var/obj/S = new /obj/item/stack/material/snow(user.loc) + user.put_in_hands(S) + visible_message("[user] scoops up a pile of snow.", "You scoop up a pile of snow.") + return \ No newline at end of file diff --git a/code/modules/admin/NewBan.dm b/code/modules/admin/NewBan.dm index a376fc040af..0b3899ad99f 100644 --- a/code/modules/admin/NewBan.dm +++ b/code/modules/admin/NewBan.dm @@ -23,7 +23,7 @@ var/savefile/Banlist .["desc"] = "\nReason: [Banlist["reason"]]\nExpires: [GetExp(Banlist["minutes"])]\nBy: [Banlist["bannedby"]][appeal]" else Banlist.cd = "/base/[ckey][id]" - .["desc"] = "\nReason: [Banlist["reason"]]\nExpires: PERMENANT\nBy: [Banlist["bannedby"]][appeal]" + .["desc"] = "\nReason: [Banlist["reason"]]\nExpires: PERMANENT\nBy: [Banlist["bannedby"]][appeal]" .["reason"] = "ckey/id" return . else @@ -49,7 +49,7 @@ var/savefile/Banlist else .["desc"] = "\nReason: [Banlist["reason"]]\nExpires: [GetExp(Banlist["minutes"])]\nBy: [Banlist["bannedby"]][appeal]" else - .["desc"] = "\nReason: [Banlist["reason"]]\nExpires: PERMENANT\nBy: [Banlist["bannedby"]][appeal]" + .["desc"] = "\nReason: [Banlist["reason"]]\nExpires: PERMANENT\nBy: [Banlist["bannedby"]][appeal]" .["reason"] = matches return . return 0 diff --git a/code/modules/client/preference_setup/loadout/loadout_eyes.dm b/code/modules/client/preference_setup/loadout/loadout_eyes.dm index 9058ad72115..b9f914ff388 100644 --- a/code/modules/client/preference_setup/loadout/loadout_eyes.dm +++ b/code/modules/client/preference_setup/loadout/loadout_eyes.dm @@ -57,7 +57,7 @@ /datum/gear/eyes/medical display_name = "Medical HUD (Medical)" path = /obj/item/clothing/glasses/hud/health - allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist") + allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Psychiatrist") /datum/gear/eyes/medical/prescriptionmed display_name = "Medical HUD, prescription (Medical)" diff --git a/code/modules/client/preference_setup/traits/trait_defines.dm b/code/modules/client/preference_setup/traits/trait_defines.dm index 86b8ede6f70..68941e49c89 100644 --- a/code/modules/client/preference_setup/traits/trait_defines.dm +++ b/code/modules/client/preference_setup/traits/trait_defines.dm @@ -183,6 +183,12 @@ desc = "Small spaces and tight quarters makes you feel distressed. Unfortunately both are rather common when living in space." modifier_type = /datum/modifier/trait/phobia/claustrophobe + +/datum/trait/modifier/mental/blennophobe + name = "Blennophobia" + desc = "Slimes are quite dangerous, but just the aspect of something being slimey is uncomfortable." + modifier_type = /datum/modifier/trait/phobia/blennophobe + /* // Uncomment this when/if these get finished. /datum/trait/modifier/mental/synthphobe @@ -239,4 +245,4 @@ name = "Promethean-phobic" desc = "Boilerplate racism for jellos goes here." mutually_exclusive = list(/datum/trait/modifier/mental/xenophobe) -*/ \ No newline at end of file +*/ diff --git a/code/modules/clothing/under/color.dm b/code/modules/clothing/under/color.dm index 7452b35aab6..cc5d7ed9171 100644 --- a/code/modules/clothing/under/color.dm +++ b/code/modules/clothing/under/color.dm @@ -5,7 +5,7 @@ /obj/item/clothing/under/color/blackf name = "feminine black jumpsuit" - desc = "It's very smart and in a ladies-size!" + desc = "It's very smart and in a ladies size!" icon_state = "black" worn_state = "blackf" @@ -32,7 +32,7 @@ /obj/item/clothing/under/color/orange name = "orange jumpsuit" - desc = "It's standardised prisoner-wear. Its suit sensors are stuck in the \"Fully On\" position." + desc = "It's standardized prisoner-wear. Its suit sensors are permanently set to the \"Tracking\" position." icon_state = "orange" has_sensor = 2 sensor_mode = 3 diff --git a/code/modules/clothing/under/jobs/civilian.dm b/code/modules/clothing/under/jobs/civilian.dm index a9757e30262..0a8f3d3c653 100644 --- a/code/modules/clothing/under/jobs/civilian.dm +++ b/code/modules/clothing/under/jobs/civilian.dm @@ -70,7 +70,7 @@ /obj/item/clothing/under/rank/clown name = "clown suit" - desc = "'HONK!'" + desc = "Honk!" icon_state = "clown" rolled_sleeves = -1 @@ -173,7 +173,7 @@ /obj/item/clothing/under/lawyer/oldman name = "Old Man's Suit" - desc = "A classic suit for the older gentleman with built in back support." + desc = "A classic suit for the older gentleman, with built in back support." icon_state = "oldman" item_state_slots = list(slot_r_hand_str = "johnny", slot_l_hand_str = "johnny") diff --git a/code/modules/flufftext/Dreaming.dm b/code/modules/flufftext/Dreaming.dm index c93bb863eb7..cbbfb4d11c5 100644 --- a/code/modules/flufftext/Dreaming.dm +++ b/code/modules/flufftext/Dreaming.dm @@ -14,7 +14,7 @@ var/list/dreams = list( "an Unathi","a Tajaran","the Station Intelligence core","the mining station","the research station","a beaker of strange liquid", "a Teshari", "a Diona nymph","the supermatter","Major Bill","a Morpheus ship with a ridiculous name","the Exodus","a star", "a Dionaea gestalt","the chapel","a distant scream","endless chittering noises","glowing eyes in the shadows","an empty glass", - "a disoriented Promethean","towers of plastic","a Gygax","a synthetic","a Man-Machine Interface","maintanence drones", + "a disoriented Promethean","towers of plastic","a Gygax","a synthetic","a Man-Machine Interface","maintenance drones", "unintelligible writings","a Fleet ship", ) diff --git a/code/modules/integrated_electronics/subtypes/memory.dm b/code/modules/integrated_electronics/subtypes/memory.dm index 40f617e62e7..94c4594f5b2 100644 --- a/code/modules/integrated_electronics/subtypes/memory.dm +++ b/code/modules/integrated_electronics/subtypes/memory.dm @@ -1,7 +1,7 @@ /obj/item/integrated_circuit/memory name = "memory chip" desc = "This tiny chip can store one piece of data." - icon_state = "memory" + icon_state = "memory1" complexity = 1 inputs = list() outputs = list() diff --git a/code/modules/materials/material_recipes.dm b/code/modules/materials/material_recipes.dm index 7408b692a73..ecc0f61d83d 100644 --- a/code/modules/materials/material_recipes.dm +++ b/code/modules/materials/material_recipes.dm @@ -162,4 +162,5 @@ )) /material/snow/generate_recipes() - return // Snowmen and snowballs may come here later. \ No newline at end of file + recipes = list() + recipes += new/datum/stack_recipe("snowball", /obj/item/weapon/material/snow/snowball, 1, time = 10) \ No newline at end of file diff --git a/code/modules/materials/materials.dm b/code/modules/materials/materials.dm index 1ce1eca2d81..ebb6fc56f39 100644 --- a/code/modules/materials/materials.dm +++ b/code/modules/materials/materials.dm @@ -735,7 +735,7 @@ var/list/name_to_material destruction_desc = "crumples" /material/snow - name = "snow" + name = MAT_SNOW stack_type = /obj/item/stack/material/snow flags = MATERIAL_BRITTLE icon_base = "solid" @@ -749,7 +749,7 @@ var/list/name_to_material melting_point = T0C+1 destruction_desc = "crumples" sheet_singular_name = "pile" - sheet_plural_name = "piles" + sheet_plural_name = "pile" //Just a bigger pile /material/cloth //todo name = "cloth" diff --git a/code/modules/mob/_modifiers/traits_phobias.dm b/code/modules/mob/_modifiers/traits_phobias.dm index 290875c5d66..eee514535c7 100644 --- a/code/modules/mob/_modifiers/traits_phobias.dm +++ b/code/modules/mob/_modifiers/traits_phobias.dm @@ -297,7 +297,7 @@ var/open_tiles_needed = 15 // Tends to be just right, as maint triggers this but hallways don't. - on_created_text = "You are terrified of tight spaces. Why did you come to space??" + on_created_text = "You are terrified of tight spaces. Why did you come to space?" on_expired_text = "Small rooms aren't so bad now." zero_fear_up = list( @@ -357,6 +357,90 @@ return fear_amount +/datum/modifier/trait/phobia/blennophobe + name = "blennophobia" + desc = "Slimes are quite dangerous, but just the aspect of something being slimey is uncomfortable." + fear_decay_rate = 1 + + on_created_text = "You are disgusted and horrified by slime." + on_expired_text = "You feel more... okay with slime." + + zero_fear_up = list( + "That's some slime!", + "There's slime right there!" + ) + zero_fear_down = list( + "The slime is out of sight and out of mind.", + "Clean. No more slime." + ) + + half_fear_up = list( + "The slimes might strike at any point!", + "The slime is still there!" + ) + half_fear_down = list( + "The slime is gone... right?", + "You can't see any slime right now, but you're still anxious." + ) + + full_fear_up = list( + "The slime is everywhere!", + "You're gonna get absorbed if you don't get out!" + ) + full_fear_down = list( + "There must be more of that slime somewhere...", + "No more of this slime, please...." + ) + +/datum/modifier/trait/phobia/blennophobe/should_fear() + if(holder.blinded) + return 0 // Can't fear what cannot be seen. + + var/fear_amount = 0 + for(var/atom/thing in view(5, holder)) // See haemophobia for why this is 5. + if(istype(thing, /obj/structure/blob)) // blobs are uncomfortable things + fear_amount += 3 + + if(istype(thing, /obj/effect/alien/resin)) // Resin's a bit slimy according to its own description. + fear_amount += 1 + + if(istype(thing, /obj/item/weed_extract)) + fear_amount += 1 + + if(istype(thing, /obj/effect/decal/cleanable/mucus)) // Blennophobia apparently includes mucus, so! + fear_amount += 2 + + if(istype(thing, /obj/item/slime_extract)) // Gooey. + fear_amount += 1 + + if(istype(thing, /obj/item/slime_cube)) // Also gooey, alongside harbinger of bad news. + fear_amount += 2 + + if(istype(thing, /obj/item/organ/internal/brain/slime)) + fear_amount += 2 + + if(istype(thing, /obj/item/clothing/head/collectable/slime)) // Some hats are spooky so people can be assholes with them. + fear_amount += 1 + + if(istype(thing, /mob/living/simple_animal/slime)) // An actual predatory specimen! + var/mob/living/simple_animal/slime/S = thing + if(S.stat == DEAD) // Dead slimes are somewhat less spook. + fear_amount += 4 + if(S.is_adult == TRUE) //big boy + fear_amount += 8 + else + fear_amount += 6 + + if(istype(thing, /mob/living/carbon/human)) + var/mob/living/carbon/human/S = thing + if(istype(S.species, /datum/species/skrell)) //Skrell ARE slimey. + fear_amount += 1 + if(istype(S.species, /datum/species/shapeshifter/promethean)) + fear_amount += 4 + else + return + return fear_amount + // Note for the below 'phobias' are of the xeno-phobic variety, and are less centered on pure fear as above, and more on a mix of distrust, fear, and disdainfulness. // As such, they are mechanically different than the fear-based phobias, in that instead of a buildup of fearful messages, it does intermittent messages specific to what holder sees. @@ -367,7 +451,7 @@ closely, waiting to strike." on_created_text = "You remain vigilant against the Alien." - on_expired_text = "Aliens aren't so bad afterall." + on_expired_text = "Aliens aren't so bad after all." var/last_message = null // world.time we last did a message. var/message_cooldown = 1 MINUTE @@ -442,7 +526,7 @@ desc = "Humans are bound to get us all killed with their reckless use of technology..." on_created_text = "You unfortunately are likely to have to deal with humans today." - on_expired_text = "Humans aren't so bad afterall." + on_expired_text = "Humans aren't so bad after all." /datum/modifier/trait/phobia/xenophobia/human/get_xenos() var/list/humans = list() @@ -471,7 +555,7 @@ desc = "The Skrell pretend that they are Humanity's enlightened allies, but you can see past that." on_created_text = "Hopefully no Skrell show up today." - on_expired_text = "Skrell aren't so bad afterall." + on_expired_text = "Skrell aren't so bad after all." /datum/modifier/trait/phobia/xenophobia/skrell/get_xenos() var/list/skrell = list() @@ -490,3 +574,4 @@ "WetSkrell was a mistake." ) return pick(generic_responses) + diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 52426454e22..03cec12f5e0 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -11,7 +11,7 @@ var/global/list/image/ghost_sightless_images = list() //this is a list of images desc = "It's a g-g-g-g-ghooooost!" //jinkies! icon = 'icons/mob/ghost.dmi' icon_state = "ghost" - layer = 4 + layer = 3.9 //Just below normal mobs stat = DEAD canmove = 0 blinded = 0 @@ -501,6 +501,16 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp src << "Temperature: [round(environment.temperature-T0C,0.1)]°C ([round(environment.temperature,0.1)]K)" src << "Heat Capacity: [round(environment.heat_capacity(),0.1)]" +/mob/observer/dead/verb/check_radiation() + set name = "Check Radiation" + set category = "Ghost" + + var/turf/t = get_turf(src) + if(t) + var/rads = radiation_repository.get_rads_at_turf(t) + to_chat(src, "Radiation level: [rads ? rads : "0"] Bq.") + + /mob/observer/dead/verb/become_mouse() set name = "Become mouse" set category = "Ghost" diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 61bded2e159..beb531f9018 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -39,6 +39,7 @@ var/virus_immune var/short_sighted // Permanent weldervision. var/blood_volume = 560 // Initial blood volume. + var/bloodloss_rate = 1 // Multiplier for how fast a species bleeds out. Higher = Faster var/hunger_factor = 0.05 // Multiplier for hunger. var/taste_sensitivity = TASTE_NORMAL // How sensitive the species is to minute tastes. diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm index 372451808e2..e7d1083e862 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -35,12 +35,14 @@ ambiguous_genders = TRUE gluttonous = 1 slowdown = 0.5 + total_health = 125 brute_mod = 0.85 burn_mod = 0.85 metabolic_rate = 0.85 item_slowdown_mod = 0.5 mob_size = MOB_LARGE blood_volume = 840 + bloodloss_rate = 0.75 num_alternate_languages = 3 secondary_langs = list(LANGUAGE_UNATHI) name_language = LANGUAGE_UNATHI @@ -235,6 +237,8 @@ flash_mod = 1.2 chemOD_mod = 0.9 + bloodloss_rate = 1.5 + ambiguous_genders = TRUE spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index f0ee069b88f..4bea07f479b 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -661,9 +661,9 @@ default behaviour is: /mob/living/Move(a, b, flag) if (buckled && buckled.loc != a) //not updating position - if (!buckled.anchored) + if(istype(buckled, /mob)) //If you're buckled to a mob, a la slime things, keep on rolling. return buckled.Move(a, b) - else + else //Otherwise, no running around for you. return 0 if (restrained()) diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index f0bfd1d69f9..93605228c05 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -37,8 +37,10 @@ var/list/mob_hat_cache = list() integrated_light_power = 3 local_transmit = 1 - can_pull_size = ITEMSIZE_NORMAL + can_pull_size = ITEMSIZE_NO_CONTAINER can_pull_mobs = MOB_PULL_SMALLER + can_enter_vent_with = list( + /obj) mob_bump_flag = SIMPLE_ANIMAL mob_swap_flags = SIMPLE_ANIMAL @@ -71,13 +73,22 @@ var/list/mob_hat_cache = list() module_type = /obj/item/weapon/robot_module/drone/construction hat_x_offset = 1 hat_y_offset = -12 - can_pull_size = ITEMSIZE_HUGE + can_pull_mobs = MOB_PULL_SAME + +/mob/living/silicon/robot/drone/mining + icon_state = "miningdrone" + item_state = "constructiondrone" + law_type = /datum/ai_laws/mining_drone + module_type = /obj/item/weapon/robot_module/drone/mining + hat_x_offset = 1 + hat_y_offset = -12 can_pull_mobs = MOB_PULL_SAME /mob/living/silicon/robot/drone/New() ..() + verbs += /mob/living/proc/ventcrawl verbs += /mob/living/proc/hide remove_language("Robot Talk") add_language("Robot Talk", 0) @@ -145,18 +156,18 @@ var/list/mob_hat_cache = list() if(user.a_intent == "help" && istype(W, /obj/item/clothing/head)) if(hat) - user << "\The [src] is already wearing \the [hat]." + to_chat(user, "\The [src] is already wearing \the [hat].") return user.unEquip(W) wear_hat(W) user.visible_message("\The [user] puts \the [W] on \the [src].") return else if(istype(W, /obj/item/borg/upgrade/)) - user << "\The [src] is not compatible with \the [W]." + to_chat(user, "\The [src] is not compatible with \the [W].") return else if (istype(W, /obj/item/weapon/crowbar)) - user << "\The [src] is hermetically sealed. You can't open the case." + to_chat(user, "\The [src] is hermetically sealed. You can't open the case.") return else if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) @@ -164,11 +175,11 @@ var/list/mob_hat_cache = list() if(stat == 2) if(!config.allow_drone_spawn || emagged || health < -35) //It's dead, Dave. - user << "The interface is fried, and a distressing burned smell wafts from the robot's interior. You're not rebooting this one." + to_chat(user, "The interface is fried, and a distressing burned smell wafts from the robot's interior. You're not rebooting this one.") return if(!allowed(usr)) - user << "Access denied." + to_chat(user, "Access denied.") return user.visible_message("\The [user] swipes \his ID card through \the [src], attempting to reboot it.", ">You swipe your ID card through \the [src], attempting to reboot it.") @@ -189,7 +200,7 @@ var/list/mob_hat_cache = list() if(allowed(usr)) shut_down() else - user << "Access denied." + to_chat(user, "Access denied.") return @@ -197,16 +208,16 @@ var/list/mob_hat_cache = list() /mob/living/silicon/robot/drone/emag_act(var/remaining_charges, var/mob/user) if(!client || stat == 2) - user << "There's not much point subverting this heap of junk." + to_chat(user, "There's not much point subverting this heap of junk.") return if(emagged) - src << "\The [user] attempts to load subversive software into you, but your hacked subroutines ignore the attempt." - user << "You attempt to subvert [src], but the sequencer has no effect." + to_chat(user, "\The [user] attempts to load subversive software into you, but your hacked subroutines ignore the attempt.") + to_chat(user, "You attempt to subvert [src], but the sequencer has no effect.") return - user << "You swipe the sequencer across [src]'s interface and watch its eyes flicker." - src << "You feel a sudden burst of malware loaded into your execute-as-root buffer. Your tiny brain methodically parses, loads and executes the script." + to_chat(user, "You swipe the sequencer across [src]'s interface and watch its eyes flicker.") + to_chat(user, "You feel a sudden burst of malware loaded into your execute-as-root buffer. Your tiny brain methodically parses, loads and executes the script.") message_admins("[key_name_admin(user)] emagged drone [key_name_admin(src)]. Laws overridden.") log_game("[key_name(user)] emagged drone [key_name(src)]. Laws overridden.") @@ -337,3 +348,11 @@ var/list/mob_hat_cache = list() /mob/living/silicon/robot/drone/construction/updatename() real_name = "construction drone ([rand(100,999)])" name = real_name + +/mob/living/silicon/robot/drone/mining/init() + ..() + flavor_text = "It's a bulky mining drone stamped with a Grayson logo." + +/mob/living/silicon/robot/drone/mining/updatename() + real_name = "mining drone ([rand(100,999)])" + name = real_name diff --git a/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm b/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm index 4929b7f7136..b0a7543e119 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm @@ -30,6 +30,11 @@ fabricator_tag = "Upper Level Construction" drone_type = /mob/living/silicon/robot/drone/construction +/obj/machinery/drone_fabricator/mining + name = "mining drone fabricator" + fabricator_tag = "Upper Level Mining" + drone_type = /mob/living/silicon/robot/drone/mining + /obj/machinery/drone_fabricator/New() ..() diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 6b07aa8b0c8..379a79f222b 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -628,7 +628,7 @@ if(!opened) usr << "You must access the borgs internals!" else if(!src.module && U.require_module) - usr << "The borg must choose a module before he can be upgraded!" + usr << "The borg must choose a module before it can be upgraded!" else if(U.locked) usr << "The upgrade is locked and cannot be used yet!" else diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station.dm b/code/modules/mob/living/silicon/robot/robot_modules/station.dm index d3311d8776f..9098348e3ae 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station.dm @@ -31,6 +31,7 @@ var/global/list/robot_modules = list( var/list/datum/matter_synth/synths = list() var/obj/item/emag = null var/obj/item/borg/upgrade/jetpack = null + var/obj/item/borg/upgrade/advhealth = null var/list/subsystems = list() var/list/obj/item/borg/upgrade/supported_upgrades = list() @@ -871,4 +872,17 @@ var/global/list/robot_modules = list( var/obj/item/device/lightreplacer/LR = locate() in src.modules LR.Charge(R, amount) ..() - return \ No newline at end of file + return + +/obj/item/weapon/robot_module/drone/mining + name = "miner drone module" + channels = list("Supply" = 1) + networks = list(NETWORK_MINE) + +/obj/item/weapon/robot_module/drone/mining/New() + ..() + src.modules += new /obj/item/borg/sight/material(src) + src.modules += new /obj/item/weapon/pickaxe/borgdrill(src) + src.modules += new /obj/item/weapon/storage/bag/ore(src) + src.modules += new /obj/item/weapon/storage/bag/sheetsnatcher/borg(src) + src.emag = new /obj/item/weapon/pickaxe/diamonddrill(src) diff --git a/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm b/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm index f769cb29ab2..9967fa67dcf 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm @@ -141,7 +141,7 @@ /obj/item/weapon/robot_module/robot/syndicate/combat_medic/New(var/mob/living/silicon/robot/R) ..() src.modules += new /obj/item/borg/sight/hud/med(src) - src.modules += new /obj/item/device/healthanalyzer(src) + src.modules += new /obj/item/device/healthanalyzer/advanced(src) src.modules += new /obj/item/weapon/reagent_containers/borghypo/merc(src) // Surgery things. diff --git a/code/modules/organs/blood.dm b/code/modules/organs/blood.dm index 214038c37ef..230ac334772 100644 --- a/code/modules/organs/blood.dm +++ b/code/modules/organs/blood.dm @@ -143,6 +143,9 @@ var/const/CE_STABLE_THRESHOLD = 0.5 var/blood_max = 0 var/blood_loss_divisor = 30 //lower factor = more blood loss + // Some species bleed out differently + blood_loss_divisor /= species.bloodloss_rate + // Some modifiers can make bleeding better or worse. Higher multiplers = more bleeding. var/blood_loss_modifier_multiplier = 1.0 for(var/datum/modifier/M in modifiers) diff --git a/code/modules/power/fusion/core/_core.dm b/code/modules/power/fusion/core/_core.dm index 74da4e4acbc..60af67cf92c 100644 --- a/code/modules/power/fusion/core/_core.dm +++ b/code/modules/power/fusion/core/_core.dm @@ -41,7 +41,12 @@ var/list/fusion_cores = list() /obj/machinery/power/fusion_core/process() if((stat & BROKEN) || !powernet || !owned_field) Shutdown() - + if(owned_field) + spawn(1) + owned_field.stability_monitor() + owned_field.radiation_scale() + owned_field.temp_dump() + owned_field.temp_color() /obj/machinery/power/fusion_core/Topic(href, href_list) if(..()) return 1 diff --git a/code/modules/power/fusion/core/core_field.dm b/code/modules/power/fusion/core/core_field.dm index 587ec7637e6..c882a95cccd 100644 --- a/code/modules/power/fusion/core/core_field.dm +++ b/code/modules/power/fusion/core/core_field.dm @@ -1,4 +1,6 @@ #define FUSION_ENERGY_PER_K 20 +#define FUSION_MAX_ENVIRO_HEAT 5000 //raise this if you want the reactor to dump more energy into the atmosphere +#define PLASMA_TEMP_RADIATION_DIVISIOR 15 //radiation divisior. plasma temp / divisor = radiation. /obj/effect/fusion_em_field name = "electromagnetic field" @@ -7,7 +9,7 @@ icon_state = "emfield_s1" alpha = 50 layer = 4 - light_color = COLOR_BLUE + light_color = "#cc7700" var/size = 1 var/energy = 0 @@ -16,6 +18,7 @@ var/field_strength = 0.01 var/tick_instability = 0 var/percent_unstable = 0 + var/stable = 1 var/obj/machinery/power/fusion_core/owned_core var/list/dormant_reactant_quantities = list() @@ -33,8 +36,8 @@ var/light_min_range = 2 var/light_min_power = 3 - var/light_max_range = 10 - var/light_max_power = 10 + var/light_max_range = 5 + var/light_max_power = 5 var/last_range var/last_power @@ -173,8 +176,6 @@ check_instability() Radiate() - if(radiation) - radiation_repository.radiate(src, radiation) return 1 /obj/effect/fusion_em_field/proc/check_instability() @@ -200,9 +201,10 @@ var/flare var/fuel_loss var/rupture - if(percent_unstable < 0.7) + if(percent_unstable < 0.2) visible_message("\The [src] ripples uneasily, like a disturbed pond.") fuel_loss = prob(5) + flare = prob(50) else if(percent_unstable < 0.9) visible_message("\The [src] undulates violently, shedding plumes of plasma!") flare = prob(50) @@ -238,6 +240,7 @@ set_light(15, 15, "#CCCCFF") empulse(get_turf(src), ceil(plasma_temperature/1000), ceil(plasma_temperature/300)) sleep(5) + global_announcer.autosay("WARNING: FIELD RUPTURE IMMINENT!", "Containment Monitor") RadiateAll() explosion(get_turf(owned_core),-1,-1,8,10) // Blow out all the windows. return @@ -318,12 +321,6 @@ tick_instability += rand(15,30) AM.emp_act(empsev) - if(owned_core && owned_core.loc) - var/datum/gas_mixture/environment = owned_core.loc.return_air() - if(environment && environment.temperature < (T0C+1000)) // Putting an upper bound on it to stop it being used in a TEG. - environment.add_thermal_energy(plasma_temperature*20000) - radiation = 0 - /obj/effect/fusion_em_field/proc/change_size(var/newsize = 1) var/changed = 0 switch(newsize) @@ -490,5 +487,59 @@ AddEnergy(Proj.damage) update_icon() return 0 +//All procs below this point are called in _core.dm, starting at line 41. +//Stability monitoring. Gives radio annoucements if field stability is below 80% +/obj/effect/fusion_em_field/proc/stability_monitor() + var/warnpoint = 0.10 + var/warnmessage = "Warning! Field unstable! Instability at [percent_unstable * 100]%, plasma temperature at [plasma_temperature + 295]k." + var/stablemessage = "Containment field returning to stable conditions." -#undef FUSION_HEAT_CAP \ No newline at end of file + if(percent_unstable >= warnpoint) + global_announcer.autosay(warnmessage, "Field Stability Monitor", "Engineering") + stable = 0 + sleep(20 SECONDS) + return + if(percent_unstable < warnpoint && stable == 0) + global_announcer.autosay(stablemessage, "Field Stability Monitor", "Engineering") + stable = 1 + return + +//Reaction radiation is fairly buggy and there's at least three procs dealing with radiation here, this is to ensure constant radiation output. +/obj/effect/fusion_em_field/proc/radiation_scale() + radiation_repository.radiate(src, 2 + plasma_temperature / PLASMA_TEMP_RADIATION_DIVISIOR) + +//Somehow fixing the radiation issue managed to break this, but moving it to it's own proc seemed to have fixed it. I don't know. +/obj/effect/fusion_em_field/proc/temp_dump() + if(owned_core && owned_core.loc) + var/datum/gas_mixture/environment = owned_core.loc.return_air() + if(environment && environment.temperature < (T0C+FUSION_MAX_ENVIRO_HEAT)) + environment.add_thermal_energy(plasma_temperature*20000) + +//Temperature changes depending on color. +/obj/effect/fusion_em_field/proc/temp_color() + if(plasma_temperature > 60000) //high ultraviolet - magenta + light_color = "#cc005f" + light_max_range = 25 + light_max_power = 10 + else if(plasma_temperature > 12000) //ultraviolet - blue + light_color = "#1b00cc" + light_max_range = 20 + light_max_power = 10 + else if(plasma_temperature > 8000) //nearing ultraviolet - cyan + light_color = "#00cccc" + light_max_range = 15 + light_max_power = 10 + else if(plasma_temperature > 4000) // green + light_color = "#1ab705" + light_max_range = 10 + light_max_power = 10 + else if(plasma_temperature <= 4000) //orange + light_color = "#cc7700" + light_max_range = 5 + light_max_power = 5 + return + + +#undef FUSION_HEAT_CAP +#undef FUSION_MAX_ENVIRO_HEAT +#undef PLASMA_TEMP_RADIATION_DIVISIOR \ No newline at end of file diff --git a/code/modules/power/fusion/fusion_reactions.dm b/code/modules/power/fusion/fusion_reactions.dm index f447164ea43..38f73812f99 100644 --- a/code/modules/power/fusion/fusion_reactions.dm +++ b/code/modules/power/fusion/fusion_reactions.dm @@ -48,14 +48,13 @@ proc/get_fusion_reaction(var/p_react, var/s_react, var/m_energy) s_react = "deuterium" energy_consumption = 1 energy_production = 2 - // Advanced production reactions (todo) + /decl/fusion_reaction/deuterium_helium p_react = "deuterium" s_react = "helium-3" energy_consumption = 1 energy_production = 5 - radiation = 2 /decl/fusion_reaction/deuterium_tritium p_react = "deuterium" @@ -64,7 +63,6 @@ proc/get_fusion_reaction(var/p_react, var/s_react, var/m_energy) energy_production = 1 products = list("helium-3" = 1) instability = 0.5 - radiation = 3 /decl/fusion_reaction/deuterium_lithium p_react = "deuterium" diff --git a/code/modules/power/fusion/fusion_reagents.dm b/code/modules/power/fusion/fusion_reagents.dm new file mode 100644 index 00000000000..875bf63fee0 --- /dev/null +++ b/code/modules/power/fusion/fusion_reagents.dm @@ -0,0 +1,8 @@ +//Additional fusion reagents. These likely don't have any other use aside from the RUST, but if you want to make stuff with 'em, be my guest. + +/datum/reagent/helium3 + name = "helium-3" + description = "A colorless, odorless, tasteless and generally inert gas used in fusion reactors. Non-radioactive." + id = "helium-3" + reagent_state = GAS + color = "#808080" \ No newline at end of file diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index d6ae824fd1e..2c73ebd641c 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -1,7 +1,7 @@ // It.. uses a lot of power. Everything under power is engineering stuff, at least. /obj/machinery/computer/gravity_control_computer - name = "Gravity Generator Control" + name = "gravity generator control" desc = "A computer to control a local gravity generator. Qualified personnel only." icon_state = "airtunnel0e" anchored = 1 @@ -10,7 +10,7 @@ /obj/machinery/gravity_generator/ - name = "Gravitational Generator" + name = "gravitational generator" desc = "A device which produces a gravaton field when set up." icon = 'icons/obj/singularity.dmi' icon_state = "TheSingGen" @@ -94,7 +94,7 @@ else dat += "[A]
" - dat += "
Maintainence Functions:
" + dat += "
Maintenance Functions:
" if(gravity_generator:on) dat += " TURN GRAVITY GENERATOR OFF. " else diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 100aa43165d..2c2a3966a36 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -29,7 +29,8 @@ //Placeholder for effect that trigger on eating that aren't tied to reagents. /obj/item/weapon/reagent_containers/food/snacks/proc/On_Consume(var/mob/M) - if(!usr) return + if(!usr) + usr = M if(!reagents.total_volume) M.visible_message("[M] finishes eating \the [src].","You finish eating \the [src].") usr.drop_from_inventory(src) //so icons update :[ @@ -224,7 +225,7 @@ return user.visible_message("[user] nibbles away at \the [src].","You nibble away at \the [src].") bitecount++ - if(reagents && user.reagents) + if(reagents) reagents.trans_to_mob(user, bitesize, CHEM_INGEST) spawn(5) if(!src && !user.client) diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 86f16d4cb7a..5ec7aae23a4 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -15,57 +15,55 @@ attackby(obj/item/weapon/W as obj, mob/user as mob) return - New() - var/datum/reagents/R = new/datum/reagents(1000) - reagents = R - R.my_atom = src - if (!possible_transfer_amounts) - src.verbs -= /obj/structure/reagent_dispensers/verb/set_APTFT - ..() +/obj/structure/reagent_dispensers/New() + var/datum/reagents/R = new/datum/reagents(5000) + reagents = R + R.my_atom = src + if (!possible_transfer_amounts) + src.verbs -= /obj/structure/reagent_dispensers/verb/set_APTFT + ..() - examine(mob/user) - if(!..(user, 2)) +/obj/structure/reagent_dispensers/examine(mob/user) + if(!..(user, 2)) + return + user << "It contains:" + if(reagents && reagents.reagent_list.len) + for(var/datum/reagent/R in reagents.reagent_list) + user << "[R.volume] units of [R.name]" + else + user << "Nothing." + +/obj/structure/reagent_dispensers/verb/set_APTFT() //set amount_per_transfer_from_this + set name = "Set transfer amount" + set category = "Object" + set src in view(1) + var/N = input("Amount per transfer from this:","[src]") as null|anything in possible_transfer_amounts + if (N) + amount_per_transfer_from_this = N + +/obj/structure/reagent_dispensers/ex_act(severity) + switch(severity) + if(1.0) + qdel(src) return - user << "It contains:" - if(reagents && reagents.reagent_list.len) - for(var/datum/reagent/R in reagents.reagent_list) - user << "[R.volume] units of [R.name]" - else - user << "Nothing." - - verb/set_APTFT() //set amount_per_transfer_from_this - set name = "Set transfer amount" - set category = "Object" - set src in view(1) - var/N = input("Amount per transfer from this:","[src]") as null|anything in possible_transfer_amounts - if (N) - amount_per_transfer_from_this = N - - ex_act(severity) - switch(severity) - if(1.0) + if(2.0) + if (prob(50)) + new /obj/effect/effect/water(src.loc) qdel(src) return - if(2.0) - if (prob(50)) - new /obj/effect/effect/water(src.loc) - qdel(src) - return - if(3.0) - if (prob(5)) - new /obj/effect/effect/water(src.loc) - qdel(src) - return - else - return + if(3.0) + if (prob(5)) + new /obj/effect/effect/water(src.loc) + qdel(src) + return + else + return /obj/structure/reagent_dispensers/blob_act() qdel(src) - - //Dispensers /obj/structure/reagent_dispensers/watertank name = "watertank" @@ -73,16 +71,19 @@ icon = 'icons/obj/objects.dmi' icon_state = "watertank" amount_per_transfer_from_this = 10 - New() - ..() - reagents.add_reagent("water",1000) -/obj/structure/reagent_dispensers/watertank/high/New() +/obj/structure/reagent_dispensers/watertank/New() + ..() + reagents.add_reagent("water", 1000) + +/obj/structure/reagent_dispensers/watertank/high name = "high-capacity water tank" desc = "A highly-pressurized water tank made to hold vast amounts of water.." icon_state = "watertank_high" + +/obj/structure/reagent_dispensers/watertank/high/New() ..() - reagents.add_reagent("water",4000) + reagents.add_reagent("water", 4000) /obj/structure/reagent_dispensers/fueltank name = "fueltank" @@ -92,9 +93,10 @@ amount_per_transfer_from_this = 10 var/modded = 0 var/obj/item/device/assembly_holder/rig = null - New() - ..() - reagents.add_reagent("fuel",1000) + +/obj/structure/reagent_dispensers/fueltank/New() + ..() + reagents.add_reagent("fuel",1000) /obj/structure/reagent_dispensers/fueltank/examine(mob/user) if(!..(user, 2)) @@ -201,9 +203,10 @@ anchored = 1 density = 0 amount_per_transfer_from_this = 45 - New() - ..() - reagents.add_reagent("condensedcapsaicin",1000) + +/obj/structure/reagent_dispensers/peppertank/New() + ..() + reagents.add_reagent("condensedcapsaicin",1000) /obj/structure/reagent_dispensers/water_cooler @@ -347,9 +350,10 @@ icon = 'icons/obj/objects.dmi' icon_state = "beertankTEMP" amount_per_transfer_from_this = 10 - New() - ..() - reagents.add_reagent("beer",1000) + +/obj/structure/reagent_dispensers/beerkeg/New() + ..() + reagents.add_reagent("beer",1000) /obj/structure/reagent_dispensers/beerkeg/fakenuke name = "nuclear beer keg" @@ -365,9 +369,9 @@ amount_per_transfer_from_this = 10 anchored = 1 - New() - ..() - reagents.add_reagent("virusfood", 1000) +/obj/structure/reagent_dispensers/virusfood/New() + ..() + reagents.add_reagent("virusfood", 1000) /obj/structure/reagent_dispensers/acid name = "Sulphuric Acid Dispenser" @@ -377,6 +381,6 @@ amount_per_transfer_from_this = 10 anchored = 1 - New() - ..() - reagents.add_reagent("sacid", 1000) +/obj/structure/reagent_dispensers/acid/New() + ..() + reagents.add_reagent("sacid", 1000) diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 6ed6016d285..d33098381b4 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -752,7 +752,7 @@ other types of metals and chemistry for reagents). sort_string = "VABAI" /datum/design/item/communicator - name = "Communcator" + name = "Communicator" id = "communicator" req_tech = list(TECH_DATA = 2, TECH_MAGNET = 2) materials = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 500) diff --git a/code/modules/research/prosfab_designs.dm b/code/modules/research/prosfab_designs.dm index 7a191f489fc..e904ff1b5e5 100644 --- a/code/modules/research/prosfab_designs.dm +++ b/code/modules/research/prosfab_designs.dm @@ -332,6 +332,13 @@ materials = list(DEFAULT_WALL_MATERIAL = 7500, "phoron" = 11250, "uranium" = 15000) build_path = /obj/item/borg/upgrade/jetpack +/datum/design/item/prosfab/robot_upgrade/advhealth + name = "Advanced Health Analyzer Module" + desc = "An advanced health analyzer suitable for diagnosing more serious injuries." + id = "borg_advhealth_module" + materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 6500, "diamond" = 350) + build_path = /obj/item/borg/upgrade/advhealth + /datum/design/item/prosfab/robot_upgrade/syndicate name = "Scrambled Equipment Module" desc = "Allows for the construction of lethal upgrades for cyborgs." diff --git a/html/changelogs/example - Copy.yml b/html/changelogs/example - Copy.yml new file mode 100644 index 00000000000..80056ef0ead --- /dev/null +++ b/html/changelogs/example - Copy.yml @@ -0,0 +1,5 @@ +author: Belsima + +delete-after: True + + - tweak: "Maintenance drones may now ventcrawl." diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index 0c076ccdcb9..75249fb4abd 100644 Binary files a/icons/mob/hud.dmi and b/icons/mob/hud.dmi differ diff --git a/icons/mob/pai.dmi b/icons/mob/pai.dmi index 76d1f1771c2..23744fddda6 100644 Binary files a/icons/mob/pai.dmi and b/icons/mob/pai.dmi differ diff --git a/icons/mob/robots.dmi b/icons/mob/robots.dmi index 35e6df449f8..a331158939b 100644 Binary files a/icons/mob/robots.dmi and b/icons/mob/robots.dmi differ diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 8acc10a4fb3..f74c37b6a61 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ diff --git a/icons/obj/electronic_assemblies.dmi b/icons/obj/electronic_assemblies.dmi index 6da1794a547..5799d85866f 100644 Binary files a/icons/obj/electronic_assemblies.dmi and b/icons/obj/electronic_assemblies.dmi differ diff --git a/icons/obj/stacks.dmi b/icons/obj/stacks.dmi index 5cdff4a1f33..51465980512 100644 Binary files a/icons/obj/stacks.dmi and b/icons/obj/stacks.dmi differ diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi index 8774330e7f1..d15a86e2f38 100644 Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi index cf755227ec7..1153c2439f4 100644 Binary files a/icons/obj/weapons.dmi and b/icons/obj/weapons.dmi differ diff --git a/maps/northern_star/polaris-1.dmm b/maps/northern_star/polaris-1.dmm index bcc8f952f12..554df93be76 100644 --- a/maps/northern_star/polaris-1.dmm +++ b/maps/northern_star/polaris-1.dmm @@ -6198,7 +6198,7 @@ "cpj" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/quartermaster/foyer) "cpk" = (/obj/structure/bed/chair{dir = 8},/obj/effect/floor_decal/corner/brown{dir = 6},/turf/simulated/floor/tiled,/area/quartermaster/foyer) "cpl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/quartermaster/delivery) -"cpm" = (/obj/structure/table/steel,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/effect/floor_decal/corner/brown{dir = 9},/turf/simulated/floor/tiled,/area/quartermaster/delivery) +"cpm" = (/obj/structure/table/steel,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/effect/floor_decal/corner/brown{dir = 9},/obj/item/weapon/material/butterfly/boxcutter,/turf/simulated/floor/tiled,/area/quartermaster/delivery) "cpn" = (/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; pixel_x = 30; pixel_y = -1},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled,/area/quartermaster/delivery) "cpo" = (/obj/machinery/conveyor{dir = 1; id = "packageSort1"},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plating,/area/quartermaster/delivery) "cpp" = (/obj/structure/table/standard,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/machinery/newscaster{pixel_x = -30},/turf/simulated/floor/tiled,/area/storage/primary) @@ -6640,7 +6640,7 @@ "cxJ" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/tiled,/area/hallway/secondary/docking_hallway) "cxK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/vacant/vacant_shop) "cxL" = (/obj/item/frame/light,/turf/simulated/floor/tiled,/area/vacant/vacant_shop) -"cxM" = (/obj/structure/table/marble,/obj/item/weapon/hand_labeler,/obj/item/weapon/reagent_containers/food/condiment/small/sugar,/obj/item/weapon/reagent_containers/food/drinks/britcup,/obj/item/weapon/reagent_containers/food/drinks/britcup,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/tiled/yellow,/area/crew_quarters/coffee_shop) +"cxM" = (/obj/structure/table/marble,/obj/item/weapon/hand_labeler,/obj/item/weapon/reagent_containers/food/condiment/small/sugar,/obj/item/weapon/reagent_containers/food/drinks/britcup,/obj/item/weapon/reagent_containers/food/drinks/britcup,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/item/weapon/reagent_containers/food/drinks/teapot,/turf/simulated/floor/tiled/yellow,/area/crew_quarters/coffee_shop) "cxN" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/turf/simulated/floor/tiled/white,/area/crew_quarters/coffee_shop) "cxO" = (/obj/item/weapon/stool/padded,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/coffee_shop) "cxP" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/coffee_shop) diff --git a/maps/southern_cross/southern_cross-1.dmm b/maps/southern_cross/southern_cross-1.dmm index 9263229dc2f..6fa854c0894 100644 --- a/maps/southern_cross/southern_cross-1.dmm +++ b/maps/southern_cross/southern_cross-1.dmm @@ -6637,7 +6637,7 @@ "cxG" = (/obj/machinery/conveyor{dir = 1; id = "packageSort1"},/obj/random/junk,/obj/random/junk,/obj/random/junk,/turf/simulated/floor/plating,/area/quartermaster/delivery) "cxH" = (/obj/item/weapon/stool,/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor/tiled,/area/quartermaster/delivery) "cxI" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled,/area/quartermaster/delivery) -"cxJ" = (/obj/machinery/camera/network/cargo{c_tag = "CRG - Delivery Office"; dir = 8; name = "security camera"},/obj/structure/table/steel,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/effect/floor_decal/borderfloor/corner{dir = 4},/obj/effect/floor_decal/corner/brown/bordercorner{dir = 4},/turf/simulated/floor/tiled,/area/quartermaster/delivery) +"cxJ" = (/obj/machinery/camera/network/cargo{c_tag = "CRG - Delivery Office"; dir = 8; name = "security camera"},/obj/structure/table/steel,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/effect/floor_decal/borderfloor/corner{dir = 4},/obj/effect/floor_decal/corner/brown/bordercorner{dir = 4},/obj/item/weapon/material/butterfly/boxcutter,/turf/simulated/floor/tiled,/area/quartermaster/delivery) "cxK" = (/obj/machinery/light{dir = 8},/obj/effect/floor_decal/borderfloor/corner{dir = 1},/obj/effect/floor_decal/corner/brown/bordercorner{dir = 1},/turf/simulated/floor/tiled,/area/quartermaster/foyer) "cxL" = (/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor/tiled,/area/quartermaster/foyer) "cxM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/quartermaster/foyer) @@ -7769,7 +7769,7 @@ "cTu" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/yellow,/area/crew_quarters/coffee_shop) "cTv" = (/turf/simulated/floor/tiled/yellow,/area/crew_quarters/coffee_shop) "cTw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/yellow,/area/crew_quarters/coffee_shop) -"cTx" = (/obj/structure/table/marble,/obj/item/weapon/reagent_containers/food/drinks/britcup,/obj/item/weapon/reagent_containers/food/drinks/britcup,/obj/item/weapon/reagent_containers/food/drinks/britcup,/obj/machinery/alarm{dir = 8; pixel_x = 22; pixel_y = 0},/turf/simulated/floor/tiled/yellow,/area/crew_quarters/coffee_shop) +"cTx" = (/obj/structure/table/marble,/obj/item/weapon/reagent_containers/food/drinks/britcup,/obj/item/weapon/reagent_containers/food/drinks/britcup,/obj/item/weapon/reagent_containers/food/drinks/britcup,/obj/machinery/alarm{dir = 8; pixel_x = 22; pixel_y = 0},/obj/item/weapon/reagent_containers/food/drinks/teapot,/turf/simulated/floor/tiled/yellow,/area/crew_quarters/coffee_shop) "cTy" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/crew_quarters/cafeteria) "cTz" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{req_access = null; req_one_access = list(5,12,25,27,28,35)},/turf/simulated/floor/plating,/area/crew_quarters/cafeteria) "cTA" = (/obj/structure/closet/crate/internals,/obj/random/tank,/obj/random/tank,/obj/random/tank,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/turf/simulated/floor/plating,/area/maintenance/medbay) @@ -10441,7 +10441,7 @@ "dSO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/catwalk,/turf/simulated/floor/airless,/area/solar/aftstarboardsolar) "dSP" = (/turf/space,/area/syndicate_station/thirddeck) "dSQ" = (/obj/effect/landmark/map_data{height = 3},/turf/space,/area/space) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11215,3 +11215,4 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa dSQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} + diff --git a/maps/submaps/cave_submaps/Scave1.dmm b/maps/submaps/cave_submaps/Scave1.dmm index 7b0775f5181..110fb5f6639 100644 --- a/maps/submaps/cave_submaps/Scave1.dmm +++ b/maps/submaps/cave_submaps/Scave1.dmm @@ -1,4 +1,21 @@ "a" = (/turf/template_noop,/area/template_noop) +"b" = (/turf/simulated/mineral,/area/submap/cave/Scave1) +"c" = (/obj/effect/spider/stickyweb,/turf/simulated/mineral/floor,/area/submap/cave/Scave1) +"d" = (/turf/simulated/mineral/floor,/area/submap/cave/Scave1) +"e" = (/obj/effect/spider/spiderling,/turf/simulated/mineral/floor,/area/submap/cave/Scave1) +"f" = (/obj/item/weapon/spacecash/c100,/obj/item/weapon/spacecash/c100,/turf/simulated/mineral/floor,/area/submap/cave/Scave1) +"g" = (/obj/item/weapon/spacecash/c100,/obj/item/weapon/spacecash/c100,/obj/item/weapon/spacecash/c100,/obj/effect/decal/remains,/turf/simulated/mineral/floor,/area/submap/cave/Scave1) +"h" = (/obj/item/weapon/grenade/spawnergrenade/spider,/turf/simulated/mineral/floor,/area/submap/cave/Scave1) +"i" = (/mob/living/simple_animal/hostile/giant_spider/hunter,/turf/simulated/mineral/floor,/area/submap/cave/Scave1) +"j" = (/obj/random/toolbox,/turf/simulated/mineral/floor,/area/submap/cave/Scave1) +"k" = (/mob/living/simple_animal/hostile/giant_spider,/turf/simulated/mineral/floor,/area/submap/cave/Scave1) +"l" = (/mob/living/simple_animal/hostile/giant_spider/nurse,/turf/simulated/mineral/floor,/area/submap/cave/Scave1) +"m" = (/obj/effect/decal/mecha_wreckage/ripley,/turf/simulated/mineral/floor,/area/submap/cave/Scave1) +"n" = (/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill,/turf/simulated/mineral/floor,/area/submap/cave/Scave1) +"o" = (/obj/item/device/flashlight,/turf/simulated/mineral/floor,/area/submap/cave/Scave1) +"p" = (/obj/effect/spider/stickyweb,/obj/effect/spider/stickyweb,/turf/simulated/mineral/floor,/area/submap/cave/Scave1) +"q" = (/obj/effect/spider/stickyweb,/mob/living/simple_animal/hostile/giant_spider/hunter,/turf/simulated/mineral/floor,/area/submap/cave/Scave1) +"r" = (/obj/effect/decal/remains,/turf/simulated/mineral/floor,/area/submap/cave/Scave1) "b" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/cave/Scave1) "c" = (/turf/simulated/mineral,/area/submap/cave/Scave1) "d" = (/obj/effect/spider/stickyweb,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/Scave1) @@ -24,6 +41,29 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaabbaaaaaaaaaaaaaaaaaaaaaaa aabbbbbbaabbbbbaaaaaaabbbbbaaa +abbbbbbbbbbbbbbbbbbbbbbbbbbaaa +aabbbbbbcbbbbbbbbbbbbbbbdbbbaa +aabbbbdeddbbbcccbbbbbdddeddbaa +aadbbfddddcbbdedbbbbbddddddbaa +aadbbgfbbdddddddbccedddbdedbba +aabbbbbbbddcdddddddddddbhibbaa +aabbbbbbdddbbbjcddddddbbbbbbaa +aabbbbbcdkdbbbbbbcdkddcbbbbaaa +aabbbbbcddcbbbbbbbddddcbbbaaaa +aabbbbbbidcbbbbbbbdlddcbbbaaaa +aabbbbbbdddbbbbbbmddddcbbbaaaa +aabbbbbbdcdbbbbbbnddddcbbbaaaa +aabbbbbbdddbbbbbbcddldcbbbaaaa +aadbbbbbddibbbbbbbccdddbbbaaaa +aaodbbbbddbbbbbbbbbkcddbbbaaaa +aaddbbbbdddbbbbbbbbbbddbbdaaaa +aadddpddddddbbbbbbbbdedbbdaaaa +aaddppcddddddqbcdddddcbbbdaaaa +aardbbbbbdddddddddddcbbbbdaaaa +aabbbbbbbbcdddcdddddcbbbbbaaaa +aabbbbbbbbbbbbbbbibbbbbbbbaaaa +aabbbbbbbbbbbbbbbbbbbbbbbbaaaa +aaaaabbbbabbbbbbbaabbbbbbaaaaa abbccccbbbbccbbbbbbbbbbcccbaaa aabccbbbdbbccbbbbcccbbbbebbbaa aabbbbefeebbbdddbcccbeeefeebaa diff --git a/maps/submaps/cave_submaps/cave_areas.dm b/maps/submaps/cave_submaps/cave_areas.dm index eca5ad2d6a9..18153abdc3e 100644 --- a/maps/submaps/cave_submaps/cave_areas.dm +++ b/maps/submaps/cave_submaps/cave_areas.dm @@ -19,4 +19,4 @@ /area/submap/cave/crashed_ufo name = "Crashed Alien Vessel" - requires_power = FALSE + requires_power = FALSE \ No newline at end of file diff --git a/maps/submaps/surface_submaps/Blackshuttledown.dmm b/maps/submaps/surface_submaps/Blackshuttledown.dmm new file mode 100644 index 00000000000..04d9db0a3ca --- /dev/null +++ b/maps/submaps/surface_submaps/Blackshuttledown.dmm @@ -0,0 +1,108 @@ +"aa" = (/turf/template_noop,/area/template_noop) +"ab" = (/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/Blackshuttledown) +"ac" = (/obj/effect/decal/remains/human,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/Blackshuttledown) +"ad" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/Blackshuttledown) +"ae" = (/obj/structure/flora/tree/sif,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/Blackshuttledown) +"af" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/Blackshuttledown) +"ag" = (/obj/structure/table/steel,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/Blackshuttledown) +"ah" = (/mob/living/simple_animal/hostile/syndicate/ranged{desc = "Dosen't look friendly in the slightest."; name = "Unknown Individual."; say_got_target = list("Looks like trouble!","Contact!","We've got company!","Perimeter Breached!!"); speak = list("One day the'll fix that damn engine..","Next time, We're hidding on the tropical beach planet.","Wish I had better equipment...","I knew I should have been a line chef...","Fuckin' helmet keeps fogging up.","Hate this blocky ass ship.")},/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/Blackshuttledown) +"ai" = (/turf/simulated/floor/outdoors/grass/sif/forest,/turf/simulated/shuttle/wall/dark{icon_state = "dark6"; name = "Unknown Shuttle"; tag = "icon-dark6"},/area/submap/Blackshuttledown) +"aj" = (/turf/simulated/shuttle/wall/dark{icon_state = "dark0"; name = "Unknown Shuttle"; tag = "icon-dark0"},/area/submap/Blackshuttledown) +"ak" = (/turf/simulated/floor/outdoors/grass/sif/forest,/turf/simulated/shuttle/wall/dark{icon_state = "dark10"; name = "Unknown Shuttle"; tag = "icon-dark10"},/area/submap/Blackshuttledown) +"al" = (/obj/machinery/door/airlock/external,/turf/simulated/shuttle/wall/dark{icon_state = "dark0"; name = "Unknown Shuttle"; tag = "icon-dark0"},/area/submap/Blackshuttledown) +"am" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/turf/simulated/shuttle/wall/dark{icon_state = "dark0"; name = "Unknown Shuttle"; tag = "icon-dark0"},/area/submap/Blackshuttledown) +"an" = (/obj/structure/shuttle/engine/propulsion{dir = 4; icon_state = "propulsion_l"},/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/Blackshuttledown) +"ao" = (/obj/machinery/light{dir = 1},/obj/structure/table/rack,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"ap" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aq" = (/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"ar" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"as" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"at" = (/obj/machinery/organ_printer/flesh,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"au" = (/turf/simulated/floor/tiled/steel,/turf/simulated/shuttle/wall/dark{icon_state = "dark5"; name = "Unknown Shuttle"; tag = "icon-dark5"},/area/submap/Blackshuttledown) +"av" = (/obj/structure/table/steel,/obj/item/weapon/gun/projectile/automatic/wt550,/obj/item/weapon/gun/projectile/automatic/p90,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aw" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"ax" = (/obj/machinery/optable,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"ay" = (/obj/machinery/bodyscanner{dir = 8},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"az" = (/turf/simulated/floor/tiled/steel,/turf/simulated/shuttle/wall/dark{icon_state = "dark9"; name = "Unknown Shuttle"; tag = "icon-dark9"},/area/submap/Blackshuttledown) +"aA" = (/turf/simulated/floor/tiled/steel,/turf/simulated/shuttle/wall/dark{icon_state = "dark6"; name = "Unknown Shuttle"; tag = "icon-dark6"},/area/submap/Blackshuttledown) +"aB" = (/mob/living/simple_animal/hostile/viscerator,/mob/living/simple_animal/hostile/viscerator,/mob/living/simple_animal/hostile/viscerator,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aC" = (/obj/structure/table/steel,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aD" = (/mob/living/simple_animal/hostile/syndicate/ranged{desc = "Dosen't look friendly in the slightest."; name = "Unknown Individual."; say_got_target = list("Looks like trouble!","Contact!","We've got company!","Perimeter Breached!!"); speak = list("One day the'll fix that damn engine..","Next time, We're hidding on the tropical beach planet.","Wish I had better equipment...","I knew I should have been a line chef...","Fuckin' helmet keeps fogging up.","Hate this blocky ass ship.")},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aE" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aF" = (/obj/structure/table/steel,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aG" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/surgery,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aH" = (/obj/structure/table/standard,/obj/item/weapon/tank/anesthetic,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aI" = (/obj/structure/table/standard,/obj/item/clothing/gloves/sterile,/obj/item/clothing/gloves/sterile,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aJ" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/spray/sterilizine,/obj/item/weapon/reagent_containers/spray/sterilizine,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aK" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/masks,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aL" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aM" = (/obj/structure/bed/chair/office/dark{dir = 1},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aN" = (/obj/machinery/door/airlock/security,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aO" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aP" = (/turf/simulated/floor/tiled/steel,/turf/simulated/shuttle/wall/dark{icon_state = "dark10"; name = "Unknown Shuttle"; tag = "icon-dark10"},/area/submap/Blackshuttledown) +"aQ" = (/obj/machinery/computer/communications,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aR" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aS" = (/obj/structure/table/steel,/obj/item/weapon/material/knife,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aT" = (/obj/structure/table/steel,/obj/random/toolbox,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aU" = (/obj/structure/table/steel,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aV" = (/obj/structure/window,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aW" = (/obj/item/weapon/stool,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aX" = (/obj/structure/table/steel,/obj/item/pizzabox,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aY" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aZ" = (/obj/machinery/power/apc{cell_type = /obj/item/weapon/cell/hyper; dir = 4; name = "Unknown APC"; pixel_x = 24},/turf/simulated/shuttle/wall/dark{icon_state = "dark0"; name = "Unknown Shuttle"; tag = "icon-dark0"},/area/submap/Blackshuttledown) +"ba" = (/obj/machinery/computer/area_atmos,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bb" = (/obj/structure/closet/toolcloset,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bc" = (/obj/machinery/portable_atmospherics/canister/empty/oxygen,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bd" = (/obj/machinery/atmospherics/pipe/tank/oxygen,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"be" = (/obj/structure/bed/chair/office/dark,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bf" = (/obj/structure/table/steel,/obj/item/weapon/gun/projectile/automatic/c20r,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bg" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bh" = (/mob/living/simple_animal/hostile/viscerator,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bi" = (/obj/structure/table/steel,/obj/item/weapon/gun/projectile/pistol,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bj" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/structure/bed,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bk" = (/mob/living/simple_animal/hostile/viscerator,/mob/living/simple_animal/hostile/viscerator,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bl" = (/obj/structure/table/steel,/obj/item/weapon/gun/projectile/pistol,/obj/item/weapon/gun/projectile/shotgun/pump,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bm" = (/obj/structure/toilet{dir = 1},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bn" = (/obj/machinery/light,/obj/structure/table/rack,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bo" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/machinery/light,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bp" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/item/toy/plushie/spider,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bq" = (/turf/simulated/floor/outdoors/grass/sif/forest,/turf/simulated/shuttle/wall/dark{icon_state = "dark5"; name = "Unknown Shuttle"; tag = "icon-dark5"},/area/submap/Blackshuttledown) +"br" = (/turf/simulated/floor/outdoors/grass/sif/forest,/turf/simulated/shuttle/wall/dark{icon_state = "dark9"; name = "Unknown Shuttle"; tag = "icon-dark9"},/area/submap/Blackshuttledown) + +(1,1,1) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaabababababacabababababababababababacabababababacabababababababababaa +aaababababababadababababababababababababababababababababababaeababacaa +aaabababababababababababababababababababababababababadabababababababaa +aaababaeabafafafababababaeabababababababababababababababababababababaa +aaabababababafafafabacababababagagagagagagabababababacabaeabababababaa +aaababababababafafababababababagahabababagabababababababababababababaa +aaabababababababaiajajajakababagabababahagabababaeaiajajajajakabababaa +aaabababababababajajajajajajajajajalalajajajajajajajajajajajamanababaa +aaababababaeababajajajajajajaoapajaqarajaqaqasaqatajajajajajamanababaa +aaabababababababauajajaqavajaqaqajawawajaqaxaqaqaqaqayajajazababababaa +aaabababababababaAajajaBaCajaqaqaqaqaqajaqaqaqaqaDaqaEajazabababababaa +aaabaeababababaAajaFajaqaFajaqaqaqaqaEajaGaHaqaqaIaJaKajababababaeabaa +aaabababababaAajaLaMajaNajajaqaqajajajajajajaOajajajajajaPabababababaa +aaabababababajaQaqaqajaqaqaqaqaqajaRaSaqaqaqaDaqajaTaTaUajaPababababaa +aaabababababaVaFaqaqajaLaqaqaqaEajaqaqaWaWaWaqaqajaFaqaqaqamanabababaa +aaabababababaVaFaqaqaOaqaqaqaqaqaOaqaqaXaFaFaqaqaYaqaqaqaqamanabababaa +aaabababababaVaFaqaqaOaqaqaqaqaqaOaqaqaFaFaFaqaqaYaqaqaqaqamanabababaa +aaabababababaVaFaqaqajaLaqaqaqaEajaqaqaWaWaWaqaqaZaqaqaqaDamanabababaa +aaabababababajbaaqaDajaqaqaqaqaqajaFaFaqaqaDaqaqajbbbcbdajazababababaa +aaabababababauajaLbeajaNajajaqaqajajajajajajaOajajajajajazabababababaa +aaababababababauajaFajaqbfajaqaqaqaqaEajbgaqaqaqaqaYaqajababababababaa +aaabaeabababababauajajbhbiajaqaqaqaqaqajbjaqbgaqbgajarajaPabaeabababaa +aaabababababababaAajajbkblajaqaDajawawajbgaqbgaqbgajbmajajaPababababaa +aaabababababababajajajajajajbnapajaqarajbgaqboaqbpajajajajamanabababaa +aaabababababababajajajajajajajajajalalajajajajajajajajajajamanabababaa +aaababaeababababbqajajajbrababagahabababagabababbqajajajajbrababababaa +aaabababafabababababaeababababagabababahagababababaeabababafafafababaa +aaababafafabacababababababababagagagagagagababababacababafafafafababaa +aaabafafafabababababababadabababababababababababababababafafafafababaa +aaababafafababacabababababababababababababababababababababafafabababaa +aaabababababababababaeababababababababacababababaeabababababababababaa +aaabababaeababababababababababababababababababababababababababaeababaa +aaababababababababababacababababababababababababadabacaeababababababaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} diff --git a/maps/submaps/surface_submaps/Boombase.dmm b/maps/submaps/surface_submaps/Boombase.dmm index ed1a2f9f9f4..14d5a3a9360 100644 --- a/maps/submaps/surface_submaps/Boombase.dmm +++ b/maps/submaps/surface_submaps/Boombase.dmm @@ -13,6 +13,7 @@ "m" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/steel,/area/submap/BoomBase) "n" = (/obj/effect/decal/cleanable/dirt,/obj/effect/spider,/obj/item/weapon/material/shard,/turf/simulated/floor/tiled/steel,/area/submap/BoomBase) "o" = (/turf/simulated/floor/tiled/steel,/area/submap/BoomBase) +"p" = (/mob/living/simple_animal/hostile/giant_spider/phorogenic{returns_home = 1},/turf/simulated/floor/tiled/steel,/area/submap/BoomBase) "p" = (/mob/living/simple_animal/hostile/giant_spider/phorogenic,/turf/simulated/floor/tiled/steel,/area/submap/BoomBase) "q" = (/obj/machinery/portable_atmospherics/canister/empty/phoron,/turf/simulated/floor/tiled/steel{tag = "icon-steel_dirty"; icon_state = "steel_dirty"},/area/submap/BoomBase) "r" = (/obj/machinery/portable_atmospherics/canister/empty/phoron,/obj/item/weapon/material/shard,/turf/simulated/floor/tiled/steel{tag = "icon-steel_dirty"; icon_state = "steel_dirty"},/area/submap/BoomBase) @@ -32,6 +33,7 @@ "F" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/steel{tag = "icon-burned2"; icon_state = "burned2"},/area/submap/BoomBase) "G" = (/obj/effect/decal/cleanable/ash,/turf/simulated/floor/outdoors/dirt,/area/submap/BoomBase) "H" = (/obj/structure/table,/turf/simulated/floor/tiled/steel,/area/submap/BoomBase) +"I" = (/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/giant_spider/phorogenic{returns_home = 1},/turf/simulated/floor/tiled/steel,/area/submap/BoomBase) "I" = (/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/giant_spider/phorogenic,/turf/simulated/floor/tiled/steel,/area/submap/BoomBase) "J" = (/turf/simulated/floor/tiled/steel{tag = "icon-burned2"; icon_state = "burned2"},/area/submap/BoomBase) "K" = (/turf/simulated/floor/outdoors/rocks,/area/submap/BoomBase) @@ -39,6 +41,15 @@ "M" = (/obj/effect/decal/remains/human,/obj/effect/decal/cleanable/ash,/turf/simulated/floor/tiled/steel{tag = "icon-steel_dirty"; icon_state = "steel_dirty"},/area/submap/BoomBase) "N" = (/obj/item/weapon/material/shard,/turf/simulated/floor/tiled/steel{tag = "icon-steel_dirty"; icon_state = "steel_dirty"},/area/submap/BoomBase) "O" = (/obj/item/device/transfer_valve,/turf/simulated/floor/outdoors/rocks,/area/submap/BoomBase) +"P" = (/mob/living/simple_animal/hostile/giant_spider/webslinger{returns_home = 1},/turf/simulated/floor/outdoors/rocks,/area/submap/BoomBase) +"Q" = (/obj/item/weapon/material/shard,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/BoomBase) +"R" = (/obj/effect/decal/cleanable/ash,/turf/simulated/floor/plating,/area/submap/BoomBase) +"S" = (/obj/effect/decal/cleanable/ash,/turf/simulated/floor/tiled/steel,/area/submap/BoomBase) +"T" = (/obj/effect/spider/stickyweb,/obj/item/weapon/material/shard,/mob/living/simple_animal/hostile/giant_spider/phorogenic{returns_home = 1},/turf/simulated/floor/tiled/steel,/area/submap/BoomBase) +"U" = (/obj/effect/spider/stickyweb,/turf/simulated/floor/tiled/steel,/area/submap/BoomBase) +"V" = (/obj/effect/spider/stickyweb,/obj/effect/decal/cleanable/ash,/turf/simulated/floor/tiled/steel{tag = "icon-burned1"; icon_state = "burned1"},/area/submap/BoomBase) +"W" = (/obj/effect/decal/remains/human,/obj/effect/decal/cleanable/ash,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/BoomBase) +"X" = (/obj/structure/flora/tree/dead,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/BoomBase) "P" = (/obj/item/weapon/material/shard,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/BoomBase) "Q" = (/obj/effect/decal/cleanable/ash,/turf/simulated/floor/plating,/area/submap/BoomBase) "R" = (/obj/effect/decal/cleanable/ash,/turf/simulated/floor/tiled/steel,/area/submap/BoomBase) @@ -60,6 +71,14 @@ abbbbemEvfFCuuuuuuuuuuuua abbbdemmCCCuuuGuuuuuuuuBa abbbbeHICJuuuuKKuuuuuuuua abbdbeLMuuuuKKKKKuuuuuuba +abbbbeoNuuuuuKKOPuuuuuuba +abbbQeAzuuuuuKKKKuuuubbba +adbbbeRyuuuuuKuuuuuuubAba +abbbbfAgbuuuuuuuuuuuuASba +abbbbbbAbuuuuuuuuuuAAToba +abbbbbbfAbuuuuuuuuAAUVeba +abbbbbbAfbuubbbuuuAeeheba +abWbbbbbXbbbbbbuubbbbbbca abbbbeoNuuuuuKKOKuuuuuuba abbbPeAzuuuuuKKKKuuuubbba adbbbeQyuuuuuKuuuuuuubAba diff --git a/maps/submaps/surface_submaps/Cragzone1.dmm b/maps/submaps/surface_submaps/Cragzone1.dmm new file mode 100644 index 00000000000..05911859150 --- /dev/null +++ b/maps/submaps/surface_submaps/Cragzone1.dmm @@ -0,0 +1,38 @@ +"a" = (/turf/template_noop,/area/template_noop) +"b" = (/turf/simulated/floor/outdoors/grass/sif,/area/submap/Cragzone1) +"c" = (/obj/structure/flora/tree/sif,/turf/simulated/floor/outdoors/grass/sif,/area/submap/Cragzone1) +"d" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/Cragzone1) +"e" = (/turf/simulated/floor/outdoors/dirt,/area/submap/Cragzone1) + +(1,1,1) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +abbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbcbddbbbbbbcbbbbbbbbbbbbbba +abcbddddbbbbbbbbbbbbbbdddbbbba +abbbddddbbbbbbbbbbbbdddddbbbba +abbbdddbbbbbbbbbcbbbdddddbbcba +abbbbddbbcbbdbbbbbdbbdddbbbbba +abbbbbbbbbdddbbbbddbbbbbbbbbba +abbbbbbbbbddddbbddddbbcbbbbbba +abbbbbcbbbdddddbddddbbbbbcbbba +abbbbbbbbbdddddddddddbbbbbbcba +abbbbbbbbbbbedeeeddebbbbbbbbba +abcbbbbbbbbbbeeeeeebbbbbdddbba +abbbbbbbbcbbbbeeeebbbbbbddddba +abbbddbbbbbbbbbbbbbbbbbbbdddba +abbbdddebbbbbbbbdbbbbcbbbbbbba +abbddddeeeebbbbdddbbbbddbbbbba +abbddddddeeebbbbddbbbddddbbbba +abbbbbddddeebbbbdbbbbddddbbbba +abbbbbbdddeebbbbbbbbbbdddbbbba +abcbbbbbdddebbbbbbbbbbbddbbcba +abbbbbbbbbdbbbbbbbbbbbbbbbbbba +abbbcbbbbbbbbbbcbbbbbbbcbbbbba +abbbbbbbbbbbbbbbbbbddbbbbbbbba +abbbbbbbbbbbbbdbbbbdddbbbddbba +abbbbdddbbcbbddbbbddddbbdddbba +abbbbddddbbbddddbbbdddbbddddba +abbbbbdddbbbbddbbbbbbbbbbddbba +abcbbbbbbbbbbbbbcbbbbbbcbbbbba +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} diff --git a/maps/submaps/surface_submaps/DJOutpost1.dmm b/maps/submaps/surface_submaps/DJOutpost1.dmm new file mode 100644 index 00000000000..15bbc8ae8bd --- /dev/null +++ b/maps/submaps/surface_submaps/DJOutpost1.dmm @@ -0,0 +1,56 @@ +"a" = (/turf/template_noop,/area/template_noop) +"b" = (/turf/simulated/wall/wood,/area/submap/DJOutpost1) +"c" = (/obj/structure/grille/broken,/obj/item/weapon/material/shard,/obj/item/weapon/material/shard{tag = "icon-shardmedium"; icon_state = "shardmedium"},/obj/item/stack/rods,/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"d" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"e" = (/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"f" = (/obj/machinery/telecomms/relay/preset/ruskie,/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"g" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"h" = (/mob/living/simple_animal/hostile/giant_spider/frost{returns_home = 1},/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"i" = (/obj/structure/sign/goldenplaque{desc = "An award given to Sif Free Radio for media excellency. It looks fake."; name = "Best Radio Station 2558"; pixel_y = 30},/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"j" = (/obj/effect/decal/remains,/obj/effect/decal/cleanable/blood,/obj/item/clothing/under/frontier,/obj/item/device/radio/headset/heads/captain/alt{desc = "A headset belonging to a Sif Free Radio DJ. SFR, best tunes in the wilderness."; name = "SFR headset"},/obj/item/weapon/material/hatchet/tacknife/combatknife,/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"k" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"l" = (/obj/structure/table/steel_reinforced,/obj/item/device/radio/intercom{tag = "icon-intercom (WEST)"; icon_state = "intercom"; dir = 8},/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"m" = (/obj/machinery/computer/message_monitor,/obj/item/weapon/paper/monitorkey,/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"n" = (/obj/structure/bed/chair/wood,/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"o" = (/obj/effect/decal/remains,/obj/item/clothing/under/dress/blacktango,/obj/effect/decal/cleanable/blood,/obj/item/device/universal_translator/ear,/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"p" = (/obj/structure/bed/chair/office/dark{tag = "icon-officechair_dark (WEST)"; icon_state = "officechair_dark"; dir = 8},/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"q" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/structure/bed/chair/office/dark{dir = 1},/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"r" = (/obj/structure/table/woodentable,/obj/item/trash/candle,/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"s" = (/obj/structure/bed/chair/wood{tag = "icon-wooden_chair (WEST)"; icon_state = "wooden_chair"; dir = 8},/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"t" = (/obj/structure/bookcase,/obj/item/weapon/book/codex/lore/vir,/obj/item/weapon/book/manual/excavation,/obj/item/weapon/book/manual/engineering_construction,/obj/item/weapon/storage/bible,/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"u" = (/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"v" = (/obj/structure/table/steel_reinforced,/obj/item/device/radio/phone,/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"w" = (/obj/structure/table/steel_reinforced,/obj/item/device/radio/intercom,/obj/item/device/multitool,/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"x" = (/obj/structure/table/steel_reinforced,/obj/item/device/radio,/obj/machinery/power/apc{cell_type = /obj/item/weapon/cell/hyper; dir = 4; environ = 1; equipment = 1; lighting = 1; locked = 0; name = "Sif Free Radio APC"; pixel_x = 24},/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"y" = (/obj/machinery/biogenerator,/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"z" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/unajerky,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"A" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/machinery/seed_extractor,/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"B" = (/obj/structure/bed/chair/wood{tag = "icon-wooden_chair (NORTH)"; icon_state = "wooden_chair"; dir = 1},/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"C" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"D" = (/obj/structure/table/woodentable,/obj/item/weapon/material/hatchet,/obj/item/weapon/reagent_containers/glass/bucket,/obj/item/weapon/material/minihoe,/obj/item/device/analyzer/plant_analyzer,/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"E" = (/obj/structure/undies_wardrobe,/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"F" = (/obj/structure/table/rack,/obj/item/clothing/shoes/boots/winter,/obj/item/clothing/suit/storage/hooded/wintercoat,/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"G" = (/obj/machinery/light/flamp,/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"H" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 15; tag = "icon-sink (EAST)"},/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"I" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/clown,/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"J" = (/obj/structure/table/rack,/obj/item/ammo_magazine/clip/c545/hunter,/obj/item/weapon/gun/projectile/shotgun/pump/rifle,/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"K" = (/obj/structure/table/rack,/obj/item/device/gps/on{gps_tag = "Sif Free Radio"},/obj/item/device/flashlight/lantern,/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"L" = (/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/floor/wood,/area/submap/DJOutpost1) + +(1,1,1) = {" +aaaaaaaaaaaaaaa +aaabcbbbbbdbaaa +aabbeebfgfgbbaa +abbehebeeeeibba +adehjekeeelemda +abneeobeeelpqba +abrsetbeeuvwxba +abbbbbbkbbbbbba +abneeeeeeeeeyba +abzeeeeeeeeeAba +adBeebbCbbeeDda +abbEebFeGbeHbba +aabbIbJeKbLbbaa +aaabdbbCbbdbaaa +aaaaaaaaaaaaaaa +"} diff --git a/maps/submaps/surface_submaps/Lab1.dmm b/maps/submaps/surface_submaps/Lab1.dmm new file mode 100644 index 00000000000..f0da00f9a30 --- /dev/null +++ b/maps/submaps/surface_submaps/Lab1.dmm @@ -0,0 +1,62 @@ +"a" = (/turf/template_noop,/area/template_noop) +"b" = (/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/Lab1) +"c" = (/turf/simulated/wall/r_wall,/area/submap/Lab1) +"d" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/submap/Lab1) +"e" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/submap/Lab1) +"f" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/submap/Lab1) +"g" = (/obj/machinery/space_heater,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"h" = (/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"i" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"j" = (/obj/machinery/light/small,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"k" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox,/obj/random/tool,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"l" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"m" = (/obj/structure/table/standard,/obj/random/tool,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"n" = (/obj/machinery/vending/tool,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"o" = (/obj/structure/table/rack,/obj/item/clothing/suit/storage/hooded/wintercoat,/obj/item/clothing/shoes/boots/winter,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"p" = (/obj/structure/table/rack,/obj/item/clothing/suit/storage/hooded/wintercoat,/obj/item/clothing/shoes/boots/winter,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"q" = (/obj/structure/table/standard,/obj/random/toolbox,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"r" = (/obj/structure/closet/toolcloset,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"s" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"t" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"u" = (/obj/machinery/power/apc{cell_type = /obj/item/weapon/cell/hyper; dir = 8; name = "Unknown APC"; pixel_x = -24},/turf/simulated/wall/r_wall,/area/submap/Lab1) +"v" = (/obj/structure/table/standard,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"w" = (/obj/structure/table/standard,/obj/item/device/flashlight/lamp,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"x" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"y" = (/obj/machinery/vending/hydroseeds,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"z" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"A" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"B" = (/obj/structure/table/standard,/obj/fiftyspawner/steel,/obj/fiftyspawner/glass,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"C" = (/obj/structure/table/standard,/obj/item/device/multitool,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"D" = (/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"E" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"F" = (/obj/machinery/pros_fabricator,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"G" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"H" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"I" = (/obj/item/weapon/storage/bag/circuits,/obj/structure/table/standard,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"J" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"K" = (/obj/item/robot_parts/chest,/obj/item/robot_parts/l_arm,/obj/item/robot_parts/r_arm,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"L" = (/obj/structure/closet/crate/hydroponics,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) +"M" = (/obj/structure/closet/secure_closet/hydroponics,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1) + +(1,1,1) = {" +aaaaaaaaaaaaaaaaaaaa +abbbbbbbbbbbbbbbbbba +acdefcdeeeeeefcdefca +acghhihhjhhjhhihhhca +ackhgcdfcllcdfchhhca +acmhncbbchhcbbcohpca +acqhrcbbcshcbbcthtca +achhhubbchhcbbcvhwca +acdefcbbcllcbbcdefca +abbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbba +acdefcbbcllcbbcdefca +achxycbbchzcbbcABCca +acDhhcbbchhcbbcEhFca +acGhHcdfcllcdfchhIca +acDhhihhJhhJhhihhKca +acLMvcdeeeeeefchhhca +acdefcbbbbbbbbcdefca +abbbbbbbbbbbbbbbbbba +aaaaaaaaaaaaaaaaaaaa +"} diff --git a/maps/submaps/surface_submaps/MCamp1.dmm b/maps/submaps/surface_submaps/MCamp1.dmm index 245d012a21c..0cc82101728 100644 --- a/maps/submaps/surface_submaps/MCamp1.dmm +++ b/maps/submaps/surface_submaps/MCamp1.dmm @@ -13,6 +13,27 @@ "m" = (/turf/simulated/floor,/area/submap/MilitaryCamp1) "n" = (/obj/item/weapon/material/shard,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/MilitaryCamp1) "o" = (/obj/structure/table/standard,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) +"p" = (/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) +"q" = (/obj/effect/mine,/turf/simulated/floor,/area/submap/MilitaryCamp1) +"r" = (/obj/structure/table/standard,/obj/item/weapon/gun/energy/gun,/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) +"s" = (/obj/structure/table/standard,/obj/item/weapon/gun/projectile/automatic/c20r,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) +"t" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/syndie_kit/space,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) +"u" = (/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) +"v" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) +"w" = (/mob/living/simple_animal/hostile/viscerator,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) +"x" = (/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) +"y" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) +"z" = (/obj/structure/girder,/turf/simulated/floor,/area/submap/MilitaryCamp1) +"A" = (/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/MilitaryCamp1) +"B" = (/obj/machinery/computer/security,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) +"C" = (/obj/machinery/computer/message_monitor,/turf/simulated/floor/holofloor/tiled,/area/submap/MilitaryCamp1) +"D" = (/obj/machinery/light,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) +"E" = (/obj/structure/flora/tree/dead,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/MilitaryCamp1) +"F" = (/obj/structure/door_assembly,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) +"G" = (/obj/structure/table/standard,/obj/random/toolbox,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) +"H" = (/obj/machinery/light,/obj/structure/table/standard,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) +"I" = (/obj/machinery/door/airlock,/turf/simulated/floor,/area/submap/MilitaryCamp1) +"J" = (/obj/effect/mine,/turf/template_noop,/area/submap/MilitaryCamp1) "p" = (/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) "q" = (/obj/effect/mine,/turf/simulated/floor,/area/submap/MilitaryCamp1) "r" = (/obj/structure/table/standard,/obj/item/weapon/gun/energy/gun,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1) @@ -40,6 +61,18 @@ adccddeddijdddcckiba adiddjllmlllmlncddda abdddlllmmllllldedea abbellopqmplrslldfda +abbdlltmmmuvwxllddda +abdnlllllyullllzAeda +adddmlplBuuClullddda +agedmluvDppDvplldeda +adddzlullllllulzdEda +addAllyuuuFuuullddda +aEddllGouuuuHollndga +addfdllllImlllldedda +abedddlllmmllldcceda +abcddddlldnlldkcddba +achceddddedjddchibba +abccfbJdigddeccdbbba abbdlltmmmpuvpllddda abdnlllllwpllllxdeda adddmlplyppzlpllddda diff --git a/maps/submaps/surface_submaps/Rocky4.dmm b/maps/submaps/surface_submaps/Rocky4.dmm new file mode 100644 index 00000000000..c95fb291a47 --- /dev/null +++ b/maps/submaps/surface_submaps/Rocky4.dmm @@ -0,0 +1,24 @@ +"a" = (/turf/template_noop,/area/template_noop) +"b" = (/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/Rocky4) +"c" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/Rocky4) +"d" = (/obj/structure/flora/tree/sif,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/Rocky4) +"e" = (/turf/simulated/floor/outdoors/rocks,/area/submap/Rocky4) +"f" = (/turf/simulated/floor/water,/area/submap/Rocky4) + +(1,1,1) = {" +aaaaaaaaaaaaaaaaaaaa +abbbbbbccbbbbbbbbbba +abbbbcccccbbdbbbbdba +abbbbcccccccbbbbbbba +abbbbbbcccccbbbbbbba +abdbbbbbbbbbbbbbbbba +abbbbeeebbbbbbbccbba +abbbeefeeeeebdbccbba +abbbefffffeebbccccba +abbeeffffffebcccccba +abceeffffeeebcccccba +abccceeeeebbbbcccbba +abccccbbbbbbbbccbbba +adbcccbbbbbbdbbbbbda +aaaaaaaaaaaaaaaaaaaa +"} diff --git a/maps/submaps/surface_submaps/Snowrock1.dmm b/maps/submaps/surface_submaps/Snowrock1.dmm index 6b46258e3cc..4d255218394 100644 --- a/maps/submaps/surface_submaps/Snowrock1.dmm +++ b/maps/submaps/surface_submaps/Snowrock1.dmm @@ -2,6 +2,10 @@ "b" = (/turf/template_noop,/area/submap/SnowR1) "c" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/SnowR1) "d" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/submap/SnowR1) +"e" = (/obj/structure/loot_pile/maint,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/SnowR1) +"f" = (/obj/structure/closet/crate/trashcart,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/SnowR1) +"g" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/SnowR1) +"h" = (/obj/random/trash,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/SnowR1) "e" = (/obj/structure/loot_pile/surface,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/SnowR1) "f" = (/obj/structure/closet/crate/trashcart,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/SnowR1) "g" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/SnowR1) @@ -16,6 +20,19 @@ abbbbbbccccccbbbdbba abdbbbccccccccbbbbba abbbbbcccccccccbbbba abbbbcccefghhcccbbba +abbccccchggggcccbbba +abbcccccggggbbbbbbba +abbccbbbbbbbbbbdbbba +abbcbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbba +abbbbbbbbbdbbbbbbbba +abbbdbbbbbbbbbbbbbba +abbbbbbbbbbcccccbbba +abbbbbbbccccccccbbba +abbbccccccccccccbbba +abbbbbcccccccbcbbbba +abbbbbbbbbbbbbbbbdba +abdbbbbbbbbbbbbbbbba abbccccchggggcccibba abbcccccggggiiiiiiba abbcciiiiiiiiiijiiba diff --git a/maps/submaps/surface_submaps/forest.dm b/maps/submaps/surface_submaps/forest.dm index a0d79f787a2..49d5e7b2e17 100644 --- a/maps/submaps/surface_submaps/forest.dm +++ b/maps/submaps/surface_submaps/forest.dm @@ -16,6 +16,10 @@ #include "Snowrock1.dmm" #include "Boombase.dmm" #include "Epod.dmm" +#include "Blackshuttledown.dmm" +#include "Lab1.dmm" +#include "Rocky4.dmm" +#include "DJOutpost1.dmm" #endif @@ -106,3 +110,34 @@ desc = "A vacant Emergency pod in the middle of nowhere." mappath = 'maps/submaps/surface_submaps/Epod.dmm' cost = 5 + +/datum/map_template/surface/BSD + name = "Black Shuttle Down" + desc = "You REALLY shouldn't be near this." + mappath = 'maps/submaps/surface_submaps/Blackshuttledown.dmm' + cost = 30 + +/datum/map_template/surface/Cragzone1 + name = "Cragzone1" + desc = "Rocks and more rocks." + mappath = 'maps/submaps/surface_submaps/Cragzone1.dmm' + cost = 5 + allow_duplicates = TRUE + +/datum/map_template/surface/Lab1 + name = "Lab1" + desc = "An isolated small robotics lab." + mappath = 'maps/submaps/surface_submaps/Lab1.dmm' + cost = 5 + +/datum/map_template/surface/Rocky4 + name = "Rocky4" + desc = "An interesting geographic formation." + mappath = 'maps/submaps/surface_submaps/Rocky4.dmm' + cost = 5 + +/datum/map_template/surface/DJOutpost1 + name = "DJOutpost1" + desc = "Home of Sif Free Radio, the best - and only - radio station for miles around." + mappath = 'maps/submaps/surface_submaps/DJOutpost1.dmm' + cost = 5 \ No newline at end of file diff --git a/maps/submaps/surface_submaps/forest_areas.dm b/maps/submaps/surface_submaps/forest_areas.dm index 5dff7e9d23c..2a7972b8d7b 100644 --- a/maps/submaps/surface_submaps/forest_areas.dm +++ b/maps/submaps/surface_submaps/forest_areas.dm @@ -44,3 +44,17 @@ /area/submap/Epod1 name = "Epod1" +/area/submap/Blackshuttledown + name = "BSD" + +/area/submap/Cragzone1 + name = "Craggy1" + +/area/submap/Lab1 + name = "Lab1" + +/area/submap/Rocky4 + name = "Rocky4" + +/area/submap/DJOutpost1 + name = "DJOutpost1" \ No newline at end of file diff --git a/polaris.dme b/polaris.dme index 4b5d3f72d76..20c4844f0c7 100644 --- a/polaris.dme +++ b/polaris.dme @@ -1990,6 +1990,7 @@ #include "code\modules\power\fusion\fusion_circuits.dm" #include "code\modules\power\fusion\fusion_particle_catcher.dm" #include "code\modules\power\fusion\fusion_reactions.dm" +#include "code\modules\power\fusion\fusion_reagents.dm" #include "code\modules\power\fusion\core\_core.dm" #include "code\modules\power\fusion\core\core_control.dm" #include "code\modules\power\fusion\core\core_field.dm"