mirror of
https://github.com/quotefox/Hyper-Station-13.git
synced 2026-07-20 20:22:24 +01:00
Merge remote-tracking branch 'upstream/master' into fairylights
This commit is contained in:
@@ -25,6 +25,9 @@
|
||||
dat += "<a href='byond://?src=[REF(src)];container=1'>Fill container</A>"
|
||||
dat += "(Use a container in your hand to collect your seminal fluid.)<BR>"
|
||||
|
||||
dat += "<a href='byond://?src=[REF(src)];climaxself=1'>Climax on self</A>"
|
||||
dat += "(Stimulate a sexual organ to climax onto yourself.)<BR>"
|
||||
|
||||
var/mob/living/carbon/human/C = usr
|
||||
if(C && C.w_uniform || C.wear_suit) //if they are wearing cloths
|
||||
dat += "<a href='byond://?src=[REF(src)];clothesplosion=1'>Explode out of clothes</A>"
|
||||
@@ -160,6 +163,14 @@
|
||||
to_chat(usr, "<span class='warning'>You aren't aroused enough for that! </span>")
|
||||
return
|
||||
|
||||
if(href_list["climaxself"])
|
||||
if (H.arousalloss >= (H.max_arousal / 100) * 33) //requires 33% arousal.
|
||||
H.climaxself()
|
||||
return
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>You aren't aroused enough for that! </span>")
|
||||
return
|
||||
|
||||
if(href_list["climax"])
|
||||
if (H.arousalloss >= (H.max_arousal / 100) * 33) //requires 33% arousal.
|
||||
H.climaxalone(FALSE)
|
||||
@@ -340,17 +351,14 @@ obj/screen/arousal/proc/kiss()
|
||||
/mob/living/carbon/human/proc/kisstarget(mob/living/L)
|
||||
|
||||
src << browse(null, "window=arousal") //closes the arousal window, if its open, mainly to stop spam
|
||||
if(isliving(L)) //is your target living? Living people can resist your advances if they want to via moving.
|
||||
if(iscarbon(L))
|
||||
src.visible_message("<span class='notice'>[src] is about to kiss [L]!</span>", \
|
||||
"<span class='notice'>You're attempting to kiss [L]!</span>", \
|
||||
"<span class='notice'>You're attempting to kiss with something!</span>")
|
||||
SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "kissed", /datum/mood_event/kiss) //how cute, affection is nice.
|
||||
//Well done you kissed it/them!
|
||||
|
||||
L.adjustPainLoss(-5, 0) //mommas kisses always stop alittle pain..
|
||||
SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "kissed", /datum/mood_event/kiss) //how cute, affection is nice.
|
||||
src.visible_message("<span class='notice'>[src] kisses [L]!</span>", \
|
||||
"<span class='notice'>You kiss [L]!</span>", \
|
||||
"<span class='notice'>You kiss something!</span>")
|
||||
|
||||
|
||||
/mob/living/carbon/human/proc/climaxalone()
|
||||
//we dont need hands to climax alone, its hands free!
|
||||
var/obj/item/organ/genital/picked_organ
|
||||
@@ -503,4 +511,29 @@ obj/screen/arousal/proc/kiss()
|
||||
cut_overlay(mutable_appearance('hyperstation/icons/effects/cumoverlay.dmi', "cum_large"))
|
||||
if(cum_splatter_icon)
|
||||
cut_overlay(cum_splatter_icon)
|
||||
return TRUE
|
||||
return TRUE
|
||||
|
||||
/mob/living/carbon/human/proc/climaxself()
|
||||
if(restrained(TRUE))
|
||||
to_chat(src, "<span class='warning'>You can't do that while restrained!</span>")
|
||||
return
|
||||
var/free_hands = get_num_arms()
|
||||
if(!free_hands)
|
||||
to_chat(src, "<span class='warning'>You need at least one free arm.</span>")
|
||||
return
|
||||
for(var/helditem in held_items)
|
||||
if(isobj(helditem))
|
||||
free_hands--
|
||||
if(free_hands <= 0)
|
||||
to_chat(src, "<span class='warning'>You're holding too many things.</span>")
|
||||
return
|
||||
//We got hands, let's pick an organ
|
||||
var/obj/item/organ/genital/picked_organ
|
||||
picked_organ = pick_masturbate_genitals()
|
||||
if(picked_organ)
|
||||
src << browse(null, "window=arousal") //closes the window
|
||||
mob_masturbate(picked_organ, cover = TRUE)
|
||||
return
|
||||
else //They either lack organs that can masturbate, or they didn't pick one.
|
||||
to_chat(src, "<span class='warning'>You cannot climax without choosing genitals.</span>")
|
||||
return
|
||||
@@ -326,7 +326,7 @@
|
||||
Most stable colonies, stations, civilizations, planets, or anywhere on the spectrum is often backed by the firm hand of Kinaris- underneath one rule: \
|
||||
Be Radiant."
|
||||
history = ""
|
||||
work = "Weave-research, conversion, and colony management"
|
||||
work = "Weave-research, conversion, uplifting, and colony management"
|
||||
headquarters = "Holy City of Radiant Hearth, Myril"
|
||||
motto = "Be Radiant"
|
||||
|
||||
@@ -361,6 +361,7 @@
|
||||
"Salis Major orbit",
|
||||
"a megastructure at Kappa Andromedae",
|
||||
"Radiant Hearth",
|
||||
"a dockyard at Procella, Tremora",
|
||||
"sector command at Vivida Laetus",
|
||||
"a dissonant tear at RR Lyra",
|
||||
"a city-station at Kappa Andromedae",
|
||||
@@ -414,6 +415,7 @@
|
||||
"a ringworld at Incandesce Seconda",
|
||||
"Salis Major orbit",
|
||||
"a megastructure at Kappa Andromedae",
|
||||
"a dockyard at Procella, Tremora",
|
||||
"the rings of Layenia",
|
||||
"Dzar metalworking at Loto",
|
||||
"a metalworking site at Salis Major",
|
||||
@@ -454,4 +456,56 @@
|
||||
|
||||
ship_prefixes = list("ZCO" = "transportation", "ZC" = "patrol")
|
||||
|
||||
autogenerate_destination_names = TRUE
|
||||
autogenerate_destination_names = TRUE
|
||||
|
||||
//Thanks Hellcelot for this one!
|
||||
/datum/lore/organization/titanceramics
|
||||
name = "Titan Piezoelectrics and Ceramics"
|
||||
short_name = "Titan Ceramics"
|
||||
desc = "Titan Ceramics was the primary source of prominent electrical power on Tremora for it's lifespan, with extravagent materials and unique ceramic mixes that supported \
|
||||
incredibly efficient production of energy in bulk. Not only did they provide energy for a once-struggling civilization, they brought upon artistic desire and talent for those \
|
||||
who would seek their ceramics. Value in energy is equal to value in art in their eyes, with only the finest materials and expertly-tested conditions to meet the quality of \
|
||||
their work. Despite the overwhelming size difference of the housing species, value is still sought from both sides, resulting in multi-size accomodations for their ceramics. \
|
||||
When cheap yet efficient power is required without the Weave, Titan Ceramics is there."
|
||||
history = ""
|
||||
work = "Production of power-efficient piezoelectric ceramics and craft"
|
||||
headquarters = "The Storm Capitol of Procella, Tremora"
|
||||
motto = ""
|
||||
|
||||
ship_prefixes = list("TC" = "transportation", "TCF" = "freight", "TCR" = "research")
|
||||
ship_names = list(
|
||||
"Noki",
|
||||
"Moyai",
|
||||
"Megalodon",
|
||||
"Mako",
|
||||
"Minnow",
|
||||
"Tsunami",
|
||||
"North Star",
|
||||
"Tempest",
|
||||
"Eye of the Storm",
|
||||
"Aquarius",
|
||||
"Marinia",
|
||||
"Thalassus",
|
||||
"Stormwind"
|
||||
)
|
||||
|
||||
autogenerate_destination_names = TRUE
|
||||
|
||||
/datum/lore/organization/syntech
|
||||
name = "Synergized Technology"
|
||||
short_name = "SynTech"
|
||||
desc = "Synergized Technology- commonly known as SynTech- is a company which leads the complex solutions in any galaxy's biggest problem: accomodating for the size of life. \
|
||||
As civilization grew more welcoming to different ideals and lifestyles, it became more difficult and disasterous to deal with the extreme size difference from one alien \
|
||||
species to the other. Not only did this spark an incredible amount of regulations from AzureGov, but Kinaris's interest was piqued to keep peace over all; and that included \
|
||||
accomodating for any species, whether or not they stood above a mountain, or below an ant hill. The high demand of multi-size rights and technology was driven into SynTech's \
|
||||
hands, where they would provide and assist in regulating consistent and meaningful products to ease interaction from one to the next. Not only do they supply incredibly \
|
||||
advanced, highly-regulated technology, they also help in consistent planning and regulation in most cities to keep traffic from most differently-sized species without \
|
||||
havoc. Without SynTech, galaxies would look like a fairly bland place, where one size rules above all."
|
||||
history = ""
|
||||
work = "Production and selling of size-altering technology, as well as accomodating the planning of infrastructure to support many sizes."
|
||||
headquarters = "The City-Planet of Jovias, Nembus"
|
||||
motto = "Modern solutions, big and small"
|
||||
|
||||
ship_prefixes = list("SYT" = "transportation", "SYTF" = "freight", "XSYT" = "scaler", "SYT-I" = "constructor")
|
||||
|
||||
autogenerate_destination_names = TRUE
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
/datum/round_event_control/crystalloid_entities
|
||||
name = "Crystal Invasion"
|
||||
typepath = /datum/round_event/crystalloid_entities
|
||||
weight = 10 //decreased weight from 15 to 10
|
||||
min_players = 2 //increased min players from 2 to 5 to reduce chances of half the crew dying in a carp breach
|
||||
earliest_start = 10 MINUTES
|
||||
max_occurrences = 2
|
||||
|
||||
|
||||
/datum/round_event/crystalloid_entities
|
||||
announceWhen = 3
|
||||
startWhen = 50
|
||||
|
||||
/datum/round_event/crystalloid_entities/setup()
|
||||
startWhen = rand(40, 60)
|
||||
|
||||
/datum/round_event/crystalloid_entities/announce(fake)
|
||||
if(prob(70))
|
||||
priority_announce("Unknown inorganic entities have been detected near [station_name()], please stand-by.", "Lifesign Alert", 'sound/ai/crystal.ogg')
|
||||
else
|
||||
priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak
|
||||
for(var/obj/machinery/computer/communications/C in GLOB.machines)
|
||||
if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z))
|
||||
var/obj/item/paper/P = new(C.loc)
|
||||
P.name = "Crystalloid entities"
|
||||
P.info = "Unknown inorganic entities have been detected near [station_name()], you may wish to break out arms."
|
||||
P.update_icon()
|
||||
|
||||
|
||||
/datum/round_event/crystalloid_entities/start()
|
||||
for(var/obj/effect/landmark/carpspawn/C in GLOB.landmarks_list)
|
||||
if(prob(60)) //dont spawn them EVERYWHERE, they are tougher than carps.
|
||||
new /mob/living/simple_animal/hostile/crystal(C.loc)
|
||||
|
||||
@@ -0,0 +1,399 @@
|
||||
/*
|
||||
from modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm:
|
||||
/datum/sprite_accessory
|
||||
var/extra = FALSE
|
||||
var/extra_color_src = MUTCOLORS2 //The color source for the extra overlay.
|
||||
var/extra2 = FALSE
|
||||
var/extra_icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
var/extra2_icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
var/extra2_color_src = MUTCOLORS3
|
||||
var/list/ckeys_allowed
|
||||
|
||||
we use the "citadel" versions of mutant/species parts, which usually (but not always)
|
||||
begins with "mam_" somewhere. stuff that's built for only humans/lizards in other parts
|
||||
of the code are from TG, don't use those.
|
||||
|
||||
keep everything in alphabetical order, please!
|
||||
*/
|
||||
|
||||
// TODO: code it so that we don't have to type in "icon = 'hyperstation/icons/mob/etc'"
|
||||
// manually for hyperstation parts
|
||||
|
||||
|
||||
/*
|
||||
SNOUTS
|
||||
==========================================================
|
||||
*/
|
||||
|
||||
/datum/sprite_accessory/mam_snouts/bigmandible // sarcoph @ hyperstation, march 2022
|
||||
name = "Big Mandibles (Hyper)"
|
||||
icon_state = "bigmandible"
|
||||
icon = 'hyperstation/icons/mob/char_snouts.dmi'
|
||||
recommended_species = list("insect")
|
||||
|
||||
/datum/sprite_accessory/mam_snouts/proboscis // sarcoph @ hyperstation, march 2022
|
||||
name = "Proboscis (Hyper)"
|
||||
icon_state = "proboscis"
|
||||
icon = 'hyperstation/icons/mob/char_snouts.dmi'
|
||||
recommended_species = list("insect")
|
||||
|
||||
/datum/sprite_accessory/mam_snouts/rhinobeetle // sarcoph @ hyperstation, march 2022
|
||||
name = "Rhino Beetle (Hyper)"
|
||||
icon_state = "rhinobeetle"
|
||||
icon = 'hyperstation/icons/mob/char_snouts.dmi'
|
||||
recommended_species = list("insect")
|
||||
|
||||
/datum/sprite_accessory/mam_snouts/scarab // sarcoph @ hyperstation, march 2022
|
||||
name = "Scarab Beetle (Hyper)"
|
||||
icon_state = "scarab"
|
||||
icon = 'hyperstation/icons/mob/char_snouts.dmi'
|
||||
recommended_species = list("insect")
|
||||
|
||||
/datum/sprite_accessory/mam_snouts/smallmandible // sarcoph @ hyperstation, march 2022
|
||||
name = "Small Mandibles (Hyper)"
|
||||
icon_state = "smallmandible"
|
||||
icon = 'hyperstation/icons/mob/char_snouts.dmi'
|
||||
recommended_species = list("insect")
|
||||
|
||||
/datum/sprite_accessory/mam_snouts/spider // sarcoph @ hyperstation, march 2022
|
||||
name = "Spider (Hyper)"
|
||||
icon_state = "spider"
|
||||
icon = 'hyperstation/icons/mob/char_snouts.dmi'
|
||||
recommended_species = list("insect")
|
||||
|
||||
/datum/sprite_accessory/mam_snouts/tarantula // sarcoph @ hyperstation, march 2022
|
||||
name = "Tarantula (Hyper)"
|
||||
icon_state = "tarantula"
|
||||
icon = 'hyperstation/icons/mob/char_snouts.dmi'
|
||||
recommended_species = list("insect")
|
||||
|
||||
|
||||
/*
|
||||
EARS
|
||||
==========================================================
|
||||
*/
|
||||
|
||||
/datum/sprite_accessory/mam_ears/faceant // sarcoph @ hyperstation, march 2022
|
||||
name = "Face Antennae (Hyper)"
|
||||
icon_state = "faceant"
|
||||
icon = 'hyperstation/icons/mob/char_ears.dmi'
|
||||
recommended_species = list("insect")
|
||||
|
||||
/datum/sprite_accessory/mam_ears/faceant2 // sarcoph @ hyperstation, march 2022
|
||||
name = "Face Antennae 2 (Hyper)"
|
||||
icon_state = "faceant2"
|
||||
icon = 'hyperstation/icons/mob/char_ears.dmi'
|
||||
recommended_species = list("insect")
|
||||
|
||||
/datum/sprite_accessory/mam_ears/moth
|
||||
name = "Moth Antennae (Hyper)"
|
||||
icon_state = "moth"
|
||||
icon = 'hyperstation/icons/mob/char_ears.dmi'
|
||||
recommended_species = list("insect")
|
||||
|
||||
/datum/sprite_accessory/mam_ears/plumeant // sarcoph @ hyperstation, march 2022
|
||||
name = "Plume Antennae (Hyper)"
|
||||
icon_state = "plumeant"
|
||||
icon = 'hyperstation/icons/mob/char_ears.dmi'
|
||||
recommended_species = list("insect")
|
||||
|
||||
/datum/sprite_accessory/mam_ears/roundant // sarcoph @ hyperstation, march 2022
|
||||
name = "Round Antennae (Hyper)"
|
||||
icon_state = "roundant"
|
||||
icon = 'hyperstation/icons/mob/char_ears.dmi'
|
||||
recommended_species = list("insect")
|
||||
|
||||
/datum/sprite_accessory/mam_ears/thinant // sarcoph @ hyperstation, march 2022
|
||||
name = "Thin Antennae (Hyper)"
|
||||
icon_state = "thinant"
|
||||
icon = 'hyperstation/icons/mob/char_ears.dmi'
|
||||
recommended_species = list("insect")
|
||||
|
||||
|
||||
/*
|
||||
WINGS
|
||||
==========================================================
|
||||
*/
|
||||
|
||||
/datum/sprite_accessory/deco_wings/beetle // sarcoph @ hyperstation, march 2022
|
||||
name = "Beetle (Hyper)"
|
||||
icon_state = "beetle"
|
||||
icon = 'hyperstation/icons/mob/char_wings.dmi'
|
||||
|
||||
/datum/sprite_accessory/moth_wings/beetle
|
||||
name = "Beetle (Hyper)"
|
||||
icon_state = "beetle"
|
||||
icon = 'hyperstation/icons/mob/char_wings.dmi'
|
||||
|
||||
/datum/sprite_accessory/deco_wings/beetle2 // sarcoph @ hyperstation, march 2022
|
||||
name = "Beetle - 2-toned (Hyper)"
|
||||
icon_state = "beetle2"
|
||||
icon = 'hyperstation/icons/mob/char_wings.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/moth_wings/beetle2
|
||||
name = "Beetle - 2-toned (Hyper)"
|
||||
icon_state = "beetle2"
|
||||
icon = 'hyperstation/icons/mob/char_wings.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/deco_wings/insect // sarcoph @ hyperstation, march 2022
|
||||
name = "Insect (Hyper)"
|
||||
icon_state = "insect"
|
||||
icon = 'hyperstation/icons/mob/char_wings.dmi'
|
||||
|
||||
/datum/sprite_accessory/moth_wings/insect
|
||||
name = "Insect (Hyper)"
|
||||
icon_state = "insect"
|
||||
icon = 'hyperstation/icons/mob/char_wings.dmi'
|
||||
|
||||
/datum/sprite_accessory/deco_wings/minibat // sarcoph @ hyperstation, march 2022
|
||||
name = "Mini Bat (Hyper)"
|
||||
icon_state = "minibat"
|
||||
icon = 'hyperstation/icons/mob/char_wings.dmi'
|
||||
|
||||
/datum/sprite_accessory/deco_wings/minifeather // sarcoph @ hyperstation, march 2022
|
||||
name = "Mini Feather (Hyper)"
|
||||
icon_state = "minifeather"
|
||||
icon = 'hyperstation/icons/mob/char_wings.dmi'
|
||||
|
||||
/datum/sprite_accessory/deco_wings/tinybat // sarcoph @ hyperstation, march 2022
|
||||
name = "Tiny Bat (Hyper)"
|
||||
icon_state = "tinybat"
|
||||
icon = 'hyperstation/icons/mob/char_wings.dmi'
|
||||
|
||||
/datum/sprite_accessory/deco_wings/tinyfeather // sarcoph @ hyperstation, march 2022
|
||||
name = "Tiny Feather (Hyper)"
|
||||
icon_state = "tinyfeather"
|
||||
icon = 'hyperstation/icons/mob/char_wings.dmi'
|
||||
|
||||
|
||||
/*
|
||||
TAILS + ANIMATED TAILS
|
||||
==========================================================
|
||||
*/
|
||||
|
||||
/datum/sprite_accessory/mam_tails/bee // sarcoph @ hyperstation, march 2022
|
||||
name = "Bee (Hyper)"
|
||||
icon_state = "bee"
|
||||
icon = 'hyperstation/icons/mob/char_tails.dmi'
|
||||
recommended_species = list("insect")
|
||||
|
||||
/datum/sprite_accessory/mam_tails_animated/bee
|
||||
name = "Bee (Hyper)"
|
||||
icon_state = "bee"
|
||||
icon = 'hyperstation/icons/mob/char_tails.dmi'
|
||||
recommended_species = list("insect")
|
||||
|
||||
/datum/sprite_accessory/mam_tails/bee2 // sarcoph @ hyperstation, march 2022
|
||||
name = "Bee w/ Stinger (Hyper)"
|
||||
icon_state = "bee2"
|
||||
icon = 'hyperstation/icons/mob/char_tails.dmi'
|
||||
recommended_species = list("insect")
|
||||
|
||||
/datum/sprite_accessory/mam_tails_animated/bee2
|
||||
name = "Bee w/ Stinger (Hyper)"
|
||||
icon_state = "bee2"
|
||||
icon = 'hyperstation/icons/mob/char_tails.dmi'
|
||||
recommended_species = list("insect")
|
||||
|
||||
// "fan" bird tail, short
|
||||
/datum/sprite_accessory/mam_tails/shorthawk // sarcoph @ hyperstation, jan 2022
|
||||
name = "Hawk - Short (Hyper)"
|
||||
icon_state = "shorthawk"
|
||||
icon = 'hyperstation/icons/mob/char_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/mam_tails_animated/shorthawk
|
||||
name = "Hawk - Short (Hyper)"
|
||||
icon_state = "shorthawk"
|
||||
icon = 'hyperstation/icons/mob/char_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/mam_tails/insect // sarcoph @ hyperstation, march 2022
|
||||
name = "Insect (Hyper)"
|
||||
icon_state = "insect"
|
||||
icon = 'hyperstation/icons/mob/char_tails.dmi'
|
||||
recommended_species = list("insect")
|
||||
|
||||
/datum/sprite_accessory/mam_tails_animated/insect
|
||||
name = "Insect (Hyper)"
|
||||
icon_state = "insect"
|
||||
icon = 'hyperstation/icons/mob/char_tails.dmi'
|
||||
recommended_species = list("insect")
|
||||
|
||||
/datum/sprite_accessory/mam_tails/bug2tone // sarcoph @ hyperstation, march 2022
|
||||
name = "Insect - 2-tone (Hyper)"
|
||||
icon_state = "bug2tone"
|
||||
icon = 'hyperstation/icons/mob/char_tails.dmi'
|
||||
recommended_species = list("insect")
|
||||
|
||||
/datum/sprite_accessory/mam_tails_animated/bug2tone
|
||||
name = "Insect - 2-tone (Hyper)"
|
||||
icon_state = "bug2tone"
|
||||
icon = 'hyperstation/icons/mob/char_tails.dmi'
|
||||
recommended_species = list("insect")
|
||||
|
||||
// "narrow" bird tail, long
|
||||
/datum/sprite_accessory/mam_tails/longpigeon // sarcoph @ hyperstation, jan 2022
|
||||
name = "Pigeon - Long (Hyper)"
|
||||
icon_state = "longpigeon"
|
||||
icon = 'hyperstation/icons/mob/char_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/mam_tails_animated/longpigeon
|
||||
name = "Pigeon - Long (Hyper)"
|
||||
icon_state = "longpigeon"
|
||||
icon = 'hyperstation/icons/mob/char_tails.dmi'
|
||||
|
||||
// "narrow" bird tail, short
|
||||
/datum/sprite_accessory/mam_tails/shortpigeon // sarcoph @ hyperstation, jan 2022
|
||||
name = "Pigeon - Short (Hyper)"
|
||||
icon_state = "shortpigeon"
|
||||
icon = 'hyperstation/icons/mob/char_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/mam_tails_animated/shortpigeon
|
||||
name = "Pigeon - Short (Hyper)"
|
||||
icon_state = "shortpigeon"
|
||||
icon = 'hyperstation/icons/mob/char_tails.dmi'
|
||||
|
||||
// "forked" bird tail, long
|
||||
/datum/sprite_accessory/mam_tails/swallow // sarcoph @ hyperstation, jan 2022
|
||||
name = "Swallow (Hyper)"
|
||||
icon_state = "swallow"
|
||||
icon = 'hyperstation/icons/mob/char_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/mam_tails_animated/swallow
|
||||
name = "Swallow (Hyper)"
|
||||
icon_state = "swallow"
|
||||
icon = 'hyperstation/icons/mob/char_tails.dmi'
|
||||
|
||||
// forked bird tail, long; special stripe markings
|
||||
/datum/sprite_accessory/mam_tails/swallowstriped // sarcoph @ hyperstation, jan 2022
|
||||
name = "Swallow - Striped (Hyper)"
|
||||
icon_state = "swallowstriped"
|
||||
icon = 'hyperstation/icons/mob/char_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/mam_tails_animated/swallowstriped
|
||||
name = "Swallow - Striped (Hyper)"
|
||||
icon_state = "swallowstriped"
|
||||
icon = 'hyperstation/icons/mob/char_tails.dmi'
|
||||
|
||||
|
||||
/*
|
||||
BODY MARKINGS
|
||||
==========================================================
|
||||
*/
|
||||
|
||||
/*
|
||||
from modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm:
|
||||
/datum/sprite_accessory/mam_body_markings
|
||||
extra = FALSE
|
||||
extra2 = FALSE
|
||||
color_src = MATRIXED
|
||||
gender_specific = 0
|
||||
icon = 'modular_citadel/icons/mob/mam_markings.dmi'
|
||||
recommended_species = list("mammal", "xeno", "slimeperson", "podweak", "avian", "aquatic")
|
||||
*/
|
||||
|
||||
/datum/sprite_accessory/mam_body_markings/bee // sarcoph @ hyperstation, march 2022
|
||||
name = "Bee (Hyper)"
|
||||
icon_state = "bee"
|
||||
icon = 'hyperstation/icons/mob/char_markings.dmi'
|
||||
recommended_species = list("insect")
|
||||
|
||||
/datum/sprite_accessory/mam_body_markings/bee_fluff // sarcoph @ hyperstation, march 2022
|
||||
name = "Bee - Fluffy (Hyper)"
|
||||
icon_state = "bee_fluff"
|
||||
icon = 'hyperstation/icons/mob/char_markings.dmi'
|
||||
recommended_species = list("insect")
|
||||
|
||||
/datum/sprite_accessory/mam_body_markings/bug3tone // sarcoph @ hyperstation, march 2022
|
||||
name = "Beetle - 3-tone (Hyper)"
|
||||
icon_state = "bug3tone"
|
||||
icon = 'hyperstation/icons/mob/char_markings.dmi'
|
||||
recommended_species = list("insect")
|
||||
|
||||
/datum/sprite_accessory/mam_body_markings/moth // sarcoph @ hyperstation, jan 2022
|
||||
name = "Moth (Hyper)"
|
||||
icon_state = "moth"
|
||||
icon = 'hyperstation/icons/mob/char_markings.dmi'
|
||||
recommended_species = list("insect")
|
||||
|
||||
/datum/sprite_accessory/mam_body_markings/empty
|
||||
name = "None (Hyper)"
|
||||
icon_state = "empty"
|
||||
recommended_species = list("podweak", /*"mammal",*/ "avian", "aquatic", "insect", "xeno", "synthliz", "slimeperson")
|
||||
// mammals are cursed to no empty markings until they get their heads fixed.
|
||||
|
||||
/datum/sprite_accessory/mam_body_markings/pigeon // sarcoph @ hyperstation, jan 2022
|
||||
name = "Pigeon (Hyper)"
|
||||
icon_state = "pigeon"
|
||||
icon = 'hyperstation/icons/mob/char_markings.dmi'
|
||||
recommended_species = list("avian")
|
||||
|
||||
/datum/sprite_accessory/mam_body_markings/shrike // sarcoph @ hyperstation, jan 2022
|
||||
name = "Shrike (Hyper)"
|
||||
icon_state = "shrike"
|
||||
icon = 'hyperstation/icons/mob/char_markings.dmi'
|
||||
recommended_species = list("avian")
|
||||
|
||||
|
||||
/*
|
||||
TAUR BODIES
|
||||
==========================================================
|
||||
*/
|
||||
|
||||
/*
|
||||
from modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm:
|
||||
/datum/sprite_accessory/taur
|
||||
icon = 'modular_citadel/icons/mob/mam_taur.dmi'
|
||||
extra_icon = 'modular_citadel/icons/mob/mam_taur.dmi'
|
||||
extra = TRUE
|
||||
extra2_icon = 'modular_citadel/icons/mob/mam_taur.dmi'
|
||||
extra2 = TRUE
|
||||
center = TRUE
|
||||
dimension_x = 64
|
||||
var/taur_mode = NOT_TAURIC
|
||||
color_src = MATRIXED
|
||||
recommended_species = list("human", "lizard", "insect", "mammal", "xeno", "jelly", "slimeperson", "podweak", "avian", "aquatic")
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
HAIRSTYLES
|
||||
==========================================================
|
||||
*/
|
||||
|
||||
/*
|
||||
from code/modules/mob/dead/new_player/sprite_accessories/hair_head.dm:
|
||||
/datum/sprite_accessory/hair
|
||||
icon = 'icons/mob/human_face.dmi' // default icon for all hairs
|
||||
|
||||
// please make sure they're sorted alphabetically and, where needed, categorized
|
||||
// try to capitalize the names please~
|
||||
// try to spell
|
||||
// you do not need to define _s or _l sub-states, game automatically does this for you
|
||||
*/
|
||||
|
||||
/datum/sprite_accessory/hair/aviancrest
|
||||
name = "Avian Crest (Hyper)"
|
||||
icon_state = "hair_aviancrest"
|
||||
icon = 'hyperstation/icons/mob/char_hair.dmi'
|
||||
|
||||
/datum/sprite_accessory/hair/curtains
|
||||
name = "Curtains (Hyper)"
|
||||
icon_state = "hair_curtains"
|
||||
|
||||
/datum/sprite_accessory/hair/mommy
|
||||
name = "Hairfre (Hyper)"
|
||||
icon_state = "hair_hairfre"
|
||||
|
||||
/datum/sprite_accessory/hair/sidehair
|
||||
name = "Side Hair (Hyper)"
|
||||
icon_state = "hair_tailhair2"
|
||||
|
||||
/datum/sprite_accessory/hair/hsglamour
|
||||
name = "Glamour (Hyper)"
|
||||
icon_state = "hair_glamourh"
|
||||
|
||||
/datum/sprite_accessory/hair/emoh
|
||||
name = "Emo (Hyper)"
|
||||
icon_state = "hair_emoh"
|
||||
@@ -0,0 +1,122 @@
|
||||
/mob/living/carbon
|
||||
var/total_pain = 0
|
||||
var/pain_effect = 0
|
||||
var/pain_cooldown = 0 //for defibs/surgry!
|
||||
|
||||
//pain
|
||||
/mob/living/carbon/adjustPainLoss(amount, updating_health = TRUE, forced = FALSE, affected_zone = BODY_ZONE_CHEST)
|
||||
if(!forced && (status_flags & GODMODE))
|
||||
return FALSE
|
||||
apply_damage(amount > 0 ? amount : amount, PAIN, affected_zone)
|
||||
return amount
|
||||
|
||||
/mob/living/carbon/handle_status_effects()
|
||||
..()
|
||||
handle_pain()
|
||||
|
||||
/mob/living/carbon/proc/handle_pain()
|
||||
var/pain_amount = 0
|
||||
|
||||
pain_effect += 1
|
||||
|
||||
if (pain_cooldown)
|
||||
pain_cooldown -= 1
|
||||
pain_effect = 0 //ignore pain for now, you got adrenaline running through your body.
|
||||
|
||||
//build up pain in the system from all your limbs and natrually heal pain if its attached to a live body.
|
||||
for(var/obj/item/bodypart/BP in bodyparts)
|
||||
pain_amount += BP.pain_dam
|
||||
|
||||
var/pain_target = (BP.brute_dam + BP.burn_dam)*0.8
|
||||
//natural healing of pain, capped at current damage * 0.8, if the pain is lower, slowly bring up the pain. this will let people "get used, to it."
|
||||
if (BP.pain_dam > (pain_target))
|
||||
BP.pain_dam -= 1 //bring down to the pain_level.
|
||||
else
|
||||
BP.pain_dam += 1 //slowly bring pain back, from pain killers.
|
||||
|
||||
//just make sure its zero'd
|
||||
if (BP.pain_dam < 0)
|
||||
BP.pain_dam = 0
|
||||
continue //dont need to do the rest, your fine.
|
||||
|
||||
if (BP.pain_dam && pain_effect > 5 && (stat == 0))
|
||||
var pain_level = (round(BP.pain_dam / 10))
|
||||
switch(pain_level) //for every 10 points of damage minor -> major
|
||||
if(1)//start at 10 just so it doesnt get annoying with micro damage
|
||||
to_chat(src, "<span class='warning'>You feel minor pain in your [BP.name].</span>")
|
||||
if(2)
|
||||
to_chat(src, "<span class='warning'>You feel pain in your [BP.name].</span>")
|
||||
if(3)
|
||||
to_chat(src, "<span class='warning'>You feel severe pain in your [BP.name].</span>")
|
||||
if(4 to 99)
|
||||
to_chat(src, "<span class='warning'>You feel overwhelming pain in your [BP.name].</span>")
|
||||
jitteriness += 2
|
||||
stuttering += 2
|
||||
|
||||
|
||||
total_pain = pain_amount
|
||||
|
||||
//handle onscreen alert
|
||||
if (pain_effect > 5)
|
||||
switch(total_pain)
|
||||
if(-100 to 25)
|
||||
clear_alert("pain")
|
||||
if(25 to 69)
|
||||
throw_alert("pain", /obj/screen/alert/pain)
|
||||
if(70 to 99)
|
||||
throw_alert("pain", /obj/screen/alert/painmajor)
|
||||
if(100 to 999)
|
||||
throw_alert("pain", /obj/screen/alert/painshock)
|
||||
|
||||
if (pain_effect > 5)
|
||||
pain_effect = 0 //reset the timer 5 seconds.
|
||||
if(stat == 0) //awake, not dead or asleep
|
||||
//status effects for pain..
|
||||
var/mob/living/H = src
|
||||
if (total_pain > 50 && total_pain < 80)
|
||||
if(HAS_TRAIT(H, TRAIT_MASO)) //just because your into it doesnt give you a advantage..
|
||||
to_chat(src, "<span class='love'>You love this pain, it excites you...</span>")
|
||||
H.adjustArousalLoss(6)
|
||||
else
|
||||
to_chat(src, "<span class='warning'>You cant handle the pain...</span>")
|
||||
if(prob(20))
|
||||
emote("scream")
|
||||
do_jitter_animation() //basic shake.
|
||||
stuttering += 3 //stutter words, your in pain bro.
|
||||
|
||||
if (total_pain > 80) //your in trouble. fainting..
|
||||
if(HAS_TRAIT(H, TRAIT_MASO))
|
||||
to_chat(src, "<span class='love'>You love this intense pain, it excites you...</span>")
|
||||
H.adjustArousalLoss(12)
|
||||
else
|
||||
to_chat(src, "<span class='big warning'>You cant handle the intense pain...</span>")
|
||||
if(prob(20)) //chance of fainting..
|
||||
visible_message("<span class='danger'>[src] collapses!</span>")
|
||||
Unconscious(100)
|
||||
jitteriness += 3 //shake
|
||||
stuttering += 3 //stutter words
|
||||
|
||||
//if they are asleep, this wont trigger.
|
||||
if (total_pain > 110 && stat == 0) //taking 77 all damage at once from full health, will put you into shock and kill you. This cant be achived with chip damage (or fist fights), because youll die before you reach this pain level.
|
||||
if(prob(50))
|
||||
emote("scream")//scream
|
||||
to_chat(src, "<span class='big warning'>You give into the pain...</span>")
|
||||
visible_message("<span class='danger'>[src] goes into neurogenic shock!</span>")
|
||||
Unconscious(200)
|
||||
if (can_heartattack()) //check if they can
|
||||
set_heartattack(1) //heart stopped!
|
||||
|
||||
|
||||
//HS Pain heal
|
||||
/mob/living/carbon/adjustPainLoss(amount, updating_health = TRUE, forced = FALSE)
|
||||
if (!forced && amount < 0 && HAS_TRAIT(src,TRAIT_NONATURALHEAL))
|
||||
return FALSE
|
||||
if(!forced && (status_flags & GODMODE))
|
||||
return FALSE
|
||||
|
||||
//all attached limbs get pain damage
|
||||
for(var/X in bodyparts)
|
||||
var/obj/item/bodypart/BP = X
|
||||
BP.pain_dam += amount
|
||||
|
||||
return amount
|
||||
@@ -607,10 +607,10 @@ The reactor CHEWS through moderator. It does not do this slowly. Be very careful
|
||||
. = ..()
|
||||
ui_interact(user)
|
||||
|
||||
/obj/machinery/computer/reactor/control_rods/ui_interact(mob/user, ui_key, datum/tgui/ui, force_open, datum/tgui/master_ui, datum/ui_state/state)
|
||||
/obj/machinery/computer/reactor/control_rods/ui_interact(mob/user, ui_key, datum/tgui/ui, force_open, datum/tgui/master_ui, datum/tgui_state/state)
|
||||
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "rbmkcontrolrods", name, 300, 300, master_ui, state)
|
||||
ui = new(user, src, ui_key, "RbmkControlRods", name, 300, 300, master_ui, state)
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/computer/reactor/control_rods/ui_act(action, params)
|
||||
@@ -648,7 +648,7 @@ The reactor CHEWS through moderator. It does not do this slowly. Be very careful
|
||||
. = ..()
|
||||
ui_interact(user)
|
||||
|
||||
/obj/machinery/computer/reactor/stats/ui_interact(mob/user, ui_key, datum/tgui/ui, force_open, datum/tgui/master_ui, datum/ui_state/state)
|
||||
/obj/machinery/computer/reactor/stats/ui_interact(mob/user, ui_key, datum/tgui/ui, force_open, datum/tgui/master_ui, datum/tgui_state/state)
|
||||
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "RbmkStats", name, 350, 500, master_ui, state)
|
||||
@@ -803,7 +803,7 @@ The reactor CHEWS through moderator. It does not do this slowly. Be very careful
|
||||
transfer_access = ACCESS_CONSTRUCTION
|
||||
network_destination = "rbmk monitoring system"
|
||||
size = 2
|
||||
tgui_id = "ntosrbmkstats"
|
||||
tgui_id = "NtosRbmkStats"
|
||||
ui_x = 350
|
||||
ui_y = 550
|
||||
var/active = TRUE //Easy process throttle
|
||||
|
||||
Reference in New Issue
Block a user