mirror of
https://github.com/Sandstorm-Station/Sandstorm-Station-13.git
synced 2026-07-23 14:15:19 +01:00
172 lines
6.7 KiB
Plaintext
172 lines
6.7 KiB
Plaintext
//Dildo changes.
|
|
/obj/item/dildo
|
|
/*name = "dildo"
|
|
desc = "Hmmm, deal throw."
|
|
icon = 'honk/icons/obj/items/dildo.dmi'
|
|
icon_state = "dildo_map"
|
|
item_state = "dildo"
|
|
throwforce = 0
|
|
force = 5
|
|
w_class = WEIGHT_CLASS_SMALL
|
|
attack_verb = list("slammed", "bashed", "whipped")*/
|
|
|
|
var/hole = CUM_TARGET_VAGINA
|
|
|
|
/*var/random_color = TRUE
|
|
var/static/list/dildo_colors = list(
|
|
"purple" = "#800080",
|
|
"darkviolet" = "#9400D3",
|
|
"red" = "#FF0000",
|
|
"dimgray" = "#696969",
|
|
"black" = "#000000", //dont kill me for this - lennuel
|
|
"white" = "#ffffff", //racial equality
|
|
"green" = "#008000",
|
|
"pink" = "#FFC0CB",
|
|
"lightpink" = "#ffc0cb",
|
|
"blue" = "#7282e5"
|
|
)
|
|
|
|
/obj/item/dildo/Initialize()
|
|
. = ..()
|
|
if(random_color) //random colors!
|
|
icon_state = "dildo"
|
|
var/our_color = pick(dildo_colors)
|
|
add_atom_colour(dildo_colors[our_color], FIXED_COLOUR_PRIORITY)
|
|
update_icon()
|
|
|
|
/obj/item/dildo/update_icon()
|
|
if(!random_color) //icon override
|
|
return
|
|
cut_overlays()
|
|
var/mutable_appearance/base_overlay = mutable_appearance(icon, "dildo_base")
|
|
base_overlay.appearance_flags = RESET_COLOR
|
|
add_overlay(base_overlay) */
|
|
|
|
/obj/item/dildo/attack(mob/living/carbon/human/M, mob/living/carbon/human/user)
|
|
var/message = ""
|
|
if(istype(M, /mob/living/carbon/human) && user.zone_selected == BODY_ZONE_PRECISE_GROIN && M.is_bottomless())
|
|
if(M.client && M.client.prefs)
|
|
if(M.client.prefs.toggles & VERB_CONSENT)
|
|
if(hole == CUM_TARGET_VAGINA && M.has_vagina())
|
|
message = (user == M) ? pick("fucks their own pussy with \the [src]","shoves \the [src] into their pussy", "jams \the [src] into their pussy") : pick("fucks [M] right in the pussy with \the [src]", "jams \the [src] right into [M]'s pussy")
|
|
else if(hole == CUM_TARGET_ANUS && M.has_anus())
|
|
message = (user == M) ? pick("fucks their own ass with \the [src]","shoves \the [src] into their ass", "jams \the [src] into their ass") : pick("fucks [M]'s asshole with \the [src]", "jams \the [src] into [M]'s ass")
|
|
else if(istype(M, /mob/living/carbon/human) && user.zone_selected == BODY_ZONE_PRECISE_MOUTH && M.mouth_is_free())
|
|
if(M.client && M.client.prefs)
|
|
if(M.client.prefs.toggles & VERB_CONSENT)
|
|
if(M.has_mouth())
|
|
message = (user == M) ? pick("fucks their own mouth with \the [src]", "shoves \the [src] into their mouth", "jams \the [src] into their mouth") : pick("fucks [M]'s mouth with \the [src]", "jams \the [src] into [M]'s mouth")
|
|
if(message)
|
|
user.visible_message("<font color=purple>[user] [message].</font>")
|
|
M.handle_post_sex(5, null, user)
|
|
playsound(loc, pick('sandcode/sound/interactions/bang4.ogg',
|
|
'sandcode/sound/interactions/bang5.ogg',
|
|
'sandcode/sound/interactions/bang6.ogg'), 70, 1, -1)
|
|
else if(user.a_intent == INTENT_HARM)
|
|
return ..()
|
|
|
|
/obj/item/dildo/attack_self(mob/living/carbon/human/user as mob)
|
|
if(hole == CUM_TARGET_VAGINA)
|
|
hole = CUM_TARGET_ANUS
|
|
else
|
|
hole = CUM_TARGET_VAGINA
|
|
to_chat(user, "<span class='warning'>Hmmm. Maybe we should put it in \a [hole]?</span>")
|
|
|
|
//reagent here
|
|
/*datum/reagent/consumable/cum // could probably be made /blood/consumable/cum to just inherit the DNA procs sometime
|
|
name = "cum"
|
|
id = "cum"
|
|
description = "Where you found this is your own business."
|
|
color = "#AAAAAA77"
|
|
taste_description = "something with a tang"
|
|
data = list("donor"=null,"viruses"=null,"donor_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null)
|
|
taste_mult = 2
|
|
reagent_state = LIQUID
|
|
nutriment_factor = 0.5 * REAGENTS_METABOLISM
|
|
glass_icon_state = "glass_white"
|
|
glass_name = "glass of cream"
|
|
glass_desc = "Smells suspicious."
|
|
shot_glass_icon_state = "shotglasscream"
|
|
|
|
/datum/reagent/consumable/cum/reaction_turf(turf/T, reac_volume)
|
|
if(!istype(T))
|
|
return
|
|
if(reac_volume < 3)
|
|
return
|
|
|
|
var/obj/effect/decal/cleanable/cum/S = locate() in T
|
|
if(!S)
|
|
S = new(T)
|
|
S.reagents.add_reagent("cum", reac_volume)
|
|
if(data["blood_DNA"])
|
|
S.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) //yes. STD
|
|
|
|
//cleanable here
|
|
|
|
/obj/effect/decal/cleanable/cum
|
|
name = "cum"
|
|
desc = "It's pie cream from a cream pie. Or not..."
|
|
gender = PLURAL
|
|
layer = ABOVE_NORMAL_TURF_LAYER
|
|
density = 0
|
|
icon = 'honk/icons/effects/cum.dmi'
|
|
icon_state = "cum1"
|
|
random_icon_states = list("cum1", "cum3", "cum4", "cum5", "cum6", "cum7", "cum8", "cum9", "cum10", "cum11", "cum12")
|
|
mergeable_decal = TRUE
|
|
blood_state = null
|
|
bloodiness = null
|
|
//var/blood_DNA = list()
|
|
|
|
/obj/effect/decal/cleanable/cum/Initialize()
|
|
. = ..()
|
|
dir = pick(1,2,4,8)
|
|
reagents.add_reagent("cum", rand(8,13))
|
|
add_blood_DNA(list("Unknown DNA" = "O+"))*/
|
|
|
|
//begin redds code
|
|
/obj/item/dildo/cyborg
|
|
name = "F.I.S.T.R. Machine"
|
|
desc = "Fully Integrated Sexual Tension Relief Machine"
|
|
|
|
/obj/item/dildo/cyborg/attack(mob/living/carbon/human/M, mob/living/carbon/human/user)
|
|
var/message = ""
|
|
if(istype(M, /mob/living/carbon/human) && M.is_bottomless())
|
|
if(M.client && M.client.prefs)
|
|
if(M.client.prefs.toggles & VERB_CONSENT)
|
|
if(hole == CUM_TARGET_VAGINA && M.has_vagina())
|
|
message = (user == M) ? pick("fucks their own pussy with \the [src]","shoves \the [src] into their pussy", "jams \the [src] into their pussy") : pick("fucks [M] right in the pussy with \the [src]", "jams \the [src] right into [M]'s pussy")
|
|
else if(hole == CUM_TARGET_ANUS && M.has_anus())
|
|
message = (user == M) ? pick("fucks their own ass with \the [src]","shoves \the [src] into their ass", "jams \the [src] into their ass") : pick("fucks [M]'s asshole with \the [src]", "jams \the [src] into [M]'s ass")
|
|
else if(istype(M, /mob/living/carbon/human) && user.zone_selected == BODY_ZONE_PRECISE_MOUTH && M.mouth_is_free())
|
|
if(M.client && M.client.prefs)
|
|
if(M.client.prefs.toggles & VERB_CONSENT)
|
|
if(M.has_mouth())
|
|
message = (user == M) ? pick("fucks their own mouth with \the [src]", "shoves \the [src] into their mouth", "jams \the [src] into their mouth") : pick("fucks [M]'s mouth with \the [src]", "jams \the [src] into [M]'s mouth")
|
|
if(message)
|
|
user.visible_message("<font color=purple>[user] [message].</font>")
|
|
M.handle_post_sex(5, null, user)
|
|
playsound(loc, pick('sandcode/sound/interactions/bang4.ogg',
|
|
'sandcode/sound/interactions/bang5.ogg',
|
|
'sandcode/sound/interactions/bang6.ogg'), 70, 1, -1)
|
|
else if(user.a_intent == INTENT_HARM)
|
|
return ..()
|
|
//end redds code
|
|
|
|
/obj/item/pneumatic_cannon/dildo
|
|
color = "#FFC0CB"
|
|
name = "pneumatic cannon"
|
|
desc = "A pneumatic cannon with a picture of a bus printed on the side that resembles an A-shape."
|
|
automatic = TRUE
|
|
selfcharge = TRUE
|
|
gasPerThrow = 0
|
|
checktank = FALSE
|
|
fire_mode = PCANNON_FIFO
|
|
throw_amount = 1
|
|
maxWeightClass = 60
|
|
var/static/list/dildo_typecache = typecacheof(/obj/item/dildo)
|
|
charge_type = /obj/item/dildo
|
|
|
|
/obj/item/pneumatic_cannon/dildo/Initialize()
|
|
. = ..()
|
|
allowed_typecache = dildo_typecache
|