Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into Ghommie-cit611
This commit is contained in:
@@ -33,7 +33,7 @@
|
||||
hidden_underwear = on_off
|
||||
hidden_socks = on_off
|
||||
|
||||
update_body()
|
||||
update_body(TRUE)
|
||||
|
||||
|
||||
/mob/living/carbon/human/proc/adjust_arousal(strength,aphro = FALSE,maso = FALSE) // returns all genitals that were adjust
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/obj/item/organ/genital
|
||||
color = "#fcccb3"
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
var/shape = "human"
|
||||
var/shape
|
||||
var/sensitivity = 1 // wow if this were ever used that'd be cool but it's not but i'm keeping it for my unshit code
|
||||
var/genital_flags //see citadel_defines.dm
|
||||
var/masturbation_verb = "masturbate"
|
||||
@@ -41,6 +41,9 @@
|
||||
return
|
||||
update_size()
|
||||
update_appearance()
|
||||
if(genital_flags & UPDATE_OWNER_APPEARANCE && owner && ishuman(owner))
|
||||
var/mob/living/carbon/human/H = owner
|
||||
H.update_genitals()
|
||||
if(linked_organ_slot || (linked_organ && !owner))
|
||||
update_link()
|
||||
|
||||
@@ -49,9 +52,16 @@
|
||||
var/list/exposed_genitals = list() //Keeping track of them so we don't have to iterate through every genitalia and see if exposed
|
||||
|
||||
/obj/item/organ/genital/proc/is_exposed()
|
||||
if(!owner || CHECK_BITFIELD(genital_flags, GENITAL_INTERNAL) || CHECK_BITFIELD(genital_flags, GENITAL_HIDDEN))
|
||||
if(!owner || genital_flags & (GENITAL_INTERNAL|GENITAL_HIDDEN))
|
||||
return FALSE
|
||||
if(CHECK_BITFIELD(genital_flags, GENITAL_THROUGH_CLOTHES))
|
||||
if(genital_flags & GENITAL_UNDIES_HIDDEN && ishuman(owner))
|
||||
var/mob/living/carbon/human/H = owner
|
||||
if(!(NO_UNDERWEAR in H.dna.species.species_traits))
|
||||
var/datum/sprite_accessory/underwear/top/T = H.hidden_undershirt ? null : GLOB.undershirt_list[H.undershirt]
|
||||
var/datum/sprite_accessory/underwear/bottom/B = H.hidden_underwear ? null : GLOB.underwear_list[H.underwear]
|
||||
if(zone == BODY_ZONE_CHEST ? (T?.covers_chest || B?.covers_chest) : (T?.covers_groin || B?.covers_groin))
|
||||
return FALSE
|
||||
if(genital_flags & GENITAL_THROUGH_CLOTHES)
|
||||
return TRUE
|
||||
|
||||
switch(zone) //update as more genitals are added
|
||||
@@ -60,25 +70,21 @@
|
||||
if(BODY_ZONE_PRECISE_GROIN)
|
||||
return owner.is_groin_exposed()
|
||||
|
||||
/obj/item/organ/genital/proc/toggle_visibility(visibility)
|
||||
/obj/item/organ/genital/proc/toggle_visibility(visibility, update = TRUE)
|
||||
genital_flags &= ~(GENITAL_THROUGH_CLOTHES|GENITAL_HIDDEN|GENITAL_UNDIES_HIDDEN)
|
||||
if(owner)
|
||||
owner.exposed_genitals -= src
|
||||
switch(visibility)
|
||||
if("Always visible")
|
||||
ENABLE_BITFIELD(genital_flags, GENITAL_THROUGH_CLOTHES)
|
||||
DISABLE_BITFIELD(genital_flags, GENITAL_HIDDEN)
|
||||
if(!(src in owner.exposed_genitals))
|
||||
if(GEN_VISIBLE_ALWAYS)
|
||||
genital_flags |= GENITAL_THROUGH_CLOTHES
|
||||
if(owner)
|
||||
owner.exposed_genitals += src
|
||||
if("Hidden by clothes")
|
||||
DISABLE_BITFIELD(genital_flags, GENITAL_THROUGH_CLOTHES)
|
||||
DISABLE_BITFIELD(genital_flags, GENITAL_HIDDEN)
|
||||
if(src in owner.exposed_genitals)
|
||||
owner.exposed_genitals -= src
|
||||
if("Always hidden")
|
||||
DISABLE_BITFIELD(genital_flags, GENITAL_THROUGH_CLOTHES)
|
||||
ENABLE_BITFIELD(genital_flags, GENITAL_HIDDEN)
|
||||
if(src in owner.exposed_genitals)
|
||||
owner.exposed_genitals -= src
|
||||
if(GEN_VISIBLE_NO_UNDIES)
|
||||
genital_flags |= GENITAL_UNDIES_HIDDEN
|
||||
if(GEN_VISIBLE_NEVER)
|
||||
genital_flags |= GENITAL_HIDDEN
|
||||
|
||||
if(ishuman(owner)) //recast to use update genitals proc
|
||||
if(update && owner && ishuman(owner)) //recast to use update genitals proc
|
||||
var/mob/living/carbon/human/H = owner
|
||||
H.update_genitals()
|
||||
|
||||
@@ -87,6 +93,10 @@
|
||||
set name = "Expose/Hide genitals"
|
||||
set desc = "Allows you to toggle which genitals should show through clothes or not."
|
||||
|
||||
if(stat != CONSCIOUS)
|
||||
to_chat(usr, "<span class='warning'>You can toggle genitals visibility right now...</span>")
|
||||
return
|
||||
|
||||
var/list/genital_list = list()
|
||||
for(var/obj/item/organ/genital/G in internal_organs)
|
||||
if(!CHECK_BITFIELD(G.genital_flags, GENITAL_INTERNAL))
|
||||
@@ -95,10 +105,11 @@
|
||||
return
|
||||
//Full list of exposable genitals created
|
||||
var/obj/item/organ/genital/picked_organ
|
||||
picked_organ = input(src, "Choose which genitalia to expose/hide", "Expose/Hide genitals", null) in genital_list
|
||||
if(picked_organ)
|
||||
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)
|
||||
picked_organ = input(src, "Choose which genitalia to expose/hide", "Expose/Hide genitals") as null|anything in genital_list
|
||||
if(picked_organ && (picked_organ in internal_organs))
|
||||
var/picked_visibility = input(src, "Choose visibility setting", "Expose/Hide genitals") as null|anything in GLOB.genitals_visibility_toggles
|
||||
if(picked_visibility && picked_organ && (picked_organ in internal_organs))
|
||||
picked_organ.toggle_visibility(picked_visibility)
|
||||
return
|
||||
|
||||
/mob/living/carbon/verb/toggle_arousal_state()
|
||||
@@ -182,14 +193,19 @@
|
||||
if(.)
|
||||
update()
|
||||
RegisterSignal(owner, COMSIG_MOB_DEATH, .proc/update_appearance)
|
||||
if(genital_flags & GENITAL_THROUGH_CLOTHES)
|
||||
owner.exposed_genitals += src
|
||||
|
||||
/obj/item/organ/genital/Remove(special = FALSE)
|
||||
. = ..()
|
||||
var/mob/living/carbon/human/H = .
|
||||
var/mob/living/carbon/C = .
|
||||
update()
|
||||
if(!QDELETED(H))
|
||||
UnregisterSignal(H, COMSIG_MOB_DEATH)
|
||||
H.update_genitals()
|
||||
if(!QDELETED(C))
|
||||
if(genital_flags & UPDATE_OWNER_APPEARANCE && ishuman(C))
|
||||
var/mob/living/carbon/human/H = .
|
||||
H.update_genitals()
|
||||
C.exposed_genitals -= src
|
||||
UnregisterSignal(C, COMSIG_MOB_DEATH)
|
||||
|
||||
//proc to give a player their genitals and stuff when they log in
|
||||
/mob/living/carbon/human/proc/give_genitals(clean = FALSE)//clean will remove all pre-existing genitals. proc will then give them any genitals that are enabled in their DNA
|
||||
@@ -208,12 +224,6 @@
|
||||
give_genital(/obj/item/organ/genital/breasts)
|
||||
if(dna.features["has_cock"])
|
||||
give_genital(/obj/item/organ/genital/penis)
|
||||
/*
|
||||
if(dna.features["has_ovi"])
|
||||
give_genital(/obj/item/organ/genital/ovipositor)
|
||||
if(dna.features["has_eggsack"])
|
||||
give_genital(/obj/item/organ/genital/eggsack)
|
||||
*/
|
||||
|
||||
/mob/living/carbon/human/proc/give_genital(obj/item/organ/genital/G)
|
||||
if(!dna || (NOGENITALS in dna.species.species_traits) || getorganslot(initial(G.slot)))
|
||||
@@ -292,10 +302,21 @@
|
||||
if(!S || S.icon_state == "none")
|
||||
continue
|
||||
var/aroused_state = G.aroused_state && S.alt_aroused
|
||||
var/accessory_icon = S.icon
|
||||
var/do_center = S.center
|
||||
var/dim_x = S.dimension_x
|
||||
var/dim_y = S.dimension_y
|
||||
if(G.genital_flags & GENITAL_CAN_TAUR && S.taur_icon && (!S.feat_taur || dna.features[S.feat_taur]) && dna.species.mutant_bodyparts["taur"])
|
||||
var/datum/sprite_accessory/taur/T = GLOB.taur_list[dna.features["taur"]]
|
||||
if(T?.taur_mode & S.accepted_taurs)
|
||||
accessory_icon = S.taur_icon
|
||||
do_center = TRUE
|
||||
dim_x = S.taur_dimension_x
|
||||
dim_y = S.taur_dimension_y
|
||||
|
||||
var/mutable_appearance/genital_overlay = mutable_appearance(S.icon, layer = -layer)
|
||||
if(S.center)
|
||||
genital_overlay = center_image(genital_overlay, S.dimension_x, S.dimension_y)
|
||||
var/mutable_appearance/genital_overlay = mutable_appearance(accessory_icon, layer = -layer)
|
||||
if(do_center)
|
||||
genital_overlay = center_image(genital_overlay, dim_x, dim_y)
|
||||
|
||||
if(dna.species.use_skintones && dna.features["genitals_use_skintone"])
|
||||
genital_overlay.color = "#[skintone2hex(skin_tone)]"
|
||||
@@ -312,9 +333,9 @@
|
||||
|
||||
genital_overlay.icon_state = "[G.slot]_[S.icon_state]_[size][dna.species.use_skintones ? "_s" : ""]_[aroused_state]_[layertext]"
|
||||
|
||||
if(layer == GENITALS_FRONT_LAYER && CHECK_BITFIELD(G.genital_flags, GENITAL_THROUGH_CLOTHES))
|
||||
if(layers_num[layer] == GENITALS_FRONT_LAYER && G.genital_flags & GENITAL_THROUGH_CLOTHES)
|
||||
genital_overlay.layer = -GENITALS_EXPOSED_LAYER
|
||||
LAZYADD(fully_exposed, genital_overlay) // to be added to a layer with higher priority than clothes, hence the name of the bitflag.
|
||||
LAZYADD(fully_exposed, genital_overlay)
|
||||
else
|
||||
genital_overlay.layer = -layers_num[layer]
|
||||
standing += genital_overlay
|
||||
@@ -343,11 +364,10 @@
|
||||
if(ishuman(src) && dna.species.id == "human")
|
||||
dna.features["genitals_use_skintone"] = TRUE
|
||||
dna.species.use_skintones = TRUE
|
||||
if(MUTCOLORS)
|
||||
if(src.dna.species.fixed_mut_color)
|
||||
dna.features["cock_color"] = "[dna.species.fixed_mut_color]"
|
||||
dna.features["breasts_color"] = "[dna.species.fixed_mut_color]"
|
||||
return
|
||||
if(src.dna.species.fixed_mut_color)
|
||||
dna.features["cock_color"] = "[dna.species.fixed_mut_color]"
|
||||
dna.features["breasts_color"] = "[dna.species.fixed_mut_color]"
|
||||
return
|
||||
//So people who haven't set stuff up don't get rainbow surprises.
|
||||
dna.features["cock_color"] = "[dna.features["mcolor"]]"
|
||||
dna.features["breasts_color"] = "[dna.features["mcolor"]]"
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
/datum/sprite_accessory
|
||||
var/alt_aroused = FALSE //CIT CODE if this is TRUE, then the genitals will use an alternate icon_state when aroused.
|
||||
var/taur_icon //leave null if the genital doesn't have a taur counterpart.
|
||||
var/accepted_taurs = STYLE_HOOF_TAURIC|STYLE_PAW_TAURIC //Types that match with the accessory.
|
||||
var/feat_taur //the text string of the dna feature to check for those who want to opt out.
|
||||
var/taur_dimension_y = 32
|
||||
var/taur_dimension_x = 32
|
||||
|
||||
|
||||
//DICKS,COCKS,PENISES,WHATEVER YOU WANT TO CALL THEM
|
||||
@@ -8,6 +13,7 @@
|
||||
name = "penis" //the preview name of the accessory
|
||||
color_src = "cock_color"
|
||||
alt_aroused = TRUE
|
||||
feat_taur = "cock_taur"
|
||||
|
||||
/datum/sprite_accessory/penis/human
|
||||
icon_state = "human"
|
||||
@@ -16,10 +22,14 @@
|
||||
/datum/sprite_accessory/penis/knotted
|
||||
icon_state = "knotted"
|
||||
name = "Knotted"
|
||||
taur_icon = 'modular_citadel/icons/obj/genitals/taur_penis_onmob.dmi'
|
||||
taur_dimension_y = 64
|
||||
|
||||
/datum/sprite_accessory/penis/flared
|
||||
icon_state = "flared"
|
||||
name = "Flared"
|
||||
taur_icon = 'modular_citadel/icons/obj/genitals/taur_penis_onmob.dmi'
|
||||
taur_dimension_y = 64
|
||||
|
||||
/datum/sprite_accessory/penis/barbknot
|
||||
icon_state = "barbknot"
|
||||
@@ -28,6 +38,8 @@
|
||||
/datum/sprite_accessory/penis/tapered
|
||||
icon_state = "tapered"
|
||||
name = "Tapered"
|
||||
taur_icon = 'modular_citadel/icons/obj/genitals/taur_penis_onmob.dmi'
|
||||
taur_dimension_y = 64
|
||||
|
||||
/datum/sprite_accessory/penis/tentacle
|
||||
icon_state = "tentacle"
|
||||
@@ -41,46 +53,16 @@
|
||||
icon_state = "hemiknot"
|
||||
name = "Knotted Hemi"
|
||||
|
||||
|
||||
////////////////////////
|
||||
// Taur cocks go here //
|
||||
////////////////////////
|
||||
/datum/sprite_accessory/penis/taur_flared
|
||||
icon = 'modular_citadel/icons/obj/genitals/taur_penis_onmob.dmi' //Needed larger width
|
||||
icon_state = "flared"
|
||||
name = "Taur, Flared"
|
||||
center = TRUE //Center the image 'cause 2-tile wide.
|
||||
dimension_x = 64
|
||||
|
||||
/datum/sprite_accessory/penis/taur_knotted
|
||||
icon = 'modular_citadel/icons/obj/genitals/taur_penis_onmob.dmi' //Needed larger width
|
||||
icon_state = "knotted"
|
||||
name = "Taur, Knotted"
|
||||
center = TRUE //Center the image 'cause 2-tile wide.
|
||||
dimension_x = 64
|
||||
|
||||
/datum/sprite_accessory/penis/taur_tapered
|
||||
icon = 'modular_citadel/icons/obj/genitals/taur_penis_onmob.dmi' //Needed larger width
|
||||
icon_state = "tapered"
|
||||
name = "Taur, Tapered"
|
||||
center = TRUE //Center the image 'cause 2-tile wide.
|
||||
dimension_x = 64
|
||||
|
||||
//Testicles
|
||||
//These ones aren't inert
|
||||
/datum/sprite_accessory/testicles
|
||||
icon = 'modular_citadel/icons/obj/genitals/testicles_onmob.dmi'
|
||||
icon_state = "testicle"
|
||||
name = "testicle" //the preview name of the accessory
|
||||
color_src = "balls_color"
|
||||
|
||||
/datum/sprite_accessory/testicles/hidden
|
||||
icon_state = "none"
|
||||
name = "Hidden"
|
||||
|
||||
/datum/sprite_accessory/testicles/single
|
||||
icon_state = "single"
|
||||
name = "Single"
|
||||
name = "Single" //Single as "single pair", for clarity.
|
||||
|
||||
//Vaginas
|
||||
/datum/sprite_accessory/vagina
|
||||
@@ -137,14 +119,3 @@
|
||||
/datum/sprite_accessory/breasts/sextuple
|
||||
icon_state = "sextuple"
|
||||
name = "Sextuple"
|
||||
|
||||
//OVIPOSITORS BE HERE
|
||||
/datum/sprite_accessory/ovipositor
|
||||
icon = 'modular_citadel/icons/obj/genitals/penis_onmob.dmi'
|
||||
icon_state = null
|
||||
name = "Ovipositor" //the preview name of the accessory
|
||||
color_src = "cock_color"
|
||||
|
||||
/datum/sprite_accessory/ovipositor/knotted
|
||||
icon_state = "knotted"
|
||||
name = "Knotted"
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
icon = 'modular_citadel/icons/obj/genitals/breasts.dmi'
|
||||
zone = BODY_ZONE_CHEST
|
||||
slot = ORGAN_SLOT_BREASTS
|
||||
size = "c" //refer to the breast_values static list below for the cups associated number values
|
||||
size = BREASTS_SIZE_DEF // "c". Refer to the breast_values static list below for the cups associated number values
|
||||
fluid_id = /datum/reagent/consumable/milk
|
||||
fluid_rate = MILK_RATE
|
||||
shape = "pair"
|
||||
genital_flags = CAN_MASTURBATE_WITH|CAN_CLIMAX_WITH|GENITAL_FUID_PRODUCTION|GENITAL_CAN_AROUSE
|
||||
shape = DEF_BREASTS_SHAPE
|
||||
genital_flags = CAN_MASTURBATE_WITH|CAN_CLIMAX_WITH|GENITAL_FUID_PRODUCTION|GENITAL_CAN_AROUSE|UPDATE_OWNER_APPEARANCE|GENITAL_UNDIES_HIDDEN
|
||||
masturbation_verb = "massage"
|
||||
arousal_verb = "Your breasts start feeling sensitive"
|
||||
unarousal_verb = "Your breasts no longer feel sensitive"
|
||||
@@ -64,9 +64,6 @@
|
||||
icon_state += "_s"
|
||||
else
|
||||
color = "#[owner.dna.features["breasts_color"]]"
|
||||
if(ishuman(owner))
|
||||
var/mob/living/carbon/human/H = owner
|
||||
H.update_genitals()
|
||||
|
||||
//Allows breasts to grow and change size, with sprite changes too.
|
||||
//maximum wah
|
||||
@@ -133,6 +130,7 @@
|
||||
cached_size = size
|
||||
size = breast_values[size]
|
||||
prev_size = cached_size
|
||||
toggle_visibility(D.features["breasts_visibility"], FALSE)
|
||||
|
||||
#undef BREASTS_ICON_MIN_SIZE
|
||||
#undef BREASTS_ICON_MAX_SIZE
|
||||
@@ -1,14 +0,0 @@
|
||||
/obj/item/organ/genital/eggsack
|
||||
name = "Egg sack"
|
||||
desc = "An egg producing reproductive organ."
|
||||
icon_state = "egg_sack"
|
||||
icon = 'modular_citadel/icons/obj/genitals/ovipositor.dmi'
|
||||
zone = BODY_ZONE_PRECISE_GROIN
|
||||
slot = ORGAN_SLOT_TESTICLES
|
||||
genital_flags = GENITAL_INTERNAL|GENITAL_BLACKLISTED //unimplemented
|
||||
linked_organ_slot = ORGAN_SLOT_PENIS
|
||||
color = null //don't use the /genital color since it already is colored
|
||||
var/egg_girth = EGG_GIRTH_DEF
|
||||
var/cum_mult = CUM_RATE_MULT
|
||||
var/cum_rate = CUM_RATE
|
||||
var/cum_efficiency = CUM_EFFICIENCY
|
||||
@@ -1,16 +0,0 @@
|
||||
/obj/item/organ/genital/ovipositor
|
||||
name = "Ovipositor"
|
||||
desc = "An egg laying reproductive organ."
|
||||
icon_state = "ovi_knotted_2"
|
||||
icon = 'modular_citadel/icons/obj/genitals/ovipositor.dmi'
|
||||
zone = BODY_ZONE_PRECISE_GROIN
|
||||
slot = ORGAN_SLOT_PENIS
|
||||
genital_flags = GENITAL_BLACKLISTED //unimplemented
|
||||
shape = "knotted"
|
||||
size = 3
|
||||
layer_index = PENIS_LAYER_INDEX
|
||||
var/length = 6 //inches
|
||||
var/girth = 0
|
||||
var/girth_ratio = COCK_DIAMETER_RATIO_DEF //citadel_defines.dm for these defines
|
||||
var/knot_girth_ratio = KNOT_GIRTH_RATIO_DEF
|
||||
var/list/oviflags = list()
|
||||
@@ -8,9 +8,10 @@
|
||||
masturbation_verb = "stroke"
|
||||
arousal_verb = "You pop a boner"
|
||||
unarousal_verb = "Your boner goes down"
|
||||
genital_flags = CAN_MASTURBATE_WITH|CAN_CLIMAX_WITH|GENITAL_CAN_AROUSE
|
||||
genital_flags = CAN_MASTURBATE_WITH|CAN_CLIMAX_WITH|GENITAL_CAN_AROUSE|UPDATE_OWNER_APPEARANCE|GENITAL_UNDIES_HIDDEN|GENITAL_CAN_TAUR
|
||||
linked_organ_slot = ORGAN_SLOT_TESTICLES
|
||||
fluid_transfer_factor = 0.5
|
||||
shape = DEF_COCK_SHAPE
|
||||
size = 2 //arbitrary value derived from length and diameter for sprites.
|
||||
layer_index = PENIS_LAYER_INDEX
|
||||
var/length = 6 //inches
|
||||
@@ -65,9 +66,9 @@
|
||||
|
||||
if(owner)
|
||||
if (round(length) > round(prev_length))
|
||||
to_chat(owner, "<span class='warning'>Your [pick(GLOB.gentlemans_organ_names)] [pick("swells up to", "flourishes into", "expands into", "bursts forth into", "grows eagerly into", "amplifys into")] a [uppertext(round(length))] inch penis.</b></span>")
|
||||
to_chat(owner, "<span class='warning'>Your [pick(GLOB.dick_nouns)] [pick("swells up to", "flourishes into", "expands into", "bursts forth into", "grows eagerly into", "amplifys into")] a [uppertext(round(length))] inch penis.</b></span>")
|
||||
else if ((round(length) < round(prev_length)) && (length > 0.5))
|
||||
to_chat(owner, "<span class='warning'>Your [pick(GLOB.gentlemans_organ_names)] [pick("shrinks down to", "decreases into", "diminishes into", "deflates into", "shrivels regretfully into", "contracts into")] a [uppertext(round(length))] inch penis.</b></span>")
|
||||
to_chat(owner, "<span class='warning'>Your [pick(GLOB.dick_nouns)] [pick("shrinks down to", "decreases into", "diminishes into", "deflates into", "shrivels regretfully into", "contracts into")] a [uppertext(round(length))] inch penis.</b></span>")
|
||||
icon_state = sanitize_text("penis_[shape]_[size]")
|
||||
diameter = (length * diameter_ratio)//Is it just me or is this ludicous, why not make it exponentially decay?
|
||||
|
||||
@@ -78,7 +79,6 @@
|
||||
var/icon_shape = S ? S.icon_state : "human"
|
||||
icon_state = "penis_[icon_shape]_[size]"
|
||||
var/lowershape = lowertext(shape)
|
||||
desc = "You see [aroused_state ? "an erect" : "a flaccid"] [lowershape] [name]. You estimate it's about [round(length, 0.25)] inch[round(length, 0.25) != 1 ? "es" : ""] long and [round(diameter, 0.25)] inch[round(diameter, 0.25) != 1 ? "es" : ""] in diameter."
|
||||
|
||||
if(owner)
|
||||
if(owner.dna.species.use_skintones && owner.dna.features["genitals_use_skintone"])
|
||||
@@ -88,9 +88,12 @@
|
||||
icon_state += "_s"
|
||||
else
|
||||
color = "#[owner.dna.features["cock_color"]]"
|
||||
if(ishuman(owner))
|
||||
var/mob/living/carbon/human/H = owner
|
||||
H.update_genitals()
|
||||
if(genital_flags & GENITAL_CAN_TAUR && S?.taur_icon && (!S.feat_taur || owner.dna.features[S.feat_taur]) && owner.dna.species.mutant_bodyparts["taur"])
|
||||
var/datum/sprite_accessory/taur/T = GLOB.taur_list[owner.dna.features["taur"]]
|
||||
if(T.taur_mode & S.accepted_taurs) //looks out of place on those.
|
||||
lowershape = "taur, [lowershape]"
|
||||
|
||||
desc = "You see [aroused_state ? "an erect" : "a flaccid"] [lowershape] [name]. You estimate it's about [round(length, 0.25)] inch[round(length, 0.25) != 1 ? "es" : ""] long and [round(diameter, 0.25)] inch[round(diameter, 0.25) != 1 ? "es" : ""] in diameter."
|
||||
|
||||
/obj/item/organ/genital/penis/get_features(mob/living/carbon/human/H)
|
||||
var/datum/dna/D = H.dna
|
||||
@@ -102,3 +105,4 @@
|
||||
diameter_ratio = D.features["cock_diameter_ratio"]
|
||||
shape = D.features["cock_shape"]
|
||||
prev_length = length
|
||||
toggle_visibility(D.features["cock_visibility"], FALSE)
|
||||
@@ -9,10 +9,9 @@
|
||||
arousal_verb = "Your balls ache a little"
|
||||
unarousal_verb = "Your balls finally stop aching, again"
|
||||
linked_organ_slot = ORGAN_SLOT_PENIS
|
||||
genital_flags = CAN_MASTURBATE_WITH|MASTURBATE_LINKED_ORGAN|GENITAL_FUID_PRODUCTION
|
||||
genital_flags = CAN_MASTURBATE_WITH|MASTURBATE_LINKED_ORGAN|GENITAL_FUID_PRODUCTION|UPDATE_OWNER_APPEARANCE|GENITAL_UNDIES_HIDDEN
|
||||
var/size_name = "average"
|
||||
shape = "Single"
|
||||
var/sack_size = BALLS_SACK_SIZE_DEF
|
||||
shape = DEF_BALLS_SHAPE
|
||||
fluid_id = /datum/reagent/consumable/semen
|
||||
masturbation_verb = "massage"
|
||||
layer_index = TESTICLES_LAYER_INDEX
|
||||
@@ -54,9 +53,6 @@
|
||||
icon_state += "_s"
|
||||
else
|
||||
color = "#[owner.dna.features["balls_color"]]"
|
||||
if(ishuman(owner))
|
||||
var/mob/living/carbon/human/H = owner
|
||||
H.update_genitals()
|
||||
|
||||
/obj/item/organ/genital/testicles/get_features(mob/living/carbon/human/H)
|
||||
var/datum/dna/D = H.dna
|
||||
@@ -64,10 +60,8 @@
|
||||
color = "#[skintone2hex(H.skin_tone)]"
|
||||
else
|
||||
color = "#[D.features["balls_color"]]"
|
||||
sack_size = D.features["balls_sack_size"]
|
||||
shape = D.features["balls_shape"]
|
||||
if(D.features["balls_shape"] == "Hidden")
|
||||
ENABLE_BITFIELD(genital_flags, GENITAL_INTERNAL)
|
||||
fluid_rate = D.features["balls_cum_rate"]
|
||||
fluid_mult = D.features["balls_cum_mult"]
|
||||
fluid_efficiency = D.features["balls_efficiency"]
|
||||
toggle_visibility(D.features["balls_visibility"], FALSE)
|
||||
@@ -6,7 +6,8 @@
|
||||
zone = BODY_ZONE_PRECISE_GROIN
|
||||
slot = "vagina"
|
||||
size = 1 //There is only 1 size right now
|
||||
genital_flags = CAN_MASTURBATE_WITH|CAN_CLIMAX_WITH|GENITAL_CAN_AROUSE
|
||||
shape = DEF_VAGINA_SHAPE
|
||||
genital_flags = CAN_MASTURBATE_WITH|CAN_CLIMAX_WITH|GENITAL_CAN_AROUSE|GENITAL_UNDIES_HIDDEN
|
||||
masturbation_verb = "finger"
|
||||
arousal_verb = "You feel wetness on your crotch"
|
||||
unarousal_verb = "You no longer feel wet"
|
||||
@@ -69,3 +70,4 @@
|
||||
else
|
||||
color = "[D.features["vag_color"]]"
|
||||
shape = "[D.features["vag_shape"]]"
|
||||
toggle_visibility(D.features["vag_visibility"], FALSE)
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
/datum/gear/geisha
|
||||
name = "Geisha suit"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/geisha
|
||||
path = /obj/item/clothing/under/costume/geisha
|
||||
ckeywhitelist = list("atiefling")
|
||||
|
||||
/datum/gear/specialscarf
|
||||
@@ -123,7 +123,7 @@
|
||||
/datum/gear/mankini
|
||||
name = "Mankini"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/mankini
|
||||
path = /obj/item/clothing/under/misc/stripper/mankini
|
||||
ckeywhitelist = list("zigfie")
|
||||
|
||||
/datum/gear/pinkshoes
|
||||
@@ -160,7 +160,7 @@
|
||||
/datum/gear/performersoutfit
|
||||
name = "Bluish performer's outfit"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/singery/custom
|
||||
path = /obj/item/clothing/under/costume/singer/yellow/custom
|
||||
ckeywhitelist = list("killer402402")
|
||||
|
||||
/datum/gear/vermillion
|
||||
@@ -184,7 +184,7 @@
|
||||
/datum/gear/naomisweater
|
||||
name = "worn black sweater"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/bb_sweater/black/naomi
|
||||
path = /obj/item/clothing/under/sweater/black/naomi
|
||||
ckeywhitelist = list("technicalmagi")
|
||||
|
||||
/datum/gear/naomicollar
|
||||
@@ -196,7 +196,7 @@
|
||||
/datum/gear/gladiator
|
||||
name = "Gladiator Armor"
|
||||
category = SLOT_WEAR_SUIT
|
||||
path = /obj/item/clothing/under/gladiator
|
||||
path = /obj/item/clothing/under/costume/gladiator
|
||||
ckeywhitelist = list("aroche")
|
||||
|
||||
/datum/gear/bloodredtie
|
||||
@@ -330,7 +330,7 @@ datum/gear/darksabresheath
|
||||
/datum/gear/Divine_robes
|
||||
name = "Divine robes"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/lunasune
|
||||
path = /obj/item/clothing/under/custom/lunasune
|
||||
ckeywhitelist = list("invader4352")
|
||||
|
||||
/datum/gear/gothcoat
|
||||
@@ -348,7 +348,7 @@ datum/gear/darksabresheath
|
||||
/datum/gear/sharkcloth
|
||||
name = "Leon's Skimpy Outfit"
|
||||
category = SLOT_WEAR_SUIT
|
||||
path = /obj/item/clothing/under/leoskimpy
|
||||
path = /obj/item/clothing/under/custom/leoskimpy
|
||||
ckeywhitelist = list("spectrosis")
|
||||
|
||||
/datum/gear/mimemask
|
||||
@@ -360,7 +360,7 @@ datum/gear/darksabresheath
|
||||
/datum/gear/mimeoveralls
|
||||
name = "Mime's Overalls"
|
||||
category = SLOT_WEAR_SUIT
|
||||
path = /obj/item/clothing/under/mimeoveralls
|
||||
path = /obj/item/clothing/under/custom/mimeoveralls
|
||||
ckeywhitelist = list("pireamaineach")
|
||||
|
||||
/datum/gear/soulneck
|
||||
@@ -408,7 +408,7 @@ datum/gear/darksabresheath
|
||||
/datum/gear/mw2_russian_para
|
||||
name = "Russian Paratrooper Jumper"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/mw2_russian_para
|
||||
path = /obj/item/clothing/under/custom/mw2_russian_para
|
||||
ckeywhitelist = list("investigator77")
|
||||
|
||||
/datum/gear/longblackgloves
|
||||
@@ -420,13 +420,13 @@ datum/gear/darksabresheath
|
||||
/datum/gear/trendy_fit
|
||||
name = "Trendy Fit"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/trendy_fit
|
||||
path = /obj/item/clothing/under/custom/trendy_fit
|
||||
ckeywhitelist = list("midgetdragon")
|
||||
|
||||
/datum/gear/singery
|
||||
name = "Yellow Performer Outfit"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/singery
|
||||
path = /obj/item/clothing/under/costume/singer/yellow
|
||||
ckeywhitelist = list("maxlynchy")
|
||||
|
||||
/datum/gear/csheet
|
||||
@@ -462,7 +462,7 @@ datum/gear/darksabresheath
|
||||
/datum/gear/mikubikini
|
||||
name = "starlight singer bikini"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/mikubikini
|
||||
path = /obj/item/clothing/under/custom/mikubikini
|
||||
ckeywhitelist = list("grandvegeta")
|
||||
|
||||
/datum/gear/mikujacket
|
||||
|
||||
@@ -14,21 +14,21 @@
|
||||
/datum/gear/bluescrubs
|
||||
name = "Blue Scrubs"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/rank/medical/blue
|
||||
path = /obj/item/clothing/under/rank/medical/doctor/blue
|
||||
restricted_roles = list("Medical Doctor", "Chief Medical Officer", "Geneticist", "Chemist", "Virologist")
|
||||
restricted_desc = "Medical"
|
||||
|
||||
/datum/gear/greenscrubs
|
||||
name = "Green Scrubs"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/rank/medical/green
|
||||
path = /obj/item/clothing/under/rank/medical/doctor/green
|
||||
restricted_roles = list("Medical Doctor", "Chief Medical Officer", "Geneticist", "Chemist", "Virologist")
|
||||
restricted_desc = "Medical"
|
||||
|
||||
/datum/gear/purplescrubs
|
||||
name = "Purple Scrubs"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/rank/medical/purple
|
||||
path = /obj/item/clothing/under/rank/medical/doctor/purple
|
||||
restricted_roles = list("Medical Doctor", "Chief Medical Officer", "Geneticist", "Chemist", "Virologist")
|
||||
restricted_desc = "Medical"
|
||||
|
||||
@@ -42,6 +42,6 @@
|
||||
/datum/gear/nursesuit
|
||||
name = "Nurse Suit"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/rank/nursesuit
|
||||
path = /obj/item/clothing/under/rank/medical/doctor/nurse
|
||||
restricted_roles = list("Medical Doctor", "Chief Medical Officer", "Geneticist", "Chemist", "Virologist")
|
||||
restricted_desc = "Medical"
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/gear/navyblueuniformhos
|
||||
name = "Head of Security navyblue uniform"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/rank/head_of_security/navyblue
|
||||
path = /obj/item/clothing/under/rank/security/head_of_security/formal
|
||||
restricted_roles = list("Head of Security")
|
||||
|
||||
/datum/gear/navybluehosberet
|
||||
@@ -31,7 +31,7 @@
|
||||
/datum/gear/navyblueuniformofficer
|
||||
name = "Security officer navyblue uniform"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/rank/security/navyblue
|
||||
path = /obj/item/clothing/under/rank/security/officer/formal
|
||||
restricted_roles = list("Security Officer")
|
||||
|
||||
/datum/gear/navybluejacketwarden
|
||||
@@ -49,19 +49,19 @@
|
||||
/datum/gear/navyblueuniformwarden
|
||||
name = "Warden navyblue uniform"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/rank/warden/navyblue
|
||||
path = /obj/item/clothing/under/rank/security/warden/formal
|
||||
restricted_roles = list("Warden")
|
||||
|
||||
/datum/gear/secskirt
|
||||
name = "Security skirt"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/rank/security/skirt
|
||||
path = /obj/item/clothing/under/rank/security/officer/skirt
|
||||
restricted_roles = list("Security Officer", "Warden", "Head of Security")
|
||||
|
||||
/datum/gear/hosskirt
|
||||
name = "Head of security's skirt"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/rank/head_of_security/skirt
|
||||
path = /obj/item/clothing/under/rank/security/head_of_security/skirt
|
||||
restricted_roles = list("Head of Security")
|
||||
|
||||
/datum/gear/sechud
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/gear/greytidestationwide
|
||||
name = "Staff Assistant's jumpsuit"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/staffassistant
|
||||
path = /obj/item/clothing/under/misc/staffassistant
|
||||
restricted_roles = list("Assistant")
|
||||
|
||||
/datum/gear/neetsuit
|
||||
|
||||
@@ -1,136 +1,136 @@
|
||||
/datum/gear/suitblack
|
||||
name = "Black suit"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/suit_jacket
|
||||
path = /obj/item/clothing/under/suit/black
|
||||
|
||||
/datum/gear/suitgreen
|
||||
name = "Green suit"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/suit_jacket/green
|
||||
path = /obj/item/clothing/under/suit/green
|
||||
|
||||
/datum/gear/suitred
|
||||
name = "Red suit"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/suit_jacket/red
|
||||
path = /obj/item/clothing/under/suit/red
|
||||
|
||||
/datum/gear/suitcharcoal
|
||||
name = "Charcoal suit"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/suit_jacket/charcoal
|
||||
path = /obj/item/clothing/under/suit/charcoal
|
||||
|
||||
/datum/gear/suitnavy
|
||||
name = "Navy suit"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/suit_jacket/navy
|
||||
path = /obj/item/clothing/under/suit/navy
|
||||
|
||||
/datum/gear/suitburgundy
|
||||
name = "Burgundy suit"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/suit_jacket/burgundy
|
||||
path = /obj/item/clothing/under/suit/burgundy
|
||||
|
||||
/datum/gear/suittan
|
||||
name = "Tan suit"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/suit_jacket/tan
|
||||
path = /obj/item/clothing/under/suit/tan
|
||||
|
||||
/datum/gear/suitwhite
|
||||
name = "White suit"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/suit_jacket/white
|
||||
path = /obj/item/clothing/under/suit/white
|
||||
|
||||
/datum/gear/assistantformal
|
||||
name = "Assistant's formal uniform"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/assistantformal
|
||||
path = /obj/item/clothing/under/misc/assistantformal
|
||||
|
||||
/datum/gear/maidcostume
|
||||
name = "Maid costume"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/maid
|
||||
path = /obj/item/clothing/under/costume/maid
|
||||
|
||||
/datum/gear/mailmanuniform
|
||||
name = "Mailman's jumpsuit"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/rank/mailman
|
||||
path = /obj/item/clothing/under/misc/mailman
|
||||
|
||||
/datum/gear/skirtblack
|
||||
name = "Black skirt"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/skirt/black
|
||||
path = /obj/item/clothing/under/dress/skirt
|
||||
|
||||
/datum/gear/skirtblue
|
||||
name = "Blue skirt"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/skirt/blue
|
||||
path = /obj/item/clothing/under/dress/skirt/blue
|
||||
|
||||
/datum/gear/skirtred
|
||||
name = "Red skirt"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/skirt/red
|
||||
path = /obj/item/clothing/under/dress/skirt/red
|
||||
|
||||
/datum/gear/skirtpurple
|
||||
name = "Purple skirt"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/skirt/purple
|
||||
path = /obj/item/clothing/under/dress/skirt/purple
|
||||
|
||||
/datum/gear/skirtplaid
|
||||
name = "Plaid skirt"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/plaid_skirt
|
||||
path = /obj/item/clothing/under/dress/skirt/plaid
|
||||
|
||||
/datum/gear/schoolgirlblue
|
||||
name = "Blue Schoolgirl Uniform"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/schoolgirl
|
||||
path = /obj/item/clothing/under/costume/schoolgirl
|
||||
|
||||
/datum/gear/schoolgirlred
|
||||
name = "Red Schoolgirl Uniform"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/schoolgirl/red
|
||||
path = /obj/item/clothing/under/costume/schoolgirl/red
|
||||
|
||||
/datum/gear/schoolgirlgreen
|
||||
name = "Green Schoolgirl Uniform"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/schoolgirl/green
|
||||
path = /obj/item/clothing/under/costume/schoolgirl/green
|
||||
|
||||
/datum/gear/schoolgirlorange
|
||||
name = "Orange Schoolgirl Uniform"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/schoolgirl/orange
|
||||
path = /obj/item/clothing/under/costume/schoolgirl/orange
|
||||
|
||||
/datum/gear/stripeddress
|
||||
name = "Striped Dress"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/stripeddress
|
||||
path = /obj/item/clothing/under/dress/striped
|
||||
|
||||
/datum/gear/sundresswhite
|
||||
name = "White Sundress"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/sundresswhite
|
||||
path = /obj/item/clothing/under/dress/sundress/white
|
||||
|
||||
/datum/gear/sundress
|
||||
name = "Sundress"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/sundress
|
||||
path = /obj/item/clothing/under/dress/sundress
|
||||
|
||||
/datum/gear/greendress
|
||||
name = "Green Dress"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/greendress
|
||||
path = /obj/item/clothing/under/dress/green
|
||||
|
||||
/datum/gear/pinkdress
|
||||
name = "Pink Dress"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/pinkdress
|
||||
path = /obj/item/clothing/under/dress/pink
|
||||
/datum/gear/flowerdress
|
||||
name = "Flower Dress"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/flowerdress
|
||||
path = /obj/item/clothing/under/dress/flower
|
||||
|
||||
/datum/gear/sweptskirt
|
||||
name = "Swept skirt"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/sweptskirt
|
||||
path = /obj/item/clothing/under/dress/skirt/swept
|
||||
|
||||
/datum/gear/croptop
|
||||
name = "Croptop"
|
||||
@@ -145,7 +145,7 @@
|
||||
/datum/gear/kilt
|
||||
name = "Kilt"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/kilt
|
||||
path = /obj/item/clothing/under/costume/kilt
|
||||
|
||||
/datum/gear/camoshorts
|
||||
name = "Camo Pants"
|
||||
@@ -222,54 +222,54 @@
|
||||
/datum/gear/creamsweater
|
||||
name = "Cream Commando Sweater"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/bb_sweater
|
||||
path = /obj/item/clothing/under/sweater
|
||||
|
||||
/datum/gear/blacksweater
|
||||
name = "Black Commando Sweater"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/bb_sweater/black
|
||||
path = /obj/item/clothing/under/sweater/black
|
||||
|
||||
/datum/gear/purpsweater
|
||||
name = "Purple Commando Sweater"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/bb_sweater/purple
|
||||
path = /obj/item/clothing/under/sweater/purple
|
||||
|
||||
/datum/gear/greensweater
|
||||
name = "Green Commando Sweater"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/bb_sweater/green
|
||||
path = /obj/item/clothing/under/sweater/green
|
||||
|
||||
/datum/gear/redsweater
|
||||
name = "Red Commando Sweater"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/bb_sweater/red
|
||||
path = /obj/item/clothing/under/sweater/red
|
||||
|
||||
/datum/gear/bluesweater
|
||||
name = "Navy Commando Sweater"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/bb_sweater/blue
|
||||
path = /obj/item/clothing/under/sweater/blue
|
||||
|
||||
/datum/gear/keyholesweater
|
||||
name = "Keyhole Sweater"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/keyholesweater
|
||||
path = /obj/item/clothing/under/misc/keyholesweater
|
||||
|
||||
/datum/gear/polykilt
|
||||
name = "Polychromic Kilt"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/polychromic/kilt
|
||||
path = /obj/item/clothing/under/costume/kilt/polychromic
|
||||
cost = 3
|
||||
|
||||
/datum/gear/polyshorts
|
||||
name = "Polychromic Shorts"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/polychromic/shorts
|
||||
path = /obj/item/clothing/under/misc/polyshorts
|
||||
cost = 3
|
||||
|
||||
/datum/gear/polyshortpants
|
||||
name = "Polychromic Athletic Shorts"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/polychromic/shortpants
|
||||
path = /obj/item/clothing/under/shorts/polychromic
|
||||
cost = 2
|
||||
|
||||
// Trekie things
|
||||
@@ -277,21 +277,21 @@
|
||||
/datum/gear/trekcmdtos
|
||||
name = "TOS uniform, cmd"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/rank/trek/command
|
||||
path = /obj/item/clothing/under/trek/command
|
||||
restricted_desc = "Heads of Staff"
|
||||
restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster")
|
||||
|
||||
/datum/gear/trekmedscitos
|
||||
name = "TOS uniform, med/sci"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/rank/trek/medsci
|
||||
path = /obj/item/clothing/under/trek/medsci
|
||||
restricted_desc = "Medical and Science"
|
||||
restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist")
|
||||
|
||||
/datum/gear/trekengtos
|
||||
name = "TOS uniform, ops/sec"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/rank/trek/engsec
|
||||
path = /obj/item/clothing/under/trek/engsec
|
||||
restricted_desc = "Engineering and Security"
|
||||
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster")
|
||||
|
||||
@@ -299,21 +299,21 @@
|
||||
/datum/gear/trekcmdtng
|
||||
name = "TNG uniform, cmd"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/rank/trek/command/next
|
||||
path = /obj/item/clothing/under/trek/command/next
|
||||
restricted_desc = "Heads of Staff"
|
||||
restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster")
|
||||
|
||||
/datum/gear/trekmedscitng
|
||||
name = "TNG uniform, med/sci"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/rank/trek/medsci/next
|
||||
path = /obj/item/clothing/under/trek/medsci/next
|
||||
restricted_desc = "Medical and Science"
|
||||
restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist")
|
||||
|
||||
/datum/gear/trekengtng
|
||||
name = "TNG uniform, ops/sec"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/rank/trek/engsec/next
|
||||
path = /obj/item/clothing/under/trek/engsec/next
|
||||
restricted_desc = "Engineering and Security"
|
||||
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster")
|
||||
|
||||
@@ -321,21 +321,21 @@
|
||||
/datum/gear/trekcmdvoy
|
||||
name = "VOY uniform, cmd"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/rank/trek/command/voy
|
||||
path = /obj/item/clothing/under/trek/command/voy
|
||||
restricted_desc = "Heads of Staff"
|
||||
restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster")
|
||||
|
||||
/datum/gear/trekmedscivoy
|
||||
name = "VOY uniform, med/sci"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/rank/trek/medsci/voy
|
||||
path = /obj/item/clothing/under/trek/medsci/voy
|
||||
restricted_desc = "Medical and Science"
|
||||
restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist")
|
||||
|
||||
/datum/gear/trekengvoy
|
||||
name = "VOY uniform, ops/sec"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/rank/trek/engsec/voy
|
||||
path = /obj/item/clothing/under/trek/engsec/voy
|
||||
restricted_desc = "Engineering and Security"
|
||||
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster")
|
||||
|
||||
@@ -343,21 +343,21 @@
|
||||
/datum/gear/trekcmdds9
|
||||
name = "DS9 uniform, cmd"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/rank/trek/command/ds9
|
||||
path = /obj/item/clothing/under/trek/command/ds9
|
||||
restricted_desc = "Heads of Staff"
|
||||
restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster")
|
||||
|
||||
/datum/gear/trekmedscids9
|
||||
name = "DS9 uniform, med/sci"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/rank/trek/medsci/ds9
|
||||
path = /obj/item/clothing/under/trek/medsci/ds9
|
||||
restricted_desc = "Medical and Science"
|
||||
restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist")
|
||||
|
||||
/datum/gear/trekengds9
|
||||
name = "DS9 uniform, ops/sec"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/rank/trek/engsec/ds9
|
||||
path = /obj/item/clothing/under/trek/engsec/ds9
|
||||
restricted_desc = "Engineering and Security"
|
||||
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster")
|
||||
|
||||
@@ -365,21 +365,21 @@
|
||||
/datum/gear/trekcmdent
|
||||
name = "ENT uniform, cmd"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/rank/trek/command/ent
|
||||
path = /obj/item/clothing/under/trek/command/ent
|
||||
restricted_desc = "Heads of Staff"
|
||||
restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster")
|
||||
|
||||
/datum/gear/trekmedscient
|
||||
name = "ENT uniform, med/sci"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/rank/trek/medsci/ent
|
||||
path = /obj/item/clothing/under/trek/medsci/ent
|
||||
restricted_desc = "Medical and Science"
|
||||
restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist")
|
||||
|
||||
/datum/gear/trekengent
|
||||
name = "ENT uniform, ops/sec"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/rank/trek/engsec/ent
|
||||
path = /obj/item/clothing/under/trek/engsec/ent
|
||||
restricted_desc = "Engineering and Security"
|
||||
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster")
|
||||
|
||||
@@ -387,75 +387,75 @@
|
||||
/datum/gear/gear_harnesses
|
||||
name = "Gear Harness"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/gear_harness
|
||||
path = /obj/item/clothing/under/misc/gear_harness
|
||||
|
||||
//Christmas
|
||||
/*Commenting out Until next Christmas or made automatic
|
||||
/datum/gear/christmasmaler
|
||||
name = "Red Masculine Christmas Suit"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/christmas/christmasmaler
|
||||
path = /obj/item/clothing/under/costume/christmas
|
||||
|
||||
/datum/gear/christmasmaleg
|
||||
name = "Green Masculine Christmas Suit"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/christmas/christmasmaleg
|
||||
path = /obj/item/clothing/under/costume/christmas/green
|
||||
|
||||
/datum/gear/christmasfemaler
|
||||
name = "Red Feminine Christmas Suit"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/christmas/christmasfemaler
|
||||
path = /obj/item/clothing/under/costume/christmas/croptop
|
||||
|
||||
/datum/gear/christmasfemaleg
|
||||
name = "Green Feminine Christmas Suit"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/christmas/christmasfemaleg
|
||||
path = /obj/item/clothing/under/costume/christmas/croptop/green
|
||||
|
||||
/datum/gear/pinkstripper
|
||||
name = "Pink stripper outfit"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/stripper_pink
|
||||
path = /obj/item/clothing/under/misc/stripper
|
||||
cost = 3
|
||||
*/
|
||||
|
||||
/datum/gear/greenstripper
|
||||
name = "Green stripper outfit"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/stripper_green
|
||||
path = /obj/item/clothing/under/misc/stripper/green
|
||||
cost = 3
|
||||
|
||||
/datum/gear/qipao
|
||||
name = "Qipao, Black"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/lunar/qipao
|
||||
path = /obj/item/clothing/under/costume/qipao
|
||||
cost = 3
|
||||
|
||||
/datum/gear/qipao/white
|
||||
name = "Qipao, White"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/lunar/qipao/white
|
||||
path = /obj/item/clothing/under/costume/qipao/white
|
||||
cost = 3
|
||||
|
||||
/datum/gear/qipao/red
|
||||
name = "Qipao, Red"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/lunar/qipao/red
|
||||
path = /obj/item/clothing/under/costume/qipao/red
|
||||
cost = 3
|
||||
|
||||
/datum/gear/cheongsam
|
||||
name = "Cheongsam, Black"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/lunar/cheongsam
|
||||
path = /obj/item/clothing/under/costume/cheongsam
|
||||
cost = 3
|
||||
|
||||
/datum/gear/cheongsam/white
|
||||
name = "Cheongsam, White"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/lunar/cheongsam/white
|
||||
path = /obj/item/clothing/under/costume/cheongsam/white
|
||||
cost = 3
|
||||
|
||||
/datum/gear/cheongsam/red
|
||||
name = "Cheongsam, Red"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/lunar/cheongsam/red
|
||||
path = /obj/item/clothing/under/costume/cheongsam/red
|
||||
cost = 3
|
||||
@@ -45,10 +45,3 @@
|
||||
else
|
||||
if(L[slot_to_string(slot)] < DEFAULT_SLOT_AMT)
|
||||
return TRUE
|
||||
|
||||
/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
|
||||
if(icon_updates)
|
||||
character.update_genitals()
|
||||
|
||||
@@ -44,31 +44,6 @@
|
||||
WRITE_FILE(S["feature_xeno_tail"], features["xenotail"])
|
||||
WRITE_FILE(S["feature_xeno_dors"], features["xenodorsal"])
|
||||
WRITE_FILE(S["feature_xeno_head"], features["xenohead"])
|
||||
//cock features
|
||||
WRITE_FILE(S["feature_has_cock"], features["has_cock"])
|
||||
WRITE_FILE(S["feature_cock_shape"], features["cock_shape"])
|
||||
WRITE_FILE(S["feature_cock_color"], features["cock_color"])
|
||||
WRITE_FILE(S["feature_cock_length"], features["cock_length"])
|
||||
WRITE_FILE(S["feature_cock_girth"], features["cock_girth"])
|
||||
WRITE_FILE(S["feature_has_sheath"], features["sheath_color"])
|
||||
//balls features
|
||||
WRITE_FILE(S["feature_has_balls"], features["has_balls"])
|
||||
WRITE_FILE(S["feature_balls_color"], features["balls_color"])
|
||||
WRITE_FILE(S["feature_balls_size"], features["balls_size"])
|
||||
WRITE_FILE(S["feature_balls_shape"], features["balls_shape"])
|
||||
WRITE_FILE(S["feature_balls_sack_size"], features["balls_sack_size"])
|
||||
//breasts features
|
||||
WRITE_FILE(S["feature_has_breasts"], features["has_breasts"])
|
||||
WRITE_FILE(S["feature_breasts_size"], features["breasts_size"])
|
||||
WRITE_FILE(S["feature_breasts_shape"], features["breasts_shape"])
|
||||
WRITE_FILE(S["feature_breasts_color"], features["breasts_color"])
|
||||
WRITE_FILE(S["feature_breasts_producing"], features["breasts_producing"])
|
||||
//vagina features
|
||||
WRITE_FILE(S["feature_has_vag"], features["has_vag"])
|
||||
WRITE_FILE(S["feature_vag_shape"], features["vag_shape"])
|
||||
WRITE_FILE(S["feature_vag_color"], features["vag_color"])
|
||||
//womb features
|
||||
WRITE_FILE(S["feature_has_womb"], features["has_womb"])
|
||||
//flavor text
|
||||
WRITE_FILE(S["feature_flavor_text"], features["flavor_text"])
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
icon = 'modular_citadel/icons/obj/clothing/cit_neck.dmi'
|
||||
item_state = "undertale"
|
||||
icon_state = "undertale"
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/clothing/necks.dmi'
|
||||
mob_overlay_icon = 'modular_citadel/icons/mob/clothing/necks.dmi'
|
||||
resistance_flags = FIRE_PROOF
|
||||
actions_types = list(/datum/action/item_action/zanderlocket)
|
||||
var/toggled = FALSE
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
|
||||
/obj/item/flightpack
|
||||
armor = list("melee" = 5, "bullet" = 5, "laser" = 5, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 20, "fire" = 20, "acid" = 20)
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/flightsuit
|
||||
armor = list("melee" = 5, "bullet" = 5, "laser" = 5, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 20, "fire" = 20, "acid" = 20)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/flightsuit
|
||||
armor = list("melee" = 5, "bullet" = 5, "laser" = 5, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 20, "fire" = 20, "acid" = 20)
|
||||
@@ -2,9 +2,8 @@
|
||||
name = "polychromic cloak"
|
||||
desc = "For when you want to show off your horrible colour coordination skills."
|
||||
icon = 'modular_citadel/icons/polyclothes/item/neck.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/polyclothes/mob/neck.dmi'
|
||||
mob_overlay_icon = 'modular_citadel/icons/polyclothes/mob/neck.dmi'
|
||||
icon_state = "polyce"
|
||||
item_color = "polyce"
|
||||
item_state = "qmcloak"
|
||||
hasprimary = TRUE
|
||||
hassecondary = TRUE
|
||||
@@ -13,20 +12,20 @@
|
||||
secondary_color = "#FFFFFF"
|
||||
tertiary_color = "#808080"
|
||||
|
||||
/obj/item/clothing/neck/cloak/polychromic/worn_overlays(isinhands, icon_file, used_state, style_flags = NONE) //this is where the main magic happens. Also mandates that ALL polychromic stuff MUST USE alternate_worn_icon
|
||||
/obj/item/clothing/neck/cloak/polychromic/worn_overlays(isinhands, icon_file, used_state, style_flags = NONE) //this is where the main magic happens.
|
||||
. = ..()
|
||||
if(hasprimary | hassecondary | hastertiary)
|
||||
if(!isinhands) //prevents the worn sprites from showing up if you're just holding them
|
||||
if(hasprimary) //checks if overlays are enabled
|
||||
var/mutable_appearance/primary_worn = mutable_appearance(alternate_worn_icon, "[item_color]-primary") //automagical sprite selection
|
||||
var/mutable_appearance/primary_worn = mutable_appearance(mob_overlay_icon, "[icon_state]-primary") //automagical sprite selection
|
||||
primary_worn.color = primary_color //colors the overlay
|
||||
. += primary_worn //adds the overlay onto the buffer list to draw on the mob sprite.
|
||||
if(hassecondary)
|
||||
var/mutable_appearance/secondary_worn = mutable_appearance(alternate_worn_icon, "[item_color]-secondary")
|
||||
var/mutable_appearance/secondary_worn = mutable_appearance(mob_overlay_icon, "[icon_state]-secondary")
|
||||
secondary_worn.color = secondary_color
|
||||
. += secondary_worn
|
||||
if(hastertiary)
|
||||
var/mutable_appearance/tertiary_worn = mutable_appearance(alternate_worn_icon, "[item_color]-tertiary")
|
||||
var/mutable_appearance/tertiary_worn = mutable_appearance(mob_overlay_icon, "[icon_state]-tertiary")
|
||||
tertiary_worn.color = tertiary_color
|
||||
. += tertiary_worn
|
||||
|
||||
@@ -34,7 +33,6 @@
|
||||
name = "polychromic embroidered cloak"
|
||||
desc = "A fancy cloak embroidered with polychromatic thread in a pattern that reminds one of the wielders of unlimited power."
|
||||
icon_state = "polyce"
|
||||
item_color = "polyce"
|
||||
primary_color = "#808080" //RGB in hexcode
|
||||
secondary_color = "#8CC6FF"
|
||||
tertiary_color = "#FF3535"
|
||||
@@ -8,7 +8,7 @@
|
||||
/obj/item/clothing/suit/armor/hos/trenchcoat/cloak
|
||||
name = "armored trenchcloak"
|
||||
desc = "A trenchcoat enchanced with a special lightweight kevlar. This one appears to be designed to be draped over one's shoulders rather than worn normally.."
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
|
||||
mob_overlay_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
|
||||
icon_state = "hostrench"
|
||||
item_state = "hostrench"
|
||||
mutantrace_variation = NONE
|
||||
|
||||
+4
-98
@@ -8,85 +8,6 @@
|
||||
// Armor lists for even Heads of Staff is Nulled out do round start armor as well most armor going onto the suit itself rather then a armor slot - Trilby
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/obj/item/clothing/under/rank/trek
|
||||
name = "Section 31 Uniform"
|
||||
desc = "Oooh... right."
|
||||
icon = 'modular_citadel/icons/obj/clothing/trek_item_icon.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi'
|
||||
mutantrace_variation = NONE
|
||||
item_state = ""
|
||||
can_adjust = FALSE //to prevent you from "wearing it casually"
|
||||
|
||||
//TOS
|
||||
/obj/item/clothing/under/rank/trek/command
|
||||
name = "Command Uniform"
|
||||
desc = "The uniform worn by command officers in the mid 2260s."
|
||||
icon_state = "trek_command"
|
||||
item_state = "trek_command"
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
|
||||
|
||||
/obj/item/clothing/under/rank/trek/engsec
|
||||
name = "Operations Uniform"
|
||||
desc = "The uniform worn by operations officers of the mid 2260s. You feel strangely vulnerable just seeing this..."
|
||||
icon_state = "trek_engsec"
|
||||
item_state = "trek_engsec"
|
||||
|
||||
/obj/item/clothing/under/rank/trek/medsci
|
||||
name = "MedSci Uniform"
|
||||
desc = "The uniform worn by medsci officers in the mid 2260s."
|
||||
icon_state = "trek_medsci"
|
||||
item_state = "trek_medsci"
|
||||
permeability_coefficient = 0.50
|
||||
|
||||
//TNG
|
||||
/obj/item/clothing/under/rank/trek/command/next
|
||||
desc = "The uniform worn by command officers. This one's from the mid 2360s."
|
||||
icon_state = "trek_next_command"
|
||||
item_state = "trek_next_command"
|
||||
|
||||
/obj/item/clothing/under/rank/trek/engsec/next
|
||||
desc = "The uniform worn by operation officers. This one's from the mid 2360s."
|
||||
icon_state = "trek_next_engsec"
|
||||
item_state = "trek_next_engsec"
|
||||
|
||||
/obj/item/clothing/under/rank/trek/medsci/next
|
||||
desc = "The uniform worn by medsci officers. This one's from the mid 2360s."
|
||||
icon_state = "trek_next_medsci"
|
||||
item_state = "trek_next_medsci"
|
||||
|
||||
//ENT
|
||||
/obj/item/clothing/under/rank/trek/command/ent
|
||||
desc = "The uniform worn by command officers of the 2140s."
|
||||
icon_state = "trek_ent_command"
|
||||
item_state = "trek_ent_command"
|
||||
|
||||
/obj/item/clothing/under/rank/trek/engsec/ent
|
||||
desc = "The uniform worn by operations officers of the 2140s."
|
||||
icon_state = "trek_ent_engsec"
|
||||
item_state = "trek_ent_engsec"
|
||||
|
||||
/obj/item/clothing/under/rank/trek/medsci/ent
|
||||
desc = "The uniform worn by medsci officers of the 2140s."
|
||||
icon_state = "trek_ent_medsci"
|
||||
item_state = "trek_ent_medsci"
|
||||
|
||||
//VOY
|
||||
/obj/item/clothing/under/rank/trek/command/voy
|
||||
desc = "The uniform worn by command officers of the 2370s."
|
||||
icon_state = "trek_voy_command"
|
||||
item_state = "trek_voy_command"
|
||||
|
||||
/obj/item/clothing/under/rank/trek/engsec/voy
|
||||
desc = "The uniform worn by operations officers of the 2370s."
|
||||
icon_state = "trek_voy_engsec"
|
||||
item_state = "trek_voy_engsec"
|
||||
|
||||
/obj/item/clothing/under/rank/trek/medsci/voy
|
||||
desc = "The uniform worn by medsci officers of the 2370s."
|
||||
icon_state = "trek_voy_medsci"
|
||||
item_state = "trek_voy_medsci"
|
||||
|
||||
//DS9
|
||||
|
||||
/obj/item/clothing/suit/storage/trek/ds9
|
||||
@@ -94,7 +15,7 @@
|
||||
desc = "The overcoat worn by all officers of the 2380s."
|
||||
icon = 'modular_citadel/icons/obj/clothing/trek_item_icon.dmi'
|
||||
icon_state = "trek_ds9_coat"
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi'
|
||||
mob_overlay_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi'
|
||||
item_state = "trek_ds9_coat"
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
mutantrace_variation = NONE
|
||||
@@ -116,21 +37,6 @@
|
||||
permeability_coefficient = 0.01
|
||||
armor = list("melee" = 50, "bullet" = 50, "laser" = 50,"energy" = 50, "bomb" = 50, "bio" = 50, "rad" = 50, "fire" = 50, "acid" = 50)
|
||||
|
||||
/obj/item/clothing/under/rank/trek/command/ds9
|
||||
desc = "The uniform worn by command officers of the 2380s."
|
||||
icon_state = "trek_ds9_command"
|
||||
item_state = "trek_ds9_command"
|
||||
|
||||
/obj/item/clothing/under/rank/trek/engsec/ds9
|
||||
desc = "The uniform worn by operations officers of the 2380s."
|
||||
icon_state = "trek_ds9_engsec"
|
||||
item_state = "trek_ds9_engsec"
|
||||
|
||||
/obj/item/clothing/under/rank/trek/medsci/ds9
|
||||
desc = "The uniform undershirt worn by medsci officers of the 2380s."
|
||||
icon_state = "trek_ds9_medsci"
|
||||
item_state = "trek_ds9_medsci"
|
||||
|
||||
//MODERN ish Joan sqrl sprites. I think
|
||||
|
||||
//For general use
|
||||
@@ -138,7 +44,7 @@
|
||||
name = "Federation Uniform Jacket"
|
||||
desc = "A uniform jacket from the United Federation. Set phasers to awesome."
|
||||
icon = 'modular_citadel/icons/obj/clothing/trek_item_icon.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi'
|
||||
mob_overlay_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi'
|
||||
icon_state = "fedcoat"
|
||||
item_state = "fedcoat"
|
||||
mutantrace_variation = NONE
|
||||
@@ -204,7 +110,7 @@
|
||||
name = "Modern Federation Uniform Jacket"
|
||||
desc = "A modern uniform jacket from the United Federation."
|
||||
icon = 'modular_citadel/icons/obj/clothing/trek_item_icon.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi'
|
||||
mob_overlay_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi'
|
||||
icon_state = "fedmodern"
|
||||
item_state = "fedmodern"
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
@@ -236,7 +142,7 @@
|
||||
desc = "An officer's cap that demands discipline from the one who wears it."
|
||||
icon = 'modular_citadel/icons/obj/clothing/trek_item_icon.dmi'
|
||||
icon_state = "fedcapofficer"
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi'
|
||||
mob_overlay_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi'
|
||||
item_state = "fedcapofficer"
|
||||
|
||||
//Variants
|
||||
@@ -1,80 +0,0 @@
|
||||
/*
|
||||
* Turtlenecks in general go here!
|
||||
*/
|
||||
|
||||
//CMO's Turtleneck, because they don't have any unique clothes!
|
||||
|
||||
/obj/item/clothing/under/rank/chief_medical_officer/turtleneck
|
||||
desc = "It's a turtleneck worn by those with the experience to be \"Chief Medical Officer\". It provides minor biological protection, for an officer with a superior sense of style and practicality."
|
||||
name = "chief medical officer's turtleneck"
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/clothing/turtlenecks.dmi'
|
||||
icon = 'modular_citadel/icons/obj/clothing/turtlenecks.dmi'
|
||||
icon_state = "cmoturtle"
|
||||
item_state = "w_suit"
|
||||
item_color = "cmoturtle"
|
||||
permeability_coefficient = 0.5
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0, fire = 0, acid = 0)
|
||||
can_adjust = TRUE
|
||||
alt_covers_chest = TRUE
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/structure/closet/secure_closet/CMO/PopulateContents() //This is placed here because it's a very specific addition for a very specific niche
|
||||
..()
|
||||
new /obj/item/clothing/under/rank/chief_medical_officer/turtleneck(src)
|
||||
|
||||
/obj/item/clothing/under/syndicate/cosmetic
|
||||
name = "tactitool turtleneck"
|
||||
desc = "Just looking at it makes you want to buy an SKS, go into the woods, and -operate-."
|
||||
icon_state = "tactifool"
|
||||
item_state = "bl_suit"
|
||||
item_color = "tactifool"
|
||||
has_sensor = TRUE
|
||||
mutantrace_variation = NONE
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
|
||||
|
||||
/obj/item/clothing/under/syndicate/tacticool
|
||||
has_sensor = TRUE
|
||||
|
||||
// Sweaters are good enough for this category too.
|
||||
|
||||
/obj/item/clothing/under/bb_sweater
|
||||
name = "cream sweater"
|
||||
desc = "Why trade style for comfort? Now you can go commando down south and still be cozy up north."
|
||||
icon_state = "bb_turtle"
|
||||
item_state = "w_suit"
|
||||
item_color = "bb_turtle"
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = TRUE
|
||||
icon = 'modular_citadel/icons/obj/clothing/turtlenecks.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/bb_sweater/black
|
||||
name = "black sweater"
|
||||
icon_state = "bb_turtleblk"
|
||||
item_state = "bl_suit"
|
||||
item_color = "bb_turtleblk"
|
||||
|
||||
/obj/item/clothing/under/bb_sweater/purple
|
||||
name = "purple sweater"
|
||||
icon_state = "bb_turtlepur"
|
||||
item_state = "p_suit"
|
||||
item_color = "bb_turtlepur"
|
||||
|
||||
/obj/item/clothing/under/bb_sweater/green
|
||||
name = "green sweater"
|
||||
icon_state = "bb_turtlegrn"
|
||||
item_state = "g_suit"
|
||||
item_color = "bb_turtlegrn"
|
||||
|
||||
/obj/item/clothing/under/bb_sweater/red
|
||||
name = "red sweater"
|
||||
icon_state = "bb_turtlered"
|
||||
item_state = "r_suit"
|
||||
item_color = "bb_turtlered"
|
||||
|
||||
/obj/item/clothing/under/bb_sweater/blue
|
||||
name = "blue sweater"
|
||||
icon_state = "bb_turtleblu"
|
||||
item_state = "b_suit"
|
||||
item_color = "bb_turtleblu"
|
||||
@@ -1,29 +0,0 @@
|
||||
/*/////////////////////////////////////////////////////////////////////////////////
|
||||
/////// ///////
|
||||
/////// Cit's exclusive jumpsuits, uniforms, etc. go here ///////
|
||||
/////// ///////
|
||||
*//////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/obj/item/clothing/under/corporateuniform
|
||||
name = "corporate uniform"
|
||||
desc = "A comfortable, tight fitting jumpsuit made of premium materials. Not space-proof."
|
||||
icon = 'modular_citadel/icons/obj/clothing/cit_clothes.dmi'
|
||||
icon_state = "tssuit"
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
item_state = "r_suit"
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/rank/captain/femformal
|
||||
name ="captain's female formal outfit"
|
||||
desc = ""
|
||||
icon = 'modular_citadel/icons/obj/clothing/cit_clothes.dmi'
|
||||
icon_state = "lewdcap"
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
item_state = "lewdcap"
|
||||
item_color = "lewdcap"
|
||||
can_adjust = FALSE
|
||||
sensor_mode = SENSOR_COORDS //it's still a captain's suit nerd
|
||||
random_sensor = FALSE
|
||||
mutantrace_variation = NONE
|
||||
@@ -26,7 +26,7 @@
|
||||
desc = "The design on this seems a little too familiar."
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
icon_state = "infcloak"
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
item_state = "infcloak"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS
|
||||
@@ -36,9 +36,8 @@
|
||||
desc = "A soft black collar that seems to stretch to fit whoever wears it."
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
icon_state = "infcollar"
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
item_state = "infcollar"
|
||||
item_color = null
|
||||
tagname = null
|
||||
|
||||
/obj/item/clothing/accessory/medal/steele
|
||||
@@ -46,14 +45,13 @@
|
||||
desc = "An intricate pendant given to those who help a key member of the Steele Corporation."
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
icon_state = "steele"
|
||||
item_color = "steele"
|
||||
medaltype = "medal-silver"
|
||||
|
||||
/obj/item/toy/darksabre
|
||||
name = "Kiara's Sabre"
|
||||
desc = "This blade looks as dangerous as its owner."
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
icon_state = "darksabre"
|
||||
item_state = "darksabre"
|
||||
lefthand_file = 'modular_citadel/icons/mob/inhands/stunsword_left.dmi'
|
||||
@@ -70,7 +68,7 @@
|
||||
name = "Ornate Sheathe"
|
||||
desc = "An ornate and rather sinister looking sabre sheathe."
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
icon_state = "darksheath"
|
||||
item_state = "darksheath"
|
||||
fitting_swords = list(/obj/item/toy/darksabre)
|
||||
@@ -80,7 +78,7 @@
|
||||
name = "Dark Armor"
|
||||
desc = "A dark, non-functional piece of armor sporting a red and black finish."
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
icon_state = "darkcarapace"
|
||||
item_state = "darkcarapace"
|
||||
blood_overlay_type = "armor"
|
||||
@@ -107,8 +105,7 @@
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
icon_state = "zombscarf"
|
||||
desc = "A fashionable collar"
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
item_color = "zombscarf"
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
dog_fashion = /datum/dog_fashion/head
|
||||
|
||||
/obj/item/clothing/suit/toggle/labcoat/mad/red
|
||||
@@ -116,7 +113,7 @@
|
||||
desc = "An oddly special looking coat."
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
icon_state = "labred"
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
item_state = "labred"
|
||||
mutantrace_variation = NONE
|
||||
|
||||
@@ -125,7 +122,7 @@
|
||||
desc = "An oddly special looking coat."
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
icon_state = "labredblack"
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
item_state = "labredblack"
|
||||
mutantrace_variation = NONE
|
||||
|
||||
@@ -144,7 +141,7 @@
|
||||
name = "carrot cloak"
|
||||
desc = "A cloak in the shape and color of a carrot!"
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
icon_state = "carrotcloak"
|
||||
item_state = "carrotcloak"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
@@ -156,7 +153,7 @@
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
icon_state = "satchel_carrot"
|
||||
item_state = "satchel_carrot"
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
|
||||
/obj/item/storage/backpack/satchel/carrot/Initialize()
|
||||
. = ..()
|
||||
@@ -179,7 +176,7 @@
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
icon_state = "festive"
|
||||
item_state = "festive"
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS
|
||||
|
||||
@@ -187,7 +184,7 @@
|
||||
name = "Alboroto Rosa mask"
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
icon_state = "lucharzigfie"
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
item_state = "lucharzigfie"
|
||||
|
||||
/obj/item/clothing/head/hardhat/reindeer/fluff
|
||||
@@ -195,7 +192,7 @@
|
||||
desc = "Some fake antlers and a very fake red nose - Sponsored by PWR Game(tm)"
|
||||
icon_state = "hardhat0_reindeer"
|
||||
item_state = "hardhat0_reindeer"
|
||||
item_color = "reindeer"
|
||||
hat_type = "reindeer"
|
||||
flags_inv = 0
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
|
||||
brightness_on = 0 //luminosity when on
|
||||
@@ -220,7 +217,7 @@
|
||||
name = "The Hollow heart"
|
||||
desc = "Sometimes things are too much to hide."
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
icon_state = "hheart"
|
||||
item_state = "hheart"
|
||||
flags_inv = HIDEFACE|HIDEFACIALHAIR
|
||||
@@ -230,7 +227,7 @@
|
||||
desc = "You would swear this was in your nightmares after eating too many veggies."
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
icon_state = "hos-g"
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
item_state = "hos-g"
|
||||
body_parts_covered = CHEST|GROIN|ARMS|LEGS
|
||||
mutantrace_variation = NONE
|
||||
@@ -247,7 +244,7 @@
|
||||
desc = "Smells like reactor four."
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
item_state = "stalker"
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
icon_state = "stalker"
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/flask/steel
|
||||
@@ -262,18 +259,17 @@
|
||||
desc = "It's a collar..."
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
icon_state = "petcollar-stripe"
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
item_state = "petcollar-stripe"
|
||||
tagname = null
|
||||
|
||||
/obj/item/clothing/under/singery/custom
|
||||
/obj/item/clothing/under/costume/singer/yellow/custom
|
||||
name = "bluish performer's outfit"
|
||||
desc = "Just looking at this makes you want to sing."
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
icon_state = "singer"
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
item_state = "singer"
|
||||
item_color = "singer"
|
||||
fitted = NO_FEMALE_UNIFORM
|
||||
alternate_worn_layer = ABOVE_SHOES_LAYER
|
||||
can_adjust = 0
|
||||
@@ -282,7 +278,7 @@
|
||||
/obj/item/clothing/shoes/sneakers/pink
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
icon_state = "pink"
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
item_state = "pink"
|
||||
mutantrace_variation = NONE
|
||||
|
||||
@@ -291,13 +287,13 @@
|
||||
desc = "A neosilk clip-on tie. This one has a black S on the tipping and looks rather unique."
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
icon_state = "bloodredtie"
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
|
||||
/obj/item/clothing/suit/puffydress
|
||||
name = "Puffy Dress"
|
||||
desc = "A formal puffy black and red Victorian dress."
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
icon_state = "puffydress"
|
||||
item_state = "puffydress"
|
||||
body_parts_covered = CHEST|GROIN|LEGS
|
||||
@@ -310,10 +306,10 @@
|
||||
item_state = "vermillion"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/bb_sweater/black/naomi
|
||||
/obj/item/clothing/under/sweater/black/naomi
|
||||
name = "worn black sweater"
|
||||
mutantrace_variation = NONE
|
||||
desc = "A well-loved sweater, showing signs of several cleanings and re-stitchings. And a few stains. Is that cat fur?"
|
||||
@@ -327,7 +323,7 @@
|
||||
desc = "This cloak doesn't seem too special."
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
icon_state = "wintergreencloak"
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
item_state = "wintergreencloak"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS
|
||||
@@ -343,7 +339,7 @@
|
||||
desc = "An oddly special looking coat."
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
icon_state = "rdcoat"
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
item_state = "rdcoat"
|
||||
mutantrace_variation = NONE
|
||||
|
||||
@@ -359,7 +355,7 @@
|
||||
desc = "These strange wings look like they once attached to something... or someone...? Whatever the case, their presence makes you feel uneasy.."
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
icon_state = "devilwings"
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/clothing/devilwings64x64.dmi'
|
||||
mob_overlay_icon = 'modular_citadel/icons/mob/clothing/devilwings64x64.dmi'
|
||||
item_state = "devilwings"
|
||||
worn_x_dimension = 64
|
||||
worn_y_dimension = 34
|
||||
@@ -369,41 +365,41 @@
|
||||
desc = "A truly patriotic form of heroic attire."
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
resistance_flags = FLAMMABLE
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
icon_state = "flagcape"
|
||||
item_state = "flagcape"
|
||||
|
||||
/obj/item/clothing/shoes/lucky
|
||||
name = "Lucky Jackboots"
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
desc = "Comfy Lucky Jackboots with the word Luck on them."
|
||||
item_state = "luckyjack"
|
||||
icon_state = "luckyjack"
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/lunasune
|
||||
/obj/item/clothing/under/custom/lunasune
|
||||
name = "Divine Robes"
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
desc = "Heavenly robes of the kitsune Luna Pumpkin,you can feel radiance coming from them."
|
||||
item_state = "Divine_robes"
|
||||
icon_state = "Divine_robes"
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/leoskimpy
|
||||
/obj/item/clothing/under/custom/leoskimpy
|
||||
name = "Leon's Skimpy Outfit"
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
desc = "A rather skimpy outfit."
|
||||
item_state = "shark_cloth"
|
||||
icon_state = "shark_cloth"
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/mimeoveralls
|
||||
/obj/item/clothing/under/custom/mimeoveralls
|
||||
name = "Mime's Overalls"
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
desc = "A less-than-traditional mime's attire, completed by a set of dorky-looking overalls."
|
||||
item_state = "moveralls"
|
||||
icon_state = "moveralls"
|
||||
@@ -415,7 +411,7 @@
|
||||
icon_state = "zuliecloak"
|
||||
item_state = "zuliecloak"
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
hoodtype = /obj/item/clothing/head/hooded/cloakhood/zuliecloak
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
slot_flags = SLOT_WEAR_SUIT | ITEM_SLOT_NECK //it's a cloak. it's cosmetic. so why the hell not? what could possibly go wrong?
|
||||
@@ -427,7 +423,7 @@
|
||||
icon_state = "zuliecap"
|
||||
item_state = "zuliecap"
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
flags_inv = HIDEEARS|HIDEHAIR
|
||||
mutantrace_variation = NONE
|
||||
|
||||
@@ -435,7 +431,7 @@
|
||||
name = "Multicolor Coat"
|
||||
desc = "An oddly special looking coat with black, red, and gold"
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
icon_state = "redgoldjacket"
|
||||
item_state = "redgoldjacket"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS
|
||||
@@ -447,7 +443,7 @@
|
||||
icon_state = "kimono"
|
||||
item_state = "kimono"
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS
|
||||
mutantrace_variation = NONE
|
||||
|
||||
@@ -457,17 +453,17 @@
|
||||
icon_state = "commjacket"
|
||||
item_state = "commjacket"
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/mw2_russian_para
|
||||
/obj/item/clothing/under/custom/mw2_russian_para
|
||||
name = "Russian Paratrooper Jumper"
|
||||
desc = "A Russian made old paratrooper jumpsuit, has many pockets for easy storage of gear from a by gone era. As bulky as it looks, its shockingly light!"
|
||||
icon_state = "mw2_russian_para"
|
||||
item_state = "mw2_russian_para"
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/gloves/longblackgloves
|
||||
@@ -476,15 +472,15 @@
|
||||
icon_state = "longblackgloves"
|
||||
item_state = "longblackgloves"
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
|
||||
/obj/item/clothing/under/trendy_fit
|
||||
/obj/item/clothing/under/custom/trendy_fit
|
||||
name = "Trendy Fitting Clothing"
|
||||
desc = "An outfit straight from the boredom of space, its the type of thing only someone trying to entertain themselves on the way to their next destination would wear."
|
||||
icon_state = "trendy_fit"
|
||||
item_state = "trendy_fit"
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/head/blueberet
|
||||
@@ -493,7 +489,7 @@
|
||||
icon_state = "blueberet"
|
||||
item_state = "blueberet"
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
dynamic_hair_suffix = ""
|
||||
|
||||
/obj/item/clothing/head/flight
|
||||
@@ -502,7 +498,7 @@
|
||||
icon_state = "flight-g"
|
||||
item_state = "flight-g"
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
|
||||
/obj/item/clothing/neck/necklace/onion
|
||||
name = "Onion Necklace"
|
||||
@@ -510,15 +506,15 @@
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
icon_state = "onion"
|
||||
item_state = "onion"
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
|
||||
/obj/item/clothing/under/mikubikini
|
||||
/obj/item/clothing/under/custom/mikubikini
|
||||
name = "starlight singer bikini"
|
||||
desc = " "
|
||||
icon_state = "mikubikini"
|
||||
item_state = "mikubikini"
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/suit/mikujacket
|
||||
@@ -527,7 +523,7 @@
|
||||
icon_state = "mikujacket"
|
||||
item_state = "mikujacket"
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/head/mikuhair
|
||||
@@ -536,7 +532,7 @@
|
||||
icon_state = "mikuhair"
|
||||
item_state = "mikuhair"
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
mutantrace_variation = NONE
|
||||
flags_inv = HIDEHAIR
|
||||
|
||||
@@ -546,7 +542,7 @@
|
||||
icon_state = "mikugloves"
|
||||
item_state = "mikugloves"
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/shoes/sneakers/mikuleggings
|
||||
@@ -555,7 +551,7 @@
|
||||
icon_state = "mikuleggings"
|
||||
item_state = "mikuleggings"
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/toy/plush/mammal/dog/fritz
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
/client/proc/cmd_mentor_dementor()
|
||||
set category = "Mentor"
|
||||
set name = "dementor"
|
||||
if(!is_mentor())
|
||||
return
|
||||
remove_mentor_verbs()
|
||||
if (/client/proc/mentor_unfollow in verbs)
|
||||
mentor_unfollow()
|
||||
GLOB.mentors -= src
|
||||
verbs += /client/proc/cmd_mentor_rementor
|
||||
|
||||
/client/proc/cmd_mentor_rementor()
|
||||
set category = "Mentor"
|
||||
set name = "rementor"
|
||||
if(!is_mentor())
|
||||
return
|
||||
add_mentor_verbs()
|
||||
GLOB.mentors += src
|
||||
verbs -= /client/proc/cmd_mentor_rementor
|
||||
@@ -1,6 +1,7 @@
|
||||
GLOBAL_LIST_INIT(mentor_verbs, list(
|
||||
/client/proc/cmd_mentor_say,
|
||||
/client/proc/show_mentor_memo
|
||||
/client/proc/show_mentor_memo,
|
||||
/client/proc/cmd_mentor_dementor
|
||||
))
|
||||
GLOBAL_PROTECT(mentor_verbs)
|
||||
|
||||
|
||||
@@ -38,8 +38,9 @@
|
||||
if(!msg)
|
||||
msg = input(src,"Message:", "Private message") as text|null
|
||||
|
||||
if(!msg && is_mentor(whom))
|
||||
to_chat(GLOB.admins | GLOB.mentors, "<span class='purple'>[src] has stopped their reply to [whom]'s mhelp.</span>")
|
||||
if(!msg)
|
||||
if (is_mentor(whom))
|
||||
to_chat(GLOB.admins | GLOB.mentors, "<span class='purple'>[src] has stopped their reply to [whom]'s mhelp.</span>")
|
||||
return
|
||||
|
||||
if(!C)
|
||||
@@ -54,10 +55,10 @@
|
||||
return
|
||||
|
||||
msg = sanitize(copytext_char(msg, 1, MAX_MESSAGE_LEN))
|
||||
if(!msg && is_mentor(whom))
|
||||
to_chat(GLOB.admins | GLOB.mentors, "<span class='purple'>[src] has stopped their reply to [whom]'s mhelp.</span>")
|
||||
if(!msg)
|
||||
if (is_mentor(whom))
|
||||
to_chat(GLOB.admins | GLOB.mentors, "<span class='purple'>[src] has stopped their reply to [whom]'s mhelp.</span>")
|
||||
return
|
||||
|
||||
log_mentor("Mentor PM: [key_name(src)]->[key_name(C)]: [msg]")
|
||||
|
||||
msg = emoji_parse(msg)
|
||||
|
||||
@@ -1,73 +1,29 @@
|
||||
/mob/living/carbon
|
||||
var/combatmode = FALSE //literally lifeweb
|
||||
var/lastmousedir
|
||||
var/wrongdirmovedelay
|
||||
var/lastdirchange
|
||||
var/combatmessagecooldown
|
||||
|
||||
//oh no vore time
|
||||
var/voremode = FALSE
|
||||
|
||||
/mob/living/carbon/proc/toggle_combat_mode(forced, silent)
|
||||
if(!forced)
|
||||
if(recoveringstam || stat != CONSCIOUS)
|
||||
return TRUE
|
||||
for(var/i in status_effects)
|
||||
var/datum/status_effect/S = i
|
||||
if(S.blocks_combatmode)
|
||||
return TRUE
|
||||
combatmode = !combatmode
|
||||
if(voremode)
|
||||
toggle_vore_mode()
|
||||
if(!silent)
|
||||
if(combatmode)
|
||||
if(world.time >= combatmessagecooldown)
|
||||
if(a_intent != INTENT_HELP)
|
||||
visible_message("<span class='warning'>[src] [resting ? "tenses up" : (prob(95)? "drops into a combative stance" : (prob(95)? "poses aggressively" : "asserts dominance with their pose"))].</span>")
|
||||
else
|
||||
visible_message("<span class='notice'>[src] [pick("looks","seems","goes")] [pick("alert","attentive","vigilant")].</span>")
|
||||
playsound_local(src, 'sound/misc/ui_toggle.ogg', 50, FALSE, pressure_affected = FALSE) //Sound from interbay!
|
||||
else
|
||||
playsound_local(src, 'sound/misc/ui_toggleoff.ogg', 50, FALSE, pressure_affected = FALSE) //Slightly modified version of the above!
|
||||
if(client)
|
||||
client.show_popup_menus = !combatmode // So we can right-click for alternate actions and all that other good shit. Also moves examine to shift+rightclick to make it possible to attack while sprinting
|
||||
var/obj/screen/combattoggle/T = locate() in hud_used?.static_inventory
|
||||
T?.update_icon_state()
|
||||
combatmessagecooldown = 10 SECONDS + world.time //This is set 100% of the time to make sure squeezing regen out of process cycles doesn't result in the combat mode message getting spammed
|
||||
SEND_SIGNAL(src, COMSIG_COMBAT_TOGGLED, src, combatmode)
|
||||
return TRUE
|
||||
|
||||
mob/living/carbon/proc/toggle_vore_mode()
|
||||
/mob/living/carbon/proc/toggle_vore_mode()
|
||||
voremode = !voremode
|
||||
var/obj/screen/voretoggle/T = locate() in hud_used?.static_inventory
|
||||
T?.update_icon_state()
|
||||
if(combatmode)
|
||||
if(combat_flags & COMBAT_FLAG_COMBAT_TOGGLED)
|
||||
return FALSE //let's not override the main draw of the game these days
|
||||
SEND_SIGNAL(src, COMSIG_VORE_TOGGLED, src, voremode)
|
||||
return TRUE
|
||||
|
||||
/mob/living/carbon/Move(atom/newloc, direct = 0)
|
||||
var/currentdirection = dir
|
||||
. = ..()
|
||||
wrongdirmovedelay = FALSE
|
||||
if(combatmode && client && lastmousedir)
|
||||
if((combat_flags & COMBAT_FLAG_COMBAT_ACTIVE) && client && lastmousedir)
|
||||
if(lastmousedir != dir)
|
||||
wrongdirmovedelay = TRUE
|
||||
setDir(lastmousedir, ismousemovement = TRUE)
|
||||
if(currentdirection != dir)
|
||||
lastdirchange = world.time
|
||||
|
||||
|
||||
/mob/living/carbon/onMouseMove(object, location, control, params)
|
||||
if(!combatmode)
|
||||
if(!(combat_flags & COMBAT_FLAG_COMBAT_ACTIVE))
|
||||
return
|
||||
mouse_face_atom(object)
|
||||
lastmousedir = dir
|
||||
|
||||
/mob/living/carbon/setDir(newdir, ismousemovement = FALSE)
|
||||
if(!combatmode || ismousemovement)
|
||||
if(dir != newdir)
|
||||
lastdirchange = world.time
|
||||
. = ..()
|
||||
else
|
||||
return
|
||||
|
||||
@@ -15,24 +15,6 @@
|
||||
if(!forced && (status_flags & GODMODE))
|
||||
return FALSE
|
||||
apply_damage(amount > 0 ? amount*incomingstammult : amount, STAMINA, affected_zone)
|
||||
if(recoveringstam && amount > 20)
|
||||
if((combat_flags & COMBAT_FLAG_HARD_STAMCRIT) && amount > 20)
|
||||
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()
|
||||
if(!tiles) //we had enough, we're done!
|
||||
return
|
||||
adjustStaminaLoss(tiles * sprint_stamina_cost) //use stamina to cover deficit.
|
||||
|
||||
/mob/living/carbon/proc/doSprintBufferRegen(updating = TRUE)
|
||||
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()
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
L.embedded_objects -= I
|
||||
L.receive_damage(I.embedding.embedded_unsafe_removal_pain_multiplier*I.w_class*painmul)//It hurts to rip it out, get surgery you dingus. And if you're ripping it out quickly via resist, it's gonna hurt even more
|
||||
I.forceMove(get_turf(src))
|
||||
I.unembedded()
|
||||
user.put_in_hands(I)
|
||||
user.emote("scream")
|
||||
user.visible_message("[user] rips [I] out of [user.p_their()] [L.name]!","<span class='notice'>You remove [I] from your [L.name].</span>")
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
/mob/living/carbon/human/Move(NewLoc, direct)
|
||||
var/oldpseudoheight = pseudo_z_axis
|
||||
. = ..()
|
||||
if(. && sprinting && !(movement_type & FLYING) && CHECK_MULTIPLE_BITFIELDS(mobility_flags, MOBILITY_MOVE|MOBILITY_STAND) && m_intent == MOVE_INTENT_RUN && has_gravity(loc) && !pulledby)
|
||||
if(!HAS_TRAIT(src, TRAIT_FREESPRINT))
|
||||
doSprintLossTiles(1)
|
||||
if((oldpseudoheight - pseudo_z_axis) >= 8)
|
||||
to_chat(src, "<span class='warning'>You trip off of the elevated surface!</span>")
|
||||
for(var/obj/item/I in held_items)
|
||||
accident(I)
|
||||
DefaultCombatKnockdown(80)
|
||||
|
||||
/mob/living/carbon/human/movement_delay()
|
||||
. = 0
|
||||
if((mobility_flags & MOBILITY_STAND) && m_intent == MOVE_INTENT_RUN && sprinting)
|
||||
var/static/datum/config_entry/number/movedelay/sprint_speed_increase/SSI
|
||||
if(!SSI)
|
||||
SSI = CONFIG_GET_ENTRY(number/movedelay/sprint_speed_increase)
|
||||
. -= SSI.config_entry_value
|
||||
if(wrongdirmovedelay)
|
||||
. += 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((m_intent == MOVE_INTENT_RUN) && CHECK_MULTIPLE_BITFIELDS(mobility_flags, MOBILITY_STAND|MOBILITY_MOVE))
|
||||
if(sprinting)
|
||||
playsound_local(src, 'sound/misc/sprintactivate.ogg', 50, FALSE, pressure_affected = FALSE)
|
||||
else
|
||||
playsound_local(src, 'sound/misc/sprintdeactivate.ogg', 50, FALSE, pressure_affected = FALSE)
|
||||
var/obj/screen/sprintbutton/S = locate() in hud_used?.static_inventory
|
||||
S?.update_icon_state()
|
||||
return TRUE
|
||||
|
||||
/mob/living/carbon/human/proc/sprint_hotkey(targetstatus)
|
||||
if(targetstatus ? !sprinting : sprinting)
|
||||
togglesprint()
|
||||
@@ -1,5 +1,2 @@
|
||||
/mob/living/proc/adjustStaminaLossBuffered(amount, updating_health = TRUE, forced = FALSE)
|
||||
return
|
||||
|
||||
/mob/living/proc/doSprintLossTiles(amount)
|
||||
return
|
||||
|
||||
@@ -1,32 +1,4 @@
|
||||
/mob/living
|
||||
var/sprinting = FALSE
|
||||
var/recoveringstam = FALSE
|
||||
var/incomingstammult = 1
|
||||
var/bufferedstam = 0
|
||||
var/stambuffer = 20
|
||||
var/stambufferregentime
|
||||
var/attemptingstandup = FALSE
|
||||
var/intentionalresting = FALSE
|
||||
var/attemptingcrawl = FALSE
|
||||
|
||||
//Sprint buffer---
|
||||
var/sprint_buffer = 42 //Tiles
|
||||
var/sprint_buffer_max = 42
|
||||
var/sprint_buffer_regen_ds = 0.3 //Tiles per world.time decisecond
|
||||
var/sprint_buffer_regen_last = 0 //last world.time this was regen'd for math.
|
||||
var/sprint_stamina_cost = 0.70 //stamina loss per tile while insufficient sprint buffer.
|
||||
//---End
|
||||
|
||||
/mob/living/update_config_movespeed()
|
||||
. = ..()
|
||||
sprint_buffer_max = CONFIG_GET(number/movedelay/sprint_buffer_max)
|
||||
sprint_buffer_regen_ds = CONFIG_GET(number/movedelay/sprint_buffer_regen_per_ds)
|
||||
sprint_stamina_cost = CONFIG_GET(number/movedelay/sprint_stamina_cost)
|
||||
|
||||
/mob/living/movement_delay(ignorewalk = 0)
|
||||
. = ..()
|
||||
if(!CHECK_MOBILITY(src, MOBILITY_STAND))
|
||||
. += 6
|
||||
|
||||
/atom
|
||||
var/pseudo_z_axis
|
||||
@@ -55,22 +27,23 @@
|
||||
|
||||
/mob/living/carbon/update_stamina()
|
||||
var/total_health = getStaminaLoss()
|
||||
if(total_health >= STAMINA_SOFTCRIT)
|
||||
if(!(combat_flags & COMBAT_FLAG_SOFT_STAMCRIT))
|
||||
ENABLE_BITFIELD(combat_flags, COMBAT_FLAG_SOFT_STAMCRIT)
|
||||
else
|
||||
if(combat_flags & COMBAT_FLAG_SOFT_STAMCRIT)
|
||||
DISABLE_BITFIELD(combat_flags, COMBAT_FLAG_SOFT_STAMCRIT)
|
||||
if(total_health)
|
||||
if(!recoveringstam && total_health >= STAMINA_CRIT && !stat)
|
||||
if(!(combat_flags & COMBAT_FLAG_HARD_STAMCRIT) && total_health >= STAMINA_CRIT && !stat)
|
||||
to_chat(src, "<span class='notice'>You're too exhausted to keep going...</span>")
|
||||
set_resting(TRUE, FALSE, FALSE)
|
||||
if(combatmode)
|
||||
toggle_combat_mode(TRUE)
|
||||
recoveringstam = TRUE
|
||||
disable_intentional_combat_mode(TRUE, FALSE)
|
||||
ENABLE_BITFIELD(combat_flags, COMBAT_FLAG_HARD_STAMCRIT)
|
||||
filters += CIT_FILTER_STAMINACRIT
|
||||
update_mobility()
|
||||
if(recoveringstam && total_health <= STAMINA_SOFTCRIT)
|
||||
if((combat_flags & COMBAT_FLAG_HARD_STAMCRIT) && total_health <= STAMINA_SOFTCRIT)
|
||||
to_chat(src, "<span class='notice'>You don't feel nearly as exhausted anymore.</span>")
|
||||
recoveringstam = FALSE
|
||||
DISABLE_BITFIELD(combat_flags, COMBAT_FLAG_HARD_STAMCRIT | COMBAT_FLAG_SOFT_STAMCRIT)
|
||||
filters -= CIT_FILTER_STAMINACRIT
|
||||
update_mobility()
|
||||
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)
|
||||
|
||||
@@ -424,15 +424,15 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
|
||||
if(hit_atom)
|
||||
if(isliving(hit_atom))
|
||||
var/mob/living/L = hit_atom
|
||||
if(!L.check_shields(0, "the [name]", src, attack_type = LEAP_ATTACK))
|
||||
if(L.run_block(0, "the [name]", src, ATTACK_TYPE_TACKLE, 0, src) & BLOCK_SUCCESS)
|
||||
DefaultCombatKnockdown(15, 1, 1)
|
||||
else
|
||||
L.visible_message("<span class ='danger'>[src] pounces on [L]!</span>", "<span class ='userdanger'>[src] pounces on you!</span>")
|
||||
L.DefaultCombatKnockdown(iscarbon(L) ? 60 : 45, override_stamdmg = CLAMP(pounce_stamloss, 0, pounce_stamloss_cap-L.getStaminaLoss())) // Temporary. If someone could rework how dogborg pounces work to accomodate for combat changes, that'd be nice.
|
||||
playsound(src, 'sound/weapons/Egloves.ogg', 50, 1)
|
||||
sleep(2)//Runtime prevention (infinite bump() calls on hulks)
|
||||
step_towards(src,L)
|
||||
log_combat(src, L, "borg pounced")
|
||||
else
|
||||
DefaultCombatKnockdown(15, 1, 1)
|
||||
|
||||
pounce_cooldown = !pounce_cooldown
|
||||
spawn(pounce_cooldown_time) //3s by default
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
/mob/living/silicon/robot/Move(NewLoc, direct)
|
||||
. = ..()
|
||||
if(. && sprinting && !(movement_type & FLYING) && CHECK_MULTIPLE_BITFIELDS(mobility_flags, MOBILITY_STAND | MOBILITY_MOVE))
|
||||
if(!(cell?.use(25)))
|
||||
togglesprint(TRUE)
|
||||
|
||||
/mob/living/silicon/robot/movement_delay()
|
||||
. = ..()
|
||||
if(!resting && !sprinting)
|
||||
. += 1
|
||||
. += speed
|
||||
|
||||
/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) || !cansprint)
|
||||
return FALSE
|
||||
sprinting = shutdown ? FALSE : !sprinting
|
||||
if(CHECK_MULTIPLE_BITFIELDS(mobility_flags, MOBILITY_STAND|MOBILITY_MOVE))
|
||||
if(sprinting)
|
||||
playsound_local(src, 'sound/misc/sprintactivate.ogg', 50, FALSE, pressure_affected = FALSE)
|
||||
else
|
||||
if(shutdown)
|
||||
playsound_local(src, 'sound/effects/light_flicker.ogg', 50, FALSE, pressure_affected = FALSE)
|
||||
playsound_local(src, 'sound/misc/sprintdeactivate.ogg', 50, FALSE, pressure_affected = FALSE)
|
||||
var/obj/screen/sprintbutton/S = locate() in hud_used?.static_inventory
|
||||
S?.update_icon_state()
|
||||
return TRUE
|
||||
|
||||
/mob/living/silicon/robot/proc/sprint_hotkey(targetstatus)
|
||||
if(targetstatus ? !sprinting : sprinting)
|
||||
togglesprint()
|
||||
@@ -1,34 +1,3 @@
|
||||
////////////Anti Tank Pistol////////////
|
||||
|
||||
/obj/item/gun/ballistic/automatic/pistol/antitank
|
||||
name = "Anti Tank Pistol"
|
||||
desc = "A massively impractical and silly monstrosity of a pistol that fires .50 calliber rounds. The recoil is likely to dislocate your wrist."
|
||||
icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
|
||||
icon_state = "atp"
|
||||
item_state = "pistol"
|
||||
recoil = 4
|
||||
mag_type = /obj/item/ammo_box/magazine/sniper_rounds
|
||||
fire_delay = 50
|
||||
burst_size = 1
|
||||
can_suppress = 0
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
actions_types = list()
|
||||
fire_sound = 'sound/weapons/blastcannon.ogg'
|
||||
spread = 20 //damn thing has no rifling.
|
||||
|
||||
/obj/item/gun/ballistic/automatic/pistol/antitank/update_icon()
|
||||
..()
|
||||
if(magazine)
|
||||
cut_overlays()
|
||||
add_overlay("atp-mag")
|
||||
else
|
||||
cut_overlays()
|
||||
icon_state = "[initial(icon_state)][chambered ? "" : "-e"]"
|
||||
|
||||
/obj/item/gun/ballistic/automatic/pistol/antitank/syndicate
|
||||
name = "Syndicate Anti Tank Pistol"
|
||||
desc = "A massively impractical and silly monstrosity of a pistol that fires .50 calliber rounds. The recoil is likely to dislocate a variety of joints without proper bracing."
|
||||
pin = /obj/item/firing_pin/implant/pindicate
|
||||
|
||||
///foam stealth pistol///
|
||||
|
||||
@@ -56,75 +25,6 @@
|
||||
cut_overlays()
|
||||
icon_state = "[initial(icon_state)][chambered ? "" : "-e"]"
|
||||
|
||||
//////10mm soporific bullets//////
|
||||
|
||||
obj/item/projectile/bullet/c10mm/soporific
|
||||
name ="10mm soporific bullet"
|
||||
armour_penetration = 0
|
||||
nodamage = TRUE
|
||||
dismemberment = 0
|
||||
knockdown = 0
|
||||
|
||||
/obj/item/projectile/bullet/c10mm/soporific/on_hit(atom/target, blocked = FALSE)
|
||||
. = ..()
|
||||
if((blocked != 100) && isliving(target))
|
||||
var/mob/living/L = target
|
||||
L.blur_eyes(6)
|
||||
if(L.getStaminaLoss() >= 60)
|
||||
L.Sleeping(300)
|
||||
else
|
||||
L.adjustStaminaLoss(25)
|
||||
|
||||
/obj/item/ammo_casing/c10mm/soporific
|
||||
name = ".10mm soporific bullet casing"
|
||||
desc = "A 10mm soporific bullet casing."
|
||||
projectile_type = /obj/item/projectile/bullet/c10mm/soporific
|
||||
|
||||
/obj/item/ammo_box/magazine/m10mm/soporific
|
||||
name = "pistol magazine (10mm soporific)"
|
||||
icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
|
||||
icon_state = "9x19pS"
|
||||
desc = "A gun magazine. Loaded with rounds which inject the target with a variety of illegal substances to induce sleep in the target."
|
||||
ammo_type = /obj/item/ammo_casing/c10mm/soporific
|
||||
|
||||
/obj/item/ammo_box/c10mm/soporific
|
||||
name = "ammo box (10mm soporific)"
|
||||
ammo_type = /obj/item/ammo_casing/c10mm/soporific
|
||||
max_ammo = 24
|
||||
|
||||
//////modular pistol////// (reskinnable stetchkins)
|
||||
|
||||
/obj/item/gun/ballistic/automatic/pistol/modular
|
||||
name = "modular pistol"
|
||||
desc = "A small, easily concealable 10mm handgun. Has a threaded barrel for suppressors."
|
||||
icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
|
||||
icon_state = "cde"
|
||||
can_unsuppress = TRUE
|
||||
obj_flags = UNIQUE_RENAME
|
||||
unique_reskin = list("Default" = "cde",
|
||||
"NT-99" = "n99",
|
||||
"Stealth" = "stealthpistol",
|
||||
"HKVP-78" = "vp78",
|
||||
"Luger" = "p08b",
|
||||
"Mk.58" = "secguncomp",
|
||||
"PX4 Storm" = "px4"
|
||||
)
|
||||
|
||||
/obj/item/gun/ballistic/automatic/pistol/modular/update_icon()
|
||||
..()
|
||||
if(current_skin)
|
||||
icon_state = "[unique_reskin[current_skin]][chambered ? "" : "-e"][suppressed ? "-suppressed" : ""]"
|
||||
else
|
||||
icon_state = "[initial(icon_state)][chambered ? "" : "-e"][suppressed ? "-suppressed" : ""]"
|
||||
if(magazine && suppressed)
|
||||
cut_overlays()
|
||||
add_overlay("[unique_reskin[current_skin]]-magazine-sup") //Yes, this means the default iconstate can't have a magazine overlay
|
||||
else if (magazine)
|
||||
cut_overlays()
|
||||
add_overlay("[unique_reskin[current_skin]]-magazine")
|
||||
else
|
||||
cut_overlays()
|
||||
|
||||
/////////RAYGUN MEMES/////////
|
||||
|
||||
/obj/item/projectile/beam/lasertag/ray //the projectile, compatible with regular laser tag armor
|
||||
@@ -144,4 +44,4 @@ obj/item/projectile/bullet/c10mm/soporific
|
||||
icon_state = "raygun"
|
||||
desc = "A toy laser with a classic, retro feel and look. Compatible with existing laser tag systems."
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/laser/raytag)
|
||||
selfcharge = EGUN_SELFCHARGE
|
||||
selfcharge = EGUN_SELFCHARGE
|
||||
|
||||
@@ -185,10 +185,15 @@
|
||||
name = "electron blast"
|
||||
icon_state = "stunjectile"
|
||||
color = null
|
||||
nodamage = 1
|
||||
nodamage = TRUE
|
||||
knockdown = 100
|
||||
stamina = 5
|
||||
knockdown_stamoverride = 0
|
||||
knockdown_stam_max = 0
|
||||
stamina = 18
|
||||
stutter = 5
|
||||
jitter = 20
|
||||
strong_tase = FALSE
|
||||
tase_duration = 0
|
||||
hitsound = 'sound/weapons/taserhit.ogg'
|
||||
range = 7
|
||||
range = 3
|
||||
strong_tase = FALSE
|
||||
|
||||
@@ -155,7 +155,7 @@
|
||||
M.Sleeping(100, 0)
|
||||
M.Jitter(50)
|
||||
M.DefaultCombatKnockdown(100)
|
||||
to_chat(M, "<span class='userdanger'>You feel your eigenstate settle, snapping an alternative version of yourself into reality. All your previous memories are lost and replaced with the alternative version of yourself. This version of you feels more [pick("affectionate", "happy", "lusty", "radical", "shy", "ambitious", "frank", "voracious", "sensible", "witty")] than your previous self, sent to god knows what universe.</span>")
|
||||
to_chat(M, "<span class='userdanger'>You feel your eigenstate settle, snapping an alternative version of yourself into reality. All your previous memories are lost and replaced with the alternative version of yourself.</span>")
|
||||
M.emote("me",1,"flashes into reality suddenly, gasping as they gaze around in a bewildered and highly confused fashion!",TRUE)
|
||||
log_game("FERMICHEM: [M] ckey: [M.key] has become an alternative universe version of themselves.")
|
||||
M.reagents.remove_all_type(/datum/reagent, 100, 0, 1)
|
||||
|
||||
@@ -104,8 +104,7 @@
|
||||
var/obj/item/organ/genital/womb/W = M.getorganslot(ORGAN_SLOT_WOMB)
|
||||
|
||||
if(M.gender == MALE)
|
||||
M.gender = FEMALE
|
||||
M.visible_message("<span class='boldnotice'>[M] suddenly looks more feminine!</span>", "<span class='boldwarning'>You suddenly feel more feminine!</span>")
|
||||
M.set_gender(FEMALE)
|
||||
|
||||
if(P)
|
||||
P.modify_size(-0.05)
|
||||
@@ -251,8 +250,7 @@
|
||||
var/obj/item/organ/genital/womb/W = M.getorganslot(ORGAN_SLOT_WOMB)
|
||||
|
||||
if(M.gender == FEMALE)
|
||||
M.gender = MALE
|
||||
M.visible_message("<span class='boldnotice'>[M] suddenly looks more masculine!</span>", "<span class='boldwarning'>You suddenly feel more masculine!</span>")
|
||||
M.set_gender(MALE)
|
||||
|
||||
if(B)
|
||||
B.modify_size(-0.05)
|
||||
|
||||
@@ -191,7 +191,7 @@
|
||||
var/datum/component/nanites/N = C.GetComponent(/datum/component/nanites)
|
||||
if(prob(5))
|
||||
to_chat(C, "<span class='warning'>The residual voltage from the nanites causes you to seize up!</b></span>")
|
||||
C.electrocute_act(10, (get_turf(C)), 1, FALSE, FALSE, FALSE, TRUE)
|
||||
C.electrocute_act(10, (get_turf(C)), 1, SHOCK_ILLUSION)
|
||||
if(prob(10))
|
||||
var/atom/T = C
|
||||
T.emp_act(EMP_HEAVY)
|
||||
@@ -218,7 +218,7 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume)
|
||||
/datum/reagent/fermi/nanite_b_goneTox/on_mob_life(mob/living/carbon/C)//Damages the taker if their purity is low. Extended use of impure chemicals will make the original die. (thus can't be spammed unless you've very good)
|
||||
if(prob(15))
|
||||
to_chat(C, "<span class='warning'>The residual voltage in your system causes you to seize up!</b></span>")
|
||||
C.electrocute_act(10, (get_turf(C)), 1, FALSE, FALSE, FALSE, TRUE)
|
||||
C.electrocute_act(10, (get_turf(C)), 1, SHOCK_ILLUSION)
|
||||
if(prob(50))
|
||||
var/atom/T = C
|
||||
T.emp_act(EMP_HEAVY)
|
||||
|
||||
@@ -54,7 +54,6 @@
|
||||
to_chat(user, "<span class='warning'>[src] is empty!</span>")
|
||||
add_fingerprint(user)
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/fermichem/pHpaper
|
||||
name = "pH indicator strip"
|
||||
|
||||
@@ -95,6 +95,7 @@
|
||||
taste_description = "strawberry roofies"
|
||||
taste_mult = 2 //Hide the roofies in stronger flavors
|
||||
color = "#FFADFF"//PINK, rgb(255, 173, 255)
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/drug/aphrodisiac/on_mob_life(mob/living/M)
|
||||
if(M && M.client?.prefs.arousable && !(M.client?.prefs.cit_toggles & NO_APHRO))
|
||||
@@ -120,6 +121,7 @@
|
||||
color = "#FF2BFF"//dark pink
|
||||
addiction_threshold = 20
|
||||
overdose_threshold = 20
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/drug/aphrodisiacplus/on_mob_life(mob/living/M)
|
||||
if(M && M.client?.prefs.arousable && !(M.client?.prefs.cit_toggles & NO_APHRO))
|
||||
@@ -174,6 +176,7 @@
|
||||
taste_mult = 2
|
||||
color = "#D9D9D9"//rgb(217, 217, 217)
|
||||
reagent_state = SOLID
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/drug/anaphrodisiac/on_mob_life(mob/living/M)
|
||||
if(M && M.client?.prefs.arousable && prob(16))
|
||||
@@ -191,6 +194,7 @@
|
||||
color = "#D9D9D9"//rgb(217, 217, 217)
|
||||
reagent_state = SOLID
|
||||
overdose_threshold = 20
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/drug/anaphrodisiacplus/on_mob_life(mob/living/M)
|
||||
if(M && M.client?.prefs.arousable)
|
||||
|
||||
Reference in New Issue
Block a user