mirror of
https://github.com/KabKebab/GS13.git
synced 2026-07-17 10:58:19 +01:00
Merge branch 'origin/HEAD'
This commit is contained in:
@@ -69,9 +69,10 @@
|
||||
#define MAT_PLASMA "$plasma"
|
||||
#define MAT_BLUESPACE "$bluespace"
|
||||
#define MAT_BANANIUM "$bananium"
|
||||
#define MAT_CALORITE "$calorite" //GS13
|
||||
#define MAT_TITANIUM "$titanium"
|
||||
#define MAT_BIOMASS "$biomass"
|
||||
#define MAT_PLASTIC "$plastic"
|
||||
#define MAT_PLASTIC "$plastic"
|
||||
//The amount of materials you get from a sheet of mineral like iron/diamond/glass etc
|
||||
#define MINERAL_MATERIAL_AMOUNT 2000
|
||||
//The maximum size of a stack object.
|
||||
|
||||
@@ -66,10 +66,19 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s
|
||||
//IT DOESN'T OK, IT MEANS "UNDER"
|
||||
#define UNDER_SUIT_LAYER (SUIT_LAYER+1)
|
||||
#define UNDER_HEAD_LAYER (HEAD_LAYER+1)
|
||||
#define UNDER_GENITALS_FRONT_LAYER (GENITALS_FRONT_LAYER+1)
|
||||
#define UNDER_HAIR_LAYER (HAIR_LAYER+1)
|
||||
#define UNDER_BACK_LAYER (BACK_LAYER+1)
|
||||
#define UNDER1_BACK_LAYER (BACK_LAYER+2)
|
||||
|
||||
|
||||
//AND -1 MEANS "ABOVE", OK?, OK!?!
|
||||
#define ABOVE_SHOES_LAYER (SHOES_LAYER-1)
|
||||
#define ABOVE_NECK_LAYER (NECK_LAYER-1)
|
||||
#define ABOVE_GENITALS_FRONT_LAYER (GENITALS_FRONT_LAYER-1)
|
||||
#define ABOVE2_GENITALS_FRONT_LAYER (GENITALS_FRONT_LAYER-2)
|
||||
#define ABOVE_BODY_FRONT_LAYER (BODY_FRONT_LAYER-1)
|
||||
#define ABOVE_FIRE_LAYER (FIRE_LAYER-1)
|
||||
|
||||
|
||||
//Security levels
|
||||
|
||||
@@ -158,10 +158,14 @@
|
||||
|
||||
//Fatness levels, Here we go!
|
||||
#define FATNESS_LEVEL_BLOB 3440
|
||||
#define FATNESS_LEVEL_IMMOBILE 1840
|
||||
#define FATNESS_LEVEL_MORBIDLY_OBESE 1240
|
||||
#define FATNESS_LEVEL_IMMOBILE 2540
|
||||
#define FATNESS_LEVEL_BARELYMOBILE 1840
|
||||
#define FATNESS_LEVEL_EXTREMELY_OBESE 1240
|
||||
#define FATNESS_LEVEL_MORBIDLY_OBESE 840
|
||||
#define FATNESS_LEVEL_OBESE 440
|
||||
#define FATNESS_LEVEL_FAT 200
|
||||
#define FATNESS_LEVEL_VERYFAT 330
|
||||
#define FATNESS_LEVEL_FATTER 250
|
||||
#define FATNESS_LEVEL_FAT 170
|
||||
|
||||
//Nutrition levels for humans
|
||||
#define NUTRITION_LEVEL_FULL 550
|
||||
|
||||
@@ -64,8 +64,12 @@
|
||||
#define TRAIT_DEAF "deaf"
|
||||
#define TRAIT_NEARSIGHT "nearsighted"
|
||||
#define TRAIT_FAT "fat"
|
||||
#define TRAIT_FATTER "fatter"
|
||||
#define TRAIT_VERYFAT "veryfat"
|
||||
#define TRAIT_OBESE "obese"
|
||||
#define TRAIT_MORBIDLYOBESE "morbildyobese"
|
||||
#define TRAIT_EXTREMELYOBESE "extremelyobese"
|
||||
#define TRAIT_BARELYMOBILE "barelymobile"
|
||||
#define TRAIT_IMMOBILE "immobile"
|
||||
#define TRAIT_BLOB "blobweight"
|
||||
#define TRAIT_HUSK "husk"
|
||||
|
||||
@@ -381,6 +381,12 @@
|
||||
sheet_type = /obj/item/stack/sheet/mineral/bananium
|
||||
coin_type = /obj/item/coin/bananium
|
||||
|
||||
/datum/material/calorite //GS13
|
||||
name = "calorite"
|
||||
id = MAT_CALORITE
|
||||
sheet_type = /obj/item/stack/sheet/mineral/calorite
|
||||
// coin_type = /obj/item/coin/calorite
|
||||
|
||||
/datum/material/titanium
|
||||
name = "Titanium"
|
||||
id = MAT_TITANIUM
|
||||
|
||||
@@ -54,7 +54,7 @@ handles linking back and forth.
|
||||
/datum/component/remote_materials/proc/_MakeLocal()
|
||||
silo = null
|
||||
mat_container = parent.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),
|
||||
local_size,
|
||||
FALSE,
|
||||
/obj/item/stack)
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
/datum/reagent/medicine/haloperidol, /datum/reagent/drug/aranesp, /datum/reagent/medicine/diphenhydramine
|
||||
),
|
||||
list( //level 11
|
||||
/datum/reagent/medicine/modafinil, /datum/reagent/medicine/bicaridine
|
||||
/datum/reagent/medicine/modafinil, /datum/reagent/drug/krokodil
|
||||
)
|
||||
)
|
||||
|
||||
@@ -243,7 +243,14 @@
|
||||
else
|
||||
visibility_flags &= ~HIDDEN_SCANNER
|
||||
|
||||
SetSpread(CLAMP(2 ** (properties["transmittable"] - symptoms.len), DISEASE_SPREAD_BLOOD, DISEASE_SPREAD_AIRBORNE))
|
||||
if(properties["transmittable"]>=11)
|
||||
SetSpread(DISEASE_SPREAD_AIRBORNE)
|
||||
else if(properties["transmittable"]>=7)
|
||||
SetSpread(DISEASE_SPREAD_CONTACT_SKIN)
|
||||
else if(properties["transmittable"]>=3)
|
||||
SetSpread(DISEASE_SPREAD_CONTACT_FLUIDS)
|
||||
else
|
||||
SetSpread(DISEASE_SPREAD_BLOOD)
|
||||
|
||||
permeability_mod = max(CEILING(0.4 * properties["transmittable"], 1), 1)
|
||||
cure_chance = 15 - CLAMP(properties["resistance"], -5, 5) // can be between 10 and 20
|
||||
@@ -419,7 +426,7 @@
|
||||
|
||||
// Should be only 1 entry left, but if not let's only return a single entry
|
||||
var/datum/disease/advance/to_return = pick(diseases)
|
||||
to_return.Refresh(1)
|
||||
to_return.Refresh(TRUE)
|
||||
return to_return
|
||||
|
||||
/proc/SetViruses(datum/reagent/R, list/data)
|
||||
@@ -455,7 +462,8 @@
|
||||
else if(ispath(symptom))
|
||||
var/datum/symptom/S = new symptom
|
||||
if(!D.HasSymptom(S))
|
||||
D.symptoms += S
|
||||
D.symptoms += S //We manually add to avoid the randomness
|
||||
S.OnAdd(D) //Second step of adding a symptom
|
||||
i -= 1
|
||||
while(i > 0)
|
||||
|
||||
|
||||
@@ -36,7 +36,8 @@
|
||||
var/datum/symptom/chosen_symptom = pick_n_take(possible_symptoms)
|
||||
if(chosen_symptom)
|
||||
var/datum/symptom/S = new chosen_symptom
|
||||
symptoms += S
|
||||
symptoms += S //Avoiding the randomness
|
||||
S.OnAdd(src) //Activating symptoms added
|
||||
|
||||
name = "Sample #[rand(1,10000)]"
|
||||
..()
|
||||
..()
|
||||
|
||||
@@ -31,3 +31,19 @@
|
||||
|
||||
/datum/symptom/inorganic_adaptation/OnRemove(datum/disease/advance/A)
|
||||
A.infectable_biotypes &= ~MOB_INORGANIC
|
||||
|
||||
/datum/symptom/robotic_adaptation //GS13
|
||||
name = "Electronic propagation"
|
||||
desc = "The virus learns to feed off and utilize electric signals to create computer virus copies of itself, allowing it to work inside of robotic hosts. Any reports stating the virus have tiny programmer socks attached to their cell's membranes are not scientifically accurate and false."
|
||||
stealth = 1
|
||||
resistance = -1
|
||||
stage_speed = 3
|
||||
transmittable = 0
|
||||
level = 5
|
||||
severity = 0
|
||||
|
||||
/datum/symptom/robotic_adaptation/OnAdd(datum/disease/advance/A)
|
||||
A.infectable_biotypes |= MOB_ROBOTIC
|
||||
|
||||
/datum/symptom/robotic_adaptation/OnRemove(datum/disease/advance/A)
|
||||
A.infectable_biotypes &= ~MOB_ROBOTIC
|
||||
|
||||
@@ -138,6 +138,7 @@
|
||||
always_place = TRUE
|
||||
allow_duplicates = FALSE
|
||||
|
||||
|
||||
/datum/map_template/ruin/lavaland/blood_drunk_miner
|
||||
name = "Blood-Drunk Miner"
|
||||
id = "blooddrunk"
|
||||
@@ -255,3 +256,11 @@
|
||||
suffix = "lavaland_surface_cozy_cabin.dmm"
|
||||
allow_duplicates = FALSE
|
||||
cost = 0
|
||||
|
||||
/datum/map_template/ruin/lavaland/snack_store //GS13
|
||||
name = "Snack Store"
|
||||
id = "snackstore"
|
||||
description = "All your dreams about spending a night in a snack store finally came true! Though judging by your situation, you might spend a bit longer than just one night here..."
|
||||
suffix = "lavaland_surface_snack_store.dmm"
|
||||
allow_duplicates = FALSE
|
||||
cost = 0
|
||||
|
||||
@@ -318,3 +318,15 @@
|
||||
suffix = "wizardden.dmm"
|
||||
name = "Wizards Cabin"
|
||||
description = "The wooden cabin of a wizard in space, it smells like mana in there."
|
||||
|
||||
/datum/map_template/ruin/space/feeders_den //GS13
|
||||
id = "feeders_den"
|
||||
suffix = "feeders_den.dmm"
|
||||
name = "Feeder Den"
|
||||
description = "What used to be a small Syndicate prison and interrogration facility has been taken over by a degenerate madman and turned into a den fit for one purpose - to fatten up its captives."
|
||||
|
||||
/datum/map_template/ruin/space/fastfood //GS13
|
||||
id = "fastfood"
|
||||
suffix = "fastfood.dmm"
|
||||
name = "Fast Food Restaurant"
|
||||
description = "In GATO controlled space, it isn't uncommon to find various space restaurants, famous for the abundance of corn oil in their foods."
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//GS13 EDIT
|
||||
/*
|
||||
/datum/weather/ash_storm/layenia //because fuck writing my own code
|
||||
name = "Layenia Weather"
|
||||
desc = "A subset of weather affecting Layenia"
|
||||
@@ -25,6 +27,8 @@
|
||||
|
||||
aesthetic = TRUE
|
||||
|
||||
*/
|
||||
|
||||
//datum/weather/layenia/telegraph()
|
||||
|
||||
//datum/weather/layenia/start()
|
||||
|
||||
@@ -1,65 +1,69 @@
|
||||
//Radiation storms occur when the station passes through an irradiated area, and irradiate anyone not standing in protected areas (maintenance, emergency storage, etc.)
|
||||
/datum/weather/rad_storm
|
||||
name = "radiation storm"
|
||||
desc = "A cloud of intense radiation passes through the area dealing rad damage to those who are unprotected."
|
||||
// //Radiation storms occur when the station passes through an irradiated area, and irradiate anyone not standing in protected areas (maintenance, emergency storage, etc.)
|
||||
// /datum/weather/rad_storm
|
||||
// name = "radiation storm"
|
||||
// desc = "A cloud of intense radiation passes through the area dealing rad damage to those who are unprotected."
|
||||
|
||||
telegraph_duration = 400
|
||||
telegraph_message = "<span class='danger'>The air begins to grow warm.</span>"
|
||||
// telegraph_duration = 400
|
||||
// telegraph_message = "<span class='danger'>The air begins to grow warm.</span>"
|
||||
|
||||
weather_message = "<span class='userdanger'><i>You feel waves of heat wash over you! Find shelter!</i></span>"
|
||||
weather_overlay = "ash_storm"
|
||||
weather_duration_lower = 600
|
||||
weather_duration_upper = 1500
|
||||
weather_color = "green"
|
||||
weather_sound = 'sound/misc/bloblarm.ogg'
|
||||
// weather_message = "<span class='userdanger'><i>You feel waves of heat wash over you! Find shelter!</i></span>"
|
||||
// weather_overlay = "ash_storm"
|
||||
// weather_duration_lower = 600
|
||||
// weather_duration_upper = 1500
|
||||
// weather_color = "green"
|
||||
// weather_sound = 'sound/misc/bloblarm.ogg'
|
||||
|
||||
end_duration = 100
|
||||
end_message = "<span class='notice'>The air seems to be cooling off again.</span>"
|
||||
// end_duration = 100
|
||||
// end_message = "<span class='notice'>The air seems to be cooling off again.</span>"
|
||||
|
||||
area_type = /area
|
||||
protected_areas = list(/area/maintenance, /area/ai_monitored/turret_protected/ai_upload, /area/ai_monitored/turret_protected/ai_upload_foyer,
|
||||
/area/ai_monitored/turret_protected/ai, /area/storage/emergency/starboard, /area/storage/emergency/port, /area/shuttle, /area/survivalpod, /area/crew_quarters/dorms, /area/security/prison, /area/ruin, /area/space/nearstation)
|
||||
target_trait = ZTRAIT_STATION
|
||||
// area_type = /area
|
||||
// protected_areas = list(/area/maintenance, /area/ai_monitored/turret_protected/ai_upload, /area/ai_monitored/turret_protected/ai_upload_foyer,
|
||||
// /area/ai_monitored/turret_protected/ai, /area/storage/emergency/starboard, /area/storage/emergency/port, /area/shuttle, /area/survivalpod, /area/crew_quarters/dorms, /area/security/prison, /area/ruin, /area/space/nearstation)
|
||||
// target_trait = ZTRAIT_STATION
|
||||
|
||||
immunity_type = "rad"
|
||||
// immunity_type = "rad"
|
||||
|
||||
/datum/weather/rad_storm/telegraph()
|
||||
..()
|
||||
status_alarm(TRUE)
|
||||
// /datum/weather/rad_storm/telegraph()
|
||||
// ..()
|
||||
// status_alarm(TRUE)
|
||||
|
||||
/datum/weather/rad_storm/weather_act(mob/living/L)
|
||||
var/resist = L.getarmor(null, "rad")
|
||||
if(prob(40))
|
||||
if(ishuman(L))
|
||||
var/mob/living/carbon/human/H = L
|
||||
if(H.dna && !HAS_TRAIT(H, TRAIT_RADIMMUNE))
|
||||
if(prob(max(0,100-resist)))
|
||||
H.randmuti()
|
||||
if(prob(50))
|
||||
if(prob(90))
|
||||
H.easy_randmut(NEGATIVE+MINOR_NEGATIVE)
|
||||
else
|
||||
H.easy_randmut(POSITIVE)
|
||||
H.domutcheck()
|
||||
L.rad_act(20)
|
||||
// /datum/weather/rad_storm/weather_act(mob/living/L)
|
||||
// var/resist = L.getarmor(null, "rad")
|
||||
// if(prob(40))
|
||||
// if(ishuman(L))
|
||||
// var/mob/living/carbon/human/H = L
|
||||
// if(H.dna && !HAS_TRAIT(H, TRAIT_RADIMMUNE))
|
||||
// if(prob(max(0,100-resist)))
|
||||
// H.randmuti()
|
||||
// if(prob(50))
|
||||
// if(prob(90))
|
||||
// H.easy_randmut(NEGATIVE+MINOR_NEGATIVE)
|
||||
// else
|
||||
// H.easy_randmut(POSITIVE)
|
||||
// H.domutcheck()
|
||||
// L.rad_act(20)
|
||||
|
||||
/datum/weather/rad_storm/end()
|
||||
if(..())
|
||||
return
|
||||
priority_announce("The radiation threat has passed. Please return to your workplaces.", "Anomaly Alert")
|
||||
status_alarm(FALSE)
|
||||
// /datum/weather/rad_storm/end()
|
||||
// if(..())
|
||||
// return
|
||||
// priority_announce("The radiation threat has passed. Please return to your workplaces.", "Anomaly Alert")
|
||||
// status_alarm(FALSE)
|
||||
|
||||
/datum/weather/rad_storm/proc/status_alarm(active) //Makes the status displays show the radiation warning for those who missed the announcement.
|
||||
var/datum/radio_frequency/frequency = SSradio.return_frequency(FREQ_STATUS_DISPLAYS)
|
||||
if(!frequency)
|
||||
return
|
||||
// /datum/weather/rad_storm/proc/status_alarm(active) //Makes the status displays show the radiation warning for those who missed the announcement.
|
||||
// var/datum/radio_frequency/frequency = SSradio.return_frequency(FREQ_STATUS_DISPLAYS)
|
||||
// if(!frequency)
|
||||
// return
|
||||
|
||||
var/datum/signal/signal = new
|
||||
if (active)
|
||||
signal.data["command"] = "alert"
|
||||
signal.data["picture_state"] = "radiation"
|
||||
else
|
||||
signal.data["command"] = "shuttle"
|
||||
// var/datum/signal/signal = new
|
||||
// if (active)
|
||||
// signal.data["command"] = "alert"
|
||||
// signal.data["picture_state"] = "radiation"
|
||||
// else
|
||||
// signal.data["command"] = "shuttle"
|
||||
|
||||
var/atom/movable/virtualspeaker/virt = new(null)
|
||||
frequency.post_signal(virt, signal)
|
||||
// var/atom/movable/virtualspeaker/virt = new(null)
|
||||
// frequency.post_signal(virt, signal)
|
||||
|
||||
|
||||
|
||||
// GS13 tweak: Removed radstorms due to how disruptive they were to QoL and RP quality - Sono
|
||||
|
||||
@@ -112,13 +112,13 @@
|
||||
required_enemies = list(3,3,2,2,2,1,1,1,1,0)
|
||||
weight = 3
|
||||
cost = 0
|
||||
earliest_start = 50 MINUTES
|
||||
earliest_start = 120 MINUTES
|
||||
blocking_rules = list(/datum/dynamic_ruleset/roundstart/nuclear,/datum/dynamic_ruleset/midround/from_ghosts/nuclear)
|
||||
requirements = list(101,30,25,20,20,20,15,10,10,10)
|
||||
//property_weights = list("story_potential" = 1, "trust" = 1, "chaos" = 1)
|
||||
high_population_requirement = 15
|
||||
occurances_max = 1
|
||||
chaos_min = 2.0
|
||||
chaos_min = 3.0
|
||||
map_blacklist = list("LayeniaStation.dmm")
|
||||
|
||||
/datum/dynamic_ruleset/event/pirates/ready(forced = FALSE)
|
||||
@@ -143,9 +143,9 @@
|
||||
requirements = list(101,20,15,10,10,10,10,10,10,10)
|
||||
high_population_requirement = 15
|
||||
//property_weights = list("chaos" = 1, "valid" = 1)
|
||||
earliest_start = 30 MINUTES //Skyrat change.
|
||||
earliest_start = 40 MINUTES //Skyrat change.
|
||||
occurances_max = 2
|
||||
chaos_min = 1.5
|
||||
chaos_min = 2.0
|
||||
|
||||
//////////////////////////////////////////////
|
||||
// //
|
||||
@@ -162,9 +162,9 @@
|
||||
cost = 5
|
||||
requirements = list(101,20,15,10,10,10,10,10,10,10)
|
||||
high_population_requirement = 15
|
||||
earliest_start = 30 MINUTES
|
||||
earliest_start = 60 MINUTES
|
||||
occurances_max = 2
|
||||
chaos_min = 2
|
||||
chaos_min = 2.5
|
||||
|
||||
//////////////////////////////////////////////
|
||||
// //
|
||||
@@ -186,7 +186,7 @@
|
||||
repeatable = TRUE
|
||||
//property_weights = list("chaos" = 1, "extended" = 2)
|
||||
occurances_max = 2
|
||||
chaos_min = 1.2
|
||||
chaos_min = 1.5
|
||||
|
||||
/datum/dynamic_ruleset/event/ventclog/ready()
|
||||
if(mode.threat_level > 30 && mode.threat >= 5 && prob(20))
|
||||
@@ -194,13 +194,13 @@
|
||||
cost = 8
|
||||
required_enemies = list(3,3,3,2,2,2,1,1,0,0)
|
||||
typepath = /datum/round_event/vent_clog/threatening
|
||||
chaos_min = 1.5
|
||||
chaos_min = 1.7
|
||||
else if(mode.threat_level > 15 && mode.threat > 15 && prob(30))
|
||||
name = "Clogged Vents: Catastrophic"
|
||||
cost = 15
|
||||
required_enemies = list(4,4,4,3,3,3,2,1,1,1)
|
||||
typepath = /datum/round_event/vent_clog/catastrophic
|
||||
chaos_min = 1.8
|
||||
chaos_min = 2.0
|
||||
else
|
||||
cost = 0
|
||||
name = "Clogged Vents: Normal"
|
||||
@@ -297,7 +297,7 @@
|
||||
repeatable = TRUE
|
||||
//property_weights = list("extended" = 1)
|
||||
occurances_max = 2
|
||||
chaos_min = 1.2
|
||||
chaos_min = 1.5
|
||||
|
||||
/datum/dynamic_ruleset/event/anomaly_flux
|
||||
name = "Anomaly: Hyper-Energetic Flux"
|
||||
@@ -314,7 +314,7 @@
|
||||
repeatable = TRUE
|
||||
//property_weights = list("extended" = 1)
|
||||
occurances_max = 2
|
||||
chaos_min = 1.0
|
||||
chaos_min = 1.5
|
||||
|
||||
/datum/dynamic_ruleset/event/anomaly_gravitational
|
||||
name = "Anomaly: Gravitational"
|
||||
@@ -345,7 +345,7 @@
|
||||
repeatable = TRUE
|
||||
//property_weights = list("extended" = 1)
|
||||
occurances_max = 2
|
||||
chaos_min = 1.5
|
||||
chaos_min = 1.8
|
||||
|
||||
/datum/dynamic_ruleset/event/anomaly_vortex
|
||||
name = "Anomaly: Vortex"
|
||||
@@ -362,7 +362,7 @@
|
||||
repeatable = TRUE
|
||||
//property_weights = list("extended" = 1)
|
||||
occurances_max = 1
|
||||
chaos_min = 1.5
|
||||
chaos_min = 1.8
|
||||
|
||||
//////////////////////////////////////////////
|
||||
// //
|
||||
@@ -376,10 +376,10 @@
|
||||
typepath = /datum/round_event/ghost_role/operative
|
||||
required_enemies = list(0,0,0,0,0,0,0,0,0,0)
|
||||
weight = 0 //This is changed in nuclearbomb.dm
|
||||
occurances_max = 0 //Turned off. For now.
|
||||
occurances_max = 3
|
||||
requirements = list(10,10,10,10,10,10,10,10,10,10) //SECURE THAT DISK
|
||||
cost = 50
|
||||
chaos_min = 3
|
||||
chaos_min = 4
|
||||
map_blacklist = list("LayeniaStation.dmm")
|
||||
|
||||
/datum/dynamic_ruleset/event/operative/get_weight()
|
||||
@@ -436,7 +436,7 @@
|
||||
name = "Communications Blackout"
|
||||
//config_tag = "communications_blackout"
|
||||
typepath = /datum/round_event/communications_blackout
|
||||
cost = 2
|
||||
cost = 3
|
||||
weight = 10
|
||||
repeatable_weight_decrease = 2
|
||||
enemy_roles = list("Chief Engineer","Station Engineer")
|
||||
@@ -453,7 +453,7 @@
|
||||
typepath = /datum/round_event/processor_overload
|
||||
cost = 4
|
||||
weight = 2
|
||||
earliest_start = 30 MINUTES
|
||||
earliest_start = 90 MINUTES
|
||||
repeatable_weight_decrease = 3
|
||||
enemy_roles = list("Chief Engineer","Station Engineer")
|
||||
required_enemies = list(2,2,2,2,1,1,1,1,1,1)
|
||||
@@ -462,7 +462,7 @@
|
||||
repeatable = TRUE
|
||||
//property_weights = list("extended" = 1, "chaos" = 1)
|
||||
//always_max_weight = TRUE
|
||||
occurances_max = 2
|
||||
occurances_max = 1
|
||||
|
||||
/datum/dynamic_ruleset/event/space_dust
|
||||
name = "Minor Space Dust"
|
||||
@@ -476,7 +476,7 @@
|
||||
requirements = list(5,5,5,5,5,5,5,0,0,0)
|
||||
high_population_requirement = 5
|
||||
repeatable = TRUE
|
||||
earliest_start = 0 MINUTES
|
||||
earliest_start = 10 MINUTES
|
||||
//property_weights = list("extended" = 1)
|
||||
//always_max_weight = TRUE
|
||||
occurances_max = 0
|
||||
@@ -495,7 +495,7 @@
|
||||
high_population_requirement = 10
|
||||
repeatable = TRUE
|
||||
//property_weights = list("extended" = 1)
|
||||
occurances_max = 3
|
||||
occurances_max = 2
|
||||
map_blacklist = list("LayeniaStation.dmm")
|
||||
|
||||
|
||||
@@ -512,34 +512,34 @@
|
||||
repeatable = TRUE
|
||||
occurances_max = 10
|
||||
|
||||
/datum/dynamic_ruleset/event/heart_attack
|
||||
name = "Random Heart Attack"
|
||||
typepath = /datum/round_event/heart_attack
|
||||
cost = 0
|
||||
weight = 2
|
||||
earliest_start = 30 MINUTES
|
||||
repeatable_weight_decrease = 1
|
||||
enemy_roles = list("Medical Doctor","Chief Medical Officer", "Chemist")
|
||||
required_enemies = list(3,3,2,2,2,2,2,2,2,1)
|
||||
requirements = list(101,101,101,10,5,5,5,5,5,5)
|
||||
high_population_requirement = 5
|
||||
repeatable = TRUE
|
||||
occurances_max = 2
|
||||
chaos_min = 1.0
|
||||
// /datum/dynamic_ruleset/event/heart_attack
|
||||
// name = "Random Heart Attack"
|
||||
// typepath = /datum/round_event/heart_attack
|
||||
// cost = 0
|
||||
// weight = 2
|
||||
// earliest_start = 30 MINUTES
|
||||
// repeatable_weight_decrease = 1
|
||||
// enemy_roles = list("Medical Doctor","Chief Medical Officer", "Chemist")
|
||||
// required_enemies = list(3,3,2,2,2,2,2,2,2,1)
|
||||
// requirements = list(101,101,101,10,5,5,5,5,5,5)
|
||||
// high_population_requirement = 5
|
||||
// repeatable = TRUE
|
||||
// occurances_max = 2
|
||||
// chaos_min = 1.0
|
||||
|
||||
/datum/dynamic_ruleset/event/radiation_storm
|
||||
name = "Radiation Storm"
|
||||
//config_tag = "radiation_storm"
|
||||
typepath = /datum/round_event/radiation_storm
|
||||
cost = 6
|
||||
weight = 1
|
||||
repeatable_weight_decrease = 1
|
||||
enemy_roles = list("Chemist","Chief Medical Officer","Geneticist","Medical Doctor")
|
||||
required_enemies = list(2,2,2,2,1,1,1,1,1,0)
|
||||
requirements = list(5,5,5,5,5,5,5,5,5,5)
|
||||
high_population_requirement = 10
|
||||
//property_weights = list("extended" = 1,"chaos" = 1)
|
||||
occurances_max = 1
|
||||
// /datum/dynamic_ruleset/event/radiation_storm
|
||||
// name = "Radiation Storm"
|
||||
// //config_tag = "radiation_storm"
|
||||
// typepath = /datum/round_event/radiation_storm
|
||||
// cost = 6
|
||||
// weight = 0
|
||||
// repeatable_weight_decrease = 1
|
||||
// enemy_roles = list("Chemist","Chief Medical Officer","Geneticist","Medical Doctor")
|
||||
// required_enemies = list(2,2,2,2,1,1,1,1,1,0)
|
||||
// requirements = list(5,5,5,5,5,5,5,5,5,5)
|
||||
// high_population_requirement = 100
|
||||
// //property_weights = list("extended" = 1,"chaos" = 1)
|
||||
// occurances_max = 0
|
||||
|
||||
|
||||
/datum/dynamic_ruleset/event/portal_storm_syndicate
|
||||
@@ -552,7 +552,7 @@
|
||||
required_enemies = list(2,2,2,2,2,2,2,2,2,2)
|
||||
requirements = list(101,101,40,35,30,30,30,30,25,20)
|
||||
high_population_requirement = 30
|
||||
earliest_start = 40 MINUTES
|
||||
earliest_start = 120 MINUTES
|
||||
//property_weights = list("teamwork" = 1,"chaos" = 1, "extended" = -1)
|
||||
occurances_max = 1
|
||||
chaos_min = 1.5
|
||||
@@ -571,7 +571,7 @@
|
||||
high_population_requirement = 5
|
||||
//property_weights = list("extended" = 1)
|
||||
occurances_max = 2
|
||||
chaos_min = 1.0
|
||||
chaos_min = 1.3
|
||||
map_blacklist = list("LayeniaStation.dmm")
|
||||
|
||||
/datum/dynamic_ruleset/event/swarmers
|
||||
@@ -604,7 +604,7 @@
|
||||
//property_weights = list("story_potential" = 1, "extended" = 1, "valid" = -2)
|
||||
high_population_requirement = 5
|
||||
occurances_max = 1
|
||||
chaos_min = 2
|
||||
chaos_min = 2.5
|
||||
|
||||
/datum/dynamic_ruleset/event/revenant
|
||||
name = "Revenant"
|
||||
@@ -619,7 +619,7 @@
|
||||
high_population_requirement = 15
|
||||
//property_weights = list("story_potential" = -2, "extended" = -1)
|
||||
occurances_max = 1 //Skyrat change.
|
||||
chaos_min = 1.9
|
||||
chaos_min = 2.5
|
||||
|
||||
/datum/dynamic_ruleset/event/immovable_rod
|
||||
name = "Immovable Rod"
|
||||
@@ -633,7 +633,7 @@
|
||||
occurances_max = 2
|
||||
weight = 3
|
||||
repeatable_weight_decrease = 2
|
||||
chaos_min = 1.5
|
||||
chaos_min = 2.5
|
||||
var/atom/special_target
|
||||
map_blacklist = list("LayeniaStation.dmm")
|
||||
|
||||
@@ -649,7 +649,7 @@
|
||||
occurances_max = 2
|
||||
weight = 3
|
||||
repeatable_weight_decrease = 2
|
||||
chaos_min = 1.5
|
||||
chaos_min = 2.0
|
||||
var/atom/special_target
|
||||
map_whitelist = list("LayeniaStation.dmm")
|
||||
|
||||
@@ -686,7 +686,7 @@
|
||||
high_population_requirement = 0
|
||||
weight = 10
|
||||
repeatable = TRUE
|
||||
occurances_max = 3
|
||||
occurances_max = 6
|
||||
|
||||
/datum/dynamic_ruleset/event/bureaucratic_error
|
||||
name = "Bureaucratic Error"
|
||||
@@ -704,7 +704,7 @@
|
||||
weight = 100
|
||||
repeatable_weight_decrease = 1 //Slightly drop the weight each time it is called to keep the pool from getting too diluted as the round goes on.
|
||||
repeatable = TRUE
|
||||
occurances_max = 200 //Our rounds can go for a WHILE
|
||||
occurances_max = 100 //Our rounds can go for a WHILE
|
||||
|
||||
/datum/dynamic_ruleset/event/disease_outbreak
|
||||
name = "Disease Outbreak"
|
||||
@@ -792,7 +792,7 @@
|
||||
weight = 5
|
||||
repeatable_weight_decrease = 3
|
||||
repeatable = TRUE
|
||||
occurances_max = 2
|
||||
occurances_max = 4
|
||||
|
||||
/datum/dynamic_ruleset/event/spacevine
|
||||
name = "Spacevine"
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
var/item_recycle_sound = 'sound/items/welder.ogg'
|
||||
|
||||
/obj/machinery/recycler/Initialize()
|
||||
AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_PLASMA, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE, MAT_PLASTIC), INFINITY, FALSE, null, null, null, TRUE)
|
||||
AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_PLASMA, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_URANIUM, MAT_BANANIUM, MAT_CALORITE, MAT_TITANIUM, MAT_BLUESPACE, MAT_PLASTIC), INFINITY, FALSE, null, null, null, TRUE)
|
||||
AddComponent(/datum/component/butchering, 1, amount_produced,amount_produced/5)
|
||||
. = ..()
|
||||
update_icon()
|
||||
|
||||
@@ -408,11 +408,6 @@
|
||||
desc = "A poster advertising a movie about some masked men."
|
||||
icon_state = "poster44"
|
||||
|
||||
/obj/structure/sign/poster/contraband/corn_oil //GS13
|
||||
name = "Corn Oil"
|
||||
desc = "A strange poster advertising corn oil beverage. Who would want to drink that...?"
|
||||
icon_state = "poster45"
|
||||
|
||||
/obj/structure/sign/poster/official
|
||||
poster_item_name = "motivational poster"
|
||||
poster_item_desc = "An official Nanotrasen-issued poster to foster a compliant and obedient workforce. It comes with state-of-the-art adhesive backing, for easy pinning to any vertical surface."
|
||||
@@ -429,11 +424,6 @@
|
||||
desc = "A poster glorifying the station's security force."
|
||||
icon_state = "poster1_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/gato_logo
|
||||
name = "GATO Logo"
|
||||
desc = "A poster of our glorious GATO Corp!"
|
||||
icon_state = "poster2_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/cleanliness
|
||||
name = "Cleanliness"
|
||||
desc = "A poster warning of the dangers of poor hygiene."
|
||||
@@ -621,7 +611,39 @@
|
||||
desc = "A poster motivating you in reading books, reading this is already giving you a headache."
|
||||
icon_state = "libraryposter"
|
||||
|
||||
/obj/structure/sign/poster/official/gato_logo
|
||||
name = "GATO Logo"
|
||||
desc = "A poster of our glorious GATO Corp!"
|
||||
icon_state = "poster2_legit"
|
||||
|
||||
/obj/structure/sign/poster/contraband/corn_oil
|
||||
name = "Corn Oil Poster"
|
||||
desc = "A strange poster advertising corn oil beverage. Who would want to drink that...?"
|
||||
icon_state = "poster45"
|
||||
|
||||
/obj/structure/sign/poster/contraband/supermatter
|
||||
name = "Supermatter Warning Poster"
|
||||
desc = "In case it wasn't already obvious, you shouldn't poke this giant yellow crystal..."
|
||||
icon_state = "poster46"
|
||||
|
||||
/obj/structure/sign/poster/contraband/chonk
|
||||
name = "CHONK POSTER"
|
||||
desc = "Next time eat a salad."
|
||||
icon_state = "poster47"
|
||||
|
||||
/obj/structure/sign/poster/contraband/missingpizza
|
||||
name = "Missing Pizza Poster"
|
||||
desc = "On GS13, it isn't uncommon to lose your food whenever you look away..."
|
||||
icon_state = "poster48"
|
||||
|
||||
/obj/structure/sign/poster/contraband/chefpropaganda
|
||||
name = "Chef Propaganda Poster"
|
||||
desc = "Enlist and learn how to cook nothing else but burgers, pizza and bread TODAY!"
|
||||
icon_state = "poster49"
|
||||
|
||||
/obj/structure/sign/poster/contraband/malta
|
||||
name = "Malta Poster"
|
||||
desc = "A poster from terran sectors, suggesting non-existence of mythical country of Malta."
|
||||
icon_state = "poster50"
|
||||
|
||||
#undef PLACE_SPEED
|
||||
|
||||
@@ -278,6 +278,32 @@ GLOBAL_LIST_INIT(bananium_recipes, list ( \
|
||||
recipes = GLOB.bananium_recipes
|
||||
. = ..()
|
||||
|
||||
|
||||
/*
|
||||
* calorite - GS13
|
||||
*/
|
||||
/obj/item/stack/sheet/mineral/calorite
|
||||
name = "calorite"
|
||||
icon_state = "sheet-calorite"
|
||||
item_state = "sheet-calorite"
|
||||
singular_name = "calorite sheet"
|
||||
sheettype = "calorite"
|
||||
materials = list(MAT_CALORITE=MINERAL_MATERIAL_AMOUNT)
|
||||
novariants = TRUE
|
||||
grind_results = list(/datum/reagent/consumable/lipoifier = 10)
|
||||
point_value = 40
|
||||
merge_type = /obj/item/stack/sheet/mineral/calorite
|
||||
|
||||
GLOBAL_LIST_INIT(calorite_recipes, list ( \
|
||||
new/datum/stack_recipe("calorite tile", /obj/item/stack/tile/mineral/calorite, 1, 4, 20), \
|
||||
new/datum/stack_recipe("Fatty Statue", /obj/structure/statue/calorite/fatty, 5, one_per_turf = 1, on_floor = 1),
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/mineral/calorite/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = GLOB.calorite_recipes
|
||||
. = ..()
|
||||
|
||||
|
||||
/*
|
||||
* Titanium
|
||||
*/
|
||||
@@ -447,4 +473,4 @@ GLOBAL_LIST_INIT(abductor_recipes, list ( \
|
||||
amount = 5
|
||||
|
||||
/obj/item/stack/sheet/mineral/coal/ten
|
||||
amount = 10
|
||||
amount = 10
|
||||
|
||||
@@ -52,6 +52,30 @@
|
||||
mineralType = "bananium"
|
||||
materials = list(MAT_BANANIUM=500)
|
||||
|
||||
/obj/item/stack/tile/mineral/calorite //GS13
|
||||
name = "Calorite tile"
|
||||
singular_name = "Calorite floor tile"
|
||||
desc = "A tile made out of calorite. Bwoomph."
|
||||
icon_state = "tile_calorite"
|
||||
turf_type = /turf/open/floor/mineral/calorite
|
||||
mineralType = "calorite"
|
||||
materials = list(MAT_CALORITE=500)
|
||||
|
||||
/obj/item/stack/tile/mineral/calorite/hide //GS13 - disguised variant
|
||||
name = "Floor tile"
|
||||
singular_name = "calorite floor tile"
|
||||
desc = "A tile totally made out of steel."
|
||||
icon_state = "tile"
|
||||
turf_type = /turf/open/floor/mineral/calorite/hide
|
||||
|
||||
/obj/item/stack/tile/mineral/calorite/strong //GS13 - strong variant
|
||||
name = "Infused calorite tile"
|
||||
singular_name = "Infused calorite floor tile"
|
||||
desc = "A tile made out of stronger variant of calorite. Bwuurp."
|
||||
icon_state = "tile_calorite_strong"
|
||||
turf_type = /turf/open/floor/mineral/calorite/strong
|
||||
|
||||
|
||||
/obj/item/stack/tile/mineral/abductor
|
||||
name = "alien floor tile"
|
||||
singular_name = "alien floor tile"
|
||||
@@ -104,4 +128,4 @@
|
||||
icon_state = "tile_basaltstone"
|
||||
turf_type = /turf/open/floor/mineral/basaltstone_floor
|
||||
mineralType = "sandstone"
|
||||
materials = list(MAT_SANDSTONE=500)
|
||||
materials = list(MAT_SANDSTONE=500)
|
||||
|
||||
@@ -177,6 +177,11 @@
|
||||
turf_type = /turf/open/floor/carpet/monochrome
|
||||
tableVariant = /obj/structure/table/wood/fancy/monochrome
|
||||
|
||||
/obj/item/stack/tile/carpet/gato //GS13
|
||||
name = "gato-themed carpet"
|
||||
icon_state = "tile-carpet-gato"
|
||||
turf_type = /turf/open/floor/carpet/gato
|
||||
|
||||
/obj/item/stack/tile/carpet/fifty
|
||||
amount = 50
|
||||
|
||||
@@ -213,6 +218,9 @@
|
||||
/obj/item/stack/tile/carpet/royalblue/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/carpet/gato/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/fakespace
|
||||
name = "astral carpet"
|
||||
singular_name = "astral carpet"
|
||||
|
||||
@@ -104,6 +104,7 @@
|
||||
/obj/item/stack/sheet/mineral/uranium,
|
||||
/obj/item/stack/sheet/mineral/diamond,
|
||||
/obj/item/stack/sheet/mineral/bananium,
|
||||
/obj/item/stack/sheet/mineral/calorite,
|
||||
/obj/item/stack/sheet/plasteel,
|
||||
/obj/item/stack/sheet/mineral/titanium,
|
||||
/obj/item/stack/sheet/mineral/plastitanium,
|
||||
|
||||
@@ -216,6 +216,15 @@
|
||||
mineral = "bananium"
|
||||
glass_type = /obj/machinery/door/airlock/bananium/glass
|
||||
|
||||
// /obj/structure/door_assembly/door_assembly_calorite //GS13
|
||||
// name = "calorite airlock assembly"
|
||||
// desc = "Very inviting."
|
||||
// icon = 'icons/obj/doors/airlocks/station/calorite.dmi'
|
||||
// base_name = "calorite airlock"
|
||||
// airlock_type = /obj/machinery/door/airlock/calorite
|
||||
// mineral = "calorite"
|
||||
// glass_type = /obj/machinery/door/airlock/calorite/glass
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_sandstone
|
||||
name = "sandstone airlock assembly"
|
||||
icon = 'icons/obj/doors/airlocks/station/sandstone.dmi'
|
||||
|
||||
@@ -263,6 +263,43 @@
|
||||
walltype = /turf/closed/wall/mineral/bananium
|
||||
canSmoothWith = list(/obj/structure/falsewall/bananium, /turf/closed/wall/mineral/bananium)
|
||||
|
||||
/obj/structure/falsewall/calorite //GS13
|
||||
name = "calorite wall"
|
||||
desc = "A wall with calorite plating. Burp."
|
||||
icon = 'icons/turf/walls/calorite_wall.dmi'
|
||||
icon_state = "calorite"
|
||||
mineral = /obj/item/stack/sheet/mineral/calorite
|
||||
walltype = /turf/closed/wall/mineral/calorite
|
||||
canSmoothWith = list(/obj/structure/falsewall/calorite, /turf/closed/wall/mineral/calorite)
|
||||
var/active = null
|
||||
var/last_event = 0
|
||||
|
||||
/obj/structure/falsewall/calorite/proc/fatten()
|
||||
if(!active)
|
||||
if(world.time > last_event+15)
|
||||
active = 1
|
||||
for(var/mob/living/carbon/human/M in orange(3,src))
|
||||
if(HAS_TRAIT(M, TRAIT_LIPOIFIER_IMMUNE))
|
||||
return
|
||||
else
|
||||
M.fatness = M.fatness + 50
|
||||
last_event = world.time
|
||||
active = null
|
||||
return
|
||||
return
|
||||
|
||||
/obj/structure/falsewall/calorite/Bumped(atom/movable/AM)
|
||||
fatten()
|
||||
..()
|
||||
|
||||
/obj/structure/falsewall/calorite/attackby(obj/item/W, mob/user, params)
|
||||
fatten()
|
||||
return ..()
|
||||
|
||||
/obj/structure/falsewall/calorite/attack_hand(mob/user)
|
||||
fatten()
|
||||
. = ..()
|
||||
|
||||
|
||||
/obj/structure/falsewall/sandstone
|
||||
name = "sandstone wall"
|
||||
|
||||
@@ -318,3 +318,98 @@
|
||||
name = "blueberry statue"
|
||||
desc = "A statue resembling a poor humanoid creature shaped like a ball."
|
||||
icon_state = "blueberry"
|
||||
|
||||
|
||||
//////////////////////////////CALORITE - GS13///////////////////////////////
|
||||
|
||||
/obj/structure/statue/calorite
|
||||
max_integrity = 400
|
||||
material_drop_type = /obj/item/stack/sheet/mineral/calorite
|
||||
|
||||
/obj/structure/statue/calorite/fatty
|
||||
name = "Fatty statue"
|
||||
desc = "A statue of a well-rounded fatso."
|
||||
icon_state = "fatty"
|
||||
var/active = null
|
||||
var/last_event = 0
|
||||
|
||||
/obj/structure/statue/calorite/fatty/proc/beacon()
|
||||
if(!active)
|
||||
if(world.time > last_event+15)
|
||||
active = 1
|
||||
for(var/mob/living/carbon/human/M in orange(3,src))
|
||||
to_chat(M, "<span class='warning'>You feel the statue calling to you, urging you to touch it...</span>")
|
||||
last_event = world.time
|
||||
active = null
|
||||
return
|
||||
return
|
||||
|
||||
/obj/structure/statue/calorite/fatty/Bumped(atom/movable/AM)
|
||||
beacon()
|
||||
..()
|
||||
|
||||
/obj/structure/statue/calorite/fatty/Crossed(var/mob/AM)
|
||||
.=..()
|
||||
if(!.)
|
||||
if(istype(AM))
|
||||
beacon()
|
||||
|
||||
/obj/structure/statue/calorite/fatty/Moved(atom/movable/AM)
|
||||
beacon()
|
||||
..()
|
||||
|
||||
/obj/structure/statue/calorite/fatty/attackby(obj/item/W, mob/living/carbon/M, params)
|
||||
|
||||
if(HAS_TRAIT(M, TRAIT_LIPOIFIER_IMMUNE))
|
||||
to_chat(M, "<span class='warning'>Nothing happens.</span>")
|
||||
else
|
||||
M.fatness = M.fatness + 20
|
||||
if(M.fatness < 200)
|
||||
to_chat(M, "<span class='warning'>The moment your hand meets the statue, you feel a little warmer...</span>")
|
||||
if(HAS_TRAIT(M, TRAIT_FAT))
|
||||
to_chat(M, "<span class='warning'>Upon each poke of the statue, you feel yourself get a little heavier.</span>")
|
||||
if(HAS_TRAIT(M, TRAIT_OBESE))
|
||||
to_chat(M, "<span class='warning'>With each touch you keep getting fatter... But the fatter you grow, the more enticed you feel to poke the statue.</span>")
|
||||
if(HAS_TRAIT(M, TRAIT_MORBIDLYOBESE))
|
||||
to_chat(M, "<span class='warning'>The world around you blurs as you focus on prodding the statue, your waistline widening further...</span>")
|
||||
if(HAS_TRAIT(M, TRAIT_IMMOBILE))
|
||||
to_chat(M, "<span class='warning'>A whispering voice gently compliments your massive body, your own mind begging to touch the statue more.</span>")
|
||||
if(HAS_TRAIT(M, TRAIT_BLOB))
|
||||
to_chat(M, "<span class='warning'>You can barely reach the statue past your floor-covering stomach! And yet, it still calls to you...</span>")
|
||||
|
||||
/obj/structure/statue/calorite/fatty/attack_hand(mob/living/carbon/M)
|
||||
if(HAS_TRAIT(M, TRAIT_LIPOIFIER_IMMUNE))
|
||||
to_chat(M, "<span class='warning'>Nothing happens.</span>")
|
||||
else
|
||||
M.fatness = M.fatness + 20
|
||||
if(M.fatness < 200)
|
||||
to_chat(M, "<span class='warning'>The moment your hand meets the statue, you feel a little warmer...</span>")
|
||||
if(HAS_TRAIT(M, TRAIT_FAT))
|
||||
to_chat(M, "<span class='warning'>Upon each poke of the statue, you feel yourself get a little heavier.</span>")
|
||||
if(HAS_TRAIT(M, TRAIT_OBESE))
|
||||
to_chat(M, "<span class='warning'>With each touch you keep getting fatter... But the fatter you grow, the more enticed you feel to poke the statue.</span>")
|
||||
if(HAS_TRAIT(M, TRAIT_MORBIDLYOBESE))
|
||||
to_chat(M, "<span class='warning'>The world around you blurs as you focus on prodding the statue, your waistline widening further...</span>")
|
||||
if(HAS_TRAIT(M, TRAIT_IMMOBILE))
|
||||
to_chat(M, "<span class='warning'>A whispering voice gently compliments your massive body, your own mind begging to touch the statue more.</span>")
|
||||
if(HAS_TRAIT(M, TRAIT_BLOB))
|
||||
to_chat(M, "<span class='warning'>You can barely reach the statue past your floor-covering stomach! And yet, it still calls to you...</span>")
|
||||
|
||||
/obj/structure/statue/calorite/fatty/attack_paw(mob/living/carbon/M)
|
||||
if(HAS_TRAIT(M, TRAIT_LIPOIFIER_IMMUNE))
|
||||
to_chat(M, "<span class='warning'>Nothing happens.</span>")
|
||||
else
|
||||
M.fatness = M.fatness + 20
|
||||
if(M.fatness < 200)
|
||||
to_chat(M, "<span class='warning'>The moment your hand meets the statue, you feel a little warmer...</span>")
|
||||
if(HAS_TRAIT(M, TRAIT_FAT))
|
||||
to_chat(M, "<span class='warning'>Upon each poke of the statue, you feel yourself get a little heavier.</span>")
|
||||
if(HAS_TRAIT(M, TRAIT_OBESE))
|
||||
to_chat(M, "<span class='warning'>With each touch you keep getting fatter... But the fatter you grow, the more enticed you feel to poke the statue.</span>")
|
||||
if(HAS_TRAIT(M, TRAIT_MORBIDLYOBESE))
|
||||
to_chat(M, "<span class='warning'>The world around you blurs as you focus on prodding the statue, your waistline widening further...</span>")
|
||||
if(HAS_TRAIT(M, TRAIT_IMMOBILE))
|
||||
to_chat(M, "<span class='warning'>A whispering voice gently compliments your massive body, your own mind begging to touch the statue more.</span>")
|
||||
if(HAS_TRAIT(M, TRAIT_BLOB))
|
||||
to_chat(M, "<span class='warning'>You can barely reach the statue past your floor-covering stomach! And yet, it still calls to you...</span>")
|
||||
|
||||
@@ -302,6 +302,11 @@
|
||||
floor_tile = /obj/item/stack/tile/carpet/royalblue
|
||||
canSmoothWith = list(/turf/open/floor/carpet/royalblue)
|
||||
|
||||
/turf/open/floor/carpet/gato //GS13
|
||||
icon = 'icons/turf/floors/carpet_gato.dmi'
|
||||
floor_tile = /obj/item/stack/tile/carpet/gato
|
||||
canSmoothWith = list(/turf/open/floor/carpet/gato)
|
||||
|
||||
/turf/open/floor/carpet/narsie_act(force, ignore_mobs, probability = 20)
|
||||
. = (prob(probability) || force)
|
||||
for(var/I in src)
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
* Silver floor
|
||||
* Bananium floor
|
||||
* Diamond floor
|
||||
* Calorite floor
|
||||
* Uranium floor
|
||||
* Shuttle floor (Titanium)
|
||||
* Sand floors
|
||||
@@ -203,6 +204,41 @@
|
||||
/turf/open/floor/mineral/bananium/airless
|
||||
initial_gas_mix = AIRLESS_ATMOS
|
||||
|
||||
|
||||
//calorite floor - GS13
|
||||
|
||||
/turf/open/floor/mineral/calorite
|
||||
name = "Calorite floor"
|
||||
icon_state = "calorite"
|
||||
floor_tile = /obj/item/stack/tile/mineral/calorite
|
||||
icons = list("calorite","calorite_dam")
|
||||
var/last_event = 0
|
||||
var/active = null
|
||||
///How much fatness is added to the user upon crossing?
|
||||
var/fat_to_add = 50
|
||||
|
||||
/turf/open/floor/mineral/calorite/Entered(mob/living/carbon/M)
|
||||
if(!istype(M, /mob/living/carbon) || HAS_TRAIT(M, TRAIT_LIPOIFIER_IMMUNE))
|
||||
return FALSE
|
||||
else
|
||||
M.fatness = M.fatness + fat_to_add
|
||||
|
||||
// calorite floor, disguised version - GS13
|
||||
|
||||
/turf/open/floor/mineral/calorite/hide
|
||||
name = "Steel floor"
|
||||
icon_state = "calorite_hide"
|
||||
floor_tile = /obj/item/stack/tile/mineral/calorite/hide
|
||||
icons = list("calorite_hide","calorite_hide_dam")
|
||||
|
||||
// calorite floor, powerful version - GS13
|
||||
|
||||
/turf/open/floor/mineral/calorite/strong
|
||||
name = "Infused calorite floor"
|
||||
icon_state = "calorite_strong"
|
||||
floor_tile = /obj/item/stack/tile/mineral/calorite/strong
|
||||
icons = list("calorite_strong","calorite_strong_dam")
|
||||
|
||||
//DIAMOND
|
||||
|
||||
/turf/open/floor/mineral/diamond
|
||||
@@ -290,4 +326,4 @@
|
||||
name = "basalt floor"
|
||||
icon_state = "basaltstone"
|
||||
floor_tile = /obj/item/stack/tile/mineral/basaltstone
|
||||
icons = list("basaltstone","basaltstone_dam")
|
||||
icons = list("basaltstone","basaltstone_dam")
|
||||
|
||||
@@ -133,7 +133,7 @@
|
||||
/turf/closed/mineral/random
|
||||
var/list/mineralSpawnChanceList = list(/turf/closed/mineral/uranium = 5, /turf/closed/mineral/diamond = 1, /turf/closed/mineral/gold = 10,
|
||||
/turf/closed/mineral/silver = 12, /turf/closed/mineral/plasma = 20, /turf/closed/mineral/iron = 40, /turf/closed/mineral/titanium = 11,
|
||||
/turf/closed/mineral/gibtonite = 4, /turf/open/floor/plating/asteroid/airless/cave = 2, /turf/closed/mineral/bscrystal = 1)
|
||||
/turf/closed/mineral/gibtonite = 4, /turf/open/floor/plating/asteroid/airless/cave = 2, /turf/closed/mineral/bscrystal = 1, /turf/closed/mineral/calorite = 1)
|
||||
//Currently, Adamantine won't spawn as it has no uses. -Durandan
|
||||
var/mineralChance = 13
|
||||
var/display_icon_state = "rock"
|
||||
@@ -163,7 +163,7 @@
|
||||
icon_state = "rock_highchance"
|
||||
mineralChance = 25
|
||||
mineralSpawnChanceList = list(
|
||||
/turf/closed/mineral/uranium = 35, /turf/closed/mineral/diamond = 30, /turf/closed/mineral/gold = 45, /turf/closed/mineral/titanium = 45,
|
||||
/turf/closed/mineral/uranium = 35, /turf/closed/mineral/diamond = 30, /turf/closed/mineral/calorite = 30, /turf/closed/mineral/gold = 45, /turf/closed/mineral/titanium = 45,
|
||||
/turf/closed/mineral/silver = 50, /turf/closed/mineral/plasma = 50, /turf/closed/mineral/bscrystal = 20)
|
||||
|
||||
/turf/closed/mineral/random/high_chance/volcanic
|
||||
@@ -184,7 +184,7 @@
|
||||
mineralSpawnChanceList = list(
|
||||
/turf/closed/mineral/uranium = 2, /turf/closed/mineral/diamond = 1, /turf/closed/mineral/gold = 4, /turf/closed/mineral/titanium = 4,
|
||||
/turf/closed/mineral/silver = 6, /turf/closed/mineral/plasma = 15, /turf/closed/mineral/iron = 40,
|
||||
/turf/closed/mineral/gibtonite = 2, /turf/closed/mineral/bscrystal = 1)
|
||||
/turf/closed/mineral/gibtonite = 2, /turf/closed/mineral/bscrystal = 1, /turf/closed/mineral/calorite = 1)
|
||||
|
||||
|
||||
/turf/closed/mineral/random/volcanic
|
||||
@@ -198,7 +198,7 @@
|
||||
mineralSpawnChanceList = list(
|
||||
/turf/closed/mineral/uranium/volcanic = 5, /turf/closed/mineral/diamond/volcanic = 1, /turf/closed/mineral/gold/volcanic = 10, /turf/closed/mineral/titanium/volcanic = 11,
|
||||
/turf/closed/mineral/silver/volcanic = 12, /turf/closed/mineral/plasma/volcanic = 20, /turf/closed/mineral/iron/volcanic = 40,
|
||||
/turf/closed/mineral/gibtonite/volcanic = 4, /turf/open/floor/plating/asteroid/airless/cave/volcanic = 1, /turf/closed/mineral/bscrystal/volcanic = 1)
|
||||
/turf/closed/mineral/gibtonite/volcanic = 4, /turf/open/floor/plating/asteroid/airless/cave/volcanic = 1, /turf/closed/mineral/bscrystal/volcanic = 1, /turf/closed/mineral/calorite = 1)
|
||||
|
||||
|
||||
/turf/closed/mineral/random/labormineral
|
||||
@@ -355,6 +355,12 @@
|
||||
spread = 0
|
||||
scan_state = "rock_Bananium"
|
||||
|
||||
/turf/closed/mineral/calorite //GS13
|
||||
mineralType = /obj/item/stack/ore/calorite
|
||||
mineralAmt = 3
|
||||
spreadChance = 1
|
||||
spread = 0
|
||||
scan_state = "rock_Calorite"
|
||||
|
||||
/turf/closed/mineral/bscrystal
|
||||
mineralType = /obj/item/stack/ore/bluespace_crystal
|
||||
|
||||
@@ -42,6 +42,42 @@
|
||||
sheet_type = /obj/item/stack/sheet/mineral/bananium
|
||||
canSmoothWith = list(/turf/closed/wall/mineral/bananium, /obj/structure/falsewall/bananium)
|
||||
|
||||
/turf/closed/wall/mineral/calorite //GS13
|
||||
name = "calorite wall"
|
||||
desc = "A wall with calorite plating. Burp."
|
||||
icon = 'icons/turf/walls/calorite_wall.dmi'
|
||||
icon_state = "calorite"
|
||||
sheet_type = /obj/item/stack/sheet/mineral/calorite
|
||||
canSmoothWith = list(/turf/closed/wall/mineral/calorite, /obj/structure/falsewall/calorite)
|
||||
|
||||
/turf/closed/wall/mineral/calorite/proc/fatten()
|
||||
if(!active)
|
||||
if(world.time > last_event+15)
|
||||
active = 1
|
||||
for(var/mob/living/carbon/human/M in orange(3,src))
|
||||
if(HAS_TRAIT(M, TRAIT_LIPOIFIER_IMMUNE))
|
||||
return
|
||||
else
|
||||
M.fatness = M.fatness + 50
|
||||
last_event = world.time
|
||||
active = null
|
||||
return
|
||||
return
|
||||
|
||||
/turf/closed/wall/mineral/calorite/Bumped(atom/movable/AM)
|
||||
fatten()
|
||||
..()
|
||||
|
||||
/turf/closed/wall/mineral/calorite/attackby(obj/item/W, mob/user, params)
|
||||
fatten()
|
||||
return ..()
|
||||
|
||||
/turf/closed/wall/mineral/calorite/attack_hand(mob/user)
|
||||
fatten()
|
||||
. = ..()
|
||||
|
||||
|
||||
|
||||
/turf/closed/wall/mineral/sandstone
|
||||
name = "sandstone wall"
|
||||
desc = "A wall with sandstone plating. Rough."
|
||||
|
||||
@@ -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