Revert "Merge branch 'master' into fairylights"

This reverts commit 2947727659, reversing
changes made to 91063fe882.
This commit is contained in:
Dahlular
2022-07-09 04:55:33 -06:00
parent eb22b66720
commit e51460cb5d
123 changed files with 2065 additions and 3633 deletions
-3
View File
@@ -58,15 +58,12 @@
reward = 3000
wanted_types = list(/obj/item/organ/tail/cat)
/*
/datum/bounty/item/medical/blood
name = "Generic Blood"
description = "The Kinaris annual blood drive is back up to full speed, following the garlic incident. Good blood in good volumes accepted for Credit returns."
reward = 3500
required_count = 600
wanted_types = list(/datum/reagent/blood)
*/
/* If anyone wants to try and fix/work, go for it
/datum/bounty/item/medical/medibot // Mob so this dosn't work yet*
+1 -12
View File
@@ -105,6 +105,7 @@ datum/bounty/reagent/complex_drink/New()
/datum/reagent/consumable/ethanol/hearty_punch,\
/datum/reagent/consumable/ethanol/manhattan_proj,\
/datum/reagent/consumable/ethanol/narsour,\
/datum/reagent/consumable/ethanol/neurotoxin,\
/datum/reagent/consumable/ethanol/patron,\
/datum/reagent/consumable/ethanol/quadruple_sec,\
/datum/reagent/consumable/ethanol/quintuple_sec,\
@@ -169,15 +170,3 @@ datum/bounty/reagent/chemical/New()
description = "CentCom is in desperate need of the chemical [name]. Ship a container of it to be rewarded."
reward += rand(0, 4) * 500
/datum/bounty/reagent/blood
name = "Blood Drive"
reward = 3500
required_volume = 600
/datum/bounty/reagent/blood/New()
var/reagent_type = /datum/reagent/blood
wanted_reagent = new reagent_type
name = wanted_reagent.name
description = "The Kinaris annual blood drive is back up to full speed, following the garlic incident. Good blood in good volumes accepted for Credit returns."
reward += rand(0, 2) * 300
+2 -5
View File
@@ -75,7 +75,7 @@ GLOBAL_LIST_EMPTY(bounties_list)
// Returns a new bounty of random type, but does not add it to GLOB.bounties_list.
/proc/random_bounty()
switch(rand(1, 15))
switch(rand(1, 14))
if(1)
var/subtype = pick(subtypesof(/datum/bounty/item/assistant))
return new subtype
@@ -118,8 +118,6 @@ GLOBAL_LIST_EMPTY(bounties_list)
if(14)
var/subtype = pick(subtypesof(/datum/bounty/lewd))
return new subtype
if(15)
return new /datum/bounty/reagent/blood
// Called lazily at startup to populate GLOB.bounties_list with random bounties.
/proc/setup_bounties()
@@ -146,8 +144,7 @@ GLOBAL_LIST_EMPTY(bounties_list)
/********************************Strict Type Gens********************************/
var/list/easy_add_list_strict_types = list(/datum/bounty/reagent/simple_drink = 1,
/datum/bounty/reagent/complex_drink = 1,
/datum/bounty/reagent/chemical = 1,
/datum/bounty/reagent/blood = 1)
/datum/bounty/reagent/chemical = 1)
for(var/the_strict_type in easy_add_list_strict_types)
for(var/i in 1 to easy_add_list_strict_types[the_strict_type])
+9 -142
View File
@@ -108,6 +108,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/roleplayroles = FALSE //for the roleplay roles
var/importantroles = FALSE //for things that define as important.
var/datum/species/pref_species = new /datum/species/human() //Mutant race
var/list/features = list("mcolor" = "FFF",
"tail_lizard" = "Smooth",
@@ -195,14 +196,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
"flavor_text" = "",
"silicon_flavor_text" = "",
"ooc_text" = "",
"front_genitals_over_hair" = FALSE,
"cosmetic_head" = /datum/cosmetic_part/head/default,
"cosmetic_chest" = /datum/cosmetic_part/chest/default,
"cosmetic_l_arm" = /datum/cosmetic_part/arms/default,
"cosmetic_r_arm" = /datum/cosmetic_part/arms/default,
"cosmetic_l_leg" = /datum/cosmetic_part/legs/default,
"cosmetic_r_leg" = /datum/cosmetic_part/legs/default,
"cosmetic_markings" = FALSE
"front_genitals_over_hair" = FALSE
)
/// Security record note section
@@ -277,6 +271,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
/datum/preferences/New(client/C)
parent = C
clientfps = world.fps*2
for(var/custom_name_id in GLOB.preferences_custom_names)
custom_names[custom_name_id] = get_default_name(custom_name_id)
@@ -444,7 +439,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
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>Select background:</b><a style='display:block;width:100px' href='?_src_=prefs;preference=select_bg;task=input'>[bgstate]</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>"
dat += "<b>Render front genitals over hair:</b><a href='?_src_=prefs;task=front_genitals_over_hair'>[features["front_genitals_over_hair"] ? "Yes" : "No"]</A><BR>"
var/use_skintones = pref_species.use_skintones
@@ -829,55 +824,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
mutant_category = 0
dat += "</tr></table>"
dat += "</td>"
// HYPER EDIT: Cosmetic body parts
var/datum/cosmetic_part/cosmetic_head = features["cosmetic_head"]
var/datum/cosmetic_part/cosmetic_chest = features["cosmetic_chest"]
var/datum/cosmetic_part/cosmetic_arms = features["cosmetic_l_arm"]
var/datum/cosmetic_part/cosmetic_legs = features["cosmetic_l_leg"]
dat += "<div style='width:100%;display:block;'>"
dat += "<h2>Cosmetic Parts</h2>"
dat += "<b>Use markings on cosmetic parts?</b> "
dat += "<a href='?_src_=prefs;preference=cosmetic_markings'>[features["cosmetic_markings"] ? "Yes" : "No"]</a>"
dat += "<div style='display:flex; align-items:stretch; justify-content:space-around;'>"
dat += "<div style='flex: 1 1 0;'>"
dat += "<h3 style='text-align:center;'>Head</h3>"
dat += "<a style='display:block; width:100px'"
dat += "href='?_src_=prefs;preference=cosmetic_head;task=input'>"
dat += cosmetic_head.name
dat += "</a>"
dat += "</div>"
dat += "<div style='flex: 1 1 0;'>"
dat += "<h3 style='text-align:center;'>Chest</h3>"
dat += "<a style='display:block; width:100px'"
dat += "href='?_src_=prefs;preference=cosmetic_chest;task=input'>"
dat += cosmetic_chest.name
dat += "</a>"
dat += "</div>"
dat += "<div style='flex: 1 1 0;'>"
dat += "<h3 style='text-align:center;'>Arms</h3>"
dat += "<a style='display:block; width:100px'"
dat += "href='?_src_=prefs;preference=cosmetic_arms;task=input'>"
dat += cosmetic_arms.name
dat += "</a>"
dat += "</div>"
dat += "<div style='flex: 1 1 0;'>"
dat += "<h3 style='text-align:center;'>Legs</h3>"
dat += "<a style='display:block; width:100px'"
dat += "href='?_src_=prefs;preference=cosmetic_legs;task=input'>"
dat += cosmetic_legs.name
dat += "</a>"
dat += "</div>"
dat += "</div>"
dat += "</div>"
// End hyper edit
dat += "<table><tr><td width='340px' height='300px' valign='top'>"
dat += "<h2>Clothing & Equipment</h2>"
dat += "<b>Underwear:</b><a style='display:block;width:100px' href ='?_src_=prefs;preference=underwear;task=input'>[underwear]</a>"
@@ -1955,10 +1903,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
grad_style = previous_list_item(grad_style, GLOB.hair_gradients_list)
if("select_bg")
var/new_bg = input(user, "Select a background:", "Character Preference") as null|anything in bgstate_options
if(new_bg)
bgstate = new_bg
if("cycle_bg")
bgstate = next_list_item(bgstate, bgstate_options)
if("underwear")
var/new_underwear = input(user, "Choose your character's underwear:", "Character Preference") as null|anything in GLOB.underwear_list
@@ -2347,81 +2293,6 @@ GLOBAL_LIST_EMPTY(preferences_datums)
new_dors = input(user, "Choose your character's dorsal tube type:", "Character Preference") as null|anything in GLOB.xeno_dorsal_list
if(new_dors)
features["xenodorsal"] = new_dors
// HYPER EDIT: Cosmetic body parts
if("cosmetic_head")
var/list/selectable_parts = list()
for(var/path in GLOB.cosmetic_heads)
var/datum/cosmetic_part/possible_part = GLOB.cosmetic_heads[path]
var/list/supported_species = possible_part.supported_species
if(!show_mismatched_markings && supported_species && !supported_species.Find(pref_species.id))
continue
selectable_parts[possible_part.name] = path
if(!selectable_parts.len)
to_chat(user, "<span class='warning'>There are no valid alt heads for this species!</span>")
var/new_cosmetic_part
var/question = "Choose your character's alt head style:"
new_cosmetic_part = input(user, question, "Character Preference") as null|anything in selectable_parts
if(new_cosmetic_part)
features["cosmetic_head"] = GLOB.cosmetic_heads[selectable_parts[new_cosmetic_part]]
update_preview_icon()
if("cosmetic_chest")
var/list/selectable_parts = list()
for(var/path in GLOB.cosmetic_chests)
var/datum/cosmetic_part/possible_part = GLOB.cosmetic_chests[path]
var/list/supported_species = possible_part.supported_species
if(!show_mismatched_markings && supported_species && !supported_species.Find(pref_species.id))
continue
selectable_parts[possible_part.name] = path
if(!selectable_parts.len)
to_chat(user, "<span class='warning'>There are no valid alt chests for this species!</span>")
var/new_cosmetic_part
var/question = "Choose your character's alt chest style:"
new_cosmetic_part = input(user, question, "Character Preference") as null|anything in selectable_parts
if(new_cosmetic_part)
features["cosmetic_chest"] = GLOB.cosmetic_chests[selectable_parts[new_cosmetic_part]]
update_preview_icon()
// currently symmetrical
if("cosmetic_arms")
var/list/selectable_parts = list()
for(var/path in GLOB.cosmetic_arms)
var/datum/cosmetic_part/possible_part = GLOB.cosmetic_arms[path]
var/list/supported_species = possible_part.supported_species
if(!show_mismatched_markings && supported_species && !supported_species.Find(pref_species.id))
continue
selectable_parts[possible_part.name] = path
if(!selectable_parts.len)
to_chat(user, "<span class='warning'>There are no valid alt arms for this species!</span>")
var/new_cosmetic_part
var/question = "Choose your character's alt arms style:"
new_cosmetic_part = input(user, question, "Character Preference") as null|anything in selectable_parts
if(new_cosmetic_part)
features["cosmetic_l_arm"] = GLOB.cosmetic_arms[selectable_parts[new_cosmetic_part]]
features["cosmetic_r_arm"] = GLOB.cosmetic_arms[selectable_parts[new_cosmetic_part]]
update_preview_icon()
if("cosmetic_legs")
var/list/selectable_parts = list()
for(var/path in GLOB.cosmetic_legs)
var/datum/cosmetic_part/possible_part = GLOB.cosmetic_legs[path]
var/list/supported_species = possible_part.supported_species
if(!show_mismatched_markings && supported_species && !supported_species.Find(pref_species.id))
continue
selectable_parts[possible_part.name] = path
if(!selectable_parts.len)
to_chat(user, "<span class='warning'>There are no valid alt legs for this species!</span>")
var/new_cosmetic_part
var/question = "Choose your character's alt legs style:"
new_cosmetic_part = input(user, question, "Character Preference") as null|anything in selectable_parts
if(new_cosmetic_part)
features["cosmetic_l_leg"] = GLOB.cosmetic_legs[selectable_parts[new_cosmetic_part]]
features["cosmetic_r_leg"] = GLOB.cosmetic_legs[selectable_parts[new_cosmetic_part]]
update_preview_icon()
// End hyper edit
//Genital code
if("cock_color")
var/new_cockcolor = input(user, "Penis color:", "Character Preference") as color|null
@@ -2569,10 +2440,9 @@ GLOBAL_LIST_EMPTY(preferences_datums)
features["belly_size"] = clamp(new_bellysize, BELLY_MIN_SIZE, BELLY_MAX_SIZE)
if("butt_size")
var/new_buttsize = input(user, "Butt size :\n([BUTT_MIN_SIZE]-[BUTT_MAX_SIZE_SELECTABLE])", "Character Preference") as num|null
var/new_buttsize = input(user, "Butt size :\n([BUTT_MIN_SIZE]-[BUTT_MAX_SIZE])", "Character Preference") as num|null
if(new_buttsize != null)
features["butt_size"] = clamp(new_buttsize, BUTT_MIN_SIZE, BUTT_MAX_SIZE_SELECTABLE)
//Restricted to 5 in menu, because we have chems to make them big IC, like with breasts and what not.
features["butt_size"] = clamp(new_buttsize, BUTT_MIN_SIZE, BUTT_MAX_SIZE)
if("vag_shape")
var/new_shape
@@ -2822,9 +2692,6 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if("all")
be_random_body = !be_random_body
if("cosmetic_markings")
features["cosmetic_markings"] = !features["cosmetic_markings"]
if("hear_midis")
toggles ^= SOUND_MIDI
@@ -576,7 +576,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
all_quirks -= V
cit_character_pref_load(S)
hyper_character_pref_load(S)
return 1
@@ -672,7 +671,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
WRITE_FILE(S["all_quirks"] , all_quirks)
cit_character_pref_save(S)
hyper_character_pref_save(S)
return 1
@@ -28,6 +28,46 @@
allowed = list (/obj/item/gun/energy/laser/redtag)
resistance_flags = NONE
/*
* Posshim's Corpus atire
*/
/obj/item/clothing/suit/hooded/corpus/
name = "Standard Voidsuit"
desc = "Standard issue voidsuit in the name of Grofit!"
icon_state = "corpus"
item_state = "armor"
body_parts_covered = CHEST|GROIN|LEGS|ARMS|FEET|HANDS
hoodtype = /obj/item/clothing/head/hooded/corpus
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT //"Hide shoes" but digi shoes dont get hidden, too bad!
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
mutantrace_variation = NO_MUTANTRACE_VARIATION //There is no need for a digi variant, it's a costume
/obj/item/clothing/suit/hooded/corpus/s //sec
name = "Enforcer Voidsuit"
desc = "Delux issue grofit voidsuit. Let the middle class know You're in charge."
icon_state = "corpuss"
hoodtype = /obj/item/clothing/head/hooded/corpus/s //Enjoy this nice red outfit Kinaris! There is NO NEED for a pink one! xoxo -VivI Fanteriso
/obj/item/clothing/suit/hooded/corpus/c //command
name = "Commander Voidsuit"
desc = "Premium issue correctional worker attire. Grease the gears of production."
icon_state = "corpusc"
hoodtype = /obj/item/clothing/head/hooded/corpus/c
/obj/item/clothing/head/hooded/corpus
name = "Voidsuit helmet"
desc = "galvanized reinforced helm to protect against the elements"
icon_state = "corpus"
body_parts_covered = HEAD
flags_inv = HIDEHAIR|HIDEEARS|HIDEFACIALHAIR|HIDEFACE|HIDEMASK|HIDESNOUT|HIDENECK //hide your ugly face with this one simple trick!
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
/obj/item/clothing/head/hooded/corpus/s //sec
icon_state = "corpuss"
/obj/item/clothing/head/hooded/corpus/c //command
icon_state = "corpusc"
/*
* Costume
*/
@@ -461,120 +461,6 @@
tastes = list("meat" = 2, "dough" = 2, "laziness" = 1)
foodtype = GRAIN | ANTITOXIC
/obj/item/reagent_containers/food/snacks/donkpocket/taco
name = "\improper Taco-pocket"
desc = "Es hora de adentrarse en el espacio de bolsillo más salvaje jamás conocido. ¡jajaja!"
icon_state = "donkpockettaco"
list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/capsaicin = 2)
cooked_type = /obj/item/reagent_containers/food/snacks/donkpocket/warm/taco
filling_color = "#CD853F"
tastes = list("meat" = 2, "dough" = 2, "spice" = 2, "vegetables" = 2, "cheese" = 2)
foodtype = GRAIN | VEGETABLES | MEAT
/obj/item/reagent_containers/food/snacks/donkpocket/warm/taco
name = "warm Taco-pocket"
desc = "Es hora de adentrarse en el espacio de bolsillo más salvaje jamás conocido. ¡jajaja!"
icon_state = "donkpockettaco"
bonus_reagents = list(/datum/reagent/medicine/omnizine = 1)
list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/capsaicin = 2)
tastes = list("meat" = 2, "dough" = 2, "spice" = 2, "vegetables" = 2, "cheese" = 2)
foodtype = GRAIN | VEGETABLES | MEAT
/obj/item/reagent_containers/food/snacks/donkpocket/plasma
name = "\improper Poison-pocket"
desc = "NOTE: WARNING. For slime species consumption only. Call ###-##-### if injested"
icon_state = "donkpocketplasma"
list_reagents = list(/datum/reagent/toxin/carpotoxin = 2, /datum/reagent/toxin/plasma = 2, /datum/reagent/fuel = 2)
cooked_type = /obj/item/reagent_containers/food/snacks/donkpocket/warm/plasma
filling_color = "#CD853F"
tastes = list("meat" = 2, "dough" = 2, "poison" = 2, "welding fuel" = 2)
foodtype = GRAIN | TOXIC | MEAT
/obj/item/reagent_containers/food/snacks/donkpocket/warm/plasma
name = "warm Poison-pocket"
desc = "NOTE: WARNING. For slime species consumption only. Call ###-##-### if injested"
icon_state = "donkpocketplasma"
bonus_reagents = list(/datum/reagent/toxin/carpotoxin = 2, /datum/reagent/toxin/plasma = 2, /datum/reagent/fuel = 2)
list_reagents = list(/datum/reagent/consumable/nutriment = 4)
tastes = list("meat" = 2, "dough" = 2, "poison" = 2, "welding fuel" = 2)
foodtype = GRAIN | TOXIC | MEAT
/obj/item/reagent_containers/food/snacks/donkpocket/breakfast
name = "\improper Breakfast-pocket"
desc = "Now for all you early morning Joes!."
icon_state = "donkpocketbreakfast"
list_reagents = list(/datum/reagent/consumable/nutriment = 4)
cooked_type = /obj/item/reagent_containers/food/snacks/donkpocket/warm/breakfast
filling_color = "#CD853F"
tastes = list("meat" = 2, "dough" = 2, "eggs" =2, "bacon" =2)
foodtype = GRAIN | DAIRY | MEAT | BREAKFAST
/obj/item/reagent_containers/food/snacks/donkpocket/warm/breakfast //IT'S BEEN ELEVEN FUCKING HOURS I HATE BYOND I HATE BYOND I HATE BEYOND!!!
name = "warm Breakfast-pocket"
desc = "Now for all you early morning Joes!."
icon_state = "donkpocketbreakfast"
bonus_reagents = list(/datum/reagent/medicine/omnizine = 1)
list_reagents = list(/datum/reagent/consumable/nutriment = 4)
tastes = list("meat" = 2, "dough" = 2, "eggs" = 2, "bacon" = 2)
foodtype = GRAIN | DAIRY | MEAT | BREAKFAST | ANTITOXIC
/obj/item/reagent_containers/food/snacks/donkpocket/moth
name = "\improper Moth-pocket"
desc = "Donk Corp is now reaching out to all species! Dig in moths one and all."
icon_state = "donkpocketmoth"
list_reagents = list(/datum/reagent/consumable/nutriment = 4)
cooked_type = /obj/item/reagent_containers/food/snacks/donkpocket/warm/moth
filling_color = "#CD853F"
tastes = list("lint" = 2, "dough" = 2, "felt" = 2)
foodtype = GRAIN | DAIRY | CLOTH
/obj/item/reagent_containers/food/snacks/donkpocket/warm/moth
name = "warm Moth-pocket"
desc = "Donk Corp is now reaching out to all species! Dig in moths one and all."
icon_state = "donkpocketmoth"
bonus_reagents = list(/datum/reagent/medicine/omnizine = 1)
list_reagents = list(/datum/reagent/consumable/nutriment = 4)
tastes = list("lint" = 2, "dough" = 2, "felt" = 2)
foodtype = GRAIN | DAIRY | CLOTH
/obj/item/reagent_containers/food/snacks/donkpocket/vegan
name = "\improper Vegan-pocket"
desc = "For all you Animal Rights Consortium members out there!."
icon_state = "donkpocketvegan"
list_reagents = list(/datum/reagent/consumable/nutriment = 2)
cooked_type = /obj/item/reagent_containers/food/snacks/donkpocket/warm/vegan
filling_color = "#CD853F"
tastes = list("vegetables" = 2, "dough" = 2)
foodtype = GRAIN | VEGETABLES
/obj/item/reagent_containers/food/snacks/donkpocket/warm/vegan
name = "warm Vegan-pocket"
desc = "For all you Animal Rights Consortium members out there!."
icon_state = "donkpocketvegan"
bonus_reagents = list(/datum/reagent/medicine/omnizine = 1)
list_reagents = list(/datum/reagent/consumable/nutriment = 3)
tastes = list("vegetables" = 2, "dough" = 2)
foodtype = GRAIN | VEGETABLES
/obj/item/reagent_containers/food/snacks/donkpocket/sm
name = "\improper Super-pocket"
desc = "You're probably not in a good spot if you're laying eyes on this."
icon_state = "donkpocketsm"
list_reagents = list(/datum/reagent/consumable/nutriment = 99)
cooked_type = /obj/item/reagent_containers/food/snacks/donkpocket/warm/sm
filling_color = "#CD853F"
tastes = list("white-noise" = 2)
foodtype = TOXIC
/obj/item/reagent_containers/food/snacks/donkpocket/warm/sm
name = "warm Super-pocket"
desc = "You're probably not in a good spot if you're laying eyes on this."
icon_state = "donkpocketsm"
bonus_reagents = list(/datum/reagent/medicine/omnizine = 1)
list_reagents = list(/datum/reagent/consumable/nutriment = 99)
tastes = list("white-noise" = 2)
foodtype = TOXIC
/obj/item/reagent_containers/food/snacks/dankpocket
name = "\improper Dank-pocket"
desc = "The food of choice for the seasoned botanist."
@@ -668,7 +554,7 @@
cooked_type = /obj/item/reagent_containers/food/snacks/donkpocket/warm/berry
filling_color = "#CD853F"
tastes = list("dough" = 2, "jam" = 2)
foodtype = GRAIN | SUGAR
foodtype = GRAIN
/obj/item/reagent_containers/food/snacks/donkpocket/warm/berry
name = "warm Berry-pocket"
@@ -677,7 +563,7 @@
bonus_reagents = list(/datum/reagent/medicine/omnizine = 1)
list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/medicine/omnizine = 1, /datum/reagent/consumable/berryjuice = 3)
tastes = list("dough" = 2, "warm jam" = 2)
foodtype = GRAIN | SUGAR
foodtype = GRAIN
/obj/item/reagent_containers/food/snacks/donkpocket/gondola
name = "\improper Gondola-pocket"
@@ -362,159 +362,6 @@ datum/crafting_recipe/food/donut/meat
tastes = list("meat" = 2, "dough" = 2)
foodtype = GRAIN | VEGETABLES
/datum/crafting_recipe/food/donkpocket/taco
time = 15
name = "Taco-pocket"
reqs = list(
/obj/item/reagent_containers/food/snacks/pastrybase = 1,
/obj/item/reagent_containers/food/snacks/meatball = 1,
/obj/item/reagent_containers/food/snacks/grown/carrot = 1,
/obj/item/reagent_containers/food/snacks/grown/citrus/lime = 1,
)
result = /obj/item/reagent_containers/food/snacks/donkpocket/taco
subcategory = CAT_PASTRY
/obj/item/reagent_containers/food/snacks/donkpocket/taco
name = "\improper Taco-pocket"
desc = "Es hora de adentrarse en el espacio de bolsillo más salvaje jamás conocido. ¡jajaja!"
icon_state = "donkpockettaco"
list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/capsaicin = 2)
cooked_type = /obj/item/reagent_containers/food/snacks/donkpocket/warm/taco
filling_color = "#CD853F"
tastes = list("meat" = 2, "dough" = 2, "spice" = 2, "vegetables" = 2, "cheese" = 2)
foodtype = GRAIN | VEGETABLES | MEAT
/obj/item/reagent_containers/food/snacks/donkpocket/warm/taco
name = "warm Taco-pocket"
desc = "Es hora de adentrarse en el espacio de bolsillo más salvaje jamás conocido. ¡jajaja!"
icon_state = "donkpockettaco"
bonus_reagents = list(/datum/reagent/medicine/omnizine = 1)
list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/capsaicin = 2)
tastes = list("meat" = 2, "dough" = 2, "spice" = 2, "vegetables" = 2, "cheese" = 2)
foodtype = GRAIN | VEGETABLES | MEAT
/datum/crafting_recipe/food/donkpocket/plasma
time = 15
name = "Plasma-pocket"
reqs = list(
/obj/item/reagent_containers/food/snacks/pastrybase = 1,
/obj/item/reagent_containers/food/snacks/meatball = 1,
/datum/reagent/fuel = 1,
/datum/reagent/toxin/plasma = 1,
)
result = /obj/item/reagent_containers/food/snacks/donkpocket/plasma
subcategory = CAT_PASTRY
/obj/item/reagent_containers/food/snacks/donkpocket/plasma
name = "\improper Poison-pocket"
desc = "NOTE: WARNING. For slime species consumption only. Call ###-##-### if injested"
icon_state = "donkpocketplasma"
list_reagents = list(/datum/reagent/toxin/carpotoxin = 2, /datum/reagent/toxin/plasma = 2, /datum/reagent/fuel = 2)
cooked_type = /obj/item/reagent_containers/food/snacks/donkpocket/warm/plasma
filling_color = "#CD853F"
tastes = list("meat" = 2, "dough" = 2, "poison" = 2, "welding fuel" = 2)
foodtype = GRAIN | TOXIC | MEAT
/obj/item/reagent_containers/food/snacks/donkpocket/warm/plasma
name = "warm Poison-pocket"
desc = "NOTE: WARNING. For slime species consumption only. Call ###-##-### if injested"
icon_state = "donkpocketplasma"
bonus_reagents = list(/datum/reagent/toxin/carpotoxin = 2, /datum/reagent/toxin/plasma = 2, /datum/reagent/fuel = 2)
list_reagents = list(/datum/reagent/consumable/nutriment = 4)
tastes = list("meat" = 2, "dough" = 2, "poison" = 2, "welding fuel" = 2)
foodtype = GRAIN | TOXIC | MEAT
/datum/crafting_recipe/food/donkpocket/breakfast
time = 15
name = "Breakfast-pocket"
reqs = list(
/obj/item/reagent_containers/food/snacks/pastrybase = 1,
/obj/item/reagent_containers/food/snacks/cheesewedge = 1,
/obj/item/reagent_containers/food/snacks/friedegg = 1,
/obj/item/reagent_containers/food/snacks/meat/cutlet = 1,
)
result = /obj/item/reagent_containers/food/snacks/donkpocket/breakfast
subcategory = CAT_PASTRY
/obj/item/reagent_containers/food/snacks/donkpocket/breakfast
name = "\improper Breakfast-pocket"
desc = "Now for all you early morning Joes!."
icon_state = "donkpocketbreakfast"
list_reagents = list(/datum/reagent/consumable/nutriment = 4)
cooked_type = /obj/item/reagent_containers/food/snacks/donkpocket/warm/breakfast
filling_color = "#CD853F"
tastes = list("meat" = 2, "dough" = 2, "eggs" = 2, "bacon" = 2)
foodtype = GRAIN | DAIRY | MEAT | BREAKFAST
/obj/item/reagent_containers/food/snacks/donkpocket/warm/breakfast
name = "warm Breakfast-pocket"
desc = "Now for all you early morning Joes!."
icon_state = "donkpocketbreakfast"
bonus_reagents = list(/datum/reagent/medicine/omnizine = 1)
list_reagents = list(/datum/reagent/consumable/nutriment = 4)
tastes = list("meat" = 2, "dough" = 2, "eggs" = 2, "bacon" = 2)
foodtype = GRAIN | DAIRY | MEAT | BREAKFAST | ANTITOXIC
/datum/crafting_recipe/food/donkpocket/moth
time = 15
name = "Moth-pocket"
reqs = list(
/obj/item/reagent_containers/food/snacks/pastrybase = 1,
/obj/item/reagent_containers/food/snacks/cheesewedge = 1,
/obj/item/stack/sheet/cloth = 1,
)
result = /obj/item/reagent_containers/food/snacks/donkpocket/moth
subcategory = CAT_PASTRY
/obj/item/reagent_containers/food/snacks/donkpocket/moth
name = "\improper Moth-pocket"
desc = "Donk Corp is now reaching out to all species! Dig in moths one and all."
icon_state = "donkpocketmoth"
list_reagents = list(/datum/reagent/consumable/nutriment = 4)
cooked_type = /obj/item/reagent_containers/food/snacks/donkpocket/warm/moth
filling_color = "#CD853F"
tastes = list("lint" = 2, "dough" = 2, "felt" = 2)
foodtype = GRAIN | DAIRY | CLOTH
/obj/item/reagent_containers/food/snacks/donkpocket/warm/moth
name = "warm Moth-pocket"
desc = "Donk Corp is now reaching out to all species! Dig in moths one and all."
icon_state = "donkpocketmoth"
bonus_reagents = list(/datum/reagent/medicine/omnizine = 1)
list_reagents = list(/datum/reagent/consumable/nutriment = 4)
tastes = list("lint" = 2, "dough" = 2, "felt" = 2)
foodtype = GRAIN | DAIRY | CLOTH
/datum/crafting_recipe/food/donkpocket/vegan
time = 15
name = "Vegan-pocket"
reqs = list(
/obj/item/reagent_containers/food/snacks/pastrybase = 1,
/obj/item/reagent_containers/food/snacks/grown/cabbage = 1,
/obj/item/reagent_containers/food/snacks/grown/mushroom/chanterelle = 1,
)
result = /obj/item/reagent_containers/food/snacks/donkpocket/vegan
subcategory = CAT_PASTRY
/obj/item/reagent_containers/food/snacks/donkpocket/vegan
name = "\improper Vegan-pocket"
desc = "For all you Animal Rights Consortium members out there!."
icon_state = "donkpocketvegan"
list_reagents = list(/datum/reagent/consumable/nutriment = 2)
cooked_type = /obj/item/reagent_containers/food/snacks/donkpocket/warm/vegan
filling_color = "#CD853F"
tastes = list("vegetables" = 2, "dough" = 2)
foodtype = GRAIN | VEGETABLES
/obj/item/reagent_containers/food/snacks/donkpocket/warm/vegan
name = "warm Vegan-pocket"
desc = "For all you Animal Rights Consortium members out there!."
icon_state = "donkpocketvegan"
bonus_reagents = list(/datum/reagent/medicine/omnizine = 1)
list_reagents = list(/datum/reagent/consumable/nutriment = 3)
tastes = list("vegetables" = 2, "dough" = 2)
foodtype = GRAIN | VEGETABLES
/datum/crafting_recipe/food/donkpocket/spicy
time = 15
name = "Spicy-pocket"
+7 -8
View File
@@ -33,9 +33,6 @@
// This is for adminspawn or map-placed growns. They get the default stats of their seed type.
seed = new seed()
seed.adjust_potency(50-seed.potency)
else if(!seed)
stack_trace("Grown initialized without seed. Okay.")
return INITIALIZE_HINT_QDEL
pixel_x = rand(-5, 5)
pixel_y = rand(-5, 5)
@@ -43,11 +40,13 @@
if(dried_type == -1)
dried_type = src.type
for(var/datum/plant_gene/trait/T in seed.genes)
T.on_new(src, loc)
seed.prepare_result(src)
AddElement(/datum/element/item_scaling, TRANSFORM_USING_VARIABLE(seed.potency, 100) + 0.5, 1) //Makes the resulting produce's sprite larger or smaller based on potency!
add_juice()
if(seed)
for(var/datum/plant_gene/trait/T in seed.genes)
T.on_new(src, loc)
seed.prepare_result(src)
transform *= TRANSFORM_USING_VARIABLE(seed.potency, 100) + 0.5 //Makes the resulting produce's sprite larger or smaller based on potency!
add_juice()
/obj/item/reagent_containers/food/snacks/grown/proc/add_juice()
+1 -1
View File
@@ -65,7 +65,7 @@ Captain
satchel = /obj/item/storage/backpack/satchel/cap
duffelbag = /obj/item/storage/backpack/duffelbag/captain
implants = list(/obj/item/implant/mindshield, /obj/item/implant/kinaris)
implants = list(/obj/item/implant/mindshield)
accessory = /obj/item/clothing/accessory/medal/gold/captain
chameleon_extras = list(/obj/item/gun/energy/e_gun, /obj/item/stamp/captain)
+1 -1
View File
@@ -62,7 +62,7 @@ Head of Security
duffelbag = /obj/item/storage/backpack/duffelbag/sec
box = /obj/item/storage/box/security
implants = list(/obj/item/implant/mindshield, /obj/item/implant/kinaris)
implants = list(/obj/item/implant/mindshield)
chameleon_extras = list(/obj/item/gun/energy/e_gun/hos, /obj/item/stamp/hos)
+2 -9
View File
@@ -43,14 +43,7 @@
S.cd = "/"
var/slot
S["default_slot"] >> slot
var/differing_version_notification = 0
if(slot)
S.cd = "/character[slot]"
var/slot_version = 0
S["version"] >> slot_version
if(slot_version && slot_version < SAVEFILE_VERSION_MAX)
S.cd = "/"
S["new_differences_notification"] >> differing_version_notification
if(!differing_version_notification || differing_version_notification <= slot_version)
S["new_differences_notification"] << slot_version
to_chat(src, "<span class='danger'><B>There were recent changes with characters, and your savefiles are outdated. Your characters may not look the same depending on what changed.</B></span>")
if(S["version"] < SAVEFILE_VERSION_MAX)
to_chat(src, "<span class='redtext'>Your characters are outdated from recent updates. Please make sure if everything is within reasonable levels.</span>")
-3
View File
@@ -487,9 +487,6 @@
if(HAS_TRAIT(src, TRAIT_NOHUNGER))
return 1
if(!has_mouth())
return 1
if(nutrition < 100 && !blood)
if(message)
visible_message("<span class='warning'>[src] dry heaves!</span>", \
@@ -5,24 +5,30 @@
icon_state = "caucasian_m"
appearance_flags = KEEP_TOGETHER|TILE_BOUND|PIXEL_SCALE|LONG_GLIDE
/mob/living/carbon/human/Initialize()
add_verb(src, /mob/living/proc/mob_sleep)
add_verb(src, /mob/living/proc/lay_down)
time_initialized = world.time
//initialize limbs first
create_bodyparts()
//initialize dna. for spawned humans; overwritten by other code
create_dna(src)
randomize_human(src)
dna.initialize_dna()
if(dna.species)
set_species(dna.species.type)
//initialise organs
create_internal_organs() //most of it is done in set_species now, this is only for parent call
physiology = new()
AddComponent(/datum/component/personal_crafting)
. = ..()
RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, /mob/living/carbon/human/clean_blood)
@@ -318,24 +318,15 @@ GLOBAL_LIST_EMPTY(roundstart_races)
var/mob/living/carbon/human/H = C
if(NOGENITALS in H.dna.species.species_traits)
H.give_genitals(TRUE) //call the clean up proc to delete anything on the mob then return.
// EDIT ENDS
if(NOMOUTH in species_traits)
for(var/obj/item/bodypart/head/head in C.bodyparts)
head.mouth = FALSE
/datum/species/proc/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load)
if(C.dna.species.exotic_bloodtype)
if(!new_species.exotic_bloodtype)
C.dna.blood_type = random_blood_type()
else
C.dna.blood_type = new_species.exotic_bloodtype
if(NOMOUTH in species_traits)
for(var/obj/item/bodypart/head/head in C.bodyparts)
head.mouth = TRUE
if(DIGITIGRADE in species_traits)
C.Digitigrade_Leg_Swap(TRUE)
for(var/X in inherent_traits)
@@ -511,7 +502,6 @@ GLOBAL_LIST_EMPTY(roundstart_races)
var/list/standing = list()
var/obj/item/bodypart/head/HD = H.get_bodypart(BODY_ZONE_HEAD)
H.handle_cosmetic_parts()
if(HD && !(HAS_TRAIT(H, TRAIT_HUSK)))
// lipstick
@@ -604,7 +594,6 @@ GLOBAL_LIST_EMPTY(roundstart_races)
//CITADEL EDIT - Do not forget to add this to relevent_layers list just above too!
H.remove_overlay(BODY_TAUR_LAYER)
//END EDIT
H.handle_cosmetic_parts()
if(!mutant_bodyparts)
return
@@ -689,17 +678,21 @@ GLOBAL_LIST_EMPTY(roundstart_races)
if("mam_tail" in mutant_bodyparts)
if(H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR) || (!H.dna.features["taur"] == "None"))
bodyparts_to_add -= "mam_tail"
if("mam_waggingtail" in mutant_bodyparts)
if(H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR) || (!H.dna.features["taur"] == "None"))
bodyparts_to_add -= "mam_waggingtail"
else if ("mam_tail" in mutant_bodyparts)
bodyparts_to_add -= "mam_waggingtail"
if("mam_ears" in mutant_bodyparts)
if(!H.dna.features["mam_ears"] || H.dna.features["mam_ears"] == "None" || H.head && (H.head.flags_inv & HIDEEARS) || (H.wear_mask && (H.wear_mask.flags_inv & HIDEEARS)) || !HD || HD.status == BODYPART_ROBOTIC)
bodyparts_to_add -= "mam_ears"
if("mam_snouts" in mutant_bodyparts) //Take a closer look at that snout!
if((H.wear_mask && (H.wear_mask.flags_inv & HIDESNOUT)) || (H.head && (H.head.flags_inv & HIDESNOUT)) || !HD || HD.status == BODYPART_ROBOTIC)
bodyparts_to_add -= "mam_snouts"
if("taur" in mutant_bodyparts)
if(!H.dna.features["taur"] || H.dna.features["taur"] == "None" || (H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)))
bodyparts_to_add -= "taur"
@@ -1654,8 +1647,8 @@ GLOBAL_LIST_EMPTY(roundstart_races)
)
if (target.canbearoused)
target.adjustArousalLoss(5)
if (HAS_TRAIT(target, TRAIT_MASO))
target.mob_climax_instant()
if (target.getArousalLoss() >= 100 && ishuman(target) && HAS_TRAIT(target, TRAIT_MASO) && target.has_dna())
target.mob_climax(forced_climax=TRUE)
if (!HAS_TRAIT(target, TRAIT_NYMPHO))
stop_wagging_tail(target)
@@ -2012,7 +2005,8 @@ GLOBAL_LIST_EMPTY(roundstart_races)
H.update_damage_overlays()
if(HAS_TRAIT(H, TRAIT_MASO))
H.adjustArousalLoss(damage * brutemod * H.physiology.brute_mod)
H.mob_climax_instant()
if (H.getArousalLoss() >= 100 && ishuman(H) && H.has_dna())
H.mob_climax(forced_climax=TRUE)
else//no bodypart, we deal damage with a more general method.
H.adjustBruteLoss(damage * hit_percent * brutemod * H.physiology.brute_mod)
@@ -690,8 +690,6 @@ generate/load female uniform sprites matching all previously decided variables
. += "-[BP.digitigrade_type]"
if(BP.dmg_overlay_type)
. += "-[BP.dmg_overlay_type]"
if(BP.cosmetic_icon)
. += "-cosm[BP.cosmetic_icon]"
if(BP.body_markings)
. += "-[BP.body_markings]"
else
+2 -1
View File
@@ -77,7 +77,8 @@
var/mob/living/carbon/human/B = src
if(HAS_TRAIT(B, TRAIT_CHOKE_SLUT))
B.adjustArousalLoss(7)
B.mob_climax_instant()
if (B.getArousalLoss() >= 100 && ishuman(B) && B.has_dna())
B.mob_climax(forced_climax=TRUE)
else
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "suffocation", /datum/mood_event/suffocation)
else
@@ -200,10 +200,6 @@
INVOKE_ASYNC(RM, .proc/do_transform_animation)
SEND_SIGNAL(R, COMSIG_CYBORG_MODULE_CHANGE) //hyperstation edit
qdel(src)
//Skyrat change start
R.radio.extra_channels = RM.added_channels
R.radio.recalculateChannels()
//Skyrat change stop
return RM
/obj/item/robot_module/proc/be_transformed_to(obj/item/robot_module/old_module)
+1 -3
View File
@@ -57,9 +57,7 @@
var/datum/callback/CB = foo
CB.Invoke()
if(client.prefs)
mind?.hide_ckey = client.prefs.hide_ckey
client.fps = client.prefs.clientfps
mind?.hide_ckey = client?.prefs?.hide_ckey
log_message("Client [key_name(src)] has taken ownership of mob [src]([src.type])", LOG_OWNERSHIP)
SEND_SIGNAL(src, COMSIG_MOB_CLIENT_LOGIN, client)
client.init_verbs()
-16
View File
@@ -104,8 +104,6 @@
var/icon_update_needed = FALSE
var/obj/machinery/computer/apc_control/remote_control = null
var/obj/effect/light/lighteffect //light effect
/obj/machinery/power/apc/unlocked
locked = FALSE
@@ -187,8 +185,6 @@
addtimer(CALLBACK(src, .proc/update), 5)
/obj/machinery/power/apc/Destroy()
if(lighteffect)
lighteffect.Del()
GLOB.apcs_list -= src
if(malfai && operating)
@@ -324,13 +320,6 @@
// And now, separately for cleanness, the lighting changing
if(update_state & UPSTATE_ALLGOOD)
if(!lighteffect)//make the light
lighteffect = new/obj/effect/light
lighteffect.loc = src.loc
lighteffect.alpha = 50
lighteffect.pixel_x = pixel_x
lighteffect.pixel_y = pixel_y
switch(charging)
if(APC_NOT_CHARGING)
light_color = LIGHT_COLOR_RED
@@ -339,7 +328,6 @@
if(APC_FULLY_CHARGED)
light_color = LIGHT_COLOR_GREEN
set_light(lon_range)
lighteffect.color = light_color
else if(update_state & UPSTATE_BLUESCREEN)
light_color = LIGHT_COLOR_BLUE
set_light(lon_range)
@@ -348,10 +336,6 @@
icon_update_needed = FALSE
/obj/machinery/power/apc/Move()
if(lighteffect)
lighteffect.loc = src.loc //move the light overlay
/obj/machinery/power/apc/proc/check_updates()
var/last_update_state = update_state
var/last_update_overlay = update_overlay
-18
View File
@@ -223,9 +223,6 @@
var/bulb_emergency_pow_mul = 0.75 // the multiplier for determining the light's power in emergency mode
var/bulb_emergency_pow_min = 0.5 // the minimum value for the light's power in emergency mode
var/obj/effect/light/lighteffect //light effect
/obj/machinery/light/broken
status = LIGHT_BROKEN
icon_state = "tube-broken"
@@ -245,8 +242,6 @@
icon_state = "bulb-broken"
/obj/machinery/light/Move()
if(lighteffect)
lighteffect.loc = src.loc
if(status != LIGHT_BROKEN)
break_light_tube(1)
return ..()
@@ -290,8 +285,6 @@
/obj/machinery/light/Destroy()
var/area/A = get_area(src)
if(lighteffect)
lighteffect.Del()
if(A)
on = FALSE
// A.update_lights()
@@ -299,35 +292,24 @@
return ..()
/obj/machinery/light/update_icon()
if(!lighteffect) //dont have a light bloom, make it.
lighteffect = new/obj/effect/light/large
lighteffect.loc = src.loc
cut_overlays()
switch(status) // set icon_states
if(LIGHT_OK)
var/area/A = get_area(src)
if(emergency_mode || (A && A.fire))
icon_state = "[base_state]_emergency"
lighteffect.alpha = 0
else
icon_state = "[base_state]"
if(on)
lighteffect.alpha = CLAMP(light_power*35, 5, 100)
lighteffect.color = light_color
var/mutable_appearance/glowybit = mutable_appearance(overlayicon, base_state, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE)
glowybit.alpha = CLAMP(light_power*250, 30, 200)
add_overlay(glowybit)
if(LIGHT_EMPTY)
icon_state = "[base_state]-empty"
lighteffect.alpha = 0
if(LIGHT_BURNED)
icon_state = "[base_state]-burned"
lighteffect.alpha = 0
if(LIGHT_BROKEN)
icon_state = "[base_state]-broken"
lighteffect.alpha = 0
if(!on)
lighteffect.alpha = 0
return
// update the icon_state and luminosity of the light depending on its state
@@ -266,7 +266,7 @@
icon_state = "modkit"
w_class = WEIGHT_CLASS_SMALL
require_module = 1
module_type = list(/obj/item/robot_module/miner, /obj/item/robot_module/orepup)
module_type = /obj/item/robot_module/miner
var/denied_type = null
var/maximum_of_type = 1
var/cost = 30
+1 -4
View File
@@ -197,10 +197,7 @@
L.visible_message("<span class='danger'>[L] is hit by \a [src][organ_hit_text]!</span>", \
"<span class='userdanger'>[L] is hit by \a [src][organ_hit_text]!</span>", null, COMBAT_MESSAGE_RANGE)
if(candink && def_zone == BODY_ZONE_HEAD)
if(prob(2))
playsound(src, 'hyperstation/sound/weapons/dinkalternate.ogg', 30, 0)
else
playsound(src, 'sound/weapons/dink.ogg', 30, 1)
playsound(src, 'sound/weapons/dink.ogg', 30, 1)
L.on_hit(src)
var/reagent_note
@@ -65,12 +65,6 @@
var/who = (isnull(user) || eater == user) ? "your" : "[eater.p_their()]"
to_chat(user, "<span class='warning'>You have to remove [who] [covered] first!</span>")
return 0
if(!eater.has_mouth())
if(eater == user)
to_chat(eater, "<span class='warning'>You have no mouth, and cannot eat.</span>")
else
to_chat(user, "<span class='warning'>You can't feed [eater], because they have no mouth!</span>")
return 0
return 1
/obj/item/reagent_containers/ex_act()
@@ -282,16 +282,16 @@
. = ..()
if(.)
return
if(chalice_taken)
if(chalice_taken == 1)
to_chat(user, "<i>You hear a voice in your head... <b>\"My chalice has already been taken, dear. I cannot give you another...\"</i></b>")
return
if(user.getArousalLoss() < 100)
to_chat(user, "<i>You hear a voice in your head... <b>\"You are not horny enough to receive my blessing, dear~\"</i></b>")
return
var/mob/living/carbon/user_carbon = user
user_carbon.mob_climax_instant()
to_chat(user, "<i>You hear a voice in your head... <b>\"You are worthy of my blessing, dear~\"</i></b>")
to_chat(user, "<span class='userdanger'>You feel overpowering pleasure surge through your entire body.</span>")
var/A = new /obj/item/reagent_containers/chalice/lust
user.put_in_hands(A)
chalice_taken = TRUE
if (ishuman(user) && user.has_dna())
user.mob_climax(forced_climax=TRUE)
to_chat(user, "<i>You hear a voice in your head... <b>\"You are worth of my blessing dear~\"</i></b>")
to_chat(user, "<span class='userdanger'>You feel overpowering pleasure surge through your entire body.</span>")
var/A = new /obj/item/reagent_containers/chalice/lust
user.put_in_hands(A)
chalice_taken = 1
+25 -54
View File
@@ -44,13 +44,6 @@
var/skin_tone = ""
var/body_gender = ""
var/species_id = ""
/**
* HYPER: when getting the appearance of a limb, the game will check
* for `cosmetic_icon` first. if there is none, it will default back
* to `species_id`. this allows us to use custom body part types for
* each limb in character customization.
*/
var/datum/cosmetic_part/cosmetic_icon
var/color_src
var/base_bp_icon //Overrides the icon being used for this limb. This is mainly for downstreams, implemented and maintained as a favor in return for implementing synths. And also because should_draw_* for icon overrides was pretty messy. You're welcome.
var/should_draw_gender = FALSE
@@ -398,22 +391,12 @@
else
body_markings = "plain"
auxmarking = "plain"
markings_color = list(colorlist)
else
body_markings = null
auxmarking = null
if(cosmetic_icon && is_organic_limb())
if(cosmetic_icon.icon)
base_bp_icon = cosmetic_icon.icon
use_digitigrade = cosmetic_icon.support_digitigrade ? use_digitigrade : NOT_DIGITIGRADE
color_src = cosmetic_icon.color_src ? cosmetic_icon.color_src : MUTCOLORS
if(!H.dna.features["cosmetic_markings"])
body_markings = null
auxmarking = null
if((MUTCOLORS in S.species_traits) || (MUTCOLORS_PARTSONLY in S.species_traits))
markings_color = list(colorlist)
if(!dropping_limb && H.dna.check_mutation(HULK))
mutation_color = "00aa00"
else
@@ -453,11 +436,6 @@
var/image_dir = 0
var/icon_gender = (body_gender == FEMALE) ? "f" : "m" //gender of the icon, if applicable
var/is_husk = species_id == "husk"
/// HYPER: allow for custom limb icons in character customization
var/has_cosmetic_state = !isnull(cosmetic_icon) && !isnull(cosmetic_icon.icon_state)
var/limb_style = has_cosmetic_state ? cosmetic_icon.icon_state : species_id
if(dropped)
image_dir = SOUTH
@@ -486,7 +464,7 @@
if(animal_origin)
if(is_organic_limb())
limb.icon = 'icons/mob/animal_parts.dmi'
if(is_husk)
if(species_id == "husk")
limb.icon_state = "[animal_origin]_husk_[body_zone]"
else
limb.icon_state = "[animal_origin]_[body_zone]"
@@ -501,21 +479,21 @@
if(is_organic_limb())
limb.icon = base_bp_icon || 'icons/mob/human_parts.dmi'
if(should_draw_gender)
limb.icon_state = "[limb_style]_[body_zone]_[icon_gender]"
limb.icon_state = "[species_id]_[body_zone]_[icon_gender]"
else if (use_digitigrade)
if(base_bp_icon == DEFAULT_BODYPART_ICON_ORGANIC) //Compatibility hack for the current iconset.
limb.icon_state = "digitigrade_[use_digitigrade]_[body_zone]"
else
limb.icon_state = "[limb_style]_digitigrade_[use_digitigrade]_[body_zone]"
limb.icon_state = "[species_id]_digitigrade_[use_digitigrade]_[body_zone]"
else
limb.icon_state = "[limb_style]_[body_zone]"
limb.icon_state = "[species_id]_[body_zone]"
// Body markings
if(body_markings)
if(is_husk)
if(species_id == "husk")
marking = image('modular_citadel/icons/mob/markings_notmammals.dmi', "husk_[body_zone]", -MARKING_LAYER, image_dir)
else if(is_husk && use_digitigrade)
else if(species_id == "husk" && use_digitigrade)
marking = image('modular_citadel/icons/mob/markings_notmammals.dmi', "husk_digitigrade_[use_digitigrade]_[body_zone]", -MARKING_LAYER, image_dir)
else if(!use_digitigrade)
@@ -530,10 +508,10 @@
// Citadel End
if(aux_zone)
aux = image(limb.icon, "[limb_style]_[aux_zone]", -aux_layer, image_dir)
aux = image(limb.icon, "[species_id]_[aux_zone]", -aux_layer, image_dir)
. += aux
if(body_markings)
if(is_husk)
if(species_id == "husk")
auxmarking = image('modular_citadel/icons/mob/markings_notmammals.dmi', "husk_[aux_zone]", -aux_layer, image_dir)
else
auxmarking = image(body_markings_icon, "[body_markings]_[aux_zone]", -aux_layer, image_dir)
@@ -550,16 +528,16 @@
aux = image(limb.icon, "[aux_zone]", -aux_layer, image_dir)
. += aux
if(!isnull(auxmarking))
if(is_husk)
if(species_id == "husk")
auxmarking = image('modular_citadel/icons/mob/markings_notmammals.dmi', "husk_[aux_zone]", -aux_layer, image_dir)
else
auxmarking = image(body_markings_icon, "[body_markings]_[aux_zone]", -aux_layer, image_dir)
. += auxmarking
if(!isnull(body_markings))
if(is_husk)
if(species_id == "husk")
marking = image('modular_citadel/icons/mob/markings_notmammals.dmi', "husk_[body_zone]", -MARKING_LAYER, image_dir)
else if(is_husk && use_digitigrade)
else if(species_id == "husk" && use_digitigrade)
marking = image('modular_citadel/icons/mob/markings_notmammals.dmi', "husk_digitigrade_[use_digitigrade]_[body_zone]", -MARKING_LAYER, image_dir)
else if(!use_digitigrade)
@@ -572,27 +550,20 @@
. += marking
return
if(!color_src)
return
switch(color_src)
if(MUTCOLORS)
var/draw_color = mutation_color || species_color || (skin_tone && skintone2hex(skin_tone))
if(draw_color)
limb.color = "#[draw_color]"
if(aux_zone)
aux.color = "#[draw_color]"
if(MATRIXED)
limb.color = list(markings_color)
if(color_src) //TODO - add color matrix support for base species limbs
var/draw_color = mutation_color || species_color || (skin_tone && skintone2hex(skin_tone))
if(draw_color)
limb.color = "#[draw_color]"
if(aux_zone)
aux.color = list(markings_color)
aux.color = "#[draw_color]"
if(!isnull(auxmarking))
auxmarking.color = list(markings_color)
if(!isnull(auxmarking))
auxmarking.color = list(markings_color)
if(!isnull(body_markings))
if(is_husk)
marking.color = "#141414"
else
marking.color = list(markings_color)
if(!isnull(body_markings))
if(species_id == "husk")
marking.color = "#141414"
else
marking.color = list(markings_color)
/obj/item/bodypart/deconstruct(disassembled = TRUE)
-3
View File
@@ -34,9 +34,6 @@
var/lip_color = "white"
//If the head is a special sprite
var/custom_head
// if head has mouth; may depend on species
var/mouth = TRUE
/obj/item/bodypart/head/can_dismember(obj/item/I)
if(!((owner.stat == DEAD) || owner.InFullCritical()))
+2 -23
View File
@@ -120,27 +120,6 @@
return
owner.vomit(stun = FALSE)
/obj/item/organ/stomach/synthliz
name = "synthliz stomach"
/obj/item/organ/stomach/ipc
name = "ipc stomach"
icon_state = "stomach-ipc"
// ipc power cell from oracle
/obj/item/organ/stomach/cell
name = "micro-cell"
icon_state = "microcell"
w_class = WEIGHT_CLASS_NORMAL
zone = BODY_ZONE_CHEST
slot = ORGAN_SLOT_STOMACH
status = ORGAN_ROBOTIC
attack_verb = list("assault and battery'd")
desc = "A micro-cell, for IPC use only. Do not swallow."
/obj/item/organ/stomach/cell/emp_act(severity)
switch(severity)
if(1)
owner.nutrition = 50
to_chat(owner, "<span class='warning'>Alert: Heavy EMP Detected. Rebooting power cell to prevent damage.</span>")
if(2)
owner.nutrition = 250
to_chat(owner, "<span class='warning'>Alert: EMP Detected. Cycling battery.</span>")
+2 -2
View File
@@ -581,7 +581,7 @@
for(var/V in listeners)
var/mob/living/carbon/human/H = V
if(H.canbearoused && H.has_dna() && HAS_TRAIT(H, TRAIT_NYMPHO)) // probably a redundant check but for good measure
H.mob_climax_instant()
H.mob_climax(forced_climax=TRUE)
*/
else if((findtext(message, family_friendly_words)))
cooldown = COOLDOWN_MEME
@@ -1123,7 +1123,7 @@
if(E.phase > 1)
if(HAS_TRAIT(H, TRAIT_NYMPHO) && H.canbearoused && E.lewd) // probably a redundant check but for good measure
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, "<span class='love'>Your [E.enthrallGender] pushes you over the limit, overwhelming your body with pleasure.</b></span>"), 5)
H.mob_climax_instant()
H.mob_climax(forced_climax=TRUE)
H.SetStun(20)
H.setArousalLoss(H.min_arousal)
E.resistanceTally = 0 //makes resistance 0, but resets arousal, resistance buildup is faster unaroused (massively so).
+20 -23
View File
@@ -8,7 +8,8 @@
vend_reply = "Thank you for using AutoDrobe!"
products = list(/obj/item/clothing/suit/chickensuit = 1,
/obj/item/clothing/head/chicken = 1,
/obj/item/clothing/suit/hooded/wintercoat/corpus = 1,
/obj/item/clothing/suit/hooded/corpus = 1,
/obj/item/clothing/suit/hooded/corpus/c = 1,
/obj/item/clothing/under/gladiator = 1,
/obj/item/clothing/head/helmet/gladiator = 1,
/obj/item/clothing/under/gimmick/rank/captain/suit = 1,
@@ -111,9 +112,6 @@
/obj/item/clothing/head/wig/random = 3,
/obj/item/clothing/suit/ran = 2,
/obj/item/clothing/head/ran = 2,
/obj/item/clothing/suit/threepwoodjacket = 3,
/obj/item/clothing/under/threepwood = 2,
/obj/item/clothing/shoes/threepwoodboots = 1,
/obj/item/clothing/under/vaultsuit = 3)
contraband = list(/obj/item/clothing/suit/judgerobe = 1,
/obj/item/clothing/head/powdered_wig = 1,
@@ -122,26 +120,25 @@
/obj/item/clothing/glasses/sunglasses/blindfold = 1,
/obj/item/clothing/mask/muzzle = 2)
premium = list(/obj/item/clothing/suit/pirate/captain = 2,
/obj/item/clothing/head/pirate/captain = 2,
/obj/item/clothing/head/helmet/roman/fake = 1,
/obj/item/clothing/head/helmet/roman/legionnaire/fake = 1,
/obj/item/clothing/under/roman = 1,
/obj/item/clothing/shoes/roman = 1,
/obj/item/shield/riot/roman/fake = 1,
/obj/item/clothing/head/delinquent = 1, // One per vendor, please dear god don't mass produce these.
/obj/item/skub = 1,
/obj/item/clothing/under/lobster = 1, // CIT CHANGES
/obj/item/clothing/head/lobsterhat = 1,
/obj/item/clothing/head/drfreezehat = 1,
/obj/item/clothing/suit/dracula = 1,
/obj/item/clothing/suit/drfreeze_coat = 1,
/obj/item/clothing/suit/gothcoat = 2,
/obj/item/clothing/under/draculass = 1,
/obj/item/clothing/under/drfreeze = 1, //End of Cit Changes
/obj/item/clothing/head/pirate/captain = 2,
/obj/item/clothing/head/helmet/roman/fake = 1,
/obj/item/clothing/head/helmet/roman/legionnaire/fake = 1,
/obj/item/clothing/under/roman = 1,
/obj/item/clothing/shoes/roman = 1,
/obj/item/shield/riot/roman/fake = 1,
/obj/item/clothing/head/delinquent = 1, // One per vendor, please dear god don't mass produce these.
/obj/item/skub = 1,
/obj/item/clothing/under/lobster = 1, // CIT CHANGES
/obj/item/clothing/head/lobsterhat = 1,
/obj/item/clothing/head/drfreezehat = 1,
/obj/item/clothing/suit/dracula = 1,
/obj/item/clothing/suit/drfreeze_coat = 1,
/obj/item/clothing/suit/gothcoat = 2,
/obj/item/clothing/under/draculass = 1,
/obj/item/clothing/under/drfreeze = 1, //End of Cit Changes
/obj/item/clothing/under/wedding_dress = 1,
/obj/item/clothing/under/tuxedo = 1,
/obj/item/clothing/suit/hooded/wintercoat/corpus/command = 1,
/obj/item/storage/belt/cummerbund = 1)
/obj/item/clothing/under/tuxedo = 1,
/obj/item/storage/belt/cummerbund = 1)
refill_canister = /obj/item/vending_refill/autodrobe
/obj/machinery/vending/autodrobe/all_access
+1 -1
View File
@@ -19,7 +19,7 @@
/obj/item/clothing/under/rank/security/skirt = 5,
/obj/item/clothing/under/rank/security/grey = 5,
/obj/item/clothing/under/pants/khaki = 5,
/obj/item/clothing/suit/hooded/wintercoat/corpus/sec = 5)
/obj/item/clothing/suit/hooded/corpus/s = 5)
premium = list(/obj/item/clothing/under/rank/security/navyblue = 5,
/obj/item/clothing/suit/security/officer = 5,
/obj/item/clothing/head/beret/sec/navyofficer = 5,