Merge branch 'master' into glassware
This commit is contained in:
@@ -119,7 +119,7 @@
|
||||
shape = D.features["breasts_shape"]
|
||||
fluid_id = D.features["breasts_fluid"]
|
||||
if(!D.features["breasts_producing"])
|
||||
DISABLE_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION)
|
||||
DISABLE_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION|CAN_CLIMAX_WITH|CAN_MASTURBATE_WITH)
|
||||
if(!isnum(size))
|
||||
cached_size = breast_values[size]
|
||||
else
|
||||
|
||||
@@ -37,15 +37,11 @@
|
||||
name = "[sizeword][dildo_shape] [can_customize ? "custom " : ""][dildo_type]"
|
||||
|
||||
/obj/item/dildo/AltClick(mob/living/user)
|
||||
if(QDELETED(src))
|
||||
return
|
||||
if(!isliving(user))
|
||||
return
|
||||
if(isAI(user))
|
||||
return
|
||||
if(user.stat > 0)//unconscious or dead
|
||||
. = ..()
|
||||
if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
return
|
||||
customize(user)
|
||||
return TRUE
|
||||
|
||||
/obj/item/dildo/proc/customize(mob/living/user)
|
||||
if(!can_customize)
|
||||
@@ -150,7 +146,8 @@ obj/item/dildo/custom
|
||||
playsound(loc, 'sound/weapons/gagging.ogg', 50, 1, -1)
|
||||
user.Stun(150)
|
||||
user.adjust_blurriness(8)
|
||||
user.adjust_eye_damage(10)
|
||||
var/obj/item/organ/eyes/eyes = user.getorganslot(ORGAN_SLOT_EYES)
|
||||
eyes?.applyOrganDamage(10)
|
||||
return MANUAL_SUICIDE
|
||||
|
||||
/obj/item/dildo/flared/huge/suicide_act(mob/living/user)
|
||||
@@ -159,6 +156,5 @@ obj/item/dildo/custom
|
||||
playsound(loc, 'sound/weapons/gagging.ogg', 50, 2, -1)
|
||||
user.Stun(300)
|
||||
user.adjust_blurriness(8)
|
||||
user.adjust_eye_damage(15)
|
||||
return MANUAL_SUICIDE
|
||||
|
||||
|
||||
@@ -91,4 +91,14 @@
|
||||
category = SLOT_HEAD
|
||||
path = /obj/item/clothing/head/caphat/formal/fedcover/sec
|
||||
restricted_desc = "Engineering, Security, and Cargo"
|
||||
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster")
|
||||
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster")
|
||||
|
||||
/datum/gear/santahatr
|
||||
name = "Red Santa Hat"
|
||||
category = SLOT_HEAD
|
||||
path = /obj/item/clothing/head/christmashat
|
||||
|
||||
/datum/gear/santahatg
|
||||
name = "Green Santa Hat"
|
||||
category = SLOT_HEAD
|
||||
path = /obj/item/clothing/head/christmashatg
|
||||
@@ -56,4 +56,19 @@
|
||||
/datum/gear/bluecuffs
|
||||
name = "Blue leg wraps"
|
||||
category = SLOT_SHOES
|
||||
path= /obj/item/clothing/shoes/wraps/blue
|
||||
path= /obj/item/clothing/shoes/wraps/blue
|
||||
|
||||
/datum/gear/christmasbootsr
|
||||
name = "Red Christmas Boots"
|
||||
category = SLOT_SHOES
|
||||
path= /obj/item/clothing/shoes/winterboots/christmasbootsr
|
||||
|
||||
/datum/gear/christmasbootsg
|
||||
name = "Green Christmas Boots"
|
||||
category = SLOT_SHOES
|
||||
path= /obj/item/clothing/shoes/winterboots/christmasbootsg
|
||||
|
||||
/datum/gear/santaboots
|
||||
name = "Santa Boots"
|
||||
category = SLOT_SHOES
|
||||
path= /obj/item/clothing/shoes/winterboots/santaboots
|
||||
@@ -204,3 +204,18 @@
|
||||
path = /obj/item/clothing/suit/storage/fluff/modernfedcoat/eng
|
||||
restricted_desc = "Engineering and Cargo"
|
||||
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Cargo Technician", "Shaft Miner", "Quartermaster")
|
||||
|
||||
/datum/gear/christmascoatr
|
||||
name = "Red Christmas Coat"
|
||||
category = SLOT_WEAR_SUIT
|
||||
path = /obj/item/clothing/suit/hooded/wintercoat/christmascoatr
|
||||
|
||||
/datum/gear/christmascoatg
|
||||
name = "Green Christmas Coat"
|
||||
category = SLOT_WEAR_SUIT
|
||||
path = /obj/item/clothing/suit/hooded/wintercoat/christmascoatg
|
||||
|
||||
/datum/gear/christmascoatrg
|
||||
name = "Red and Green Christmas Coat"
|
||||
category = SLOT_WEAR_SUIT
|
||||
path = /obj/item/clothing/suit/hooded/wintercoat/christmascoatrg
|
||||
@@ -330,6 +330,27 @@
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/gear_harness
|
||||
|
||||
//Christmas
|
||||
/datum/gear/christmasmaler
|
||||
name = "Red Masculine Christmas Suit"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/christmas/christmasmaler
|
||||
|
||||
/datum/gear/christmasmaleg
|
||||
name = "Green Masculine Christmas Suit"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/christmas/christmasmaleg
|
||||
|
||||
/datum/gear/christmasfemaler
|
||||
name = "Red Feminine Christmas Suit"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/christmas/christmasfemaler
|
||||
|
||||
/datum/gear/christmasfemaleg
|
||||
name = "Green Feminine Christmas Suit"
|
||||
category = SLOT_W_UNIFORM
|
||||
path = /obj/item/clothing/under/christmas/christmasfemaleg
|
||||
|
||||
/datum/gear/pinkstripper
|
||||
name = "Pink stripper outfit"
|
||||
category = SLOT_W_UNIFORM
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
add_overlay(tertiary_overlay)
|
||||
|
||||
/obj/item/clothing/AltClick(mob/living/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(hasprimary | hassecondary | hastertiary)
|
||||
var/choice = input(user,"polychromic thread options", "Clothing Recolor") as null|anything in list("[hasprimary ? "Primary Color" : ""]", "[hassecondary ? "Secondary Color" : ""]", "[hastertiary ? "Tertiary Color" : ""]") //generates a list depending on the enabled overlays
|
||||
switch(choice) //Lets the list's options actually lead to something
|
||||
@@ -78,6 +78,7 @@
|
||||
tertiary_color = sanitize_hexcolor(tertiary_color_input, desired_format=6, include_crunch=1)
|
||||
update_icon()
|
||||
user.regenerate_icons()
|
||||
return TRUE
|
||||
|
||||
/obj/item/clothing/examine(mob/user)
|
||||
. = ..()
|
||||
|
||||
@@ -57,20 +57,4 @@
|
||||
modules += new /obj/item/healthanalyzer(src)
|
||||
modules += new /obj/item/analyzer/nose(src)
|
||||
emag = new /obj/item/dogborg/pounce(src)
|
||||
fix_modules()
|
||||
|
||||
/obj/item/robot_module/medihound
|
||||
name = "MediHound module"
|
||||
|
||||
/obj/item/robot_module/medihound/New()
|
||||
..()
|
||||
modules += new /obj/item/dogborg/jaws/small(src)
|
||||
modules += new /obj/item/storage/bag/borgdelivery(src)
|
||||
modules += new /obj/item/analyzer/nose(src)
|
||||
modules += new /obj/item/soap/tongue(src)
|
||||
modules += new /obj/item/healthanalyzer(src)
|
||||
modules += new /obj/item/dogborg/sleeper(src)
|
||||
modules += new /obj/item/twohanded/shockpaddles/hound(src)
|
||||
modules += new /obj/item/sensor_device(src)
|
||||
emag = new /obj/item/dogborg/pounce(src)
|
||||
fix_modules()
|
||||
@@ -162,9 +162,6 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
|
||||
to_chat(user, "<span class='alert'>[GLOB.meta_gas_names[id]]: [round(gas_concentration*100, 0.01)] %</span>")
|
||||
to_chat(user, "<span class='info'>Temperature: [round(environment.temperature-T0C)] °C</span>")
|
||||
|
||||
/obj/item/analyzer/nose/AltClick(mob/user) //Barometer output for measuring when the next storm happens
|
||||
. = ..()
|
||||
|
||||
/obj/item/analyzer/nose/afterattack(atom/target, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
@@ -356,15 +353,6 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
|
||||
icon = 'icons/mob/dogborg.dmi'
|
||||
icon_state= "kibble"
|
||||
|
||||
//Defibs
|
||||
|
||||
/obj/item/twohanded/shockpaddles/cyborg/hound
|
||||
name = "Paws of Life"
|
||||
desc = "MediHound specific shock paws."
|
||||
icon = 'icons/mob/dogborg.dmi'
|
||||
icon_state = "defibpaddles0"
|
||||
item_state = "defibpaddles0"
|
||||
|
||||
// Pounce stuff for K-9
|
||||
|
||||
/obj/item/dogborg/pounce
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
. += 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))
|
||||
if(!shutdown && (!cell || cell.charge < 25) || !cansprint)
|
||||
return FALSE
|
||||
sprinting = shutdown ? FALSE : !sprinting
|
||||
if(!resting && canmove)
|
||||
|
||||
@@ -18,10 +18,10 @@
|
||||
else
|
||||
return
|
||||
|
||||
/mob/living/compose_message(atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, message_mode, face_name = FALSE)
|
||||
/mob/living/compose_message(atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, message_mode, face_name = FALSE, atom/movable/source)
|
||||
. = ..()
|
||||
if(istype(speaker, /mob/living))
|
||||
var/turf/speakturf = get_turf(speaker)
|
||||
var/turf/sourceturf = get_turf(src)
|
||||
if(istype(speakturf) && istype(sourceturf) && !(speakturf in get_hear(5, sourceturf)))
|
||||
. = "<citspan class='small'>[.]</citspan>" //Don't ask how the fuck this works. It just does.
|
||||
if(isliving(speaker))
|
||||
var/turf/sourceturf = get_turf(source)
|
||||
var/turf/T = get_turf(src)
|
||||
if(sourceturf && T && !(sourceturf in get_hear(5, T)))
|
||||
. = "<span class='small'>[.]</span>"
|
||||
|
||||
@@ -207,8 +207,10 @@
|
||||
var/mob/M = loc
|
||||
M.update_inv_hands()
|
||||
/obj/item/gun/ballistic/automatic/AM4B/AltClick(mob/living/user)
|
||||
. = ..()
|
||||
if(!in_range(src, user)) //Basic checks to prevent abuse
|
||||
return
|
||||
. = TRUE
|
||||
if(user.incapacitated() || !istype(user))
|
||||
to_chat(user, "<span class='warning'>You can't do that right now!</span>")
|
||||
return
|
||||
@@ -217,6 +219,7 @@
|
||||
if(body_color_input)
|
||||
body_color = sanitize_hexcolor(body_color_input, desired_format=6, include_crunch=1)
|
||||
update_icon()
|
||||
|
||||
/obj/item/gun/ballistic/automatic/AM4B/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='notice'>Alt-click to recolor it.</span>"
|
||||
|
||||
@@ -30,8 +30,10 @@ obj/item/gun/energy/e_gun/cx/update_icon()
|
||||
M.update_inv_hands()
|
||||
|
||||
obj/item/gun/energy/e_gun/cx/AltClick(mob/living/user)
|
||||
. = ..()
|
||||
if(!in_range(src, user)) //Basic checks to prevent abuse
|
||||
return
|
||||
. = TRUE
|
||||
if(user.incapacitated() || !istype(user))
|
||||
to_chat(user, "<span class='warning'>You can't do that right now!</span>")
|
||||
return
|
||||
|
||||
@@ -83,15 +83,17 @@
|
||||
return 1
|
||||
|
||||
/obj/item/gun/energy/pumpaction/AltClick(mob/living/user) //for changing firing modes since attackself is already used for pumping
|
||||
. = ..()
|
||||
if(!in_range(src, user)) //Basic checks to prevent abuse
|
||||
return
|
||||
if(user.incapacitated() || !istype(user))
|
||||
to_chat(user, "<span class='warning'>You can't do that right now!</span>")
|
||||
return
|
||||
|
||||
if(ammo_type.len > 1)
|
||||
select_fire(user)
|
||||
update_icon()
|
||||
if(user.incapacitated() || !istype(user))
|
||||
to_chat(user, "<span class='warning'>You can't do that right now!</span>")
|
||||
else
|
||||
select_fire(user)
|
||||
update_icon()
|
||||
return TRUE
|
||||
|
||||
/obj/item/gun/energy/pumpaction/examine(mob/user) //so people don't ask HOW TO CHANGE FIRING MODE
|
||||
. = ..()
|
||||
@@ -183,7 +185,6 @@
|
||||
name = "particle blast"
|
||||
damage = 13
|
||||
icon_state = "disablerpellet"
|
||||
icon = 'modular_citadel/icons/obj/projectiles.dmi'
|
||||
|
||||
/obj/item/projectile/beam/disabler/slug
|
||||
name = "positron blast"
|
||||
@@ -191,12 +192,10 @@
|
||||
range = 14
|
||||
speed = 0.6
|
||||
icon_state = "disablerslug"
|
||||
icon = 'modular_citadel/icons/obj/projectiles.dmi'
|
||||
|
||||
/obj/item/projectile/energy/electrode/pump
|
||||
name = "electron blast"
|
||||
icon_state = "stunjectile"
|
||||
icon = 'modular_citadel/icons/obj/projectiles.dmi'
|
||||
color = null
|
||||
nodamage = 1
|
||||
knockdown = 100
|
||||
|
||||
@@ -56,18 +56,17 @@
|
||||
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/genital/breasts/B = M.getorganslot(ORGAN_SLOT_BREASTS)
|
||||
//If they have Acute hepatic pharmacokinesis, then route processing though liver.
|
||||
if(HAS_TRAIT(H, TRAIT_PHARMA) || !H.canbearoused)
|
||||
var/obj/item/organ/liver/L = H.getorganslot(ORGAN_SLOT_LIVER)
|
||||
if(L)
|
||||
L.swelling += 0.05
|
||||
else
|
||||
H.adjustToxLoss(1)
|
||||
return..()
|
||||
//otherwise proceed as normal
|
||||
if(!B) //If they don't have breasts, give them breasts.
|
||||
|
||||
//If they have Acute hepatic pharmacokinesis, then route processing though liver.
|
||||
if(HAS_TRAIT(H, TRAIT_PHARMA) || !H.canbearoused)
|
||||
var/obj/item/organ/liver/L = H.getorganslot(ORGAN_SLOT_LIVER)
|
||||
if(L)
|
||||
L.swelling += 0.05
|
||||
else
|
||||
H.adjustToxLoss(1)
|
||||
return..()
|
||||
|
||||
//otherwise proceed as normal
|
||||
B = new
|
||||
if(H.dna.species.use_skintones && H.dna.features["genitals_use_skintone"])
|
||||
B.color = skintone2hex(H.skin_tone)
|
||||
@@ -222,18 +221,17 @@
|
||||
return ..()
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/genital/penis/P = H.getorganslot(ORGAN_SLOT_PENIS)
|
||||
//If they have Acute hepatic pharmacokinesis, then route processing though liver.
|
||||
if(HAS_TRAIT(H, TRAIT_PHARMA) || !H.canbearoused)
|
||||
var/obj/item/organ/liver/L = H.getorganslot(ORGAN_SLOT_LIVER)
|
||||
if(L)
|
||||
L.swelling += 0.05
|
||||
else
|
||||
H.adjustToxLoss(1)
|
||||
return ..()
|
||||
//otherwise proceed as normal
|
||||
if(!P)//They do have a preponderance for escapism, or so I've heard.
|
||||
|
||||
//If they have Acute hepatic pharmacokinesis, then route processing though liver.
|
||||
if(HAS_TRAIT(H, TRAIT_PHARMA) || !H.canbearoused)
|
||||
var/obj/item/organ/liver/L = H.getorganslot(ORGAN_SLOT_LIVER)
|
||||
if(L)
|
||||
L.swelling += 0.05
|
||||
else
|
||||
H.adjustToxLoss(1)
|
||||
return ..()
|
||||
|
||||
//otherwise proceed as normal
|
||||
P = new
|
||||
P.length = 1
|
||||
to_chat(H, "<span class='warning'>Your groin feels warm, as you feel a newly forming bulge down below.</b></span>")
|
||||
|
||||
Reference in New Issue
Block a user