Merge remote-tracking branch 'refs/remotes/Citadel-Station-13/master' into override-override

This commit is contained in:
Poojawa
2018-09-27 05:09:23 -05:00
24 changed files with 143 additions and 50 deletions
@@ -57,9 +57,3 @@
color = "#[skintone2hex(H.skin_tone)]"
else
color = "#[owner.dna.features["breasts_color"]]"
/obj/item/organ/genital/breasts/is_exposed()
. = ..()
if(.)
return TRUE
return owner.is_chest_exposed()
@@ -19,6 +19,7 @@
var/obj/item/organ/genital/linked_organ
var/through_clothes = FALSE
var/internal = FALSE
var/hidden = FALSE
/obj/item/organ/genital/Initialize()
. = ..()
@@ -47,18 +48,39 @@
/obj/item/organ/genital/proc/is_exposed()
if(!owner)
return FALSE
if(hidden)
return FALSE
if(internal)
return FALSE
if(through_clothes)
return TRUE
/obj/item/organ/genital/proc/toggle_through_clothes()
if(through_clothes)
through_clothes = FALSE
owner.exposed_genitals -= src
else
through_clothes = TRUE
owner.exposed_genitals += src
switch(zone) //update as more genitals are added
if("chest")
return owner.is_chest_exposed()
if("groin")
return owner.is_groin_exposed()
return FALSE
/obj/item/organ/genital/proc/toggle_visibility(visibility)
switch(visibility)
if("Always visible")
through_clothes = TRUE
hidden = FALSE
if(!(src in owner.exposed_genitals))
owner.exposed_genitals += src
if("Hidden by clothes")
through_clothes = FALSE
hidden = FALSE
if(src in owner.exposed_genitals)
owner.exposed_genitals -= src
if("Always hidden")
through_clothes = FALSE
hidden = TRUE
if(src in owner.exposed_genitals)
owner.exposed_genitals -= src
if(ishuman(owner)) //recast to use update genitals proc
var/mob/living/carbon/human/H = owner
H.update_genitals()
@@ -78,9 +100,10 @@
return
//Full list of exposable genitals created
var/obj/item/organ/genital/picked_organ
picked_organ = input(src, "Expose/Hide genitals", "Choose which genitalia to expose/hide", null) in genital_list
picked_organ = input(src, "Choose which genitalia to expose/hide", "Expose/Hide genitals", null) in genital_list
if(picked_organ)
picked_organ.toggle_through_clothes()
var/picked_visibility = input(src, "Choose visibility setting", "Expose/Hide genitals", "Hidden by clothes") in list("Always visible", "Hidden by clothes", "Always hidden")
picked_organ.toggle_visibility(picked_visibility)
return
@@ -251,6 +274,8 @@
return
if(NOGENITALS in species_traits)//golems and such
return
if(H.has_trait(TRAIT_HUSK))
return
var/list/genitals_to_add = list()
var/list/relevant_layers = list(GENITALS_BEHIND_LAYER, GENITALS_ADJ_LAYER, GENITALS_FRONT_LAYER)
@@ -260,8 +285,6 @@
for(var/L in relevant_layers) //Less hardcode
H.remove_overlay(L)
if(H.has_trait(TRAIT_HUSK))
return
//start scanning for genitals
//var/list/worn_stuff = H.get_equipped_items()//cache this list so it's not built again
for(var/obj/item/organ/O in H.internal_organs)
@@ -58,9 +58,3 @@
if(linked_organ)
linked_organ.linked_organ = null
linked_organ = null
/obj/item/organ/genital/penis/is_exposed()
. = ..()
if(.)
return TRUE
return owner.is_groin_exposed()
@@ -64,9 +64,3 @@
if(linked_organ)
linked_organ.linked_organ = null
linked_organ = null
/obj/item/organ/genital/vagina/is_exposed()
. = ..()
if(.)
return TRUE
return owner.is_groin_exposed()
@@ -241,7 +241,6 @@
icon_state = "fedcapofficer"
alternate_worn_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi'
item_state = "fedcapofficer_mob"
armor = list("melee" = 10, "bullet" = 10, "laser" = 10,"energy" = 10, "bomb" = 0, "bio" = 10, "rad" = 10, "fire" = 0, "acid" = 0)
//Variants
/obj/item/clothing/head/caphat/formal/fedcover/medsci
@@ -183,11 +183,16 @@
var/atom/movable/AM = thing
if(isliving(AM))
var/mob/living/L = AM
var/mob/living/OW = owner
if(L.absorbed && !include_absorbed)
continue
L.absorbed = FALSE
L.stop_sound_channel(CHANNEL_PREYLOOP)
L.cure_blind("belly_[REF(src)]")
SEND_SIGNAL(OW, COMSIG_CLEAR_MOOD_EVENT, "fedpred", /datum/mood_event/fedpred)
SEND_SIGNAL(L, COMSIG_CLEAR_MOOD_EVENT, "fedprey", /datum/mood_event/fedprey)
SEND_SIGNAL(OW, COMSIG_ADD_MOOD_EVENT, "emptypred", /datum/mood_event/emptypred)
SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "emptyprey", /datum/mood_event/emptyprey)
AM.forceMove(destination) // Move the belly contents into the same location as belly's owner.
count++
for(var/mob/M in get_hearers_in_view(5, get_turf(owner)))
@@ -219,6 +224,11 @@
var/mob/living/OW = owner
ML.stop_sound_channel(CHANNEL_PREYLOOP)
ML.cure_blind("belly_[REF(src)]")
SEND_SIGNAL(OW, COMSIG_CLEAR_MOOD_EVENT, "fedpred", /datum/mood_event/fedpred)
SEND_SIGNAL(ML, COMSIG_CLEAR_MOOD_EVENT, "fedprey", /datum/mood_event/fedprey)
SEND_SIGNAL(OW, COMSIG_ADD_MOOD_EVENT, "emptypred", /datum/mood_event/emptypred)
SEND_SIGNAL(ML, COMSIG_ADD_MOOD_EVENT, "emptyprey", /datum/mood_event/emptyprey)
if(ML.absorbed)
ML.absorbed = FALSE
if(ishuman(M) && ishuman(OW))
@@ -242,7 +252,14 @@
return
if (prey.buckled)
prey.buckled.unbuckle_mob(prey,TRUE)
if(!isbelly(prey.loc))
SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "fedpred", /datum/mood_event/fedpred)
SEND_SIGNAL(prey, COMSIG_ADD_MOOD_EVENT, "fedprey", /datum/mood_event/fedprey)
else
SEND_SIGNAL(owner, COMSIG_CLEAR_MOOD_EVENT, "emptypred", /datum/mood_event/emptypred)
SEND_SIGNAL(prey, COMSIG_CLEAR_MOOD_EVENT, "emptyprey", /datum/mood_event/emptyprey)
prey.forceMove(src)
var/sound/preyloop = sound('sound/vore/prey/loop.ogg', repeat = TRUE)
if(!silent)