Merge remote-tracking branch 'refs/remotes/Citadel-Station-13/master' into syntheticbloods
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -121,3 +121,4 @@
|
||||
#define ORGAN_SLOT_BRAIN_ANTIDROP "brain_antidrop"
|
||||
#define ORGAN_SLOT_BRAIN_ANTISTUN "brain_antistun"
|
||||
#define ORGAN_SLOT_TAIL "tail"
|
||||
#define ORGAN_SLOT_PENIS "penis"
|
||||
|
||||
@@ -102,6 +102,7 @@
|
||||
#define CAT_SANDWICH "Sandwiches"
|
||||
#define CAT_SOUP "Soups"
|
||||
#define CAT_SPAGHETTI "Spaghettis"
|
||||
#define CAT_SUSHI "Fish"
|
||||
|
||||
#define RCD_FLOORWALL 1
|
||||
#define RCD_AIRLOCK 2
|
||||
|
||||
@@ -69,6 +69,7 @@
|
||||
#define TRAIT_TAGGER "tagger"
|
||||
#define TRAIT_PHOTOGRAPHER "photographer"
|
||||
#define TRAIT_MUSICIAN "musician"
|
||||
#define TRAIT_CROCRIN_IMMUNE "crocin_immune"
|
||||
|
||||
// common trait sources
|
||||
#define TRAIT_GENERIC "generic"
|
||||
|
||||
@@ -221,9 +221,10 @@
|
||||
else // A variation of get_hear inlined here to take advantage of the compiler's fastpath for obj/mob in view
|
||||
var/lum = T.luminosity
|
||||
T.luminosity = 6 // This is the maximum luminosity
|
||||
for(var/mob/M in view(R, T))
|
||||
var/list/cachedview = view(R, T)
|
||||
for(var/mob/M in cachedview)
|
||||
processing_list += M
|
||||
for(var/obj/O in view(R, T))
|
||||
for(var/obj/O in cachedview)
|
||||
processing_list += O
|
||||
T.luminosity = lum
|
||||
|
||||
|
||||
@@ -108,5 +108,6 @@ GLOBAL_LIST_INIT(maintenance_loot, list(
|
||||
/obj/item/toy/eightball = 1,
|
||||
/obj/item/reagent_containers/pill/floorpill = 1,
|
||||
/obj/item/storage/daki = 3, //VERY IMPORTANT CIT CHANGE - adds bodypillows to maint
|
||||
/obj/item/storage/pill_bottle/penis_enlargement = 2,
|
||||
"" = 3
|
||||
))
|
||||
|
||||
@@ -19,6 +19,22 @@
|
||||
max_items = 1
|
||||
attack_hand_interact = FALSE
|
||||
|
||||
/datum/component/storage/concrete/pockets/small/collar
|
||||
max_items = 1
|
||||
|
||||
/datum/component/storage/concrete/pockets/small/collar/Initialize()
|
||||
. = ..()
|
||||
can_hold = typecacheof(list(
|
||||
/obj/item/reagent_containers/food/snacks/cookie,
|
||||
/obj/item/reagent_containers/food/snacks/sugarcookie))
|
||||
|
||||
/datum/component/storage/concrete/pockets/small/collar/locked/Initialize()
|
||||
. = ..()
|
||||
can_hold = typecacheof(list(
|
||||
/obj/item/reagent_containers/food/snacks/cookie,
|
||||
/obj/item/reagent_containers/food/snacks/sugarcookie,
|
||||
/obj/item/key/collar))
|
||||
|
||||
/datum/component/storage/concrete/pockets/tiny
|
||||
max_items = 1
|
||||
max_w_class = WEIGHT_CLASS_TINY
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
if(!IsAvailable())
|
||||
return
|
||||
var/turf/T = get_turf(target)
|
||||
if(target in view(user.client.view, get_turf(user)))
|
||||
if(target in view(user.client.view, user))
|
||||
var/obj/spot1 = new phaseout(get_turf(user), user.dir)
|
||||
user.forceMove(T)
|
||||
playsound(T, dash_sound, 25, 1)
|
||||
|
||||
+4
-1
@@ -9,6 +9,7 @@
|
||||
var/list/features = list("FFF") //first value is mutant color
|
||||
var/real_name //Stores the real name of the person who originally got this dna datum. Used primarely for changelings,
|
||||
var/nameless = FALSE
|
||||
var/custom_species //siiiiigh I guess this is important
|
||||
var/list/mutations = list() //All mutations are from now on here
|
||||
var/list/temporary_mutations = list() //Timers for temporary mutations
|
||||
var/list/previous = list() //For temporary name/ui/ue/blood_type modifications
|
||||
@@ -45,6 +46,7 @@
|
||||
destination.dna.features = features.Copy()
|
||||
destination.dna.real_name = real_name
|
||||
destination.dna.nameless = nameless
|
||||
destination.dna.custom_species = custom_species
|
||||
destination.dna.temporary_mutations = temporary_mutations.Copy()
|
||||
if(ishuman(destination))
|
||||
var/mob/living/carbon/human/H = destination
|
||||
@@ -62,6 +64,7 @@
|
||||
new_dna.species = new species.type
|
||||
new_dna.real_name = real_name
|
||||
new_dna.nameless = nameless
|
||||
new_dna.custom_species = custom_species
|
||||
new_dna.mutations = mutations.Copy()
|
||||
|
||||
/datum/dna/proc/add_mutation(mutation_name)
|
||||
@@ -202,7 +205,7 @@
|
||||
|
||||
|
||||
/datum/dna/proc/is_same_as(datum/dna/D)
|
||||
if(uni_identity == D.uni_identity && struc_enzymes == D.struc_enzymes && real_name == D.real_name && nameless == D.nameless)
|
||||
if(uni_identity == D.uni_identity && struc_enzymes == D.struc_enzymes && real_name == D.real_name && nameless == D.nameless && custom_species == D.custom_species)
|
||||
if(species.type == D.species.type && features == D.features && blood_type == D.blood_type)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
@@ -84,3 +84,12 @@
|
||||
/datum/quirk/monochromatic/remove()
|
||||
if(quirk_holder)
|
||||
quirk_holder.remove_client_colour(/datum/client_colour/monochrome)
|
||||
|
||||
/datum/quirk/crocrin_immunity
|
||||
name = "Crocin Immunity"
|
||||
desc = "You're one of the few people in the galaxy who are genetically immune to Crocin and Hexacrocin products and their addictive properties! However, you can still get brain damage from Hexacrocin addiction."
|
||||
mob_trait = TRAIT_CROCRIN_IMMUNE
|
||||
value = 0
|
||||
gain_text = "<span class='notice'>You feel more prudish.</span>"
|
||||
lose_text = "<span class='notice'>You don't feel as prudish as before.</span>"
|
||||
medical_record_text = "Patient exhibits a special gene that makes them immune to Crocin and Hexacrocin."
|
||||
|
||||
@@ -81,6 +81,12 @@
|
||||
to_chat(usr, "<span class='danger'>The drip beeps: Warning, incompatible creature!</span>")
|
||||
return
|
||||
|
||||
var/mob/living/L
|
||||
if(isliving(target))
|
||||
L = target
|
||||
if(!L.can_inject(usr, 1))
|
||||
return
|
||||
|
||||
if(Adjacent(target) && usr.Adjacent(target))
|
||||
if(beaker)
|
||||
usr.visible_message("<span class='warning'>[usr] attaches [src] to [target].</span>", "<span class='notice'>You attach [src] to [target].</span>")
|
||||
|
||||
@@ -15,7 +15,9 @@
|
||||
/obj/item/gun/energy,
|
||||
/obj/item/melee/baton,
|
||||
/obj/item/ammo_box/magazine/recharge,
|
||||
/obj/item/modular_computer))
|
||||
/obj/item/modular_computer,
|
||||
/obj/item/gun/ballistic/automatic/magrifle_e,
|
||||
/obj/item/gun/ballistic/automatic/pistol/mag_e))
|
||||
|
||||
/obj/machinery/recharger/RefreshParts()
|
||||
for(var/obj/item/stock_parts/capacitor/C in component_parts)
|
||||
|
||||
@@ -80,6 +80,7 @@
|
||||
desc = "OH SHIT IT'S THE DEATHSQUAD WE'RE ALL GONNA DIE"
|
||||
name = "\improper DEATH-RIPLEY"
|
||||
icon_state = "deathripley"
|
||||
armor = list("melee" = 40, "bullet" = 30, "laser" = 20, "energy" = 20, "bomb" = 40, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
|
||||
slow_pressure_step_in = 3
|
||||
opacity=0
|
||||
lights_power = 7
|
||||
@@ -194,4 +195,4 @@
|
||||
cargo -= O
|
||||
else
|
||||
if(user.loc == src) //so we don't get the message if we resisted multiple times and succeeded.
|
||||
to_chat(user, "<span class='warning'>You fail to push [O] out of [src]!</span>")
|
||||
to_chat(user, "<span class='warning'>You fail to push [O] out of [src]!</span>")
|
||||
|
||||
@@ -391,7 +391,8 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
//BASIC FUNCTIONS===================================
|
||||
|
||||
if("Refresh")//Refresh, goes to the end of the proc.
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 50, 1)
|
||||
if (!silent)
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 15, 1)
|
||||
|
||||
if ("Toggle_Font")
|
||||
//CODE REVISION 2
|
||||
@@ -406,16 +407,19 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
font_mode = FONT_ORBITRON
|
||||
if (MODE_VT)
|
||||
font_mode = FONT_VT
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 50, 1)
|
||||
if (!silent)
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 15, 1)
|
||||
|
||||
if ("Change_Color")
|
||||
var/new_color = input("Please enter a color name or hex value (Default is \'#808000\').",background_color)as color
|
||||
background_color = new_color
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 50, 1)
|
||||
if (!silent)
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 15, 1)
|
||||
|
||||
if ("Toggle_Underline")
|
||||
underline_flag = !underline_flag
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 50, 1)
|
||||
if (!silent)
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 15, 1)
|
||||
|
||||
if("Return")//Return
|
||||
if(mode<=9)
|
||||
@@ -424,7 +428,8 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
mode = round(mode/10)
|
||||
if(mode==4 || mode == 5)//Fix for cartridges. Redirects to hub.
|
||||
mode = 0
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 50, 1)
|
||||
if (!silent)
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 15, 1)
|
||||
|
||||
if ("Authenticate")//Checks for ID
|
||||
id_check(U)
|
||||
@@ -434,8 +439,9 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
if(istype(id, /obj/item/card/id/syndicate))
|
||||
owner = id.registered_name
|
||||
update_label()
|
||||
playsound(src, 'sound/machines/terminal_processing.ogg', 50, 1)
|
||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, src, 'sound/machines/terminal_success.ogg', 50, 1), 13)
|
||||
if (!silent)
|
||||
playsound(src, 'sound/machines/terminal_processing.ogg', 15, 1)
|
||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, src, 'sound/machines/terminal_success.ogg', 15, 1), 13)
|
||||
|
||||
if("Eject")//Ejects the cart, only done from hub.
|
||||
if (!isnull(cartridge))
|
||||
@@ -445,56 +451,67 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
cartridge.host_pda = null
|
||||
cartridge = null
|
||||
update_icon()
|
||||
playsound(src, 'sound/machines/terminal_eject_disc.ogg', 50, 1)
|
||||
if (!silent)
|
||||
playsound(src, 'sound/machines/terminal_eject_disc.ogg', 50, 1)
|
||||
|
||||
//MENU FUNCTIONS===================================
|
||||
|
||||
if("0")//Hub
|
||||
mode = 0
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 50, 1)
|
||||
if (!silent)
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 15, 1)
|
||||
if("1")//Notes
|
||||
mode = 1
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 50, 1)
|
||||
if (!silent)
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 15, 1)
|
||||
if("2")//Messenger
|
||||
mode = 2
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 50, 1)
|
||||
if (!silent)
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 15, 1)
|
||||
if("21")//Read messeges
|
||||
mode = 21
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 50, 1)
|
||||
if (!silent)
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 15, 1)
|
||||
if("3")//Atmos scan
|
||||
mode = 3
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 50, 1)
|
||||
if (!silent)
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 15, 1)
|
||||
if("4")//Redirects to hub
|
||||
mode = 0
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 50, 1)
|
||||
if (!silent)
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 15, 1)
|
||||
|
||||
|
||||
//MAIN FUNCTIONS===================================
|
||||
|
||||
if("Light")
|
||||
toggle_light()
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 50, 1)
|
||||
if (!silent)
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 15, 1)
|
||||
|
||||
if("Medical Scan")
|
||||
if(scanmode == PDA_SCANNER_MEDICAL)
|
||||
scanmode = PDA_SCANNER_NONE
|
||||
else if((!isnull(cartridge)) && (cartridge.access & CART_MEDICAL))
|
||||
scanmode = PDA_SCANNER_MEDICAL
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 50, 1)
|
||||
if (!silent)
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 15, 1)
|
||||
|
||||
if("Reagent Scan")
|
||||
if(scanmode == PDA_SCANNER_REAGENT)
|
||||
scanmode = PDA_SCANNER_NONE
|
||||
else if((!isnull(cartridge)) && (cartridge.access & CART_REAGENT_SCANNER))
|
||||
scanmode = PDA_SCANNER_REAGENT
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 50, 1)
|
||||
if (!silent)
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 15, 1)
|
||||
|
||||
if("Halogen Counter")
|
||||
if(scanmode == PDA_SCANNER_HALOGEN)
|
||||
scanmode = PDA_SCANNER_NONE
|
||||
else if((!isnull(cartridge)) && (cartridge.access & CART_ENGINE))
|
||||
scanmode = PDA_SCANNER_HALOGEN
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 50, 1)
|
||||
if (!silent)
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 15, 1)
|
||||
|
||||
if("Honk")
|
||||
if ( !(last_noise && world.time < last_noise + 20) )
|
||||
@@ -511,7 +528,8 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
scanmode = PDA_SCANNER_NONE
|
||||
else if((!isnull(cartridge)) && (cartridge.access & CART_ATMOS))
|
||||
scanmode = PDA_SCANNER_GAS
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 50, 1)
|
||||
if (!silent)
|
||||
playsound(src, 'sound/machines/terminal_select.ogg', 15, 1)
|
||||
|
||||
if("Drone Phone")
|
||||
var/alert_s = input(U,"Alert severity level","Ping Drones",null) as null|anything in list("Low","Medium","High","Critical")
|
||||
@@ -520,7 +538,8 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
var/msg = "<span class='boldnotice'>NON-DRONE PING: [U.name]: [alert_s] priority alert in [A.name]!</span>"
|
||||
_alert_drones(msg, TRUE, U)
|
||||
to_chat(U, msg)
|
||||
playsound(src, 'sound/machines/terminal_success.ogg', 50, 1)
|
||||
if (!silent)
|
||||
playsound(src, 'sound/machines/terminal_success.ogg', 15, 1)
|
||||
|
||||
|
||||
//NOTEKEEPER FUNCTIONS===================================
|
||||
@@ -672,7 +691,8 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
if (!signal.data["done"])
|
||||
to_chat(user, "<span class='notice'>ERROR: Server isn't responding.</span>")
|
||||
return
|
||||
playsound(src, 'sound/machines/terminal_error.ogg', 50, 1)
|
||||
if (!silent)
|
||||
playsound(src, 'sound/machines/terminal_error.ogg', 15, 1)
|
||||
|
||||
var/target_text = signal.format_target()
|
||||
// Log it in our logs
|
||||
@@ -685,7 +705,8 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
// Log in the talk log
|
||||
user.log_talk(message, LOG_PDA, tag="PDA: [initial(name)] to [target_text]")
|
||||
to_chat(user, "<span class='info'>Message sent to [target_text]: \"[message]\"</span>")
|
||||
playsound(src, 'sound/machines/terminal_success.ogg', 50, 1)
|
||||
if (!silent)
|
||||
playsound(src, 'sound/machines/terminal_success.ogg', 15, 1)
|
||||
// Reset the photo
|
||||
picture = null
|
||||
last_text = world.time
|
||||
@@ -830,14 +851,16 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
if(!idcard.registered_name)
|
||||
to_chat(user, "<span class='warning'>\The [src] rejects the ID!</span>")
|
||||
return
|
||||
playsound(src, 'sound/machines/terminal_error.ogg', 50, 1)
|
||||
if (!silent)
|
||||
playsound(src, 'sound/machines/terminal_error.ogg', 15, 1)
|
||||
|
||||
if(!owner)
|
||||
owner = idcard.registered_name
|
||||
ownjob = idcard.assignment
|
||||
update_label()
|
||||
to_chat(user, "<span class='notice'>Card scanned.</span>")
|
||||
playsound(src, 'sound/machines/terminal_success.ogg', 50, 1)
|
||||
if (!silent)
|
||||
playsound(src, 'sound/machines/terminal_success.ogg', 15, 1)
|
||||
else
|
||||
//Basic safety check. If either both objects are held by user or PDA is on ground and card is in hand.
|
||||
if(((src in user.contents) || (isturf(loc) && in_range(src, user))) && (C in user.contents))
|
||||
@@ -1053,3 +1076,4 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
#undef PDA_SCANNER_HALOGEN
|
||||
#undef PDA_SCANNER_GAS
|
||||
#undef PDA_SPAM_DELAY
|
||||
|
||||
|
||||
@@ -98,10 +98,12 @@ SLIME SCANNER
|
||||
if ((user.has_trait(TRAIT_CLUMSY) || user.has_trait(TRAIT_DUMB)) && prob(50))
|
||||
to_chat(user, "<span class='notice'>You stupidly try to analyze the floor's vitals!</span>")
|
||||
user.visible_message("<span class='warning'>[user] has analyzed the floor's vitals!</span>")
|
||||
to_chat(user, "<span class='info'>Analyzing results for The floor:\n\tOverall status: <b>Healthy</b>")
|
||||
to_chat(user, "<span class='info'>Key: <font color='blue'>Suffocation</font>/<font color='green'>Toxin</font>/<font color='#FF8000'>Burn</font>/<font color='red'>Brute</font></span>")
|
||||
to_chat(user, "<span class='info'>\tDamage specifics: <font color='blue'>0</font>-<font color='green'>0</font>-<font color='#FF8000'>0</font>-<font color='red'>0</font></span>")
|
||||
to_chat(user, "<span class='info'>Body temperature: ???</span>")
|
||||
var/msg = "<span class='info'>*---------*\nAnalyzing results for The floor:\n\tOverall status: <b>Healthy</b>\n"
|
||||
msg += "Key: <font color='blue'>Suffocation</font>/<font color='green'>Toxin</font>/<font color='#FF8000'>Burn</font>/<font color='red'>Brute</font>\n"
|
||||
msg += "\tDamage specifics: <font color='blue'>0</font>-<font color='green'>0</font>-<font color='#FF8000'>0</font>-<font color='red'>0</font>\n"
|
||||
msg += "Body temperature: ???\n"
|
||||
msg += "*---------*</span>"
|
||||
to_chat(user, msg)
|
||||
return
|
||||
|
||||
user.visible_message("<span class='notice'>[user] has analyzed [M]'s vitals.</span>")
|
||||
@@ -136,31 +138,31 @@ SLIME SCANNER
|
||||
if(H.undergoing_liver_failure() && H.stat != DEAD)
|
||||
to_chat(user, "<span class='danger'>Subject is suffering from liver failure: Apply Corazone and begin a liver transplant immediately!</span>")
|
||||
|
||||
to_chat(user, "<span class='info'>Analyzing results for [M]:\n\tOverall status: [mob_status]</span>")
|
||||
var/msg = "<span class='info'>*---------*\nAnalyzing results for [M]:\n\tOverall status: [mob_status]\n"
|
||||
|
||||
// Damage descriptions
|
||||
if(brute_loss > 10)
|
||||
to_chat(user, "\t<span class='alert'>[brute_loss > 50 ? "Severe" : "Minor"] tissue damage detected.</span>")
|
||||
msg += "\t<span class='alert'>[brute_loss > 50 ? "Severe" : "Minor"] tissue damage detected.</span>\n"
|
||||
if(fire_loss > 10)
|
||||
to_chat(user, "\t<span class='alert'>[fire_loss > 50 ? "Severe" : "Minor"] burn damage detected.</span>")
|
||||
msg += "\t<span class='alert'>[fire_loss > 50 ? "Severe" : "Minor"] burn damage detected.</span>\n"
|
||||
if(oxy_loss > 10)
|
||||
to_chat(user, "\t<span class='info'><span class='alert'>[oxy_loss > 50 ? "Severe" : "Minor"] oxygen deprivation detected.</span>")
|
||||
msg += "\t<span class='info'><span class='alert'>[oxy_loss > 50 ? "Severe" : "Minor"] oxygen deprivation detected.</span>\n"
|
||||
if(tox_loss > 10)
|
||||
to_chat(user, "\t<span class='alert'>[tox_loss > 50 ? "Severe" : "Minor"] amount of toxin damage detected.</span>")
|
||||
msg += "\t<span class='alert'>[tox_loss > 50 ? "Severe" : "Minor"] amount of toxin damage detected.</span>\n"
|
||||
if(M.getStaminaLoss())
|
||||
to_chat(user, "\t<span class='alert'>Subject appears to be suffering from fatigue.</span>")
|
||||
msg += "\t<span class='alert'>Subject appears to be suffering from fatigue.</span>\n"
|
||||
if(advanced)
|
||||
to_chat(user, "\t<span class='info'>Fatigue Level: [M.getStaminaLoss()]%.</span>")
|
||||
msg += "\t<span class='info'>Fatigue Level: [M.getStaminaLoss()]%.</span>\n"
|
||||
if (M.getCloneLoss())
|
||||
to_chat(user, "\t<span class='alert'>Subject appears to have [M.getCloneLoss() > 30 ? "Severe" : "Minor"] cellular damage.</span>")
|
||||
msg += "\t<span class='alert'>Subject appears to have [M.getCloneLoss() > 30 ? "Severe" : "Minor"] cellular damage.</span>\n"
|
||||
if(advanced)
|
||||
to_chat(user, "\t<span class='info'>Cellular Damage Level: [M.getCloneLoss()].</span>")
|
||||
msg += "\t<span class='info'>Cellular Damage Level: [M.getCloneLoss()].</span>\n"
|
||||
if (M.getBrainLoss() >= 200 || !M.getorgan(/obj/item/organ/brain))
|
||||
to_chat(user, "\t<span class='alert'>Subject's brain function is non-existent.</span>")
|
||||
msg += "\t<span class='alert'>Subject's brain function is non-existent.</span>\n"
|
||||
else if (M.getBrainLoss() >= 120)
|
||||
to_chat(user, "\t<span class='alert'>Severe brain damage detected. Subject likely to have mental traumas.</span>")
|
||||
msg += "\t<span class='alert'>Severe brain damage detected. Subject likely to have mental traumas.</span>\n"
|
||||
else if (M.getBrainLoss() >= 45)
|
||||
to_chat(user, "\t<span class='alert'>Brain damage detected.</span>")
|
||||
msg += "\t<span class='alert'>Brain damage detected.</span>\n"
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/C = M
|
||||
if(LAZYLEN(C.get_traumas()))
|
||||
@@ -176,83 +178,83 @@ SLIME SCANNER
|
||||
trauma_desc += "permanent "
|
||||
trauma_desc += B.scan_desc
|
||||
trauma_text += trauma_desc
|
||||
to_chat(user, "\t<span class='alert'>Cerebral traumas detected: subject appears to be suffering from [english_list(trauma_text)].</span>")
|
||||
msg += "\t<span class='alert'>Cerebral traumas detected: subject appears to be suffering from [english_list(trauma_text)].</span>\n"
|
||||
if(C.roundstart_quirks.len)
|
||||
to_chat(user, "\t<span class='info'>Subject has the following physiological traits: [C.get_trait_string()].</span>")
|
||||
msg += "\t<span class='info'>Subject has the following physiological traits: [C.get_trait_string()].</span>\n"
|
||||
if(advanced)
|
||||
to_chat(user, "\t<span class='info'>Brain Activity Level: [(200 - M.getBrainLoss())/2]%.</span>")
|
||||
msg += "\t<span class='info'>Brain Activity Level: [(200 - M.getBrainLoss())/2]%.</span>\n"
|
||||
if (M.radiation)
|
||||
to_chat(user, "\t<span class='alert'>Subject is irradiated.</span>")
|
||||
msg += "\t<span class='alert'>Subject is irradiated.</span>\n"
|
||||
if(advanced)
|
||||
to_chat(user, "\t<span class='info'>Radiation Level: [M.radiation]%.</span>")
|
||||
msg += "\t<span class='info'>Radiation Level: [M.radiation]%.</span>\n"
|
||||
|
||||
if(advanced && M.hallucinating())
|
||||
to_chat(user, "\t<span class='info'>Subject is hallucinating.</span>")
|
||||
msg += "\t<span class='info'>Subject is hallucinating.</span>\n"
|
||||
|
||||
//Eyes and ears
|
||||
if(advanced)
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/C = M
|
||||
var/obj/item/organ/ears/ears = C.getorganslot(ORGAN_SLOT_EARS)
|
||||
to_chat(user, "\t<span class='info'><b>==EAR STATUS==</b></span>")
|
||||
msg += "\t<span class='info'><b>==EAR STATUS==</b></span>\n"
|
||||
if(istype(ears))
|
||||
var/healthy = TRUE
|
||||
if(C.has_trait(TRAIT_DEAF, GENETIC_MUTATION))
|
||||
healthy = FALSE
|
||||
to_chat(user, "\t<span class='alert'>Subject is genetically deaf.</span>")
|
||||
msg += "\t<span class='alert'>Subject is genetically deaf.</span>\n"
|
||||
else if(C.has_trait(TRAIT_DEAF))
|
||||
healthy = FALSE
|
||||
to_chat(user, "\t<span class='alert'>Subject is deaf.</span>")
|
||||
msg += "\t<span class='alert'>Subject is deaf.</span>\n"
|
||||
else
|
||||
if(ears.ear_damage)
|
||||
to_chat(user, "\t<span class='alert'>Subject has [ears.ear_damage > UNHEALING_EAR_DAMAGE? "permanent ": "temporary "]hearing damage.</span>")
|
||||
msg += "\t<span class='alert'>Subject has [ears.ear_damage > UNHEALING_EAR_DAMAGE? "permanent ": "temporary "]hearing damage.</span>\n"
|
||||
healthy = FALSE
|
||||
if(ears.deaf)
|
||||
to_chat(user, "\t<span class='alert'>Subject is [ears.ear_damage > UNHEALING_EAR_DAMAGE ? "permanently ": "temporarily "] deaf.</span>")
|
||||
msg += "\t<span class='alert'>Subject is [ears.ear_damage > UNHEALING_EAR_DAMAGE ? "permanently ": "temporarily "] deaf.</span>\n"
|
||||
healthy = FALSE
|
||||
if(healthy)
|
||||
to_chat(user, "\t<span class='info'>Healthy.</span>")
|
||||
msg += "\t<span class='info'>Healthy.</span>\n"
|
||||
else
|
||||
to_chat(user, "\t<span class='alert'>Subject does not have ears.</span>")
|
||||
msg += "\t<span class='alert'>Subject does not have ears.</span>\n"
|
||||
var/obj/item/organ/eyes/eyes = C.getorganslot(ORGAN_SLOT_EYES)
|
||||
to_chat(user, "\t<span class='info'><b>==EYE STATUS==</b></span>")
|
||||
msg += "\t<span class='info'><b>==EYE STATUS==</b></span>\n"
|
||||
if(istype(eyes))
|
||||
var/healthy = TRUE
|
||||
if(C.has_trait(TRAIT_BLIND))
|
||||
to_chat(user, "\t<span class='alert'>Subject is blind.</span>")
|
||||
msg += "\t<span class='alert'>Subject is blind.</span>\n"
|
||||
healthy = FALSE
|
||||
if(C.has_trait(TRAIT_NEARSIGHT))
|
||||
to_chat(user, "\t<span class='alert'>Subject is nearsighted.</span>")
|
||||
msg += "\t<span class='alert'>Subject is nearsighted.</span>\n"
|
||||
healthy = FALSE
|
||||
if(eyes.eye_damage > 30)
|
||||
to_chat(user, "\t<span class='alert'>Subject has severe eye damage.</span>")
|
||||
msg += "\t<span class='alert'>Subject has severe eye damage.</span>\n"
|
||||
healthy = FALSE
|
||||
else if(eyes.eye_damage > 20)
|
||||
to_chat(user, "\t<span class='alert'>Subject has significant eye damage.</span>")
|
||||
msg += "\t<span class='alert'>Subject has significant eye damage.</span>\n"
|
||||
healthy = FALSE
|
||||
else if(eyes.eye_damage)
|
||||
to_chat(user, "\t<span class='alert'>Subject has minor eye damage.</span>")
|
||||
msg += "\t<span class='alert'>Subject has minor eye damage.</span>\n"
|
||||
healthy = FALSE
|
||||
if(healthy)
|
||||
to_chat(user, "\t<span class='info'>Healthy.</span>")
|
||||
msg += "\t<span class='info'>Healthy.</span>\n"
|
||||
else
|
||||
to_chat(user, "\t<span class='alert'>Subject does not have eyes.</span>")
|
||||
msg += "\t<span class='alert'>Subject does not have eyes.</span>\n"
|
||||
|
||||
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/ldamage = H.return_liver_damage()
|
||||
if(ldamage > 10)
|
||||
to_chat(user, "\t<span class='alert'>[ldamage > 45 ? "Severe" : "Minor"] liver damage detected.</span>")
|
||||
msg += "\t<span class='alert'>[ldamage > 45 ? "Severe" : "Minor"] liver damage detected.</span>\n"
|
||||
|
||||
// Body part damage report
|
||||
if(iscarbon(M) && mode == 1)
|
||||
var/mob/living/carbon/C = M
|
||||
var/list/damaged = C.get_damaged_bodyparts(1,1)
|
||||
if(length(damaged)>0 || oxy_loss>0 || tox_loss>0 || fire_loss>0)
|
||||
to_chat(user, "<span class='info'>\tDamage: <span class='info'><font color='red'>Brute</font></span>-<font color='#FF8000'>Burn</font>-<font color='green'>Toxin</font>-<font color='blue'>Suffocation</font>\n\t\tSpecifics: <font color='red'>[brute_loss]</font>-<font color='#FF8000'>[fire_loss]</font>-<font color='green'>[tox_loss]</font>-<font color='blue'>[oxy_loss]</font></span>")
|
||||
msg += "<span class='info'>\tDamage: <span class='info'><font color='red'>Brute</font></span>-<font color='#FF8000'>Burn</font>-<font color='green'>Toxin</font>-<font color='blue'>Suffocation</font>\n\t\tSpecifics: <font color='red'>[brute_loss]</font>-<font color='#FF8000'>[fire_loss]</font>-<font color='green'>[tox_loss]</font>-<font color='blue'>[oxy_loss]</font></span>\n"
|
||||
for(var/obj/item/bodypart/org in damaged)
|
||||
to_chat(user, "\t\t<span class='info'>[capitalize(org.name)]: [(org.brute_dam > 0) ? "<font color='red'>[org.brute_dam]</font></span>" : "<font color='red'>0</font>"]-[(org.burn_dam > 0) ? "<font color='#FF8000'>[org.burn_dam]</font>" : "<font color='#FF8000'>0</font>"]")
|
||||
msg += "\t\t<span class='info'>[capitalize(org.name)]: [(org.brute_dam > 0) ? "<font color='red'>[org.brute_dam]</font></span>" : "<font color='red'>0</font>"]-[(org.burn_dam > 0) ? "<font color='#FF8000'>[org.burn_dam]</font>" : "<font color='#FF8000'>0</font>"]\n"
|
||||
|
||||
// Species and body temperature
|
||||
if(ishuman(M))
|
||||
@@ -282,20 +284,22 @@ SLIME SCANNER
|
||||
else if (S.mutantstomach != initial(S.mutantstomach))
|
||||
mutant = TRUE
|
||||
|
||||
to_chat(user, "<span class='info'>Species: [S.name][mutant ? "-derived mutant" : ""]</span>")
|
||||
to_chat(user, "<span class='info'>Body temperature: [round(M.bodytemperature-T0C,0.1)] °C ([round(M.bodytemperature*1.8-459.67,0.1)] °F)</span>")
|
||||
msg += "<span class='info'>Species: [H.dna.custom_species ? H.dna.custom_species : S.name] Base: [S.name]</span>\n"
|
||||
if(mutant)
|
||||
msg += "<span class='info'>Subject has mutations present.</span>"
|
||||
msg += "<span class='info'>Body temperature: [round(M.bodytemperature-T0C,0.1)] °C ([round(M.bodytemperature*1.8-459.67,0.1)] °F)</span>\n"
|
||||
|
||||
// Time of death
|
||||
if(M.tod && (M.stat == DEAD || ((M.has_trait(TRAIT_FAKEDEATH)) && !advanced)))
|
||||
to_chat(user, "<span class='info'>Time of Death:</span> [M.tod]")
|
||||
msg += "<span class='info'>Time of Death:</span> [M.tod]\n"
|
||||
var/tdelta = round(world.time - M.timeofdeath)
|
||||
if(tdelta < (DEFIB_TIME_LIMIT * 10))
|
||||
to_chat(user, "<span class='danger'>Subject died [DisplayTimeText(tdelta)] ago, defibrillation may be possible!</span>")
|
||||
msg += "<span class='danger'>Subject died [DisplayTimeText(tdelta)] ago, defibrillation may be possible!</span>\n"
|
||||
|
||||
for(var/thing in M.diseases)
|
||||
var/datum/disease/D = thing
|
||||
if(!(D.visibility_flags & HIDDEN_SCANNER))
|
||||
to_chat(user, "<span class='alert'><b>Warning: [D.form] detected</b>\nName: [D.name].\nType: [D.spread_text].\nStage: [D.stage]/[D.max_stages].\nPossible Cure: [D.cure_text]</span>")
|
||||
msg += "<span class='alert'><b>Warning: [D.form] detected</b>\nName: [D.name].\nType: [D.spread_text].\nStage: [D.stage]/[D.max_stages].\nPossible Cure: [D.cure_text]</span>\n"
|
||||
|
||||
// Blood Level
|
||||
if(M.has_dna())
|
||||
@@ -305,7 +309,7 @@ SLIME SCANNER
|
||||
if(ishuman(C))
|
||||
var/mob/living/carbon/human/H = C
|
||||
if(H.bleed_rate)
|
||||
to_chat(user, "<span class='danger'>Subject is bleeding!</span>")
|
||||
msg += "<span class='danger'>Subject is bleeding!</span>\n"
|
||||
var/blood_percent = round((C.blood_volume / BLOOD_VOLUME_NORMAL)*100)
|
||||
var/blood_type = C.dna.blood_type
|
||||
if(blood_id != "blood")//special blood substance
|
||||
@@ -315,36 +319,41 @@ SLIME SCANNER
|
||||
else
|
||||
blood_type = blood_id
|
||||
if(C.blood_volume <= BLOOD_VOLUME_SAFE && C.blood_volume > BLOOD_VOLUME_OKAY)
|
||||
to_chat(user, "<span class='danger'>LOW blood level [blood_percent] %, [C.blood_volume] cl,</span> <span class='info'>type: [blood_type]</span>")
|
||||
msg += "<span class='danger'>LOW blood level [blood_percent] %, [C.blood_volume] cl,</span> <span class='info'>type: [blood_type]</span>\n"
|
||||
else if(C.blood_volume <= BLOOD_VOLUME_OKAY)
|
||||
to_chat(user, "<span class='danger'>CRITICAL blood level [blood_percent] %, [C.blood_volume] cl,</span> <span class='info'>type: [blood_type]</span>")
|
||||
msg += "<span class='danger'>CRITICAL blood level [blood_percent] %, [C.blood_volume] cl,</span> <span class='info'>type: [blood_type]</span>\n"
|
||||
else
|
||||
to_chat(user, "<span class='info'>Blood level [blood_percent] %, [C.blood_volume] cl, type: [blood_type]</span>")
|
||||
msg += "<span class='info'>Blood level [blood_percent] %, [C.blood_volume] cl, type: [blood_type]</span>\n"
|
||||
|
||||
var/cyberimp_detect
|
||||
for(var/obj/item/organ/cyberimp/CI in C.internal_organs)
|
||||
if(CI.status == ORGAN_ROBOTIC && !CI.syndicate_implant)
|
||||
cyberimp_detect += "[C.name] is modified with a [CI.name].<br>"
|
||||
if(cyberimp_detect)
|
||||
to_chat(user, "<span class='notice'>Detected cybernetic modifications:</span>")
|
||||
to_chat(user, "<span class='notice'>[cyberimp_detect]</span>")
|
||||
msg += "<span class='notice'>Detected cybernetic modifications:</span>\n"
|
||||
msg += "<span class='notice'>[cyberimp_detect]</span>\n"
|
||||
msg += "*---------*</span>"
|
||||
to_chat(user, msg)
|
||||
SEND_SIGNAL(M, COMSIG_NANITE_SCAN, user, FALSE)
|
||||
|
||||
/proc/chemscan(mob/living/user, mob/living/M)
|
||||
if(istype(M))
|
||||
if(M.reagents)
|
||||
var/msg = "<span class='info'>*---------*\n"
|
||||
if(M.reagents.reagent_list.len)
|
||||
to_chat(user, "<span class='notice'>Subject contains the following reagents:</span>")
|
||||
msg += "<span class='notice'>Subject contains the following reagents:</span>\n"
|
||||
for(var/datum/reagent/R in M.reagents.reagent_list)
|
||||
to_chat(user, "<span class='notice'>[R.volume] units of [R.name][R.overdosed == 1 ? "</span> - <span class='boldannounce'>OVERDOSING</span>" : ".</span>"]")
|
||||
msg += "<span class='notice'>[R.volume] units of [R.name][R.overdosed == 1 ? "</span> - <span class='boldannounce'>OVERDOSING</span>" : ".</span>"]\n"
|
||||
else
|
||||
to_chat(user, "<span class='notice'>Subject contains no reagents.</span>")
|
||||
msg += "<span class='notice'>Subject contains no reagents.</span>\n"
|
||||
if(M.reagents.addiction_list.len)
|
||||
to_chat(user, "<span class='boldannounce'>Subject is addicted to the following reagents:</span>")
|
||||
msg += "<span class='boldannounce'>Subject is addicted to the following reagents:</span>\n"
|
||||
for(var/datum/reagent/R in M.reagents.addiction_list)
|
||||
to_chat(user, "<span class='danger'>[R.name]</span>")
|
||||
msg += "<span class='danger'>[R.name]</span>\n"
|
||||
else
|
||||
to_chat(user, "<span class='notice'>Subject is not addicted to any reagents.</span>")
|
||||
msg += "<span class='notice'>Subject is not addicted to any reagents.</span>\n"
|
||||
msg += "*---------*</span>"
|
||||
to_chat(user, msg)
|
||||
|
||||
/obj/item/healthanalyzer/verb/toggle_mode()
|
||||
set name = "Switch Verbosity"
|
||||
|
||||
@@ -122,7 +122,7 @@
|
||||
new /obj/item/reagent_containers/pill/antirad(src)
|
||||
new /obj/item/reagent_containers/food/drinks/bottle/vodka(src)
|
||||
new /obj/item/healthanalyzer(src)
|
||||
|
||||
|
||||
|
||||
/obj/item/storage/firstaid/o2
|
||||
name = "oxygen deprivation treatment kit"
|
||||
@@ -312,3 +312,11 @@
|
||||
/obj/item/storage/pill_bottle/mutarad/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/reagent_containers/pill/mutarad(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/penis_enlargement
|
||||
name = "penis enlargement pills"
|
||||
desc = "You want penis enlargement pills?"
|
||||
|
||||
/obj/item/storage/pill_bottle/penis_enlargement/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/reagent_containers/pill/penis_enlargement(src)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon_state = "blank_blob"
|
||||
desc = "A huge, pulsating yellow mass."
|
||||
max_integrity = 400
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 75, "acid" = 90)
|
||||
armor = list("melee" = 30, "bullet" = 30, "laser" = 20, "energy" = 5, "bomb" = 70, "bio" = 0, "rad" = 0, "fire" = 75, "acid" = 90) // Last stand
|
||||
explosion_block = 6
|
||||
point_return = -1
|
||||
health_regen = 0 //we regen in Life() instead of when pulsed
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
max_integrity = 200
|
||||
health_regen = 1
|
||||
point_return = 25
|
||||
armor = list("melee" = 10, "bullet" = 20, "laser" = 15, "energy" = 10, "bomb" = 40, "bio" = 0, "rad" = 0, "fire" = 90, "acid" = 90)
|
||||
var/list/spores = list()
|
||||
var/mob/living/simple_animal/hostile/blob/blobbernaut/naut = null
|
||||
var/max_spores = 3
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
desc = "A thin spire of slightly swaying tendrils."
|
||||
max_integrity = 60
|
||||
point_return = 15
|
||||
armor = list("melee" = 10, "bullet" = 10, "laser" = 0, "energy" = 0, "bomb" = 15, "bio" = 0, "rad" = 0, "fire" = 90, "acid" = 90)
|
||||
var/resource_delay = 0
|
||||
|
||||
/obj/structure/blob/resource/scannerreport()
|
||||
|
||||
@@ -64,11 +64,11 @@
|
||||
/obj/effect/proc_holder/changeling/sting/transformation
|
||||
name = "Transformation Sting"
|
||||
desc = "We silently sting a human, injecting a retrovirus that forces them to transform."
|
||||
helptext = "The victim will transform much like a changeling would. Does not provide a warning to others. Mutations will not be transferred, and monkeys will become human. This ability is somewhat loud, and carries a small risk of our blood gaining violent sensitivity to heat."
|
||||
helptext = "The victim will transform much like a changeling would. Does not provide a warning to others. Mutations will not be transferred, and monkeys will become human. This ability is loud, and might cause our blood to react violently to heat."
|
||||
sting_icon = "sting_transform"
|
||||
chemical_cost = 50
|
||||
dna_cost = 3
|
||||
loudness = 1
|
||||
loudness = 2
|
||||
var/datum/changelingprofile/selected_dna = null
|
||||
action_icon = 'icons/mob/actions/actions_changeling.dmi'
|
||||
action_icon_state = "ling_sting_transform"
|
||||
|
||||
@@ -55,7 +55,6 @@
|
||||
contents_cost = 700
|
||||
export_types = list(/obj/structure/reagent_dispensers/beerkeg)
|
||||
|
||||
|
||||
/datum/export/large/pipedispenser
|
||||
cost = 500
|
||||
unit_name = "pipe dispenser"
|
||||
@@ -122,7 +121,6 @@
|
||||
unit_name = "packaged antimatter reactor section"
|
||||
export_types = list(/obj/item/am_shielding_container)
|
||||
|
||||
|
||||
/datum/export/large/iv
|
||||
cost = 50
|
||||
unit_name = "iv drip"
|
||||
@@ -133,3 +131,86 @@
|
||||
unit_name = "security barrier"
|
||||
export_types = list(/obj/item/grenade/barrier, /obj/structure/barricade/security)
|
||||
|
||||
/datum/export/large/odysseus
|
||||
cost = 5500
|
||||
unit_name = "working odysseus"
|
||||
export_types = list(/obj/mecha/medical/odysseus)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/large/ripley
|
||||
cost = 6500
|
||||
unit_name = "working ripley"
|
||||
export_types = list(/obj/mecha/working/ripley)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/large/firefighter
|
||||
cost = 9000
|
||||
unit_name = "working firefighter"
|
||||
export_types = list(/obj/mecha/working/ripley/firefighter)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/large/gygax
|
||||
cost = 19000
|
||||
unit_name = "working gygax"
|
||||
export_types = list(/obj/mecha/combat/gygax)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/large/durand
|
||||
cost = 10000
|
||||
unit_name = "working durand"
|
||||
export_types = list(/obj/mecha/combat/durand)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/large/phazon
|
||||
cost = 25000 //Little over half do to needing a core
|
||||
unit_name = "working phazon"
|
||||
export_types = list(/obj/mecha/combat/phazon)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/large/marauder
|
||||
cost = 15000 //Still a Combat class mech - CC tech as well! 150% "normal" boundy price.
|
||||
unit_name = "working marauder"
|
||||
export_types = list(/obj/mecha/combat/marauder)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/large/deathripley
|
||||
cost = 8500 //Still a "Combat class" mech - Illegal tech as well! 165% "normal" boundy price.
|
||||
unit_name = "working illegally modified"
|
||||
export_types = list(/obj/mecha/working/ripley/deathripley)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/large/gygaxdark
|
||||
cost = 28500 //Still a Combat class mech - Illegal tech as well! 150% "normal" boundy price.
|
||||
unit_name = "working illegally modified gygax"
|
||||
export_types = list(/obj/mecha/combat/gygax/dark)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/large/oldripley
|
||||
cost = 6250 //old mech - Scrap metal ! 50% "normal" boundy price.
|
||||
unit_name = "working miner ripley"
|
||||
export_types = list(/obj/mecha/working/ripley/mining)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/large/honk
|
||||
cost = 12000 //Still a "Combat class" mech - Comats bordem honk!
|
||||
unit_name = "working honker"
|
||||
export_types = list(/obj/mecha/combat/honker)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/large/reticence
|
||||
cost = 12000 //Still a "Combat class" mech - Has cloking and lethal weaponds.
|
||||
unit_name = "working reticence"
|
||||
export_types = list(/obj/mecha/combat/reticence)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/large/seraph
|
||||
cost = 25500 //Still a Combat class mech - CC tech as well! 150% "normal" boundy price.
|
||||
unit_name = "working seraph"
|
||||
export_types = list(/obj/mecha/combat/marauder/seraph)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/large/mauler
|
||||
cost = 12000 //Still a Combat class mech - CC lethal weaponds.
|
||||
unit_name = "working legally modified marauder"
|
||||
export_types = list(/obj/mecha/combat/marauder/mauler)
|
||||
include_subtypes = FALSE
|
||||
|
||||
@@ -82,6 +82,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
|
||||
var/list/custom_names = list()
|
||||
var/prefered_security_department = SEC_DEPT_RANDOM
|
||||
var/custom_species = null
|
||||
|
||||
//Quirk list
|
||||
var/list/positive_quirks = list()
|
||||
@@ -269,6 +270,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
dat += "<h2>Body</h2>"
|
||||
dat += "<b>Gender:</b><a style='display:block;width:100px' href='?_src_=prefs;preference=gender'>[gender == MALE ? "Male" : (gender == FEMALE ? "Female" : (gender == PLURAL ? "Non-binary" : "Object"))]</a><BR>"
|
||||
dat += "<b>Species:</b><a style='display:block;width:100px' href='?_src_=prefs;preference=species;task=input'>[pref_species.id]</a><BR>"
|
||||
dat += "<b>Custom Species Name:</b><a style='display:block;width:100px' href='?_src_=prefs;preference=custom_species;task=input'>[custom_species ? custom_species : "None"]</a><BR>"
|
||||
dat += "<a style='display:block;width:100px' href='?_src_=prefs;preference=all;task=random'>Random Body</A><BR>"
|
||||
dat += "<b>Always Random Body:</b><a href='?_src_=prefs;preference=all'>[be_random_body ? "Yes" : "No"]</A><BR>"
|
||||
dat += "<br><b>Cycle background:</b><a style='display:block;width:100px' href='?_src_=prefs;preference=cycle_bg;task=input'>[bgstate]</a><BR>"
|
||||
@@ -816,10 +818,10 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
dat += "<tr><td colspan=4><hr></td></tr>"
|
||||
dat += "<tr><td colspan=4><b><center>[gear_tab]</center></b></td></tr>"
|
||||
dat += "<tr><td colspan=4><hr></td></tr>"
|
||||
dat += "<tr style='vertical-align:top;'><td width=15%><b>Name</b></td>"
|
||||
dat += "<td width=5% style='vertical-align:top'><b>Cost</b></td>"
|
||||
dat += "<td><font size=2><b>Restrictions</b></font></td>"
|
||||
dat += "<td><font size=2><b>Description</b></font></td></tr>"
|
||||
dat += "<tr width=10% style='vertical-align:top;'><td width=15%><b>Name</b></td>"
|
||||
dat += "<td style='vertical-align:top'><b>Cost</b></td>"
|
||||
dat += "<td width=10%><font size=2><b>Restrictions</b></font></td>"
|
||||
dat += "<td width=80%><font size=2><b>Description</b></font></td></tr>"
|
||||
for(var/j in GLOB.loadout_items[gear_tab])
|
||||
var/datum/gear/gear = GLOB.loadout_items[gear_tab][j]
|
||||
var/donoritem
|
||||
@@ -1456,6 +1458,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
var/newtype = GLOB.species_list[result]
|
||||
pref_species = new newtype()
|
||||
//let's ensure that no weird shit happens on species swapping.
|
||||
custom_species = null
|
||||
if(!("body_markings" in pref_species.default_features))
|
||||
features["body_markings"] = "None"
|
||||
if(!("mam_body_markings" in pref_species.default_features))
|
||||
@@ -1477,6 +1480,13 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
if(features["mcolor3"] == "#000" || (!(MUTCOLORS_PARTSONLY in pref_species.species_traits) && ReadHSV(temp_hsv)[3] < ReadHSV("#202020")[3]))
|
||||
features["mcolor3"] = pref_species.default_color
|
||||
|
||||
if("custom_species")
|
||||
var/new_species = reject_bad_name(input(user, "Choose your species subtype, if unique. This will show up on examinations and health scans. Do not abuse this:", "Character Preference", custom_species) as null|text)
|
||||
if(new_species)
|
||||
custom_species = new_species
|
||||
else
|
||||
custom_species = null
|
||||
|
||||
if("mutant_color")
|
||||
var/new_mutantcolor = input(user, "Choose your character's alien/mutant color:", "Character Preference","#"+features["mcolor"]) as color|null
|
||||
if(new_mutantcolor)
|
||||
@@ -2115,6 +2125,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
character.real_name = nameless ? "[real_name] #[rand(10000, 99999)]" : real_name
|
||||
character.name = character.real_name
|
||||
character.nameless = nameless
|
||||
character.custom_species = custom_species
|
||||
|
||||
character.gender = gender
|
||||
character.age = age
|
||||
@@ -2149,6 +2160,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
character.dna.features = features.Copy()
|
||||
character.dna.real_name = character.real_name
|
||||
character.dna.nameless = character.nameless
|
||||
character.dna.custom_species = character.custom_species
|
||||
|
||||
if("tail_lizard" in pref_species.default_features)
|
||||
character.dna.species.mutant_bodyparts |= "tail_lizard"
|
||||
|
||||
@@ -236,6 +236,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
//Character
|
||||
S["real_name"] >> real_name
|
||||
S["nameless"] >> nameless
|
||||
S["custom_species"] >> custom_species
|
||||
S["name_is_always_random"] >> be_random_name
|
||||
S["body_is_always_random"] >> be_random_body
|
||||
S["gender"] >> gender
|
||||
@@ -350,7 +351,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
gender = sanitize_gender(gender, TRUE, TRUE)
|
||||
if(!real_name)
|
||||
real_name = random_unique_name(gender)
|
||||
|
||||
custom_species = reject_bad_name(custom_species)
|
||||
for(var/custom_name_id in GLOB.preferences_custom_names)
|
||||
var/namedata = GLOB.preferences_custom_names[custom_name_id]
|
||||
custom_names[custom_name_id] = reject_bad_name(custom_names[custom_name_id],namedata["allow_numbers"])
|
||||
@@ -427,6 +428,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
//Character
|
||||
WRITE_FILE(S["real_name"] , real_name)
|
||||
WRITE_FILE(S["nameless"] , nameless)
|
||||
WRITE_FILE(S["custom_species"] , custom_species)
|
||||
WRITE_FILE(S["name_is_always_random"] , be_random_name)
|
||||
WRITE_FILE(S["body_is_always_random"] , be_random_body)
|
||||
WRITE_FILE(S["gender"] , gender)
|
||||
|
||||
@@ -27,14 +27,19 @@
|
||||
if("mam_snouts" in pref_species.default_features)
|
||||
if(H.dna.features["mam_snouts"] != "None")
|
||||
muzzle_var = ALT_STYLE
|
||||
else
|
||||
muzzle_var = NORMAL_STYLE
|
||||
|
||||
else if("snout" in pref_species.default_features)
|
||||
if(H.dna.features["snout"] != "None")
|
||||
muzzle_var = ALT_STYLE
|
||||
else
|
||||
muzzle_var = NORMAL_STYLE
|
||||
|
||||
else
|
||||
muzzle_var = NORMAL_STYLE
|
||||
H.update_inv_head()
|
||||
|
||||
H.update_inv_head()
|
||||
|
||||
/obj/item/clothing/head/worn_overlays(isinhands = FALSE)
|
||||
. = list()
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
icon_state = "captain"
|
||||
item_state = "that"
|
||||
flags_inv = 0
|
||||
armor = list("melee" = 25, "bullet" = 15, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
|
||||
armor = list("melee" = 40, "bullet" = 30, "laser" = 30, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
|
||||
strip_delay = 60
|
||||
dog_fashion = /datum/dog_fashion/head/captain
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
name = "head of personnel's cap"
|
||||
icon_state = "hopcap"
|
||||
desc = "The symbol of true bureaucratic micromanagement."
|
||||
armor = list("melee" = 25, "bullet" = 15, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
|
||||
armor = list("melee" = 30, "bullet" = 25, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
|
||||
dog_fashion = /datum/dog_fashion/head/hop
|
||||
|
||||
/obj/item/clothing/head/hopcap/beret
|
||||
@@ -200,4 +200,4 @@
|
||||
/obj/item/clothing/head/beret/qm
|
||||
name = "quartermaster's beret"
|
||||
desc = "This headwear shows off your Cargonian leadership"
|
||||
icon_state = "qmberet"
|
||||
icon_state = "qmberet"
|
||||
|
||||
@@ -30,10 +30,15 @@
|
||||
if("mam_snouts" in pref_species.default_features)
|
||||
if(H.dna.features["mam_snouts"] != "None")
|
||||
muzzle_var = ALT_STYLE
|
||||
else
|
||||
muzzle_var = NORMAL_STYLE
|
||||
|
||||
else if("snout" in pref_species.default_features)
|
||||
if(H.dna.features["snout"] != "None")
|
||||
muzzle_var = ALT_STYLE
|
||||
else
|
||||
muzzle_var = NORMAL_STYLE
|
||||
|
||||
else
|
||||
muzzle_var = NORMAL_STYLE
|
||||
|
||||
|
||||
@@ -171,17 +171,57 @@
|
||||
icon_state = "stripedbluescarf"
|
||||
item_color = "stripedbluescarf"
|
||||
|
||||
/obj/item/clothing/neck/petcollar //don't really wear this though please c'mon seriously guys
|
||||
///////////
|
||||
//COLLARS//
|
||||
///////////
|
||||
|
||||
/obj/item/clothing/neck/petcollar
|
||||
name = "pet collar"
|
||||
desc = "It's for pets. Though you probably could wear it yourself, you'd doubtless be the subject of ridicule."
|
||||
icon_state = "petcollar"
|
||||
item_color = "petcollar"
|
||||
pocket_storage_component_path = /datum/component/storage/concrete/pockets/small/collar
|
||||
var/tagname = null
|
||||
|
||||
/obj/item/clothing/neck/petcollar/attack_self(mob/user)
|
||||
tagname = copytext(sanitize(input(user, "Would you like to change the name on the tag?", "Name your new pet", "Spot") as null|text),1,MAX_NAME_LEN)
|
||||
name = "[initial(name)] - [tagname]"
|
||||
|
||||
/obj/item/clothing/neck/petcollar/locked
|
||||
name = "locked collar"
|
||||
desc = "A collar that has a small lock on it to keep it from being removed."
|
||||
pocket_storage_component_path = /datum/component/storage/concrete/pockets/small/collar/locked
|
||||
var/lock = FALSE
|
||||
|
||||
/obj/item/clothing/neck/petcollar/locked/attackby(obj/item/key/collar, mob/user, params)
|
||||
if(lock != FALSE)
|
||||
to_chat(user, "<span class='warning'>With a click the collar unlocks!</span>")
|
||||
lock = FALSE
|
||||
item_flags = NONE
|
||||
else
|
||||
to_chat(user, "<span class='warning'>With a click the collar locks!</span>")
|
||||
lock = TRUE
|
||||
item_flags = NODROP
|
||||
return
|
||||
|
||||
/obj/item/clothing/neck/petcollar/locked/attack_hand(mob/user)
|
||||
if(loc == user && user.get_item_by_slot(SLOT_NECK) && lock != FALSE)
|
||||
to_chat(user, "<span class='warning'>The collar is locked! You'll need unlock the collar before you can take it off!</span>")
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/key/collar
|
||||
name = "Collar Key"
|
||||
desc = "A key for a tiny lock on a collar or bag."
|
||||
|
||||
/obj/item/clothing/neck/petcollar/Initialize()
|
||||
. = ..()
|
||||
new /obj/item/reagent_containers/food/snacks/cookie(src)
|
||||
|
||||
/obj/item/clothing/neck/petcollar/locked/Initialize()
|
||||
. = ..()
|
||||
new /obj/item/key/collar(src)
|
||||
|
||||
//////////////
|
||||
//DOPE BLING//
|
||||
//////////////
|
||||
@@ -191,4 +231,4 @@
|
||||
desc = "Damn, it feels good to be a gangster."
|
||||
icon = 'icons/obj/clothing/neck.dmi'
|
||||
icon_state = "bling"
|
||||
item_color = "bling"
|
||||
item_color = "bling"
|
||||
|
||||
@@ -13,16 +13,49 @@
|
||||
var/list/vents = list()
|
||||
var/randomProbability = 1
|
||||
var/reagentsAmount = 100
|
||||
var/list/saferChems = list("water","carbon","flour","cleaner","nutriment","condensedcapsaicin","mushroomhallucinogen","lube","pink_glitter","cryptobiolin",
|
||||
"plantbgone","blood","charcoal","space_drugs","morphine","holywater","ethanol","hot_coco","sacid","mindbreaker","rotatium","bluespace",
|
||||
"pax","laughter","concentrated_barbers_aid","colorful_reagent","dizzysolution","tiresolution","sodiumchloride","beer","hair_dye","sugar","white_glitter","growthserum")
|
||||
var/list/saferChems = list(
|
||||
"water",
|
||||
"carbon",
|
||||
"flour",
|
||||
"cleaner",
|
||||
"nutriment",
|
||||
"condensedcapsaicin",
|
||||
"mushroomhallucinogen",
|
||||
"lube",
|
||||
"pink_glitter",
|
||||
"cryptobiolin",
|
||||
"plantbgone",
|
||||
"blood",
|
||||
"charcoal",
|
||||
"space_drugs",
|
||||
"morphine",
|
||||
"holywater",
|
||||
"ethanol",
|
||||
"hot_coco",
|
||||
"sacid",
|
||||
"mindbreaker",
|
||||
"rotatium",
|
||||
"bluespace",
|
||||
"pax",
|
||||
"laughter",
|
||||
"concentrated_barbers_aid",
|
||||
"colorful_reagent",
|
||||
"dizzysolution",
|
||||
"tiresolution",
|
||||
"sodiumchloride",
|
||||
"beer",
|
||||
"hair_dye",
|
||||
"sugar",
|
||||
"white_glitter",
|
||||
"growthserum"
|
||||
)
|
||||
//needs to be chemid unit checked at some point
|
||||
|
||||
/datum/round_event/vent_clog/announce()
|
||||
priority_announce("The scrubbers network is experiencing a backpressure surge. Some ejection of contents may occur.", "Atmospherics alert")
|
||||
|
||||
/datum/round_event/vent_clog/setup()
|
||||
endWhen = rand(25, 100)
|
||||
endWhen = rand(120, 180)
|
||||
for(var/obj/machinery/atmospherics/components/unary/vent_scrubber/temp_vent in GLOB.machines)
|
||||
var/turf/T = get_turf(temp_vent)
|
||||
if(T && is_station_level(T.z) && !temp_vent.welded)
|
||||
@@ -30,25 +63,34 @@
|
||||
if(!vents.len)
|
||||
return kill()
|
||||
|
||||
/datum/round_event/vent_clog/start()
|
||||
for(var/obj/machinery/atmospherics/components/unary/vent in vents)
|
||||
if(vent && vent.loc)
|
||||
var/datum/reagents/R = new/datum/reagents(1000)
|
||||
R.my_atom = vent
|
||||
if (prob(randomProbability))
|
||||
R.add_reagent(get_random_reagent_id(), reagentsAmount)
|
||||
else
|
||||
R.add_reagent(pick(saferChems), reagentsAmount)
|
||||
/datum/round_event/vent_clog/tick()
|
||||
|
||||
var/datum/effect_system/foam_spread/foam = new
|
||||
foam.set_up(200, get_turf(vent), R)
|
||||
foam.start()
|
||||
if(!vents.len)
|
||||
return kill()
|
||||
|
||||
var/cockroaches = prob(33) ? 3 : 0
|
||||
while(cockroaches)
|
||||
new /mob/living/simple_animal/cockroach(get_turf(vent))
|
||||
cockroaches--
|
||||
CHECK_TICK
|
||||
CHECK_TICK
|
||||
|
||||
var/obj/machinery/atmospherics/components/unary/vent = pick(vents)
|
||||
vents -= vent
|
||||
|
||||
if(!vent)
|
||||
return
|
||||
|
||||
var/turf/T = get_turf(vent)
|
||||
if(!T)
|
||||
return
|
||||
|
||||
var/datum/reagents/R = new/datum/reagents(1000)
|
||||
R.my_atom = vent
|
||||
if (prob(randomProbability))
|
||||
R.add_reagent(get_random_reagent_id(), reagentsAmount)
|
||||
else
|
||||
R.add_reagent(pick(saferChems), reagentsAmount)
|
||||
|
||||
var/datum/effect_system/smoke_spread/chem/C = new
|
||||
C.set_up(R,16,T,TRUE)
|
||||
C.start()
|
||||
playsound(T, 'sound/effects/smoke.ogg', 50, 1, -3)
|
||||
|
||||
/datum/round_event_control/vent_clog/threatening
|
||||
name = "Clogged Vents: Threatening"
|
||||
|
||||
@@ -5,6 +5,18 @@
|
||||
max_occurrences = 5
|
||||
earliest_start = 0 MINUTES
|
||||
|
||||
/datum/round_event/wizard/race
|
||||
var/list/stored_name
|
||||
var/list/stored_species
|
||||
var/list/stored_dna
|
||||
|
||||
/datum/round_event/wizard/race/setup()
|
||||
stored_name = list()
|
||||
stored_species = list()
|
||||
stored_dna = list()
|
||||
endWhen = rand(600,1200) //10 to 20 minutes
|
||||
..()
|
||||
|
||||
/datum/round_event/wizard/race/start()
|
||||
|
||||
var/all_the_same = 0
|
||||
@@ -12,18 +24,35 @@
|
||||
|
||||
for(var/speciestype in subtypesof(/datum/species))
|
||||
var/datum/species/S = new speciestype()
|
||||
if(!S.dangerous_existence && !S.blacklisted)
|
||||
if(!S.dangerous_existence && !S.blacklisted && !S.nojumpsuit) //Dangerous Species, Blacklisted Species, and Species who can't wear jumpsuits are blacklisted.
|
||||
all_species += speciestype
|
||||
|
||||
var/datum/species/new_species = pick(all_species)
|
||||
|
||||
if(prob(50))
|
||||
if(prob(75))
|
||||
all_the_same = 1
|
||||
|
||||
for(var/mob/living/carbon/human/H in GLOB.carbon_list) //yes, even the dead
|
||||
for(var/mob/living/carbon/human/H in GLOB.carbon_list)
|
||||
var/turf/T = get_turf(H)
|
||||
if(!T)
|
||||
continue
|
||||
if(!is_station_level(T.z))
|
||||
continue
|
||||
stored_name[H] = H.real_name
|
||||
stored_species[H] = H.dna.species
|
||||
stored_dna[H] = H.dna.unique_enzymes
|
||||
H.set_species(new_species)
|
||||
H.real_name = H.dna.species.random_name(H.gender,1)
|
||||
H.dna.unique_enzymes = H.dna.generate_unique_enzymes()
|
||||
to_chat(H, "<span class='notice'>You feel somehow... different?</span>")
|
||||
if(!all_the_same)
|
||||
new_species = pick(all_species)
|
||||
|
||||
/datum/round_event/wizard/race/end()
|
||||
for(var/mob/living/carbon/human/H in GLOB.carbon_list)
|
||||
if(!(stored_name[H] && stored_species[H] && stored_dna[H]))
|
||||
continue
|
||||
H.set_species(stored_species[H])
|
||||
H.real_name = stored_name[H]
|
||||
H.dna.unique_enzymes = stored_dna[H]
|
||||
to_chat(H, "<span class='notice'>You feel back to your normal self again.</span>")
|
||||
@@ -54,7 +54,6 @@
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "carrot" = 1)
|
||||
foodtype = GRAIN | DAIRY | VEGETABLES | SUGAR
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/brain
|
||||
name = "brain cake"
|
||||
desc = "A squishy cake-thing."
|
||||
@@ -86,7 +85,6 @@
|
||||
tastes = list("cake" = 4, "cream cheese" = 3)
|
||||
foodtype = GRAIN | DAIRY
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/cheese
|
||||
name = "cheese cake slice"
|
||||
desc = "Slice of pure cheestisfaction."
|
||||
@@ -95,7 +93,6 @@
|
||||
tastes = list("cake" = 4, "cream cheese" = 3)
|
||||
foodtype = GRAIN | DAIRY
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/orange
|
||||
name = "orange cake"
|
||||
desc = "A cake with added orange."
|
||||
@@ -132,7 +129,6 @@
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "unbearable sourness" = 2)
|
||||
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/lemon
|
||||
name = "lemon cake"
|
||||
desc = "A cake with added lemon."
|
||||
@@ -143,7 +139,6 @@
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "sourness" = 2)
|
||||
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/lemon
|
||||
name = "lemon cake slice"
|
||||
desc = "Just a slice of cake, it is enough for everyone."
|
||||
@@ -163,7 +158,6 @@
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "chocolate" = 4)
|
||||
foodtype = GRAIN | DAIRY | JUNKFOOD | SUGAR
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/chocolate
|
||||
name = "chocolate cake slice"
|
||||
desc = "Just a slice of cake, it is enough for everyone."
|
||||
@@ -172,7 +166,6 @@
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "chocolate" = 4)
|
||||
foodtype = GRAIN | DAIRY | JUNKFOOD | SUGAR
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/birthday
|
||||
name = "birthday cake"
|
||||
desc = "Happy Birthday little clown..."
|
||||
@@ -250,5 +243,100 @@
|
||||
icon_state = "pumpkinspicecakeslice"
|
||||
filling_color = "#FFD700"
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "pumpkin" = 1)
|
||||
|
||||
foodtype = GRAIN | DAIRY | VEGETABLES | SUGAR
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/bsvc // blackberry strawberries vanilla cake
|
||||
name = "blackberry and strawberry vanilla cake"
|
||||
desc = "A plain cake, filled with assortment of blackberries and strawberries!"
|
||||
icon = 'modular_citadel/icons/obj/food/cake.dmi'
|
||||
icon_state = "blackbarry_strawberries_cake_vanilla_cake"
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/bsvc
|
||||
bonus_reagents = list("nutriment" = 14, "vitamin" = 4)
|
||||
tastes = list("blackbarry" = 2, "strawberries" = 2, "vanilla" = 2, "sweetness" = 2, "cake" = 3)
|
||||
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/bsvc
|
||||
name = "blackberry and strawberry vanilla cake slice"
|
||||
desc = "Just a slice of cake filled with assortment of blackberries and strawberries!"
|
||||
icon = 'modular_citadel/icons/obj/food/cake.dmi'
|
||||
icon_state = "blackbarry_strawberries_cake_vanilla_slice"
|
||||
filling_color = "#FFD700"
|
||||
tastes = list("blackbarry" = 2, "strawberries" = 2, "vanilla" = 2, "sweetness" = 2,"cake" = 3)
|
||||
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/bscc // blackbarry strawberries chocolate cake
|
||||
name = "blackberry and strawberry chocolate cake"
|
||||
desc = "A plain cake, filled with assortment of blackberries and strawberries!"
|
||||
icon = 'modular_citadel/icons/obj/food/cake.dmi'
|
||||
icon_state = "blackbarry_strawberries_cake_coco_cake"
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/bscc
|
||||
bonus_reagents = list("nutriment" = 14, "vitamin" = 4, "cocoa" = 5)
|
||||
tastes = list("blackberry" = 2, "strawberries" = 2, "chocolate" = 2, "sweetness" = 2,"cake" = 3)
|
||||
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/bscc
|
||||
name = "blackberry and strawberry chocolate cake slice"
|
||||
desc = "Just a slice of cake filled with assortment of blackberries and strawberries!"
|
||||
icon = 'modular_citadel/icons/obj/food/cake.dmi'
|
||||
icon_state = "blackbarry_strawberries_cake_coco_cake_slice"
|
||||
filling_color = "#FFD700"
|
||||
tastes = list("blackberry" = 2, "strawberries" = 2, "chocolate" = 2, "sweetness" = 2,"cake" = 3)
|
||||
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
|
||||
obj/item/reagent_containers/food/snacks/store/cake/holy_cake
|
||||
name = "angel food cake"
|
||||
desc = "A cake made for angels and chaplains alike! Contains holy water."
|
||||
icon = 'modular_citadel/icons/obj/food/cake.dmi'
|
||||
icon_state = "holy_cake"
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/holy_cake_slice
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 3, "holy_water" = 10)
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "clouds" = 1)
|
||||
foodtype = GRAIN | DAIRY | SUGAR
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/holy_cake_slice
|
||||
name = "angel food cake slice"
|
||||
desc = "A slice of heavenly cake."
|
||||
icon = 'modular_citadel/icons/obj/food/cake.dmi'
|
||||
icon_state = "holy_cake_slice"
|
||||
filling_color = "#00FFFF"
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "clouds" = 1)
|
||||
foodtype = GRAIN | DAIRY | SUGAR
|
||||
|
||||
obj/item/reagent_containers/food/snacks/store/cake/pound_cake
|
||||
name = "pound cake"
|
||||
desc = "A condensed cake made for filling people up quickly."
|
||||
icon = 'modular_citadel/icons/obj/food/cake.dmi'
|
||||
icon_state = "pound_cake"
|
||||
slices_num = 7 //Its ment to feed the party
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/pound_cake_slice
|
||||
bonus_reagents = list("nutriment" = 60)
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "batter" = 1)
|
||||
foodtype = GRAIN | DAIRY | SUGAR | JUNKFOOD
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/pound_cake_slice
|
||||
name = "pound cake slice"
|
||||
desc = "A slice of condensed cake made for filling people up quickly."
|
||||
icon = 'modular_citadel/icons/obj/food/cake.dmi'
|
||||
icon_state = "pound_cake_slice"
|
||||
filling_color = "#00FFFF"
|
||||
tastes = list("cake" = 5, "sweetness" = 5, "batter" = 1)
|
||||
foodtype = GRAIN | DAIRY | SUGAR | JUNKFOOD
|
||||
|
||||
obj/item/reagent_containers/food/snacks/store/cake/hardware_cake
|
||||
name = "hardware cake"
|
||||
desc = "A cake that is made with electronic boards and leaks acid..."
|
||||
icon = 'modular_citadel/icons/obj/food/cake.dmi'
|
||||
icon_state = "hardware_cake"
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/hardware_cake_slice
|
||||
bonus_reagents = list("sacid" = 15, "oil" = 15)
|
||||
tastes = list("acid" = 1, "metal" = 1, "regret" = 10)
|
||||
foodtype = GRAIN | GROSS
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/hardware_cake_slice
|
||||
name = "hardware cake slice"
|
||||
desc = "A slice of electronic boards and some acid."
|
||||
icon = 'modular_citadel/icons/obj/food/cake.dmi'
|
||||
icon_state = "hardware_cake_slice"
|
||||
filling_color = "#00FFFF"
|
||||
tastes = list("acid" = 1, "metal" = 1, "regret" = 10)
|
||||
foodtype = GRAIN | GROSS
|
||||
|
||||
@@ -54,6 +54,43 @@
|
||||
tastes = list("fish" = 1, "chips" = 1)
|
||||
foodtype = MEAT | VEGETABLES | FRIED
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sushi_basic
|
||||
name = "funa hosomaki"
|
||||
desc = "A small cylindrical kudzu skin, filled with rice and fish."
|
||||
icon = 'modular_citadel/icons/obj/food/food.dmi'
|
||||
icon_state = "sushie_basic"
|
||||
bonus_reagents = list("vitamin" = 2)
|
||||
list_reagents = list("nutriment" = 4)
|
||||
bitesize = 10
|
||||
filling_color = "#F2EEEA" //rgb(242, 238, 234)
|
||||
tastes = list("fish" = 1, "rice" = 2, "salt" = 1)
|
||||
foodtype = MEAT | VEGETABLES
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sushi_adv
|
||||
name = "funa nigiri"
|
||||
desc = "A peace of carp lightly placed on some rice."
|
||||
icon = 'modular_citadel/icons/obj/food/food.dmi'
|
||||
icon_state = "sushie_adv"
|
||||
bonus_reagents = list("vitamin" = 2)
|
||||
list_reagents = list("nutriment" = 6)
|
||||
bitesize = 10
|
||||
filling_color = "#F2EEEA" //rgb(242, 238, 234)
|
||||
tastes = list("fish" = 2, "rice" = 2, "salt" = 1)
|
||||
foodtype = MEAT | VEGETABLES
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sushi_pro
|
||||
name = "funa nigiri"
|
||||
desc = "A well prepared peace of the best of the carp fillet placed on rice. Looks fancy and fresh!"
|
||||
icon = 'modular_citadel/icons/obj/food/food.dmi'
|
||||
icon_state = "sushie_pro"
|
||||
bonus_reagents = list("nutriment" = 2, "vitamin" = 2)
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 2)
|
||||
bitesize = 10
|
||||
filling_color = "#F2EEEA" //rgb(242, 238, 234)
|
||||
tastes = list("fish" = 3, "rice" = 2, "salt" = 1)
|
||||
foodtype = MEAT | VEGETABLES
|
||||
|
||||
|
||||
////////////////////////////////////////////MEATS AND ALIKE////////////////////////////////////////////
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/tofu
|
||||
|
||||
@@ -207,6 +207,16 @@
|
||||
tastes = list("cobwebs" = 1, "sugar" = 2)
|
||||
foodtype = JUNKFOOD | SUGAR
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/tobiko
|
||||
name = "tobiko"
|
||||
desc = "Spider eggs wrapped in a thin salted Kudzu pod"
|
||||
icon = 'modular_citadel/icons/obj/food/food.dmi'
|
||||
icon_state = "sushie_egg"
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 2)
|
||||
filling_color = "#FF3333" // R225 G051 B051
|
||||
tastes = list("seaweed" = 1, "cobwebs" = 1, "salty" = 2)
|
||||
foodtype = MEAT | VEGETABLES
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/chococoin
|
||||
name = "chocolate coin"
|
||||
desc = "A completely edible but nonflippable festive coin."
|
||||
@@ -569,3 +579,12 @@
|
||||
filling_color = "#A0522D"
|
||||
tastes = list("chocolate" = 1)
|
||||
foodtype = JUNKFOOD | SUGAR
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/riceball
|
||||
name = "onigiri"
|
||||
desc = "A ball of rice with some light salt and a wrap of Kudzu skin."
|
||||
icon = 'modular_citadel/icons/obj/food/food.dmi'
|
||||
icon_state = "riceball"
|
||||
list_reagents = list("nutriment" = 6, "sodiumchloride" = 2)
|
||||
tastes = list("rice" = 3, "salt" = 1)
|
||||
foodtype = GRAIN
|
||||
|
||||
@@ -102,3 +102,13 @@
|
||||
list_reagents = list("nutriment" = 2, "vitamin" = 2)
|
||||
tastes = list("bread" = 2)
|
||||
foodtype = GRAIN
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/tuna_sandwich
|
||||
name = "tuna sandwich"
|
||||
desc = "Both a salad and a sandwich in one."
|
||||
icon = 'modular_citadel/icons/obj/food/food.dmi'
|
||||
icon_state = "tunasandwich"
|
||||
trash = /obj/item/trash/plate
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 3)
|
||||
tastes = list("tuna" = 4, "mayonnaise" = 2, "bread" = 2)
|
||||
foodtype = GRAIN | MEAT
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
//////////////////////////Sushi Components///////////////////////
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sushi_rice
|
||||
name = "Sushi Rice"
|
||||
desc = "A bowl of sticky rice for making sushi."
|
||||
icon = 'modular_citadel/icons/obj/food/food.dmi'
|
||||
icon_state = "sushi_rice"
|
||||
list_reagents = list("sodiumchloride" = 5)
|
||||
tastes = list("rice" = 5, "salt" = 1)
|
||||
foodtype = GRAIN
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sea_weed
|
||||
name = "Sea Weed Sheet"
|
||||
desc = "A thin, light salt sheet of plant mater. This is commenly used in sushi recipes,"
|
||||
icon = 'modular_citadel/icons/obj/food/food.dmi'
|
||||
icon_state = "sea_weed"
|
||||
list_reagents = list("sodiumchloride" = 2)
|
||||
tastes = list("plants" = 2, "salt" = 1)
|
||||
foodtype = VEGETABLES
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/tuna
|
||||
name = "Canned Tuna"
|
||||
desc = "A small can of tuna fish beloved by felines."
|
||||
icon = 'modular_citadel/icons/obj/food/food.dmi'
|
||||
icon_state = "tuna_can"
|
||||
//trash = /obj/item/trash/tuna_used //I dont know if I like this idea - A Masked Cat
|
||||
list_reagents = list("sodiumchloride" = 5, "mercury" = 2)
|
||||
tastes = list("tuna" = 15, "mercury" = 1, "salt" = 3)
|
||||
foodtype = MEAT
|
||||
|
||||
//////////////////////////Sushi/////////////////////////////////
|
||||
/obj/item/reagent_containers/food/snacks/sushie_basic
|
||||
name = "Funa Hosomaki"
|
||||
desc = "A small cylindrical filled with rice and fish."
|
||||
icon = 'modular_citadel/icons/obj/food/food.dmi'
|
||||
icon_state = "sushie_basic"
|
||||
bonus_reagents = list("vitamin" = 2)
|
||||
list_reagents = list("nutriment" = 1)
|
||||
bitesize = 1
|
||||
filling_color = "#F2EEEA" //rgb(242, 238, 234)
|
||||
tastes = list("fish" = 1, "rice" = 1, "salt" = 1)
|
||||
foodtype = MEAT | VEGETABLES
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sushie_adv
|
||||
name = "Funa Nigiri"
|
||||
desc = "A pice of carp lightly placed on some rice."
|
||||
icon = 'modular_citadel/icons/obj/food/food.dmi'
|
||||
icon_state = "sushie_adv"
|
||||
bonus_reagents = list("vitamin" = 2)
|
||||
list_reagents = list("nutriment" = 2)
|
||||
bitesize = 1
|
||||
filling_color = "#F2EEEA" //rgb(242, 238, 234)
|
||||
tastes = list("fish" = 1, "rice" = 1, "salt" = 1)
|
||||
foodtype = MEAT | VEGETABLES
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sushie_pro
|
||||
name = "Funa Nigiri"
|
||||
desc = "A well prepared pice of the best of the carp fillet placed on rice. Looks fancy and fresh!"
|
||||
icon = 'modular_citadel/icons/obj/food/food.dmi'
|
||||
icon_state = "sushie_pro"
|
||||
bonus_reagents = list("nutriment" = 1, "vitamin" = 2)
|
||||
list_reagents = list("nutriment" = 8, "vitamin" = 1)
|
||||
bitesize = 1
|
||||
filling_color = "#F2EEEA" //rgb(242, 238, 234)
|
||||
tastes = list("fish" = 1, "rice" = 1, "salt" = 1)
|
||||
foodtype = MEAT | VEGETABLES
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/tobiko
|
||||
name = "Tobiko"
|
||||
desc = "Spider eggs wrapped in a thin salted Kudzu pod"
|
||||
icon = 'modular_citadel/icons/obj/food/food.dmi'
|
||||
icon_state = "sushie_egg"
|
||||
list_reagents = list("nutriment" = 3, "vitamin" = 2)
|
||||
filling_color = "#FF3333" // R225 G051 B051
|
||||
tastes = list("seaweed" = 1, "salty" = 2)
|
||||
foodtype = MEAT | VEGETABLES
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/riceball
|
||||
name = "Onigiri"
|
||||
desc = "A ball of rice with some light salt and a wrap of Kudzu skin."
|
||||
icon = 'modular_citadel/icons/obj/food/food.dmi'
|
||||
icon_state = "riceball"
|
||||
list_reagents = list("nutriment" = 5, "sodiumchloride" = 2)
|
||||
tastes = list("rice" = 4, "salt" = 1)
|
||||
foodtype = GRAIN
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sashimi
|
||||
name = "carp sashimi"
|
||||
desc = "Celebrate surviving attack from hostile alien lifeforms by hospitalising yourself."
|
||||
icon_state = "sashimi"
|
||||
bonus_reagents = list("nutriment" = 1, "capsaicin" = 4, "vitamin" = 4)
|
||||
list_reagents = list("nutriment" = 6, "capsaicin" = 5)
|
||||
filling_color = "#FA8072"
|
||||
tastes = list("fish" = 1, "hot peppers" = 1)
|
||||
foodtype = MEAT | TOXIC
|
||||
@@ -102,6 +102,52 @@
|
||||
result = /obj/item/reagent_containers/food/snacks/store/cake/pumpkinspice
|
||||
subcategory = CAT_CAKE
|
||||
|
||||
/datum/crafting_recipe/food/holycake
|
||||
name = "Angel food cake"
|
||||
reqs = list(
|
||||
/datum/reagent/water/holywater = 15,
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/store/cake/holy_cake
|
||||
subcategory = CAT_CAKE
|
||||
|
||||
/datum/crafting_recipe/food/poundcake
|
||||
name = "Pound cake"
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/plain = 4
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/store/cake/pound_cake
|
||||
subcategory = CAT_CAKE
|
||||
|
||||
/datum/crafting_recipe/food/hardwarecake
|
||||
name = "Hardware cake"
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
|
||||
/obj/item/circuitboard = 2,
|
||||
/datum/reagent/toxin/acid = 5
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/store/cake/hardware_cake
|
||||
subcategory = CAT_CAKE
|
||||
|
||||
/datum/crafting_recipe/food/bscccake
|
||||
name = "blackberry and strawberry chocolate cake"
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
|
||||
/obj/item/reagent_containers/food/snacks/chocolatebar = 2,
|
||||
/obj/item/reagent_containers/food/snacks/grown/berries = 5
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/store/cake/bscc
|
||||
subcategory = CAT_CAKE
|
||||
|
||||
/datum/crafting_recipe/food/bscvcake
|
||||
name = "blackberry and strawberry vanilla cake"
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
|
||||
/obj/item/reagent_containers/food/snacks/grown/berries = 5
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/store/cake/bsvc
|
||||
subcategory = CAT_CAKE
|
||||
|
||||
/datum/crafting_recipe/food/cak
|
||||
name = "Living cat/cake hybrid"
|
||||
reqs = list(
|
||||
@@ -114,4 +160,4 @@
|
||||
/datum/reagent/teslium = 1 //To shock the whole thing into life
|
||||
)
|
||||
result = /mob/living/simple_animal/pet/cat/cak
|
||||
subcategory = CAT_CAKE //Cat! Haha, get it? CAT? GET IT???
|
||||
subcategory = CAT_CAKE //Cat! Haha, get it? CAT? GET IT? We get it - Love Catpeople
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
|
||||
|
||||
////////////////////////////////////////////////KEBABS////////////////////////////////////////////////
|
||||
|
||||
/datum/crafting_recipe/food/humankebab
|
||||
@@ -71,16 +69,6 @@
|
||||
result = /obj/item/reagent_containers/food/snacks/fishfingers
|
||||
subcategory = CAT_MEAT
|
||||
|
||||
/datum/crafting_recipe/food/sashimi
|
||||
name = "Sashimi"
|
||||
reqs = list(
|
||||
/datum/reagent/consumable/soysauce = 5,
|
||||
/obj/item/reagent_containers/food/snacks/spidereggs = 1,
|
||||
/obj/item/reagent_containers/food/snacks/carpmeat = 1
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/sashimi
|
||||
subcategory = CAT_MEAT
|
||||
|
||||
////////////////////////////////////////////////MR SPIDER////////////////////////////////////////////////
|
||||
|
||||
/datum/crafting_recipe/food/spidereggsham
|
||||
|
||||
@@ -345,3 +345,13 @@
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/salad/ricepudding
|
||||
subcategory = CAT_MISCFOOD
|
||||
|
||||
/datum/crafting_recipe/food/riceball
|
||||
name = "Onigiri"
|
||||
reqs = list(
|
||||
/datum/reagent/consumable/soysauce = 1,
|
||||
/obj/item/reagent_containers/food/snacks/grown/kudzupod = 1,
|
||||
/obj/item/reagent_containers/food/snacks/salad/boiledrice = 1
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/riceball
|
||||
subcategory = CAT_MISCFOOD
|
||||
|
||||
@@ -62,5 +62,13 @@
|
||||
result = /obj/item/reagent_containers/food/snacks/notasandwich
|
||||
subcategory = CAT_SANDWICH
|
||||
|
||||
|
||||
|
||||
/datum/crafting_recipe/food/notasandwich
|
||||
name = "Tuna sandwich"
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/food/snacks/breadslice/plain = 2,
|
||||
/obj/item/reagent_containers/food/snacks/tuna = 1,
|
||||
/obj/item/reagent_containers/food/snacks/grown/onion = 1,
|
||||
/obj/item/reagent_containers/food/condiment/mayonnaise = 5
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/tuna_sandwich
|
||||
subcategory = CAT_SANDWICH
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
//////////////////////////Sushi Components///////////////////////
|
||||
|
||||
/datum/crafting_recipe/food/sushi_rice
|
||||
name = "Sushi Rice"
|
||||
reqs = list(
|
||||
/datum/reagent/water = 40,
|
||||
/datum/reagent/consumable/rice = 10
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/sushi_rice
|
||||
subcategory = CAT_SUSHI
|
||||
|
||||
/datum/crafting_recipe/food/sea_weed
|
||||
name = "Sea Weed Sheet"
|
||||
reqs = list(
|
||||
/datum/reagent/water = 30,
|
||||
/datum/reagent/consumable/soysauce = 5,
|
||||
/obj/item/reagent_containers/food/snacks/grown/kudzupod = 1,
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/sea_weed
|
||||
subcategory = CAT_SUSHI
|
||||
|
||||
/datum/crafting_recipe/food/tuna_can
|
||||
name = "Can of Tuna"
|
||||
reqs = list(
|
||||
/datum/reagent/consumable/sodiumchloride = 15,
|
||||
/datum/reagent/consumable/cooking_oil = 5,
|
||||
/obj/item/reagent_containers/food/snacks/carpmeat = 1,
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/tuna
|
||||
subcategory = CAT_SUSHI
|
||||
|
||||
//////////////////////////Sushi/////////////////////////////////
|
||||
|
||||
/datum/crafting_recipe/food/sashimi
|
||||
name = "Sashimi"
|
||||
reqs = list(
|
||||
/datum/reagent/consumable/soysauce = 5,
|
||||
/obj/item/reagent_containers/food/snacks/spidereggs = 1,
|
||||
/obj/item/reagent_containers/food/snacks/carpmeat = 1
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/sashimi
|
||||
subcategory = CAT_SUSHI
|
||||
|
||||
/datum/crafting_recipe/food/riceball
|
||||
name = "Onigiri"
|
||||
reqs = list(
|
||||
/datum/reagent/consumable/soysauce = 1,
|
||||
/obj/item/reagent_containers/food/snacks/sea_weed = 1,
|
||||
/obj/item/reagent_containers/food/snacks/sushi_rice = 1
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/riceball
|
||||
subcategory = CAT_SUSHI
|
||||
|
||||
/datum/crafting_recipe/food/sushie_egg
|
||||
name = "Tobiko"
|
||||
reqs = list(
|
||||
/datum/reagent/consumable/soysauce = 6,
|
||||
/obj/item/reagent_containers/food/snacks/spidereggs = 1,
|
||||
/obj/item/reagent_containers/food/snacks/sea_weed = 2,
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/tobiko
|
||||
subcategory = CAT_SUSHI
|
||||
|
||||
/datum/crafting_recipe/food/sushie_basic
|
||||
name = "Funa Hosomaki"
|
||||
reqs = list(
|
||||
/datum/reagent/consumable/soysauce = 3,
|
||||
/obj/item/reagent_containers/food/snacks/sushi_rice = 1,
|
||||
/obj/item/reagent_containers/food/snacks/carpmeat = 2,
|
||||
/obj/item/reagent_containers/food/snacks/sea_weed = 3,
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/sushie_basic
|
||||
subcategory = CAT_SUSHI
|
||||
|
||||
/datum/crafting_recipe/food/sushie_adv
|
||||
name = "Funa Nigiri"
|
||||
reqs = list(
|
||||
/datum/reagent/consumable/soysauce = 5,
|
||||
/obj/item/reagent_containers/food/snacks/sushi_rice = 1,
|
||||
/obj/item/reagent_containers/food/snacks/carpmeat = 1
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/sushie_adv
|
||||
subcategory = CAT_SUSHI
|
||||
|
||||
/datum/crafting_recipe/food/sushie_pro
|
||||
name = "Well made Funa Nigiri"
|
||||
reqs = list(
|
||||
/datum/reagent/consumable/soysauce = 10,
|
||||
/obj/item/reagent_containers/food/snacks/sushi_rice = 2,
|
||||
/obj/item/reagent_containers/food/snacks/carpmeat = 5,
|
||||
/obj/item/reagent_containers/food/snacks/sea_weed = 1
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/sushie_pro
|
||||
subcategory = CAT_SUSHI
|
||||
@@ -304,6 +304,8 @@
|
||||
|
||||
else if(href_list["create"])
|
||||
var/amount = (text2num(href_list["amount"]))
|
||||
//Can't be outside these (if you change this keep a sane limit)
|
||||
amount = CLAMP(amount, 1, 50)
|
||||
var/datum/design/D = locate(href_list["create"])
|
||||
create_product(D, amount)
|
||||
updateUsrDialog()
|
||||
|
||||
@@ -1309,4 +1309,35 @@
|
||||
|
||||
set_pin_data(IC_OUTPUT, 2, regurgitated_contents)
|
||||
push_data()
|
||||
activate_pin(2)
|
||||
|
||||
//Degens
|
||||
/obj/item/integrated_circuit/input/bonermeter
|
||||
name = "bonermeter"
|
||||
desc = "Detects the target's arousal and various statistics about the target's arousal levels. Invasive!"
|
||||
icon_state = "medscan"
|
||||
complexity = 4
|
||||
inputs = list("target" = IC_PINTYPE_REF)
|
||||
outputs = list(
|
||||
"current arousal" = IC_PINTYPE_NUMBER,
|
||||
"minimum arousal" = IC_PINTYPE_NUMBER,
|
||||
"maximum arousal" = IC_PINTYPE_NUMBER,
|
||||
"can be aroused" = IC_PINTYPE_BOOLEAN
|
||||
)
|
||||
activators = list("scan" = IC_PINTYPE_PULSE_IN, "on scanned" = IC_PINTYPE_PULSE_OUT)
|
||||
spawn_flags = IC_SPAWN_RESEARCH
|
||||
power_draw_per_use = 40
|
||||
|
||||
/obj/item/integrated_circuit/input/bonermeter/do_work()
|
||||
|
||||
var/mob/living/L = get_pin_data_as_type(IC_INPUT, 1, /mob/living)
|
||||
|
||||
if(!istype(L) || !L.Adjacent(get_turf(src)) ) //Invalid input
|
||||
return
|
||||
|
||||
set_pin_data(IC_OUTPUT, 1, L.getArousalLoss())
|
||||
set_pin_data(IC_OUTPUT, 2, L.min_arousal)
|
||||
set_pin_data(IC_OUTPUT, 3, L.max_arousal)
|
||||
set_pin_data(IC_OUTPUT, 4, L.canbearoused)
|
||||
push_data()
|
||||
activate_pin(2)
|
||||
@@ -144,7 +144,7 @@
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
complexity = 10
|
||||
cooldown_per_use = 1
|
||||
ext_cooldown = 1
|
||||
ext_cooldown = 2
|
||||
inputs = list("direction" = IC_PINTYPE_DIR)
|
||||
outputs = list("obstacle" = IC_PINTYPE_REF)
|
||||
activators = list("step towards dir" = IC_PINTYPE_PULSE_IN,"on step"=IC_PINTYPE_PULSE_OUT,"blocked"=IC_PINTYPE_PULSE_OUT)
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
name = "man-machine interface tank"
|
||||
desc = "This circuit is just a jar filled with an artificial liquid mimicking the cerebrospinal fluid."
|
||||
extended_desc = "This jar can hold 1 man-machine interface and let it take control of some basic functions of the assembly."
|
||||
complexity = 29
|
||||
complexity = 60
|
||||
inputs = list("laws" = IC_PINTYPE_LIST)
|
||||
outputs = list(
|
||||
"man-machine interface" = IC_PINTYPE_REF,
|
||||
@@ -254,7 +254,7 @@
|
||||
name = "pAI connector circuit"
|
||||
desc = "This circuit lets you fit in a personal artificial intelligence to give it some form of control over the bot."
|
||||
extended_desc = "You can wire various functions to it."
|
||||
complexity = 29
|
||||
complexity = 60
|
||||
inputs = list("laws" = IC_PINTYPE_LIST)
|
||||
outputs = list(
|
||||
"personal artificial intelligence" = IC_PINTYPE_REF,
|
||||
|
||||
@@ -22,11 +22,11 @@
|
||||
new /datum/data/mining_equipment("Alien Toy", /obj/item/clothing/mask/facehugger/toy, 300),
|
||||
new /datum/data/mining_equipment("Fulton Beacon", /obj/item/fulton_core, 400),
|
||||
new /datum/data/mining_equipment("Shelter Capsule", /obj/item/survivalcapsule, 400),
|
||||
new /datum/data/mining_equipment("Survival Knife", /obj/item/kitchen/knife/combat/survival, 450),
|
||||
new /datum/data/mining_equipment("GAR Meson Scanners", /obj/item/clothing/glasses/meson/gar, 500),
|
||||
new /datum/data/mining_equipment("Explorer's Webbing", /obj/item/storage/belt/mining, 500),
|
||||
new /datum/data/mining_equipment("Larger Ore Bag", /obj/item/storage/bag/ore/large, 500),
|
||||
new /datum/data/mining_equipment("500 Point Transfer Card", /obj/item/card/mining_point_card/mp500, 500),
|
||||
new /datum/data/mining_equipment("Brute First-Aid Kit", /obj/item/storage/firstaid/brute, 600),
|
||||
new /datum/data/mining_equipment("Tracking Implant Kit", /obj/item/storage/box/minertracker, 600),
|
||||
new /datum/data/mining_equipment("Survival Medipen", /obj/item/reagent_containers/hypospray/medipen/survival, 750),
|
||||
new /datum/data/mining_equipment("Stabilizing Serum", /obj/item/hivelordstabilizer, 750),
|
||||
@@ -50,9 +50,11 @@
|
||||
new /datum/data/mining_equipment("Space Cash", /obj/item/stack/spacecash/c1000, 2000),
|
||||
new /datum/data/mining_equipment("Mining Hardsuit", /obj/item/clothing/suit/space/hardsuit/mining, 2000),
|
||||
new /datum/data/mining_equipment("Diamond Pickaxe", /obj/item/pickaxe/diamond, 2000),
|
||||
new /datum/data/mining_equipment("Spare Suit Voucher", /obj/item/suit_voucher, 2000),
|
||||
new /datum/data/mining_equipment("Super Resonator", /obj/item/resonator/upgraded, 2500),
|
||||
new /datum/data/mining_equipment("Jump Boots", /obj/item/clothing/shoes/bhop, 2500),
|
||||
new /datum/data/mining_equipment("Luxury Shelter Capsule", /obj/item/survivalcapsule/luxury, 3000),
|
||||
new /datum/data/mining_equipment("Miner Full Replacement", /obj/item/storage/backpack/duffelbag/mining_cloned, 3000),
|
||||
new /datum/data/mining_equipment("Nanotrasen Minebot", /mob/living/simple_animal/hostile/mining_drone, 800),
|
||||
new /datum/data/mining_equipment("Minebot Melee Upgrade", /obj/item/mine_bot_upgrade, 400),
|
||||
new /datum/data/mining_equipment("Minebot Armor Upgrade", /obj/item/mine_bot_upgrade/health, 400),
|
||||
@@ -67,9 +69,7 @@
|
||||
new /datum/data/mining_equipment("KA Damage Increase", /obj/item/borg/upgrade/modkit/damage, 1000),
|
||||
new /datum/data/mining_equipment("KA Cooldown Decrease", /obj/item/borg/upgrade/modkit/cooldown, 1000),
|
||||
new /datum/data/mining_equipment("KA AoE Damage", /obj/item/borg/upgrade/modkit/aoe/mobs, 2000),
|
||||
new /datum/data/mining_equipment("Premium Accelerator", /obj/item/gun/energy/kinetic_accelerator/premiumka, 8000),
|
||||
new /datum/data/mining_equipment("Miner Full Replacement", /obj/item/storage/backpack/duffelbag/mining_cloned, 12000),
|
||||
new /datum/data/mining_equipment("Spare Suit Voucher", /obj/item/suit_voucher, 15000)
|
||||
new /datum/data/mining_equipment("Premium Accelerator", /obj/item/gun/energy/kinetic_accelerator/premiumka, 8000)
|
||||
|
||||
)
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,62 @@
|
||||
/*
|
||||
|
||||
Hello and welcome to sprite_accessories: For sprite accessories, such as hair,
|
||||
facial hair, and possibly tattoos and stuff somewhere along the line. This file is
|
||||
intended to be friendly for people with little to no actual coding experience.
|
||||
The process of adding in new hairstyles has been made pain-free and easy to do.
|
||||
Enjoy! - Doohl
|
||||
|
||||
|
||||
Notice: This all gets automatically compiled in a list in dna.dm, so you do not
|
||||
have to define any UI values for sprite accessories manually for hair and facial
|
||||
hair. Just add in new hair types and the game will naturally adapt.
|
||||
|
||||
!!WARNING!!: changing existing hair information can be VERY hazardous to savefiles,
|
||||
to the point where you may completely corrupt a server's savefiles. Please refrain
|
||||
from doing this unless you absolutely know what you are doing, and have defined a
|
||||
conversion in savefile.dm
|
||||
*/
|
||||
/proc/init_sprite_accessory_subtypes(prototype, list/L, list/male, list/female,var/roundstart = FALSE)//Roundstart argument builds a specific list for roundstart parts where some parts may be locked
|
||||
if(!istype(L))
|
||||
L = list()
|
||||
if(!istype(male))
|
||||
male = list()
|
||||
if(!istype(female))
|
||||
female = list()
|
||||
|
||||
for(var/path in typesof(prototype))
|
||||
if(path == prototype)
|
||||
continue
|
||||
if(roundstart)
|
||||
var/datum/sprite_accessory/P = path
|
||||
if(initial(P.locked))
|
||||
continue
|
||||
var/datum/sprite_accessory/D = new path()
|
||||
|
||||
if(D.icon_state)
|
||||
L[D.name] = D
|
||||
else
|
||||
L += D.name
|
||||
|
||||
switch(D.gender)
|
||||
if(MALE)
|
||||
male += D.name
|
||||
if(FEMALE)
|
||||
female += D.name
|
||||
else
|
||||
male += D.name
|
||||
female += D.name
|
||||
return L
|
||||
|
||||
/datum/sprite_accessory
|
||||
var/icon //the icon file the accessory is located in
|
||||
var/icon_state //the icon_state of the accessory
|
||||
var/name //the preview name of the accessory
|
||||
var/gender = NEUTER //Determines if the accessory will be skipped or included in random hair generations
|
||||
var/gender_specific //Something that can be worn by either gender, but looks different on each
|
||||
var/color_src = MUTCOLORS //Currently only used by mutantparts so don't worry about hair and stuff. This is the source that this accessory will get its color from. Default is MUTCOLOR, but can also be HAIR, FACEHAIR, EYECOLOR and 0 if none.
|
||||
var/hasinner //Decides if this sprite has an "inner" part, such as the fleshy parts on ears.
|
||||
var/locked = FALSE //Is this part locked from roundstart selection? Used for parts that apply effects
|
||||
var/dimension_x = 32
|
||||
var/dimension_y = 32
|
||||
var/center = FALSE //Should we center the sprite?
|
||||
@@ -0,0 +1,25 @@
|
||||
//////////.//////////////////
|
||||
// MutantParts Definitions //
|
||||
/////////////////////////////
|
||||
|
||||
/datum/sprite_accessory/body_markings
|
||||
icon = 'icons/mob/mutant_bodyparts.dmi'
|
||||
|
||||
/datum/sprite_accessory/body_markings/none
|
||||
name = "None"
|
||||
icon_state = "none"
|
||||
|
||||
/datum/sprite_accessory/body_markings/dtiger
|
||||
name = "Dark Tiger Body"
|
||||
icon_state = "dtiger"
|
||||
gender_specific = 1
|
||||
|
||||
/datum/sprite_accessory/body_markings/ltiger
|
||||
name = "Light Tiger Body"
|
||||
icon_state = "ltiger"
|
||||
gender_specific = 1
|
||||
|
||||
/datum/sprite_accessory/body_markings/lbelly
|
||||
name = "Light Belly"
|
||||
icon_state = "lbelly"
|
||||
gender_specific = 1
|
||||
@@ -0,0 +1,7 @@
|
||||
datum/sprite_accessory/caps
|
||||
icon = 'icons/mob/mutant_bodyparts.dmi'
|
||||
color_src = HAIR
|
||||
|
||||
/datum/sprite_accessory/caps/round
|
||||
name = "Round"
|
||||
icon_state = "round"
|
||||
@@ -0,0 +1,12 @@
|
||||
/datum/sprite_accessory/ears
|
||||
icon = 'icons/mob/mutant_bodyparts.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/none
|
||||
name = "None"
|
||||
icon_state = "none"
|
||||
|
||||
/datum/sprite_accessory/ears/cat
|
||||
name = "Cat"
|
||||
icon_state = "cat"
|
||||
hasinner = 1
|
||||
color_src = HAIR
|
||||
@@ -0,0 +1,18 @@
|
||||
/datum/sprite_accessory/frills
|
||||
icon = 'icons/mob/mutant_bodyparts.dmi'
|
||||
|
||||
/datum/sprite_accessory/frills/none
|
||||
name = "None"
|
||||
icon_state = "none"
|
||||
|
||||
/datum/sprite_accessory/frills/simple
|
||||
name = "Simple"
|
||||
icon_state = "simple"
|
||||
|
||||
/datum/sprite_accessory/frills/short
|
||||
name = "Short"
|
||||
icon_state = "short"
|
||||
|
||||
/datum/sprite_accessory/frills/aquatic
|
||||
name = "Aquatic"
|
||||
icon_state = "aqua"
|
||||
@@ -0,0 +1,89 @@
|
||||
/////////////////////////////
|
||||
// Facial Hair Definitions //
|
||||
/////////////////////////////
|
||||
/datum/sprite_accessory/facial_hair
|
||||
icon = 'icons/mob/human_face.dmi'
|
||||
gender = MALE // barf (unless you're a dorf, dorfs dig chix w/ beards :P)
|
||||
|
||||
// please make sure they're sorted alphabetically and categorized
|
||||
|
||||
/datum/sprite_accessory/facial_hair/abe
|
||||
name = "Beard (Abraham Lincoln)"
|
||||
icon_state = "facial_abe"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/brokenman
|
||||
name = "Beard (Broken Man)"
|
||||
icon_state = "facial_brokenman"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/chinstrap
|
||||
name = "Beard (Chinstrap)"
|
||||
icon_state = "facial_chin"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/dwarf
|
||||
name = "Beard (Dwarf)"
|
||||
icon_state = "facial_dwarf"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/fiveoclock
|
||||
name = "Beard (Five o Clock Shadow)"
|
||||
icon_state = "facial_fiveoclock"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/fullbeard
|
||||
name = "Beard (Full)"
|
||||
icon_state = "facial_fullbeard"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/gt
|
||||
name = "Beard (Goatee)"
|
||||
icon_state = "facial_gt"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/hip
|
||||
name = "Beard (Hipster)"
|
||||
icon_state = "facial_hip"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/jensen
|
||||
name = "Beard (Jensen)"
|
||||
icon_state = "facial_jensen"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/neckbeard
|
||||
name = "Beard (Neckbeard)"
|
||||
icon_state = "facial_neckbeard"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/vlongbeard
|
||||
name = "Beard (Very Long)"
|
||||
icon_state = "facial_wise"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/longbeard
|
||||
name = "Beard (Long)"
|
||||
icon_state = "facial_longbeard"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/fu
|
||||
name = "Moustache (Fu Manchu)"
|
||||
icon_state = "facial_fumanchu"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/hogan
|
||||
name = "Moustache (Hulk Hogan)"
|
||||
icon_state = "facial_hogan" //-Neek
|
||||
|
||||
/datum/sprite_accessory/facial_hair/selleck
|
||||
name = "Moustache (Selleck)"
|
||||
icon_state = "facial_selleck"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/chaplin
|
||||
name = "Moustache (Square)"
|
||||
icon_state = "facial_chaplin"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/vandyke
|
||||
name = "Moustache (Van Dyke)"
|
||||
icon_state = "facial_vandyke"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/watson
|
||||
name = "Moustache (Watson)"
|
||||
icon_state = "facial_watson"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/shaved
|
||||
name = "Shaved"
|
||||
icon_state = null
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/facial_hair/elvis
|
||||
name = "Sideburns (Elvis)"
|
||||
icon_state = "facial_elvis"
|
||||
@@ -0,0 +1,460 @@
|
||||
//////////////////////
|
||||
// Hair Definitions //
|
||||
//////////////////////
|
||||
/datum/sprite_accessory/hair
|
||||
icon = 'icons/mob/human_face.dmi' // default icon for all hairs
|
||||
|
||||
// please make sure they're sorted alphabetically and, where needed, categorized
|
||||
// try to capitalize the names please~
|
||||
// try to spell
|
||||
// you do not need to define _s or _l sub-states, game automatically does this for you
|
||||
|
||||
/datum/sprite_accessory/hair/afro
|
||||
name = "Afro"
|
||||
icon_state = "hair_afro"
|
||||
|
||||
/datum/sprite_accessory/hair/afro2
|
||||
name = "Afro 2"
|
||||
icon_state = "hair_afro2"
|
||||
|
||||
/datum/sprite_accessory/hair/afro_large
|
||||
name = "Afro (Large)"
|
||||
icon_state = "hair_bigafro"
|
||||
|
||||
/datum/sprite_accessory/hair/antenna
|
||||
name = "Ahoge"
|
||||
icon_state = "hair_antenna"
|
||||
|
||||
/datum/sprite_accessory/hair/bald
|
||||
name = "Bald"
|
||||
icon_state = null
|
||||
|
||||
/datum/sprite_accessory/hair/balding
|
||||
name = "Balding Hair"
|
||||
icon_state = "hair_e"
|
||||
|
||||
/datum/sprite_accessory/hair/bedhead
|
||||
name = "Bedhead"
|
||||
icon_state = "hair_bedhead"
|
||||
|
||||
/datum/sprite_accessory/hair/bedhead2
|
||||
name = "Bedhead 2"
|
||||
icon_state = "hair_bedheadv2"
|
||||
|
||||
/datum/sprite_accessory/hair/bedhead3
|
||||
name = "Bedhead 3"
|
||||
icon_state = "hair_bedheadv3"
|
||||
|
||||
/datum/sprite_accessory/hair/beehive
|
||||
name = "Beehive"
|
||||
icon_state = "hair_beehive"
|
||||
|
||||
/datum/sprite_accessory/hair/beehive2
|
||||
name = "Beehive 2"
|
||||
icon_state = "hair_beehivev2"
|
||||
|
||||
/datum/sprite_accessory/hair/bob
|
||||
name = "Bob Hair"
|
||||
icon_state = "hair_bob"
|
||||
|
||||
/datum/sprite_accessory/hair/bob2
|
||||
name = "Bob Hair 2"
|
||||
icon_state = "hair_bob2"
|
||||
|
||||
/datum/sprite_accessory/hair/bob3
|
||||
name = "Bob Hair 3"
|
||||
icon_state = "hair_bobcut"
|
||||
|
||||
/datum/sprite_accessory/hair/bobcurl
|
||||
name = "Bobcurl"
|
||||
icon_state = "hair_bobcurl"
|
||||
|
||||
/datum/sprite_accessory/hair/boddicker
|
||||
name = "Boddicker"
|
||||
icon_state = "hair_boddicker"
|
||||
|
||||
/datum/sprite_accessory/hair/bowl
|
||||
name = "Bowl"
|
||||
icon_state = "hair_bowlcut"
|
||||
|
||||
/datum/sprite_accessory/hair/braid
|
||||
name = "Braid (Floorlength)"
|
||||
icon_state = "hair_braid"
|
||||
|
||||
/datum/sprite_accessory/hair/braided
|
||||
name = "Braided"
|
||||
icon_state = "hair_braided"
|
||||
|
||||
/datum/sprite_accessory/hair/front_braid
|
||||
name = "Braided Front"
|
||||
icon_state = "hair_braidfront"
|
||||
|
||||
/datum/sprite_accessory/hair/not_floorlength_braid
|
||||
name = "Braid (High)"
|
||||
icon_state = "hair_braid2"
|
||||
|
||||
/datum/sprite_accessory/hair/lowbraid
|
||||
name = "Braid (Low)"
|
||||
icon_state = "hair_hbraid"
|
||||
|
||||
/datum/sprite_accessory/hair/shortbraid
|
||||
name = "Braid (Short)"
|
||||
icon_state = "hair_shortbraid"
|
||||
|
||||
/datum/sprite_accessory/hair/braidtail
|
||||
name = "Braided Tail"
|
||||
icon_state = "hair_braidtail"
|
||||
|
||||
/datum/sprite_accessory/hair/bun
|
||||
name = "Bun Head"
|
||||
icon_state = "hair_bun"
|
||||
|
||||
/datum/sprite_accessory/hair/bun2
|
||||
name = "Bun Head 2"
|
||||
icon_state = "hair_bunhead2"
|
||||
|
||||
/datum/sprite_accessory/hair/largebun
|
||||
name = "Bun (Large)"
|
||||
icon_state = "hair_largebun"
|
||||
|
||||
/datum/sprite_accessory/hair/business
|
||||
name = "Business Hair"
|
||||
icon_state = "hair_business"
|
||||
|
||||
/datum/sprite_accessory/hair/business2
|
||||
name = "Business Hair 2"
|
||||
icon_state = "hair_business2"
|
||||
|
||||
/datum/sprite_accessory/hair/business3
|
||||
name = "Business Hair 3"
|
||||
icon_state = "hair_business3"
|
||||
|
||||
/datum/sprite_accessory/hair/business4
|
||||
name = "Business Hair 4"
|
||||
icon_state = "hair_business4"
|
||||
|
||||
/datum/sprite_accessory/hair/buzz
|
||||
name = "Buzzcut"
|
||||
icon_state = "hair_buzzcut"
|
||||
|
||||
/datum/sprite_accessory/hair/combover
|
||||
name = "Combover"
|
||||
icon_state = "hair_combover"
|
||||
|
||||
/datum/sprite_accessory/hair/crew
|
||||
name = "Crewcut"
|
||||
icon_state = "hair_crewcut"
|
||||
|
||||
/datum/sprite_accessory/hair/curls
|
||||
name = "Curls"
|
||||
icon_state = "hair_curls"
|
||||
|
||||
/datum/sprite_accessory/hair/cut
|
||||
name = "Cut Hair"
|
||||
icon_state = "hair_c"
|
||||
|
||||
/datum/sprite_accessory/hair/devillock
|
||||
name = "Devil Lock"
|
||||
icon_state = "hair_devilock"
|
||||
|
||||
/datum/sprite_accessory/hair/dreadlocks
|
||||
name = "Dreadlocks"
|
||||
icon_state = "hair_dreads"
|
||||
|
||||
/datum/sprite_accessory/hair/drillhair
|
||||
name = "Drill Hair"
|
||||
icon_state = "hair_drillhair"
|
||||
|
||||
/datum/sprite_accessory/hair/drillhairextended
|
||||
name = "Drill Hair (Extended)"
|
||||
icon_state = "hair_drillhairextended"
|
||||
|
||||
/datum/sprite_accessory/hair/emo
|
||||
name = "Emo"
|
||||
icon_state = "hair_emo"
|
||||
|
||||
/datum/sprite_accessory/hair/feather
|
||||
name = "Feather"
|
||||
icon_state = "hair_feather"
|
||||
|
||||
/datum/sprite_accessory/hair/sargeant
|
||||
name = "Flat Top"
|
||||
icon_state = "hair_sargeant"
|
||||
|
||||
/datum/sprite_accessory/hair/bigflattop
|
||||
name = "Flat Top (Big)"
|
||||
icon_state = "hair_bigflattop"
|
||||
|
||||
/datum/sprite_accessory/hair/fag
|
||||
name = "Flow Hair"
|
||||
icon_state = "hair_f"
|
||||
|
||||
/datum/sprite_accessory/hair/gelled
|
||||
name = "Gelled Back"
|
||||
icon_state = "hair_gelled"
|
||||
|
||||
/datum/sprite_accessory/hair/gentle
|
||||
name = "Gentle"
|
||||
icon_state = "hair_gentle"
|
||||
|
||||
/datum/sprite_accessory/hair/halfbang
|
||||
name = "Half-banged Hair"
|
||||
icon_state = "hair_halfbang"
|
||||
|
||||
/datum/sprite_accessory/hair/halfbang2
|
||||
name = "Half-banged Hair 2"
|
||||
icon_state = "hair_halfbang2"
|
||||
|
||||
/datum/sprite_accessory/hair/hedgehog
|
||||
name = "Hedgehog Hair"
|
||||
icon_state = "hair_hedgehog"
|
||||
|
||||
/datum/sprite_accessory/hair/himecut
|
||||
name = "Hime Cut"
|
||||
icon_state = "hair_himecut"
|
||||
|
||||
/datum/sprite_accessory/hair/himecut2
|
||||
name = "Hime Cut 2"
|
||||
icon_state = "hair_himecut2"
|
||||
|
||||
/datum/sprite_accessory/hair/himeup
|
||||
name = "Hime Updo"
|
||||
icon_state = "hair_himeup"
|
||||
|
||||
/datum/sprite_accessory/hair/hitop
|
||||
name = "Hitop"
|
||||
icon_state = "hair_hitop"
|
||||
|
||||
/datum/sprite_accessory/hair/jensen
|
||||
name = "Jensen Hair"
|
||||
icon_state = "hair_jensen"
|
||||
|
||||
/datum/sprite_accessory/hair/keanu
|
||||
name = "Keanu Hair"
|
||||
icon_state = "hair_keanu"
|
||||
|
||||
/datum/sprite_accessory/hair/kusangi
|
||||
name = "Kusanagi Hair"
|
||||
icon_state = "hair_kusanagi"
|
||||
|
||||
/datum/sprite_accessory/hair/long
|
||||
name = "Long Hair 1"
|
||||
icon_state = "hair_long"
|
||||
|
||||
/datum/sprite_accessory/hair/long2
|
||||
name = "Long Hair 2"
|
||||
icon_state = "hair_long2"
|
||||
|
||||
/datum/sprite_accessory/hair/long3
|
||||
name = "Long Hair 3"
|
||||
icon_state = "hair_long3"
|
||||
|
||||
/datum/sprite_accessory/hair/long_over_eye
|
||||
name = "Long Over Eye"
|
||||
icon_state = "hair_longovereye"
|
||||
|
||||
/datum/sprite_accessory/hair/longbangs
|
||||
name = "Long Bangs"
|
||||
icon_state = "hair_lbangs"
|
||||
|
||||
/datum/sprite_accessory/hair/longemo
|
||||
name = "Long Emo"
|
||||
icon_state = "hair_longemo"
|
||||
|
||||
/datum/sprite_accessory/hair/longfringe
|
||||
name = "Long Fringe"
|
||||
icon_state = "hair_longfringe"
|
||||
|
||||
/datum/sprite_accessory/hair/sidepartlongalt
|
||||
name = "Long Side Part"
|
||||
icon_state = "hair_longsidepart"
|
||||
|
||||
/datum/sprite_accessory/hair/megaeyebrows
|
||||
name = "Mega Eyebrows"
|
||||
icon_state = "hair_megaeyebrows"
|
||||
|
||||
/datum/sprite_accessory/hair/messy
|
||||
name = "Messy"
|
||||
icon_state = "hair_messy"
|
||||
|
||||
/datum/sprite_accessory/hair/mohawk
|
||||
name = "Mohawk"
|
||||
icon_state = "hair_d"
|
||||
|
||||
/datum/sprite_accessory/hair/reversemohawk
|
||||
name = "Mohawk (Reverse)"
|
||||
icon_state = "hair_reversemohawk"
|
||||
|
||||
/datum/sprite_accessory/hair/odango
|
||||
name = "Odango"
|
||||
icon_state = "hair_odango"
|
||||
|
||||
/datum/sprite_accessory/hair/ombre
|
||||
name = "Ombre"
|
||||
icon_state = "hair_ombre"
|
||||
|
||||
/datum/sprite_accessory/hair/oneshoulder
|
||||
name = "One Shoulder"
|
||||
icon_state = "hair_oneshoulder"
|
||||
|
||||
/datum/sprite_accessory/hair/over_eye
|
||||
name = "Over Eye"
|
||||
icon_state = "hair_shortovereye"
|
||||
|
||||
//Donator item - fractious
|
||||
/datum/sprite_accessory/hair/over_eye_fr
|
||||
name = "Over Eye (fract)"
|
||||
icon_state = "hair_shortovereye_1f"
|
||||
ckeys_allowed = list("fractious")
|
||||
|
||||
/datum/sprite_accessory/hair/parted
|
||||
name = "Parted"
|
||||
icon_state = "hair_parted"
|
||||
|
||||
/datum/sprite_accessory/hair/partedside
|
||||
name = "Parted (Side)"
|
||||
icon_state = "hair_part"
|
||||
|
||||
/datum/sprite_accessory/hair/kagami
|
||||
name = "Pigtails"
|
||||
icon_state = "hair_kagami"
|
||||
|
||||
/datum/sprite_accessory/hair/pigtail
|
||||
name = "Pigtails 2"
|
||||
icon_state = "hair_pigtails"
|
||||
|
||||
/datum/sprite_accessory/hair/pigtail2
|
||||
name = "Pigtails 3"
|
||||
icon_state = "hair_pigtails2"
|
||||
|
||||
/datum/sprite_accessory/hair/pixie
|
||||
name = "Pixie Cut"
|
||||
icon_state = "hair_pixie"
|
||||
|
||||
/datum/sprite_accessory/hair/pompadour
|
||||
name = "Pompadour"
|
||||
icon_state = "hair_pompadour"
|
||||
|
||||
/datum/sprite_accessory/hair/bigpompadour
|
||||
name = "Pompadour (Big)"
|
||||
icon_state = "hair_bigpompadour"
|
||||
|
||||
/datum/sprite_accessory/hair/ponytail1
|
||||
name = "Ponytail"
|
||||
icon_state = "hair_ponytail"
|
||||
|
||||
/datum/sprite_accessory/hair/ponytail2
|
||||
name = "Ponytail 2"
|
||||
icon_state = "hair_ponytail2"
|
||||
|
||||
/datum/sprite_accessory/hair/ponytail3
|
||||
name = "Ponytail 3"
|
||||
icon_state = "hair_ponytail3"
|
||||
|
||||
/datum/sprite_accessory/hair/ponytail4
|
||||
name = "Ponytail 4"
|
||||
icon_state = "hair_ponytail4"
|
||||
|
||||
/datum/sprite_accessory/hair/ponytail5
|
||||
name = "Ponytail 5"
|
||||
icon_state = "hair_ponytail5"
|
||||
|
||||
/datum/sprite_accessory/hair/highponytail
|
||||
name = "Ponytail (High)"
|
||||
icon_state = "hair_highponytail"
|
||||
|
||||
/datum/sprite_accessory/hair/longponytail
|
||||
name = "Ponytail (Long)"
|
||||
icon_state = "hair_longstraightponytail"
|
||||
|
||||
/datum/sprite_accessory/hair/sidetail
|
||||
name = "Ponytail (Side)"
|
||||
icon_state = "hair_sidetail"
|
||||
|
||||
/datum/sprite_accessory/hair/sidetail2
|
||||
name = "Ponytail (Side) 2"
|
||||
icon_state = "hair_sidetail2"
|
||||
|
||||
/datum/sprite_accessory/hair/sidetail3
|
||||
name = "Ponytail (Side) 3"
|
||||
icon_state = "hair_sidetail3"
|
||||
|
||||
/datum/sprite_accessory/hair/sidetail4
|
||||
name = "Ponytail (Side) 4"
|
||||
icon_state = "hair_sidetail4"
|
||||
|
||||
/datum/sprite_accessory/hair/quiff
|
||||
name = "Quiff"
|
||||
icon_state = "hair_quiff"
|
||||
|
||||
/datum/sprite_accessory/hair/short
|
||||
name = "Short Hair"
|
||||
icon_state = "hair_a"
|
||||
|
||||
/datum/sprite_accessory/hair/shorthair2
|
||||
name = "Short Hair 2"
|
||||
icon_state = "hair_shorthair2"
|
||||
|
||||
/datum/sprite_accessory/hair/shorthair3
|
||||
name = "Short Hair 3"
|
||||
icon_state = "hair_shorthair3"
|
||||
|
||||
/datum/sprite_accessory/hair/shoulderlength
|
||||
name = "Shoulder-length Hair"
|
||||
icon_state = "hair_b"
|
||||
|
||||
/datum/sprite_accessory/hair/sidecut
|
||||
name = "Sidecut"
|
||||
icon_state = "hair_sidecut"
|
||||
|
||||
/datum/sprite_accessory/hair/skinhead
|
||||
name = "Skinhead"
|
||||
icon_state = "hair_skinhead"
|
||||
|
||||
/datum/sprite_accessory/hair/protagonist
|
||||
name = "Slightly Long Hair"
|
||||
icon_state = "hair_protagonist"
|
||||
|
||||
/datum/sprite_accessory/hair/spiky
|
||||
name = "Spiky"
|
||||
icon_state = "hair_spikey"
|
||||
|
||||
/datum/sprite_accessory/hair/spiky2
|
||||
name = "Spiky 2"
|
||||
icon_state = "hair_spiky"
|
||||
|
||||
/datum/sprite_accessory/hair/spiky3
|
||||
name = "Spiky 3"
|
||||
icon_state = "hair_spiky2"
|
||||
|
||||
/datum/sprite_accessory/hair/swept
|
||||
name = "Swept Back Hair"
|
||||
icon_state = "hair_swept"
|
||||
|
||||
/datum/sprite_accessory/hair/swept2
|
||||
name = "Swept Back Hair 2"
|
||||
icon_state = "hair_swept2"
|
||||
|
||||
/datum/sprite_accessory/hair/tressshoulder
|
||||
name = "Tress Shoulder"
|
||||
icon_state = "hair_tressshoulder"
|
||||
|
||||
/datum/sprite_accessory/hair/updo
|
||||
name = "Updo"
|
||||
icon_state = "hair_updo"
|
||||
|
||||
/datum/sprite_accessory/hair/longer
|
||||
name = "Very Long Hair"
|
||||
icon_state = "hair_vlong"
|
||||
|
||||
/datum/sprite_accessory/hair/longest
|
||||
name = "Very Long Hair 2"
|
||||
icon_state = "hair_longest"
|
||||
|
||||
/datum/sprite_accessory/hair/longest2
|
||||
name = "Very Long Over Eye"
|
||||
icon_state = "hair_longest2"
|
||||
|
||||
/datum/sprite_accessory/hair/longestalt
|
||||
name = "Very Long with Fringe"
|
||||
icon_state = "hair_vlongfringe"
|
||||
@@ -0,0 +1,26 @@
|
||||
/datum/sprite_accessory/horns
|
||||
icon = 'icons/mob/mutant_bodyparts.dmi'
|
||||
|
||||
/datum/sprite_accessory/horns/none
|
||||
name = "None"
|
||||
icon_state = "none"
|
||||
|
||||
/datum/sprite_accessory/horns/simple
|
||||
name = "Simple"
|
||||
icon_state = "simple"
|
||||
|
||||
/datum/sprite_accessory/horns/short
|
||||
name = "Short"
|
||||
icon_state = "short"
|
||||
|
||||
/datum/sprite_accessory/horns/curled
|
||||
name = "Curled"
|
||||
icon_state = "curled"
|
||||
|
||||
/datum/sprite_accessory/horns/ram
|
||||
name = "Ram"
|
||||
icon_state = "ram"
|
||||
|
||||
/datum/sprite_accessory/horns/angler
|
||||
name = "Angeler"
|
||||
icon_state = "angler"
|
||||
@@ -0,0 +1,8 @@
|
||||
/datum/sprite_accessory/legs //legs are a special case, they aren't actually sprite_accessories but are updated with them.
|
||||
icon = null //These datums exist for selecting legs on preference, and little else
|
||||
|
||||
/datum/sprite_accessory/legs/none
|
||||
name = "Normal Legs"
|
||||
|
||||
/datum/sprite_accessory/legs/digitigrade_lizard
|
||||
name = "Digitigrade Legs"
|
||||
@@ -0,0 +1,68 @@
|
||||
/datum/sprite_accessory/moth_wings
|
||||
icon = 'icons/mob/wings.dmi'
|
||||
color_src = null
|
||||
|
||||
/datum/sprite_accessory/moth_wings/plain
|
||||
name = "Plain"
|
||||
icon_state = "plain"
|
||||
|
||||
/datum/sprite_accessory/moth_wings/monarch
|
||||
name = "Monarch"
|
||||
icon_state = "monarch"
|
||||
|
||||
/datum/sprite_accessory/moth_wings/luna
|
||||
name = "Luna"
|
||||
icon_state = "luna"
|
||||
|
||||
/datum/sprite_accessory/moth_wings/atlas
|
||||
name = "Atlas"
|
||||
icon_state = "atlas"
|
||||
|
||||
/datum/sprite_accessory/moth_wings/reddish
|
||||
name = "Reddish"
|
||||
icon_state = "redish"
|
||||
|
||||
/datum/sprite_accessory/moth_wings/royal
|
||||
name = "Royal"
|
||||
icon_state = "royal"
|
||||
|
||||
/datum/sprite_accessory/moth_wings/gothic
|
||||
name = "Gothic"
|
||||
icon_state = "gothic"
|
||||
|
||||
/datum/sprite_accessory/moth_wings/lovers
|
||||
name = "Lovers"
|
||||
icon_state = "lovers"
|
||||
|
||||
/datum/sprite_accessory/moth_wings/whitefly
|
||||
name = "White Fly"
|
||||
icon_state = "whitefly"
|
||||
|
||||
/datum/sprite_accessory/moth_wings/punished
|
||||
name = "Burnt Off"
|
||||
icon_state = "punished"
|
||||
locked = TRUE
|
||||
|
||||
/datum/sprite_accessory/moth_wings/firewatch
|
||||
name = "Firewatch"
|
||||
icon_state = "firewatch"
|
||||
|
||||
/datum/sprite_accessory/moth_wings/deathhead
|
||||
name = "Deathshead"
|
||||
icon_state = "deathhead"
|
||||
|
||||
/datum/sprite_accessory/moth_wings/poison
|
||||
name = "Poison"
|
||||
icon_state = "poison"
|
||||
|
||||
/datum/sprite_accessory/moth_wings/ragged
|
||||
name = "Ragged"
|
||||
icon_state = "ragged"
|
||||
|
||||
/datum/sprite_accessory/moth_wings/moonfly
|
||||
name = "Moon Fly"
|
||||
icon_state = "moonfly"
|
||||
|
||||
/datum/sprite_accessory/moth_wings/snow
|
||||
name = "Snow"
|
||||
icon_state = "snow"
|
||||
@@ -0,0 +1,53 @@
|
||||
/datum/sprite_accessory/spines
|
||||
icon = 'icons/mob/mutant_bodyparts.dmi'
|
||||
|
||||
/datum/sprite_accessory/spines_animated
|
||||
icon = 'icons/mob/mutant_bodyparts.dmi'
|
||||
|
||||
/datum/sprite_accessory/spines/none
|
||||
name = "None"
|
||||
icon_state = "none"
|
||||
|
||||
/datum/sprite_accessory/spines_animated/none
|
||||
name = "None"
|
||||
icon_state = "none"
|
||||
|
||||
/datum/sprite_accessory/spines/short
|
||||
name = "Short"
|
||||
icon_state = "short"
|
||||
|
||||
/datum/sprite_accessory/spines_animated/short
|
||||
name = "Short"
|
||||
icon_state = "short"
|
||||
|
||||
/datum/sprite_accessory/spines/shortmeme
|
||||
name = "Short + Membrane"
|
||||
icon_state = "shortmeme"
|
||||
|
||||
/datum/sprite_accessory/spines_animated/shortmeme
|
||||
name = "Short + Membrane"
|
||||
icon_state = "shortmeme"
|
||||
|
||||
/datum/sprite_accessory/spines/long
|
||||
name = "Long"
|
||||
icon_state = "long"
|
||||
|
||||
/datum/sprite_accessory/spines_animated/long
|
||||
name = "Long"
|
||||
icon_state = "long"
|
||||
|
||||
/datum/sprite_accessory/spines/longmeme
|
||||
name = "Long + Membrane"
|
||||
icon_state = "longmeme"
|
||||
|
||||
/datum/sprite_accessory/spines_animated/longmeme
|
||||
name = "Long + Membrane"
|
||||
icon_state = "longmeme"
|
||||
|
||||
/datum/sprite_accessory/spines/aqautic
|
||||
name = "Aquatic"
|
||||
icon_state = "aqua"
|
||||
|
||||
/datum/sprite_accessory/spines_animated/aqautic
|
||||
name = "Aquatic"
|
||||
icon_state = "aqua"
|
||||
@@ -0,0 +1,18 @@
|
||||
/datum/sprite_accessory/snouts
|
||||
icon = 'icons/mob/mutant_bodyparts.dmi'
|
||||
|
||||
/datum/sprite_accessory/snouts/sharp
|
||||
name = "Sharp"
|
||||
icon_state = "sharp"
|
||||
|
||||
/datum/sprite_accessory/snouts/round
|
||||
name = "Round"
|
||||
icon_state = "round"
|
||||
|
||||
/datum/sprite_accessory/snouts/sharplight
|
||||
name = "Sharp + Light"
|
||||
icon_state = "sharplight"
|
||||
|
||||
/datum/sprite_accessory/snouts/roundlight
|
||||
name = "Round + Light"
|
||||
icon_state = "roundlight"
|
||||
@@ -0,0 +1,96 @@
|
||||
///////////////////////
|
||||
// Socks Definitions //
|
||||
///////////////////////
|
||||
|
||||
/datum/sprite_accessory/socks
|
||||
icon = 'icons/mob/underwear.dmi'
|
||||
|
||||
/datum/sprite_accessory/socks/nude
|
||||
name = "Nude"
|
||||
icon_state = null
|
||||
|
||||
// please make sure they're sorted alphabetically and categorized
|
||||
|
||||
/datum/sprite_accessory/socks/black_knee
|
||||
name = "Knee-high (Black)"
|
||||
icon_state = "black_knee"
|
||||
|
||||
/datum/sprite_accessory/socks/commie_knee
|
||||
name = "Knee-High (Commie)"
|
||||
icon_state = "commie_knee"
|
||||
|
||||
/datum/sprite_accessory/socks/usa_knee
|
||||
name = "Knee-High (Freedom)"
|
||||
icon_state = "assblastusa_knee"
|
||||
|
||||
/datum/sprite_accessory/socks/rainbow_knee
|
||||
name = "Knee-high (Rainbow)"
|
||||
icon_state = "rainbow_knee"
|
||||
|
||||
/datum/sprite_accessory/socks/striped_knee
|
||||
name = "Knee-high (Striped)"
|
||||
icon_state = "striped_knee"
|
||||
|
||||
/datum/sprite_accessory/socks/thin_knee
|
||||
name = "Knee-high (Thin)"
|
||||
icon_state = "thin_knee"
|
||||
|
||||
/datum/sprite_accessory/socks/uk_knee
|
||||
name = "Knee-High (UK)"
|
||||
icon_state = "uk_knee"
|
||||
|
||||
/datum/sprite_accessory/socks/white_knee
|
||||
name = "Knee-high (White)"
|
||||
icon_state = "white_knee"
|
||||
|
||||
/datum/sprite_accessory/socks/black_norm
|
||||
name = "Normal (Black)"
|
||||
icon_state = "black_norm"
|
||||
|
||||
/datum/sprite_accessory/socks/white_norm
|
||||
name = "Normal (White)"
|
||||
icon_state = "white_norm"
|
||||
|
||||
/datum/sprite_accessory/socks/pantyhose
|
||||
name = "Pantyhose"
|
||||
icon_state = "pantyhose"
|
||||
|
||||
/datum/sprite_accessory/socks/black_short
|
||||
name = "Short (Black)"
|
||||
icon_state = "black_short"
|
||||
|
||||
/datum/sprite_accessory/socks/white_short
|
||||
name = "Short (White)"
|
||||
icon_state = "white_short"
|
||||
|
||||
/datum/sprite_accessory/socks/black_thigh
|
||||
name = "Thigh-high (Black)"
|
||||
icon_state = "black_thigh"
|
||||
|
||||
/datum/sprite_accessory/socks/commie_thigh
|
||||
name = "Thigh-high (Commie)"
|
||||
icon_state = "commie_thigh"
|
||||
|
||||
/datum/sprite_accessory/socks/usa_thigh
|
||||
name = "Thigh-high (Freedom)"
|
||||
icon_state = "assblastusa_thigh"
|
||||
|
||||
/datum/sprite_accessory/socks/rainbow_thigh
|
||||
name = "Thigh-high (Rainbow)"
|
||||
icon_state = "rainbow_thigh"
|
||||
|
||||
/datum/sprite_accessory/socks/striped_thigh
|
||||
name = "Thigh-high (Striped)"
|
||||
icon_state = "striped_thigh"
|
||||
|
||||
/datum/sprite_accessory/socks/thin_thigh
|
||||
name = "Thigh-high (Thin)"
|
||||
icon_state = "thin_thigh"
|
||||
|
||||
/datum/sprite_accessory/socks/uk_thigh
|
||||
name = "Thigh-high (UK)"
|
||||
icon_state = "uk_thigh"
|
||||
|
||||
/datum/sprite_accessory/socks/white_thigh
|
||||
name = "Thigh-high (White)"
|
||||
icon_state = "white_thigh"
|
||||
@@ -0,0 +1,55 @@
|
||||
/datum/sprite_accessory/tails
|
||||
icon = 'icons/mob/mutant_bodyparts.dmi'
|
||||
|
||||
/datum/sprite_accessory/tails_animated
|
||||
icon = 'icons/mob/mutant_bodyparts.dmi'
|
||||
|
||||
/datum/sprite_accessory/tails/lizard/smooth
|
||||
name = "Smooth"
|
||||
icon_state = "smooth"
|
||||
|
||||
/datum/sprite_accessory/tails_animated/lizard/smooth
|
||||
name = "Smooth"
|
||||
icon_state = "smooth"
|
||||
|
||||
/datum/sprite_accessory/tails/lizard/dtiger
|
||||
name = "Dark Tiger"
|
||||
icon_state = "dtiger"
|
||||
|
||||
/datum/sprite_accessory/tails_animated/lizard/dtiger
|
||||
name = "Dark Tiger"
|
||||
icon_state = "dtiger"
|
||||
|
||||
/datum/sprite_accessory/tails/lizard/ltiger
|
||||
name = "Light Tiger"
|
||||
icon_state = "ltiger"
|
||||
|
||||
/datum/sprite_accessory/tails_animated/lizard/ltiger
|
||||
name = "Light Tiger"
|
||||
icon_state = "ltiger"
|
||||
|
||||
/datum/sprite_accessory/tails/lizard/spikes
|
||||
name = "Spikes"
|
||||
icon_state = "spikes"
|
||||
|
||||
/datum/sprite_accessory/tails_animated/lizard/spikes
|
||||
name = "Spikes"
|
||||
icon_state = "spikes"
|
||||
|
||||
/datum/sprite_accessory/tails/human/none
|
||||
name = "None"
|
||||
icon_state = "none"
|
||||
|
||||
/datum/sprite_accessory/tails_animated/human/none
|
||||
name = "None"
|
||||
icon_state = "none"
|
||||
/*
|
||||
/datum/sprite_accessory/tails/human/cat
|
||||
name = "Cat"
|
||||
icon_state = "cat"
|
||||
color_src = HAIR
|
||||
|
||||
/datum/sprite_accessory/tails_animated/human/cat
|
||||
name = "Cat"
|
||||
icon_state = "cat"
|
||||
color_src = HAIR*/
|
||||
@@ -0,0 +1,308 @@
|
||||
////////////////////////////
|
||||
// Undershirt Definitions //
|
||||
////////////////////////////
|
||||
|
||||
/datum/sprite_accessory/undershirt
|
||||
icon = 'icons/mob/underwear.dmi'
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/nude
|
||||
name = "Nude"
|
||||
icon_state = null
|
||||
|
||||
// please make sure they're sorted alphabetically and categorized
|
||||
|
||||
/datum/sprite_accessory/undershirt/bluejersey
|
||||
name = "Shirt, Jersey - Blue"
|
||||
icon_state = "shirt_bluejersey"
|
||||
|
||||
/datum/sprite_accessory/undershirt/redjersey
|
||||
name = "Shirt, Jersey - Red"
|
||||
icon_state = "shirt_redjersey"
|
||||
|
||||
/datum/sprite_accessory/undershirt/bluepolo
|
||||
name = "Shirt, Polo - Blue"
|
||||
icon_state = "bluepolo"
|
||||
|
||||
/datum/sprite_accessory/undershirt/grayyellowpolo
|
||||
name = "Shirt, Polo - Gray, Yellow"
|
||||
icon_state = "grayyellowpolo"
|
||||
|
||||
/datum/sprite_accessory/undershirt/redpolo
|
||||
name = "Shirt, Polo - Red"
|
||||
icon_state = "redpolo"
|
||||
|
||||
/datum/sprite_accessory/undershirt/whitepolo
|
||||
name = "Shirt, Polo - White"
|
||||
icon_state = "whitepolo"
|
||||
|
||||
/datum/sprite_accessory/undershirt/alienshirt
|
||||
name = "Shirt - Alien"
|
||||
icon_state = "shirt_alien"
|
||||
|
||||
/datum/sprite_accessory/undershirt/mondmondjaja
|
||||
name = "Shirt - Band"
|
||||
icon_state = "band"
|
||||
|
||||
/datum/sprite_accessory/undershirt/shirt_black
|
||||
name = "Shirt - Black"
|
||||
icon_state = "shirt_black"
|
||||
|
||||
/datum/sprite_accessory/undershirt/blueshirt
|
||||
name = "Shirt - Blue"
|
||||
icon_state = "shirt_blue"
|
||||
|
||||
/datum/sprite_accessory/undershirt/clownshirt
|
||||
name = "Shirt - Clown"
|
||||
icon_state = "shirt_clown"
|
||||
|
||||
/datum/sprite_accessory/undershirt/commie
|
||||
name = "Shirt - Commie"
|
||||
icon_state = "shirt_commie"
|
||||
|
||||
/datum/sprite_accessory/undershirt/greenshirt
|
||||
name = "Shirt - Green"
|
||||
icon_state = "shirt_green"
|
||||
|
||||
/datum/sprite_accessory/undershirt/shirt_grey
|
||||
name = "Shirt - Grey"
|
||||
icon_state = "shirt_grey"
|
||||
|
||||
/datum/sprite_accessory/undershirt/ian
|
||||
name = "Shirt - Ian"
|
||||
icon_state = "ian"
|
||||
|
||||
/datum/sprite_accessory/undershirt/ilovent
|
||||
name = "Shirt - I Love NT"
|
||||
icon_state = "ilovent"
|
||||
|
||||
/datum/sprite_accessory/undershirt/lover
|
||||
name = "Shirt - Lover"
|
||||
icon_state = "lover"
|
||||
|
||||
/datum/sprite_accessory/undershirt/matroska
|
||||
name = "Shirt - Matroska"
|
||||
icon_state = "matroska"
|
||||
|
||||
/datum/sprite_accessory/undershirt/meat
|
||||
name = "Shirt - Meat"
|
||||
icon_state = "shirt_meat"
|
||||
|
||||
/datum/sprite_accessory/undershirt/nano
|
||||
name = "Shirt - Nanotrasen"
|
||||
icon_state = "shirt_nano"
|
||||
|
||||
/datum/sprite_accessory/undershirt/peace
|
||||
name = "Shirt - Peace"
|
||||
icon_state = "peace"
|
||||
|
||||
/datum/sprite_accessory/undershirt/pacman
|
||||
name = "Shirt - Pogoman"
|
||||
icon_state = "pogoman"
|
||||
|
||||
/datum/sprite_accessory/undershirt/question
|
||||
name = "Shirt - Question"
|
||||
icon_state = "shirt_question"
|
||||
|
||||
/datum/sprite_accessory/undershirt/redshirt
|
||||
name = "Shirt - Red"
|
||||
icon_state = "shirt_red"
|
||||
|
||||
/datum/sprite_accessory/undershirt/skull
|
||||
name = "Shirt - Skull"
|
||||
icon_state = "shirt_skull"
|
||||
|
||||
/datum/sprite_accessory/undershirt/ss13
|
||||
name = "Shirt - SS13"
|
||||
icon_state = "shirt_ss13"
|
||||
|
||||
/datum/sprite_accessory/undershirt/stripe
|
||||
name = "Shirt - Striped"
|
||||
icon_state = "shirt_stripes"
|
||||
|
||||
/datum/sprite_accessory/undershirt/tiedye
|
||||
name = "Shirt - Tie-dye"
|
||||
icon_state = "shirt_tiedye"
|
||||
|
||||
/datum/sprite_accessory/undershirt/uk
|
||||
name = "Shirt - UK"
|
||||
icon_state = "uk"
|
||||
|
||||
/datum/sprite_accessory/undershirt/usa
|
||||
name = "Shirt - USA"
|
||||
icon_state = "shirt_assblastusa"
|
||||
|
||||
/datum/sprite_accessory/undershirt/shirt_white
|
||||
name = "Shirt - White"
|
||||
icon_state = "shirt_white"
|
||||
|
||||
/datum/sprite_accessory/undershirt/blackshortsleeve
|
||||
name = "Shirt, Short Sleeved - Black"
|
||||
icon_state = "blackshortsleeve"
|
||||
|
||||
/datum/sprite_accessory/undershirt/blueshortsleeve
|
||||
name = "Shirt, Short Sleeved - Blue"
|
||||
icon_state = "blueshortsleeve"
|
||||
|
||||
/datum/sprite_accessory/undershirt/greenshortsleeve
|
||||
name = "Shirt, Short Sleeved - Green"
|
||||
icon_state = "greenshortsleeve"
|
||||
|
||||
/datum/sprite_accessory/undershirt/purpleshortsleeve
|
||||
name = "Shirt, Short Sleeved - Purple"
|
||||
icon_state = "purpleshortsleeve"
|
||||
|
||||
/datum/sprite_accessory/undershirt/whiteshortsleeve
|
||||
name = "Shirt, Short Sleeved - White"
|
||||
icon_state = "whiteshortsleeve"
|
||||
|
||||
/datum/sprite_accessory/undershirt/blueshirtsport
|
||||
name = "Shirt, Sports - Blue"
|
||||
icon_state = "blueshirtsport"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/greenshirtsport
|
||||
name = "Shirt, Sports - Green"
|
||||
icon_state = "greenshirtsport"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/redshirtsport
|
||||
name = "Shirt, Sports - Red"
|
||||
icon_state = "redshirtsport"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/redtop
|
||||
name = "Shirt, Short - Red"
|
||||
icon_state = "redtop"
|
||||
|
||||
/datum/sprite_accessory/undershirt/whitetop
|
||||
name = "Shirt, Short - White"
|
||||
icon_state = "whitetop"
|
||||
|
||||
/datum/sprite_accessory/undershirt/tshirt_blue
|
||||
name = "T-Shirt - Blue"
|
||||
icon_state = "blueshirt"
|
||||
|
||||
/datum/sprite_accessory/undershirt/tshirt_green
|
||||
name = "T-Shirt - Green"
|
||||
icon_state = "greenshirt"
|
||||
|
||||
/datum/sprite_accessory/undershirt/tshirt_red
|
||||
name = "T-Shirt - Red"
|
||||
icon_state = "redshirt"
|
||||
|
||||
/datum/sprite_accessory/undershirt/yellowshirt
|
||||
name = "T-Shirt - Yellow"
|
||||
icon_state = "yellowshirt"
|
||||
|
||||
/datum/sprite_accessory/undershirt/tank_black
|
||||
name = "Tank Top - Black"
|
||||
icon_state = "tank_black"
|
||||
|
||||
/datum/sprite_accessory/undershirt/tankfire
|
||||
name = "Tank Top - Fire"
|
||||
icon_state = "tank_fire"
|
||||
|
||||
/datum/sprite_accessory/undershirt/tank_grey
|
||||
name = "Tank Top - Grey"
|
||||
icon_state = "tank_grey"
|
||||
|
||||
/datum/sprite_accessory/undershirt/female_midriff
|
||||
name = "Tank Top - Midriff"
|
||||
icon_state = "tank_midriff"
|
||||
|
||||
/datum/sprite_accessory/undershirt/tank_red
|
||||
name = "Tank Top - Red"
|
||||
icon_state = "tank_red"
|
||||
|
||||
/datum/sprite_accessory/undershirt/tankstripe
|
||||
name = "Tank Top - Striped"
|
||||
icon_state = "tank_stripes"
|
||||
|
||||
/datum/sprite_accessory/undershirt/tank_white
|
||||
name = "Tank Top - White"
|
||||
icon_state = "tank_white"
|
||||
|
||||
/datum/sprite_accessory/undershirt/female_red
|
||||
name = "Bra - Red"
|
||||
icon_state = "bra_red"
|
||||
|
||||
/datum/sprite_accessory/undershirt/female_pink
|
||||
name = "Bra - Pink"
|
||||
icon_state = "bra_pink"
|
||||
|
||||
/datum/sprite_accessory/undershirt/female_kinky
|
||||
name = "Bra - Kinky Black"
|
||||
icon_state = "bra_kinky"
|
||||
|
||||
/datum/sprite_accessory/undershirt/female_green
|
||||
name = "Bra - Green"
|
||||
icon_state = "bra_green"
|
||||
|
||||
/datum/sprite_accessory/undershirt/female_commie
|
||||
name = "Bra - Freedom"
|
||||
icon_state = "bra_assblastusa"
|
||||
|
||||
/datum/sprite_accessory/undershirt/female_commie
|
||||
name = "Bra - Commie"
|
||||
icon_state = "bra_commie"
|
||||
|
||||
/datum/sprite_accessory/undershirt/female_babyblue
|
||||
name = "Bra, Baby Blue"
|
||||
icon_state = "bra_babyblue"
|
||||
|
||||
/datum/sprite_accessory/undershirt/female_black
|
||||
name = "Bra - Black"
|
||||
icon_state = "bra_black"
|
||||
|
||||
/datum/sprite_accessory/undershirt/female_uk
|
||||
name = "Bra - UK"
|
||||
icon_state = "bra_uk"
|
||||
|
||||
/datum/sprite_accessory/undershirt/female_white
|
||||
name = "Bra - White"
|
||||
icon_state = "bra_white"
|
||||
|
||||
/datum/sprite_accessory/undershirt/female_white_neko
|
||||
name = "Bra, Neko - white"
|
||||
icon_state = "bra_neko_white"
|
||||
|
||||
/datum/sprite_accessory/undershirt/female_black_neko
|
||||
name = "Bra, Neko - Black"
|
||||
icon_state = "bra_neko_black"
|
||||
|
||||
/datum/sprite_accessory/undershirt/female_blackalt
|
||||
name = "Bra, Sports - Black"
|
||||
icon_state = "bra_sports_black"
|
||||
|
||||
/datum/sprite_accessory/undershirt/sports_bra
|
||||
name = "Bra, Sports 1 - White"
|
||||
icon_state = "sports_bra"
|
||||
|
||||
/datum/sprite_accessory/undershirt/female_whitealt
|
||||
name = "Bra, Sports 2 - White"
|
||||
icon_state = "bra_sports_white"
|
||||
|
||||
/datum/sprite_accessory/undershirt/sports_bra2
|
||||
name = "Bra, Sports 3 - White"
|
||||
icon_state = "sports_bra_alt"
|
||||
|
||||
/datum/sprite_accessory/undershirt/female_yellow
|
||||
name = "Bra - Yellow"
|
||||
icon_state = "bra_yellow"
|
||||
|
||||
/datum/sprite_accessory/undershirt/female_thong
|
||||
name = "Bra, Strapless - Pink"
|
||||
icon_state = "bra_strapless_pink"
|
||||
|
||||
/datum/sprite_accessory/undershirt/female_blue
|
||||
name = "Bra, Strapless - Blue"
|
||||
icon_state = "bra_blue"
|
||||
|
||||
/datum/sprite_accessory/undershirt/swimsuit_green
|
||||
name = "Swimsuit, Top - Green"
|
||||
icon_state = "bra_swimming_green"
|
||||
|
||||
/datum/sprite_accessory/undershirt/swimsuit_purple
|
||||
name = "Swimsuit, Top - Purple"
|
||||
icon_state = "bra_swimming_purple"
|
||||
@@ -0,0 +1,171 @@
|
||||
///////////////////////////
|
||||
// Underwear Definitions //
|
||||
///////////////////////////
|
||||
/datum/sprite_accessory/underwear
|
||||
icon = 'icons/mob/underwear.dmi'
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/underwear/nude
|
||||
name = "Nude"
|
||||
icon_state = null
|
||||
|
||||
/datum/sprite_accessory/underwear/mankini
|
||||
name = "Mankini - Green"
|
||||
icon_state = "mankini_green"
|
||||
|
||||
/datum/sprite_accessory/underwear/male_kinky
|
||||
name = "Jockstrap - White"
|
||||
icon_state = "jockstrap_white"
|
||||
|
||||
/datum/sprite_accessory/underwear/male_white
|
||||
name = "Briefs - White"
|
||||
icon_state = "briefs_white"
|
||||
|
||||
/datum/sprite_accessory/underwear/male_black
|
||||
name = "Briefs - Black"
|
||||
icon_state = "briefs_black"
|
||||
|
||||
/datum/sprite_accessory/underwear/male_grey
|
||||
name = "Briefs - Grey"
|
||||
icon_state = "briefs_grey"
|
||||
|
||||
/datum/sprite_accessory/underwear/male_red
|
||||
name = "Briefs - Red"
|
||||
icon_state = "briefs_red"
|
||||
|
||||
/datum/sprite_accessory/underwear/male_green
|
||||
name = "Briefs - Green"
|
||||
icon_state = "briefs_green"
|
||||
|
||||
/datum/sprite_accessory/underwear/male_blue
|
||||
name = "Briefs - Blue"
|
||||
icon_state = "briefs_blue"
|
||||
|
||||
/datum/sprite_accessory/underwear/male_blackalt
|
||||
name = "Boxers - Black"
|
||||
icon_state = "boxers_black"
|
||||
|
||||
/datum/sprite_accessory/underwear/male_greyalt
|
||||
name = "Boxers - Grey"
|
||||
icon_state = "boxers_grey"
|
||||
|
||||
/datum/sprite_accessory/underwear/male_hearts
|
||||
name = "Boxers - Heart"
|
||||
icon_state = "boxers_heart"
|
||||
|
||||
/datum/sprite_accessory/underwear/male_stripe
|
||||
name = "Boxers - Striped"
|
||||
icon_state = "boxers_striped"
|
||||
|
||||
/datum/sprite_accessory/underwear/male_commie
|
||||
name = "Boxers - Striped Communist"
|
||||
icon_state = "boxers_commie"
|
||||
|
||||
/datum/sprite_accessory/underwear/male_usastripe
|
||||
name = "Boxers - Striped Freedom"
|
||||
icon_state = "boxers_assblastusa"
|
||||
|
||||
/datum/sprite_accessory/underwear/male_uk
|
||||
name = "Boxers - Striped UK"
|
||||
icon_state = "boxers_uk"
|
||||
|
||||
|
||||
/datum/sprite_accessory/underwear/female_whitealt
|
||||
name = "Boxer Briefs - White"
|
||||
icon_state = "boxer_briefs_white"
|
||||
|
||||
/datum/sprite_accessory/underwear/female_blackalt
|
||||
name = "Boxer Briefs - Black"
|
||||
icon_state = "boxer_briefs_black"
|
||||
|
||||
/datum/sprite_accessory/underwear/female_pink
|
||||
name = "Boxer Briefs - Pink"
|
||||
icon_state = "boxer_briefs_pink"
|
||||
|
||||
/datum/sprite_accessory/underwear/female_babyblue
|
||||
name = "Boxer Briefs - Baby Blue"
|
||||
icon_state = "boxer_briefs_babyblue"
|
||||
|
||||
/datum/sprite_accessory/underwear/female_yellow
|
||||
name = "Boxer Briefs - Yellow"
|
||||
icon_state = "boxer_briefs_yellow"
|
||||
|
||||
|
||||
/datum/sprite_accessory/underwear/female_black
|
||||
name = "Panties - Black"
|
||||
icon_state = "panties_black"
|
||||
|
||||
/datum/sprite_accessory/underwear/female_blue
|
||||
name = "Panties - Blue"
|
||||
icon_state = "panties_blue"
|
||||
|
||||
/datum/sprite_accessory/underwear/female_commie
|
||||
name = "Panties - Commie"
|
||||
icon_state = "panties_commie"
|
||||
|
||||
/datum/sprite_accessory/underwear/female_usastripe
|
||||
name = "Panties - Freedom"
|
||||
icon_state = "panties_assblastusa"
|
||||
|
||||
/datum/sprite_accessory/underwear/female_green
|
||||
name = "Panties - Green"
|
||||
icon_state = "panties_green"
|
||||
|
||||
/datum/sprite_accessory/underwear/female_kinky
|
||||
name = "Panties - Kinky Black"
|
||||
icon_state = "panties_kinky"
|
||||
|
||||
/datum/sprite_accessory/underwear/female_red
|
||||
name = "Panties - Red"
|
||||
icon_state = "panties_red"
|
||||
|
||||
/datum/sprite_accessory/underwear/female_uk
|
||||
name = "Panties - UK"
|
||||
icon_state = "panties_uk"
|
||||
|
||||
/datum/sprite_accessory/underwear/female_white
|
||||
name = "Panties - White"
|
||||
icon_state = "panties_white"
|
||||
|
||||
/datum/sprite_accessory/underwear/female_white_neko
|
||||
name = "Panties, Neko - White"
|
||||
icon_state = "panties_neko_white"
|
||||
|
||||
/datum/sprite_accessory/underwear/female_black_neko
|
||||
name = "Panties, Neko - Black"
|
||||
icon_state = "panties_neko_black"
|
||||
|
||||
|
||||
/datum/sprite_accessory/underwear/swimsuit_red
|
||||
name = "Swimsuit, One Piece - Red"
|
||||
icon_state = "swimming_red"
|
||||
|
||||
/datum/sprite_accessory/underwear/swimsuit
|
||||
name = "Swimsuit, One Piece - Black"
|
||||
icon_state = "swimming_black"
|
||||
|
||||
/datum/sprite_accessory/underwear/swimsuit_blue
|
||||
name = "Swimsuit, One Piece - Striped Blue"
|
||||
icon_state = "swimming_blue"
|
||||
|
||||
/datum/sprite_accessory/underwear/swimsuit_green
|
||||
name = "Swimsuit, Bottom - Green"
|
||||
icon_state = "panties_swimming_green"
|
||||
|
||||
/datum/sprite_accessory/underwear/swimsuit_purple
|
||||
name = "Swimsuit, Bottom - Purple"
|
||||
icon_state = "panties_swimming_purple"
|
||||
|
||||
/datum/sprite_accessory/underwear/female_thong_black
|
||||
name = "Thong - Black"
|
||||
icon_state = "thong_black"
|
||||
|
||||
/datum/sprite_accessory/underwear/female_thong
|
||||
name = "Thong - Pink"
|
||||
icon_state = "thong_pink"
|
||||
|
||||
/datum/sprite_accessory/underwear/female_babydoll
|
||||
name = "Babydoll - Black"
|
||||
icon_state = "babydoll"
|
||||
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
/datum/sprite_accessory/wings/none
|
||||
name = "None"
|
||||
icon_state = "none"
|
||||
|
||||
/datum/sprite_accessory/wings_open
|
||||
icon = 'icons/mob/wings.dmi'
|
||||
|
||||
/datum/sprite_accessory/wings_open/angel
|
||||
name = "Angel"
|
||||
icon_state = "angel"
|
||||
color_src = 0
|
||||
dimension_x = 46
|
||||
center = TRUE
|
||||
dimension_y = 34
|
||||
|
||||
/datum/sprite_accessory/wings
|
||||
icon = 'icons/mob/wings.dmi'
|
||||
|
||||
/datum/sprite_accessory/wings/angel
|
||||
name = "Angel"
|
||||
icon_state = "angel"
|
||||
color_src = 0
|
||||
dimension_x = 46
|
||||
center = TRUE
|
||||
dimension_y = 34
|
||||
locked = TRUE
|
||||
@@ -39,6 +39,19 @@
|
||||
restraint_check = TRUE
|
||||
emote_type = EMOTE_AUDIBLE
|
||||
|
||||
/datum/emote/living/carbon/human/mawp
|
||||
key = "mawp"
|
||||
key_third_person = "mawps"
|
||||
message = "mawps annoyingly."
|
||||
emote_type = EMOTE_AUDIBLE
|
||||
|
||||
/datum/emote/living/carbon/human/mawp/run_emote(mob/living/user, params)
|
||||
. = ..()
|
||||
if(.)
|
||||
if(ishuman(user))
|
||||
if(prob(10))
|
||||
user.adjustEarDamage(-5, -5)
|
||||
|
||||
/datum/emote/living/carbon/human/mumble
|
||||
key = "mumble"
|
||||
key_third_person = "mumbles"
|
||||
|
||||
@@ -18,6 +18,16 @@
|
||||
var/list/obscured = check_obscured_slots()
|
||||
var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE))
|
||||
|
||||
if(ishuman(src)) //user just returned, y'know, the user's own species. dumb.
|
||||
var/mob/living/carbon/human/H = src
|
||||
var/datum/species/pref_species = H.dna.species
|
||||
if(get_visible_name() == "Unknown") // same as flavor text, but hey it works.
|
||||
msg += "You can't make out what species they are.\n"
|
||||
else if(skipface)
|
||||
msg += "You can't make out what species they are.\n"
|
||||
else
|
||||
msg += "[t_He] [t_is] a [H.dna.custom_species ? H.dna.custom_species : pref_species.name]!\n"
|
||||
|
||||
//uniform
|
||||
if(w_uniform && !(SLOT_W_UNIFORM in obscured))
|
||||
//accessory
|
||||
|
||||
@@ -50,6 +50,8 @@
|
||||
|
||||
var/nameless = FALSE //For drones of both the insectoid and robotic kind. And other types of nameless critters.
|
||||
|
||||
var/custom_species = null
|
||||
|
||||
var/datum/personal_crafting/handcrafting
|
||||
var/datum/physiology/physiology
|
||||
|
||||
|
||||
@@ -1,9 +1,14 @@
|
||||
/mob/living/carbon/human/say_mod(input, message_mode)
|
||||
verb_say = dna.species.say_mod
|
||||
if(slurring)
|
||||
return "slurs"
|
||||
else
|
||||
. = ..()
|
||||
switch(slurring)
|
||||
if(25 to 50)
|
||||
return "jumbles"
|
||||
if(50 to 75)
|
||||
return "slurs"
|
||||
if(75 to INFINITY)
|
||||
return "garbles"
|
||||
else
|
||||
. = ..()
|
||||
|
||||
/mob/living/carbon/human/treat_message(message)
|
||||
message = dna.species.handle_speech(message,src)
|
||||
|
||||
@@ -532,7 +532,7 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put
|
||||
stuttering = max(stuttering-1, 0)
|
||||
|
||||
if(slurring)
|
||||
slurring = max(slurring-1,0)
|
||||
slurring = max(slurring-1,0,drunkenness)
|
||||
|
||||
if(cultslurring)
|
||||
cultslurring = max(cultslurring-1, 0)
|
||||
@@ -550,16 +550,11 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put
|
||||
drunkenness = max(drunkenness - (drunkenness * 0.04), 0)
|
||||
if(drunkenness >= 6)
|
||||
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "drunk", /datum/mood_event/drunk)
|
||||
if(prob(25))
|
||||
slurring += 2
|
||||
jitteriness = max(jitteriness - 3, 0)
|
||||
if(has_trait(TRAIT_DRUNK_HEALING))
|
||||
adjustBruteLoss(-0.12, FALSE)
|
||||
adjustFireLoss(-0.06, FALSE)
|
||||
|
||||
if(drunkenness >= 11 && slurring < 5)
|
||||
slurring += 1.2
|
||||
|
||||
if(mind && (mind.assigned_role == "Scientist" || mind.assigned_role == "Research Director"))
|
||||
if(SSresearch.science_tech)
|
||||
if(drunkenness >= 12.9 && drunkenness <= 13.8)
|
||||
|
||||
@@ -334,7 +334,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
|
||||
message = stutter(message)
|
||||
|
||||
if(slurring)
|
||||
message = slur(message)
|
||||
message = slur(message,slurring)
|
||||
|
||||
if(cultslurring)
|
||||
message = cultslur(message)
|
||||
|
||||
@@ -345,13 +345,18 @@
|
||||
|
||||
/mob/living/simple_animal/hostile/proc/AttackingTarget()
|
||||
in_melee = TRUE
|
||||
if(isliving(target))
|
||||
var/mob/living/L = target
|
||||
if(L.Adjacent(src) && vore_active && L.devourable) // aggressive check to ensure vore attacks can be made
|
||||
if(prob(voracious_chance))
|
||||
vore_attack(src,L,src)
|
||||
if(vore_active)
|
||||
if(isliving(target))
|
||||
var/mob/living/L = target
|
||||
if(L.Adjacent(src) && L.devourable) // aggressive check to ensure vore attacks can be made
|
||||
if(prob(voracious_chance))
|
||||
vore_attack(src,L,src)
|
||||
else
|
||||
return L.attack_animal(src)
|
||||
else
|
||||
return L.attack_animal(src)
|
||||
return L.attack_animal(src) //literally every single fucking one of these need this I guess.
|
||||
else
|
||||
return target.attack_animal(src)
|
||||
else
|
||||
return target.attack_animal(src)
|
||||
|
||||
|
||||
@@ -187,12 +187,12 @@
|
||||
var/mob/living/carbon/C = L
|
||||
var/obj/item/clothing/S = C.get_item_by_slot(SLOT_WEAR_SUIT)
|
||||
if(S && S.resistance_flags & GOLIATH_RESISTANCE)
|
||||
L.Stun(75)
|
||||
L.Stun(25)
|
||||
else if(S && S.resistance_flags & GOLIATH_WEAKNESS)
|
||||
L.Stun(125)
|
||||
L.Stun(115)
|
||||
else
|
||||
L.Stun(100)
|
||||
L.adjustBruteLoss(rand(10,15))
|
||||
L.Stun(75)
|
||||
L.adjustBruteLoss(rand(15,20)) // Less stun more harm
|
||||
latched = TRUE
|
||||
if(!latched)
|
||||
retract()
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
p++
|
||||
return sanitize(t)
|
||||
|
||||
/proc/slur(n)
|
||||
/proc/slur(n,var/strength=50)
|
||||
var/phrase = html_decode(n)
|
||||
var/leng = lentext(phrase)
|
||||
var/counter=lentext(phrase)
|
||||
@@ -72,7 +72,7 @@
|
||||
var/newletter=""
|
||||
while(counter>=1)
|
||||
newletter=copytext(phrase,(leng-counter)+1,(leng-counter)+2)
|
||||
if(rand(1,3)==3)
|
||||
if(rand(1,100)<=strength)
|
||||
if(lowertext(newletter)=="o")
|
||||
newletter="u"
|
||||
if(lowertext(newletter)=="s")
|
||||
@@ -83,17 +83,17 @@
|
||||
newletter="oo"
|
||||
if(lowertext(newletter)=="c")
|
||||
newletter="k"
|
||||
if(rand(1,20)==20)
|
||||
if(rand(1,100) <= strength*0.5)
|
||||
if(newletter==" ")
|
||||
newletter="...huuuhhh..."
|
||||
if(newletter==".")
|
||||
newletter=" *BURP*."
|
||||
switch(rand(1,20))
|
||||
if(1)
|
||||
if(rand(1,100) <= strength)
|
||||
if(rand(1,5) == 1)
|
||||
newletter+="'"
|
||||
if(10)
|
||||
if(rand(1,5) == 1)
|
||||
newletter+="[newletter]"
|
||||
if(20)
|
||||
if(rand(1,5) == 1)
|
||||
newletter+="[newletter][newletter]"
|
||||
newphrase+="[newletter]";counter-=1
|
||||
return newphrase
|
||||
|
||||
@@ -200,6 +200,10 @@
|
||||
charge = 0
|
||||
update_icon()
|
||||
|
||||
/obj/item/stock_parts/cell/lascarbine
|
||||
name = "laser carbine power supply"
|
||||
maxcharge = 2500
|
||||
|
||||
/obj/item/stock_parts/cell/pulse //200 pulse shots
|
||||
name = "pulse rifle power cell"
|
||||
maxcharge = 40000
|
||||
|
||||
@@ -88,6 +88,9 @@
|
||||
icon_state = "riotshotgun"
|
||||
mag_type = /obj/item/ammo_box/magazine/internal/shot/riot
|
||||
sawn_desc = "Come with me if you want to live."
|
||||
unique_reskin = list("Tatical" = "riotshotgun",
|
||||
"Wood Stock" = "wood_riotshotgun"
|
||||
)
|
||||
|
||||
/obj/item/gun/ballistic/shotgun/riot/attackby(obj/item/A, mob/user, params)
|
||||
..()
|
||||
@@ -200,6 +203,10 @@
|
||||
icon_state = "cshotgun"
|
||||
mag_type = /obj/item/ammo_box/magazine/internal/shot/com
|
||||
w_class = WEIGHT_CLASS_HUGE
|
||||
unique_reskin = list("Tatical" = "cshotgun",
|
||||
"Slick" = "cshotgun_slick"
|
||||
)
|
||||
|
||||
|
||||
/obj/item/gun/ballistic/shotgun/automatic/combat/compact
|
||||
name = "compact combat shotgun"
|
||||
@@ -207,6 +214,10 @@
|
||||
icon_state = "cshotgunc"
|
||||
mag_type = /obj/item/ammo_box/magazine/internal/shot/com/compact
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
unique_reskin = list("Tatical" = "cshotgunc",
|
||||
"Slick" = "cshotgunc_slick"
|
||||
)
|
||||
|
||||
|
||||
//Dual Feed Shotgun
|
||||
|
||||
|
||||
@@ -39,6 +39,21 @@
|
||||
selfcharge = EGUN_SELFCHARGE
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
||||
|
||||
/obj/item/gun/energy/laser/carbine
|
||||
name = "laser carbine"
|
||||
desc = "A ruggedized laser carbine featuring much higher capacity and improved handling when compared to a normal laser gun."
|
||||
icon = 'icons/obj/guns/energy.dmi'
|
||||
icon_state = "lasernew"
|
||||
item_state = "laser"
|
||||
force = 10
|
||||
throwforce = 10
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/lasergun)
|
||||
cell_type = /obj/item/stock_parts/cell/lascarbine
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
|
||||
/obj/item/gun/energy/laser/carbine/nopin
|
||||
pin = null
|
||||
|
||||
/obj/item/gun/energy/laser/captain/scattershot
|
||||
name = "scatter shot laser rifle"
|
||||
icon_state = "lasercannon"
|
||||
|
||||
@@ -1277,8 +1277,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
if(!M.has_trait(TRAIT_ALCOHOL_TOLERANCE))
|
||||
M.confused = max(M.confused+2,0)
|
||||
M.Dizzy(10)
|
||||
if (!M.slurring)
|
||||
M.slurring = 1
|
||||
M.slurring = max(M.slurring,50)
|
||||
M.slurring += 3
|
||||
switch(current_cycle)
|
||||
if(51 to 200)
|
||||
@@ -1306,8 +1305,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
M.dizziness +=1.5
|
||||
switch(current_cycle)
|
||||
if(15 to 45)
|
||||
if(!M.slurring)
|
||||
M.slurring = 1
|
||||
M.slurring = max(M.slurring,50)
|
||||
M.slurring += 3
|
||||
if(45 to 55)
|
||||
if(prob(50))
|
||||
@@ -1336,8 +1334,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
M.dizziness +=2
|
||||
switch(current_cycle)
|
||||
if(15 to 45)
|
||||
if(!M.slurring)
|
||||
M.slurring = 1
|
||||
M.slurring = max(M.slurring,50)
|
||||
M.slurring += 3
|
||||
if(45 to 55)
|
||||
if(prob(50))
|
||||
@@ -1364,8 +1361,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
glass_desc = "A drink enjoyed by people during the 1960's."
|
||||
|
||||
/datum/reagent/consumable/ethanol/hippies_delight/on_mob_life(mob/living/carbon/M)
|
||||
if (!M.slurring)
|
||||
M.slurring = 1
|
||||
M.slurring = max(M.slurring,50)
|
||||
switch(current_cycle)
|
||||
if(1 to 5)
|
||||
M.Dizzy(10)
|
||||
|
||||
@@ -402,8 +402,7 @@
|
||||
taste_description = "mushroom"
|
||||
|
||||
/datum/reagent/mushroomhallucinogen/on_mob_life(mob/living/carbon/M)
|
||||
if(!M.slurring)
|
||||
M.slurring = 1
|
||||
M.slurring = max(M.slurring,50)
|
||||
switch(current_cycle)
|
||||
if(1 to 5)
|
||||
M.Dizzy(5)
|
||||
|
||||
@@ -1912,3 +1912,20 @@
|
||||
description = "The primary precursor for an ancient feline delicacy known as skooma. While it has no notable effects on it's own, mixing it with morphine in a chilled container may yield interesting results."
|
||||
color = "#FAEAFF"
|
||||
taste_description = "synthetic catnip"
|
||||
|
||||
/datum/reagent/penis_enlargement
|
||||
name = "Penis Enlargement"
|
||||
id = "penis_enlargement"
|
||||
description = "A patented chemical forumula by Doctor Ronald Hyatt that is guaranteed to bring maximum GROWTH and LENGTH to your penis, today!"
|
||||
color = "#888888"
|
||||
taste_description = "chinese dragon powder"
|
||||
metabolization_rate = INFINITY //So it instantly removes all of itself. Don't want to put strain on the system.
|
||||
|
||||
/datum/reagent/penis_enlargement/on_mob_life(mob/living/carbon/C)
|
||||
var/obj/item/organ/genital/penis/P = C.getorganslot(ORGAN_SLOT_PENIS)
|
||||
if(P)
|
||||
var/added_length = round(volume/30,0.01) //Every 30u gives an extra inch. Rounded to the nearest 0.01 so float fuckery doesn't occur with the division by 30.
|
||||
if(added_length >= 0.20) //Only add the length if it's greater than or equal to 0.2. This is to prevent people from smoking the reagents and causing the penis to update constantly.
|
||||
P.length += added_length
|
||||
P.update()
|
||||
..()
|
||||
@@ -233,3 +233,7 @@
|
||||
|
||||
/obj/item/reagent_containers/pill/get_belt_overlay()
|
||||
return mutable_appearance('icons/obj/clothing/belt_overlays.dmi', "pouch")
|
||||
|
||||
/obj/item/reagent_containers/pill/penis_enlargement
|
||||
name = "penis enlargement pill"
|
||||
list_reagents = list("penis_enlargement" = 30)
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
/////////////////////////////////////////
|
||||
/////////////////Weapons/////////////////
|
||||
/////////////////////////////////////////
|
||||
///////////////////////////////
|
||||
///////Weapons & Ammo//////////
|
||||
///////////////////////////////
|
||||
|
||||
//////////////
|
||||
//Ammo Boxes//
|
||||
//////////////
|
||||
|
||||
/datum/design/c38/sec
|
||||
id = "sec_38"
|
||||
@@ -13,6 +17,40 @@
|
||||
id = "sec_38lethal"
|
||||
build_path = /obj/item/ammo_box/c38/lethal
|
||||
|
||||
//////////////
|
||||
//WT550 Mags//
|
||||
//////////////
|
||||
|
||||
/datum/design/mag_oldsmg
|
||||
name = "WT-550 Semi-Auto SMG Magazine (4.6x30mm)"
|
||||
desc = "A 20 round magazine for the out of date security WT-550 Semi-Auto SMG."
|
||||
id = "mag_oldsmg"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4000)
|
||||
build_path = /obj/item/ammo_box/magazine/wt550m9
|
||||
category = list("Ammo")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/mag_oldsmg/ap_mag
|
||||
name = "WT-550 Semi-Auto SMG Armour Piercing Magazine (4.6x30mm AP)"
|
||||
desc = "A 20 round armour piercing magazine for the out of date security WT-550 Semi-Auto SMG."
|
||||
id = "mag_oldsmg_ap"
|
||||
materials = list(MAT_METAL = 6000, MAT_SILVER = 600)
|
||||
build_path = /obj/item/ammo_box/magazine/wt550m9/wtap
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/mag_oldsmg/ic_mag
|
||||
name = "WT-550 Semi-Auto SMG Incendiary Magazine (4.6x30mm IC)"
|
||||
desc = "A 20 round armour piercing magazine for the out of date security WT-550 Semi-Auto SMG."
|
||||
id = "mag_oldsmg_ic"
|
||||
materials = list(MAT_METAL = 6000, MAT_SILVER = 600, MAT_GLASS = 1000)
|
||||
build_path = /obj/item/ammo_box/magazine/wt550m9/wtic
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
//////////////
|
||||
//Ammo Shells/
|
||||
//////////////
|
||||
|
||||
/datum/design/rubbershot/sec
|
||||
id = "sec_rshot"
|
||||
build_type = PROTOLATHE
|
||||
@@ -43,6 +81,40 @@
|
||||
category = list("Ammo")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/stunshell
|
||||
name = "Stun Shell"
|
||||
desc = "A stunning shell for a shotgun."
|
||||
id = "stunshell"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200)
|
||||
build_path = /obj/item/ammo_casing/shotgun/stunslug
|
||||
category = list("Ammo")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/techshell
|
||||
name = "Unloaded Technological Shotshell"
|
||||
desc = "A high-tech shotgun shell which can be loaded with materials to produce unique effects."
|
||||
id = "techshotshell"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = 200)
|
||||
build_path = /obj/item/ammo_casing/shotgun/techshell
|
||||
category = list("Ammo")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/cryostatis_shotgun_dart
|
||||
name = "Cryostasis Shotgun Dart"
|
||||
desc = "A shotgun dart designed with similar internals to that of a cryostatis beaker, allowing reagents to not react when inside."
|
||||
id = "shotgundartcryostatis"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3500)
|
||||
build_path = /obj/item/ammo_casing/shotgun/dart/noreact
|
||||
category = list("Ammo")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
//////////////
|
||||
//Firing Pins/
|
||||
//////////////
|
||||
|
||||
/datum/design/pin_testing
|
||||
name = "Test-Range Firing Pin"
|
||||
desc = "This safety firing pin allows firearms to be operated within proximity to a firing range."
|
||||
@@ -63,6 +135,20 @@
|
||||
category = list("Firing Pins")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
//////////////
|
||||
//Guns////////
|
||||
//////////////
|
||||
|
||||
/datum/design/lasercarbine
|
||||
name = "Laser Carbine"
|
||||
desc = "Beefed up version of a standard laser gun."
|
||||
id = "lasercarbine"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 15000, MAT_GLASS = 10000, MAT_GOLD = 2500, MAT_SILVER = 2500)
|
||||
build_path = /obj/item/gun/energy/laser/carbine/nopin
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/stunrevolver
|
||||
name = "Tesla Revolver"
|
||||
desc = "A high-tech revolver that fires internal, reusable shock cartridges in a revolving cylinder. The cartridges can be recharged using conventional rechargers."
|
||||
@@ -83,16 +169,6 @@
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/tele_shield
|
||||
name = "Telescopic Riot Shield"
|
||||
desc = "An advanced riot shield made of lightweight materials that collapses for easy storage."
|
||||
id = "tele_shield"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4000, MAT_GLASS = 4000, MAT_SILVER = 300, MAT_TITANIUM = 200)
|
||||
build_path = /obj/item/shield/riot/tele
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/beamrifle
|
||||
name = "Beam Marksman Rifle"
|
||||
desc = "A powerful long ranged anti-material rifle that fires charged particle beams to obliterate targets."
|
||||
@@ -122,11 +198,11 @@
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 1000)
|
||||
build_path = /obj/item/gun/syringe/rapidsyringe
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL //uwu
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/temp_gun
|
||||
name = "Temperature Gun"
|
||||
desc = "A gun that shoots temperature bullet energythings to change temperature."//Change it if you want
|
||||
desc = "A gun that shoots temperature beam like projectiles to change temperature."
|
||||
id = "temp_gun"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 500, MAT_SILVER = 3000)
|
||||
@@ -145,46 +221,6 @@
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
|
||||
/datum/design/large_grenade
|
||||
name = "Large Grenade"
|
||||
desc = "A grenade that affects a larger area and use larger containers."
|
||||
id = "large_Grenade"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000)
|
||||
build_path = /obj/item/grenade/chem_grenade/large
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE //Citadel edit added to science
|
||||
|
||||
/datum/design/pyro_grenade
|
||||
name = "Pyro Grenade"
|
||||
desc = "An advanced grenade that is able to self ignite its mixture."
|
||||
id = "pyro_Grenade"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_PLASMA = 500)
|
||||
build_path = /obj/item/grenade/chem_grenade/pyro
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/cryo_grenade
|
||||
name = "Cryo Grenade"
|
||||
desc = "An advanced grenade that rapidly cools its contents upon detonation."
|
||||
id = "cryo_Grenade"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_SILVER = 500)
|
||||
build_path = /obj/item/grenade/chem_grenade/cryo
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/adv_grenade
|
||||
name = "Advanced Release Grenade"
|
||||
desc = "An advanced grenade that can be detonated several times, best used with a repeating igniter."
|
||||
id = "adv_Grenade"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000, MAT_GLASS = 500)
|
||||
build_path = /obj/item/grenade/chem_grenade/adv_release
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/xray
|
||||
name = "X-ray Laser Gun"
|
||||
desc = "Not quite as menacing as it sounds"
|
||||
@@ -215,64 +251,6 @@
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
//WT550 Mags
|
||||
|
||||
/datum/design/mag_oldsmg
|
||||
name = "WT-550 Semi-Auto SMG Magazine (4.6x30mm)"
|
||||
desc = "A 20 round magazine for the out of date security WT-550 Semi-Auto SMG."
|
||||
id = "mag_oldsmg"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4000)
|
||||
build_path = /obj/item/ammo_box/magazine/wt550m9
|
||||
category = list("Ammo")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/mag_oldsmg/ap_mag
|
||||
name = "WT-550 Semi-Auto SMG Armour Piercing Magazine (4.6x30mm AP)"
|
||||
desc = "A 20 round armour piercing magazine for the out of date security WT-550 Semi-Auto SMG."
|
||||
id = "mag_oldsmg_ap"
|
||||
materials = list(MAT_METAL = 6000, MAT_SILVER = 600)
|
||||
build_path = /obj/item/ammo_box/magazine/wt550m9/wtap
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/mag_oldsmg/ic_mag
|
||||
name = "WT-550 Semi-Auto SMG Incendiary Magazine (4.6x30mm IC)"
|
||||
desc = "A 20 round armour piercing magazine for the out of date security WT-550 Semi-Auto SMG."
|
||||
id = "mag_oldsmg_ic"
|
||||
materials = list(MAT_METAL = 6000, MAT_SILVER = 600, MAT_GLASS = 1000)
|
||||
build_path = /obj/item/ammo_box/magazine/wt550m9/wtic
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/stunshell
|
||||
name = "Stun Shell"
|
||||
desc = "A stunning shell for a shotgun."
|
||||
id = "stunshell"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200)
|
||||
build_path = /obj/item/ammo_casing/shotgun/stunslug
|
||||
category = list("Ammo")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/techshell
|
||||
name = "Unloaded Technological Shotshell"
|
||||
desc = "A high-tech shotgun shell which can be loaded with materials to produce unique effects."
|
||||
id = "techshotshell"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = 200)
|
||||
build_path = /obj/item/ammo_casing/shotgun/techshell
|
||||
category = list("Ammo")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/suppressor
|
||||
name = "Universal Suppressor"
|
||||
desc = "A reverse-engineered universal suppressor that fits on most small arms with threaded barrels."
|
||||
id = "suppressor"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_SILVER = 500)
|
||||
build_path = /obj/item/suppressor
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/gravitygun
|
||||
name = "One-point Bluespace-gravitational Manipulator"
|
||||
desc = "A multi-mode device that blasts one-point bluespace-gravitational bolts that locally distort gravity."
|
||||
@@ -293,12 +271,70 @@
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/cryostatis_shotgun_dart
|
||||
name = "Cryostasis Shotgun Dart"
|
||||
desc = "A shotgun dart designed with similar internals to that of a cryostatis beaker, allowing reagents to not react when inside."
|
||||
id = "shotgundartcryostatis"
|
||||
///////////
|
||||
//Grenades/
|
||||
///////////
|
||||
|
||||
/datum/design/large_grenade
|
||||
name = "Large Grenade"
|
||||
desc = "A grenade that affects a larger area and use larger containers."
|
||||
id = "large_Grenade"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3500)
|
||||
build_path = /obj/item/ammo_casing/shotgun/dart/noreact
|
||||
category = list("Ammo")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
materials = list(MAT_METAL = 3000)
|
||||
build_path = /obj/item/grenade/chem_grenade/large
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/pyro_grenade
|
||||
name = "Pyro Grenade"
|
||||
desc = "An advanced grenade that is able to self ignite its mixture."
|
||||
id = "pyro_Grenade"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_PLASMA = 500)
|
||||
build_path = /obj/item/grenade/chem_grenade/pyro
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/cryo_grenade
|
||||
name = "Cryo Grenade"
|
||||
desc = "An advanced grenade that rapidly cools its contents upon detonation."
|
||||
id = "cryo_Grenade"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_SILVER = 500)
|
||||
build_path = /obj/item/grenade/chem_grenade/cryo
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/adv_grenade
|
||||
name = "Advanced Release Grenade"
|
||||
desc = "An advanced grenade that can be detonated several times, best used with a repeating igniter."
|
||||
id = "adv_Grenade"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000, MAT_GLASS = 500)
|
||||
build_path = /obj/item/grenade/chem_grenade/adv_release
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
//////////
|
||||
//MISC////
|
||||
//////////
|
||||
|
||||
/datum/design/tele_shield
|
||||
name = "Telescopic Riot Shield"
|
||||
desc = "An advanced riot shield made of lightweight materials that collapses for easy storage."
|
||||
id = "tele_shield"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4000, MAT_GLASS = 4000, MAT_SILVER = 300, MAT_TITANIUM = 200)
|
||||
build_path = /obj/item/shield/riot/tele
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/suppressor
|
||||
name = "Universal Suppressor"
|
||||
desc = "A reverse-engineered universal suppressor that fits on most small arms with threaded barrels."
|
||||
id = "suppressor"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_SILVER = 500)
|
||||
build_path = /obj/item/suppressor
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
@@ -564,7 +564,7 @@
|
||||
display_name = "Weapon Development Technology"
|
||||
description = "Our researchers have found new to weaponize just about everything now."
|
||||
prereq_ids = list("engineering")
|
||||
design_ids = list("pin_testing", "tele_shield")
|
||||
design_ids = list("pin_testing", "tele_shield", "lasercarbine")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 7500)
|
||||
export_price = 5000
|
||||
|
||||
@@ -963,7 +963,7 @@
|
||||
prereq_ids = list("biotech","engineering")
|
||||
boost_item_paths = list(/obj/item/gun/energy/alien, /obj/item/scalpel/alien, /obj/item/hemostat/alien, /obj/item/retractor/alien, /obj/item/circular_saw/alien,
|
||||
/obj/item/cautery/alien, /obj/item/surgicaldrill/alien, /obj/item/screwdriver/abductor, /obj/item/wrench/abductor, /obj/item/crowbar/abductor, /obj/item/multitool/abductor,
|
||||
/obj/item/weldingtool/abductor, /obj/item/wirecutters/abductor, /obj/item/circuitboard/machine/abductor, /obj/item/abductor_baton, /obj/item/abductor)
|
||||
/obj/item/weldingtool/abductor, /obj/item/wirecutters/abductor, /obj/item/circuitboard/machine/abductor, /obj/item/abductor_baton, /obj/item/abductor, /obj/item/stack/sheet/mineral/abductor)
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
|
||||
export_price = 20000
|
||||
hidden = TRUE
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
/obj/item/reagent_containers/food/condiment/pack/hotsauce = 5,
|
||||
/obj/item/reagent_containers/food/condiment/saltshaker = 5,
|
||||
/obj/item/reagent_containers/food/condiment/peppermill = 5,
|
||||
/obj/item/reagent_containers/glass/bowl = 20)
|
||||
/obj/item/reagent_containers/glass/bowl = 30)
|
||||
contraband = list(/obj/item/kitchen/rollingpin = 2,
|
||||
/obj/item/kitchen/knife/butcher = 2)
|
||||
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "deathride58"
|
||||
delete-after: True
|
||||
changes:
|
||||
- code_imp: "get_hearers_in_view() now actually caches the results of view() instead of calling view() twice"
|
||||
@@ -0,0 +1,5 @@
|
||||
author: "Poojawa"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Added custom species names! Examining people will now display their species name unless they're an Unknown or have their face hidden. like flavor text. Set it in your character window!"
|
||||
- code_imp: "changed how health scanners print messages, wrapping it in msg for one to_chat instead of printing every line to_chat."
|
||||
@@ -0,0 +1,6 @@
|
||||
author: "BurgerBB"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Adds the bonermeter; a device that measures arousal based statistics."
|
||||
- refactor: "Added a new input to the electrostimulator that controls the strength of the shock. It accepts negative inputs which reduce arousal. Added a new output to the electrostimulator that displays the amount of arousal gained."
|
||||
- balance: "Rebalanced the electro-stimulator to be less spammy by giving it a 2.5 second enforced cooldown per circuit contraption. Increased the complexity of electro stimulator from 10 to 15."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "BurgerB"
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "Tweaked the UI of the loadout to be less cluttered due to an issue with formatting."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "BurgerBB"
|
||||
delete-after: True
|
||||
changes:
|
||||
- refactor: "Reworked the Vent Clog event to spray smoke instead of foam, also made it shoot smoke over time instead through each vent instead of all at once."
|
||||
@@ -0,0 +1,5 @@
|
||||
author: "deathride58"
|
||||
delete-after: True
|
||||
changes:
|
||||
- balance: "Locomotion circuits are now restricted to jogging speed"
|
||||
- balance: "MMI circuits and pAI circuits both now have 60 complexity, up from their original 29."
|
||||
@@ -0,0 +1,5 @@
|
||||
author: "Trilbyspaceclone"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "cakes!"
|
||||
- imageadd: "Made some sprites! -Love them really came out well"
|
||||
@@ -0,0 +1,7 @@
|
||||
author: "Trilbyspaceclone"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "new economics"
|
||||
- tweak: "cargo and robotics relationships"
|
||||
- balance: "unbalanced something"
|
||||
- bugfix: "fixed a maybe oversight"
|
||||
@@ -0,0 +1,7 @@
|
||||
author: "Trilbyspaceclone"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscdel: "Fun"
|
||||
- tweak: "costs of suit voucher"
|
||||
- balance: "Unblances miner vender"
|
||||
- bugfix: "spare cheaper brute kit"
|
||||
@@ -0,0 +1,5 @@
|
||||
author: "Trilbyspaceclone"
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "harm from hentie"
|
||||
- balance: "rebalanced goliaths stun to be less auto death"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "BurgerBB"
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "Increased the spawn area of the City of Cogs (Reebe). This does not affect the area in which builders can build."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "BurgerBB"
|
||||
delete-after: True
|
||||
changes:
|
||||
- balance: "Significantly tweaks the Wizard race transformation event to be less unreasonably troublesome."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Trilbyspaceclone"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "restores the deathriplys missing armor"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "BurgerBB"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Adds a new 0 cost trait that makes you immune* to Crocin and Hexacrocin"
|
||||
@@ -0,0 +1,5 @@
|
||||
author: "BurgerBB"
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "Tweaks how slurring works so it's more of a gradual change into slurring instead of immediate."
|
||||
- balance: "Slurring is now directly proportional to your drunkenness, with other sources of slur being added on top of it."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Trilbyspaceclone"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "new lockable colalr"
|
||||
@@ -0,0 +1,7 @@
|
||||
author: "BurgerBB"
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "Bras are now separate from underwear, meaning you can mix and match bras if you're into that."
|
||||
- tweak: "Men can wear female accessory clothing, and females can wear men accessory clothing. It's not a fetish, mom, it's PROGRESSIVE."
|
||||
- code_imp: "Reorganized accessories into their own files to prevent a massive 1000 line file."
|
||||
- server: "i'm 10% sure that merging this PR will cause preference corruption sooooooooooo I just need to hear from @deathride58 or perhaps someone else on how much damage this could possibly do."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Trilbyspaceclone"
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "armor"
|
||||
@@ -0,0 +1,5 @@
|
||||
author: "Trilbyspaceclone"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "missing hopes and dreams"
|
||||
- code_imp: "orgized the weapon file to be more cat brain friendly"
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user