mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-16 21:23:20 +00:00
@@ -15,6 +15,10 @@ var/global/list/uplink_locations = list("PDA", "Headset", "None")
|
||||
/datum/category_item/player_setup_item/antagonism/basic/sanitize_character()
|
||||
pref.uplinklocation = sanitize_inlist(pref.uplinklocation, uplink_locations, initial(pref.uplinklocation))
|
||||
|
||||
// Moved from /datum/preferences/proc/copy_to()
|
||||
/datum/category_item/player_setup_item/antagonism/basic/copy_to_mob(var/mob/living/carbon/human/character)
|
||||
character.exploit_record = pref.exploit_record
|
||||
|
||||
/datum/category_item/player_setup_item/antagonism/basic/content(var/mob/user)
|
||||
. +="<b>Uplink Type : <a href='?src=\ref[src];antagtask=1'>[pref.uplinklocation]</a></b>"
|
||||
. +="<br>"
|
||||
|
||||
@@ -40,6 +40,25 @@ datum/preferences/proc/set_biological_gender(var/gender)
|
||||
pref.spawnpoint = sanitize_inlist(pref.spawnpoint, spawntypes, initial(pref.spawnpoint))
|
||||
pref.be_random_name = sanitize_integer(pref.be_random_name, 0, 1, initial(pref.be_random_name))
|
||||
|
||||
// Moved from /datum/preferences/proc/copy_to()
|
||||
/datum/category_item/player_setup_item/general/basic/copy_to_mob(var/mob/living/carbon/human/character)
|
||||
if(config.humans_need_surnames)
|
||||
var/firstspace = findtext(pref.real_name, " ")
|
||||
var/name_length = length(pref.real_name)
|
||||
if(!firstspace) //we need a surname
|
||||
pref.real_name += " [pick(last_names)]"
|
||||
else if(firstspace == name_length)
|
||||
pref.real_name += "[pick(last_names)]"
|
||||
|
||||
character.real_name = pref.real_name
|
||||
character.name = character.real_name
|
||||
if(character.dna)
|
||||
character.dna.real_name = character.real_name
|
||||
|
||||
character.gender = pref.biological_gender
|
||||
character.identifying_gender = pref.identifying_gender
|
||||
character.age = pref.age
|
||||
|
||||
/datum/category_item/player_setup_item/general/basic/content()
|
||||
. = list()
|
||||
. += "<b>Name:</b> "
|
||||
|
||||
@@ -76,6 +76,53 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
|
||||
if(!pref.organ_data) pref.organ_data = list()
|
||||
if(!pref.rlimb_data) pref.rlimb_data = list()
|
||||
|
||||
// Moved from /datum/preferences/proc/copy_to()
|
||||
/datum/category_item/player_setup_item/general/body/copy_to_mob(var/mob/living/carbon/human/character)
|
||||
// Copy basic values
|
||||
character.r_eyes = pref.r_eyes
|
||||
character.g_eyes = pref.g_eyes
|
||||
character.b_eyes = pref.b_eyes
|
||||
character.h_style = pref.h_style
|
||||
character.r_hair = pref.r_hair
|
||||
character.g_hair = pref.g_hair
|
||||
character.b_hair = pref.b_hair
|
||||
character.f_style = pref.f_style
|
||||
character.r_facial = pref.r_facial
|
||||
character.g_facial = pref.g_facial
|
||||
character.b_facial = pref.b_facial
|
||||
character.r_skin = pref.r_skin
|
||||
character.g_skin = pref.g_skin
|
||||
character.b_skin = pref.b_skin
|
||||
character.s_tone = pref.s_tone
|
||||
character.h_style = pref.h_style
|
||||
character.f_style = pref.f_style
|
||||
character.b_type = pref.b_type
|
||||
|
||||
// Destroy/cyborgize organs and limbs.
|
||||
for(var/name in list(BP_HEAD, BP_L_HAND, BP_R_HAND, BP_L_ARM, BP_R_ARM, BP_L_FOOT, BP_R_FOOT, BP_L_LEG, BP_R_LEG, BP_GROIN, BP_TORSO))
|
||||
var/status = pref.organ_data[name]
|
||||
var/obj/item/organ/external/O = character.organs_by_name[name]
|
||||
if(O)
|
||||
if(status == "amputated")
|
||||
O.remove_rejuv()
|
||||
else if(status == "cyborg")
|
||||
if(pref.rlimb_data[name])
|
||||
O.robotize(pref.rlimb_data[name])
|
||||
else
|
||||
O.robotize()
|
||||
|
||||
for(var/name in list(O_HEART,O_EYES,O_BRAIN))
|
||||
var/status = pref.organ_data[name]
|
||||
if(!status)
|
||||
continue
|
||||
var/obj/item/organ/I = character.internal_organs_by_name[name]
|
||||
if(I)
|
||||
if(status == "assisted")
|
||||
I.mechassist()
|
||||
else if(status == "mechanical")
|
||||
I.robotize()
|
||||
return
|
||||
|
||||
/datum/category_item/player_setup_item/general/body/content(var/mob/user)
|
||||
. = list()
|
||||
if(!pref.preview_icon)
|
||||
|
||||
@@ -18,6 +18,30 @@
|
||||
S["backbag"] << pref.backbag
|
||||
S["pdachoice"] << pref.pdachoice
|
||||
|
||||
// Moved from /datum/preferences/proc/copy_to()
|
||||
/datum/category_item/player_setup_item/general/equipment/copy_to_mob(var/mob/living/carbon/human/character)
|
||||
character.all_underwear.Cut()
|
||||
character.all_underwear_metadata.Cut()
|
||||
|
||||
for(var/underwear_category_name in pref.all_underwear)
|
||||
var/datum/category_group/underwear/underwear_category = global_underwear.categories_by_name[underwear_category_name]
|
||||
if(underwear_category)
|
||||
var/underwear_item_name = pref.all_underwear[underwear_category_name]
|
||||
character.all_underwear[underwear_category_name] = underwear_category.items_by_name[underwear_item_name]
|
||||
if(pref.all_underwear_metadata[underwear_category_name])
|
||||
character.all_underwear_metadata[underwear_category_name] = pref.all_underwear_metadata[underwear_category_name]
|
||||
else
|
||||
pref.all_underwear -= underwear_category_name
|
||||
|
||||
// TODO - Looks like this is duplicating the work of sanitize_character() if so, remove
|
||||
if(pref.backbag > 4 || pref.backbag < 1)
|
||||
pref.backbag = 1 //Same as above
|
||||
character.backbag = pref.backbag
|
||||
|
||||
if(pref.pdachoice > 3 || pref.pdachoice < 1)
|
||||
pref.pdachoice = 1
|
||||
character.pdachoice = pref.pdachoice
|
||||
|
||||
/datum/category_item/player_setup_item/general/equipment/sanitize_character()
|
||||
if(!islist(pref.gear)) pref.gear = list()
|
||||
|
||||
|
||||
@@ -30,6 +30,16 @@
|
||||
|
||||
pref.nanotrasen_relation = sanitize_inlist(pref.nanotrasen_relation, COMPANY_ALIGNMENTS, initial(pref.nanotrasen_relation))
|
||||
|
||||
// Moved from /datum/preferences/proc/copy_to()
|
||||
/datum/category_item/player_setup_item/general/background/copy_to_mob(var/mob/living/carbon/human/character)
|
||||
character.med_record = pref.med_record
|
||||
character.sec_record = pref.sec_record
|
||||
character.gen_record = pref.gen_record
|
||||
character.home_system = pref.home_system
|
||||
character.citizenship = pref.citizenship
|
||||
character.personal_faction = pref.faction
|
||||
character.religion = pref.religion
|
||||
|
||||
/datum/category_item/player_setup_item/general/background/content(var/mob/user)
|
||||
. += "<b>Background Information</b><br>"
|
||||
. += "[company_name] Relation: <a href='?src=\ref[src];nt_relation=1'>[pref.nanotrasen_relation]</a><br/>"
|
||||
|
||||
@@ -36,6 +36,18 @@
|
||||
/datum/category_item/player_setup_item/general/flavor/sanitize_character()
|
||||
return
|
||||
|
||||
// Moved from /datum/preferences/proc/copy_to()
|
||||
/datum/category_item/player_setup_item/general/flavor/copy_to_mob(var/mob/living/carbon/human/character)
|
||||
character.flavor_texts["general"] = pref.flavor_texts["general"]
|
||||
character.flavor_texts["head"] = pref.flavor_texts["head"]
|
||||
character.flavor_texts["face"] = pref.flavor_texts["face"]
|
||||
character.flavor_texts["eyes"] = pref.flavor_texts["eyes"]
|
||||
character.flavor_texts["torso"] = pref.flavor_texts["torso"]
|
||||
character.flavor_texts["arms"] = pref.flavor_texts["arms"]
|
||||
character.flavor_texts["hands"] = pref.flavor_texts["hands"]
|
||||
character.flavor_texts["legs"] = pref.flavor_texts["legs"]
|
||||
character.flavor_texts["feet"] = pref.flavor_texts["feet"]
|
||||
|
||||
/datum/category_item/player_setup_item/general/flavor/content(var/mob/user)
|
||||
. += "<b>Flavor:</b><br>"
|
||||
. += "<a href='?src=\ref[src];flavor_text=open'>Set Flavor Text</a><br/>"
|
||||
|
||||
@@ -29,9 +29,13 @@
|
||||
path = /obj/item/clothing/accessory/armband/science
|
||||
|
||||
/datum/gear/accessory/wallet
|
||||
display_name = "wallet"
|
||||
display_name = "wallet, orange"
|
||||
path = /obj/item/weapon/storage/wallet/random
|
||||
|
||||
/datum/gear/accessory/wallet_poly
|
||||
display_name = "wallet, polychromic"
|
||||
path = /obj/item/weapon/storage/wallet/poly
|
||||
|
||||
/datum/gear/accessory/holster
|
||||
display_name = "holster, armpit"
|
||||
path = /obj/item/clothing/accessory/holster/armpit
|
||||
@@ -172,32 +176,32 @@
|
||||
/datum/gear/accessory/brown_vest
|
||||
display_name = "webbing, engineering"
|
||||
path = /obj/item/clothing/accessory/storage/brown_vest
|
||||
allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer")
|
||||
allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor")
|
||||
|
||||
/datum/gear/accessory/black_vest
|
||||
display_name = "webbing, security"
|
||||
path = /obj/item/clothing/accessory/storage/black_vest
|
||||
allowed_roles = list("Security Officer","Head of Security","Warden")
|
||||
allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor")
|
||||
|
||||
/datum/gear/accessory/white_vest
|
||||
display_name = "webbing, medical"
|
||||
path = /obj/item/clothing/accessory/storage/white_vest
|
||||
allowed_roles = list("Paramedic","Chief Medical Officer","Medical Doctor")
|
||||
allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor")
|
||||
|
||||
/datum/gear/accessory/brown_drop_pouches
|
||||
display_name = "drop pouches, engineering"
|
||||
path = /obj/item/clothing/accessory/storage/brown_drop_pouches
|
||||
allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer")
|
||||
allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor")
|
||||
|
||||
/datum/gear/accessory/black_drop_pouches
|
||||
display_name = "drop pouches, security"
|
||||
path = /obj/item/clothing/accessory/storage/black_drop_pouches
|
||||
allowed_roles = list("Security Officer","Head of Security","Warden")
|
||||
allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor")
|
||||
|
||||
/datum/gear/accessory/white_drop_pouches
|
||||
display_name = "drop pouches, medical"
|
||||
path = /obj/item/clothing/accessory/storage/white_drop_pouches
|
||||
allowed_roles = list("Paramedic","Chief Medical Officer","Medical Doctor")
|
||||
allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor")
|
||||
|
||||
/datum/gear/accessory/webbing
|
||||
display_name = "webbing, simple"
|
||||
|
||||
@@ -17,3 +17,19 @@
|
||||
/datum/gear/ashtray
|
||||
display_name = "ashtray, plastic"
|
||||
path = /obj/item/weapon/material/ashtray/plastic
|
||||
|
||||
/datum/gear/cigar
|
||||
display_name = "cigar"
|
||||
path = /obj/item/clothing/mask/smokable/cigarette/cigar
|
||||
|
||||
/datum/gear/cigarettes
|
||||
display_name = "cigarette selection"
|
||||
path = /obj/item/weapon/storage/fancy/cigarettes
|
||||
|
||||
/datum/gear/cigarettes/New()
|
||||
..()
|
||||
var/list/cigarettes = list()
|
||||
for(var/cigarette in (typesof(/obj/item/weapon/storage/fancy/cigarettes) - typesof(/obj/item/weapon/storage/fancy/cigarettes/killthroat)))
|
||||
var/obj/item/weapon/storage/fancy/cigarettes/cigarette_brand = cigarette
|
||||
cigarettes[initial(cigarette_brand.name)] = cigarette_brand
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cigarettes))
|
||||
@@ -72,6 +72,10 @@
|
||||
for(var/datum/category_group/player_setup_category/PS in categories)
|
||||
PS.save_preferences(S)
|
||||
|
||||
/datum/category_collection/player_setup_collection/proc/copy_to_mob(var/mob/living/carbon/human/C)
|
||||
for(var/datum/category_group/player_setup_category/PS in categories)
|
||||
PS.copy_to_mob(C)
|
||||
|
||||
/datum/category_collection/player_setup_collection/proc/header()
|
||||
var/dat = ""
|
||||
for(var/datum/category_group/player_setup_category/PS in categories)
|
||||
@@ -143,6 +147,10 @@
|
||||
for(var/datum/category_item/player_setup_item/PI in items)
|
||||
PI.save_preferences(S)
|
||||
|
||||
/datum/category_group/player_setup_category/proc/copy_to_mob(var/mob/living/carbon/human/C)
|
||||
for(var/datum/category_item/player_setup_item/PI in items)
|
||||
PI.copy_to_mob(C)
|
||||
|
||||
/datum/category_group/player_setup_category/proc/content(var/mob/user)
|
||||
. = "<table style='width:100%'><tr style='vertical-align:top'><td style='width:50%'>"
|
||||
var/current = 0
|
||||
@@ -201,6 +209,12 @@
|
||||
/datum/category_item/player_setup_item/proc/save_preferences(var/savefile/S)
|
||||
return
|
||||
|
||||
/*
|
||||
* Called when the item is asked to apply its per character settings to a new mob.
|
||||
*/
|
||||
/datum/category_item/player_setup_item/proc/copy_to_mob(var/mob/living/carbon/human/C)
|
||||
return
|
||||
|
||||
/datum/category_item/player_setup_item/proc/content()
|
||||
return
|
||||
|
||||
|
||||
@@ -18,6 +18,11 @@
|
||||
if(!pref.skills.len) pref.ZeroSkills()
|
||||
if(pref.used_skillpoints < 0) pref.used_skillpoints = 0
|
||||
|
||||
// Moved from /datum/preferences/proc/copy_to()
|
||||
/datum/category_item/player_setup_item/skills/copy_to_mob(var/mob/living/carbon/human/character)
|
||||
character.skills = pref.skills
|
||||
character.used_skillpoints = pref.used_skillpoints
|
||||
|
||||
/datum/category_item/player_setup_item/skills/content()
|
||||
. = list()
|
||||
. += "<b>Select your Skills</b><br>"
|
||||
|
||||
@@ -1,15 +1,3 @@
|
||||
// Super Global Stuff
|
||||
/datum/category_collection/player_setup_collection/proc/copy_to_mob(var/mob/living/carbon/human/C)
|
||||
for(var/datum/category_group/player_setup_category/PS in categories)
|
||||
PS.copy_to_mob(C)
|
||||
|
||||
/datum/category_group/player_setup_category/proc/copy_to_mob(var/mob/living/carbon/human/C)
|
||||
for(var/datum/category_item/player_setup_item/PI in items)
|
||||
PI.copy_to_mob(C)
|
||||
|
||||
/datum/category_item/player_setup_item/proc/copy_to_mob(var/mob/living/carbon/human/C)
|
||||
return
|
||||
|
||||
// Global stuff that will put us on the map
|
||||
/datum/category_group/player_setup_category/vore
|
||||
name = "VORE"
|
||||
|
||||
@@ -254,123 +254,14 @@ datum/preferences
|
||||
// Sanitizing rather than saving as someone might still be editing when copy_to occurs.
|
||||
player_setup.sanitize_setup()
|
||||
|
||||
// VOREStation Edit - Start
|
||||
player_setup.copy_to_mob(character)
|
||||
// VOREStation Edit - End
|
||||
|
||||
// This needs to happen before anything else becuase it sets some variables.
|
||||
character.set_species(species)
|
||||
|
||||
// Special Case: This references variables owned by two different datums, so do it here.
|
||||
if(be_random_name)
|
||||
real_name = random_name(identifying_gender,species)
|
||||
|
||||
if(config.humans_need_surnames)
|
||||
var/firstspace = findtext(real_name, " ")
|
||||
var/name_length = length(real_name)
|
||||
if(!firstspace) //we need a surname
|
||||
real_name += " [pick(last_names)]"
|
||||
else if(firstspace == name_length)
|
||||
real_name += "[pick(last_names)]"
|
||||
|
||||
character.real_name = real_name
|
||||
character.name = character.real_name
|
||||
if(character.dna)
|
||||
character.dna.real_name = character.real_name
|
||||
|
||||
character.flavor_texts["general"] = flavor_texts["general"]
|
||||
character.flavor_texts["head"] = flavor_texts["head"]
|
||||
character.flavor_texts["face"] = flavor_texts["face"]
|
||||
character.flavor_texts["eyes"] = flavor_texts["eyes"]
|
||||
character.flavor_texts["torso"] = flavor_texts["torso"]
|
||||
character.flavor_texts["arms"] = flavor_texts["arms"]
|
||||
character.flavor_texts["hands"] = flavor_texts["hands"]
|
||||
character.flavor_texts["legs"] = flavor_texts["legs"]
|
||||
character.flavor_texts["feet"] = flavor_texts["feet"]
|
||||
|
||||
character.med_record = med_record
|
||||
character.sec_record = sec_record
|
||||
character.gen_record = gen_record
|
||||
character.exploit_record = exploit_record
|
||||
|
||||
character.gender = biological_gender
|
||||
character.identifying_gender = identifying_gender
|
||||
character.age = age
|
||||
character.b_type = b_type
|
||||
|
||||
character.r_eyes = r_eyes
|
||||
character.g_eyes = g_eyes
|
||||
character.b_eyes = b_eyes
|
||||
|
||||
character.h_style = h_style
|
||||
character.r_hair = r_hair
|
||||
character.g_hair = g_hair
|
||||
character.b_hair = b_hair
|
||||
|
||||
character.f_style = f_style
|
||||
character.r_facial = r_facial
|
||||
character.g_facial = g_facial
|
||||
character.b_facial = b_facial
|
||||
|
||||
character.r_skin = r_skin
|
||||
character.g_skin = g_skin
|
||||
character.b_skin = b_skin
|
||||
|
||||
character.s_tone = s_tone
|
||||
|
||||
character.h_style = h_style
|
||||
character.f_style = f_style
|
||||
|
||||
character.home_system = home_system
|
||||
character.citizenship = citizenship
|
||||
character.personal_faction = faction
|
||||
character.religion = religion
|
||||
|
||||
character.skills = skills
|
||||
character.used_skillpoints = used_skillpoints
|
||||
|
||||
// Destroy/cyborgize organs and limbs.
|
||||
for(var/name in list(BP_HEAD, BP_L_HAND, BP_R_HAND, BP_L_ARM, BP_R_ARM, BP_L_FOOT, BP_R_FOOT, BP_L_LEG, BP_R_LEG, BP_GROIN, BP_TORSO))
|
||||
var/status = organ_data[name]
|
||||
var/obj/item/organ/external/O = character.organs_by_name[name]
|
||||
if(O)
|
||||
if(status == "amputated")
|
||||
O.remove_rejuv()
|
||||
else if(status == "cyborg")
|
||||
if(rlimb_data[name])
|
||||
O.robotize(rlimb_data[name])
|
||||
else
|
||||
O.robotize()
|
||||
|
||||
for(var/name in list(O_HEART,O_EYES,O_BRAIN))
|
||||
var/status = organ_data[name]
|
||||
if(!status)
|
||||
continue
|
||||
var/obj/item/organ/I = character.internal_organs_by_name[name]
|
||||
if(I)
|
||||
if(status == "assisted")
|
||||
I.mechassist()
|
||||
else if(status == "mechanical")
|
||||
I.robotize()
|
||||
|
||||
character.all_underwear.Cut()
|
||||
character.all_underwear_metadata.Cut()
|
||||
|
||||
for(var/underwear_category_name in all_underwear)
|
||||
var/datum/category_group/underwear/underwear_category = global_underwear.categories_by_name[underwear_category_name]
|
||||
if(underwear_category)
|
||||
var/underwear_item_name = all_underwear[underwear_category_name]
|
||||
character.all_underwear[underwear_category_name] = underwear_category.items_by_name[underwear_item_name]
|
||||
if(all_underwear_metadata[underwear_category_name])
|
||||
character.all_underwear_metadata[underwear_category_name] = all_underwear_metadata[underwear_category_name]
|
||||
else
|
||||
all_underwear -= underwear_category_name
|
||||
|
||||
if(backbag > 4 || backbag < 1)
|
||||
backbag = 1 //Same as above
|
||||
character.backbag = backbag
|
||||
|
||||
if(pdachoice > 3 || pdachoice < 1)
|
||||
pdachoice = 1
|
||||
character.pdachoice = pdachoice
|
||||
// Ask the preferences datums to apply their own settings to the new mob
|
||||
player_setup.copy_to_mob(character)
|
||||
|
||||
if(icon_updates)
|
||||
character.force_update_limbs()
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#define LOC_VAULT 5
|
||||
#define LOC_CONSTR 6
|
||||
#define LOC_TECH 7
|
||||
#define LOC_TACTICAL 8
|
||||
#define LOC_GARDEN 8
|
||||
|
||||
#define VERM_MICE 0
|
||||
#define VERM_LIZARDS 1
|
||||
@@ -50,9 +50,9 @@
|
||||
if(LOC_TECH)
|
||||
spawn_area_type = /area/storage/tech
|
||||
locstring = "technical storage"
|
||||
if(LOC_TACTICAL)
|
||||
spawn_area_type = /area/security/tactical
|
||||
locstring = "tactical equipment storage"
|
||||
if(LOC_GARDEN)
|
||||
spawn_area_type = /area/hydroponics/garden
|
||||
locstring = "the public garden"
|
||||
|
||||
for(var/areapath in typesof(spawn_area_type))
|
||||
var/area/A = locate(areapath)
|
||||
@@ -102,7 +102,7 @@
|
||||
#undef LOC_HYDRO
|
||||
#undef LOC_VAULT
|
||||
#undef LOC_TECH
|
||||
#undef LOC_TACTICAL
|
||||
#undef LOC_GARDEN
|
||||
|
||||
#undef VERM_MICE
|
||||
#undef VERM_LIZARDS
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// All mobs should have custom emote, really..
|
||||
//m_type == 1 --> visual.
|
||||
//m_type == 2 --> audible
|
||||
/mob/proc/custom_emote(var/m_type=1,var/message = null)
|
||||
/mob/proc/custom_emote(var/m_type=1,var/message = null,var/range=world.view)
|
||||
if(stat || !use_me && usr == src)
|
||||
src << "You are unable to emote."
|
||||
return
|
||||
@@ -23,42 +23,23 @@
|
||||
if (message)
|
||||
log_emote("[name]/[key] : [message]")
|
||||
|
||||
//Hearing gasp and such every five seconds is not good emotes were not global for a reason.
|
||||
// Hearing gasp and such every five seconds is not good emotes were not global for a reason.
|
||||
// Maybe some people are okay with that.
|
||||
|
||||
for(var/mob/M in player_list)
|
||||
if (!M.client)
|
||||
continue //skip monkeys and leavers
|
||||
if (istype(M, /mob/new_player))
|
||||
continue
|
||||
if(findtext(message," snores.")) //Because we have so many sleeping people.
|
||||
break
|
||||
if(M.stat == DEAD && M.is_preference_enabled(/datum/client_preference/ghost_sight) && !(M in viewers(src,null)))
|
||||
M.show_message(message, m_type)
|
||||
var/turf/T = get_turf(src)
|
||||
if(!T) return
|
||||
var/list/in_range = get_mobs_and_objs_in_view_fast(T,range,2)
|
||||
var/list/m_viewers = in_range["mobs"]
|
||||
var/list/o_viewers = in_range["objs"]
|
||||
|
||||
if (m_type & 1)
|
||||
var/list/see = get_mobs_or_objects_in_view(world.view,src) | viewers(get_turf(src), null)
|
||||
for(var/I in see)
|
||||
if(isobj(I))
|
||||
spawn(0)
|
||||
if(I) //It's possible that it could be deleted in the meantime.
|
||||
var/obj/O = I
|
||||
O.see_emote(src, message, 1)
|
||||
else if(ismob(I))
|
||||
var/mob/M = I
|
||||
M.show_message(message, 1)
|
||||
|
||||
else if (m_type & 2)
|
||||
var/list/hear = get_mobs_or_objects_in_view(world.view,src)
|
||||
for(var/I in hear)
|
||||
if(isobj(I))
|
||||
spawn(0)
|
||||
if(I) //It's possible that it could be deleted in the meantime.
|
||||
var/obj/O = I
|
||||
O.see_emote(src, message, 2)
|
||||
else if(ismob(I))
|
||||
var/mob/M = I
|
||||
M.show_message(message, 2)
|
||||
for(var/mob/M in m_viewers)
|
||||
spawn(0) // It's possible that it could be deleted in the meantime, or that it runtimes.
|
||||
if(M)
|
||||
M.show_message(message, m_type)
|
||||
for(var/obj/O in o_viewers)
|
||||
spawn(0)
|
||||
if(O)
|
||||
O.see_emote(src, message, m_type)
|
||||
|
||||
/mob/proc/emote_dead(var/message)
|
||||
|
||||
|
||||
@@ -1050,7 +1050,11 @@
|
||||
if(copytext(hud.icon_state,1,4) == "hud") //ugly, but icon comparison is worse, I believe
|
||||
client.images.Remove(hud)
|
||||
|
||||
client.screen.Remove(global_hud.blurry, global_hud.druggy, global_hud.vimpaired, global_hud.darkMask, global_hud.nvg, global_hud.thermal, global_hud.meson, global_hud.science)
|
||||
client.screen.Remove(global_hud.blurry, global_hud.druggy, global_hud.vimpaired, global_hud.darkMask, global_hud.nvg, global_hud.thermal, global_hud.meson, global_hud.science, global_hud.whitense)
|
||||
|
||||
if(istype(client.eye,/obj/machinery/camera))
|
||||
var/obj/machinery/camera/cam = client.eye
|
||||
client.screen |= cam.client_huds
|
||||
|
||||
if(damageoverlay.overlays)
|
||||
damageoverlay.overlays = list()
|
||||
|
||||
@@ -5,11 +5,4 @@
|
||||
destroy_surroundings = 1
|
||||
a_intent = I_HURT
|
||||
hostile = 1
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/Life()
|
||||
|
||||
. = ..()
|
||||
if(!.)
|
||||
walk(src, 0)
|
||||
return 0
|
||||
|
||||
@@ -118,6 +118,8 @@
|
||||
living_mob_list += src
|
||||
stat = CONSCIOUS
|
||||
density = 1
|
||||
else
|
||||
walk(src, 0)
|
||||
return 0
|
||||
|
||||
|
||||
|
||||
@@ -42,12 +42,9 @@
|
||||
// Parameters: None
|
||||
// Description: Adds a static overlay to the client's screen.
|
||||
/mob/living/voice/Login()
|
||||
var/obj/screen/static_effect = new() //Since what the player sees is essentially a video feed, from a vast distance away, the view isn't going to be perfect.
|
||||
static_effect.screen_loc = ui_entire_screen
|
||||
static_effect.icon = 'icons/effects/static.dmi'
|
||||
static_effect.icon_state = "1 light"
|
||||
static_effect.mouse_opacity = 0 //So the static doesn't get in the way of clicking.
|
||||
client.screen.Add(static_effect)
|
||||
..()
|
||||
client.screen |= global_hud.whitense
|
||||
client.screen |= global_hud.darkMask
|
||||
|
||||
// Proc: Destroy()
|
||||
// Parameters: None
|
||||
@@ -110,7 +107,7 @@
|
||||
// Proc: say()
|
||||
// Parameters: 4 (generic say() arguments)
|
||||
// Description: Adds a speech bubble to the communicator device, then calls ..() to do the real work.
|
||||
/mob/living/voice/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="")
|
||||
/mob/living/voice/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/whispering=0)
|
||||
//Speech bubbles.
|
||||
if(comm)
|
||||
var/speech_bubble_test = say_test(message)
|
||||
@@ -122,4 +119,8 @@
|
||||
M << speech_bubble
|
||||
src << speech_bubble
|
||||
|
||||
..(message, speaking, verb, alt_name) //mob/living/say() can do the actual talking.
|
||||
..(message, speaking, verb, alt_name, whispering) //mob/living/say() can do the actual talking.
|
||||
|
||||
/mob/living/voice/custom_emote(var/m_type=1,var/message = null,var/range=world.view)
|
||||
if(!comm) return
|
||||
..(m_type,message,comm.video_range)
|
||||
|
||||
@@ -508,9 +508,14 @@
|
||||
/mob/new_player/is_ready()
|
||||
return ready && ..()
|
||||
|
||||
// Prevents lobby players from seeing say, even with ghostears
|
||||
/mob/new_player/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "",var/italics = 0, var/mob/speaker = null)
|
||||
return
|
||||
|
||||
// Prevents lobby players from seeing emotes, even with ghosteyes
|
||||
/mob/new_player/show_message(msg, type, alt, alt_type)
|
||||
return
|
||||
|
||||
/mob/new_player/hear_radio()
|
||||
return
|
||||
|
||||
|
||||
@@ -1105,7 +1105,6 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
W.loc = owner
|
||||
|
||||
/obj/item/organ/external/removed(var/mob/living/user, var/ignore_children = 0)
|
||||
|
||||
if(!owner)
|
||||
return
|
||||
var/is_robotic = robotic >= ORGAN_ROBOT
|
||||
@@ -1161,6 +1160,8 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
qdel(spark_system)
|
||||
qdel(src)
|
||||
|
||||
victim.update_body()
|
||||
|
||||
/obj/item/organ/external/proc/disfigure(var/type = "brute")
|
||||
if (disfigured)
|
||||
return
|
||||
@@ -1246,216 +1247,3 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
if(6 to INFINITY)
|
||||
flavor_text += "a ton of [wound]\s"
|
||||
return english_list(flavor_text)
|
||||
|
||||
/****************************************************
|
||||
ORGAN DEFINES
|
||||
****************************************************/
|
||||
|
||||
/obj/item/organ/external/chest
|
||||
name = "upper body"
|
||||
organ_tag = BP_TORSO
|
||||
icon_name = "torso"
|
||||
max_damage = 100
|
||||
min_broken_damage = 35
|
||||
w_class = 5
|
||||
body_part = UPPER_TORSO
|
||||
vital = 1
|
||||
amputation_point = "spine"
|
||||
joint = "neck"
|
||||
dislocated = -1
|
||||
gendered_icon = 1
|
||||
cannot_amputate = 1
|
||||
parent_organ = null
|
||||
encased = "ribcage"
|
||||
organ_rel_size = 70
|
||||
base_miss_chance = 10
|
||||
|
||||
/obj/item/organ/external/chest/robotize()
|
||||
if(..())
|
||||
// Give them a new cell.
|
||||
owner.internal_organs_by_name["cell"] = new /obj/item/organ/internal/cell(owner,1)
|
||||
|
||||
/obj/item/organ/external/groin
|
||||
name = "lower body"
|
||||
organ_tag = BP_GROIN
|
||||
icon_name = "groin"
|
||||
max_damage = 100
|
||||
min_broken_damage = 35
|
||||
w_class = 5
|
||||
body_part = LOWER_TORSO
|
||||
vital = 1
|
||||
parent_organ = BP_TORSO
|
||||
amputation_point = "lumbar"
|
||||
joint = "hip"
|
||||
dislocated = -1
|
||||
gendered_icon = 1
|
||||
organ_rel_size = 30
|
||||
|
||||
/obj/item/organ/external/arm
|
||||
organ_tag = "l_arm"
|
||||
name = "left arm"
|
||||
icon_name = "l_arm"
|
||||
max_damage = 50
|
||||
min_broken_damage = 30
|
||||
w_class = 3
|
||||
body_part = ARM_LEFT
|
||||
parent_organ = BP_TORSO
|
||||
joint = "left elbow"
|
||||
amputation_point = "left shoulder"
|
||||
can_grasp = 1
|
||||
|
||||
/obj/item/organ/external/arm/right
|
||||
organ_tag = "r_arm"
|
||||
name = "right arm"
|
||||
icon_name = "r_arm"
|
||||
body_part = ARM_RIGHT
|
||||
joint = "right elbow"
|
||||
amputation_point = "right shoulder"
|
||||
|
||||
/obj/item/organ/external/leg
|
||||
organ_tag = "l_leg"
|
||||
name = "left leg"
|
||||
icon_name = "l_leg"
|
||||
max_damage = 50
|
||||
min_broken_damage = 30
|
||||
w_class = 3
|
||||
body_part = LEG_LEFT
|
||||
icon_position = LEFT
|
||||
parent_organ = BP_GROIN
|
||||
joint = "left knee"
|
||||
amputation_point = "left hip"
|
||||
can_stand = 1
|
||||
|
||||
/obj/item/organ/external/leg/right
|
||||
organ_tag = "r_leg"
|
||||
name = "right leg"
|
||||
icon_name = "r_leg"
|
||||
body_part = LEG_RIGHT
|
||||
icon_position = RIGHT
|
||||
joint = "right knee"
|
||||
amputation_point = "right hip"
|
||||
|
||||
/obj/item/organ/external/foot
|
||||
organ_tag = "l_foot"
|
||||
name = "left foot"
|
||||
icon_name = "l_foot"
|
||||
min_broken_damage = 15
|
||||
w_class = 2
|
||||
body_part = FOOT_LEFT
|
||||
icon_position = LEFT
|
||||
parent_organ = "l_leg"
|
||||
joint = "left ankle"
|
||||
amputation_point = "left ankle"
|
||||
can_stand = 1
|
||||
organ_rel_size = 10
|
||||
base_miss_chance = 50
|
||||
|
||||
/obj/item/organ/external/foot/removed()
|
||||
if(owner) owner.u_equip(owner.shoes)
|
||||
..()
|
||||
|
||||
/obj/item/organ/external/foot/right
|
||||
organ_tag = "r_foot"
|
||||
name = "right foot"
|
||||
icon_name = "r_foot"
|
||||
body_part = FOOT_RIGHT
|
||||
icon_position = RIGHT
|
||||
parent_organ = "r_leg"
|
||||
joint = "right ankle"
|
||||
amputation_point = "right ankle"
|
||||
|
||||
/obj/item/organ/external/hand
|
||||
organ_tag = "l_hand"
|
||||
name = "left hand"
|
||||
icon_name = "l_hand"
|
||||
min_broken_damage = 15
|
||||
w_class = 2
|
||||
body_part = HAND_LEFT
|
||||
parent_organ = "l_arm"
|
||||
joint = "left wrist"
|
||||
amputation_point = "left wrist"
|
||||
can_grasp = 1
|
||||
organ_rel_size = 10
|
||||
base_miss_chance = 50
|
||||
|
||||
/obj/item/organ/external/hand/removed()
|
||||
owner.u_equip(owner.gloves)
|
||||
..()
|
||||
|
||||
/obj/item/organ/external/hand/right
|
||||
organ_tag = "r_hand"
|
||||
name = "right hand"
|
||||
icon_name = "r_hand"
|
||||
body_part = HAND_RIGHT
|
||||
parent_organ = "r_arm"
|
||||
joint = "right wrist"
|
||||
amputation_point = "right wrist"
|
||||
|
||||
/obj/item/organ/external/head
|
||||
organ_tag = BP_HEAD
|
||||
icon_name = "head"
|
||||
name = "head"
|
||||
max_damage = 75
|
||||
min_broken_damage = 35
|
||||
w_class = 3
|
||||
body_part = HEAD
|
||||
vital = 1
|
||||
parent_organ = BP_TORSO
|
||||
joint = "jaw"
|
||||
amputation_point = "neck"
|
||||
gendered_icon = 1
|
||||
encased = "skull"
|
||||
base_miss_chance = 40
|
||||
|
||||
var/eye_icon = "eyes_s"
|
||||
|
||||
// These organs are important for robotizing at chargen.
|
||||
/obj/item/organ/external/head/robotize(var/company, var/skip_prosthetics, var/keep_organs)
|
||||
return ..(company, skip_prosthetics, 1)
|
||||
|
||||
/obj/item/organ/external/head/removed()
|
||||
if(owner)
|
||||
name = "[owner.real_name]'s head"
|
||||
owner.u_equip(owner.glasses)
|
||||
owner.u_equip(owner.head)
|
||||
owner.u_equip(owner.l_ear)
|
||||
owner.u_equip(owner.r_ear)
|
||||
owner.u_equip(owner.wear_mask)
|
||||
spawn(1)
|
||||
owner.update_hair()
|
||||
..()
|
||||
|
||||
/obj/item/organ/external/head/take_damage(brute, burn, sharp, edge, used_weapon = null, list/forbidden_limbs = list())
|
||||
..(brute, burn, sharp, edge, used_weapon, forbidden_limbs)
|
||||
if (!disfigured)
|
||||
if (brute_dam > 40)
|
||||
if (prob(50))
|
||||
disfigure("brute")
|
||||
if (burn_dam > 40)
|
||||
disfigure("burn")
|
||||
|
||||
/obj/item/organ/external/head/skrell
|
||||
eye_icon = "skrell_eyes_s"
|
||||
|
||||
/obj/item/organ/external/head/seromi
|
||||
eye_icon = "eyes_seromi"
|
||||
|
||||
/obj/item/organ/external/head/no_eyes
|
||||
eye_icon = "blank_eyes"
|
||||
|
||||
/obj/item/organ/external/head/no_eyes/diona
|
||||
max_damage = 50
|
||||
min_broken_damage = 25
|
||||
cannot_break = 1
|
||||
amputation_point = "branch"
|
||||
joint = "structural ligament"
|
||||
dislocated = -1
|
||||
vital = 0
|
||||
|
||||
/obj/item/organ/external/head/no_eyes/diona/removed()
|
||||
var/mob/living/carbon/human/H = owner
|
||||
..()
|
||||
if(!istype(H) || !H.organs || !H.organs.len)
|
||||
H.death()
|
||||
if(prob(50) && spawn_diona_nymph(get_turf(src)))
|
||||
qdel(src)
|
||||
@@ -43,10 +43,6 @@ var/global/list/limb_icon_cache = list()
|
||||
var/obj/item/organ/internal/eyes/eyes = owner.internal_organs_by_name[O_EYES]
|
||||
if(eyes) eyes.update_colour()
|
||||
|
||||
/obj/item/organ/external/head/removed()
|
||||
get_icon()
|
||||
..()
|
||||
|
||||
/obj/item/organ/external/head/get_icon()
|
||||
|
||||
..()
|
||||
|
||||
@@ -198,3 +198,12 @@
|
||||
|
||||
/obj/item/organ/internal/diona/node/removed()
|
||||
return
|
||||
|
||||
/obj/item/organ/external/head/no_eyes/diona
|
||||
max_damage = 50
|
||||
min_broken_damage = 25
|
||||
cannot_break = 1
|
||||
amputation_point = "branch"
|
||||
joint = "structural ligament"
|
||||
dislocated = -1
|
||||
vital = 0
|
||||
@@ -18,6 +18,13 @@
|
||||
cannot_amputate = 1
|
||||
parent_organ = null
|
||||
encased = "ribcage"
|
||||
organ_rel_size = 70
|
||||
base_miss_chance = 10
|
||||
|
||||
/obj/item/organ/external/chest/robotize()
|
||||
if(..())
|
||||
// Give them a new cell.
|
||||
owner.internal_organs_by_name["cell"] = new /obj/item/organ/internal/cell(owner,1)
|
||||
|
||||
/obj/item/organ/external/groin
|
||||
name = "lower body"
|
||||
@@ -33,6 +40,7 @@
|
||||
joint = "hip"
|
||||
dislocated = -1
|
||||
gendered_icon = 1
|
||||
organ_rel_size = 30
|
||||
|
||||
/obj/item/organ/external/arm
|
||||
organ_tag = "l_arm"
|
||||
@@ -93,7 +101,8 @@
|
||||
can_stand = 1
|
||||
|
||||
/obj/item/organ/external/foot/removed()
|
||||
if(owner) owner.u_equip(owner.shoes)
|
||||
if(owner)
|
||||
owner.drop_from_inventory(owner.shoes)
|
||||
..()
|
||||
|
||||
/obj/item/organ/external/foot/right
|
||||
@@ -118,9 +127,12 @@
|
||||
joint = "left wrist"
|
||||
amputation_point = "left wrist"
|
||||
can_grasp = 1
|
||||
organ_rel_size = 10
|
||||
base_miss_chance = 50
|
||||
|
||||
/obj/item/organ/external/hand/removed()
|
||||
owner.u_equip(owner.gloves)
|
||||
if(owner)
|
||||
owner.drop_from_inventory(owner.gloves)
|
||||
..()
|
||||
|
||||
/obj/item/organ/external/hand/right
|
||||
@@ -147,18 +159,24 @@
|
||||
gendered_icon = 1
|
||||
cannot_gib = 1
|
||||
encased = "skull"
|
||||
base_miss_chance = 40
|
||||
var/can_intake_reagents = 1
|
||||
var/eye_icon = "eyes_s"
|
||||
|
||||
/obj/item/organ/external/head/robotize(var/company, var/skip_prosthetics, var/keep_organs)
|
||||
return ..(company, skip_prosthetics, 1)
|
||||
|
||||
/obj/item/organ/external/head/removed()
|
||||
if(owner)
|
||||
name = "[owner.real_name]'s head"
|
||||
owner.u_equip(owner.glasses)
|
||||
owner.u_equip(owner.head)
|
||||
owner.u_equip(owner.l_ear)
|
||||
owner.u_equip(owner.r_ear)
|
||||
owner.u_equip(owner.wear_mask)
|
||||
owner.drop_from_inventory(owner.glasses)
|
||||
owner.drop_from_inventory(owner.head)
|
||||
owner.drop_from_inventory(owner.l_ear)
|
||||
owner.drop_from_inventory(owner.r_ear)
|
||||
owner.drop_from_inventory(owner.wear_mask)
|
||||
spawn(1)
|
||||
owner.update_hair()
|
||||
get_icon()
|
||||
..()
|
||||
|
||||
/obj/item/organ/external/head/take_damage(brute, burn, sharp, edge, used_weapon = null, list/forbidden_limbs = list())
|
||||
@@ -169,3 +187,12 @@
|
||||
disfigure("brute")
|
||||
if (burn_dam > 40)
|
||||
disfigure("burn")
|
||||
|
||||
/obj/item/organ/external/head/skrell
|
||||
eye_icon = "skrell_eyes_s"
|
||||
|
||||
/obj/item/organ/external/head/seromi
|
||||
eye_icon = "eyes_seromi"
|
||||
|
||||
/obj/item/organ/external/head/no_eyes
|
||||
eye_icon = "blank_eyes"
|
||||
|
||||
@@ -606,7 +606,6 @@ obj/structure/cable/proc/cableColor(var/colorC)
|
||||
|
||||
/obj/item/stack/cable_coil/transfer_to(obj/item/stack/cable_coil/S)
|
||||
if(!istype(S))
|
||||
world << 1
|
||||
return
|
||||
..()
|
||||
|
||||
|
||||
@@ -124,6 +124,13 @@
|
||||
magazine_type = /obj/item/ammo_magazine/a50
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/a50)
|
||||
|
||||
/obj/item/weapon/gun/projectile/deagle/update_icon()
|
||||
..()
|
||||
if(ammo_magazine)
|
||||
icon_state = "[initial(icon_state)]"
|
||||
else
|
||||
icon_state = "[initial(icon_state)]-e"
|
||||
|
||||
/obj/item/weapon/gun/projectile/deagle/gold
|
||||
desc = "A gold plated gun folded over a million times by superior martian gunsmiths. Uses .50 AE rounds."
|
||||
icon_state = "deagleg"
|
||||
|
||||
@@ -349,7 +349,7 @@
|
||||
return
|
||||
|
||||
if (istype(O,/obj/item/weapon/reagent_containers/glass) || \
|
||||
istype(O,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass) || \
|
||||
istype(O,/obj/item/weapon/reagent_containers/food/drinks/glass2) || \
|
||||
istype(O,/obj/item/weapon/reagent_containers/food/drinks/shaker))
|
||||
|
||||
if (beaker)
|
||||
|
||||
@@ -26,17 +26,19 @@
|
||||
var/overdose = 0
|
||||
var/scannable = 0 // Shows up on health analyzers.
|
||||
var/affects_dead = 0
|
||||
var/glass_icon_state = null
|
||||
var/glass_name = null
|
||||
var/glass_desc = null
|
||||
var/glass_center_of_mass = null
|
||||
var/cup_icon_state = null
|
||||
var/cup_name = null
|
||||
var/cup_desc = null
|
||||
var/cup_center_of_mass = null
|
||||
|
||||
var/color = "#000000"
|
||||
var/color_weight = 1
|
||||
|
||||
var/glass_icon = DRINK_ICON_DEFAULT
|
||||
var/glass_name = "something"
|
||||
var/glass_desc = "It's a glass of... what, exactly?"
|
||||
var/list/glass_special = null // null equivalent to list()
|
||||
|
||||
/datum/reagent/proc/remove_self(var/amount) // Shortcut
|
||||
holder.remove_reagent(id, amount)
|
||||
|
||||
|
||||
@@ -6,8 +6,7 @@
|
||||
metabolism = REM * 5
|
||||
color = "#C80000"
|
||||
|
||||
glass_icon_state = "glass_red"
|
||||
glass_name = "glass of tomato juice"
|
||||
glass_name = "tomato juice"
|
||||
glass_desc = "Are you sure this is tomato juice?"
|
||||
|
||||
/datum/reagent/blood/initialize_data(var/newdata)
|
||||
@@ -91,8 +90,7 @@
|
||||
color = "#0064C877"
|
||||
metabolism = REM * 10
|
||||
|
||||
glass_icon_state = "glass_clear"
|
||||
glass_name = "glass of water"
|
||||
glass_name = "water"
|
||||
glass_desc = "The father of all refreshments."
|
||||
|
||||
/datum/reagent/water/touch_turf(var/turf/simulated/T)
|
||||
@@ -154,8 +152,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#660000"
|
||||
|
||||
glass_icon_state = "dr_gibb_glass"
|
||||
glass_name = "glass of welder fuel"
|
||||
glass_name = "welder fuel"
|
||||
glass_desc = "Unless you are an industrial tool, this is probably not safe for consumption."
|
||||
|
||||
/datum/reagent/fuel/touch_turf(var/turf/T)
|
||||
|
||||
@@ -66,8 +66,7 @@
|
||||
var/targ_temp = 310
|
||||
var/halluci = 0
|
||||
|
||||
glass_icon_state = "glass_clear"
|
||||
glass_name = "glass of ethanol"
|
||||
glass_name = "ethanol"
|
||||
glass_desc = "A well-known alcohol with a variety of applications."
|
||||
|
||||
/datum/reagent/ethanol/touch_mob(var/mob/living/L, var/amount)
|
||||
@@ -368,9 +367,10 @@
|
||||
description = "The organic compound commonly known as table sugar and sometimes called saccharose. This white, odorless, crystalline powder has a pleasing, sweet taste."
|
||||
reagent_state = SOLID
|
||||
color = "#FFFFFF"
|
||||
glass_icon_state = "iceglass"
|
||||
glass_name = "glass of sugar"
|
||||
|
||||
glass_name = "sugar"
|
||||
glass_desc = "The organic compound commonly known as table sugar and sometimes called saccharose. This white, odorless, crystalline powder has a pleasing, sweet taste."
|
||||
glass_icon = DRINK_ICON_NOISY
|
||||
|
||||
/datum/reagent/sugar/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
M.nutrition += removed * 3
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -112,8 +112,7 @@
|
||||
color = "#C8A5DC"
|
||||
affects_dead = 1 //This can even heal dead people.
|
||||
|
||||
glass_icon_state = "golden_cup"
|
||||
glass_name = "golden cup"
|
||||
glass_name = "liquid gold"
|
||||
glass_desc = "It's magic. We don't have to explain it."
|
||||
|
||||
/datum/reagent/adminordrazine/affect_touch(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
@@ -197,8 +196,7 @@
|
||||
description = "An ashen-obsidian-water mix, this solution will alter certain sections of the brain's rationality."
|
||||
color = "#E0E8EF"
|
||||
|
||||
glass_icon_state = "glass_clear"
|
||||
glass_name = "glass of holy water"
|
||||
glass_name = "holy water"
|
||||
glass_desc = "An ashen-obsidian-water mix, this solution will alter certain sections of the brain's rationality."
|
||||
|
||||
/datum/reagent/water/holywater/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
|
||||
@@ -331,13 +331,10 @@
|
||||
id = "beer2"
|
||||
description = "An alcoholic beverage made from malted grains, hops, yeast, and water. The fermentation appears to be incomplete." //If the players manage to analyze this, they deserve to know something is wrong.
|
||||
reagent_state = LIQUID
|
||||
color = "#664300"
|
||||
color = "#FFD300"
|
||||
|
||||
glass_icon_state = "beerglass"
|
||||
glass_name = "glass of beer"
|
||||
glass_name = "beer"
|
||||
glass_desc = "A freezing pint of beer"
|
||||
glass_center_of_mass = list("x"=16, "y"=8)
|
||||
|
||||
/* Drugs */
|
||||
|
||||
/datum/reagent/space_drugs
|
||||
|
||||
@@ -0,0 +1,146 @@
|
||||
#define DRINK_ICON_FILE 'icons/pdrink.dmi'
|
||||
|
||||
/var/const/DRINK_FIZZ = "fizz"
|
||||
/var/const/DRINK_ICE = "ice"
|
||||
/var/const/DRINK_ICON_DEFAULT = ""
|
||||
/var/const/DRINK_ICON_NOISY = "_noise"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/glass2
|
||||
name = "glass" // Name when empty
|
||||
var/base_name = "glass" // Name to put in front of drinks, i.e. "[base_name] of [contents]"
|
||||
desc = "A generic drinking glass." // Description when empty
|
||||
icon = DRINK_ICON_FILE
|
||||
var/base_icon = "square" // Base icon name
|
||||
volume = 30
|
||||
|
||||
var/list/filling_states // List of percentages full that have icons
|
||||
|
||||
var/list/extras = list() // List of extras. Two extras maximum
|
||||
|
||||
var/rim_pos
|
||||
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
|
||||
amount_per_transfer_from_this = 5
|
||||
possible_transfer_amounts = list(5,10,15,30)
|
||||
flags = OPENCONTAINER
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/glass2/examine(mob/M as mob)
|
||||
..()
|
||||
|
||||
for(var/I in extras)
|
||||
if(istype(I, /obj/item/weapon/glass_extra))
|
||||
M << "There is \a [I] in \the [src]."
|
||||
else if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/fruit_slice))
|
||||
M << "There is \a [I] on the rim."
|
||||
else
|
||||
M << "There is \a [I] somewhere on the glass. Somehow."
|
||||
|
||||
if(has_ice())
|
||||
M << "There is some ice floating in the drink."
|
||||
|
||||
if(has_fizz())
|
||||
M << "It is fizzing slightly."
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/glass2/proc/has_ice()
|
||||
if(reagents.reagent_list.len > 0)
|
||||
var/datum/reagent/R = reagents.get_master_reagent()
|
||||
if(!((R.id == "ice") || ("ice" in R.glass_special))) // if it's not a cup of ice, and it's not already supposed to have ice in, see if the bartender's put ice in it
|
||||
if(reagents.has_reagent("ice", reagents.total_volume / 10)) // 10% ice by volume
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/glass2/proc/has_fizz()
|
||||
if(reagents.reagent_list.len > 0)
|
||||
var/datum/reagent/R = reagents.get_master_reagent()
|
||||
if(!("fizz" in R.glass_special))
|
||||
var/totalfizzy = 0
|
||||
for(var/datum/reagent/re in reagents.reagent_list)
|
||||
if("fizz" in re.glass_special)
|
||||
totalfizzy += re.volume
|
||||
if(totalfizzy >= reagents.total_volume / 5) // 20% fizzy by volume
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/glass2/New()
|
||||
..()
|
||||
icon_state = base_icon
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/glass2/on_reagent_change()
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/glass2/proc/can_add_extra(obj/item/weapon/glass_extra/GE)
|
||||
if(!("[base_icon]_[GE.glass_addition]left" in icon_states(DRINK_ICON_FILE)))
|
||||
return 0
|
||||
if(!("[base_icon]_[GE.glass_addition]right" in icon_states(DRINK_ICON_FILE)))
|
||||
return 0
|
||||
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/glass2/update_icon()
|
||||
underlays.Cut()
|
||||
|
||||
if (reagents.reagent_list.len > 0)
|
||||
var/datum/reagent/R = reagents.get_master_reagent()
|
||||
name = "[base_name] of [R.glass_name ? R.glass_name : "something"]"
|
||||
desc = R.glass_desc ? R.glass_desc : initial(desc)
|
||||
|
||||
var/list/under_liquid = list()
|
||||
var/list/over_liquid = list()
|
||||
|
||||
var/amnt = 100
|
||||
var/percent = round((reagents.total_volume / volume) * 100)
|
||||
for(var/k in filling_states)
|
||||
if(percent <= k)
|
||||
amnt = k
|
||||
break
|
||||
|
||||
if(has_ice())
|
||||
over_liquid |= "[base_icon][amnt]_ice"
|
||||
|
||||
if(has_fizz())
|
||||
over_liquid |= "[base_icon][amnt]_fizz"
|
||||
|
||||
for(var/S in R.glass_special)
|
||||
if("[base_icon]_[S]" in icon_states(DRINK_ICON_FILE))
|
||||
under_liquid |= "[base_icon]_[S]"
|
||||
else if("[base_icon][amnt]_[S]" in icon_states(DRINK_ICON_FILE))
|
||||
over_liquid |= "[base_icon][amnt]_[S]"
|
||||
|
||||
for(var/k in under_liquid)
|
||||
underlays += image(DRINK_ICON_FILE, src, k, -3)
|
||||
|
||||
var/image/filling = image(DRINK_ICON_FILE, src, "[base_icon][amnt][R.glass_icon]", -2)
|
||||
filling.color = reagents.get_color()
|
||||
underlays += filling
|
||||
|
||||
for(var/k in over_liquid)
|
||||
underlays += image(DRINK_ICON_FILE, src, k, -1)
|
||||
else
|
||||
name = initial(name)
|
||||
desc = initial(desc)
|
||||
|
||||
var/side = "left"
|
||||
for(var/item in extras)
|
||||
if(istype(item, /obj/item/weapon/glass_extra))
|
||||
var/obj/item/weapon/glass_extra/GE = item
|
||||
var/image/I = image(DRINK_ICON_FILE, src, "[base_icon]_[GE.glass_addition][side]")
|
||||
if(GE.glass_color)
|
||||
I.color = GE.glass_color
|
||||
underlays += I
|
||||
else if(istype(item, /obj/item/weapon/reagent_containers/food/snacks/fruit_slice))
|
||||
var/obj/FS = item
|
||||
var/image/I = image(FS)
|
||||
|
||||
var/fsy = rim_pos[1] - 20
|
||||
var/fsx = rim_pos[side == "left" ? 2 : 3] - 16
|
||||
|
||||
var/matrix/M = matrix()
|
||||
M.Scale(0.5)
|
||||
M.Translate(fsx, fsy)
|
||||
I.transform = M
|
||||
underlays += I
|
||||
else continue
|
||||
side = "right"
|
||||
@@ -0,0 +1,72 @@
|
||||
/obj/item/weapon/reagent_containers/food/drinks/glass2/attackby(obj/item/I as obj, mob/user as mob)
|
||||
if(extras.len >= 2) return ..() // max 2 extras, one on each side of the drink
|
||||
|
||||
if(istype(I, /obj/item/weapon/glass_extra))
|
||||
var/obj/item/weapon/glass_extra/GE = I
|
||||
if(can_add_extra(GE))
|
||||
extras += GE
|
||||
user.remove_from_mob(GE)
|
||||
GE.loc = src
|
||||
user << "<span class=notice>You add \the [GE] to \the [src].</span>"
|
||||
update_icon()
|
||||
else
|
||||
user << "<span class=warning>There's no space to put \the [GE] on \the [src]!</span>"
|
||||
else if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/fruit_slice))
|
||||
if(!rim_pos)
|
||||
user << "<span class=warning>There's no space to put \the [I] on \the [src]!</span>"
|
||||
return
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/fruit_slice/FS = I
|
||||
extras += FS
|
||||
user.remove_from_mob(FS)
|
||||
FS.pixel_x = 0 // Reset its pixel offsets so the icons work!
|
||||
FS.pixel_y = 0
|
||||
FS.loc = src
|
||||
user << "<span class=notice>You add \the [FS] to \the [src].</span>"
|
||||
update_icon()
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/glass2/attack_hand(mob/user as mob)
|
||||
if(src != user.get_inactive_hand())
|
||||
return ..()
|
||||
|
||||
if(!extras.len)
|
||||
user << "<span class=warning>There's nothing on the glass to remove!</span>"
|
||||
return
|
||||
|
||||
var/choice = input(user, "What would you like to remove from the glass?") as null|anything in extras
|
||||
if(!choice || !(choice in extras))
|
||||
return
|
||||
|
||||
if(user.put_in_active_hand(choice))
|
||||
user << "<span class=notice>You remove \the [choice] from \the [src].</span>"
|
||||
extras -= choice
|
||||
else
|
||||
user << "<span class=warning>Something went wrong, please try again.</span>"
|
||||
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/glass_extra
|
||||
name = "generic glass addition"
|
||||
desc = "This goes on a glass."
|
||||
var/glass_addition
|
||||
var/glass_desc
|
||||
var/glass_color
|
||||
w_class = 1
|
||||
icon = DRINK_ICON_FILE
|
||||
|
||||
/obj/item/weapon/glass_extra/stick
|
||||
name = "stick"
|
||||
desc = "This goes in a glass."
|
||||
glass_addition = "stick"
|
||||
glass_desc = "There is a stick in the glass."
|
||||
icon_state = "stick"
|
||||
|
||||
/obj/item/weapon/glass_extra/straw
|
||||
name = "straw"
|
||||
desc = "This goes in a glass."
|
||||
glass_addition = "straw"
|
||||
glass_desc = "There is a straw in the glass."
|
||||
icon_state = "straw"
|
||||
|
||||
#undef DRINK_ICON_FILE
|
||||
@@ -0,0 +1,75 @@
|
||||
/obj/item/weapon/storage/box/mixedglasses
|
||||
name = "glassware box"
|
||||
desc = "A box of assorted glassware"
|
||||
can_hold = list(/obj/item/weapon/reagent_containers/food/drinks/glass2)
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/glass2/square(src)
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/glass2/rocks(src)
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/glass2/shake(src)
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/glass2/cocktail(src)
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/glass2/shot(src)
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/glass2/pint(src)
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/glass2/mug(src)
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/glass2/wine(src)
|
||||
|
||||
/obj/item/weapon/storage/box/glasses
|
||||
name = "box of glasses"
|
||||
var/glass_type = /obj/item/weapon/reagent_containers/food/drinks/glass2
|
||||
can_hold = list(/obj/item/weapon/reagent_containers/food/drinks/glass2)
|
||||
New()
|
||||
..()
|
||||
|
||||
for(var/i = 1 to 7)
|
||||
new glass_type(src)
|
||||
|
||||
/obj/item/weapon/storage/box/glasses/square
|
||||
name = "box of half-pint glasses"
|
||||
glass_type = /obj/item/weapon/reagent_containers/food/drinks/glass2/square
|
||||
|
||||
/obj/item/weapon/storage/box/glasses/rocks
|
||||
name = "box of rocks glasses"
|
||||
glass_type = /obj/item/weapon/reagent_containers/food/drinks/glass2/rocks
|
||||
|
||||
/obj/item/weapon/storage/box/glasses/shake
|
||||
name = "box of milkshake glasses"
|
||||
glass_type = /obj/item/weapon/reagent_containers/food/drinks/glass2/shake
|
||||
|
||||
/obj/item/weapon/storage/box/glasses/cocktail
|
||||
name = "box of cocktail glasses"
|
||||
glass_type = /obj/item/weapon/reagent_containers/food/drinks/glass2/cocktail
|
||||
|
||||
/obj/item/weapon/storage/box/glasses/shot
|
||||
name = "box of shot glasses"
|
||||
glass_type = /obj/item/weapon/reagent_containers/food/drinks/glass2/shot
|
||||
|
||||
/obj/item/weapon/storage/box/glasses/pint
|
||||
name = "box of pint glasses"
|
||||
glass_type = /obj/item/weapon/reagent_containers/food/drinks/glass2/pint
|
||||
|
||||
/obj/item/weapon/storage/box/glasses/mug
|
||||
name = "box of glass mugs"
|
||||
glass_type = /obj/item/weapon/reagent_containers/food/drinks/glass2/mug
|
||||
|
||||
/obj/item/weapon/storage/box/glasses/wine
|
||||
name = "box of wine glasses"
|
||||
glass_type = /obj/item/weapon/reagent_containers/food/drinks/glass2/wine
|
||||
|
||||
/obj/item/weapon/storage/box/glass_extras
|
||||
name = "box of cocktail garnishings"
|
||||
var/extra_type = /obj/item/weapon/glass_extra
|
||||
can_hold = list(/obj/item/weapon/glass_extra)
|
||||
storage_slots = 14
|
||||
New()
|
||||
..()
|
||||
|
||||
for(var/i = 1 to 14)
|
||||
new extra_type(src)
|
||||
|
||||
/obj/item/weapon/storage/box/glass_extras/straws
|
||||
name = "box of straws"
|
||||
extra_type = /obj/item/weapon/glass_extra/straw
|
||||
|
||||
/obj/item/weapon/storage/box/glass_extras/sticks
|
||||
name = "box of drink sticks"
|
||||
extra_type = /obj/item/weapon/glass_extra/stick
|
||||
@@ -0,0 +1,72 @@
|
||||
/obj/item/weapon/reagent_containers/food/drinks/glass2/square
|
||||
name = "half-pint glass"
|
||||
base_name = "glass"
|
||||
base_icon = "square"
|
||||
desc = "Your standard drinking glass."
|
||||
filling_states = list(20, 40, 60, 80, 100)
|
||||
volume = 30
|
||||
possible_transfer_amounts = list(5,10,15,30)
|
||||
rim_pos = list(23,13,20) // y, x0, x1
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/glass2/rocks
|
||||
name = "rocks glass"
|
||||
base_name = "glass"
|
||||
base_icon = "rocks"
|
||||
filling_states = list(25, 50, 75, 100)
|
||||
volume = 20
|
||||
possible_transfer_amounts = list(5,10,20)
|
||||
rim_pos = list(21, 10, 23)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/glass2/shake
|
||||
name = "milkshake glass"
|
||||
base_name = "glass"
|
||||
base_icon = "shake"
|
||||
filling_states = list(25, 50, 75, 100)
|
||||
volume = 30
|
||||
possible_transfer_amounts = list(5,10,15,30)
|
||||
rim_pos = list(25, 13, 21)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/glass2/cocktail
|
||||
name = "cocktail glass"
|
||||
base_name = "glass"
|
||||
base_icon = "cocktail"
|
||||
filling_states = list(33, 66, 100)
|
||||
volume = 15
|
||||
possible_transfer_amounts = list(5,10,15)
|
||||
rim_pos = list(22, 13, 21)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/glass2/shot
|
||||
name = "shot glass"
|
||||
base_name = "shot"
|
||||
base_icon = "shot"
|
||||
filling_states = list(33, 66, 100)
|
||||
volume = 5
|
||||
possible_transfer_amounts = list(1,2,5)
|
||||
rim_pos = list(17, 13, 21)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/glass2/pint
|
||||
name = "pint glass"
|
||||
base_name = "pint"
|
||||
base_icon = "pint"
|
||||
filling_states = list(16, 33, 50, 66, 83, 100)
|
||||
volume = 60
|
||||
possible_transfer_amounts = list(5,10,15,30,60)
|
||||
rim_pos = list(25, 12, 21)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/glass2/mug
|
||||
name = "glass mug"
|
||||
base_name = "mug"
|
||||
base_icon = "mug"
|
||||
filling_states = list(25, 50, 75, 100)
|
||||
volume = 40
|
||||
possible_transfer_amounts = list(5,10,20,40)
|
||||
rim_pos = list(22, 12, 20)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/glass2/wine
|
||||
name = "wine glass"
|
||||
base_name = "glass"
|
||||
base_icon = "wine"
|
||||
filling_states = list(20, 40, 60, 80, 100)
|
||||
volume = 25
|
||||
possible_transfer_amounts = list(5, 10, 15, 25)
|
||||
rim_pos = list(25, 12, 21)
|
||||
@@ -0,0 +1,31 @@
|
||||
/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask
|
||||
name = "fitness shaker"
|
||||
base_name = "shaker"
|
||||
desc = "Big enough to contain enough protein to get perfectly swole. Don't mind the bits."
|
||||
icon_state = "fitness-cup_black"
|
||||
base_icon = "fitness-cup"
|
||||
volume = 100
|
||||
matter = list("plastic" = 2000)
|
||||
filling_states = list(10,20,30,40,50,60,70,80,90,100)
|
||||
possible_transfer_amounts = list(5, 10, 15, 25)
|
||||
rim_pos = null // no fruit slices
|
||||
var/lid_color = "black"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/New()
|
||||
..()
|
||||
lid_color = pick("black", "red", "blue")
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/update_icon()
|
||||
..()
|
||||
icon_state = "[base_icon]_[lid_color]"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteinshake
|
||||
name = "protein shake"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteinshake/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 30)
|
||||
reagents.add_reagent("iron", 10)
|
||||
reagents.add_reagent("protein", 35)
|
||||
reagents.add_reagent("water", 25)
|
||||
@@ -11,7 +11,13 @@
|
||||
volume = 50
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/on_reagent_change()
|
||||
return
|
||||
if (reagents.reagent_list.len > 0)
|
||||
var/datum/reagent/R = reagents.get_master_reagent()
|
||||
if(R.price_tag)
|
||||
price_tag = R.price_tag
|
||||
else
|
||||
price_tag = null
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/attack_self(mob/user as mob)
|
||||
if(!is_open_container())
|
||||
@@ -96,13 +102,16 @@
|
||||
volume = 150
|
||||
flags = CONDUCT | OPENCONTAINER
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/golden_cup/on_reagent_change()
|
||||
..()
|
||||
|
||||
///////////////////////////////////////////////Drinks
|
||||
//Notes by Darem: Drinks are simply containers that start preloaded. Unlike condiments, the contents can be ingested directly
|
||||
// rather then having to add it to something else first. They should only contain liquids. They have a default container size of 50.
|
||||
// Formatting is the same as food.
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/milk
|
||||
name = "Space Milk"
|
||||
name = "milk carton"
|
||||
desc = "It's milk. White and nutritious goodness!"
|
||||
icon_state = "milk"
|
||||
item_state = "carton"
|
||||
@@ -113,7 +122,7 @@
|
||||
reagents.add_reagent("milk", 50)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/soymilk
|
||||
name = "SoyMilk"
|
||||
name = "soymilk carton"
|
||||
desc = "It's soy milk. White and nutritious goodness!"
|
||||
icon_state = "soymilk"
|
||||
item_state = "carton"
|
||||
@@ -123,7 +132,7 @@
|
||||
reagents.add_reagent("soymilk", 50)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton
|
||||
name = "Small Carton of Milk"
|
||||
name = "small milk carton"
|
||||
volume = 30
|
||||
icon_state = "mini-milk"
|
||||
/obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton/New()
|
||||
@@ -131,16 +140,16 @@
|
||||
reagents.add_reagent("milk", 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton/chocolate
|
||||
name = "Small Carton of Chocolate Milk"
|
||||
name = "small chocolate milk carton"
|
||||
desc = "It's milk! This one is in delicious chocolate flavour."
|
||||
|
||||
icon_state = "mini-milk_choco"
|
||||
/obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton/chocolate/New()
|
||||
..()
|
||||
reagents.add_reagent("chocolate_milk", 30)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/coffee
|
||||
name = "Robust Coffee"
|
||||
name = "\improper Robust Coffee"
|
||||
desc = "Careful, the beverage you're about to enjoy is extremely hot."
|
||||
icon_state = "coffee"
|
||||
center_of_mass = list("x"=15, "y"=10)
|
||||
@@ -149,7 +158,7 @@
|
||||
reagents.add_reagent("coffee", 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/tea
|
||||
name = "Duke Purple Tea"
|
||||
name = "cup of Duke Purple Tea"
|
||||
desc = "An insult to Duke Purple is an insult to the Space Queen! Any proper gentleman will fight you, if you sully this tea."
|
||||
icon_state = "teacup"
|
||||
item_state = "coffee"
|
||||
@@ -160,7 +169,7 @@
|
||||
reagents.add_reagent("tea", 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/ice
|
||||
name = "Ice Cup"
|
||||
name = "cup of ice"
|
||||
desc = "Careful, cold ice, do not chew."
|
||||
icon_state = "coffee"
|
||||
center_of_mass = list("x"=15, "y"=10)
|
||||
@@ -169,7 +178,7 @@
|
||||
reagents.add_reagent("ice", 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/h_chocolate
|
||||
name = "Dutch Hot Coco"
|
||||
name = "cup of Dutch hot coco"
|
||||
desc = "Made in Space South America."
|
||||
icon_state = "hot_coco"
|
||||
item_state = "coffee"
|
||||
@@ -189,7 +198,7 @@
|
||||
reagents.add_reagent("dry_ramen", 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/sillycup
|
||||
name = "Paper Cup"
|
||||
name = "paper cup"
|
||||
desc = "A paper water cup."
|
||||
icon_state = "water_cup_e"
|
||||
possible_transfer_amounts = null
|
||||
@@ -199,6 +208,7 @@
|
||||
..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/sillycup/on_reagent_change()
|
||||
..()
|
||||
if(reagents.total_volume)
|
||||
icon_state = "water_cup"
|
||||
else
|
||||
@@ -211,13 +221,16 @@
|
||||
// icon states.
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/shaker
|
||||
name = "Shaker"
|
||||
name = "shaker"
|
||||
desc = "A metal shaker to mix drinks in."
|
||||
icon_state = "shaker"
|
||||
amount_per_transfer_from_this = 10
|
||||
volume = 120
|
||||
center_of_mass = list("x"=17, "y"=10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/shaker/on_reagent_change()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/teapot
|
||||
name = "teapot"
|
||||
desc = "An elegant teapot. It simply oozes class."
|
||||
@@ -227,13 +240,19 @@
|
||||
volume = 120
|
||||
center_of_mass = list("x"=17, "y"=7)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/teapot/on_reagent_change()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/flask
|
||||
name = "Captain's Flask"
|
||||
name = "\improper Captain's flask"
|
||||
desc = "A metal flask belonging to the captain"
|
||||
icon_state = "flask"
|
||||
volume = 60
|
||||
center_of_mass = list("x"=17, "y"=7)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/flask/on_reagent_change()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/flask/shiny
|
||||
name = "shiny flask"
|
||||
desc = "A shiny metal flask. It appears to have a Greek symbol inscribed on it."
|
||||
@@ -245,7 +264,7 @@
|
||||
icon_state = "lithiumflask"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/flask/detflask
|
||||
name = "Detective's Flask"
|
||||
name = "\improper Detective's flask"
|
||||
desc = "A metal flask with a leather band and golden badge belonging to the detective."
|
||||
icon_state = "detflask"
|
||||
volume = 60
|
||||
@@ -271,3 +290,7 @@
|
||||
icon_state = "britcup"
|
||||
volume = 30
|
||||
center_of_mass = list("x"=15, "y"=13)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/britcup/on_reagent_change()
|
||||
..()
|
||||
|
||||
|
||||
39
code/modules/reagents/reagent_containers/food/drinks/cup.dm
Normal file
39
code/modules/reagents/reagent_containers/food/drinks/cup.dm
Normal file
@@ -0,0 +1,39 @@
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cup
|
||||
name = "coffee cup"
|
||||
desc = "The container of oriental luxuries."
|
||||
icon_state = "cup_empty"
|
||||
amount_per_transfer_from_this = 5
|
||||
volume = 30
|
||||
center_of_mass = list("x"=16, "y"=16)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cup/on_reagent_change()
|
||||
..()
|
||||
if (reagents.reagent_list.len > 0)
|
||||
var/datum/reagent/R = reagents.get_master_reagent()
|
||||
|
||||
if(R.cup_icon_state)
|
||||
icon_state = R.cup_icon_state
|
||||
else
|
||||
icon_state = "cup_brown"
|
||||
|
||||
if(R.cup_name)
|
||||
name = R.cup_name
|
||||
else
|
||||
name = "Cup of.. what?"
|
||||
|
||||
if(R.cup_desc)
|
||||
desc = R.cup_desc
|
||||
else
|
||||
desc = "You can't really tell what this is."
|
||||
|
||||
if(R.cup_center_of_mass)
|
||||
center_of_mass = R.cup_center_of_mass
|
||||
else
|
||||
center_of_mass = list("x"=16, "y"=16)
|
||||
|
||||
else
|
||||
icon_state = "cup_empty"
|
||||
name = "coffee cup"
|
||||
desc = "The container of oriental luxuries."
|
||||
center_of_mass = list("x"=16, "y"=16)
|
||||
return
|
||||
@@ -11,7 +11,7 @@
|
||||
id = "ripley_chassis"
|
||||
build_path = /obj/item/mecha_parts/chassis/ripley
|
||||
time = 10
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 20000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 15000)
|
||||
|
||||
/datum/design/item/mechfab/ripley/chassis/firefighter
|
||||
name = "Firefigher chassis"
|
||||
@@ -23,35 +23,35 @@
|
||||
id = "ripley_torso"
|
||||
build_path = /obj/item/mecha_parts/part/ripley_torso
|
||||
time = 20
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 40000, "glass" = 15000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 30000, "glass" = 11250)
|
||||
|
||||
/datum/design/item/mechfab/ripley/left_arm
|
||||
name = "Ripley left arm"
|
||||
id = "ripley_left_arm"
|
||||
build_path = /obj/item/mecha_parts/part/ripley_left_arm
|
||||
time = 15
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 25000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 18750)
|
||||
|
||||
/datum/design/item/mechfab/ripley/right_arm
|
||||
name = "Ripley right arm"
|
||||
id = "ripley_right_arm"
|
||||
build_path = /obj/item/mecha_parts/part/ripley_right_arm
|
||||
time = 15
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 25000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 18750)
|
||||
|
||||
/datum/design/item/mechfab/ripley/left_leg
|
||||
name = "Ripley left leg"
|
||||
id = "ripley_left_leg"
|
||||
build_path = /obj/item/mecha_parts/part/ripley_left_leg
|
||||
time = 15
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 30000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 22500)
|
||||
|
||||
/datum/design/item/mechfab/ripley/right_leg
|
||||
name = "Ripley right leg"
|
||||
id = "ripley_right_leg"
|
||||
build_path = /obj/item/mecha_parts/part/ripley_right_leg
|
||||
time = 15
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 30000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 22500)
|
||||
|
||||
/datum/design/item/mechfab/odysseus
|
||||
category = "Odysseus"
|
||||
@@ -61,49 +61,49 @@
|
||||
id = "odysseus_chassis"
|
||||
build_path = /obj/item/mecha_parts/chassis/odysseus
|
||||
time = 10
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 20000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 15000)
|
||||
|
||||
/datum/design/item/mechfab/odysseus/torso
|
||||
name = "Odysseus torso"
|
||||
id = "odysseus_torso"
|
||||
build_path = /obj/item/mecha_parts/part/odysseus_torso
|
||||
time = 18
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 25000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 18750)
|
||||
|
||||
/datum/design/item/mechfab/odysseus/head
|
||||
name = "Odysseus head"
|
||||
id = "odysseus_head"
|
||||
build_path = /obj/item/mecha_parts/part/odysseus_head
|
||||
time = 10
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 10000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 1500, "glass" = 7500)
|
||||
|
||||
/datum/design/item/mechfab/odysseus/left_arm
|
||||
name = "Odysseus left arm"
|
||||
id = "odysseus_left_arm"
|
||||
build_path = /obj/item/mecha_parts/part/odysseus_left_arm
|
||||
time = 12
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 10000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 7500)
|
||||
|
||||
/datum/design/item/mechfab/odysseus/right_arm
|
||||
name = "Odysseus right arm"
|
||||
id = "odysseus_right_arm"
|
||||
build_path = /obj/item/mecha_parts/part/odysseus_right_arm
|
||||
time = 12
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 10000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 7500)
|
||||
|
||||
/datum/design/item/mechfab/odysseus/left_leg
|
||||
name = "Odysseus left leg"
|
||||
id = "odysseus_left_leg"
|
||||
build_path = /obj/item/mecha_parts/part/odysseus_left_leg
|
||||
time = 13
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 15000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 11250)
|
||||
|
||||
/datum/design/item/mechfab/odysseus/right_leg
|
||||
name = "Odysseus right leg"
|
||||
id = "odysseus_right_leg"
|
||||
build_path = /obj/item/mecha_parts/part/odysseus_right_leg
|
||||
time = 13
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 15000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 11250)
|
||||
|
||||
/datum/design/item/mechfab/gygax
|
||||
category = "Gygax"
|
||||
@@ -113,56 +113,56 @@
|
||||
id = "gygax_chassis"
|
||||
build_path = /obj/item/mecha_parts/chassis/gygax
|
||||
time = 10
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 25000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 18750)
|
||||
|
||||
/datum/design/item/mechfab/gygax/torso
|
||||
name = "Gygax torso"
|
||||
id = "gygax_torso"
|
||||
build_path = /obj/item/mecha_parts/part/gygax_torso
|
||||
time = 30
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 50000, "glass" = 20000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 37500, "glass" = 15000)
|
||||
|
||||
/datum/design/item/mechfab/gygax/head
|
||||
name = "Gygax head"
|
||||
id = "gygax_head"
|
||||
build_path = /obj/item/mecha_parts/part/gygax_head
|
||||
time = 20
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 20000, "glass" = 10000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 15000, "glass" = 7500)
|
||||
|
||||
/datum/design/item/mechfab/gygax/left_arm
|
||||
name = "Gygax left arm"
|
||||
id = "gygax_left_arm"
|
||||
build_path = /obj/item/mecha_parts/part/gygax_left_arm
|
||||
time = 20
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 30000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 22500)
|
||||
|
||||
/datum/design/item/mechfab/gygax/right_arm
|
||||
name = "Gygax right arm"
|
||||
id = "gygax_right_arm"
|
||||
build_path = /obj/item/mecha_parts/part/gygax_right_arm
|
||||
time = 20
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 30000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 22500)
|
||||
|
||||
/datum/design/item/mechfab/gygax/left_leg
|
||||
name = "Gygax left leg"
|
||||
id = "gygax_left_leg"
|
||||
build_path = /obj/item/mecha_parts/part/gygax_left_leg
|
||||
time = 20
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 35000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 26250)
|
||||
|
||||
/datum/design/item/mechfab/gygax/right_leg
|
||||
name = "Gygax right leg"
|
||||
id = "gygax_right_leg"
|
||||
build_path = /obj/item/mecha_parts/part/gygax_right_leg
|
||||
time = 20
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 35000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 26250)
|
||||
|
||||
/datum/design/item/mechfab/gygax/armour
|
||||
name = "Gygax armour plates"
|
||||
id = "gygax_armour"
|
||||
build_path = /obj/item/mecha_parts/part/gygax_armour
|
||||
time = 60
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 50000, "diamond" = 10000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 37500, "diamond" = 7500)
|
||||
|
||||
/datum/design/item/mechfab/durand
|
||||
category = "Durand"
|
||||
@@ -172,75 +172,74 @@
|
||||
id = "durand_chassis"
|
||||
build_path = /obj/item/mecha_parts/chassis/durand
|
||||
time = 10
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 25000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 18750)
|
||||
|
||||
/datum/design/item/mechfab/durand/torso
|
||||
name = "Durand torso"
|
||||
id = "durand_torso"
|
||||
build_path = /obj/item/mecha_parts/part/durand_torso
|
||||
time = 30
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 55000, "glass" = 20000, "silver" = 10000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 41250, "glass" = 15000, "silver" = 7500)
|
||||
|
||||
/datum/design/item/mechfab/durand/head
|
||||
name = "Durand head"
|
||||
id = "durand_head"
|
||||
build_path = /obj/item/mecha_parts/part/durand_head
|
||||
time = 20
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 25000, "glass" = 10000, "silver" = 3000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 18750, "glass" = 7500, "silver" = 2250)
|
||||
|
||||
/datum/design/item/mechfab/durand/left_arm
|
||||
name = "Durand left arm"
|
||||
id = "durand_left_arm"
|
||||
build_path = /obj/item/mecha_parts/part/durand_left_arm
|
||||
time = 20
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 35000, "silver" = 3000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 26250, "silver" = 2250)
|
||||
|
||||
/datum/design/item/mechfab/durand/right_arm
|
||||
name = "Durand right arm"
|
||||
id = "durand_right_arm"
|
||||
build_path = /obj/item/mecha_parts/part/durand_right_arm
|
||||
time = 20
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 35000, "silver" = 3000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 26250, "silver" = 2250)
|
||||
|
||||
/datum/design/item/mechfab/durand/left_leg
|
||||
name = "Durand left leg"
|
||||
id = "durand_left_leg"
|
||||
build_path = /obj/item/mecha_parts/part/durand_left_leg
|
||||
time = 20
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 40000, "silver" = 3000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 30000, "silver" = 2250)
|
||||
|
||||
/datum/design/item/mechfab/durand/right_leg
|
||||
name = "Durand right leg"
|
||||
id = "durand_right_leg"
|
||||
build_path = /obj/item/mecha_parts/part/durand_right_leg
|
||||
time = 20
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 40000, "silver" = 3000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 30000, "silver" = 2250)
|
||||
|
||||
/datum/design/item/mechfab/durand/armour
|
||||
name = "Durand armour plates"
|
||||
id = "durand_armour"
|
||||
build_path = /obj/item/mecha_parts/part/durand_armour
|
||||
time = 60
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 50000, "uranium" = 10000)
|
||||
|
||||
/datum/design/item/mecha_tracking
|
||||
name = "Exosuit tracking beacon"
|
||||
build_type = MECHFAB
|
||||
time = 5
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 500)
|
||||
build_path = /obj/item/mecha_parts/mecha_tracking
|
||||
category = "Misc"
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 37500, "uranium" = 7500)
|
||||
|
||||
/datum/design/item/mecha
|
||||
build_type = MECHFAB
|
||||
category = "Exosuit Equipment"
|
||||
time = 10
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 10000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 7500)
|
||||
|
||||
/datum/design/item/mecha/AssembleDesignDesc()
|
||||
if(!desc)
|
||||
desc = "Allows for the construction of \a '[item_name]' exosuit module."
|
||||
|
||||
/datum/design/item/mecha/tracking
|
||||
name = "Exosuit tracking beacon"
|
||||
id = "mech_tracker"
|
||||
time = 5
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 375)
|
||||
build_path = /obj/item/mecha_parts/mecha_tracking
|
||||
|
||||
/datum/design/item/mecha/hydraulic_clamp
|
||||
name = "Hydraulic clamp"
|
||||
id = "hydraulic_clamp"
|
||||
@@ -265,20 +264,20 @@
|
||||
name = "Flare launcher"
|
||||
id = "mecha_flare_gun"
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flare
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 12500)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 9375)
|
||||
|
||||
/datum/design/item/mecha/sleeper
|
||||
name = "Sleeper"
|
||||
id = "mech_sleeper"
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/tool/sleeper
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 10000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 3750, "glass" = 7500)
|
||||
|
||||
/datum/design/item/mecha/syringe_gun
|
||||
name = "Syringe gun"
|
||||
id = "mech_syringe_gun"
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/tool/syringe_gun
|
||||
time = 20
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 2000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 2250, "glass" = 1500)
|
||||
|
||||
/*
|
||||
/datum/design/item/mecha/syringe_gun
|
||||
@@ -292,7 +291,7 @@
|
||||
name = "Passenger compartment"
|
||||
id = "mech_passenger"
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/tool/passenger
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 3750, "glass" = 3750)
|
||||
|
||||
//obj/item/mecha_parts/mecha_equipment/repair_droid,
|
||||
//obj/item/mecha_parts/mecha_equipment/jetpack, //TODO MECHA JETPACK SPRITE MISSING
|
||||
@@ -352,7 +351,7 @@
|
||||
desc = "A weapon that violates the Geneva Convention at 6 rounds per minute."
|
||||
id = "clusterbang_launcher"
|
||||
req_tech = list(TECH_COMBAT= 5, TECH_MATERIAL = 5, TECH_ILLEGAL = 3)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 20000, "gold" = 6000, "uranium" = 6000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 15000, "gold" = 4500, "uranium" = 4500)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang/limited
|
||||
|
||||
// *** Nonweapon modules
|
||||
@@ -375,7 +374,7 @@
|
||||
desc = "An exosuit-mounted rapid construction device."
|
||||
id = "mech_rcd"
|
||||
time = 120
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 30000, "phoron" = 25000, "silver" = 20000, "gold" = 20000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 22500, "phoron" = 18750, "silver" = 15000, "gold" = 15000)
|
||||
req_tech = list(TECH_MATERIAL = 4, TECH_BLUESPACE = 3, TECH_MAGNET = 4, TECH_POWER = 4, TECH_ENGINEERING = 4)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/tool/rcd
|
||||
|
||||
@@ -391,7 +390,7 @@
|
||||
desc = "Automated repair droid, exosuits' best companion. BEEP BOOP"
|
||||
id = "mech_repair_droid"
|
||||
req_tech = list(TECH_MAGNET = 3, TECH_DATA = 3, TECH_ENGINEERING = 3)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 10000, "gold" = 1000, "silver" = 2000, "glass" = 5000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 7500, "gold" = 750, "silver" = 1500, "glass" = 3750)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/repair_droid
|
||||
|
||||
/datum/design/item/mecha/phoron_generator
|
||||
@@ -399,13 +398,13 @@
|
||||
id = "mech_phoron_generator"
|
||||
req_tech = list(TECH_PHORON = 2, TECH_POWER= 2, TECH_ENGINEERING = 2)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/generator
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 10000, "silver" = 500, "glass" = 1000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 7500, "silver" = 375, "glass" = 750)
|
||||
|
||||
/datum/design/item/mecha/energy_relay
|
||||
name = "Energy relay"
|
||||
id = "mech_energy_relay"
|
||||
req_tech = list(TECH_MAGNET = 4, TECH_POWER = 3)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 10000, "gold" = 2000, "silver" = 3000, "glass" = 2000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 7500, "gold" = 1500, "silver" = 2250, "glass" = 1500)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay
|
||||
|
||||
/datum/design/item/mecha/ccw_armor
|
||||
@@ -413,14 +412,14 @@
|
||||
desc = "Exosuit close-combat armor booster."
|
||||
id = "mech_ccw_armor"
|
||||
req_tech = list(TECH_MATERIAL = 5, TECH_COMBAT = 4)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 20000, "silver" = 5000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 11250, "silver" = 3750)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster
|
||||
|
||||
/datum/design/item/mecha/proj_armor
|
||||
desc = "Exosuit projectile armor booster."
|
||||
id = "mech_proj_armor"
|
||||
req_tech = list(TECH_MATERIAL = 5, TECH_COMBAT = 5, TECH_ENGINEERING = 3)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 20000, "gold" = 5000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 15000, "gold" = 3750)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster
|
||||
|
||||
/datum/design/item/mecha/diamond_drill
|
||||
@@ -428,7 +427,7 @@
|
||||
desc = "A diamond version of the exosuit drill. It's harder, better, faster, stronger."
|
||||
id = "mech_diamond_drill"
|
||||
req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 10000, "diamond" = 6500)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 7500, "diamond" = 4875)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill
|
||||
|
||||
/datum/design/item/mecha/generator_nuclear
|
||||
@@ -436,7 +435,7 @@
|
||||
desc = "Exosuit-held nuclear reactor. Converts uranium and everyone's health to energy."
|
||||
id = "mech_generator_nuclear"
|
||||
req_tech = list(TECH_POWER= 3, TECH_ENGINEERING = 3, TECH_MATERIAL = 3)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 10000, "silver" = 500, "glass" = 1000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 7500, "silver" = 375, "glass" = 750)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/generator/nuclear
|
||||
|
||||
/datum/design/item/synthetic_flash
|
||||
@@ -444,6 +443,6 @@
|
||||
id = "sflash"
|
||||
req_tech = list(TECH_MAGNET = 3, TECH_COMBAT = 2)
|
||||
build_type = MECHFAB
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 750, "glass" = 750)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 562, "glass" = 562)
|
||||
build_path = /obj/item/device/flash/synthetic
|
||||
category = "Misc"
|
||||
@@ -49,7 +49,7 @@
|
||||
//////////////////// Prosthetics ////////////////////
|
||||
/datum/design/item/prosfab/pros/torso
|
||||
time = 35
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 60000, "glass" = 10000, "plasteel" = 2000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 45000, "glass" = 7500, "plasteel" = 1500)
|
||||
// req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 3, TECH_DATA = 3) //Saving the values just in case
|
||||
var/gender = MALE
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
id = "pros_head"
|
||||
build_path = /obj/item/organ/external/head
|
||||
time = 30
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 25000, "glass" = 5000, "plasteel" = 1000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 18750, "glass" = 3750, "plasteel" = 750)
|
||||
// req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 3, TECH_DATA = 3) //Saving the values just in case
|
||||
|
||||
/datum/design/item/prosfab/pros/l_arm
|
||||
@@ -80,63 +80,63 @@
|
||||
id = "pros_l_arm"
|
||||
build_path = /obj/item/organ/external/arm
|
||||
time = 20
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 18000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 13500)
|
||||
|
||||
/datum/design/item/prosfab/pros/l_hand
|
||||
name = "Prosthetic left hand"
|
||||
id = "pros_l_hand"
|
||||
build_path = /obj/item/organ/external/hand
|
||||
time = 15
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 10000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 7500)
|
||||
|
||||
/datum/design/item/prosfab/pros/l_leg
|
||||
name = "Prosthetic left leg"
|
||||
id = "pros_l_leg"
|
||||
build_path = /obj/item/organ/external/leg
|
||||
time = 20
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 15000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 11250)
|
||||
|
||||
/datum/design/item/prosfab/pros/l_foot
|
||||
name = "Prosthetic left foot"
|
||||
id = "pros_l_foot"
|
||||
build_path = /obj/item/organ/external/foot
|
||||
time = 15
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 10000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 7500)
|
||||
|
||||
/datum/design/item/prosfab/pros/r_arm
|
||||
name = "Prosthetic right arm"
|
||||
id = "pros_r_arm"
|
||||
build_path = /obj/item/organ/external/arm/right
|
||||
time = 20
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 18000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 13500)
|
||||
|
||||
/datum/design/item/prosfab/pros/r_hand
|
||||
name = "Prosthetic right hand"
|
||||
id = "pros_r_hand"
|
||||
build_path = /obj/item/organ/external/hand/right
|
||||
time = 15
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 10000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 7500)
|
||||
|
||||
/datum/design/item/prosfab/pros/r_leg
|
||||
name = "Prosthetic right leg"
|
||||
id = "pros_r_leg"
|
||||
build_path = /obj/item/organ/external/leg/right
|
||||
time = 20
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 15000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 11250)
|
||||
|
||||
/datum/design/item/prosfab/pros/r_foot
|
||||
name = "Prosthetic right foot"
|
||||
id = "pros_r_foot"
|
||||
build_path = /obj/item/organ/external/foot/right
|
||||
time = 15
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 10000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 7500)
|
||||
|
||||
/datum/design/item/prosfab/pros/cell
|
||||
name = "Prosthetic powercell"
|
||||
id = "pros_cell"
|
||||
build_path = /obj/item/organ/internal/cell
|
||||
time = 15
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 4000, "plasteel" = 2000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 7500, "glass" = 3000, "plasteel" = 1500)
|
||||
// req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2)
|
||||
|
||||
/datum/design/item/prosfab/pros/eyes
|
||||
@@ -144,63 +144,63 @@
|
||||
id = "pros_eyes"
|
||||
build_path = /obj/item/organ/internal/eyes/robot
|
||||
time = 15
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 7500, "glass" = 7500)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5625, "glass" = 5625)
|
||||
// req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2)
|
||||
|
||||
//////////////////// Cyborg Parts ////////////////////
|
||||
/datum/design/item/prosfab/cyborg
|
||||
category = "Cyborg Parts"
|
||||
time = 20
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 3750)
|
||||
|
||||
/datum/design/item/prosfab/cyborg/exoskeleton
|
||||
name = "Robot exoskeleton"
|
||||
id = "robot_exoskeleton"
|
||||
build_path = /obj/item/robot_parts/robot_suit
|
||||
time = 50
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 50000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 37500)
|
||||
|
||||
/datum/design/item/prosfab/cyborg/torso
|
||||
name = "Robot torso"
|
||||
id = "robot_torso"
|
||||
build_path = /obj/item/robot_parts/chest
|
||||
time = 35
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 40000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 30000)
|
||||
|
||||
/datum/design/item/prosfab/cyborg/head
|
||||
name = "Robot head"
|
||||
id = "robot_head"
|
||||
build_path = /obj/item/robot_parts/head
|
||||
time = 35
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 25000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 18750)
|
||||
|
||||
/datum/design/item/prosfab/cyborg/l_arm
|
||||
name = "Robot left arm"
|
||||
id = "robot_l_arm"
|
||||
build_path = /obj/item/robot_parts/l_arm
|
||||
time = 20
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 18000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 13500)
|
||||
|
||||
/datum/design/item/prosfab/cyborg/r_arm
|
||||
name = "Robot right arm"
|
||||
id = "robot_r_arm"
|
||||
build_path = /obj/item/robot_parts/r_arm
|
||||
time = 20
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 18000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 13500)
|
||||
|
||||
/datum/design/item/prosfab/cyborg/l_leg
|
||||
name = "Robot left leg"
|
||||
id = "robot_l_leg"
|
||||
build_path = /obj/item/robot_parts/l_leg
|
||||
time = 20
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 15000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 11250)
|
||||
|
||||
/datum/design/item/prosfab/cyborg/r_leg
|
||||
name = "Robot right leg"
|
||||
id = "robot_r_leg"
|
||||
build_path = /obj/item/robot_parts/r_leg
|
||||
time = 20
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 15000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 11250)
|
||||
|
||||
|
||||
//////////////////// Cyborg Internals ////////////////////
|
||||
@@ -208,7 +208,7 @@
|
||||
category = "Cyborg Internals"
|
||||
build_type = PROSFAB
|
||||
time = 12
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 10000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 7500)
|
||||
|
||||
/datum/design/item/prosfab/cyborg/component/binary_communication_device
|
||||
name = "Binary communication device"
|
||||
@@ -246,7 +246,7 @@
|
||||
category = "Cyborg Modules"
|
||||
build_type = PROSFAB
|
||||
time = 12
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 10000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 7500)
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/rename
|
||||
name = "Rename module"
|
||||
@@ -264,28 +264,28 @@
|
||||
name = "Emergency restart module"
|
||||
desc = "Used to force a restart of a disabled-but-repaired robot, bringing it back online."
|
||||
id = "borg_restart_module"
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 60000, "glass" = 5000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 45000, "glass" = 3750)
|
||||
build_path = /obj/item/borg/upgrade/restart
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/vtec
|
||||
name = "VTEC module"
|
||||
desc = "Used to kick in a robot's VTEC systems, increasing their speed."
|
||||
id = "borg_vtec_module"
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 80000, "glass" = 6000, "gold" = 5000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 60000, "glass" = 4500, "gold" = 3750)
|
||||
build_path = /obj/item/borg/upgrade/vtec
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/tasercooler
|
||||
name = "Rapid taser cooling module"
|
||||
desc = "Used to cool a mounted taser, increasing the potential current in it and thus its recharge rate."
|
||||
id = "borg_taser_module"
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 80000, "glass" = 6000, "gold" = 2000, "diamond" = 500)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 60000, "glass" = 4500, "gold" = 1500, "diamond" = 375)
|
||||
build_path = /obj/item/borg/upgrade/tasercooler
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/jetpack
|
||||
name = "Jetpack module"
|
||||
desc = "A carbon dioxide jetpack suitable for low-gravity mining operations."
|
||||
id = "borg_jetpack_module"
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 10000, "phoron" = 15000, "uranium" = 20000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 7500, "phoron" = 11250, "uranium" = 15000)
|
||||
build_path = /obj/item/borg/upgrade/jetpack
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/syndicate
|
||||
@@ -293,5 +293,5 @@
|
||||
desc = "Allows for the construction of lethal upgrades for cyborgs."
|
||||
id = "borg_syndicate_module"
|
||||
req_tech = list(TECH_COMBAT = 4, TECH_ILLEGAL = 3)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 15000, "diamond" = 10000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 7500, "glass" = 11250, "diamond" = 7500)
|
||||
build_path = /obj/item/borg/upgrade/syndicate
|
||||
@@ -40,7 +40,7 @@
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/E = tool
|
||||
user.visible_message("<span class='notice'>[user] has attached [target]'s [E.name] to the [E.amputation_point].</span>>", \
|
||||
user.visible_message("<span class='notice'>[user] has attached [target]'s [E.name] to the [E.amputation_point].</span>", \
|
||||
"<span class='notice'>You have attached [target]'s [E.name] to the [E.amputation_point].</span>")
|
||||
user.drop_from_inventory(E)
|
||||
E.replaced(target)
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
spawn(30)
|
||||
icon_state = "scanner_0old"
|
||||
qdel(occupant)
|
||||
occupant = null //If qdel's being slow or acting up, let's make sure we can't make more cores from this one.
|
||||
inuse = 0
|
||||
eject_contents()
|
||||
update_light_color()
|
||||
|
||||
@@ -99,6 +99,7 @@
|
||||
|
||||
/obj/machinery/xenobio/proc/finished_task()
|
||||
active = 0
|
||||
in_use = 0
|
||||
if(failed_task)
|
||||
failed_task = 0
|
||||
visible_message("\icon[src] [src] pings unhappily, flashing a red warning light.")
|
||||
@@ -332,7 +333,7 @@
|
||||
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
if (!ui)
|
||||
ui = new(user, src, ui_key, "xenobio_editor.tmpl", "Biological Genetic Bombarder UI", 470, 450)
|
||||
ui = new(user, src, ui_key, "xenobio_editor.tmpl", "biological genetic bombarder UI", 470, 450)
|
||||
ui.set_initial_data(data)
|
||||
ui.open()
|
||||
ui.set_auto_update(1)
|
||||
@@ -375,21 +376,21 @@
|
||||
/obj/machinery/xenobio/editor/proc/move_into_editor(var/mob/user,var/mob/living/victim)
|
||||
|
||||
if(src.occupant)
|
||||
user << "<span class='danger'>The biological genetic bombarder is full, empty it first!</span>"
|
||||
user << "<span class='danger'>The [src] is full, empty it first!</span>"
|
||||
return
|
||||
|
||||
if(in_use)
|
||||
user << "<span class='danger'>The biological genetic bombarder is locked and running, wait for it to finish.</span>"
|
||||
user << "<span class='danger'>The [src] is locked and running, wait for it to finish.</span>"
|
||||
return
|
||||
|
||||
if(!(istype(victim, /mob/living/simple_animal/xeno/slime)) )
|
||||
user << "<span class='danger'>This is not a suitable subject for the biological genetic bombarder!</span>"
|
||||
user << "<span class='danger'>This is not a suitable subject for the [src]!</span>"
|
||||
return
|
||||
|
||||
user.visible_message("<span class='danger'>[user] starts to put [victim] into the biological genetic bombarder!</span>")
|
||||
user.visible_message("<span class='danger'>[user] starts to put [victim] into the [src]!</span>")
|
||||
src.add_fingerprint(user)
|
||||
if(do_after(user, 30) && victim.Adjacent(src) && user.Adjacent(src) && victim.Adjacent(user) && !occupant)
|
||||
user.visible_message("<span class='danger'>[user] stuffs [victim] into the biological genetic bombarder!</span>")
|
||||
user.visible_message("<span class='danger'>[user] stuffs [victim] into the [src]!</span>")
|
||||
if(victim.client)
|
||||
victim.client.perspective = EYE_PERSPECTIVE
|
||||
victim.client.eye = src
|
||||
|
||||
@@ -67,19 +67,20 @@
|
||||
src.occupant = victim
|
||||
|
||||
/obj/machinery/xenobio2/manualinjector/proc/eject_contents()
|
||||
for(var/obj/thing in (contents - component_parts - circuit - beaker))
|
||||
thing.forceMove(loc)
|
||||
eject_xeno()
|
||||
eject_beaker()
|
||||
return
|
||||
|
||||
/obj/machinery/xenobio2/manualinjector/proc/eject_xeno()
|
||||
if(occupant)
|
||||
occupant.forceMove(loc)
|
||||
occupant = null
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/xenobio2/manualinjector/proc/eject_beaker()
|
||||
if(beaker)
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/B = beaker
|
||||
B.loc = loc
|
||||
beaker = null
|
||||
return
|
||||
|
||||
/obj/machinery/xenobio2/manualinjector/proc/inject_reagents()
|
||||
if(!occupant)
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
injector.inject_reagents()
|
||||
active = 0
|
||||
if(href_list["eject_occupant"])
|
||||
injector.eject_contents()
|
||||
injector.eject_xeno()
|
||||
|
||||
if(href_list["eject_beaker"])
|
||||
injector.eject_beaker()
|
||||
|
||||
@@ -73,12 +73,14 @@
|
||||
icon_state = "restruct_1"
|
||||
spawn(30)
|
||||
var/mob/living/simple_animal/xeno/slime/S = new(src)
|
||||
S.traitdat = core.traits
|
||||
S.traitdat = new() //New instance, so that if the core is deleted, the slime retains a trait datum.
|
||||
S.nameVar = core.nameVar
|
||||
S.name = "[S.nameVar] baby slime"
|
||||
core.traits.copy_traits(S.traitdat)
|
||||
S.ProcessTraits()
|
||||
qdel(core)
|
||||
spawn(30)
|
||||
qdel(core)
|
||||
core = null //If qdel's being a bit slow or acting up, let's just make sure we can't clone the core.
|
||||
inuse = 0
|
||||
eject_slime()
|
||||
icon_state = "restruct_0"
|
||||
|
||||
@@ -24,7 +24,23 @@ Slime specific procs go here.
|
||||
traitdat.traits[TRAIT_XENO_CANLEARN] = prob(68)
|
||||
traitdat.traits[TRAIT_XENO_SPEED] = round(rand(-10,10))
|
||||
|
||||
|
||||
/mob/living/simple_animal/xeno/slime/RandomChemicals()
|
||||
..()
|
||||
if(prob(40))
|
||||
var/hasMutToxin
|
||||
for(var/R in traitdat.chems)
|
||||
if(R == "mutationtoxin")
|
||||
hasMutToxin = 1
|
||||
var/chemamount
|
||||
if(hasMutToxin)
|
||||
var/list/chemchoices = (xenoChemList - traitdat.chems)
|
||||
|
||||
var/chemtype = pick(chemchoices)
|
||||
chemamount = rand(1,5)
|
||||
traitdat.chems[chemtype] = chemamount
|
||||
else
|
||||
chemamount = rand(1,5)
|
||||
traitdat.chems["mutationtoxin"] = chemamount
|
||||
|
||||
/mob/living/simple_animal/xeno/slime/proc/GrowUp()
|
||||
GenerateAdult()
|
||||
|
||||
@@ -4,6 +4,7 @@ Slime definitions, Life and New live here.
|
||||
/mob/living/simple_animal/xeno/slime //Adult values are found here
|
||||
nameVar = "grey" //When mutated, nameVar might change.
|
||||
desc = "A shifting, mass of goo."
|
||||
faction = "slime"
|
||||
speak_emote = list("garbles", "chirps", "blurbles")
|
||||
colored = 1
|
||||
color = "#CACACA"
|
||||
@@ -68,6 +69,7 @@ Slime definitions, Life and New live here.
|
||||
"toxin" = list("toxic" = 0.5),
|
||||
"carpotoxin" = list("toxic" = 1, "mut" = 1.5),
|
||||
"phoron" = list("toxic" = 1.5, "mut" = 0.03),
|
||||
"virusfood" = list("nutr" = 1.5, "mut" = 0.32),
|
||||
"cyanide" = list("toxic" = 3.5),
|
||||
"slimejelly" = list("nutr" = 0.5),
|
||||
"amutationtoxin" = list("toxic" = 0.1, "heal" = 1.5, "mut" = 3),
|
||||
|
||||
@@ -8,6 +8,7 @@ Also includes Life and New
|
||||
/mob/living/simple_animal/xeno
|
||||
name = "Xeno"
|
||||
real_name = "Xeno"
|
||||
faction = "xeno" //Needs to be set.
|
||||
desc = "Something's broken, yell at someone."
|
||||
melee_damage_lower = 0
|
||||
melee_damage_upper = 0
|
||||
@@ -46,33 +47,32 @@ Also includes Life and New
|
||||
|
||||
//Life additions
|
||||
/mob/living/simple_animal/xeno/Life()
|
||||
if(src.stat == DEAD)
|
||||
return 0
|
||||
|
||||
if(stasis)
|
||||
stasis--
|
||||
if(stasis < 0)
|
||||
stasis = 0
|
||||
return 0
|
||||
|
||||
..()
|
||||
handle_reagents()
|
||||
if((mut_level >= mut_max) && !(mutable & NOMUT))
|
||||
Mutate()
|
||||
mut_level -= mut_max
|
||||
if(!(stat == DEAD))
|
||||
handle_reagents()
|
||||
if((mut_level >= mut_max) && !(mutable & NOMUT))
|
||||
Mutate()
|
||||
mut_level -= mut_max
|
||||
|
||||
ProcessSpeechBuffer()
|
||||
ProcessSpeechBuffer()
|
||||
|
||||
//Have to feed the xenos somehow.
|
||||
if(nutrition < 0)
|
||||
nutrition = 0
|
||||
if((nutrition > 0 ) && traitdat.traits[TRAIT_XENO_EATS])
|
||||
if(nutrition >= 300)
|
||||
nutrition -= hunger_factor
|
||||
else
|
||||
if(traitdat.traits[TRAIT_XENO_EATS])
|
||||
health = starve_damage
|
||||
//Have to feed the xenos somehow.
|
||||
if(nutrition < 0)
|
||||
nutrition = 0
|
||||
if((nutrition > 0 ) && traitdat.traits[TRAIT_XENO_EATS])
|
||||
if(nutrition >= 300)
|
||||
nutrition -= hunger_factor
|
||||
else
|
||||
if(traitdat.traits[TRAIT_XENO_EATS])
|
||||
health = starve_damage
|
||||
|
||||
return 1 //Everything worked okay.
|
||||
return 1 //Everything worked okay.
|
||||
|
||||
/mob/living/simple_animal/xeno/New()
|
||||
|
||||
@@ -94,4 +94,8 @@ Also includes Life and New
|
||||
|
||||
if(!health)
|
||||
stat = DEAD
|
||||
|
||||
|
||||
/mob/living/simple_animal/xeno/Destroy()
|
||||
traitdat.Destroy() //Let's clean up after ourselves.
|
||||
traitdat = null
|
||||
..()
|
||||
@@ -10,4 +10,9 @@ Xenobiological product lives here as a basic type.
|
||||
var/source = "Unknown"
|
||||
var/product = "mess"
|
||||
var/nameVar = "blah"
|
||||
|
||||
/obj/item/xenoproduct/Destroy()
|
||||
traits.Destroy() //Let's not leave any traits hanging around.
|
||||
traits = null
|
||||
..()
|
||||
|
||||
Reference in New Issue
Block a user