Merge branch 'origin/HEAD'

This commit is contained in:
DynaJ0ule
2023-02-06 12:31:43 -05:00
parent 8da38160f3
commit 5209413204
106 changed files with 4743 additions and 757 deletions
+2 -1
View File
@@ -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.
+9
View File
@@ -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
+7 -3
View File
@@ -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
+4
View File
@@ -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
+1 -1
View File
@@ -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)
+12 -4
View File
@@ -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)
+3 -2
View File
@@ -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
+9
View File
@@ -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
+12
View File
@@ -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"
+1 -1
View File
@@ -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()
+32 -10
View File
@@ -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"
+95
View File
@@ -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")
+10 -4
View File
@@ -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."
+3 -3
View File
@@ -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
+137
View File
@@ -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"
+2
View File
@@ -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,
+7 -1
View File
@@ -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."
+1 -1
View File
@@ -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
+4 -2
View File
@@ -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()
+14 -14
View File
@@ -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
+1 -1
View File
@@ -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()
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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,
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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)
+9
View File
@@ -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"
+300 -8
View File
@@ -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"
+1 -1
View File
@@ -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.)"
+1
View File
@@ -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,