mirror of
https://github.com/KabKebab/GS13.git
synced 2026-07-11 07:59:08 +01:00
Merge branch 'origin/HEAD'
This commit is contained in:
@@ -1023,9 +1023,9 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
var/datum/round_event_control/mice_migration/M = new()
|
||||
D.runEvent()
|
||||
M.runEvent()
|
||||
if(11 to 20)
|
||||
var/datum/round_event_control/radiation_storm/RS = new()
|
||||
RS.runEvent()
|
||||
// if(11 to 20)
|
||||
// var/datum/round_event_control/radiation_storm/RS = new()
|
||||
// RS.runEvent()
|
||||
if(21 to 30)
|
||||
var/datum/round_event_control/brand_intelligence/BI = new()
|
||||
BI.runEvent()
|
||||
|
||||
@@ -37,6 +37,7 @@ GLOBAL_LIST_INIT(disease_ability_singletons, list(
|
||||
new /datum/disease_ability/symptom/powerful/flesh_eating,
|
||||
// new /datum/disease_ability/symptom/powerful/genetic_mutation,
|
||||
new /datum/disease_ability/symptom/powerful/inorganic_adaptation,
|
||||
new /datum/disease_ability/symptom/medium/undead_adaptation,
|
||||
new /datum/disease_ability/symptom/powerful/heal/starlight,
|
||||
new /datum/disease_ability/symptom/powerful/heal/oxygen,
|
||||
new /datum/disease_ability/symptom/powerful/heal/chem,
|
||||
@@ -47,7 +48,8 @@ GLOBAL_LIST_INIT(disease_ability_singletons, list(
|
||||
new /datum/disease_ability/symptom/powerful/heal/radiation,
|
||||
new /datum/disease_ability/symptom/powerful/heal/coma,
|
||||
new /datum/disease_ability/symptom/powerful/youth,
|
||||
new /datum/disease_ability/symptom/medium/heal/weight_gain
|
||||
new /datum/disease_ability/symptom/medium/heal/weight_gain, //GS13
|
||||
new /datum/disease_ability/symptom/medium/robotic_adaptation //GS13
|
||||
))
|
||||
|
||||
/datum/disease_ability
|
||||
@@ -411,6 +413,13 @@ GLOBAL_LIST_INIT(disease_ability_singletons, list(
|
||||
|
||||
/datum/disease_ability/symptom/powerful/inorganic_adaptation
|
||||
symptoms = list(/datum/symptom/inorganic_adaptation)
|
||||
short_desc = "Allows to infect inorganic races."
|
||||
long_desc = "Allows to infect inorganic races. Includes plasmamen and golems."
|
||||
|
||||
/datum/disease_ability/symptom/medium/undead_adaptation
|
||||
symptoms = list(/datum/symptom/undead_adaptation)
|
||||
short_desc = "Allows to infect undead races."
|
||||
long_desc = "Allows to infect undead races. Includes skeletons, zombies, and vampires."
|
||||
|
||||
/datum/disease_ability/symptom/powerful/narcolepsy
|
||||
symptoms = list(/datum/symptom/narcolepsy)
|
||||
@@ -420,11 +429,18 @@ GLOBAL_LIST_INIT(disease_ability_singletons, list(
|
||||
short_desc = "Cause victims to become eternally young."
|
||||
long_desc = "Cause victims to become eternally young. Provides boosts to all stats except transmissibility."
|
||||
|
||||
//GS13 additions
|
||||
/datum/disease_ability/symptom/medium/heal/weight_gain
|
||||
symptoms = list(/datum/symptom/weight_gain)
|
||||
short_desc = "Cause victims to gain weight."
|
||||
long_desc = "Cause victims to gain weight. Boosts stage speed, but weakens all other stats."
|
||||
|
||||
/datum/disease_ability/symptom/medium/robotic_adaptation
|
||||
symptoms = list(/datum/symptom/robotic_adaptation)
|
||||
short_desc = "Allows to infect robotic races."
|
||||
long_desc = "Allows to infect robotic races. Includes synthetic lizards and ipcs."
|
||||
//--end here
|
||||
|
||||
/****HEALING SUBTYPE****/
|
||||
|
||||
/datum/disease_ability/symptom/powerful/heal/starlight
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#define CHALLENGE_TELECRYSTALS 280
|
||||
#define PLAYER_SCALING 1.5
|
||||
#define CHALLENGE_TIME_LIMIT 3000
|
||||
#define CHALLENGE_TIME_LIMIT 10000
|
||||
#define CHALLENGE_PLAYERS_TARGET 50 //target players population. anything below is a malus to the challenge tc bonus.
|
||||
#define TELECRYSTALS_MALUS_SCALING 1 //the higher the value, the bigger the malus.
|
||||
#define CHALLENGE_SHUTTLE_DELAY 15000 // 25 minutes, so the ops have at least 5 minutes before the shuttle is callable.
|
||||
|
||||
@@ -662,8 +662,8 @@ This is here to make the tiles around the station mininuke change when it's arme
|
||||
var/datum/round_event_control/operative/loneop = locate(/datum/round_event_control/operative) in SSevents.control
|
||||
if(istype(loneop))
|
||||
loneop.weight += 1
|
||||
if(loneop.weight % 5 == 0)
|
||||
message_admins("[src] is stationary in [ADMIN_VERBOSEJMP(newturf)]. The weight of Lone Operative is now [loneop.weight].")
|
||||
// if(loneop.weight % 5 == 0)
|
||||
// message_admins("[src] is stationary in [ADMIN_VERBOSEJMP(newturf)]. The weight of Lone Operative is now [loneop.weight].") // Commenting this out because it's a fucking pain for the admins - Sono
|
||||
log_game("[src] is stationary for too long in [loc_name(newturf)], and has increased the weight of the Lone Operative event to [loneop.weight].")
|
||||
else
|
||||
lastlocation = newturf
|
||||
|
||||
@@ -614,3 +614,140 @@
|
||||
shoes = /obj/item/clothing/shoes/sneakers/black
|
||||
suit = /obj/item/clothing/suit/armor/vest
|
||||
glasses = /obj/item/clothing/glasses/sunglasses/reagent
|
||||
|
||||
|
||||
|
||||
// GS13 stuff!
|
||||
|
||||
// Restaurant Worker: Basically just a bunch of wagies who are supposed to lure people into their restaurant
|
||||
|
||||
|
||||
/obj/effect/mob_spawn/human/fastfood
|
||||
name = "Corporate cryostasis pod"
|
||||
desc = "Through the grease-stained cryopod glass, you can see someone sleeping inside..."
|
||||
mob_name = "fastfood worker"
|
||||
job_description = "Restaurant Worker"
|
||||
icon = 'icons/obj/machines/sleeper.dmi'
|
||||
icon_state = "sleeper"
|
||||
death = FALSE
|
||||
roundstart = FALSE
|
||||
mob_species = /datum/species/human
|
||||
short_desc = "It's the grand opening day!"
|
||||
flavour_text = "After you've sold your soul to corporate overlords, your contract obliged you to enter cryostasis. \
|
||||
Finally, after God knows how long, the cryopod system have awakened you with only a single sentence of information - welcome and lure in new guests into the freshly opened restaurant!"
|
||||
assignedrole = "Restaurant worker"
|
||||
mirrorcanloadappearance = TRUE
|
||||
|
||||
/obj/effect/mob_spawn/human/fastfood/Initialize(mapload)
|
||||
. = ..()
|
||||
var/arrpee = rand(1,3)
|
||||
switch(arrpee)
|
||||
if(1)
|
||||
flavour_text += "You are this restaurant's manager, taking care of all the necessary paperwork, overseeing all the workers...\
|
||||
But most importantly, you always have to make sure that the restaurant prospers and remains in good shape! "
|
||||
outfit.glasses = /obj/item/clothing/glasses/sunglasses/reagent
|
||||
outfit.uniform = /obj/item/clothing/under/suit_jacket/burgundy
|
||||
outfit.shoes = /obj/item/clothing/shoes/sneakers/black
|
||||
outfit.back = /obj/item/storage/backpack/satchel/leather
|
||||
if(2)
|
||||
flavour_text += "You are this restaurant's cook, using up the plethora of ingredients to cook up deliciously greasy and caloric foods.\
|
||||
The kitchen and the bar is your turf! Make sure the guests stay fed."
|
||||
outfit.glasses = /obj/item/clothing/glasses/sunglasses/reagent
|
||||
outfit.head = /obj/item/clothing/head/soft/black
|
||||
outfit.uniform = /obj/item/clothing/under/bb_sweater/purple
|
||||
outfit.suit = /obj/item/clothing/suit/apron/chef
|
||||
outfit.shoes = /obj/item/clothing/shoes/sneakers/black
|
||||
outfit.back = /obj/item/storage/backpack
|
||||
if(3)
|
||||
flavour_text += "You are this restaurant's waiter, responsible not only for tending to the guests, but also fixing and taking care of station's shape, power and looks.\
|
||||
Make sure everything looks squeaky clean and that the restaurant remains powered!"
|
||||
outfit.head = /obj/item/clothing/head/soft/black
|
||||
outfit.uniform = /obj/item/clothing/under/waiter
|
||||
outfit.shoes = /obj/item/clothing/shoes/sneakers/black
|
||||
outfit.back = /obj/item/storage/backpack
|
||||
|
||||
/obj/effect/mob_spawn/human/fastfood/special(mob/living/carbon/human/new_spawn)
|
||||
ADD_TRAIT(new_spawn,TRAIT_EXEMPT_HEALTH_EVENTS,GHOSTROLE_TRAIT)
|
||||
|
||||
/obj/effect/mob_spawn/human/fastfood/Destroy()
|
||||
new/obj/structure/fluff/empty_sleeper(get_turf(src))
|
||||
return ..()
|
||||
|
||||
|
||||
// Feeder's Den - fanatic (GS13)
|
||||
|
||||
/obj/effect/mob_spawn/human/feeders_den/fanatic
|
||||
name = "Sleeper pod"
|
||||
desc = "Through the red glass, you can see someone sleeping inside..."
|
||||
mob_name = "fanatical feeder"
|
||||
job_description = "Fanatical degenerate"
|
||||
short_desc = "You are a member of a niche branch of Syndicate with... strange goals."
|
||||
flavour_text = "After months of construction and gathering equipment, your den is finished - a monument to gluttony, equipped with every tool to turn any sharp body into a quivering mound of lard..."
|
||||
important_info = "Keep your den in one piece and away from curious eyes! YOU AREN'T ALLOWED TO CAPTURE / FATTEN UP PEOPLE WHO DON'T DO NON-CON OR DIDN'T AGREE TO IT!!"
|
||||
outfit = /datum/outfit/feeders_den/fanatic
|
||||
mirrorcanloadappearance = TRUE
|
||||
assignedrole = "Space fanatic"
|
||||
icon = 'icons/obj/machines/sleeper.dmi'
|
||||
icon_state = "sleeper_s"
|
||||
death = FALSE
|
||||
roundstart = FALSE
|
||||
mob_species = /datum/species/human
|
||||
|
||||
/datum/outfit/feeders_den/fanatic
|
||||
name = "Feeder Fanatic"
|
||||
uniform = /obj/item/clothing/under/syndicate
|
||||
suit = /obj/item/clothing/suit/armor/vest
|
||||
shoes = /obj/item/clothing/shoes/combat
|
||||
gloves = /obj/item/clothing/gloves/combat
|
||||
ears = /obj/item/radio/headset/syndicate/alt
|
||||
back = /obj/item/storage/backpack
|
||||
r_hand = /obj/item/melee/transforming/energy/sword/saber
|
||||
r_pocket = /obj/item/gun/ballistic/automatic/pistol
|
||||
id = /obj/item/card/id/syndicate/anyone
|
||||
implants = list(/obj/item/implant/weapons_auth)
|
||||
|
||||
/datum/outfit/feeders_den/fanatic/Destroy()
|
||||
new/obj/structure/fluff/empty_sleeper/syndicate(get_turf(src))
|
||||
..()
|
||||
|
||||
/obj/effect/mob_spawn/human/feeders_den/fanatic/special(mob/living/carbon/human/new_spawn)
|
||||
ADD_TRAIT(new_spawn,TRAIT_EXEMPT_HEALTH_EVENTS,GHOSTROLE_TRAIT)
|
||||
|
||||
|
||||
// Feeder's Den - victim (GS13)
|
||||
|
||||
|
||||
/obj/effect/mob_spawn/human/feeders_den/victim
|
||||
name = "Grease stained cryopod"
|
||||
mob_name = "feeder victim"
|
||||
desc = "Through the grease-stained cryopod glass, you can see someone obese sleeping inside..."
|
||||
job_description = "Den Victim"
|
||||
short_desc = "You don't remember how you even got here."
|
||||
flavour_text = "It's been a while since you've been stuck here. Each day passes by with non-stop feeding, lazing around and the pain of a stretched, creaking stomach... Is there any hope for you to get out of here before things get truly hopeless?"
|
||||
important_info = "Keep your behaviour appropriate and fitting for your role, at least loosely."
|
||||
outfit = /datum/outfit/feeders_den/victim
|
||||
mirrorcanloadappearance = TRUE
|
||||
assignedrole = "Imprisoned victim"
|
||||
icon = 'icons/obj/machines/sleeper.dmi'
|
||||
icon_state = "sleeper_s"
|
||||
death = FALSE
|
||||
roundstart = FALSE
|
||||
mob_species = /datum/species/human
|
||||
|
||||
/datum/outfit/feeders_den/victim
|
||||
name = "Den Victim"
|
||||
uniform = /obj/item/clothing/under/polychromic/shortpants
|
||||
|
||||
/datum/outfit/feeders_den/victim/Destroy()
|
||||
new/obj/structure/fluff/empty_sleeper/syndicate(get_turf(src))
|
||||
..()
|
||||
|
||||
/obj/effect/mob_spawn/human/feeders_den/victim/startfat(mob/living/carbon/human/new_spawn)
|
||||
new_spawn.fatness = 1000
|
||||
return ..()
|
||||
|
||||
/obj/effect/mob_spawn/human/feeders_den/victim/special(mob/living/carbon/human/new_spawn)
|
||||
ADD_TRAIT(new_spawn,TRAIT_EXEMPT_HEALTH_EVENTS,GHOSTROLE_TRAIT)
|
||||
|
||||
/obj/effect/mob_spawn/proc/startfat(mob/M) //move this somewhere else later when we're cleaning up our content - Sono
|
||||
return
|
||||
|
||||
@@ -274,6 +274,11 @@
|
||||
unit_name = "Clown statue"
|
||||
export_types = list(/obj/structure/statue/bananium/clown)
|
||||
|
||||
/datum/export/large/fattystatue //GS13
|
||||
cost = 2000
|
||||
unit_name = "Fatty statue"
|
||||
export_types = list(/obj/structure/statue/calorite/fatty)
|
||||
|
||||
/datum/export/large/sandstatue
|
||||
cost = 90 //Big cash
|
||||
unit_name = "sandstone statue"
|
||||
|
||||
@@ -398,6 +398,8 @@
|
||||
/obj/item/stack/tile/carpet/red/fifty,
|
||||
/obj/item/stack/tile/carpet/royalblue/fifty,
|
||||
/obj/item/stack/tile/carpet/royalblue/fifty,
|
||||
/obj/item/stack/tile/carpet/gato/fifty,
|
||||
/obj/item/stack/tile/carpet/gato/fifty,
|
||||
/obj/item/stack/tile/carpet/royalblack/fifty,
|
||||
/obj/item/stack/tile/carpet/royalblack/fifty,
|
||||
/obj/item/stack/tile/carpet/blackred/fifty,
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
resistance_flags = NONE
|
||||
|
||||
/*
|
||||
* Posshim's Corpus atire
|
||||
* Posshim's Corpus atire
|
||||
*/
|
||||
/obj/item/clothing/suit/hooded/corpus/
|
||||
name = "Standard Voidsuit"
|
||||
@@ -517,6 +517,12 @@
|
||||
icon_state = "letterman_s"
|
||||
item_state = "letterman_s"
|
||||
|
||||
/obj/item/clothing/suit/jacket/letterman_gato
|
||||
name = "Gato letterman jacket"
|
||||
desc = "A GATO themed letterman jacket. Perfect for repping your pride in the company as you violently murder russian mobsters"
|
||||
icon_state = "letterman_gato"
|
||||
item_state = "letterman_gato"
|
||||
|
||||
/obj/item/clothing/suit/jacket/letterman_nanotrasen
|
||||
name = "blue letterman jacket"
|
||||
desc = "A blue letterman jacket with a proud Nanotrasen N on the back. The tag says that it was made in Space China."
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
/datum/round_event/disease_outbreak/start()
|
||||
var/advanced_virus = FALSE
|
||||
max_severity = 3 + max(FLOOR((world.time - control.earliest_start)/6000, 1),0) //3 symptoms at 20 minutes, plus 1 per 10 minutes
|
||||
max_severity = 3 + CLAMP(FLOOR((world.time - control.earliest_start)/6000, 1),0, 5) //3 symptoms at 20 minutes, plus 1 per 10 minutes, maximum 8 to prevent it getting all symptoms
|
||||
if(prob(20 + (10 * max_severity)))
|
||||
advanced_virus = TRUE
|
||||
|
||||
|
||||
@@ -2,8 +2,10 @@
|
||||
name = "Random Heart Attack"
|
||||
typepath = /datum/round_event/heart_attack
|
||||
weight = 20
|
||||
max_occurrences = 2
|
||||
min_players = 40 // To avoid shafting lowpop
|
||||
max_occurrences = 0
|
||||
min_players = 400 // To avoid shafting lowpop
|
||||
|
||||
// Made the event impossible to come across to bolster server's RP quality a bit - Sono
|
||||
|
||||
/datum/round_event/heart_attack/start()
|
||||
var/list/heart_attack_contestants = list()
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
/datum/round_event_control/radiation_storm
|
||||
name = "Radiation Storm"
|
||||
typepath = /datum/round_event/radiation_storm
|
||||
max_occurrences = 1
|
||||
// /datum/round_event_control/radiation_storm
|
||||
// name = "Radiation Storm"
|
||||
// typepath = /datum/round_event/radiation_storm
|
||||
// max_occurrences = 1
|
||||
|
||||
/datum/round_event/radiation_storm
|
||||
// /datum/round_event/radiation_storm
|
||||
|
||||
|
||||
/datum/round_event/radiation_storm/setup()
|
||||
startWhen = 3
|
||||
endWhen = startWhen + 1
|
||||
announceWhen = 1
|
||||
// /datum/round_event/radiation_storm/setup()
|
||||
// startWhen = 3
|
||||
// endWhen = startWhen + 1
|
||||
// announceWhen = 1
|
||||
|
||||
/datum/round_event/radiation_storm/announce(fake)
|
||||
priority_announce("High levels of radiation detected near the station. Maintenance is best shielded from radiation.", "Anomaly Alert", 'sound/ai/radiation.ogg')
|
||||
//sound not longer matches the text, but an audible warning is probably good
|
||||
// /datum/round_event/radiation_storm/announce(fake)
|
||||
// priority_announce("High levels of radiation detected near the station. Maintenance is best shielded from radiation.", "Anomaly Alert", 'sound/ai/radiation.ogg')
|
||||
// //sound not longer matches the text, but an audible warning is probably good
|
||||
|
||||
/datum/round_event/radiation_storm/start()
|
||||
SSweather.run_weather(/datum/weather/rad_storm)
|
||||
// /datum/round_event/radiation_storm/start()
|
||||
// SSweather.run_weather(/datum/weather/rad_storm)
|
||||
|
||||
@@ -2,9 +2,11 @@
|
||||
name = "Spontaneous Appendicitis"
|
||||
typepath = /datum/round_event/spontaneous_appendicitis
|
||||
weight = 20
|
||||
max_occurrences = 4
|
||||
earliest_start = 10 MINUTES
|
||||
min_players = 5 // To make your chance of getting help a bit higher.
|
||||
max_occurrences = 0
|
||||
earliest_start = 900 MINUTES
|
||||
min_players = 100
|
||||
|
||||
// I made the event practically impossible, as an RP tweak - Sono
|
||||
|
||||
/datum/round_event/spontaneous_appendicitis
|
||||
fakeable = FALSE
|
||||
|
||||
@@ -751,7 +751,7 @@
|
||||
tastes = list("pastry" = 1, "sweetness" = 1)
|
||||
foodtype = GRAIN | SUGAR
|
||||
|
||||
#define PANCAKE_MAX_STACK 10
|
||||
#define PANCAKE_MAX_STACK 20 //Doubled the stacking size. Snack away, snacksters! - Sono
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/pancakes
|
||||
name = "pancake"
|
||||
|
||||
@@ -1087,7 +1087,8 @@
|
||||
"Solid Plasma" = IC_PINTYPE_NUMBER,
|
||||
"Uranium" = IC_PINTYPE_NUMBER,
|
||||
"Bananium" = IC_PINTYPE_NUMBER,
|
||||
"Titanium" = IC_PINTYPE_NUMBER,
|
||||
"Calorite" = IC_PINTYPE_NUMBER,
|
||||
"Titanium" = IC_PINTYPE_NUMBER,
|
||||
"Bluespace Mesh" = IC_PINTYPE_NUMBER,
|
||||
"Biomass" = IC_PINTYPE_NUMBER,
|
||||
)
|
||||
@@ -1098,7 +1099,7 @@
|
||||
)
|
||||
spawn_flags = IC_SPAWN_RESEARCH
|
||||
power_draw_per_use = 40
|
||||
var/list/mtypes = list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE, MAT_BIOMASS)
|
||||
var/list/mtypes = list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_CALORITE, MAT_TITANIUM, MAT_BLUESPACE, MAT_BIOMASS)
|
||||
|
||||
|
||||
/obj/item/integrated_circuit/input/matscan/do_work()
|
||||
@@ -1340,4 +1341,4 @@
|
||||
set_pin_data(IC_OUTPUT, 3, L.max_arousal)
|
||||
set_pin_data(IC_OUTPUT, 4, L.canbearoused)
|
||||
push_data()
|
||||
activate_pin(2)
|
||||
activate_pin(2)
|
||||
|
||||
@@ -372,6 +372,7 @@
|
||||
"Solid Plasma" = IC_PINTYPE_NUMBER,
|
||||
"Bluespace Mesh" = IC_PINTYPE_NUMBER,
|
||||
"Bananium" = IC_PINTYPE_NUMBER,
|
||||
"Calorite" = IC_PINTYPE_NUMBER,
|
||||
"Titanium" = IC_PINTYPE_NUMBER,
|
||||
)
|
||||
outputs = list(
|
||||
@@ -386,6 +387,7 @@
|
||||
"Solid Plasma" = IC_PINTYPE_NUMBER,
|
||||
"Bluespace Mesh" = IC_PINTYPE_NUMBER,
|
||||
"Bananium" = IC_PINTYPE_NUMBER,
|
||||
"Calorite" = IC_PINTYPE_NUMBER,
|
||||
"Titanium" = IC_PINTYPE_NUMBER
|
||||
)
|
||||
activators = list(
|
||||
@@ -400,11 +402,11 @@
|
||||
power_draw_per_use = 40
|
||||
ext_cooldown = 1
|
||||
cooldown_per_use = 10
|
||||
var/list/mtypes = list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE)
|
||||
var/list/mtypes = list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_CALORITE, MAT_TITANIUM, MAT_BLUESPACE)
|
||||
|
||||
/obj/item/integrated_circuit/manipulation/matman/Initialize()
|
||||
var/datum/component/material_container/materials = AddComponent(/datum/component/material_container,
|
||||
list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE), 0,
|
||||
list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_CALORITE, MAT_TITANIUM, MAT_BLUESPACE), 0,
|
||||
FALSE, /obj/item/stack, CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert))
|
||||
materials.max_amount =100000
|
||||
materials.precise_insertion = TRUE
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
/obj/machinery/mineral/processing_unit/Initialize()
|
||||
. = ..()
|
||||
proximity_monitor = new(src, 1)
|
||||
AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE), INFINITY, TRUE, /obj/item/stack)
|
||||
AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_CALORITE, MAT_TITANIUM, MAT_BLUESPACE), INFINITY, TRUE, /obj/item/stack)
|
||||
stored_research = new /datum/techweb/specialized/autounlocking/smelter
|
||||
|
||||
/obj/machinery/mineral/processing_unit/Destroy()
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
var/ore_pickup_rate = 15
|
||||
var/sheet_per_ore = 1
|
||||
var/point_upgrade = 1
|
||||
var/list/ore_values = list(MAT_GLASS = 1, MAT_METAL = 1, MAT_PLASMA = 15, MAT_SILVER = 16, MAT_GOLD = 18, MAT_TITANIUM = 30, MAT_URANIUM = 30, MAT_DIAMOND = 50, MAT_BLUESPACE = 50, MAT_BANANIUM = 60)
|
||||
var/list/ore_values = list(MAT_GLASS = 1, MAT_METAL = 1, MAT_PLASMA = 15, MAT_SILVER = 16, MAT_GOLD = 18, MAT_TITANIUM = 30, MAT_URANIUM = 30, MAT_DIAMOND = 50, MAT_BLUESPACE = 50, MAT_BANANIUM = 60, MAT_CALORITE = 40)
|
||||
var/message_sent = FALSE
|
||||
var/list/ore_buffer = list()
|
||||
var/datum/techweb/stored_research
|
||||
|
||||
@@ -16,7 +16,7 @@ GLOBAL_LIST_EMPTY(silo_access_logs)
|
||||
/obj/machinery/ore_silo/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/material_container,
|
||||
list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE, MAT_PLASTIC),
|
||||
list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_CALORITE, MAT_TITANIUM, MAT_BLUESPACE, MAT_PLASTIC),
|
||||
INFINITY,
|
||||
FALSE,
|
||||
/obj/item/stack,
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
speak_emote = list("states")
|
||||
wanted_objects = list(/obj/item/stack/ore/diamond, /obj/item/stack/ore/gold, /obj/item/stack/ore/silver,
|
||||
/obj/item/stack/ore/plasma, /obj/item/stack/ore/uranium, /obj/item/stack/ore/iron,
|
||||
/obj/item/stack/ore/bananium, /obj/item/stack/ore/titanium)
|
||||
/obj/item/stack/ore/bananium, /obj/item/stack/ore/calorite, /obj/item/stack/ore/titanium)
|
||||
healable = 0
|
||||
loot = list(/obj/effect/decal/cleanable/robot_debris)
|
||||
del_on_death = TRUE
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
/obj/machinery/mineral/mint/Initialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_PLASMA, MAT_SILVER, MAT_GOLD, MAT_URANIUM, MAT_DIAMOND, MAT_BANANIUM), MINERAL_MATERIAL_AMOUNT * 50, FALSE, /obj/item/stack)
|
||||
AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_PLASMA, MAT_SILVER, MAT_GOLD, MAT_URANIUM, MAT_DIAMOND, MAT_BANANIUM, MAT_CALORITE), MINERAL_MATERIAL_AMOUNT * 50, FALSE, /obj/item/stack)
|
||||
|
||||
/obj/machinery/mineral/mint/process()
|
||||
var/turf/T = get_step(src, input_dir)
|
||||
|
||||
@@ -179,6 +179,15 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
|
||||
materials = list(MAT_BANANIUM=MINERAL_MATERIAL_AMOUNT)
|
||||
refined_type = /obj/item/stack/sheet/mineral/bananium
|
||||
|
||||
/obj/item/stack/ore/calorite //GS13
|
||||
name = "calorite ore"
|
||||
icon_state = "calorite ore"
|
||||
item_state = "calorite ore"
|
||||
singular_name = "Calorite ore chunk"
|
||||
points = 40
|
||||
materials = list(MAT_CALORITE=MINERAL_MATERIAL_AMOUNT)
|
||||
refined_type = /obj/item/stack/sheet/mineral/calorite
|
||||
|
||||
/obj/item/stack/ore/titanium
|
||||
name = "titanium ore"
|
||||
icon_state = "Titanium ore"
|
||||
|
||||
@@ -1227,11 +1227,11 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
//LIFE//
|
||||
////////
|
||||
|
||||
/datum/species/proc/handle_digestion(mob/living/carbon/human/H)
|
||||
if(HAS_TRAIT(src, TRAIT_NOHUNGER))
|
||||
return //hunger is for BABIES
|
||||
///datum/species/proc/handle_digestion(mob/living/carbon/human/H)
|
||||
// if(HAS_TRAIT(src, TRAIT_NOHUNGER))
|
||||
// return //hunger is for BABIES
|
||||
|
||||
//The fucking TRAIT_FAT mutation is the dumbest shit ever. It makes the code so difficult to work with
|
||||
/* //The fucking TRAIT_FAT mutation is the dumbest shit ever. It makes the code so difficult to work with
|
||||
if(HAS_TRAIT(H, TRAIT_FAT))//I share your pain, past coder.
|
||||
if(H.fatness < FATNESS_LEVEL_FAT)//this is a mess, indeed.
|
||||
to_chat(H, "<span class='notice'>You feel fit again!</span>")//GS13 Added a whole bunch of new fatness traits. Truly I am a masochist
|
||||
@@ -1275,7 +1275,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
ADD_TRAIT(H, TRAIT_IMMOBILE, OBESITY)
|
||||
H.update_body()
|
||||
H.update_inv_w_uniform()
|
||||
H.update_inv_wear_suit()
|
||||
H.update_inv_wear_suit()
|
||||
else if(HAS_TRAIT(H, TRAIT_IMMOBILE))
|
||||
if(H.fatness < FATNESS_LEVEL_IMMOBILE)
|
||||
to_chat(H, "<span class='notice'>You feel less restrained by your fat!</span>")
|
||||
@@ -1306,6 +1306,276 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
H.update_body()
|
||||
H.update_inv_w_uniform()
|
||||
H.update_inv_wear_suit()
|
||||
*/
|
||||
/datum/species/proc/handle_digestion(mob/living/carbon/human/H)
|
||||
var/obj/item/organ/genital/anus/B = H.getorganslot("anus")
|
||||
var/obj/item/organ/genital/belly/C = H.getorganslot("belly")
|
||||
var/obj/item/organ/genital/breasts/D = H.getorganslot("breasts")
|
||||
if(HAS_TRAIT(src, TRAIT_NOHUNGER))
|
||||
return //hunger is for BABIES
|
||||
|
||||
//The fucking TRAIT_FAT mutation is the dumbest shit ever. It makes the code so difficult to work with
|
||||
if(HAS_TRAIT(H, TRAIT_FAT))//I share your pain, past coder.
|
||||
if(H.fatness < FATNESS_LEVEL_FAT)//this is a mess, indeed.
|
||||
to_chat(H, "<span class='notice'>You feel fit again!</span>")//GS13 Added a whole bunch of new fatness traits. Truly I am a masochist
|
||||
REMOVE_TRAIT(H, TRAIT_FAT, OBESITY)
|
||||
B.size = B.size - 1
|
||||
B.update()
|
||||
C.size = 0
|
||||
C.update()
|
||||
D.cached_size = D.cached_size - 1
|
||||
D.update()
|
||||
H.genital_override = TRUE
|
||||
H.update_body()
|
||||
H.update_inv_w_uniform()
|
||||
H.update_inv_wear_suit()
|
||||
else if(H.fatness >= FATNESS_LEVEL_FATTER)
|
||||
to_chat(H, "<span class='danger'>You feel even plumper!</span>")
|
||||
REMOVE_TRAIT(H, TRAIT_FAT, OBESITY)
|
||||
ADD_TRAIT(H, TRAIT_FATTER, OBESITY)
|
||||
B.size = B.size + 1
|
||||
B.update()
|
||||
C.size = C.size + 1
|
||||
C.update()
|
||||
D.cached_size = D.cached_size + 1
|
||||
D.update()
|
||||
H.genital_override = TRUE
|
||||
H.update_body()
|
||||
H.update_inv_w_uniform()
|
||||
H.update_inv_wear_suit()
|
||||
else if(HAS_TRAIT(H, TRAIT_FATTER))
|
||||
if(H.fatness < FATNESS_LEVEL_FATTER)
|
||||
to_chat(H, "<span class='notice'>You feel like you've lost weight!</span>")
|
||||
REMOVE_TRAIT(H, TRAIT_FATTER, OBESITY)
|
||||
ADD_TRAIT(H, TRAIT_FAT, OBESITY)
|
||||
B.size = B.size - 1
|
||||
B.update()
|
||||
C.size = C.size - 1
|
||||
C.update()
|
||||
D.cached_size = D.cached_size - 1
|
||||
D.update()
|
||||
H.genital_override = TRUE
|
||||
H.update_body()
|
||||
H.update_inv_w_uniform()
|
||||
H.update_inv_wear_suit()
|
||||
else if(H.fatness >= FATNESS_LEVEL_VERYFAT)
|
||||
to_chat(H, "<span class='danger'>Your clothes creak quietly!</span>")
|
||||
REMOVE_TRAIT(H, TRAIT_FATTER, OBESITY)
|
||||
ADD_TRAIT(H, TRAIT_VERYFAT, OBESITY)
|
||||
B.size = B.size + 1
|
||||
B.update()
|
||||
C.size = C.size + 1
|
||||
C.update()
|
||||
D.cached_size = D.cached_size + 1
|
||||
D.update()
|
||||
H.genital_override = TRUE
|
||||
H.update_body()
|
||||
H.update_inv_w_uniform()
|
||||
H.update_inv_wear_suit()
|
||||
else if(HAS_TRAIT(H, TRAIT_VERYFAT))
|
||||
if(H.fatness < FATNESS_LEVEL_VERYFAT)
|
||||
to_chat(H, "<span class='notice'>You feel like you've lost weight!</span>")
|
||||
REMOVE_TRAIT(H, TRAIT_VERYFAT, OBESITY)
|
||||
ADD_TRAIT(H, TRAIT_FATTER, OBESITY)
|
||||
B.size = B.size - 1
|
||||
B.update()
|
||||
C.size = C.size - 1
|
||||
C.update()
|
||||
D.cached_size = D.cached_size - 1
|
||||
D.update()
|
||||
H.genital_override = TRUE
|
||||
H.update_body()
|
||||
H.update_inv_w_uniform()
|
||||
H.update_inv_wear_suit()
|
||||
else if(H.fatness >= FATNESS_LEVEL_OBESE)
|
||||
to_chat(H, "<span class='danger'>You feel like you're starting to get really heavy.</span>")
|
||||
REMOVE_TRAIT(H, TRAIT_VERYFAT, OBESITY)
|
||||
ADD_TRAIT(H, TRAIT_OBESE, OBESITY)
|
||||
B.size = B.size + 1
|
||||
B.update()
|
||||
C.size = C.size + 1
|
||||
C.update()
|
||||
D.cached_size = D.cached_size + 1
|
||||
D.update()
|
||||
H.genital_override = TRUE
|
||||
H.update_body()
|
||||
H.update_inv_w_uniform()
|
||||
H.update_inv_wear_suit()
|
||||
else if(HAS_TRAIT(H, TRAIT_OBESE))
|
||||
if(H.fatness < FATNESS_LEVEL_OBESE)
|
||||
to_chat(H, "<span class='notice'>You feel like you've lost weight!</span>")
|
||||
REMOVE_TRAIT(H, TRAIT_OBESE, OBESITY)
|
||||
ADD_TRAIT(H, TRAIT_VERYFAT, OBESITY)
|
||||
B.size = B.size - 1
|
||||
B.update()
|
||||
C.size = C.size - 1
|
||||
C.update()
|
||||
D.cached_size = D.cached_size - 1
|
||||
D.update()
|
||||
H.genital_override = TRUE
|
||||
H.update_body()
|
||||
H.update_inv_w_uniform()
|
||||
H.update_inv_wear_suit()
|
||||
else if(H.fatness >= FATNESS_LEVEL_MORBIDLY_OBESE)
|
||||
to_chat(H, "<span class='danger'>Your thighs begin to rub against each other.</span>")
|
||||
REMOVE_TRAIT(H, TRAIT_OBESE, OBESITY)
|
||||
ADD_TRAIT(H, TRAIT_MORBIDLYOBESE, OBESITY)
|
||||
B.size = B.size + 1
|
||||
B.update()
|
||||
C.size = C.size + 1
|
||||
C.update()
|
||||
D.cached_size = D.cached_size + 1
|
||||
D.update()
|
||||
H.genital_override = TRUE
|
||||
H.update_body()
|
||||
H.update_inv_w_uniform()
|
||||
H.update_inv_wear_suit()
|
||||
else if(HAS_TRAIT(H, TRAIT_MORBIDLYOBESE))
|
||||
if(H.fatness < FATNESS_LEVEL_MORBIDLY_OBESE)
|
||||
to_chat(H, "<span class='notice'>You feel a bit less fat!</span>")
|
||||
REMOVE_TRAIT(H, TRAIT_MORBIDLYOBESE, OBESITY)
|
||||
ADD_TRAIT(H, TRAIT_OBESE, OBESITY)
|
||||
B.size = B.size - 1
|
||||
B.update()
|
||||
C.size = C.size - 1
|
||||
C.update()
|
||||
D.cached_size = D.cached_size - 1
|
||||
D.update()
|
||||
H.genital_override = TRUE
|
||||
H.update_body()
|
||||
H.update_inv_w_uniform()
|
||||
H.update_inv_wear_suit()
|
||||
else if(H.fatness >= FATNESS_LEVEL_EXTREMELY_OBESE)
|
||||
to_chat(H, "<span class='danger'>You feel your belly rest heavily on your lap!</span>")
|
||||
REMOVE_TRAIT(H, TRAIT_MORBIDLYOBESE, OBESITY)
|
||||
ADD_TRAIT(H, TRAIT_EXTREMELYOBESE, OBESITY)
|
||||
B.size = B.size + 1
|
||||
B.update()
|
||||
C.size = C.size + 1
|
||||
C.update()
|
||||
D.cached_size = D.cached_size + 1
|
||||
D.update()
|
||||
H.genital_override = TRUE
|
||||
H.update_body()
|
||||
H.update_inv_w_uniform()
|
||||
H.update_inv_wear_suit()
|
||||
else if(HAS_TRAIT(H, TRAIT_EXTREMELYOBESE))
|
||||
if(H.fatness < FATNESS_LEVEL_EXTREMELY_OBESE)
|
||||
to_chat(H, "<span class='notice'>You feel less restrained by your fat!</span>")
|
||||
REMOVE_TRAIT(H, TRAIT_EXTREMELYOBESE, OBESITY)
|
||||
ADD_TRAIT(H, TRAIT_MORBIDLYOBESE, OBESITY)
|
||||
B.size = B.size - 1
|
||||
B.update()
|
||||
C.size = C.size - 1
|
||||
C.update()
|
||||
D.cached_size = D.cached_size - 1
|
||||
D.update()
|
||||
H.genital_override = TRUE
|
||||
H.update_body()
|
||||
H.update_inv_w_uniform()
|
||||
H.update_inv_wear_suit()
|
||||
else if(H.fatness >= FATNESS_LEVEL_BARELYMOBILE)
|
||||
to_chat(H, "<span class='danger'>You feel like you can barely move!</span>")
|
||||
REMOVE_TRAIT(H, TRAIT_EXTREMELYOBESE, OBESITY)
|
||||
ADD_TRAIT(H, TRAIT_BARELYMOBILE, OBESITY)
|
||||
B.size = B.size + 1
|
||||
B.update()
|
||||
C.size = C.size + 1
|
||||
C.update()
|
||||
D.cached_size = D.cached_size + 1
|
||||
D.update()
|
||||
H.genital_override = TRUE
|
||||
H.update_body()
|
||||
H.update_inv_w_uniform()
|
||||
H.update_inv_wear_suit()
|
||||
else if(HAS_TRAIT(H, TRAIT_BARELYMOBILE))
|
||||
if(H.fatness < FATNESS_LEVEL_BARELYMOBILE)
|
||||
to_chat(H, "<span class='notice'>You feel less restrained by your fat!</span>")
|
||||
REMOVE_TRAIT(H, TRAIT_BARELYMOBILE, OBESITY)
|
||||
ADD_TRAIT(H, TRAIT_EXTREMELYOBESE, OBESITY)
|
||||
B.size = B.size - 1
|
||||
B.update()
|
||||
C.size = C.size - 1
|
||||
C.update()
|
||||
D.cached_size = D.cached_size - 1
|
||||
D.update()
|
||||
H.genital_override = TRUE
|
||||
H.update_body()
|
||||
H.update_inv_w_uniform()
|
||||
H.update_inv_wear_suit()
|
||||
else if(H.fatness >= FATNESS_LEVEL_IMMOBILE)
|
||||
to_chat(H, "<span class='danger'>You feel belly smush against the floor!</span>")
|
||||
REMOVE_TRAIT(H, TRAIT_BARELYMOBILE, OBESITY)
|
||||
ADD_TRAIT(H, TRAIT_IMMOBILE, OBESITY)
|
||||
B.size = B.size + 1
|
||||
B.update()
|
||||
C.size = C.size + 1
|
||||
C.update()
|
||||
D.cached_size = D.cached_size + 1
|
||||
D.update()
|
||||
H.genital_override = TRUE
|
||||
H.update_body()
|
||||
H.update_inv_w_uniform()
|
||||
H.update_inv_wear_suit()
|
||||
else if(HAS_TRAIT(H, TRAIT_IMMOBILE))
|
||||
if(H.fatness < FATNESS_LEVEL_IMMOBILE)
|
||||
to_chat(H, "<span class='notice'>You feel less restrained by your fat!</span>")
|
||||
REMOVE_TRAIT(H, TRAIT_IMMOBILE, OBESITY)
|
||||
ADD_TRAIT(H, TRAIT_BARELYMOBILE, OBESITY)
|
||||
B.size = B.size - 1
|
||||
B.update()
|
||||
C.size = C.size - 1
|
||||
C.update()
|
||||
D.cached_size = D.cached_size - 1
|
||||
D.update()
|
||||
H.genital_override = TRUE
|
||||
H.update_body()
|
||||
H.update_inv_w_uniform()
|
||||
H.update_inv_wear_suit()
|
||||
else if(H.fatness > FATNESS_LEVEL_BLOB)
|
||||
to_chat(H, "<span class='danger'>You feel like you've become a mountain of fat!</span>")
|
||||
REMOVE_TRAIT(H, TRAIT_IMMOBILE, OBESITY)
|
||||
ADD_TRAIT(H, TRAIT_BLOB, OBESITY)
|
||||
B.size = B.size + 1
|
||||
B.update()
|
||||
C.size = C.size + 1
|
||||
C.update()
|
||||
D.cached_size = D.cached_size + 1
|
||||
D.update()
|
||||
H.genital_override = TRUE
|
||||
H.update_body()
|
||||
H.update_inv_w_uniform()
|
||||
H.update_inv_wear_suit()
|
||||
else if(HAS_TRAIT(H, TRAIT_BLOB))
|
||||
if(H.fatness < FATNESS_LEVEL_BLOB)
|
||||
to_chat(H, "<span class='notice'>You feel like you've regained some mobility!</span>")
|
||||
REMOVE_TRAIT(H, TRAIT_BLOB, OBESITY)
|
||||
ADD_TRAIT(H, TRAIT_IMMOBILE, OBESITY)
|
||||
B.size = B.size - 1
|
||||
B.update()
|
||||
C.size = C.size - 1
|
||||
C.update()
|
||||
D.cached_size = D.cached_size - 1
|
||||
D.update()
|
||||
H.genital_override = TRUE
|
||||
H.update_body()
|
||||
H.update_inv_w_uniform()
|
||||
H.update_inv_wear_suit()
|
||||
else
|
||||
if(H.fatness >= FATNESS_LEVEL_FAT)
|
||||
to_chat(H, "<span class='danger'>You suddenly feel blubbery!</span>")
|
||||
ADD_TRAIT(H, TRAIT_FAT, OBESITY)
|
||||
B.size = B.size + 1
|
||||
B.update()
|
||||
C.size = C.size + 1
|
||||
C.update()
|
||||
D.cached_size = D.cached_size + 1
|
||||
D.update()
|
||||
H.genital_override = TRUE
|
||||
H.update_body()
|
||||
H.update_inv_w_uniform()
|
||||
H.update_inv_wear_suit()
|
||||
|
||||
|
||||
// nutrition decrease and satiety
|
||||
if (H.nutrition > 0 && H.stat != DEAD && !HAS_TRAIT(H, TRAIT_NOHUNGER))
|
||||
@@ -1370,7 +1640,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
H.throw_alert("nutrition", /obj/screen/alert/hungry)
|
||||
if(0 to NUTRITION_LEVEL_STARVING)
|
||||
H.throw_alert("nutrition", /obj/screen/alert/starving)
|
||||
|
||||
|
||||
switch(H.fullness)
|
||||
if(0 to FULLNESS_LEVEL_BLOATED)
|
||||
H.clear_alert("fullness")
|
||||
@@ -1396,6 +1666,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
if(0 to FATNESS_LEVEL_FAT)
|
||||
H.clear_alert("fatness")
|
||||
|
||||
|
||||
/datum/species/proc/handle_thirst(mob/living/carbon/human/H)
|
||||
if(HAS_TRAIT(src, TRAIT_NOTHIRST))
|
||||
return
|
||||
@@ -1533,7 +1804,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
if(SANITY_UNSTABLE to SANITY_DISTURBED)
|
||||
. += 0.5
|
||||
*/
|
||||
if(HAS_TRAIT(H, TRAIT_FAT))
|
||||
/* if(HAS_TRAIT(H, TRAIT_FAT))
|
||||
. += (1 - flight)
|
||||
if(HAS_TRAIT(H, TRAIT_OBESE))//GS13 fat levels move speed decrease
|
||||
. += (1.5 - flight)
|
||||
@@ -1546,7 +1817,28 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
if(H.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT && !HAS_TRAIT(H, TRAIT_RESISTCOLD))
|
||||
. += (BODYTEMP_COLD_DAMAGE_LIMIT - H.bodytemperature) / COLD_SLOWDOWN_FACTOR
|
||||
return .
|
||||
|
||||
*/
|
||||
if(HAS_TRAIT(H, TRAIT_FAT))
|
||||
. += (1 - flight)
|
||||
if(HAS_TRAIT(H, TRAIT_FATTER))
|
||||
. += (1.1 - flight)
|
||||
if(HAS_TRAIT(H, TRAIT_VERYFAT))
|
||||
. += (1.25 - flight)
|
||||
if(HAS_TRAIT(H, TRAIT_OBESE))//GS13 fat levels move speed decrease
|
||||
. += (1.5 - flight)
|
||||
if(HAS_TRAIT(H, TRAIT_MORBIDLYOBESE))
|
||||
. += (2 - flight)
|
||||
if(HAS_TRAIT(H, TRAIT_EXTREMELYOBESE))
|
||||
. += (2.5 - flight)
|
||||
if(HAS_TRAIT(H, TRAIT_BARELYMOBILE))
|
||||
. += 2.7
|
||||
if(HAS_TRAIT(H, TRAIT_IMMOBILE))
|
||||
. += 3 // No wings are going to lift that much off the ground
|
||||
if(HAS_TRAIT(H, TRAIT_BLOB))
|
||||
. += 4
|
||||
if(H.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT && !HAS_TRAIT(H, TRAIT_RESISTCOLD))
|
||||
. += (BODYTEMP_COLD_DAMAGE_LIMIT - H.bodytemperature) / COLD_SLOWDOWN_FACTOR
|
||||
return .
|
||||
//////////////////
|
||||
// ATTACK PROCS //
|
||||
//////////////////
|
||||
|
||||
@@ -3,7 +3,10 @@
|
||||
name = "Podperson"
|
||||
id = "pod"
|
||||
default_color = "59CE00"
|
||||
species_traits = list(MUTCOLORS,EYECOLOR)
|
||||
species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,FACEHAIR,WINGCOLOR)
|
||||
inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID
|
||||
mutant_bodyparts = list("mam_tail", "mam_ears", "mam_body_markings", "mam_snouts","mam_waggingtail","spines", "horns", "frills", "legs", "taur", "deco_wings")
|
||||
default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_snouts" = "None", "mam_tail" = "None", "mam_ears" = "None", "mam_body_markings" = "Husky", "taur" = "None", "legs" = "Normal Legs", "deco_wings" = "None", "horns" = "None", "frills" = "None", "spines" = "None")
|
||||
attack_verb = "slash"
|
||||
attack_sound = 'sound/weapons/slice.ogg'
|
||||
miss_sound = 'sound/weapons/slashmiss.ogg'
|
||||
@@ -28,6 +31,10 @@
|
||||
C.faction -= "plants"
|
||||
C.faction -= "vines"
|
||||
|
||||
/datum/species/pod/qualifies_for_rank(rank, list/features)
|
||||
return TRUE
|
||||
|
||||
|
||||
/datum/species/pod/spec_life(mob/living/carbon/human/H)
|
||||
if(H.stat == DEAD)
|
||||
return
|
||||
@@ -68,6 +75,33 @@
|
||||
if(/obj/item/projectile/energy/florayield)
|
||||
H.nutrition = min(H.nutrition+30, NUTRITION_LEVEL_FULL)
|
||||
|
||||
/datum/species/pod/spec_death(gibbed, mob/living/carbon/human/H)
|
||||
if(H)
|
||||
stop_wagging_tail(H)
|
||||
|
||||
/datum/species/pod/spec_stun(mob/living/carbon/human/H,amount)
|
||||
if(H)
|
||||
stop_wagging_tail(H)
|
||||
. = ..()
|
||||
|
||||
/datum/species/pod/can_wag_tail(mob/living/carbon/human/H)
|
||||
return ("mam_tail" in mutant_bodyparts) || ("mam_waggingtail" in mutant_bodyparts)
|
||||
|
||||
/datum/species/pod/is_wagging_tail(mob/living/carbon/human/H)
|
||||
return ("mam_waggingtail" in mutant_bodyparts)
|
||||
|
||||
/datum/species/pod/start_wagging_tail(mob/living/carbon/human/H)
|
||||
if("mam_tail" in mutant_bodyparts)
|
||||
mutant_bodyparts -= "mam_tail"
|
||||
mutant_bodyparts |= "mam_waggingtail"
|
||||
H.update_body()
|
||||
|
||||
/datum/species/pod/stop_wagging_tail(mob/living/carbon/human/H)
|
||||
if("mam_waggingtail" in mutant_bodyparts)
|
||||
mutant_bodyparts -= "mam_waggingtail"
|
||||
mutant_bodyparts |= "mam_tail"
|
||||
H.update_body()
|
||||
|
||||
/datum/species/pod/pseudo_weak
|
||||
id = "podweak"
|
||||
limbs_id = "pod"
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
/obj/item/paper/contract/employment/update_text()
|
||||
name = "paper- [target] employment contract"
|
||||
info = "<center>Conditions of Employment</center><BR><BR><BR><BR>This Agreement is made and entered into as of the date of last signature below, by and between [target] (hereafter referred to as SLAVE), and GATO (hereafter referred to as the omnipresent and helpful watcher of humanity).<BR>WITNESSETH:<BR>WHEREAS, SLAVE is a natural born human or humanoid, possessing skills upon which he can aid the omnipresent and helpful watcher of humanity, who seeks employment in the omnipresent and helpful watcher of humanity.<BR>WHEREAS, the omnipresent and helpful watcher of humanity agrees to sporadically provide payment to SLAVE, in exchange for permanent servitude.<BR>NOW THEREFORE in consideration of the mutual covenants herein contained, and other good and valuable consideration, the parties hereto mutually agree as follows:<BR>In exchange for paltry payments, SLAVE agrees to work for the omnipresent and helpful watcher of humanity, for the remainder of his or her current and future lives.<BR>Further, SLAVE agrees to transfer ownership of his or her soul to the loyalty department of the omnipresent and helpful watcher of humanity.<BR>Should transfership of a soul not be possible, a lien shall be placed instead.<BR>Signed,<BR><i>[target]</i>"
|
||||
info = "<center>Conditions of Employment</center><BR><BR><BR><BR>This Agreement is made and entered into as of the date of last signature below, by and between [target] (hereafter referred to as SLAVE), and GATO (hereafter referred to as the omnipresent and helpful watcher of this galactic sector).<BR>WITNESSETH:<BR>WHEREAS, SLAVE is a natural born human or humanoid, possessing skills upon which he can aid the omnipresent and helpful watcher of this galactic sector, who seeks employment in the omnipresent and helpful watcher of this galactic sector.<BR>WHEREAS, the omnipresent and helpful watcher of this galactic sector agrees to regularly provide payment to SLAVE, in exchange for permanent servitude.<BR>NOW THEREFORE in consideration of the mutual covenants herein contained, and other good and valuable consideration, the parties hereto mutually agree as follows:<BR>In exchange for payments, SLAVE agrees to work for the omnipresent and helpful watcher of this galactic sector, for the remainder of his or her current and future lives.<BR>Further, SLAVE agrees to transfer ownership of his or her soul to the loyalty department of the omnipresent and helpful watcher of this galactic sector.<BR>Should transfership of a soul not be possible, a lien shall be placed instead. The contract may only be unbound by supervision of proper Central Command officials, under strict terms previously discussed between SLAVE and the omnipresent and helpful watcher of this galactic sector. <BR>Signed,<BR><i>[target]</i>"
|
||||
|
||||
|
||||
/obj/item/paper/contract/employment/attack(mob/living/M, mob/living/carbon/human/user)
|
||||
|
||||
@@ -1895,6 +1895,18 @@
|
||||
F.PlaceOnTop(/turf/open/floor/carpet/purple)
|
||||
..()
|
||||
|
||||
/datum/reagent/carpet/purple //GS13
|
||||
name = "Liquid GATO-style Carpet"
|
||||
color = "#6d3392"
|
||||
|
||||
/datum/reagent/carpet/gato/reaction_turf(turf/T, reac_volume)
|
||||
if(isplatingturf(T) || istype(T, /turf/open/floor/plasteel))
|
||||
var/turf/open/floor/F = T
|
||||
F.PlaceOnTop(/turf/open/floor/carpet/gato)
|
||||
..()
|
||||
|
||||
|
||||
|
||||
/datum/reagent/carpet/red
|
||||
name = "Liquid Red Carpet"
|
||||
color = "#871515"
|
||||
|
||||
@@ -696,6 +696,13 @@
|
||||
results = list(/datum/reagent/carpet/purple = 2)
|
||||
required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/stable_plasma = 1)
|
||||
|
||||
/datum/chemical_reaction/carpet/purple //GS13
|
||||
name = "liquid gato carpet"
|
||||
id = /datum/reagent/carpet/gato
|
||||
results = list(/datum/reagent/carpet/gato = 2)
|
||||
required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/consumable/sugar = 1)
|
||||
|
||||
|
||||
/datum/chemical_reaction/carpet/red
|
||||
name = "liquid red carpet"
|
||||
id = /datum/reagent/carpet/red
|
||||
@@ -728,4 +735,4 @@
|
||||
results = list(/datum/reagent/hellwater = 1)
|
||||
required_reagents = list(/datum/reagent/water/holywater = 1)
|
||||
required_temp = 666
|
||||
mob_react = FALSE
|
||||
mob_react = FALSE
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
//////// feeder den, GS13
|
||||
|
||||
/obj/item/paper/fluff/ruins/feeder_den/hidden
|
||||
name = "hastily scribbled note"
|
||||
info = "It took so long for me to make this hideout, but it might all be in vain. In the short breaks when I'm not observed, I'm trying to fix this radio I managed to sneak by... but judging by how I can barely squeeze my ass past this stupid hole less and less each day, I might not fix it in time..."
|
||||
|
||||
/obj/item/paper/fluff/ruins/feeder_den/report1
|
||||
name = "Captive report No 1"
|
||||
info = "We've managed to obtain two captives - one woman, and one lizard. They seem promising so far... already quite chunky and eager to scarf down whatever we give them. It might be even easier to turn them into proper beds once we're past the chemical treatment."
|
||||
|
||||
/obj/item/paper/fluff/ruins/feeder_den/report2
|
||||
name = "Captive report No 2"
|
||||
info = "The woman seems to be showing great progress, we'll be moving her into the larger cell soon. The lizard guy is still a bit reluctant about eating himself into immobility... but no matter, we'll just double his portions. Perhaps a painfully overstuffed stomach will change his mind."
|
||||
|
||||
/obj/item/paper/fluff/ruins/feeder_den/report3
|
||||
name = "Captive report No 3"
|
||||
info = "We've captured another one! A curious space explorer, snooping near our entrance. Fierce bastard, even managed to cut my arm open! A short treatment of a room full of lipoifier smoke ensured that they won't be able to fit back into their hardsuit."
|
||||
|
||||
/obj/item/paper/fluff/ruins/feeder_den/report4
|
||||
name = "Captive report No 4"
|
||||
info = "(the page seems to be full of food stains, making the writing unreadable.)"
|
||||
@@ -8,6 +8,7 @@
|
||||
vend_reply = "Thank you for using the ClothesMate!"
|
||||
products = list(/obj/item/clothing/head/that = 4,
|
||||
/obj/item/clothing/head/fedora = 3,
|
||||
/obj/item/clothing/suit/jacket/letterman_gato = 5,
|
||||
/obj/item/clothing/glasses/monocle = 3,
|
||||
/obj/item/clothing/suit/jacket = 4,
|
||||
/obj/item/clothing/suit/jacket/flannel = 4,
|
||||
|
||||
Reference in New Issue
Block a user