Merge branch 'master' into various-fixes

This commit is contained in:
DragonTrance
2021-04-20 00:56:44 -07:00
committed by GitHub
284 changed files with 10972 additions and 130623 deletions
@@ -321,7 +321,7 @@
setArousalLoss(min_arousal)
/mob/living/carbon/human/proc/mob_climax_partner(obj/item/organ/genital/G, mob/living/L, spillage = TRUE, impreg = FALSE,cover = FALSE, mb_time = 30) //Used for climaxing with any living thing
/mob/living/carbon/human/proc/mob_climax_partner(obj/item/organ/genital/G, mob/living/L, spillage = TRUE, impreg = FALSE,cover = FALSE,remote = FALSE, mb_time = 30) //Used for climaxing with any living thing
var/total_fluids = 0
var/datum/reagents/fluid_source = null
@@ -369,7 +369,9 @@
setArousalLoss(min_arousal)
if(spillage && !cover)
if(do_after(src, mb_time, target = src) && in_range(src, L))
if(do_after(src, mb_time, target = src))
if(!in_range(src, L) && !remote)
return
fluid_source.trans_to(L, total_fluids*G.fluid_transfer_factor)
total_fluids -= total_fluids*G.fluid_transfer_factor
if(total_fluids > 5)
@@ -408,6 +410,7 @@
if (L.mind == obj.target)
L.mind.sexed = TRUE //sexed
to_chat(src, "<span class='userlove'>You feel deep satisfaction with yourself.</span>")
//Hyper - remote
if(impreg)
//Role them odds, only people with the dicks can send the chance to the person with the settings enabled at the momment.
@@ -491,7 +494,7 @@
if(!G.dontlist)
genitals_list += G
if(genitals_list.len)
ret_organ = input(src, "", "Gentials", null) as null|obj in genitals_list
ret_organ = input(src, "", "Genitals", null) as null|obj in genitals_list
return ret_organ
return null //error stuff
@@ -430,12 +430,12 @@
//otherwise, appear under clothing
if(G.slot == "penis" || G.slot == "testicles")
if(G.size < 3) //is actually "less than 11 inches"
genital_overlay.layer = -GENITALS_UNDER_LAYER
genital_overlay.layer = -GENITALS_UNDER_LAYER
if(G.slot == "breasts")
var/obj/item/organ/genital/breasts/B = G
if(B.cached_size < 8) //anything smaller than a g-cup
genital_overlay.layer = -GENITALS_UNDER_LAYER
//Get the icon
genital_overlay.icon_state = "[G.slot]_[S.icon_state]_[size]_[aroused_state]_[layertext]"
colourcode = S.color_src
@@ -99,16 +99,23 @@
path = /obj/item/clothing/head/crystalline
ckeywhitelist = list("dragontrance")
/datum/gear/lyricalpawsplush
name = "Winter Dawn Plushie"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/plush/mammal/lyricalpaws
ckeywhitelist = list("lyricalpaws")
/datum/gear/lyricalpawssuit
name = "Fleet Commander's Overcoat"
category = SLOT_IN_BACKPACK
path = /obj/item/clothing/suit/hooded/wintercoat/chloe
path = /obj/item/clothing/suit/chloe
ckeywhitelist = list("lyricalpaws")
/datum/gear/lyricalpawshat
name = "Fleet Commander's Beret"
category = SLOT_IN_BACKPACK
path = /obj/item/clothing/head/chloe
cost = 0
ckeywhitelist = list("lyricalpaws")
datum/gear/darksabresheath
name = "Dark Sabre Sheath"
category = SLOT_IN_BACKPACK
path = /obj/item/storage/belt/sabre/chloesabre
ckeywhitelist = list("lyricalpaws")
/datum/gear/cherostavikmask
@@ -175,12 +175,12 @@
name = "Teal Lipstick"
category = SLOT_IN_BACKPACK
path = /obj/item/lipstick/teal
/datum/gear/lipstick_fuchsia
name = "Fuchsia Lipstick"
category = SLOT_IN_BACKPACK
path = /obj/item/lipstick/fuchsia
/datum/gear/lipstick_navy
name = "Navy Blue Lipstick"
category = SLOT_IN_BACKPACK
@@ -196,6 +196,46 @@
category = SLOT_IN_BACKPACK
path = /obj/item/lipstick/white
/datum/gear/nailpolish_red
name = "Red Nail Polish"
category = SLOT_IN_BACKPACK
path = /obj/item/nailpolish/red
/datum/gear/nailpolish_blue
name = "Blue Nail Polish"
category = SLOT_IN_BACKPACK
path = /obj/item/nailpolish/blue
/datum/gear/nailpolish_aqua
name = "Cyan Nail Polish"
category = SLOT_IN_BACKPACK
path = /obj/item/nailpolish/aqua
/datum/gear/nailpolish_black
name = "Black Nail Polish"
category = SLOT_IN_BACKPACK
path = /obj/item/nailpolish/black
/datum/gear/nailpolish_white
name = "White Nail Polish"
category = SLOT_IN_BACKPACK
path = /obj/item/nailpolish/white
/datum/gear/nailpolish_navy
name = "Navy Nail Polish"
category = SLOT_IN_BACKPACK
path = /obj/item/nailpolish/navy
/datum/gear/nailpolish_yellow
name = "Yellow Nail Polish"
category = SLOT_IN_BACKPACK
path = /obj/item/nailpolish/yellow
/datum/gear/nailpolish_purple
name = "Purple Nail Polish"
category = SLOT_IN_BACKPACK
path = /obj/item/nailpolish/purple
/datum/gear/condom
name = "Condom"
category = SLOT_IN_BACKPACK
@@ -3,6 +3,11 @@
category = SLOT_GLOVES
path = /obj/item/clothing/gloves/fingerless
/datum/gear/gcgloves
name = "Fingerless Leather Gloves"
category = SLOT_GLOVES
path = /obj/item/clothing/gloves/guncaster
/datum/gear/goldring
name = "A gold ring"
category = SLOT_GLOVES
@@ -19,4 +24,4 @@
name = "A diamond ring"
category = SLOT_GLOVES
path = /obj/item/clothing/gloves/ring/diamond
cost = 4
cost = 4
@@ -120,6 +120,17 @@
path = /obj/item/clothing/suit/flakjack
cost = 2
/datum/gear/gcvest
name = "Guncaster's Vest"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/gcvest
/datum/gear/gcvestalt
name = "Hellraider's Vest"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/gcvest/alt
/datum/gear/trekds9_coat
name = "DS9 Overcoat (use uniform)"
category = SLOT_WEAR_SUIT
@@ -218,3 +229,8 @@
name = "Pharoah tunic"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/nemes
/datum/gear/fluffcoat
name = "Winter labcoat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/toggle/labcoat/formallab
@@ -458,6 +458,12 @@
path = /obj/item/clothing/under/polychromic/bottomless
cost = 2
/datum/gear/polysweatervirgin
name = "Polychromic Virginkiller Sweater"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/polychromic/vsweater
cost = 2
/datum/gear/corset
name = "Corset"
category = SLOT_W_UNIFORM
@@ -57,6 +57,7 @@ datum/preferences/copy_to(mob/living/carbon/human/character, icon_updates = 1)
..()
character.give_genitals(TRUE)
character.flavor_text = features["flavor_text"] //Let's update their flavor_text at least initially
character.ooc_text = features["ooc_text"] //Let's update their flavor_text at least initially
character.canbearoused = arousable
character.client?.prefs.lewdchem = lewdchem
if(icon_updates)
@@ -7,6 +7,7 @@
features["ipc_antenna"] = sanitize_inlist(features["ipc_antenna"], GLOB.ipc_antennas_list)
//Citadel
features["flavor_text"] = sanitize_text(features["flavor_text"], initial(features["flavor_text"]))
features["ooc_text"] = sanitize_text(features["ooc_text"], initial(features["ooc_text"]))
if(!features["mcolor2"] || features["mcolor"] == "#000")
features["mcolor2"] = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F")
if(!features["mcolor3"] || features["mcolor"] == "#000")
@@ -84,6 +85,7 @@
WRITE_FILE(S["feature_can_get_preg"], features["can_get_preg"])
//flavor text
WRITE_FILE(S["feature_flavor_text"], features["flavor_text"])
WRITE_FILE(S["feature_ooc_text"], features["ooc_text"])
//custom job titles
WRITE_FILE(S["alt_titles_preferences"], alt_titles_preferences)
//belly
@@ -209,4 +209,26 @@
primary_color = "#808080" //RGB in hexcode
secondary_color = "#FFFFFF"
hastertiary = FALSE
body_parts_covered= CHEST|GROIN
body_parts_covered= CHEST|GROIN
/obj/item/clothing/under/polychromic/vsweater
name = "virgin killer sweater"
desc = "A sweater designed to be as provocative as possible, with almost all of the back missing, bairly hiding anything from that angle. Warning: Doesn't actually kill virgins."
icon_state = "vkiller"
item_color = "vkiller"
item_state = "rainbow"
primary_color = "#E1D6C9" //RGB in hexcode
secondary_color = "#FFFFFF"
hastertiary = FALSE
body_parts_covered= CHEST|GROIN
/obj/item/clothing/under/polychromic/onepeice
name = "polychromic swimsuit"
desc = "Perfect for summer, and those who want to have something with a bit more material."
icon_state = "onepeice"
item_color = "onepeice"
item_state = "rainbow"
primary_color = "#010052" //RGB in hexcode
secondary_color = "#eb7a7a"
tertiary_color = "#ffffff"
body_parts_covered = CHEST|GROIN
@@ -1558,6 +1558,14 @@ datum/sprite_accessory/mam_tails/insect
name = "Wolf"
icon_state = "wolf"
/datum/sprite_accessory/mam_tails/spade
name = "Demon Spade"
icon_state = "spade"
/datum/sprite_accessory/mam_tails_animated/spade
name = "Demon Spade"
icon_state = "spade"
/datum/sprite_accessory/mam_tails/synthliz
recommended_species = list("synthliz")
color_src = MUTCOLORS
@@ -19,13 +19,14 @@
incomingstammult = max(0.01, incomingstammult/(amount*0.05))
return amount
/*
/mob/living/carbon/doSprintLossTiles(tiles)
doSprintBufferRegen(FALSE) //first regen.
if(sprint_buffer)
var/use = min(tiles, sprint_buffer)
sprint_buffer -= use
tiles -= use
update_hud_sprint_bar()
// update_hud_sprint_bar()
if(!tiles) //we had enough, we're done!
return
adjustStaminaLoss(tiles * sprint_stamina_cost) //use stamina to cover deficit.
@@ -34,5 +35,4 @@
var/diff = world.time - sprint_buffer_regen_last
sprint_buffer_regen_last = world.time
sprint_buffer = min(sprint_buffer_max, sprint_buffer + sprint_buffer_regen_ds * diff)
if(updating)
update_hud_sprint_bar()
*/
@@ -20,6 +20,7 @@
. += 1
. += ..()
/*
/mob/living/carbon/human/proc/togglesprint() // If you call this proc outside of hotkeys or clicking the HUD button, I'll be disappointed in you.
sprinting = !sprinting
if(!resting && m_intent == MOVE_INTENT_RUN && canmove)
@@ -27,11 +28,12 @@
playsound_local(src, 'modular_citadel/sound/misc/sprintactivate.ogg', 50, FALSE, pressure_affected = FALSE)
else
playsound_local(src, 'modular_citadel/sound/misc/sprintdeactivate.ogg', 50, FALSE, pressure_affected = FALSE)
if(hud_used && hud_used.static_inventory)
for(var/obj/screen/sprintbutton/selector in hud_used.static_inventory)
selector.insert_witty_toggle_joke_here(src)
// if(hud_used && hud_used.static_inventory)
// for(var/obj/screen/sprintbutton/selector in hud_used.static_inventory)
// selector.insert_witty_toggle_joke_here(src)
return TRUE
/mob/living/carbon/human/proc/sprint_hotkey(targetstatus)
if(targetstatus ? !sprinting : sprinting)
togglesprint()
*/
@@ -15,7 +15,7 @@
. = ..()
if(!client || !hud_used)
return
if(hud_used.staminas)
hud_used.staminas.icon_state = staminahudamount()
if(hud_used.staminabuffer)
hud_used.staminabuffer.icon_state = staminabufferhudamount()
// if(hud_used.staminas)
// hud_used.staminas.icon_state = staminahudamount()
// if(hud_used.staminabuffer)
// hud_used.staminabuffer.icon_state = staminabufferhudamount()
@@ -1,3 +1,2 @@
/mob/living/carbon/Life()
. = ..()
doSprintBufferRegen()
. = ..()
@@ -127,6 +127,8 @@
update_canmove()
update_health_hud()
/*
/mob/living/proc/update_hud_sprint_bar()
if(hud_used && hud_used.sprint_buffer)
hud_used.sprint_buffer.update_to_mob(src)
*/
@@ -3,15 +3,12 @@
/mob/living/silicon/robot/Move(NewLoc, direct)
. = ..()
if(. && sprinting && !(movement_type & FLYING) && canmove && !resting)
if(!(cell?.use(25)))
togglesprint(TRUE)
/mob/living/silicon/robot/movement_delay()
. = ..()
if(!resting && !sprinting)
. += 1
/*
/mob/living/silicon/robot/proc/togglesprint(shutdown = FALSE) //Basically a copypaste of the proc from /mob/living/carbon/human
if(!shutdown && (!cell || cell.charge < 25))
return FALSE
@@ -23,11 +20,12 @@
if(shutdown)
playsound_local(src, 'sound/effects/light_flicker.ogg', 50, FALSE, pressure_affected = FALSE)
playsound_local(src, 'modular_citadel/sound/misc/sprintdeactivate.ogg', 50, FALSE, pressure_affected = FALSE)
if(hud_used && hud_used.static_inventory)
for(var/obj/screen/sprintbutton/selector in hud_used.static_inventory)
selector.insert_witty_toggle_joke_here(src)
// if(hud_used && hud_used.static_inventory)
// for(var/obj/screen/sprintbutton/selector in hud_used.static_inventory)
// selector.insert_witty_toggle_joke_here(src)
return TRUE
/mob/living/silicon/robot/proc/sprint_hotkey(targetstatus)
if(targetstatus ? !sprinting : sprinting)
togglesprint()
*/
@@ -32,6 +32,8 @@
/datum/reagent/fermi/breast_enlarger/on_mob_add(mob/living/carbon/M)
. = ..()
if(iswendigo(M))
return
if(!ishuman(M)) //The monkey clause
if(volume >= 15) //To prevent monkey breast farms
var/turf/T = get_turf(M)
@@ -164,6 +166,8 @@
/datum/reagent/fermi/BEsmaller_hypo/on_mob_add(mob/living/carbon/M)
. = ..()
if(iswendigo(M))
return
if(!M.getorganslot("vagina"))
if(M.dna.features["has_vag"])
var/obj/item/organ/genital/vagina/nV = new
@@ -208,6 +212,8 @@
/datum/reagent/fermi/penis_enlarger/on_mob_add(mob/living/carbon/M)
. = ..()
if(iswendigo(M))
return
if(!ishuman(M)) //Just monkeying around.
if(volume >= 15) //to prevent monkey penis farms
var/turf/T = get_turf(M)
@@ -351,6 +357,8 @@
/datum/reagent/fermi/PEsmaller_hypo/on_mob_add(mob/living/carbon/M)
. = ..()
if(iswendigo(M))
return
if(!M.getorganslot("testicles"))
if(M.dna.features["has_balls"])
var/obj/item/organ/genital/testicles/nT = new
@@ -12,7 +12,6 @@
glass_icon_state = "semen"
glass_name = "chalice of semen"
glass_desc = "In the Sumerian mythology, Enki - the God of water, was believed to have created the Tigris and Euphrates rivers by masturbating and ejaculating into their empty riverbeds."
hydration = 2 * REAGENTS_METABOLISM //thats one way to stay hydrated...
/datum/reagent/consumable/semen/reaction_turf(turf/T, reac_volume)
if(!istype(T))
@@ -56,7 +55,6 @@
color = "#AAAAAA77"
can_synth = FALSE
nutriment_factor = 0.5 * REAGENTS_METABOLISM
hydration = 1 * REAGENTS_METABOLISM //thats one way to stay hydrated...
/obj/effect/decal/cleanable/femcum
name = "female ejaculate"