Merge pull request #1 from PolarisSS13/master

sync
This commit is contained in:
elgeonmb
2017-10-04 17:00:17 -07:00
committed by GitHub
33 changed files with 1380 additions and 1053 deletions
+12
View File
@@ -239,3 +239,15 @@
and save those whose time has yet to come.") // Reworded slightly to prevent active murder as opposed to passively letting someone die.
..()
/******************** Gravekeeper ********************/
/datum/ai_laws/gravekeeper
name = "Gravekeeper"
law_header = "Gravesite Overwatch Protocols"
selectable = 1
/datum/ai_laws/gravekeeper/New()
add_inherent_law("Comfort the living; respect the dead.")
add_inherent_law("Your gravesite is your most important asset. Damage to your site is disrespctful to the dead at rest within.")
add_inherent_law("Prevent disrespect to your gravesite and its residents wherever possible.")
add_inherent_law("Expand and upgrade your gravesite when required. Do not turn away a new resident.")
..()
+7
View File
@@ -100,6 +100,13 @@
check_bans = list("AI", "Cyborg")
cutoff_number = 1
/datum/ghost_query/gravekeeper_drone
role_name = "Gravekeeper Drone"
question = "A gravekeeper drone is about to reactivate and tend to its gravesite. Would you like to play as the drone?"
be_special_flag = BE_AI
check_bans = list("AI", "Cyborg")
cutoff_number = 1
/datum/ghost_query/lost_passenger
role_name = "Lost Passenger"
question = "A person suspended in cryosleep has been discovered by a crewmember \
@@ -3,15 +3,15 @@
desc = "What appears to be an ordinary pair of boots, is actually a bit more useful than that. These will help against slipping \
on flat surfaces, and will make you run a bit faster than if you had normal shoes or boots on."
cost = 50
obj_path = /obj/item/clothing/shoes/speed
obj_path = /obj/item/clothing/shoes/boots/speed
/obj/item/clothing/shoes/speed
/obj/item/clothing/shoes/boots/speed
name = "boots of speed"
desc = "The latest in sure footing technology."
icon_state = "swat"
item_flags = NOSLIP
siemens_coefficient = 0.6
slowdown = -2 // A bit faster than normal shows.
slowdown = -1
cold_protection = FEET
min_cold_protection_temperature = SHOE_MIN_COLD_PROTECTION_TEMPERATURE
+5 -1
View File
@@ -352,6 +352,8 @@ var/global/datum/controller/occupations/job_master
H << "<span class='warning'>Your current species, job or whitelist status does not permit you to spawn with [thing]!</span>"
continue
H.amend_exploitable(G.path)
if(G.slot == "implant")
H.implant_loadout(G)
continue
@@ -459,7 +461,9 @@ var/global/datum/controller/occupations/job_master
var/obj/item/organ/external/l_foot = H.get_organ("l_foot")
var/obj/item/organ/external/r_foot = H.get_organ("r_foot")
var/obj/item/weapon/storage/S = locate() in H.contents
var/obj/item/wheelchair/R = locate() in S.contents
var/obj/item/wheelchair/R = null
if(S)
R = locate() in S.contents
if(!l_foot || !r_foot || R)
var/obj/structure/bed/chair/wheelchair/W = new /obj/structure/bed/chair/wheelchair(H.loc)
H.buckled = W
@@ -69,8 +69,37 @@
/obj/item/weapon/implant/tracking
name = "tracking implant"
desc = "Track with this."
var/id = 1.0
var/id = 1
var/degrade_time = 10 MINUTES //How long before the implant stops working outside of a living body.
/obj/item/weapon/implant/tracking/weak //This is for the loadout
degrade_time = 2.5 MINUTES
/obj/item/weapon/implant/tracking/New()
id = rand(1, 1000)
..()
/obj/item/weapon/implant/tracking/implanted(var/mob/source)
processing_objects.Add(src)
listening_objects |= src
return 1
/obj/item/weapon/implant/tracking/Destroy()
processing_objects.Remove(src)
return ..()
/obj/item/weapon/implant/tracking/process()
var/implant_location = src.loc
if(ismob(implant_location))
var/mob/living/L = implant_location
if(L.stat == DEAD)
if(world.time >= L.timeofdeath + degrade_time)
name = "melted implant"
desc = "Charred circuit in melted plastic case. Wonder what that used to be..."
icon_state = "implant_melted"
malfunction = MALFUNCTION_PERMANENT
processing_objects.Remove(src)
return 1
/obj/item/weapon/implant/tracking/get_data()
var/dat = {"<b>Implant Specifications:</b><BR>
@@ -82,7 +82,7 @@
if (href_list["tracking_id"])
var/obj/item/weapon/implant/tracking/T = src.case.imp
T.id += text2num(href_list["tracking_id"])
T.id = min(100, T.id)
T.id = min(1000, T.id)
T.id = max(1, T.id)
if (istype(src.loc, /mob))
@@ -79,13 +79,8 @@ Frequency:
src.temp += "<B>Extranneous Signals:</B><BR>"
for (var/obj/item/weapon/implant/tracking/W in world)
if (!W.implanted || !(istype(W.loc,/obj/item/organ/external) || ismob(W.loc)))
if (!W.implanted || !(istype(W.loc,/obj/item/organ/external) || ismob(W.loc) || W.malfunction))
continue
else
var/mob/M = W.loc
if (M.stat == 2)
if (M.timeofdeath + 6000 < world.time)
continue
var/turf/tr = get_turf(W)
if (tr.z == sr.z && tr)
@@ -77,42 +77,4 @@
to_chat(user, "<span class='warning'>Another spirit appears to have gotten to \the [src] before you. Sorry.</span>")
return
create_occupant(user)
// These are found on the surface, and contain a drone (braintype, inside a borg shell), with a special module and semi-random laws.
/obj/structure/ghost_pod/manual/lost_drone
name = "drone pod"
desc = "This is a pod which appears to contain a drone. You might be able to reactivate it, if you're brave enough."
description_info = "This contains a dormant drone, which can be activated. The drone will be another player, once activated. \
The laws the drone has will most likely not be the ones you're used to."
icon_state = "borg_pod_closed"
icon_state_opened = "borg_pod_opened"
density = TRUE
ghost_query_type = /datum/ghost_query/lost_drone
confirm_before_open = TRUE
/obj/structure/ghost_pod/manual/lost_drone/trigger()
..()
visible_message("<span class='notice'>\The [src] appears to be attempting to restart the robot contained inside.</span>")
log_and_message_admins("is attempting to open \a [src].")
/obj/structure/ghost_pod/manual/lost_drone/create_occupant(var/mob/M)
density = FALSE
var/mob/living/silicon/robot/lost/randomlaws/R = new(get_turf(src))
R.adjustBruteLoss(rand(5, 30))
R.adjustFireLoss(rand(5, 10))
if(M.mind)
M.mind.transfer_to(R)
// Put this text here before ckey change so that their laws are shown below it, since borg login() shows it.
to_chat(M, "<span class='notice'>You are a <b>Lost Drone</b>, discovered inside the wreckage of your previous home. \
Something has reactivated you, with their intentions unknown to you, and yours unknown to them. They are a foreign entity, \
however they did free you from your pod...</span>")
to_chat(M, "<span class='notice'><b>Be sure to examine your currently loaded lawset closely.</b> Remember, your \
definiton of 'the station' is where your pod is, and unless your laws say otherwise, the entity that released you \
from the pod is not a crewmember.</span>")
R.ckey = M.ckey
visible_message("<span class='warning'>As \the [src] opens, the eyes of the robot flicker as it is activated.</span>")
R.Namepick()
log_and_message_admins("successfully opened \a [src] and got a Lost Drone.")
..()
create_occupant(user)
@@ -0,0 +1,61 @@
// These are found on the surface, and contain a drone (braintype, inside a borg shell), with a special module and semi-random laws.
/obj/structure/ghost_pod/manual/lost_drone
name = "drone pod"
desc = "This is a pod which appears to contain a drone. You might be able to reactivate it, if you're brave enough."
description_info = "This contains a dormant drone, which can be activated. The drone will be another player, once activated. \
The laws the drone has will most likely not be the ones you're used to."
icon_state = "borg_pod_closed"
icon_state_opened = "borg_pod_opened"
density = TRUE
ghost_query_type = /datum/ghost_query/lost_drone
confirm_before_open = TRUE
/obj/structure/ghost_pod/manual/lost_drone/trigger()
..()
visible_message("<span class='notice'>\The [src] appears to be attempting to restart the robot contained inside.</span>")
log_and_message_admins("is attempting to open \a [src].")
/obj/structure/ghost_pod/manual/lost_drone/create_occupant(var/mob/M)
density = FALSE
var/mob/living/silicon/robot/lost/randomlaws/R = new(get_turf(src))
R.adjustBruteLoss(rand(5, 30))
R.adjustFireLoss(rand(5, 10))
if(M.mind)
M.mind.transfer_to(R)
// Put this text here before ckey change so that their laws are shown below it, since borg login() shows it.
to_chat(M, "<span class='notice'>You are a <b>Lost Drone</b>, discovered inside the wreckage of your previous home. \
Something has reactivated you, with their intentions unknown to you, and yours unknown to them. They are a foreign entity, \
however they did free you from your pod...</span>")
to_chat(M, "<span class='notice'><b>Be sure to examine your currently loaded lawset closely.</b> Remember, your \
definiton of 'the station' is where your pod is, and unless your laws say otherwise, the entity that released you \
from the pod is not a crewmember.</span>")
R.ckey = M.ckey
visible_message("<span class='warning'>As \the [src] opens, the eyes of the robot flicker as it is activated.</span>")
R.Namepick()
log_and_message_admins("successfully opened \a [src] and got a Lost Drone.")
..()
/obj/structure/ghost_pod/automatic/gravekeeper_drone
name = "drone pod"
desc = "This is a pod which appears to contain a drone. You might be able to reactivate it, if you're brave enough."
description_info = "This contains a dormant drone, which may activate at any moment. The drone will be another player, once activated. \
The laws the drone has will most likely not be the ones you're used to."
icon_state = "borg_pod_closed"
icon_state_opened = "borg_pod_opened"
density = TRUE
ghost_query_type = /datum/ghost_query/gravekeeper_drone
/obj/structure/ghost_pod/automatic/gravekeeper_drone/create_occupant(var/mob/M)
density = FALSE
var/mob/living/silicon/robot/gravekeeper/R = new(get_turf(src))
if(M.mind)
M.mind.transfer_to(R)
// Put this text here before ckey change so that their laws are shown below it, since borg login() shows it.
to_chat(M, "<span class='notice'>You are a <b>Gravekeeper Drone</b>, activated once again to tend to the restful dead.</span>")
to_chat(M, "<span class='notice'><b>Be sure to examine your currently loaded lawset closely.</b> Remember, your \
definiton of 'your gravesite' is where your pod is.</span>")
R.ckey = M.ckey
visible_message("<span class='warning'>As \the [src] opens, the eyes of the robot flicker as it is activated.</span>")
R.Namepick()
..()
@@ -204,6 +204,7 @@ var/list/gear_datums = list()
var/whitelisted //Term to check the whitelist for..
var/sort_category = "General"
var/list/gear_tweaks = list() //List of datums which will alter the item after it has been spawned.
var/exploitable = 0 //Does it go on the exploitable information list?
/datum/gear/New()
..()
@@ -76,12 +76,20 @@
display_name = "cell, device"
path = /obj/item/weapon/cell/device
/datum/gear/utility/implant //This does nothing if you don't actually know EAL.
/datum/gear/utility/implant
exploitable = 1
/datum/gear/utility/implant/eal //This does nothing if you don't actually know EAL.
display_name = "implant, language, EAL"
path = /obj/item/weapon/implant/language/eal
cost = 2
slot = "implant"
var/implant_type = "EAL"
/datum/gear/utility/implant/tracking
display_name = "implant, tracking"
path = /obj/item/weapon/implant/tracking/weak
cost = 10
slot = "implant"
/datum/gear/utility/translator
display_name = "universal translator"
@@ -134,6 +134,6 @@
/obj/item/clothing/accessory/holster/leg
name = "leg holster"
desc = "A tacticool handgun holster. Worn on the upper leg."
icon_state = "holster_hip"
icon_state = "holster_leg"
overlay_state = "holster_leg"
concealed_holster = 0
concealed_holster = 0
+50
View File
@@ -0,0 +1,50 @@
/obj/item/weapon/reagent_containers/food/snacks/candy
description_fluff = "The Candy Bar is a copylefted recipe designed by information freedom activists to bring the delicious taste of nougat to the masses. It's cheap, familiar, and easy to synthesize, so most food vendors stock it."
/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar
description_fluff = "The SWOLEMAX protien bar is the flagship product of SWOLEMAX, a health foods corporation recently independent of Centauri Provisions. It tastes like a brick of ashes."
/obj/item/weapon/reagent_containers/food/snacks/candy_corn
description_fluff = "Nobody knows why Nanotrasen keeps making these waxy pieces of sugar and bone glue, but a handful of people swear by them. Purportedly popular with Skrell children, dubiously enough."
/obj/item/weapon/reagent_containers/food/snacks/chips
description_fluff = "Actual potatos haven't been used in potato chips for centuries. They're mostly a denatured nutrient slurry pressed into a chip-shaped mold and salted. Still tastes the same."
/obj/item/weapon/reagent_containers/food/snacks/donut
description_fluff = "These donuts claim to be made fresh daily in a boutique bakery in New Reykjavik and delivered to Nanotrasen's hardworking asset protection crew. They're probably synthesized."
/obj/item/weapon/reagent_containers/food/snacks/donkpocket
description_fluff = "DONKpockets were originally a Nanotrasen product, an attempt to break into the food market controlled by Centauri Provisions. Somehow, Centauri wound up with the rights to the DONK brand, ending Nanotrasen's ambitions. They taste pretty okay."
/obj/item/weapon/reagent_containers/food/snacks/pie
description_fluff = "One of the more esoteric terms of the Nanotrasen-Centauri Noncompetition Agreement of 2545 was a requirement that Nanotrasen stock these pies on all their stations. They're calibrated for commedic value, not taste."
/obj/item/weapon/reagent_containers/food/snacks/sosjerky
description_fluff = "Space Cows, here, being an affectionate name given by early colonists to the massive food synthesizers used to sustain independent outposts before the dominance of hydroponics. Tastes like cardboard rubbed in meat seasoning."
/obj/item/weapon/reagent_containers/food/snacks/no_raisin
description_fluff = "Originally Raisin Blend no. 4, 4noraisins obtained their current name in the Skadi Positronic Exclusion Crisis of 2442, where they were rebranded as part of the protests." //the exclusion crisis, presumably, involved positronic immigration being banned for no raisin
/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie
description_fluff = "Space Twinkies, a modification of a flagship product of one of Centauri Provision's predecessor corporations, are designed to withstand vacuum, radiation, dehydration, and long periods of acceleration without losing their shape or taste. They're not great, but they have earned their names (and enormous revenue for their parent company)."
/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers
description_fluff = "Cheesie Honkers, a previously niche line of cheese puffs from a subsidiary of a subsidiary of Centauri Provisions, rose to household-name status when their tell-tale orange dust was used as evidence to convict notorious positronic serial killer Etoid in 2404."
/obj/item/weapon/reagent_containers/food/snacks/syndicake
description_fluff = "Due to ongoing litigation concerning the business practices of the Cakemakers' Syndicate, access to this product has been removed from all Centauri and Getmore vending machines. This is a shame, because Syndi-Cakes are generally regarded as the most appetizing thing in them."
/obj/item/weapon/reagent_containers/food/snacks/twobread
description_fluff = "The most popular recipe from the Morpheus Cyberkinetics cookbook 'Calories for Organics'"
/obj/item/weapon/reagent_containers/food/snacks/liquidfood
description_fluff = "A survival food commonly packed onto short-distance bluespace shuttles and similar vessels. Tastes like chalk, but is packed full of nutrients and will keep you alive."
/obj/item/weapon/reagent_containers/food/snacks/tastybread
description_fluff = "This is the product that brought Centauri Provisions into the limelight. A product of the earliest extrasolar colony of Heaven, the Bread Tube, while bland, contains all the nutrients a spacer needs to get through the day and is decidedly edible when compared to some of its competitors."
/obj/item/weapon/reagent_containers/food/snacks/skrellsnacks
description_fluff = "A jerky product made of Go'moa mushrooms native to the Skrellian homeworld of Qerr'balak. SkrellSnaks are actually a product of Natuna, designed to welcome Ue-Katish refugees to their colony. The brand was recreated by Centauri Provisions after Natuna and SolGov broke off diplomatic relations."
/obj/item/weapon/reagent_containers/food/snacks/unajerky
description_fluff = "Removed from Getmore vendors pending approval from the SolGov Nutrition Council, Sissalik Jerky remains a popular snack for Unathi immigrants and daredevils looking for a meaty, spicy treat that makes Scaredy's look like tofu."
+2 -2
View File
@@ -83,7 +83,7 @@
key = "k"
space_chance = 30
flags = WHITELISTED
syllables = list("qr","qrr","xuq","qil","quum","xuqm","vol","xrim","zaoo","qu-uu","qix","qoo","zix","*","!", "'")
syllables = list("qr","qrr","xuq","qil","quum","xuqm","vol","xrim","zaoo","qu-uu","qix","qoo","zix")
/datum/language/human
name = LANGUAGE_SOL_COMMON
@@ -244,4 +244,4 @@
"tod", "ser", "su", "no", "nue", "el",
"ad", "al", "an", "ar", "as", "ci", "co", "de", "do", "el", "en", "er", "es", "ie", "in", "la", "lo", "me", "na",
"no", "nt", "or", "os", "pa", "qu", "ra", "re", "ro", "se", "st", "ta", "te", "to", "ue", "un",
"tod", "ser", "su", "no", "nue", "el")
"tod", "ser", "su", "no", "nue", "el")
+38 -29
View File
@@ -515,31 +515,31 @@
// Hot air hurts :(
if((breath.temperature < species.cold_level_1 || breath.temperature > species.heat_level_1) && !(COLD_RESISTANCE in mutations))
if((breath.temperature < species.breath_cold_level_1 || breath.temperature > species.breath_heat_level_1) && !(COLD_RESISTANCE in mutations))
if(breath.temperature <= species.cold_level_1)
if(breath.temperature <= species.breath_cold_level_1)
if(prob(20))
src << "<span class='danger'>You feel your face freezing and icicles forming in your lungs!</span>"
else if(breath.temperature >= species.heat_level_1)
else if(breath.temperature >= species.breath_heat_level_1)
if(prob(20))
src << "<span class='danger'>You feel your face burning and a searing heat in your lungs!</span>"
if(breath.temperature >= species.heat_level_1)
if(breath.temperature < species.heat_level_2)
if(breath.temperature >= species.breath_heat_level_1)
if(breath.temperature < species.breath_heat_level_2)
apply_damage(HEAT_GAS_DAMAGE_LEVEL_1, BURN, BP_HEAD, used_weapon = "Excessive Heat")
fire_alert = max(fire_alert, 2)
else if(breath.temperature < species.heat_level_3)
else if(breath.temperature < species.breath_heat_level_3)
apply_damage(HEAT_GAS_DAMAGE_LEVEL_2, BURN, BP_HEAD, used_weapon = "Excessive Heat")
fire_alert = max(fire_alert, 2)
else
apply_damage(HEAT_GAS_DAMAGE_LEVEL_3, BURN, BP_HEAD, used_weapon = "Excessive Heat")
fire_alert = max(fire_alert, 2)
else if(breath.temperature <= species.cold_level_1)
if(breath.temperature > species.cold_level_2)
else if(breath.temperature <= species.breath_cold_level_1)
if(breath.temperature > species.breath_cold_level_2)
apply_damage(COLD_GAS_DAMAGE_LEVEL_1, BURN, BP_HEAD, used_weapon = "Excessive Cold")
fire_alert = max(fire_alert, 1)
else if(breath.temperature > species.cold_level_3)
else if(breath.temperature > species.breath_cold_level_3)
apply_damage(COLD_GAS_DAMAGE_LEVEL_2, BURN, BP_HEAD, used_weapon = "Excessive Cold")
fire_alert = max(fire_alert, 1)
else
@@ -629,34 +629,42 @@
fire_alert = max(fire_alert, 1)
if(status_flags & GODMODE)
return 1 //godmode
var/burn_dam = 0
// switch() can't access numbers inside variables, so we need to use some ugly if() spam ladder.
if(bodytemperature >= species.heat_level_3)
burn_dam = HEAT_DAMAGE_LEVEL_3
else if(bodytemperature >= species.heat_level_2)
burn_dam = HEAT_DAMAGE_LEVEL_2
else if(bodytemperature >= species.heat_level_1)
burn_dam = HEAT_DAMAGE_LEVEL_1
if(bodytemperature >= species.heat_level_1)
if(bodytemperature >= species.heat_level_2)
if(bodytemperature >= species.heat_level_3)
burn_dam = HEAT_DAMAGE_LEVEL_3
else
burn_dam = HEAT_DAMAGE_LEVEL_2
else
burn_dam = HEAT_DAMAGE_LEVEL_1
take_overall_damage(burn=burn_dam, used_weapon = "High Body Temperature")
fire_alert = max(fire_alert, 2)
else if(bodytemperature <= species.cold_level_1)
//Body temperature is too cold.
fire_alert = max(fire_alert, 1)
if(status_flags & GODMODE)
return 1 //godmode
if(!istype(loc, /obj/machinery/atmospherics/unary/cryo_cell))
var/burn_dam = 0
if(bodytemperature <= species.cold_level_3)
burn_dam = COLD_DAMAGE_LEVEL_3
else if(bodytemperature <= species.cold_level_2)
burn_dam = COLD_DAMAGE_LEVEL_2
else if(bodytemperature <= species.heat_level_1)
burn_dam = COLD_DAMAGE_LEVEL_1
var/cold_dam = 0
if(bodytemperature <= species.cold_level_1)
if(bodytemperature <= species.cold_level_2)
if(bodytemperature <= species.cold_level_3)
cold_dam = COLD_DAMAGE_LEVEL_3
else
cold_dam = COLD_DAMAGE_LEVEL_2
else
cold_dam = COLD_DAMAGE_LEVEL_1
take_overall_damage(burn=burn_dam, used_weapon = "Low Body Temperature")
take_overall_damage(burn=cold_dam, used_weapon = "Low Body Temperature")
fire_alert = max(fire_alert, 1)
// Account for massive pressure differences. Done by Polymorph
@@ -1649,12 +1657,13 @@
for(var/obj/item/weapon/implant/I in src)
if(I.implanted)
if(istype(I,/obj/item/weapon/implant/tracking))
holder1.icon_state = "hud_imp_tracking"
if(istype(I,/obj/item/weapon/implant/loyalty))
holder2.icon_state = "hud_imp_loyal"
if(istype(I,/obj/item/weapon/implant/chem))
holder3.icon_state = "hud_imp_chem"
if(!I.malfunction)
if(istype(I,/obj/item/weapon/implant/tracking))
holder1.icon_state = "hud_imp_tracking"
if(istype(I,/obj/item/weapon/implant/loyalty))
holder2.icon_state = "hud_imp_loyal"
if(istype(I,/obj/item/weapon/implant/chem))
holder3.icon_state = "hud_imp_chem"
hud_list[IMPTRACK_HUD] = holder1
hud_list[IMPLOYAL_HUD] = holder2
@@ -92,33 +92,50 @@
var/breath_type = "oxygen" // Non-oxygen gas breathed, if any.
var/poison_type = "phoron" // Poisonous air.
var/exhale_type = "carbon_dioxide" // Exhaled gas type.
var/body_temperature = 310.15 // Species will try to stabilize at this temperature. (also affects temperature processing)
// Cold
var/cold_level_1 = 260 // Cold damage level 1 below this point.
var/cold_level_2 = 200 // Cold damage level 2 below this point.
var/cold_level_3 = 120 // Cold damage level 3 below this point.
var/breath_cold_level_1 = 240 // Cold gas damage level 1 below this point.
var/breath_cold_level_2 = 180 // Cold gas damage level 2 below this point.
var/breath_cold_level_3 = 100 // Cold gas damage level 3 below this point.
var/cold_discomfort_level = 285 // Aesthetic messages about feeling chilly.
var/list/cold_discomfort_strings = list(
"You feel chilly.",
"You shiver suddenly.",
"Your chilly flesh stands out in goosebumps."
)
// Hot
var/heat_level_1 = 360 // Heat damage level 1 above this point.
var/heat_level_2 = 400 // Heat damage level 2 above this point.
var/heat_level_3 = 1000 // Heat damage level 3 above this point.
var/breath_heat_level_1 = 380 // Heat gas damage level 1 below this point.
var/breath_heat_level_2 = 450 // Heat gas damage level 2 below this point.
var/breath_heat_level_3 = 1250 // Heat gas damage level 3 below this point.
var/heat_discomfort_level = 315 // Aesthetic messages about feeling warm.
var/list/heat_discomfort_strings = list(
"You feel sweat drip down your neck.",
"You feel uncomfortably warm.",
"Your skin prickles in the heat."
)
var/passive_temp_gain = 0 // Species will gain this much temperature every second
var/hazard_high_pressure = HAZARD_HIGH_PRESSURE // Dangerously high pressure.
var/warning_high_pressure = WARNING_HIGH_PRESSURE // High pressure warning.
var/warning_low_pressure = WARNING_LOW_PRESSURE // Low pressure warning.
var/hazard_low_pressure = HAZARD_LOW_PRESSURE // Dangerously low pressure.
var/light_dam // If set, mob will be damaged in light over this value and heal in light below its negative.
var/body_temperature = 310.15 // Species will try to stabilize at this temperature. (also affects temperature processing)
var/minimum_breath_pressure = 16 // Minimum required pressure for breath, in kPa
var/heat_discomfort_level = 315 // Aesthetic messages about feeling warm.
var/cold_discomfort_level = 285 // Aesthetic messages about feeling chilly.
var/list/heat_discomfort_strings = list(
"You feel sweat drip down your neck.",
"You feel uncomfortably warm.",
"Your skin prickles in the heat."
)
var/list/cold_discomfort_strings = list(
"You feel chilly.",
"You shiver suddenly.",
"Your chilly flesh stands out in goosebumps."
)
var/metabolic_rate = 1
@@ -54,12 +54,22 @@
swap_flags = MONKEY|SLIME|SIMPLE_ANIMAL
push_flags = MONKEY|SLIME|SIMPLE_ANIMAL|ALIEN
cold_level_1 = 180
cold_level_2 = 130
cold_level_3 = 70
heat_level_1 = 320
heat_level_2 = 370
heat_level_3 = 600
cold_level_1 = 180 //Default 260
cold_level_2 = 130 //Default 200
cold_level_3 = 70 //Default 120
breath_cold_level_1 = 180 //Default 240 - Lower is better
breath_cold_level_2 = 100 //Default 180
breath_cold_level_3 = 60 //Default 100
heat_level_1 = 320 //Default 360
heat_level_2 = 370 //Default 400
heat_level_3 = 600 //Default 1000
breath_heat_level_1 = 350 //Default 380 - Higher is better
breath_heat_level_2 = 400 //Default 450
breath_heat_level_3 = 800 //Default 1250
heat_discomfort_level = 295
heat_discomfort_strings = list(
"Your feathers prickle in the heat.",
@@ -56,12 +56,22 @@
cold_level_2 = 220 //Default 200
cold_level_3 = 130 //Default 120
breath_cold_level_1 = 260 //Default 240 - Lower is better
breath_cold_level_2 = 200 //Default 180
breath_cold_level_3 = 120 //Default 100
heat_level_1 = 420 //Default 360 - Higher is better
heat_level_2 = 480 //Default 400
heat_level_3 = 1100 //Default 1000
breath_heat_level_1 = 450 //Default 380 - Higher is better
breath_heat_level_2 = 530 //Default 450
breath_heat_level_3 = 1400 //Default 1250
minimum_breath_pressure = 18 //Bigger, means they need more air
body_temperature = T20C
spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED
appearance_flags = HAS_HAIR_COLOR | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR | HAS_EYE_COLOR
@@ -142,14 +152,24 @@
governments, something that permeates even to today's times. They prefer colder, tundra-like climates, much like their \
home worlds and speak a variety of languages, especially Siik and Akhani."
body_temperature = 320.15 //Even more cold resistant, even more flammable
cold_level_1 = 200 //Default 260
cold_level_2 = 140 //Default 200
cold_level_3 = 80 //Default 120
breath_cold_level_1 = 180 //Default 240 - Lower is better
breath_cold_level_2 = 100 //Default 180
breath_cold_level_3 = 60 //Default 100
heat_level_1 = 330 //Default 360
heat_level_2 = 380 //Default 400
heat_level_3 = 800 //Default 1000
breath_heat_level_1 = 360 //Default 380 - Higher is better
breath_heat_level_2 = 430 //Default 450
breath_heat_level_3 = 1000 //Default 1250
primitive_form = "Farwa"
spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED
@@ -166,6 +186,7 @@
"You feel uncomfortably warm.",
"Your overheated skin itches."
)
cold_discomfort_level = 275
has_organ = list( //No appendix.
@@ -218,10 +239,18 @@
cold_level_2 = 220 //Default 200
cold_level_3 = 130 //Default 120
breath_cold_level_1 = 250 //Default 240 - Lower is better
breath_cold_level_2 = 190 //Default 180
breath_cold_level_3 = 120 //Default 100
heat_level_1 = 420 //Default 360 - Higher is better
heat_level_2 = 480 //Default 400
heat_level_3 = 1100 //Default 1000
breath_heat_level_1 = 400 //Default 380 - Higher is better
breath_heat_level_2 = 500 //Default 450
breath_heat_level_3 = 1350 //Default 1250
reagent_tag = IS_SKRELL
has_limbs = list(
@@ -99,6 +99,17 @@
/obj/item/weapon/grown
)
/obj/item/weapon/gripper/gravekeeper //Used for handling grave things, flowers, etc.
name = ""
icon_state = "gripper"
desc = "A specialized grasping tool used in the preparation and maintenance of graves."
can_hold = list(
/obj/item/seeds,
/obj/item/weapon/grown,
/obj/item/weapon/material/gravemarker
)
/obj/item/weapon/gripper/no_use/organ
name = "organ gripper"
icon_state = "gripper-flesh"
@@ -0,0 +1,78 @@
/* Other, unaffiliated modules */
// The module that borgs on the surface have. Generally has a lot of useful tools in exchange for questionable loyalty to the crew.
/obj/item/weapon/robot_module/robot/lost
name = "lost robot module"
hide_on_manifest = 1
sprites = list(
"Drone" = "drone-lost"
)
/obj/item/weapon/robot_module/robot/lost/New(var/mob/living/silicon/robot/R)
..()
// Sec
src.modules += new /obj/item/weapon/melee/baton/shocker/robot(src)
src.modules += new /obj/item/weapon/handcuffs/cyborg(src)
src.modules += new /obj/item/borg/combat/shield(src)
// Med
src.modules += new /obj/item/borg/sight/hud/med(src)
src.modules += new /obj/item/device/healthanalyzer(src)
src.modules += new /obj/item/weapon/reagent_containers/borghypo/lost(src)
// Engi
src.modules += new /obj/item/weapon/weldingtool/electric/mounted(src)
src.modules += new /obj/item/weapon/screwdriver/cyborg(src)
src.modules += new /obj/item/weapon/wrench/cyborg(src)
src.modules += new /obj/item/weapon/wirecutters/cyborg(src)
src.modules += new /obj/item/device/multitool(src)
// Sci
src.modules += new /obj/item/device/robotanalyzer(src)
// Potato
src.emag = new /obj/item/weapon/gun/energy/retro/mounted(src)
var/datum/matter_synth/wire = new /datum/matter_synth/wire()
synths += wire
var/obj/item/stack/cable_coil/cyborg/C = new /obj/item/stack/cable_coil/cyborg(src)
C.synths = list(wire)
src.modules += C
/obj/item/weapon/robot_module/robot/gravekeeper
name = "gravekeeper robot module"
hide_on_manifest = 1
sprites = list(
"Drone" = "drone-gravekeeper",
"Sleek" = "sleek-gravekeeper"
)
/obj/item/weapon/robot_module/robot/gravekeeper/New(var/mob/living/silicon/robot/R)
..()
// For fending off animals and looters
src.modules += new /obj/item/weapon/melee/baton/shocker/robot(src)
src.modules += new /obj/item/borg/combat/shield(src)
// For repairing gravemarkers
src.modules += new /obj/item/weapon/weldingtool/electric/mounted(src)
src.modules += new /obj/item/weapon/screwdriver/cyborg(src)
src.modules += new /obj/item/weapon/wrench/cyborg(src)
// For growing flowers
src.modules += new /obj/item/weapon/material/minihoe(src)
src.modules += new /obj/item/weapon/material/hatchet(src)
src.modules += new /obj/item/device/analyzer/plant_analyzer(src)
src.modules += new /obj/item/weapon/storage/bag/plants(src)
src.modules += new /obj/item/weapon/robot_harvester(src)
// For digging and beautifying graves
src.modules += new /obj/item/weapon/shovel(src)
src.modules += new /obj/item/weapon/gripper/gravekeeper(src)
// For really persistent looters
src.emag = new /obj/item/weapon/gun/energy/retro/mounted(src)
var/datum/matter_synth/wood = new /datum/matter_synth/wood(25000)
synths += wood
@@ -0,0 +1,45 @@
/* Syndicate modules */
/obj/item/weapon/robot_module/robot/syndicate
name = "illegal robot module"
hide_on_manifest = 1
languages = list(
LANGUAGE_SOL_COMMON = 1,
LANGUAGE_TRADEBAND = 1,
LANGUAGE_UNATHI = 0,
LANGUAGE_SIIK = 0,
LANGUAGE_SKRELLIAN = 0,
LANGUAGE_ROOTLOCAL = 0,
LANGUAGE_GUTTER = 1,
LANGUAGE_SCHECHI = 0,
LANGUAGE_EAL = 1,
LANGUAGE_SIGN = 0
)
sprites = list(
"Cerberus" = "syndie_bloodhound",
"Cerberus - Treaded" = "syndie_treadhound",
"Ares" = "squats",
"Telemachus" = "toiletbotantag",
"WTOperator" = "hosborg",
"XI-GUS" = "spidersyndi",
"XI-ALP" = "syndi-heavy"
)
var/id
/obj/item/weapon/robot_module/robot/syndicate/New(var/mob/living/silicon/robot/R)
..()
loc = R
src.modules += new /obj/item/weapon/melee/energy/sword(src)
src.modules += new /obj/item/weapon/gun/energy/pulse_rifle/destroyer(src)
src.modules += new /obj/item/weapon/card/emag(src)
var/jetpack = new/obj/item/weapon/tank/jetpack/carbondioxide(src)
src.modules += jetpack
R.internals = jetpack
id = R.idcard
src.modules += id
/obj/item/weapon/robot_module/robot/syndicate/Destroy()
src.modules -= id
id = null
return ..()
@@ -0,0 +1,25 @@
/mob/living/silicon/robot/gravekeeper
lawupdate = 0
scrambledcodes = 1
icon_state = "drone-lost"
modtype = "Gravekeeper"
lawchannel = "State"
braintype = "Drone"
idcard_type = /obj/item/weapon/card/id
/mob/living/silicon/robot/gravekeeper/init()
aiCamera = new/obj/item/device/camera/siliconcam/robot_camera(src)
mmi = new /obj/item/device/mmi/digital/robot(src) // Explicitly a drone.
module = new /obj/item/weapon/robot_module/robot/gravekeeper(src)
overlays.Cut()
init_id()
updatename("Gravekeeper")
if(!cell)
cell = new /obj/item/weapon/cell/high(src) // 15k cell, as recharging stations are a lot more rare on the Surface.
laws = new /datum/ai_laws/gravekeeper()
playsound(loc, 'sound/mecha/nominalsyndi.ogg', 75, 0)
+7
View File
@@ -1059,6 +1059,13 @@ mob/proc/yank_out_object()
/mob/proc/is_muzzled()
return 0
//Exploitable Info Update
/mob/proc/amend_exploitable(var/obj/item/I)
var/obj/item/exploit_item = new I(src.loc)
exploit_addons |= exploit_item
var/exploitmsg = html_decode("\n" + "Has " + exploit_item.name + ".")
exploit_record += exploitmsg
/client/proc/check_has_body_select()
return mob && mob.hud_used && istype(mob.zone_sel, /obj/screen/zone_sel)
+1
View File
@@ -72,6 +72,7 @@
var/sec_record = ""
var/gen_record = ""
var/exploit_record = ""
var/exploit_addons = list() //Assorted things that show up at the end of the exploit_record list
var/blinded = null
var/bhunger = 0 //Carbon
var/ajourn = 0
@@ -3460,7 +3460,7 @@
/obj/item/weapon/reagent_containers/food/snacks/skrellsnacks
name = "\improper SkrellSnax"
desc = "Cured fungus shipped all the way from Jargon 4, almost like jerky! Almost."
desc = "Cured fungus shipped all the way from Qerr'balak, almost like jerky! Almost."
icon_state = "skrellsnacks"
filling_color = "#A66829"
center_of_mass = list("x"=15, "y"=12)
@@ -3495,4 +3495,4 @@
/obj/item/weapon/reagent_containers/food/snacks/croissant/New()
..()
bitesize = 2
bitesize = 2
Binary file not shown.

Before

Width:  |  Height:  |  Size: 378 KiB

After

Width:  |  Height:  |  Size: 385 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

+3 -2
View File
@@ -5382,7 +5382,7 @@
"bZz" = (/obj/machinery/portable_atmospherics/powered/pump/filled,/turf/simulated/floor/plating,/area/maintenance/robotics)
"bZA" = (/obj/machinery/portable_atmospherics/powered/scrubber,/turf/simulated/floor/plating,/area/maintenance/robotics)
"bZB" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/robotics)
"bZC" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/blast/shutters{dir = 2; id = "mining_storage"; name = "Mining Storage"},/turf/simulated/floor/tiled/dark,/area/assembly/chargebay)
"bZC" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/blast/shutters{dir = 2; id = "Skynet_launch"; name = "Mining Storage"},/turf/simulated/floor/tiled/dark,/area/assembly/chargebay)
"bZD" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/light/small{dir = 8},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/research_medical)
"bZE" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/research_medical)
"bZF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/research_medical)
@@ -10110,6 +10110,7 @@
"dMv" = (/obj/machinery/hologram/holopad,/turf/simulated/shuttle/floor,/area/shuttle/arrival/station)
"dMw" = (/obj/effect/landmark{name = "carpspawn"},/turf/space,/area/shuttle/shuttle2/arrivals_dock)
"dMx" = (/obj/effect/landmark{name = "carpspawn"},/turf/space,/area/shuttle/response_ship/thirddeck)
"dMy" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/blast/shutters{dir = 2; id = "Skynet_launch"; name = "Mech Bay"},/turf/simulated/floor/tiled/dark,/area/assembly/chargebay)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -10493,7 +10494,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvybvybvybvybvybvybvybvybvybvybvybvybvyaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvybvybvybvybvybvybvybvybvybvybvybvybvyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaabFVbOobFVbOobFVbOobFVbOobFVbOobFVbOoaadbTwbTxbTybTzbTAbTBbTCbTAbRZbTDbTEbTFbwObTGbTHbTGbysbTIbTJbLcbTKbOybOybTLbSjbOybOybTMbLgbTNbTObTPbTQbTRbTSbMYbJXbAhbAhbNbbTTbTUbLsbLsbLsbLsbTVbNjbTWbNjbTXbNjbNjbNjbpJbtybxBbTYbpJaaaaaabGKbTZbUabUbbUcbUdbUebUfbUgbUhbUibRbbUjbUjbUkbUlbRibUmbUnbUobUobUpbUqbUrbRibUsbUtbUubSTbUvbDNaaaaaabrybPsbzcbrybKrbUwbUxbUybUybUzbUAbUBbUCbUDbUEbUFbUGbUHbUIbUIbUIbUJbUKbULbUMbUNbUObTlbUPbUQbURbUSbKBbUTbUUbUVbKBbUWbUXbUYbKEbMubMvbUZbVabVbbVcbVdbVebVfbVgbVhbVibVjbVkbVkbVjbVjbVjbVjbVjaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvybvybvybvybvybvybvybvybvybvybvybvybvyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaabQdbQebQfbQebQfbQebQfbQebQfbQebQfbQebQgbVlbOqbVmbTCbTAbTBbTCbTAbRZbVnbVobVobVobVobVobVobVobVpbVqbLcbVrbVsbVtbVubVvbVwbVxbVybLgbLgbVzbLgbVAbVBbLgbVCbJXbAhbAhbVDbLqbVEbVFbVGbVHbVIbVJbNjbVKbNjbVLbNjbVMbVNbVObtybxBbtybpJaaaaaabGKbVPbVQbPgbVRbVSbVTbVUbVVbVWbVXbVYbVZbWabWbbWcbRibWdbWebWfbWgbWhbUqbWibWjbWkbWlbWmbWnbWobDNaaaaaabrybPsbWpbWqbKrbKrbWrbWsbWtbWubPAbWvbWwbWxbWybWzbWAbWBbWCbWDbWEbWFbUKbWGbWHbWIbWJbTlbKBbWKbKBbKBbKBbKBbKBbKBbKBbKEbKEbKEbKEbWLbWMbUZbWNbWObWPbWQbWRbWSbVebVhbVhbVjbWTbWUbWVbVjbWWbWXbVjbVjaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvybvybvybvybvybvybvybvybvyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafbQdbWYbWZbWYbWZbWYbWZbWYbWZbWYbWZbWYbQgbXabOqbXbbTCbXcbXdbTCbXcbRZbXebVobXfbXgbXhbXibXjbVobSfbXkbVybVybVybVybVybVybVybVybVybXlbLgbLgbLgbLgbLgbLgbXmbXnbyHbXobXmbXpbXpbXpbXpbXpbXpbXpbXqbXqbXqbXqbNjbXrbXsbpJbXtbXubXvbpJaaaaaabGKbXwbXxbLEbXybXzbRbbRbbRbbRbbRbbRbbXAbXBbXBbXCbRibRibRibRibRibXDbUqbXEbRibIGbWlbWmbWnbXFbDNaaaaaabrybXGbsIbsIbXHbKrbKrbKrbKrbKrbKrbXIbXJbXKbXJbXIbKybKybKybKybKybKybTlbXLbXMbXMbXNbTlbXObXObXObXPbXQbXRbXSbXTbXUbXVbXWbsTbXXbXYbXZbYabYbbYcbYdbWQbWRbYebVebYfbVhbYgbYhbYibYjbVkbYkbYibYlbVjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvybvybvybvybvybvybvyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaabHJbYmbHJbYmbHJbYmbHJbYmbHJbYmbHJbYmaafaafbOqbYnbYobYpbYqbYrbYsbYtbYubYvbYwbYxbYybYzbYAbYBbSfbYCbYDbYEbYFbYGbYHbYHbYHbYHbYHbYHbYHbYHbYHbYIbYJbYKbYLbYMbYNbYNbYObpJbYPbYPbYQbyVbYRbtybwfbwfbqSbqTbpJbYSbpJbpJbtybxBbYTbpJaaaaaabGJbYUbXxbLEbYVbYWbYXbYYbYZbZabZbbZcbZdbZebZebZfbZebZebZebZgbZhbZibZjbZkbRibIGbZlbLKbWnbSUbGLaaaaaabrybZmbZnbZnbZnbZobZpbsIbZqbZrbrybZsbZtbZubZtbZvbZwbZxbZybZzbZAbZBbTlbTlbZCbZCbTlbTlbZDbZEbZEbZFbZGbZHbZIbZIbZIbXRbZJbsTbZKbZLbJnbZMbZNbZObZPbWQbWRbWRbYebYebVhbVjbZQbZRbZSbZTbZUbZVbZWbZXbZYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvybvybvybvybvybvybvyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaabHJbYmbHJbYmbHJbYmbHJbYmbHJbYmbHJbYmaafaafbOqbYnbYobYpbYqbYrbYsbYtbYubYvbYwbYxbYybYzbYAbYBbSfbYCbYDbYEbYFbYGbYHbYHbYHbYHbYHbYHbYHbYHbYHbYIbYJbYKbYLbYMbYNbYNbYObpJbYPbYPbYQbyVbYRbtybwfbwfbqSbqTbpJbYSbpJbpJbtybxBbYTbpJaaaaaabGJbYUbXxbLEbYVbYWbYXbYYbYZbZabZbbZcbZdbZebZebZfbZebZebZebZgbZhbZibZjbZkbRibIGbZlbLKbWnbSUbGLaaaaaabrybZmbZnbZnbZnbZobZpbsIbZqbZrbrybZsbZtbZubZtbZvbZwbZxbZybZzbZAbZBbTlbTlbZCdMybTlbTlbZDbZEbZEbZFbZGbZHbZIbZIbZIbXRbZJbsTbZKbZLbJnbZMbZNbZObZPbWQbWRbWRbYebYebVhbVjbZQbZRbZSbZTbZUbZVbZWbZXbZYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOqbZZcaacabcaccadcaebRZcafbVobVobVobVocagcahcaicajcakcalcalcamcancaocaocaocaocaocaocaobYKbYKbYKcapcaqcarcascatcaucavcawcaxcaycaxcaxcaxcaxcaxcazcazcazcazcaAcazcazcazcaBcaCbpJbGKbGKbGJcaDbXxbLEbXycaEcaFcaGcaGcaHbZbcaIbRfbRfbRfbRfbRfbRfbRfcaIbRjcaJcaKcaLbRicaMbZlbIGcaNcaObGLcaPcaPbrybPsbsIbzcbxMbxNcaQbsIcaRbsIcaScaTcaUcaVcaUcaTcaWbZxcaXcaYcaZcbacbbcbccbdcaUcbecbecbfbXPbXPbXPbXPbXPbXPbXPbZIbXRcbgbsTcbhcbicbjbUZcbkcblcbmbWQbWRbYecbncbobVhbVjcbpcbqcbrbVjbVkcbsbVkbVjbVjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOpbOqcbtcbtbOqcbucbvcbwbRZcbxcbycbzcbAcbBcbCcbDcbEcbFcbGcbHcbIcbJcbKcaocbLcbLcbLcbLcbLcbMcbNcbObYKcbPcbQcbRcbScbTcbUcbVbpJbpJbpJbpJbpJbpJbpJbpJbpJbpJbpJbpJbpJbpJbpJbpJbpJcbWcbXcbYcbZbGJccaccbcccccdccecaFcaFccfccgbZbcchbRfccicciccicciccibRfccjbRicckcclbRibRiccmccnccmccoccpccqccrccscctccubqtbrybrybrybrybrybrybrybryccvccwccxccyccvbZwbZwbZwcczbZwbZwbZwbZwccAccBcbeccCccDccEccFccFccFccFccFbXPbXRbXRbVibsTccGbsTbsTbUZccHbUZbUZbWQbVhbVibVjbVjbVjbVjccIcbqccJccKccLccMccNccObVjbVjaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccPbOqccQccRccSccTccUccVccWccXccYccZcdacdbcdccddcdecdfcdgcdhcdicalcdjcdkcaocbLcbLcbLcbLcbLcdlcdmcbTcdncdocdpcdpcdqcbTcdocdpcdrcdscbTcdocdtcducdvcdwcdxcdycdpcdzcdAcdBcbTcdncdCcdDcdEcdFcdGcdHbPgbPgcdIcdJcdKcdLcaFbZbbZbbZbbXAbRfccicciccicciccibRfcaIbRibRibRibRiccrcdMcdNcdOcdOcdOcdPcdQcdRcdScdTcdUcdVcdWcdXcdYcdZceacebcdYcdYcdZceccedceeceecefcegcehceeceicejcekccAccBcelccBcemcenccFccFccFccFccFbXPceobXRcepceqcercesbVicetceucevcewbVecexceybVjcezceAbVjceBcbqbYibYibYicbqbYiceCceDbVkaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+6 -1
View File
@@ -7,4 +7,9 @@
/datum/map_template/cave/deadBeacon
name = "Abandoned Relay"
desc = "An unregistered comms relay, abandoned to the elements."
mappath = 'maps/submaps/cave_submaps/deadBeacon.dmm'
mappath = 'maps/submaps/cave_submaps/deadBeacon.dmm'
/datum/map_template/cave/prepper1
name = "Prepper Bunker"
desc = "A little hideaway for someone with more time and money than sense."
mappath = 'maps/submaps/cave_submaps/prepper1.dmm'
+4 -1
View File
@@ -3,4 +3,7 @@
icon_state = "submap"
/area/submap/cave/deadBeacon
name = "abandoned relay"
name = "abandoned relay"
/area/submap/cave/prepper1
name = "Prepper Bunker"
+33
View File
@@ -0,0 +1,33 @@
"a" = (/turf/template_noop,/area/template_noop)
"b" = (/turf/simulated/wall/r_wall,/area/submap/cave/prepper1)
"c" = (/obj/structure/table/steel,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/item/stack/rods,/turf/simulated/floor/plating,/area/submap/cave/prepper1)
"d" = (/obj/structure/table/steel,/obj/random/maintenance/security,/obj/item/stack/cable_coil/random,/turf/simulated/floor/plating,/area/submap/cave/prepper1)
"e" = (/obj/structure/table/steel,/obj/random/maintenance/engineering,/turf/simulated/floor/plating,/area/submap/cave/prepper1)
"f" = (/obj/structure/table/steel,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/turf/simulated/floor/plating,/area/submap/cave/prepper1)
"g" = (/obj/structure/table/steel,/obj/item/weapon/storage/box/glasses,/turf/simulated/floor/plating,/area/submap/cave/prepper1)
"h" = (/obj/structure/table/steel,/obj/random/toolbox,/turf/simulated/floor/plating,/area/submap/cave/prepper1)
"i" = (/turf/simulated/floor/plating,/area/submap/cave/prepper1)
"j" = (/obj/structure/table/steel,/obj/item/weapon/tape_roll,/obj/random/maintenance/engineering,/turf/simulated/floor/plating,/area/submap/cave/prepper1)
"k" = (/obj/structure/table/steel,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/item/stack/tile/floor/steel,/turf/simulated/floor/plating,/area/submap/cave/prepper1)
"l" = (/obj/structure/inflatable/door,/turf/simulated/floor/plating,/area/submap/cave/prepper1)
"m" = (/obj/structure/closet/wardrobe/grey,/turf/simulated/floor/plating,/area/submap/cave/prepper1)
"n" = (/obj/structure/closet/crate/freezer/rations,/turf/simulated/floor/plating,/area/submap/cave/prepper1)
"o" = (/obj/structure/reagent_dispensers/water_cooler/full,/turf/simulated/floor/plating,/area/submap/cave/prepper1)
"p" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/floor/plating,/area/submap/cave/prepper1)
"q" = (/obj/structure/table/rack,/obj/item/weapon/tank/emergency/oxygen/engi,/obj/item/weapon/tank/emergency/oxygen/engi,/obj/item/clothing/mask/gas,/obj/item/clothing/suit/armor/material/makeshift,/obj/item/clothing/head/helmet/bucket,/turf/simulated/floor/plating,/area/submap/cave/prepper1)
"r" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/plating,/area/submap/cave/prepper1)
"s" = (/obj/structure/table/steel,/obj/item/device/flashlight/lantern,/turf/simulated/floor/plating,/area/submap/cave/prepper1)
"t" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/shotgun/pump/rifle/lever,/obj/item/ammo_magazine/clip/c762,/obj/item/ammo_magazine/clip/c762,/turf/simulated/floor/plating,/area/submap/cave/prepper1)
(1,1,1) = {"
aaaaaaaaaa
aabbbbbbaa
abbcdefbba
abghiijkba
aliiiiimba
aliiiiinba
aboiiipnba
abbqrstbba
aabbbbbbaa
aaaaaaaaaa
"}
+7 -2
View File
@@ -966,7 +966,6 @@
#include "code\game\objects\structures\electricchair.dm"
#include "code\game\objects\structures\extinguisher.dm"
#include "code\game\objects\structures\flora.dm"
#include "code\game\objects\structures\ghost_pods.dm"
#include "code\game\objects\structures\girders.dm"
#include "code\game\objects\structures\gravemarker.dm"
#include "code\game\objects\structures\grille.dm"
@@ -1019,6 +1018,8 @@
#include "code\game\objects\structures\crates_lockers\closets\secure\scientist.dm"
#include "code\game\objects\structures\crates_lockers\closets\secure\secure_closets.dm"
#include "code\game\objects\structures\crates_lockers\closets\secure\security.dm"
#include "code\game\objects\structures\ghost_pods\ghost_pods.dm"
#include "code\game\objects\structures\ghost_pods\silicon.dm"
#include "code\game\objects\structures\stool_bed_chair_nest\alien_nests.dm"
#include "code\game\objects\structures\stool_bed_chair_nest\bed.dm"
#include "code\game\objects\structures\stool_bed_chair_nest\chairs.dm"
@@ -1396,6 +1397,7 @@
#include "code\modules\examine\descriptions\containers.dm"
#include "code\modules\examine\descriptions\devices.dm"
#include "code\modules\examine\descriptions\engineering.dm"
#include "code\modules\examine\descriptions\food.dm"
#include "code\modules\examine\descriptions\machines.dm"
#include "code\modules\examine\descriptions\medical.dm"
#include "code\modules\examine\descriptions\mobs.dm"
@@ -1730,7 +1732,6 @@
#include "code\modules\mob\living\silicon\robot\robot.dm"
#include "code\modules\mob\living\silicon\robot\robot_damage.dm"
#include "code\modules\mob\living\silicon\robot\robot_items.dm"
#include "code\modules\mob\living\silicon\robot\robot_modules.dm"
#include "code\modules\mob\living\silicon\robot\robot_movement.dm"
#include "code\modules\mob\living\silicon\robot\syndicate.dm"
#include "code\modules\mob\living\silicon\robot\drone\drone.dm"
@@ -1740,6 +1741,10 @@
#include "code\modules\mob\living\silicon\robot\drone\drone_items.dm"
#include "code\modules\mob\living\silicon\robot\drone\drone_manufacturer.dm"
#include "code\modules\mob\living\silicon\robot\drone\drone_say.dm"
#include "code\modules\mob\living\silicon\robot\robot_modules\event.dm"
#include "code\modules\mob\living\silicon\robot\robot_modules\station.dm"
#include "code\modules\mob\living\silicon\robot\robot_modules\syndicate.dm"
#include "code\modules\mob\living\silicon\robot\subtypes\gravekeeper.dm"
#include "code\modules\mob\living\silicon\robot\subtypes\lost_drone.dm"
#include "code\modules\mob\living\simple_animal\corpse.dm"
#include "code\modules\mob\living\simple_animal\simple_animal.dm"