Merge branch 'master' into fairylights

This commit is contained in:
Dahlular
2022-05-04 14:12:41 -06:00
111 changed files with 3251 additions and 611 deletions
@@ -211,13 +211,7 @@
return
if(href_list["shrink_belly"])
var/obj/item/organ/genital/belly/E = usr.getorganslot("belly")
if(E.size > 0)
to_chat(usr, "<span class='userlove'>You feel your belly diminish.</span>")
E.size -= 1
H.update_genitals()
else
to_chat(usr, "<span class='warning'>Your belly is already at the minimum size! </span>")
H.shrink_belly(1)
if(href_list["removecondom"])
H.menuremovecondom()
@@ -0,0 +1,35 @@
/mob/living/carbon/proc/expand_belly(expansion = 1)
var/obj/item/organ/genital/belly/_belly = getorganslot("belly")
if(!expansion || !_belly || !_belly.inflatable)
return
var/original_size = _belly.size
_belly.size = clamp(_belly.size + expansion, BELLY_MIN_SIZE, BELLY_MAX_SIZE)
if(_belly.size == original_size)
return
var/_verb = "expand"
switch(_belly.size)
if(BELLY_MAX_SIZE to INFINITY)
_verb = "stretch to its limit"
if(BELLY_STRETCH_SIZE to BELLY_MAX_SIZE)
_verb = "stretch"
if(BELLY_STRAIN_SIZE to BELLY_STRETCH_SIZE)
_verb = "strain"
to_chat(src, "<span class='userlove'>You feel your belly [_verb].</span>")
_belly.update()
/mob/living/carbon/proc/shrink_belly(shrinkage = 1)
var/obj/item/organ/genital/belly/_belly = getorganslot("belly")
if(!shrinkage ||!_belly || !_belly.inflatable)
return
var/original_size = _belly.size
_belly.size = clamp(_belly.size - shrinkage, BELLY_MIN_SIZE, BELLY_MAX_SIZE)
if(_belly.size == original_size)
return
var/_verb = "diminish"
var/_class = "userlove"
if(_belly.size == BELLY_MIN_SIZE)
_verb = "can't shrink anymore"
_class = "warning"
to_chat(src, "<span class='[_class]'>You feel your belly [_verb].</span>")
_belly.update()
@@ -0,0 +1,11 @@
/datum/gear/syntech/ring
name = "Normalizer Ring"
category = SLOT_GLOVES
path = /obj/item/clothing/gloves/ring/syntech
cost = 6
/datum/gear/syntech/band
name = "Normalizer Band"
category = SLOT_GLOVES
path = /obj/item/clothing/gloves/ring/syntech/band
cost = 6
@@ -0,0 +1,5 @@
/datum/gear/gasmask
name = "gas mask"
category = SLOT_WEAR_MASK
path = /obj/item/clothing/mask/gas
cost = 3
@@ -0,0 +1,17 @@
/datum/gear/syntech/pendant
name = "Normalizer Pendant"
category = SLOT_NECK
path = /obj/item/clothing/neck/syntech
cost = 6
/datum/gear/syntech/choker
name = "Normalizer Choker"
category = SLOT_NECK
path = /obj/item/clothing/neck/syntech/choker
cost = 6
/datum/gear/syntech/collar
name = "Normalizer Collar"
category = SLOT_NECK
path = /obj/item/clothing/neck/syntech/collar
cost = 6
@@ -0,0 +1,115 @@
//Clothing vars and procs
/obj/item/clothing
var/normalize_size = RESIZE_NORMAL //This number is used as the "normal" height people will be given when wearing one of these accessories
var/natural_size = null //The value of the wearer's body_size var in prefs. Unused for now.
var/recorded_size = null //the user's height prior to equipping
//For applying a normalization
/obj/item/clothing/proc/normalize_mob_size(mob/living/carbon/human/H)
if(H.normalized) //First we make a check to see if they're already normalized, from wearing another article of SynTech jewelry
to_chat(H, "<span class='warning'>This accessory buzzes, being overwritten by another.</span>")
playsound(H, 'sound/machines/buzz-sigh.ogg', 50, 1)
return
recorded_size = H.get_effective_size() //If not, grab their current size
playsound(H, 'sound/effects/magic.ogg', 50, 1)
flash_lighting_fx(3, 3, LIGHT_COLOR_PURPLE)
H.visible_message("<span class='warning'>A flash of purple light engulfs [H], before they change to normal!</span>","<span class='notice'>You feel warm for a moment, before everything scales to your size...</span>")
H.resize(normalize_size) //Then apply the size
H.normalized = TRUE //And set normalization
//For removing a normalization, and reverting back to normal
/obj/item/clothing/proc/denormalize_mob_size(mob/living/carbon/human/H)
if(H.normalized) //sanity check
playsound(H,'sound/weapons/emitter2.ogg', 50, 1)
flash_lighting_fx(3, 3, LIGHT_COLOR_YELLOW)
H.visible_message("<span class='warning'>Golden light engulfs [H], and they shoot back to their default height!</span>","<span class='notice'>Energy rushes through your body, and you return to normal.</span>")
H.resize(recorded_size)
H.normalized = FALSE
//For storing normalization on mobs
/mob/living
var/normalized = FALSE
//normalized is a check for instances where more than one accessory of jewelry is worn. For all intensive purposes, only the first worn accessory stores the user's size.
//Anything else is just extra.
//Clothing below. Code could be compressed more, but until I make jewelry slots, this will do. -Dahl
//GLOVE SLOT ITEMS...
//SynTech ring
/obj/item/clothing/gloves/ring/syntech
name = "normalizer ring"
desc = "An expensive, shimmering SynTech ring gilded with golden Kinaris markings. It will 'normalize' the size of the user to a specified height approved for work-conditions, as long as it is equipped. The artificial violet gem inside twinkles ominously."
icon = 'hyperstation/icons/obj/clothing/sizeaccessories.dmi'
icon_state = "ring"
item_state = "sring" //No use in a unique sprite since it's just one pixel
w_class = WEIGHT_CLASS_TINY
body_parts_covered = 0
transfer_prints = TRUE
strip_delay = 40
//These are already defined under the parent ring, but I wanna leave em here for reference purposes
//For glove slots
/obj/item/clothing/gloves/ring/syntech/equipped(mob/living/user, slot)
if(ishuman(user))
var/mob/living/carbon/human/human_target = user
if(slot == SLOT_GLOVES)
if(human_target.custom_body_size)
normalize_mob_size(human_target)
/obj/item/clothing/gloves/ring/syntech/dropped(mob/living/user, slot)
if(ishuman(user))
var/mob/living/carbon/human/human_target = user
if(human_target.normalized)
denormalize_mob_size(human_target)
//SynTech Wristband
/obj/item/clothing/gloves/ring/syntech/band
name = "normalizer wristband"
desc = "An expensive technological wristband cast in SynTech purples with shimmering Kinaris golds. It will 'normalize' the size of the user to a specified height for approved work-conditions, as long as it is equipped. There is a small screen buzzing with information."
icon_state = "wristband"
item_state = "syntechband"
//NECK SLOT ITEMS...
//Syntech Pendant
/obj/item/clothing/neck/syntech
name = "normalizer pendant"
desc = "A vibrant violet jewel cast in silvery-gold metals, sporting the elegance of Kinaris with SynTech prowess. It will 'normalize' the size of the user to a specified height for approved work-conditions, as long as it is equipped. The artificial violet gem inside twinkles ominously."
icon = 'hyperstation/icons/obj/clothing/sizeaccessories.dmi'
icon_state = "pendant"
item_state = "pendant"
//For neck items
/obj/item/clothing/neck/syntech/equipped(mob/living/user, slot)
if(ishuman(user))
var/mob/living/carbon/human/human_target = user
if(slot == SLOT_NECK)
if(human_target.custom_body_size)
normalize_mob_size(human_target)
/obj/item/clothing/neck/syntech/dropped(mob/living/user, slot)
if(ishuman(user))
var/mob/living/carbon/human/human_target = user
if(human_target.normalized)
denormalize_mob_size(human_target)
//Syntech Choker
/obj/item/clothing/neck/syntech/choker
name = "normalizer choker"
desc = "A sleek, tight-fitting choker embezzled with silver to gold, adorned with vibrant purple studs; combined technology of Kinaris and SynTech. It will 'normalize' the size of the user to a specified height for approved work-conditions, as long as it is equipped. There is a small screen buzzing with information."
icon_state = "choker"
item_state = "collar"
//Syntech Collar
/obj/item/clothing/neck/syntech/collar
name = "normalizer collar"
desc = "A cute pet collar, technologically designed with vibrant purples and smooth silvers. There is a small gem bordered by gold at the front, reading 'SYNTECH' engraved within the metal. It will 'normalize' the size of the user to a specified height for approved work-conditions, as long as it is equipped. The artificial violet gem inside twinkles ominously."
icon_state = "collar"
item_state = "collar"
@@ -3,3 +3,9 @@
id = /datum/reagent/consumable/pilk
results = list(/datum/reagent/consumable/pilk = 2)
required_reagents = list(/datum/reagent/consumable/milk = 1, /datum/reagent/consumable/space_cola = 1)
/datum/chemical_reaction/javelin
name = "Javelin"
id = /datum/reagent/consumable/ethanol/javelin
results = list(/datum/reagent/consumable/ethanol/javelin = 5)
required_reagents = list(/datum/reagent/consumable/kalynajuice = 1, /datum/reagent/consumable/ethanol/whiskey = 2, /datum/reagent/consumable/ethanol/vodka = 2)
@@ -0,0 +1,40 @@
// Kalyna Berries
/obj/item/seeds/kalyna
name = "pack of kalyna berry seeds"
desc = "Seeds that grow into Kalyna plants. Take that Red Kalyna and rise it up."
icon = 'hyperstation/icons/obj/hydroponics/seeds.dmi'
icon_state = "seed-kalyna"
species = "kalyna"
plantname = "Kalyna Shrub Tree"
product = /obj/item/reagent_containers/food/snacks/grown/kalyna
lifespan = 20
maturation = 5
production = 5
growthstages = 5
yield = 4
growing_icon = 'hyperstation/icons/obj/hydroponics/growing_fruits.dmi'
icon_grow = "kalyna-grow"
icon_dead = "kalyna-dead"
genes = list(/datum/plant_gene/trait/repeated_harvest)
reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
/obj/item/reagent_containers/food/snacks/grown/kalyna
seed = /obj/item/seeds/kalyna
name = "branch of kalyna"
desc = "Red berries, attached to a branch. Just looking at it makes you feel an aura of unity."
icon = 'hyperstation/icons/obj/hydroponics/harvest.dmi'
icon_state = "kalynaberries"
gender = PLURAL
filling_color = "#FF0000"
bitesize_mod = 2
foodtype = FRUIT
juice_results = list(/datum/reagent/consumable/kalynajuice = 1)
tastes = list("sweet cranberries" = 1)
distill_reagent = /datum/reagent/consumable/ethanol/gin
//For those of you wondering, yes, this is very much an addition in support of Ukraine. I decided to make these after a distant Ukranian relative of mine sent me Go_A's 'Kalyna' song.
//Our future as a free world could very well depend on the heroism of the people of glorious Ukraine. We owe our freedom to them.
//I know that this game should be for escapism, but there's only so much we should escape from. When people's lives are being upturned-- Or taken by a brutal invasive reigime, perhaps then it's when we should take a stand.
//And for those that oppose the freedom of the people of Ukraine, Russia, and Belarus; Prykhyl'nyk Putina, idy na khuy. And show some basic empathy for once, it's not that hard.
//Glory to Ukraine, Glory to the Heroes!
// - Arctaisia, Hyperstation developer and spriter, 23/04/2022 #StandWithUkraine
@@ -67,6 +67,35 @@ SNOUTS
icon = 'hyperstation/icons/mob/char_snouts.dmi'
recommended_species = list("insect")
/datum/sprite_accessory/mam_snouts/easterndragon
name = "Eastern Dragon (Hyper)"
icon_state = "easterndw"
icon = 'hyperstation/icons/mob/char_snouts.dmi'
/datum/sprite_accessory/mam_snouts/feasterndragon
name = "Eastern Dragon (Top) (Hyper)"
icon_state = "feasterndw"
icon = 'hyperstation/icons/mob/char_snouts.dmi'
/datum/sprite_accessory/mam_snouts/easterndragonnowhiskers
name = "Eastern Dragon - No Whiskers (Hyper)"
icon_state = "easterndnw"
icon = 'hyperstation/icons/mob/char_snouts.dmi'
/datum/sprite_accessory/mam_snouts/feasterndragonnowhiskers
name = "Eastern Dragon - No Whiskers (Top) (Hyper)"
icon_state = "feasterndnw"
icon = 'hyperstation/icons/mob/char_snouts.dmi'
/datum/sprite_accessory/mam_snouts/fchemlight
name = "RadDog (Top) (Hyper)"
icon_state = "fchemlight"
icon = 'hyperstation/icons/mob/char_snouts.dmi'
/datum/sprite_accessory/mam_snouts/chemlight
name = "RadDog (Hyper)"
icon_state = "chemlight"
icon = 'hyperstation/icons/mob/char_snouts.dmi'
/*
EARS
@@ -109,6 +138,15 @@ EARS
icon = 'hyperstation/icons/mob/char_ears.dmi'
recommended_species = list("insect")
/datum/sprite_accessory/mam_ears/easterndragon
name = "Eastern Dragon (Hyper)"
icon_state = "easternd"
icon = 'hyperstation/icons/mob/char_ears.dmi'
/datum/sprite_accessory/mam_ears/chemlight
name = "RadDog (Hyper)"
icon_state = "chemlight"
icon = 'hyperstation/icons/mob/char_ears.dmi'
/*
WINGS
@@ -276,6 +314,26 @@ TAILS + ANIMATED TAILS
icon_state = "swallowstriped"
icon = 'hyperstation/icons/mob/char_tails.dmi'
/datum/sprite_accessory/mam_tails/easterndragon //Pulled base from Virgo, seriously love the server and love you guys, stay lovely.
name = "Eastern Dragon (Hyper)"
icon_state = "easternd"
icon = 'hyperstation/icons/mob/char_tails.dmi'
/datum/sprite_accessory/mam_tails_animated/easterndragon
name = "Eastern Dragon (Hyper)"
icon_state = "easternd"
icon = 'hyperstation/icons/mob/char_tails.dmi'
/datum/sprite_accessory/mam_tails/chemlight
name = "RadDog (Hyper)"
icon_state = "chemlight"
icon = 'hyperstation/icons/mob/char_tails.dmi'
/datum/sprite_accessory/mam_tails_animated/chemlight
name = "RadDog (Hyper)"
icon_state = "chemlight"
icon = 'hyperstation/icons/mob/char_tails.dmi'
/*
BODY MARKINGS
@@ -335,6 +393,22 @@ from modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm:
icon = 'hyperstation/icons/mob/char_markings.dmi'
recommended_species = list("avian")
/datum/sprite_accessory/mam_body_markings/easterndragon
name = "Eastern Dragon (Hyper)"
icon_state = "easternd"
icon = 'hyperstation/icons/mob/char_markings.dmi'
//doged was here
/datum/sprite_accessory/mam_body_markings/chemlight
name = "RadDog (Hyper)"
icon_state = "chemlight"
icon = 'hyperstation/icons/mob/char_markings.dmi'
//racc do a code maybe it won't explode
/datum/sprite_accessory/mam_body_markings/raccalt
name = "RaccAlt (Hyper)"
icon_state = "raccalt"
icon = 'hyperstation/icons/mob/char_markings.dmi'
/*
TAUR BODIES
@@ -355,7 +429,17 @@ from modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm:
color_src = MATRIXED
recommended_species = list("human", "lizard", "insect", "mammal", "xeno", "jelly", "slimeperson", "podweak", "avian", "aquatic")
*/
/datum/sprite_accessory/taur/chemnaga //Chemlight experimental sprites for future spriting
name = "RadDog Naga (Hyper)"
icon_state = "chemnaga"
taur_mode = SNEK_TAURIC
ckeys_allowed = list("chemlight")
/datum/sprite_accessory/taur/chemlight
name = "RadDog Taur (Hyper)"
icon_state = "chemlight"
taur_mode = PAW_TAURIC
ckeys_allowed = list("chemlight")
/*
HAIRSTYLES
@@ -97,7 +97,7 @@
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 (total_pain > 120 && stat == 0) //taking 130 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>")
@@ -0,0 +1,246 @@
/mob/living/simple_animal/
var/happiness = 50 //how happy they are.
/////////////
//////////////// CHICKEN /////////////////
/////////////
/mob/living/simple_animal/chick
icon = 'hyperstation/icons/mob/chickens.dmi'
name = "\improper chick"
desc = "Adorable! They make such a racket though."
icon_state = "chick"
icon_living = "chick"
icon_dead = "chick_dead"
icon_gib = "chick_gib"
gender = FEMALE
mob_biotypes = MOB_ORGANIC|MOB_BEAST
speak = list("Cherp.","Cherp?","Chirrup.","Cheep!")
speak_emote = list("cheeps")
emote_hear = list("cheeps.")
emote_see = list("pecks at the ground.","flaps its tiny wings.")
density = FALSE
speak_chance = 2
turns_per_move = 2
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/chicken = 1)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "kicks"
attacktext = "kicks"
health = 3
maxHealth = 3
ventcrawler = VENTCRAWLER_ALWAYS
var/amount_grown = 0
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
mob_size = MOB_SIZE_TINY
gold_core_spawnable = FRIENDLY_SPAWN
do_footstep = TRUE
/mob/living/simple_animal/chick/Initialize()
. = ..()
pixel_x = rand(-6, 6)
pixel_y = rand(0, 10)
/mob/living/simple_animal/chick/Life()
. =..()
if(!.)
return
if(!stat && !ckey)
amount_grown += rand(1,2)
if(amount_grown >= 100)
new /mob/living/simple_animal/chicken(src.loc)
qdel(src)
/mob/living/simple_animal/chick/holo/Life()
..()
amount_grown = 0
/mob/living/simple_animal/chicken
icon = 'hyperstation/icons/mob/chickens.dmi'
name = "\improper chicken"
desc = "Hopefully the eggs are good this season."
gender = FEMALE
mob_biotypes = MOB_ORGANIC|MOB_BEAST
icon_state = "chicken_brown"
icon_living = "chicken_brown"
icon_dead = "chicken_brown_dead"
speak = list("Cluck!","BWAAAAARK BWAK BWAK BWAK!","Bwaak bwak.")
speak_emote = list("clucks","croons")
emote_hear = list("clucks.")
emote_see = list("pecks at the ground.","flaps its wings viciously.")
density = FALSE
speak_chance = 2
turns_per_move = 3
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/chicken = 2)
var/egg_type = /obj/item/reagent_containers/food/snacks/egg
var/food_type = /obj/item/reagent_containers/food/snacks/grown/wheat
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "kicks"
attacktext = "kicks"
health = 15
maxHealth = 15
ventcrawler = VENTCRAWLER_ALWAYS
var/eggsleft = 0
var/eggsFertile = FALSE
var/body_color
var/icon_prefix = "chicken"
pass_flags = PASSTABLE | PASSMOB
mob_size = MOB_SIZE_SMALL
var/list/feedMessages = list("It clucks happily.","It clucks happily.")
var/list/layMessage = EGG_LAYING_MESSAGES
var/list/validColors = list("brown","black","white")
gold_core_spawnable = FRIENDLY_SPAWN
var/static/chicken_count = 0
var/partner //for the sex.
var/egglay_timer = 0
var/obj/structure/nestbox/nest_target
var/last_egg
var/force_gender //for map loading
do_footstep = TRUE
/mob/living/simple_animal/chicken/Initialize()
. = ..()
if((prob(30) && !force_gender) || force_gender == "male") //30% of a male. or setup if already male.
gender = MALE
name = "rooster"
if(!body_color)
body_color = pick(validColors)
icon_state = "[icon_prefix]_[body_color]"
icon_living = "[icon_prefix]_[body_color]"
icon_dead = "[icon_prefix]_[body_color]_dead"
pixel_x = rand(-6, 6)
pixel_y = rand(0, 10)
++chicken_count
/mob/living/simple_animal/chicken/Destroy()
--chicken_count
return ..()
/mob/living/simple_animal/chicken/attackby(obj/item/O, mob/user, params)
if(istype(O, food_type)) //feedin' dem chickens
if(!stat && eggsleft < 2)
var/feedmsg = "[user] feeds [O] to [name]! [pick(feedMessages)]"
user.visible_message(feedmsg)
qdel(O)
eggsleft += 1
egglay_timer = 0
else
to_chat(user, "<span class='warning'>[name] doesn't seem hungry!</span>")
else
..()
/mob/living/simple_animal/chicken/Life()
. = ..()
if(!.)
return
if (istype(get_turf(src), /turf/open/floor))
var/turf/open/floor/turfon = get_turf(src)
if (turfon.farm_quality > happiness)
happiness ++
if (prob(5))
visible_message("[src] pecks happily at the ground.") //CLUCK CLUCK CLUCK
else
happiness --
else
happiness --
happiness = clamp(happiness,0,100) //clamp
if (!(gender == FEMALE)) //only females lay eggs and do the rest of the code.
return
//Breeding.
if (gender == FEMALE && eggsFertile == 0 && eggsleft > 0)
for(var/mob/living/simple_animal/chicken/C in view(2,src)) //look for a male near them, or on them.
if(C)
if(C.gender == MALE) //rooster
eggsFertile = 1 //they had sex, just go with it.
partner = C //you know who the partner is.
//EEGGGG TIME
//after 10mins, lay a egg regardless.
if(world.time > (last_egg+600 SECONDS) && !eggsleft)
if(prob(15)) //just to offset
eggsleft ++
last_egg = world.time
if((!stat && eggsleft > 0) && egg_type)
egglay_timer ++
else
egglay_timer = 0
//chance to lay egg on their own.
//look for nest!
//We have found a nest, override movement
if(nest_target) //if alive and we have a target.
stop_automated_movement = 1
walk_to(src,nest_target,0,8)
else
stop_automated_movement = 0
walk_to(src,0) //reset walk_to
if (egglay_timer > 10 && !stat) //time to lay a egg and not dead.
if((!stat && eggsleft > 0) && egg_type)
if (!nest_target)
for(var/obj/structure/nestbox/N in view(3,src)) // look for a eggbox if you dont have one already
nest_target = N
break
//We are at the nest we have chosen.
if (nest_target)
for(var/obj/structure/nestbox/B in get_turf(src))
if((prob(25) && eggsleft > 0) && egg_type)
visible_message("<span class='alertalien'>[src] [pick(layMessage)]</span>")
eggsleft--
var/obj/item/E = new egg_type(get_turf(src))
E.pixel_x = rand(-6,6)
E.pixel_y = rand(-6,6)
egglay_timer = 0 //set timer
nest_target = null //layed the egg, time to move on
if(eggsFertile && partner)
if(chicken_count < MAX_CHICKENS && prob(happiness))
START_PROCESSING(SSobj, E)
eggsFertile = 0 //youve layed your fertile egg.
E.name = "fertile egg"
partner = null
last_egg = world.time
break
/obj/item/reagent_containers/food/snacks/egg/var/amount_grown = 0
/obj/item/reagent_containers/food/snacks/egg/process()
if(isturf(loc))
for(var/obj/structure/nestbox/B in get_turf(src)) //can only hatch in a nestbox or incubator
amount_grown += rand(1,2)
if(amount_grown >= 100)
visible_message("[src] hatches with a quiet cracking sound.")
new /mob/living/simple_animal/chick(get_turf(src))
STOP_PROCESSING(SSobj, src)
qdel(src)
break
else
STOP_PROCESSING(SSobj, src)
/mob/living/simple_animal/chicken/examine()
. = ..()
. += "this one is [gender]."
if(happiness<20)
. += "<span class='warning'>It looks stressed.</span>"
@@ -0,0 +1,23 @@
/*
This is a pre-destroyed nuclear reactor for the sake of mapping special fluff stuff.
Not actually a reactor, just uses the icon and irradiates the surrounding area a bit.
Nowhere else to really put this.
*/
/obj/structure/fluff/destroyed_nuclear_reactor
name = "Destroyed Nuclear Reactor"
desc = "What in the hell happened here?"
icon = 'hyperstation/icons/obj/machinery/rbmk.dmi'
icon_state = "reactor_slagged"
pixel_x = -32
pixel_y = -32
density = FALSE
anchored = TRUE
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF
light_color = LIGHT_COLOR_CYAN
dir = 8 //Less headache inducing :))
/obj/structure/fluff/destroyed_nuclear_reactor/Initialize()
. = ..()
set_light(3)
AddComponent(/datum/component/radioactive, 15000 , src)
@@ -0,0 +1,11 @@
//Hope you're not a Russian T-90
/datum/reagent/consumable/ethanol/javelin
name = "Javelin Cocktail"
boozepwr = 80
color = "#F54F10"
quality = DRINK_FANTASTIC
taste_description = "explosive fireballs"
glass_icon_state = "javelin"
shot_glass_icon_state = "javelin_warhead"
glass_name = "Javelin Cocktail"
glass_desc = "A man-portable, delicious glass of justice."
@@ -21,3 +21,13 @@
if(holder.has_reagent(/datum/reagent/consumable/capsaicin))
holder.remove_reagent(/datum/reagent/consumable/capsaicin, 1)
..()
/datum/reagent/consumable/kalynajuice
name = "Red Kalyna Juice"
description = "Juice from Kalyna plants."
color = "#E90501" // rgb: 233, 5, 1
taste_description = "sweet cranberries"
glass_icon_state = "kalyna"
glass_name = "glass of red kalyna juice"
glass_desc = "A vibrantly red juice!"
hydration = 4
@@ -12,6 +12,7 @@ var/const/RESIZE_MICRO = 0.25
/mob/living
var/size_multiplier = 1 //multiplier for the mob's icon size atm
var/previous_size = 1
var/small_speech = FALSE
//Cyanosis - Action that resizes the sprite for the client but nobody else. Say goodbye to attacking yourself when someone's above you lmao
var/datum/action/sizecode_resize/small_sprite
@@ -237,8 +238,14 @@ mob/living/get_effective_size()
//Proc for changing mob_size to be grabbed for item weight classes
/mob/living/proc/update_mobsize(var/mob/living/tmob)
if(small_speech == TRUE) //if they have small speech reset it.
small_speech = FALSE
UnregisterSignal(src, COMSIG_MOB_SAY)
if(size_multiplier <= 0.50)
mob_size = 0
RegisterSignal(src, COMSIG_MOB_SAY, .proc/handle_small_speech)
small_speech = TRUE
if(size_multiplier < 1)
mob_size = 1
if(size_multiplier == 1)
@@ -246,6 +253,9 @@ mob/living/get_effective_size()
if(size_multiplier > 1)
mob_size = 3
/mob/living/proc/handle_small_speech(owner, list/speech_args) //for making peoples text small
speech_args[SPEECH_SPANS] |= SPAN_SMALL
//Proc for instantly grabbing valid size difference. Code optimizations soon(TM)
/*
/mob/living/proc/sizeinteractioncheck(var/mob/living/tmob)