mirror of
https://github.com/quotefox/Hyper-Station-13.git
synced 2026-08-27 22:56:14 +01:00
Revert "Finally, MultiZ Layenia"
This commit is contained in:
@@ -1,11 +0,0 @@
|
||||
/obj/machinery/reagentgrinder/reagentblender
|
||||
name = "Stand mixer"
|
||||
desc = "a stationary electric mixer for heavy-duty mixing various foods and other reagents."
|
||||
icon = 'hyperstation/icons/obj/machinery/reagentblender.dmi'
|
||||
icon_state = "mixer1"
|
||||
|
||||
/obj/machinery/reagentgrinder/reagentblender/update_icon()
|
||||
if(beaker)
|
||||
icon_state = "mixer1"
|
||||
else
|
||||
icon_state = "mixer0"
|
||||
@@ -1,16 +0,0 @@
|
||||
/obj/item/clothing/gloves/lambent
|
||||
name = "Lambent's sleeves"
|
||||
desc = "An elegant sleeve worn from the shoulder down. Despite missing anything on the palm and fingers, it seems to cast small hardlight protections over the hands, like a glove."
|
||||
icon_state = "lambent"
|
||||
item_state = "lambent"
|
||||
icon = 'hyperstation/icons/obj/clothing/gloves.dmi'
|
||||
alternate_worn_icon = 'hyperstation/icons/mobs/gloves.dmi'
|
||||
armor = list("melee" = 50, "bullet" = 50, "laser" = 30, "energy" = 30, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 20, "acid" = 60)
|
||||
resistance_flags = LAVA_PROOF|FIRE_PROOF|UNACIDABLE
|
||||
transfer_prints = FALSE
|
||||
strip_delay = 40
|
||||
body_parts_covered = ARMS|HANDS
|
||||
cold_protection = ARMS|HANDS
|
||||
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
|
||||
siemens_coefficient = 0
|
||||
permeability_coefficient = 0.05
|
||||
@@ -1,14 +0,0 @@
|
||||
/obj/item/clothing/shoes/lambent
|
||||
name = "Lambent's heels"
|
||||
desc = "A sleek pair of leggings with high heels, gilded in golden strips. It seems to have an autobalancing matrix installed."
|
||||
icon_state = "lambent"
|
||||
item_state = "lambent"
|
||||
icon = 'hyperstation/icons/obj/clothing/shoes.dmi'
|
||||
alternate_worn_icon = 'hyperstation/icons/mobs/feet.dmi'
|
||||
body_parts_covered = LEGS|FEET
|
||||
cold_protection = LEGS|FEET
|
||||
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
|
||||
strip_delay = 70
|
||||
resistance_flags = LAVA_PROOF|FIRE_PROOF|UNACIDABLE
|
||||
armor = list("melee" = 50, "bullet" = 50, "laser" = 30, "energy" = 30, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 20, "acid" = 60)
|
||||
clothing_flags = NOSLIP
|
||||
@@ -1,13 +0,0 @@
|
||||
/obj/item/clothing/suit/lambent
|
||||
name = "Lambent's coat"
|
||||
desc = "A regal-esque coat outfitted with inert nanites, waiting to be activated at a moment's notice."
|
||||
icon = 'hyperstation/icons/obj/clothing/suits.dmi'
|
||||
//alternate_worn_icon = 'hyperstation/icons/mobs/suits.dmi'
|
||||
icon_state = "lambent"
|
||||
item_state = "lambent"
|
||||
body_parts_covered = CHEST|LEGS
|
||||
cold_protection = CHEST|GROIN|LEGS|ARMS
|
||||
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
|
||||
strip_delay = 70
|
||||
resistance_flags = LAVA_PROOF|FIRE_PROOF|UNACIDABLE
|
||||
armor = list("melee" = 50, "bullet" = 50, "laser" = 30, "energy" = 30, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 20, "acid" = 60)
|
||||
@@ -1,14 +0,0 @@
|
||||
/obj/item/clothing/under/rank/lambent
|
||||
name = "Lambent's outfitting"
|
||||
desc = "A Hyperwoven outfitting meant for a Kinaris Lambent. It's gilded colors and ultratech weaving speak highly about status."
|
||||
icon = 'hyperstation/icons/obj/clothing/uniforms.dmi'
|
||||
//alternate_worn_icon = 'hyperstation/icons/mobs/uniforms.dmi'
|
||||
icon_state = "lambent"
|
||||
item_state = "lambent"
|
||||
armor = list("melee" = 50, "bullet" = 50, "laser" = 30, "energy" = 30, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 20, "acid" = 60)
|
||||
resistance_flags = LAVA_PROOF|FIRE_PROOF|UNACIDABLE
|
||||
strip_delay = 50
|
||||
sensor_mode = SENSOR_COORDS
|
||||
random_sensor = FALSE
|
||||
|
||||
//We'll add more alternative outfits here later. For now this'll be how it is!
|
||||
@@ -1,7 +0,0 @@
|
||||
/obj/item/clothing/under/barber
|
||||
name = "barber's uniform"
|
||||
desc = "A fancy pink shirt paired with light-catching white pants. Yet to be blood- and puke-stained."
|
||||
icon = 'hyperstation/icons/obj/clothing/uniforms.dmi'
|
||||
//alternate_worn_icon = 'hyperstation/icons/mobs/uniforms.dmi'
|
||||
icon_state = "barber"
|
||||
item_state = "barber"
|
||||
@@ -115,7 +115,6 @@ obj/item/condom/update_icon()
|
||||
return
|
||||
if(!P.condom)
|
||||
return
|
||||
|
||||
var/obj/item/condom/filled/C = new
|
||||
P.linked_organ.reagents.trans_to(C, P.linked_organ.reagents.total_volume)
|
||||
C.loc = loc
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/obj/item/reagent_containers/food/snacks/grown/wheat/
|
||||
var stacktype = /obj/item/stack/tile/hay
|
||||
/obj/item/reagent_containers/food/snacks/grown/wheat
|
||||
var/stacktype = /obj/item/stack/tile/hay
|
||||
var/tile_coefficient = 0.02 // same as grass
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/wheat/attack_self(mob/user)
|
||||
|
||||
@@ -45,11 +45,9 @@
|
||||
inuse = 1
|
||||
if(!(C == user)) //if we are targeting someone else.
|
||||
C.visible_message("<span class='userlove'>[user] is trying to use [src] on [C]'s penis.</span>", "<span class='userlove'>[user] is trying to use [src] on your penis.</span>")
|
||||
|
||||
if(!do_mob(user, C, 3 SECONDS)) //3 second delay
|
||||
inuse = 0
|
||||
return
|
||||
|
||||
//checked if not used on yourself, if not, carry on.
|
||||
playsound(src, 'sound/lewd/slaps.ogg', 30, 1, -1) //slapping sound
|
||||
inuse = 0
|
||||
@@ -57,27 +55,22 @@
|
||||
C.visible_message("<span class='userlove'>[user] pumps [src] on [C]'s penis.</span>", "<span class='userlove'>[user] pumps [src] up and down on your penis.</span>")
|
||||
else
|
||||
user.visible_message("<span class='userlove'>[user] pumps [src] on their penis.</span>", "<span class='userlove'>You pump the fleshlight on your penis.</span>")
|
||||
|
||||
if(prob(30)) //30% chance to make them moan.
|
||||
C.emote("moan")
|
||||
|
||||
C.do_jitter_animation()
|
||||
C.adjustArousalLoss(20) //make the target more aroused.
|
||||
if (C.getArousalLoss() >= 100 && ishuman(C) && C.has_dna())
|
||||
C.mob_climax(forced_climax=TRUE) //make them cum if they are over the edge.
|
||||
|
||||
if(C.can_orgasm() && ishuman(C))
|
||||
var/mob/living/carbon/human/user_human = C
|
||||
user_human.mob_climax_outside(P, mb_time=0) // instant, because we already did a warmup
|
||||
return
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You don't see anywhere to use this on.</span>")
|
||||
|
||||
inuse = 0
|
||||
..()
|
||||
|
||||
|
||||
//Hyperstation 13 portal fleshlight
|
||||
//kinky!
|
||||
|
||||
/obj/item/portallight
|
||||
name = "portal fleshlight"
|
||||
desc = "A silver love(TM) fleshlight, used to stimulate someones penis, with bluespace tech that allows lovers to hump at a distance."
|
||||
@@ -95,7 +88,6 @@
|
||||
var/paired = 0
|
||||
var/obj/item/portalunderwear
|
||||
var/useable = FALSE
|
||||
var/option = ""
|
||||
|
||||
/obj/item/portallight/examine(mob/user)
|
||||
. = ..()
|
||||
@@ -104,136 +96,109 @@
|
||||
else
|
||||
. += "<span class='notice'>The device is paired, and awaiting input. </span>"
|
||||
|
||||
/obj/item/portallight/attack(mob/living/carbon/C, mob/living/user) //use portallight! nearly the same as the fleshlight apart from you have a buddy!
|
||||
var/obj/item/organ/genital/penis/P = C.getorganslot("penis")
|
||||
|
||||
/obj/item/portallight/attack(mob/living/carbon/user, mob/living/holder)
|
||||
if(inuse) //just to stop stacking and causing people to cum instantly
|
||||
return
|
||||
if(!useable)
|
||||
to_chat(user, "<span class='notice'>It seems the device has failed or your partner is not wearing their device.</span>")
|
||||
|
||||
if(C == user)//if your using it on yourself, more options! otherwise, just fuck.
|
||||
if(!UpdateUsability())
|
||||
to_chat(holder, "<span class='notice'>\The [src] appears to be currently unusable.</span>")
|
||||
return
|
||||
var/option = "Fuck"
|
||||
if(user == holder)
|
||||
option = input(usr, "Choose action", "Portal Fleshlight", "Fuck") in list("Fuck", "Lick", "Touch")
|
||||
else
|
||||
option = "Fuck"
|
||||
|
||||
var/obj/item/organ/genital/G
|
||||
if(istype(portalunderwear.loc, /obj/item/organ/genital)) //Sanity check. Without this it will runtime error.
|
||||
G = portalunderwear.loc
|
||||
if(!G)
|
||||
var/obj/item/organ/genital/target_genital = portalunderwear.loc
|
||||
var/mob/living/carbon/human/target = target_genital.owner
|
||||
var/obj/item/organ/genital/penis/P = user.getorganslot("penis")
|
||||
if(option == "Fuck" && !P.is_exposed())
|
||||
to_chat(holder, "<span class='notice'>You don't see anywhere to use this on.</span>")
|
||||
return
|
||||
var/mob/living/carbon/human/M = G.owner
|
||||
|
||||
if(option == "Fuck"&&!P.is_exposed()) //we are trying to fuck with no penis!
|
||||
to_chat(user, "<span class='notice'>You don't see anywhere to use this on.</span>")
|
||||
return
|
||||
else //other options dont need checks
|
||||
inuse = 1
|
||||
if(!(C == user)) //if we are targeting someone else.
|
||||
C.visible_message("<span class='userlove'>[user] is trying to use [src] on [C]'s penis.</span>", "<span class='userlove'>[user] is trying to use [src] on your penis.</span>")
|
||||
|
||||
if(!do_mob(user, C, 3 SECONDS)) //3 second delay
|
||||
inuse = 0
|
||||
return
|
||||
|
||||
//checked if not used on yourself, if not, carry on.
|
||||
if(option == "Fuck")
|
||||
playsound(src, 'sound/lewd/slaps.ogg', 30, 1, -1) //slapping sound for fuck.
|
||||
|
||||
inuse = 0
|
||||
if(!(C == user))
|
||||
C.visible_message("<span class='userlove'>[user] pumps [src] on [C]'s penis.</span>", "<span class='userlove'>[user] pumps [src] up and down on your penis.</span>")
|
||||
else
|
||||
if(option == "Fuck")
|
||||
user.visible_message("<span class='userlove'>[user] pumps [src] on their penis.</span>", "<span class='userlove'>You pump the fleshlight on your penis.</span>")
|
||||
if(option == "Lick")
|
||||
user.visible_message("<span class='userlove'>[user] licks into [src].</span>", "<span class='userlove'>You lick into [src].</span>")
|
||||
if(option == "Touch")
|
||||
user.visible_message("<span class='userlove'>[user] touches softly against [src].</span>", "<span class='userlove'>You touch softly on [src].</span>")
|
||||
|
||||
|
||||
if(prob(30)) //30% chance to make your partner moan.
|
||||
M.emote("moan")
|
||||
|
||||
if(option == "Fuck")// normal fuck
|
||||
to_chat(M, "<span class='love'>You feel a [P.length] inch, [P.shape] shaped penis pumping through the portal into your [G.name].</span>")//message your partner, and kinky!
|
||||
if(prob(30)) //30% chance to make them moan.
|
||||
C.emote("moan")
|
||||
if(prob(30)) //30% chance to make your partner moan.
|
||||
M.emote("moan")
|
||||
C.adjustArousalLoss(20)
|
||||
M.adjustArousalLoss(20)
|
||||
M.do_jitter_animation() //make your partner shake too!
|
||||
|
||||
if (M.getArousalLoss() >= 100 && ishuman(M) && prob(5))//Why not have a probability to cum when someone's getting nailed with max arousal?~
|
||||
if(G.is_exposed()) //Oh yea, if vagina is not exposed, the climax will not cause a spill
|
||||
M.mob_climax_outside(G, spillage = TRUE)
|
||||
else
|
||||
M.mob_climax_outside(G, spillage = FALSE)
|
||||
|
||||
if (C.getArousalLoss() >= 100 && ishuman(C) && C.has_dna())
|
||||
var/mob/living/carbon/human/O = C
|
||||
|
||||
if( (P.condom == 1) || (P.sounding == 1)) //If coundomed and/or sounded, do not fire impreg chance
|
||||
O.mob_climax_partner(P, M, FALSE, FALSE, FALSE, TRUE)
|
||||
else //Else, fire impreg chance
|
||||
if(G.name == "vagina") //no more spontaneous impregnations through the butt!
|
||||
O.mob_climax_partner(P, M, FALSE, TRUE, FALSE, TRUE)
|
||||
else
|
||||
O.mob_climax_partner(P, M, FALSE, FALSE, FALSE, TRUE)
|
||||
|
||||
if(option == "Lick")
|
||||
to_chat(M, "<span class='love'>You feel a tongue lick you through the portal against your [G.name].</span>")
|
||||
M.adjustArousalLoss(10)
|
||||
if(option == "Touch")
|
||||
to_chat(M, "<span class='love'>You feel someone touching your [G.name] through the portal.</span>")
|
||||
M.adjustArousalLoss(5)
|
||||
|
||||
/*
|
||||
WARMUP START - prevents spam/instant climax
|
||||
*/
|
||||
inuse = TRUE
|
||||
if(user != holder)
|
||||
user.visible_message("<span class='userlove'>[holder] is trying to use [src] on [user]'s penis.</span>",\
|
||||
"<span class='userlove'>[holder] is trying to use [src] on your penis.</span>")
|
||||
if(!do_mob(holder, user, 3 SECONDS))
|
||||
inuse = FALSE
|
||||
return
|
||||
inuse = FALSE
|
||||
/*
|
||||
WARMUP END - proceed with the action
|
||||
*/
|
||||
switch(option)
|
||||
if("Fuck")
|
||||
playsound(src, 'sound/lewd/slaps.ogg', 30, 1, -1)
|
||||
if(user == holder)
|
||||
holder.visible_message("<span class='userlove'>[holder] pumps [src] on their penis.</span>",
|
||||
"<span class='userlove'>You pump the fleshlight on your penis.</span>")
|
||||
else
|
||||
user.visible_message("<span class='userlove'>[holder] pumps [src] on [user]'s penis.</span>",\
|
||||
"<span class='userlove'>[holder] pumps [src] up and down on your penis.</span>")
|
||||
to_chat(target, "<span class='love'>You feel a [P.length] inch, [P.shape] shaped penis pumping through the portal into your [target_genital.name].</span>")
|
||||
if(prob(30))
|
||||
user.emote("moan")
|
||||
user.adjustArousalLoss(20)
|
||||
target.adjustArousalLoss(20)
|
||||
target.do_jitter_animation()
|
||||
if(target.can_orgasm() && prob(5))
|
||||
target.mob_climax_outside(target_genital, spillage=target_genital.is_exposed())
|
||||
if(user.can_orgasm())
|
||||
var/mob/living/carbon/human/O = user
|
||||
var/impreg_chance = target_genital.name == "vagina" && !P.condom && !P.sounding
|
||||
if(O.mob_climax_in_partner(P, target, spillage=FALSE, remote=TRUE) && impreg_chance)
|
||||
target.impregnate(by=O)
|
||||
if("Lick")
|
||||
holder.visible_message("<span class='userlove'>[holder] licks into [src].</span>",\
|
||||
"<span class='userlove'>You lick into [src].</span>")
|
||||
to_chat(target, "<span class='love'>You feel a tongue lick you through the portal against your [target_genital.name].</span>")
|
||||
target.adjustArousalLoss(10)
|
||||
if("Touch")
|
||||
holder.visible_message("<span class='userlove'>[holder] touches softly against [src].</span>",\
|
||||
"<span class='userlove'>You touch softly on [src].</span>")
|
||||
to_chat(target, "<span class='love'>You feel someone touching your [target_genital.name] through the portal.</span>")
|
||||
target.adjustArousalLoss(5)
|
||||
if(prob(30))
|
||||
target.emote("moan")
|
||||
..()
|
||||
|
||||
/obj/item/portallight/proc/updatesleeve()
|
||||
//get their looks and vagina colour!
|
||||
cut_overlays()//remove current overlays
|
||||
|
||||
var/obj/item/organ/genital/G
|
||||
if(istype(portalunderwear.loc, /obj/item/organ/genital)) //Sanity check. Without this it will runtime.
|
||||
G = portalunderwear.loc
|
||||
if(!G)
|
||||
useable = FALSE
|
||||
cut_overlays()
|
||||
if(!UpdateUsability())
|
||||
return
|
||||
var/obj/item/organ/genital/G = portalunderwear.loc
|
||||
var/mob/living/carbon/human/H = G.owner // H is verified by UpdateUsability()
|
||||
var/sleeve_species = "normal"
|
||||
switch(H.dna.species.name)
|
||||
if("Lizardperson")
|
||||
sleeve_species = "lizard"
|
||||
if("Slimeperson")
|
||||
sleeve_species = "slime"
|
||||
if("Avian")
|
||||
sleeve_species = "avian"
|
||||
sleeve = mutable_appearance('hyperstation/icons/obj/fleshlight.dmi', "portal_sleeve_[sleeve_species]")
|
||||
sleeve.color = "#" + H.dna.features["mcolor"]
|
||||
add_overlay(sleeve)
|
||||
if(G.name == "vagina")
|
||||
organ = mutable_appearance('hyperstation/icons/obj/fleshlight.dmi', "portal_vag")
|
||||
organ.color = portalunderwear.loc.color
|
||||
if(G.name == "anus")
|
||||
organ = mutable_appearance('hyperstation/icons/obj/fleshlight.dmi', "portal_anus")
|
||||
organ.color = "#" + H.dna.features["mcolor"]
|
||||
add_overlay(organ)
|
||||
|
||||
var/mob/living/carbon/human/H = G.owner
|
||||
/obj/item/portallight/proc/UpdateUsability()
|
||||
var/useable = FALSE
|
||||
if(portalunderwear && istype(portalunderwear.loc, /obj/item/organ/genital))
|
||||
var/obj/item/organ/genital/loc_genitals = portalunderwear.loc
|
||||
if(loc_genitals.owner && ishuman(loc_genitals.owner))
|
||||
useable = TRUE
|
||||
src.useable = useable
|
||||
return useable
|
||||
|
||||
if(H) //if the portal panties are on someone.
|
||||
sleeve = mutable_appearance('hyperstation/icons/obj/fleshlight.dmi', "portal_sleeve_normal")
|
||||
if(H.dna.species.name == "Lizardperson") // lizard nerd
|
||||
sleeve = mutable_appearance('hyperstation/icons/obj/fleshlight.dmi', "portal_sleeve_lizard")
|
||||
|
||||
if(H.dna.species.name == "Slimeperson") // slime nerd
|
||||
sleeve = mutable_appearance('hyperstation/icons/obj/fleshlight.dmi', "portal_sleeve_slime")
|
||||
|
||||
if(H.dna.species.name == "Avian") // bird nerd
|
||||
sleeve = mutable_appearance('hyperstation/icons/obj/fleshlight.dmi', "portal_sleeve_avian")
|
||||
|
||||
sleeve.color = "#" + H.dna.features["mcolor"]
|
||||
add_overlay(sleeve)
|
||||
|
||||
if(G.name == "vagina")
|
||||
organ = mutable_appearance('hyperstation/icons/obj/fleshlight.dmi', "portal_vag")
|
||||
organ.color = portalunderwear.loc.color
|
||||
if(G.name == "anus")
|
||||
organ = mutable_appearance('hyperstation/icons/obj/fleshlight.dmi', "portal_anus")
|
||||
organ.color = "#" + H.dna.features["mcolor"]
|
||||
|
||||
useable = TRUE
|
||||
add_overlay(organ)
|
||||
else
|
||||
useable = FALSE
|
||||
|
||||
//Hyperstation 13 portal underwear
|
||||
//can be attached to vagina or anus, just like the vibrator, still requires pairing with the portallight
|
||||
|
||||
/obj/item/portalpanties
|
||||
name = "portal panties"
|
||||
desc = "A silver love(TM) pair of portal underwear, with bluespace tech allows lovers to hump at a distance. Needs to be paired with a portal fleshlight before use."
|
||||
@@ -252,7 +217,6 @@
|
||||
else
|
||||
. += "<span class='notice'>The device is paired, and awaiting attachment. </span>"
|
||||
|
||||
|
||||
/obj/item/portalpanties/attackby(obj/item/I, mob/living/user) //pairing
|
||||
if(istype(I, /obj/item/portallight))
|
||||
var/obj/item/portallight/P = I
|
||||
@@ -268,11 +232,9 @@
|
||||
..() //just allows people to hit it with other objects, if they so wished.
|
||||
|
||||
/obj/item/portalpanties/attack(mob/living/carbon/C, mob/living/user)
|
||||
|
||||
if(!portallight) //we arent paired yet! noobie trap, let them know.
|
||||
to_chat(user, "<span class='warning'>[src] can only be attached once paired with a portal fleshlight.</span>")
|
||||
return
|
||||
|
||||
var/obj/item/organ/genital/picked_organ
|
||||
var/mob/living/carbon/human/S = user
|
||||
var/mob/living/carbon/human/T = C
|
||||
@@ -282,21 +244,17 @@
|
||||
"<span class='warning'>[user] is trying to put [src] on you!</span>")
|
||||
if(!do_mob(user, C, 3 SECONDS))//warn them and have a delay of 5 seconds to apply.
|
||||
return
|
||||
|
||||
if((picked_organ.name == "vagina")||(picked_organ.name == "anus")) //only fits on a vagina or anus
|
||||
|
||||
src.shapetype = picked_organ.name
|
||||
if(!picked_organ.equipment)
|
||||
to_chat(user, "<span class='love'>You wrap [src] around [T]'s [picked_organ.name].</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>They already have [picked_organ.equipment.name] there.</span>")
|
||||
return
|
||||
|
||||
if(!user.transferItemToLoc(src, picked_organ)) //check if you can put it in
|
||||
return
|
||||
src.attached = TRUE
|
||||
picked_organ.equipment = src
|
||||
|
||||
var/obj/item/portallight/P = portallight
|
||||
//now we need to send what they look like, but saddly if the person changes colour for what ever reason, it wont update. but dont tell people shh.
|
||||
if(P) //just to make sure
|
||||
@@ -312,6 +270,7 @@
|
||||
var/obj/item/portallight/P = portallight
|
||||
P.updatesleeve()
|
||||
|
||||
|
||||
/obj/item/storage/box/portallight
|
||||
name = "Portal Fleshlight and Underwear"
|
||||
icon = 'hyperstation/icons/obj/fleshlight.dmi'
|
||||
|
||||
@@ -156,7 +156,7 @@
|
||||
<h1><u>Chapter 4</u></h1>
|
||||
<h2>About Layenia Station</h2>
|
||||
<p>
|
||||
After reading this far in, it may become apparent that Layenia does not reflect the values of Kinaris in many ways. From the technological progress to the surroundings, it may seem like Layenia Station is far behind its time. And that’s an entirely correct notion, all thanks to the standards of Kinaris Uplifting.
|
||||
After reading this far in, it may become apparent that Layenia does not reflect the values of Kinaris in many ways. From the technological progress to the surroundings, it may seem like Layenia Station is far behind its time. And that’s an entirely correct notion, all thanks to the standards of Kinaris Uplifting.
|
||||
<p>
|
||||
As it stands right now, Layenia Station uses a fabricated Engram to replicate that of its former employers and owners. The star was previously given to humanity prior to the first attempt at Uplifting, but it was taken back shortly after things went south, and given open borders to the Milky Way. The Engram in particular mimics a lot of Nanotrasen-esque technology, which makes Layenia Station one of the most low-tech Kinaris stations to exist out there to date!
|
||||
<p>
|
||||
@@ -166,7 +166,7 @@
|
||||
<p>
|
||||
<hr>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
"}
|
||||
|
||||
@@ -160,9 +160,6 @@ obj/item/clothing/neck/stole/black
|
||||
var/firstpickup = TRUE
|
||||
var/pickupsound = TRUE
|
||||
|
||||
/obj/item/clothing/under/vaultsuit/no_sound
|
||||
pickupsound = FALSE
|
||||
|
||||
/obj/item/clothing/under/vaultsuit/equipped(mob/user, slot)
|
||||
. = ..()
|
||||
if(!pickupsound)
|
||||
@@ -198,3 +195,44 @@ obj/item/clothing/neck/stole/black
|
||||
body_parts_covered = CHEST|LEGS|ARMS
|
||||
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
|
||||
|
||||
/obj/item/clothing/suit/threepwoodjacket
|
||||
name = "threepwood's jacket"
|
||||
desc = "A jacket fit for a Mighty Pirate!"
|
||||
icon = 'hyperstation/icons/obj/clothing/suits.dmi'
|
||||
icon_state = "threepwoodjacket"
|
||||
alternate_worn_icon = 'hyperstation/icons/mobs/suits.dmi'
|
||||
item_state = "b_suit"
|
||||
var/firstpickup = TRUE
|
||||
var/pickupsound = TRUE
|
||||
|
||||
/obj/item/clothing/suit/threepwoodjacket/equipped(mob/user, slot)
|
||||
. = ..()
|
||||
if(!pickupsound)
|
||||
return
|
||||
if(!ishuman(user))
|
||||
return
|
||||
if(slot == SLOT_WEAR_SUIT)
|
||||
if(!firstpickup)
|
||||
SEND_SOUND(user, sound('hyperstation/sound/effects/vaultsuit/FalloutEXPUp.ogg', volume = 00))
|
||||
else
|
||||
firstpickup = FALSE
|
||||
SEND_SOUND(user, sound('hyperstation/sound/effects/vaultsuit/bartandfink.ogg', volume = 60))
|
||||
return
|
||||
|
||||
/obj/item/clothing/under/threepwood
|
||||
name = "threepwood's outfit"
|
||||
desc = "An outfit fit for a Mighty Pirate!."
|
||||
icon = 'hyperstation/icons/obj/clothing/uniforms.dmi'
|
||||
icon_state = "threepwood"
|
||||
alternate_worn_icon = 'hyperstation/icons/mobs/uniforms.dmi'
|
||||
item_state = "w_suit"
|
||||
can_adjust = FALSE
|
||||
|
||||
/obj/item/clothing/shoes/threepwoodboots
|
||||
name = "threepwood's boots"
|
||||
desc = "A pair of boots fit for a Mighty Pirate!."
|
||||
icon = 'hyperstation/icons/obj/clothing/shoes.dmi'
|
||||
icon_state = "threepwoodboots"
|
||||
alternate_worn_icon = 'hyperstation/icons/obj/clothing/shoes.dmi'
|
||||
item_state = "threepwoodboots"
|
||||
alternate_worn_icon = 'hyperstation/icons/mobs/feet.dmi'
|
||||
@@ -74,11 +74,4 @@
|
||||
item_state = "enzor"
|
||||
attack_verb = list("tail bapped", "whomped", "squeaked")
|
||||
squeak_override = list('sound/effects/mousesqueek.ogg'= 1)
|
||||
|
||||
//Arc is amazing and has helped Hyper in terms of spriting a ton. They deserve this
|
||||
/obj/item/toy/plush/lizardplushie/arctaisia
|
||||
name = "fat lizard plushie"
|
||||
desc = "This lizard is a heckin' chonker!"
|
||||
icon = 'hyperstation/icons/obj/plushes.dmi'
|
||||
icon_state = "arc"
|
||||
squeak_override = list('modular_citadel/sound/voice/weh.ogg' = 1)
|
||||
//End
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
var/results = "null"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
|
||||
|
||||
/obj/item/pregnancytest/attack_self(mob/user)
|
||||
if(QDELETED(src))
|
||||
return
|
||||
@@ -16,28 +15,26 @@
|
||||
return
|
||||
if(isAI(user))
|
||||
return
|
||||
if(user.stat > 0)//unconscious or dead
|
||||
if(user.stat > CONSCIOUS)//unconscious or dead
|
||||
return
|
||||
if(status == 1)
|
||||
return //Already been used once, pregnancy tests only work once.
|
||||
test(user)
|
||||
|
||||
/obj/item/pregnancytest/proc/force(mob/living/user)
|
||||
//Force it negative
|
||||
icon_state = "negative"
|
||||
name = "[results] pregnancy test"
|
||||
status = 1
|
||||
to_chat(user, "<span class='notice'>You use the pregnancy test, the display reads negative!</span>")
|
||||
|
||||
|
||||
/obj/item/pregnancytest/proc/test(mob/living/user)
|
||||
Test(user)
|
||||
|
||||
/obj/item/pregnancytest/proc/Test(mob/living/user)
|
||||
if(status)
|
||||
return
|
||||
var/_results = FALSE
|
||||
var/obj/item/organ/genital/womb/W = user.getorganslot("womb")
|
||||
if(W.pregnant == 1)
|
||||
results = "positive"
|
||||
icon_state = "positive"
|
||||
name = "[results] pregnancy test"
|
||||
status = 1
|
||||
to_chat(user, "<span class='notice'>You use the pregnancy test, the display reads positive!</span>")
|
||||
else
|
||||
force(user)
|
||||
if(!W)
|
||||
return // no reason to waste the single-use on them
|
||||
if(W.pregnant)
|
||||
_results = TRUE
|
||||
UpdateResult(user, _results)
|
||||
|
||||
/obj/item/pregnancytest/proc/UpdateResult(mob/living/user, results)
|
||||
var/result_text = results ? "positive" : "negative"
|
||||
src.results = result_text
|
||||
icon_state = result_text
|
||||
name = "[results] preganancy test"
|
||||
status = TRUE
|
||||
if(user)
|
||||
to_chat(user, "<span class='notice'>You use the pregnancy test, the display reads [results]!</span>")
|
||||
@@ -1,7 +0,0 @@
|
||||
/obj/structure/beacon
|
||||
name = "beacon"
|
||||
desc = "A small marker beacon"
|
||||
anchored = TRUE
|
||||
density = FALSE
|
||||
icon = 'hyperstation/icons/obj/structures/beacons.dmi'
|
||||
icon_state = "beacon"
|
||||
@@ -132,14 +132,13 @@ Code:
|
||||
if(2) //med, can make you cum
|
||||
to_chat(U, "<span class='love'>You feel intense pleasure surge through your [G.name]</span>")
|
||||
U.do_jitter_animation()
|
||||
if (U.getArousalLoss() >= 100 && ishuman(U) && U.has_dna())
|
||||
U.mob_climax(forced_climax=TRUE)
|
||||
U.mob_climax_instant()
|
||||
if(3) //high, makes you stun
|
||||
to_chat(U, "<span class='userdanger'>You feel overpowering pleasure surge through your [G.name]</span>")
|
||||
U.Jitter(3)
|
||||
U.Stun(30)
|
||||
if (U.getArousalLoss() >= 100 && ishuman(U) && U.has_dna())
|
||||
U.mob_climax(forced_climax=TRUE)
|
||||
if (U.can_orgasm())
|
||||
U.mob_climax_instant()
|
||||
if(prob(50))
|
||||
U.emote("moan")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user