From 8da38160f3b4e999d062e946a753555fa69b12ea Mon Sep 17 00:00:00 2001
From: DynaJ0ule <117537167+DynaJ0ule@users.noreply.github.com>
Date: Fri, 20 Jan 2023 11:04:55 -0500
Subject: [PATCH 1/4] Sleep tight, disky. No operatives if disk sleeps.
---
code/modules/antagonists/nukeop/equipment/nuclearbomb.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
index dbb49901..27fa9d7a 100644
--- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
+++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
@@ -658,7 +658,7 @@ This is here to make the tiles around the station mininuke change when it's arme
if(disk_comfort_level >= 2) //Sleep tight, disky.
if(!(process_tick % 30))
visible_message("[src] sleeps soundly. Sleep tight, disky.")
- if(last_disk_move < world.time - 5000 && prob((world.time - 5000 - last_disk_move)*0.0001))
+ else if(last_disk_move < world.time - 12000 && prob((world.time - 12000 - last_disk_move)*0.0001)) //Syndicate only cares about the disks comfy
var/datum/round_event_control/operative/loneop = locate(/datum/round_event_control/operative) in SSevents.control
if(istype(loneop))
loneop.weight += 1
From 520941320457a7b87b3420cd2b6823d4aec67a5f Mon Sep 17 00:00:00 2001
From: DynaJ0ule <117537167+DynaJ0ule@users.noreply.github.com>
Date: Mon, 6 Feb 2023 12:31:43 -0500
Subject: [PATCH 2/4] Merge branch 'origin/HEAD'
---
.gitignore | 1 +
.vscode/launch.json | 11 +-
GainStation13/code/mobs/unusualtentical.dm | 1 -
.../code/modules/mob/living/emote.dm | 97 +-
.../chemistry/reagents/consumable_reagents.dm | 3 +-
.../code/modules/vending/gatocola.dm | 6 +-
GainStation13/code/modules/vending/mealdor.dm | 10 +-
GainStation13/icons/obj/scale.dmi | Bin 354 -> 838 bytes
.../lavaland_surface_snack_store.dmm | 1785 +++++++++++++++++
_maps/RandomRuins/SpaceRuins/fastfood.dmm | 467 +++++
_maps/RandomRuins/SpaceRuins/feeders_den.dmm | 286 +++
.../SpaceRuins/listeningstation.dmm | 3 +-
_maps/RandomZLevels/Outfats.dmm | 288 ++-
_maps/RandomZLevels/caves.dmm | 4 +-
_maps/map_files/BoxStation/BoxStation.dmm | 27 +-
_maps/map_files/MetaStation/MetaStation.dmm | 203 +-
_maps/map_files/Mining/Lavaland_Demone.dmm | 167 +-
_maps/map_files/Mining/Lavaland_Lower.dmm | 91 +-
_maps/map_files/OmegaStation/OmegaStation.dmm | 117 +-
_maps/map_files/PubbyStation/PubbyStation.dmm | 117 +-
_maps/map_files/generic/CentCom.dmm | 146 +-
code/__DEFINES/construction.dm | 3 +-
code/__DEFINES/misc.dm | 9 +
code/__DEFINES/mobs.dm | 10 +-
code/__DEFINES/traits.dm | 4 +
code/datums/components/material_container.dm | 6 +
code/datums/components/remote_materials.dm | 2 +-
code/datums/diseases/advance/advance.dm | 16 +-
code/datums/diseases/advance/presets.dm | 5 +-
.../diseases/advance/symptoms/species.dm | 16 +
code/datums/ruins/lavaland.dm | 9 +
code/datums/ruins/space.dm | 12 +
code/datums/weather/weather_types/layenia.dm | 4 +
.../weather/weather_types/radiation_storm.dm | 112 +-
.../dynamic/dynamic_rulesets_events.dm | 112 +-
code/game/machinery/recycler.dm | 2 +-
code/game/objects/effects/contraband.dm | 42 +-
.../objects/items/stacks/sheets/mineral.dm | 28 +-
.../items/stacks/tiles/tile_mineral.dm | 26 +-
.../objects/items/stacks/tiles/tile_types.dm | 8 +
.../crates_lockers/closets/syndicate.dm | 1 +
.../objects/structures/door_assembly_types.dm | 9 +
code/game/objects/structures/false_walls.dm | 37 +
code/game/objects/structures/statues.dm | 95 +
.../game/turfs/simulated/floor/fancy_floor.dm | 5 +
.../turfs/simulated/floor/mineral_floor.dm | 38 +-
code/game/turfs/simulated/minerals.dm | 14 +-
.../turfs/simulated/wall/mineral_walls.dm | 36 +
code/modules/antagonists/cult/runes.dm | 6 +-
.../antagonists/disease/disease_abilities.dm | 18 +-
.../nukeop/equipment/nuclear_challenge.dm | 2 +-
.../nukeop/equipment/nuclearbomb.dm | 4 +-
code/modules/awaymissions/corpse.dm | 137 ++
code/modules/cargo/exports/large_objects.dm | 5 +
code/modules/cargo/packs/misc.dm | 2 +
code/modules/clothing/suits/miscellaneous.dm | 8 +-
code/modules/events/disease_outbreak.dm | 2 +-
code/modules/events/heart_attack.dm | 6 +-
code/modules/events/radiation_storm.dm | 28 +-
.../events/spontaneous_appendicitis.dm | 8 +-
.../food_and_drinks/food/snacks_pastry.dm | 2 +-
.../integrated_electronics/subtypes/input.dm | 7 +-
.../subtypes/manipulation.dm | 6 +-
code/modules/mining/machine_processing.dm | 2 +-
code/modules/mining/machine_redemption.dm | 2 +-
code/modules/mining/machine_silo.dm | 2 +-
code/modules/mining/minebot.dm | 2 +-
code/modules/mining/mint.dm | 2 +-
code/modules/mining/ores_coins.dm | 9 +
.../mob/living/carbon/human/species.dm | 308 ++-
.../carbon/human/species_types/podpeople.dm | 36 +-
code/modules/paperwork/contract.dm | 2 +-
.../chemistry/reagents/other_reagents.dm | 12 +
.../reagents/chemistry/recipes/others.dm | 9 +-
.../ruins/spaceruin_code/feeders_den.dm | 21 +
code/modules/vending/clothesmate.dm | 1 +
config/custom_roundstart_items.txt | 6 +-
config/game_options.txt | 16 +-
config/lavaRuinBlacklist.txt | 1 +
config/spaceRuinBlacklist.txt | 2 +
html/changelog.html | 10 +-
.../code/datums/weather/oxygen_rain.dm | 3 +
hyperstation/icons/obj/genitals/belly.dmi | Bin 7672 -> 49641 bytes
hyperstation/icons/obj/genitals/butt.dmi | Bin 2714 -> 43986 bytes
icons/effects/ore_visuals.dmi | Bin 23454 -> 28887 bytes
icons/mob/human_face.dmi | Bin 177348 -> 177299 bytes
icons/mob/suit.dmi | Bin 452698 -> 448804 bytes
icons/obj/bedsheets.dmi | Bin 16820 -> 16966 bytes
icons/obj/clothing/suits.dmi | Bin 151156 -> 152755 bytes
icons/obj/contraband.dmi | Bin 69869 -> 75733 bytes
icons/obj/food/food.dmi | Bin 75859 -> 75766 bytes
icons/obj/janitor.dmi | Bin 28973 -> 28887 bytes
icons/obj/mining.dmi | Bin 62688 -> 63367 bytes
icons/obj/stack_objects.dmi | Bin 44320 -> 45430 bytes
icons/obj/statue.dmi | Bin 22088 -> 32992 bytes
icons/obj/supplypods.dmi | Bin 55305 -> 55248 bytes
icons/obj/tiles.dmi | Bin 21014 -> 21524 bytes
icons/obj/toy.dmi | Bin 39004 -> 39019 bytes
icons/turf/floors.dmi | Bin 348497 -> 344571 bytes
icons/turf/floors/carpet_gato.dmi | Bin 0 -> 3278 bytes
icons/turf/walls/calorite_wall.dmi | Bin 0 -> 2272 bytes
.../code/modules/arousal/organs/anus.dm | 32 +-
.../code/modules/arousal/organs/genitals.dm | 39 +-
.../mob/dead/new_player/sprite_accessories.dm | 4 +-
tgstation.dme | 245 +++
.../packages/tgui/public/tgui.bundle.css | 2 +-
106 files changed, 4743 insertions(+), 757 deletions(-)
create mode 100644 _maps/RandomRuins/LavaRuins/lavaland_surface_snack_store.dmm
create mode 100644 _maps/RandomRuins/SpaceRuins/fastfood.dmm
create mode 100644 _maps/RandomRuins/SpaceRuins/feeders_den.dmm
create mode 100644 code/modules/ruins/spaceruin_code/feeders_den.dm
create mode 100644 icons/turf/floors/carpet_gato.dmi
create mode 100644 icons/turf/walls/calorite_wall.dmi
diff --git a/.gitignore b/.gitignore
index 5cb7d4ae..abd847b8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -220,3 +220,4 @@ tools/MapAtmosFixer/MapAtmosFixer/bin/*
/config/title_screens/images/*
!/config/title_screens/images/exclude
config/admins.txt
+_maps/RandomRuins_SpaceRuins_TheDerelictProject.dmm
diff --git a/.vscode/launch.json b/.vscode/launch.json
index b07b0107..e2ddd1b4 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -1,12 +1,21 @@
{
"version": "0.2.0",
"configurations": [
+
{
"type": "byond",
"request": "launch",
"name": "Launch DreamSeeker",
"preLaunchTask": "dm: build - ${command:CurrentDME}",
"dmb": "${workspaceFolder}/${command:CurrentDMB}"
- }
+ },
+ {
+ "type": "byond",
+ "request": "launch",
+ "name": "Launch DreamDaemon",
+ "preLaunchTask": "dm: build - ${command:CurrentDME}",
+ "dmb": "${workspaceFolder}/${command:CurrentDMB}",
+ "dreamDaemon": true
+ },
]
}
diff --git a/GainStation13/code/mobs/unusualtentical.dm b/GainStation13/code/mobs/unusualtentical.dm
index f6ceff1b..81823e60 100644
--- a/GainStation13/code/mobs/unusualtentical.dm
+++ b/GainStation13/code/mobs/unusualtentical.dm
@@ -1,4 +1,3 @@
-
/obj/code/game/mobs/unusualtentical
name = "unusualtentical"
desc = "Whats this doing here?"
diff --git a/GainStation13/code/modules/mob/living/emote.dm b/GainStation13/code/modules/mob/living/emote.dm
index 7d1ada5d..35a21417 100644
--- a/GainStation13/code/modules/mob/living/emote.dm
+++ b/GainStation13/code/modules/mob/living/emote.dm
@@ -1,60 +1,58 @@
-
/datum/emote/living/gurgle
key = "gurgle"
key_third_person = "gurgles"
message = "'s belly gurgles"
emote_type = EMOTE_AUDIBLE
-
/datum/emote/living/gurgle/run_emote(mob/living/user, params)
- if(ishuman(user))
- if(prob(50))
- playsound(user, 'GainStation13/sound/voice/gurgle1.ogg', 50, 1, -1)
- else
- playsound(user, 'GainStation13/sound/voice/gurgle2.ogg', 50, 1, -1)
+ if(!ishuman(user))
+ return FALSE
+
+ if(prob(50))
+ playsound(user, 'GainStation13/sound/voice/gurgle1.ogg', 50, 1, -1)
+ else
+ playsound(user, 'GainStation13/sound/voice/gurgle2.ogg', 50, 1, -1)
+
. = ..()
/datum/emote/living/burp/run_emote(mob/living/user, params)
- if(ishuman(user))
- playsound(user, 'GainStation13/sound/voice/burp1.ogg', 50, 1, -1)
+ if(!ishuman(user))
+ return FALSE
+
+ playsound(user, 'GainStation13/sound/voice/burp1.ogg', 50, 1, -1)
. = ..()
/datum/emote/living/fart
key = "fart"
key_third_person = "farts"
- message = " farts"
+ message = "farts"
emote_type = EMOTE_AUDIBLE
//god hates me for this -Metha
/datum/emote/living/fart/run_emote(mob/living/user, params)
- if(ishuman(user))
-
- var/fartSoundChoice = rand(3)
-
- switch(fartSoundChoice)
- if (0) playsound(user, 'GainStation13/sound/voice/fart3.ogg', 50, 1, -1)
-
- if (1) playsound(user, 'GainStation13/sound/voice/fart4.ogg', 50, 1, -1)
-
- if (2) playsound(user, 'GainStation13/sound/voice/fart2.ogg', 50, 1, -1)
-
- if (3) playsound(user, 'GainStation13/sound/voice/fart1.ogg', 50, 1, -1)
-
-
-
-
-
- . = ..()
-
+ if(!ishuman(user))
+ return FALSE
+ var/fartSoundChoice = rand(3)
+ switch(fartSoundChoice)
+ if (0)
+ playsound(user, 'GainStation13/sound/voice/fart3.ogg', 50, 1, -1)
+ if (1)
+ playsound(user, 'GainStation13/sound/voice/fart4.ogg', 50, 1, -1)
+ if (2)
+ playsound(user, 'GainStation13/sound/voice/fart2.ogg', 50, 1, -1)
+ if (3)
+ playsound(user, 'GainStation13/sound/voice/fart1.ogg', 50, 1, -1)
+
+ . = ..()
//Shhh... It's a secret! Don't tell or I'll steal your legs
/datum/emote/living/burunyu
key = "burunyu"
key_third_person = "burunyues"
- message = " emits a strange feline sound"
+ message = "emits a strange feline sound"
emote_type = EMOTE_AUDIBLE
/datum/emote/living/burunyu/run_emote(mob/living/user, params)
@@ -65,29 +63,28 @@
/datum/emote/living/belch
key = "belch"
key_third_person = "belches loudly"
- message = " belches"
+ message = "belches"
emote_type = EMOTE_AUDIBLE
-
//god hates me for this -Metha
/datum/emote/living/belch/run_emote(mob/living/user, params)
- if(ishuman(user))
+ if(!ishuman(user))
+ return FALSE
+
+ var/fartSoundChoice = rand(5)
+ switch(fartSoundChoice)
+ if(0)
+ playsound(user, 'GainStation13/sound/voice/belch3.ogg', 50, 1, -1)
+ if(1)
+ playsound(user, 'GainStation13/sound/voice/belch4.ogg', 50, 1, -1)
+ if(2)
+ playsound(user, 'GainStation13/sound/voice/belch2.ogg', 50, 1, -1)
+ if(3)
+ playsound(user, 'GainStation13/sound/voice/belch1.ogg', 50, 1, -1)
+ if(4)
+ playsound(user, 'GainStation13/sound/voice/belch5.ogg', 50, 1, -1)
+ if(5)
+ playsound(user, 'GainStation13/sound/voice/belch6.ogg', 50, 1, -1)
- var/fartSoundChoice = rand(5)
-
- switch(fartSoundChoice)
- if (0) playsound(user, 'GainStation13/sound/voice/belch3.ogg', 50, 1, -1)
-
- if (1) playsound(user, 'GainStation13/sound/voice/belch4.ogg', 50, 1, -1)
-
- if (2) playsound(user, 'GainStation13/sound/voice/belch2.ogg', 50, 1, -1)
-
- if (3) playsound(user, 'GainStation13/sound/voice/belch1.ogg', 50, 1, -1)
-
- if (4) playsound(user, 'GainStation13/sound/voice/belch5.ogg', 50, 1, -1)
-
- if (5) playsound(user, 'GainStation13/sound/voice/belch6.ogg', 50, 1, -1)
-
-
- . = ..()
\ No newline at end of file
+ . = ..()
diff --git a/GainStation13/code/modules/reagents/chemistry/reagents/consumable_reagents.dm b/GainStation13/code/modules/reagents/chemistry/reagents/consumable_reagents.dm
index 04ece117..28faf8d6 100644
--- a/GainStation13/code/modules/reagents/chemistry/reagents/consumable_reagents.dm
+++ b/GainStation13/code/modules/reagents/chemistry/reagents/consumable_reagents.dm
@@ -12,4 +12,5 @@
/datum/reagent/consumable/lipoifier/on_mob_life(mob/living/carbon/M)
if(M && !HAS_TRAIT(M, TRAIT_LIPOIFIER_IMMUNE))
M.fatness = M.fatness + 10
- return ..()
+
+ return ..()
diff --git a/GainStation13/code/modules/vending/gatocola.dm b/GainStation13/code/modules/vending/gatocola.dm
index b8225587..b8d91b9f 100644
--- a/GainStation13/code/modules/vending/gatocola.dm
+++ b/GainStation13/code/modules/vending/gatocola.dm
@@ -23,10 +23,6 @@
refill_canister = /obj/item/vending_refill/mealdor
-obj/item/vending_refill/mealdor
+/obj/item/vending_refill/mealdor
machine_name = "Meal Vendor Refill"
icon_state = "refill_mealdor"
-
-#define STANDARD_CHARGE 1
-#define CONTRABAND_CHARGE 2
-#define COIN_CHARGE 3
diff --git a/GainStation13/code/modules/vending/mealdor.dm b/GainStation13/code/modules/vending/mealdor.dm
index 73a55a8c..22e71a91 100644
--- a/GainStation13/code/modules/vending/mealdor.dm
+++ b/GainStation13/code/modules/vending/mealdor.dm
@@ -39,7 +39,7 @@
/obj/item/reagent_containers/food/snacks/cookie = 10,
/obj/item/reagent_containers/food/snacks/salad/fruit = 15,
/obj/item/reagent_containers/food/snacks/salad = 20,
- /obj/item/reagent_containers/food/snacks/salad/hellcobb =10,
+ /obj/item/reagent_containers/food/snacks/salad/hellcobb = 10,
/obj/item/clothing/under/cowkini = 5,
)
premium = list(
@@ -48,11 +48,3 @@
)
refill_canister = /obj/item/vending_refill/mealdor
-
-obj/item/vending_refill/mealdor
- machine_name = "Meal Vendor Refill"
- icon_state = "refill_mealdor"
-
-#define STANDARD_CHARGE 1
-#define CONTRABAND_CHARGE 2
-#define COIN_CHARGE 3
diff --git a/GainStation13/icons/obj/scale.dmi b/GainStation13/icons/obj/scale.dmi
index 596cfd2f61a229d0c310282e70d13bacf2cfb1d3..4df41e16b2d8f42c8aba344344c8acd583fabdeb 100644
GIT binary patch
delta 827
zcmV-B1H}B|0>%cA7=H)`0001UdV2H#003=zR9JLGWpiV4X>fFDZ*Bkpc$_82y$XOJ
z6b8`Q`xGC!M}MnJ7~zobAbCrnA5f{+Z)iJ5Vw`4Up%+6BryTDK3PatHc%v@?3VlZ+
zaNI-rlZz`1g(|P^;EIHgDMO(pu_br%Z;8oj=*7?nHcT25NPh#$m;e9*lu1NER9J=W
zmd#F6K@`V-XL@hB^!h;pK^7=TC0#Uuy+(}*x-dS2i3@!PU&VKDgA2pL#JKYTy0}8o
zScL{LKx@Bf?>#Ph`&|;yAui;=
zZ-Qe+YR(n`0K#Sn3dWdTD{%`Tqcv}jfFPYSCB{Ic7=M!h1;;oioj0*n1MzeMs=Qy{
z00ZyeYyj|X{cZcdo+kl?kA)mdGjl{q1FC~Tjj&z(HsWTDfT|KS_Xzg);<&x#iUZE<2Md3<@dRu(rN$z002ovPDHLk
FV1nT7ddvU-
delta 339
zcmV-Z0j&PU2I2yc7=Hu<0001iRA?00DGTPE!Ct=GbNc003!vR9JLGWpiV4X>fFDZ*Bkpc$`yKaB_9`
z^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33tGk;1ToZ^zil2jm5sW>??
zCsm1yGbOXA7|1u|;!G<_%uR)`l@(n5T)@Tx05(h-6Sktz$N&HUfJsC_R49>SV4xll
z6hz}IDWQlkDj6Fq2_Ojw83TbLvVe(;i!+G=rlFz1_*J0W!l-O)Y=rC%kP>7CASI{@
z7#PG7QTYtwg-mo1U@R{ez%L+HUXJQAvGg*S09yh`M;Z_aKzMBF#lR>417l=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)
diff --git a/code/datums/diseases/advance/presets.dm b/code/datums/diseases/advance/presets.dm
index b12b6571..48c76256 100644
--- a/code/datums/diseases/advance/presets.dm
+++ b/code/datums/diseases/advance/presets.dm
@@ -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)]"
- ..()
\ No newline at end of file
+ ..()
diff --git a/code/datums/diseases/advance/symptoms/species.dm b/code/datums/diseases/advance/symptoms/species.dm
index c192daa2..7522d897 100644
--- a/code/datums/diseases/advance/symptoms/species.dm
+++ b/code/datums/diseases/advance/symptoms/species.dm
@@ -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
diff --git a/code/datums/ruins/lavaland.dm b/code/datums/ruins/lavaland.dm
index 75c812be..ac00a5e6 100644
--- a/code/datums/ruins/lavaland.dm
+++ b/code/datums/ruins/lavaland.dm
@@ -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
diff --git a/code/datums/ruins/space.dm b/code/datums/ruins/space.dm
index bba7ed58..5b5cb2b5 100644
--- a/code/datums/ruins/space.dm
+++ b/code/datums/ruins/space.dm
@@ -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."
diff --git a/code/datums/weather/weather_types/layenia.dm b/code/datums/weather/weather_types/layenia.dm
index 97113bb9..08909fa2 100644
--- a/code/datums/weather/weather_types/layenia.dm
+++ b/code/datums/weather/weather_types/layenia.dm
@@ -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()
diff --git a/code/datums/weather/weather_types/radiation_storm.dm b/code/datums/weather/weather_types/radiation_storm.dm
index b9297755..9f283a4d 100644
--- a/code/datums/weather/weather_types/radiation_storm.dm
+++ b/code/datums/weather/weather_types/radiation_storm.dm
@@ -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 = "The air begins to grow warm."
+// telegraph_duration = 400
+// telegraph_message = "The air begins to grow warm."
- weather_message = "You feel waves of heat wash over you! Find shelter!"
- weather_overlay = "ash_storm"
- weather_duration_lower = 600
- weather_duration_upper = 1500
- weather_color = "green"
- weather_sound = 'sound/misc/bloblarm.ogg'
+// weather_message = "You feel waves of heat wash over you! Find shelter!"
+// 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 = "The air seems to be cooling off again."
+// end_duration = 100
+// end_message = "The air seems to be cooling off again."
- 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
diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm
index 06f33232..89d5b514 100644
--- a/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm
+++ b/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm
@@ -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"
diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm
index 75adef3d..91fd1776 100644
--- a/code/game/machinery/recycler.dm
+++ b/code/game/machinery/recycler.dm
@@ -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()
diff --git a/code/game/objects/effects/contraband.dm b/code/game/objects/effects/contraband.dm
index fa1ccf40..14125d47 100644
--- a/code/game/objects/effects/contraband.dm
+++ b/code/game/objects/effects/contraband.dm
@@ -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
diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm
index 03570473..8d5d534b 100644
--- a/code/game/objects/items/stacks/sheets/mineral.dm
+++ b/code/game/objects/items/stacks/sheets/mineral.dm
@@ -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
\ No newline at end of file
+ amount = 10
diff --git a/code/game/objects/items/stacks/tiles/tile_mineral.dm b/code/game/objects/items/stacks/tiles/tile_mineral.dm
index 55ebb60a..a88443ca 100644
--- a/code/game/objects/items/stacks/tiles/tile_mineral.dm
+++ b/code/game/objects/items/stacks/tiles/tile_mineral.dm
@@ -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)
\ No newline at end of file
+ materials = list(MAT_SANDSTONE=500)
diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm
index d371db96..76b9fcf9 100644
--- a/code/game/objects/items/stacks/tiles/tile_types.dm
+++ b/code/game/objects/items/stacks/tiles/tile_types.dm
@@ -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"
diff --git a/code/game/objects/structures/crates_lockers/closets/syndicate.dm b/code/game/objects/structures/crates_lockers/closets/syndicate.dm
index b967b4ef..851f2aca 100644
--- a/code/game/objects/structures/crates_lockers/closets/syndicate.dm
+++ b/code/game/objects/structures/crates_lockers/closets/syndicate.dm
@@ -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,
diff --git a/code/game/objects/structures/door_assembly_types.dm b/code/game/objects/structures/door_assembly_types.dm
index 28d74422..59906330 100644
--- a/code/game/objects/structures/door_assembly_types.dm
+++ b/code/game/objects/structures/door_assembly_types.dm
@@ -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'
diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm
index e359325d..52267774 100644
--- a/code/game/objects/structures/false_walls.dm
+++ b/code/game/objects/structures/false_walls.dm
@@ -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"
diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm
index 9db2f38e..264967d4 100644
--- a/code/game/objects/structures/statues.dm
+++ b/code/game/objects/structures/statues.dm
@@ -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, "You feel the statue calling to you, urging you to touch it...")
+ 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, "Nothing happens.")
+ else
+ M.fatness = M.fatness + 20
+ if(M.fatness < 200)
+ to_chat(M, "The moment your hand meets the statue, you feel a little warmer...")
+ if(HAS_TRAIT(M, TRAIT_FAT))
+ to_chat(M, "Upon each poke of the statue, you feel yourself get a little heavier.")
+ if(HAS_TRAIT(M, TRAIT_OBESE))
+ to_chat(M, "With each touch you keep getting fatter... But the fatter you grow, the more enticed you feel to poke the statue.")
+ if(HAS_TRAIT(M, TRAIT_MORBIDLYOBESE))
+ to_chat(M, "The world around you blurs as you focus on prodding the statue, your waistline widening further...")
+ if(HAS_TRAIT(M, TRAIT_IMMOBILE))
+ to_chat(M, "A whispering voice gently compliments your massive body, your own mind begging to touch the statue more.")
+ if(HAS_TRAIT(M, TRAIT_BLOB))
+ to_chat(M, "You can barely reach the statue past your floor-covering stomach! And yet, it still calls to you...")
+
+/obj/structure/statue/calorite/fatty/attack_hand(mob/living/carbon/M)
+ if(HAS_TRAIT(M, TRAIT_LIPOIFIER_IMMUNE))
+ to_chat(M, "Nothing happens.")
+ else
+ M.fatness = M.fatness + 20
+ if(M.fatness < 200)
+ to_chat(M, "The moment your hand meets the statue, you feel a little warmer...")
+ if(HAS_TRAIT(M, TRAIT_FAT))
+ to_chat(M, "Upon each poke of the statue, you feel yourself get a little heavier.")
+ if(HAS_TRAIT(M, TRAIT_OBESE))
+ to_chat(M, "With each touch you keep getting fatter... But the fatter you grow, the more enticed you feel to poke the statue.")
+ if(HAS_TRAIT(M, TRAIT_MORBIDLYOBESE))
+ to_chat(M, "The world around you blurs as you focus on prodding the statue, your waistline widening further...")
+ if(HAS_TRAIT(M, TRAIT_IMMOBILE))
+ to_chat(M, "A whispering voice gently compliments your massive body, your own mind begging to touch the statue more.")
+ if(HAS_TRAIT(M, TRAIT_BLOB))
+ to_chat(M, "You can barely reach the statue past your floor-covering stomach! And yet, it still calls to you...")
+
+/obj/structure/statue/calorite/fatty/attack_paw(mob/living/carbon/M)
+ if(HAS_TRAIT(M, TRAIT_LIPOIFIER_IMMUNE))
+ to_chat(M, "Nothing happens.")
+ else
+ M.fatness = M.fatness + 20
+ if(M.fatness < 200)
+ to_chat(M, "The moment your hand meets the statue, you feel a little warmer...")
+ if(HAS_TRAIT(M, TRAIT_FAT))
+ to_chat(M, "Upon each poke of the statue, you feel yourself get a little heavier.")
+ if(HAS_TRAIT(M, TRAIT_OBESE))
+ to_chat(M, "With each touch you keep getting fatter... But the fatter you grow, the more enticed you feel to poke the statue.")
+ if(HAS_TRAIT(M, TRAIT_MORBIDLYOBESE))
+ to_chat(M, "The world around you blurs as you focus on prodding the statue, your waistline widening further...")
+ if(HAS_TRAIT(M, TRAIT_IMMOBILE))
+ to_chat(M, "A whispering voice gently compliments your massive body, your own mind begging to touch the statue more.")
+ if(HAS_TRAIT(M, TRAIT_BLOB))
+ to_chat(M, "You can barely reach the statue past your floor-covering stomach! And yet, it still calls to you...")
+
\ No newline at end of file
diff --git a/code/game/turfs/simulated/floor/fancy_floor.dm b/code/game/turfs/simulated/floor/fancy_floor.dm
index 2c7c6a3f..4376ff97 100644
--- a/code/game/turfs/simulated/floor/fancy_floor.dm
+++ b/code/game/turfs/simulated/floor/fancy_floor.dm
@@ -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)
diff --git a/code/game/turfs/simulated/floor/mineral_floor.dm b/code/game/turfs/simulated/floor/mineral_floor.dm
index 209a84c3..5e2844a2 100644
--- a/code/game/turfs/simulated/floor/mineral_floor.dm
+++ b/code/game/turfs/simulated/floor/mineral_floor.dm
@@ -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")
\ No newline at end of file
+ icons = list("basaltstone","basaltstone_dam")
diff --git a/code/game/turfs/simulated/minerals.dm b/code/game/turfs/simulated/minerals.dm
index e1c3fe45..69f21035 100644
--- a/code/game/turfs/simulated/minerals.dm
+++ b/code/game/turfs/simulated/minerals.dm
@@ -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
diff --git a/code/game/turfs/simulated/wall/mineral_walls.dm b/code/game/turfs/simulated/wall/mineral_walls.dm
index 1e994b01..d96d68d9 100644
--- a/code/game/turfs/simulated/wall/mineral_walls.dm
+++ b/code/game/turfs/simulated/wall/mineral_walls.dm
@@ -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."
diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm
index 82d78480..f3551410 100644
--- a/code/modules/antagonists/cult/runes.dm
+++ b/code/modules/antagonists/cult/runes.dm
@@ -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()
diff --git a/code/modules/antagonists/disease/disease_abilities.dm b/code/modules/antagonists/disease/disease_abilities.dm
index 8e9e91e4..840159c6 100644
--- a/code/modules/antagonists/disease/disease_abilities.dm
+++ b/code/modules/antagonists/disease/disease_abilities.dm
@@ -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
diff --git a/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm b/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm
index daa38767..f07d4cb5 100644
--- a/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm
+++ b/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm
@@ -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.
diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
index 27fa9d7a..dde4e8e7 100644
--- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
+++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
@@ -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
diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm
index 9476356b..1e839d0c 100644
--- a/code/modules/awaymissions/corpse.dm
+++ b/code/modules/awaymissions/corpse.dm
@@ -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
diff --git a/code/modules/cargo/exports/large_objects.dm b/code/modules/cargo/exports/large_objects.dm
index fcee41b5..26e8f34b 100644
--- a/code/modules/cargo/exports/large_objects.dm
+++ b/code/modules/cargo/exports/large_objects.dm
@@ -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"
diff --git a/code/modules/cargo/packs/misc.dm b/code/modules/cargo/packs/misc.dm
index 7f712203..556efad3 100644
--- a/code/modules/cargo/packs/misc.dm
+++ b/code/modules/cargo/packs/misc.dm
@@ -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,
diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm
index 9d65344f..9fd79143 100644
--- a/code/modules/clothing/suits/miscellaneous.dm
+++ b/code/modules/clothing/suits/miscellaneous.dm
@@ -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."
diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm
index 737a395f..0baee991 100644
--- a/code/modules/events/disease_outbreak.dm
+++ b/code/modules/events/disease_outbreak.dm
@@ -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
diff --git a/code/modules/events/heart_attack.dm b/code/modules/events/heart_attack.dm
index 6042550d..163bb87b 100644
--- a/code/modules/events/heart_attack.dm
+++ b/code/modules/events/heart_attack.dm
@@ -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()
diff --git a/code/modules/events/radiation_storm.dm b/code/modules/events/radiation_storm.dm
index c9142e20..28a8db9b 100644
--- a/code/modules/events/radiation_storm.dm
+++ b/code/modules/events/radiation_storm.dm
@@ -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)
diff --git a/code/modules/events/spontaneous_appendicitis.dm b/code/modules/events/spontaneous_appendicitis.dm
index 64828123..b332afc4 100644
--- a/code/modules/events/spontaneous_appendicitis.dm
+++ b/code/modules/events/spontaneous_appendicitis.dm
@@ -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
diff --git a/code/modules/food_and_drinks/food/snacks_pastry.dm b/code/modules/food_and_drinks/food/snacks_pastry.dm
index 4e2aece1..2820bd2a 100644
--- a/code/modules/food_and_drinks/food/snacks_pastry.dm
+++ b/code/modules/food_and_drinks/food/snacks_pastry.dm
@@ -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"
diff --git a/code/modules/integrated_electronics/subtypes/input.dm b/code/modules/integrated_electronics/subtypes/input.dm
index 46f8017b..06771251 100644
--- a/code/modules/integrated_electronics/subtypes/input.dm
+++ b/code/modules/integrated_electronics/subtypes/input.dm
@@ -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)
\ No newline at end of file
+ activate_pin(2)
diff --git a/code/modules/integrated_electronics/subtypes/manipulation.dm b/code/modules/integrated_electronics/subtypes/manipulation.dm
index 12f5791c..16940b64 100644
--- a/code/modules/integrated_electronics/subtypes/manipulation.dm
+++ b/code/modules/integrated_electronics/subtypes/manipulation.dm
@@ -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
diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm
index f5150b47..ca11771b 100644
--- a/code/modules/mining/machine_processing.dm
+++ b/code/modules/mining/machine_processing.dm
@@ -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()
diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm
index 34262af1..4e6f7ba5 100644
--- a/code/modules/mining/machine_redemption.dm
+++ b/code/modules/mining/machine_redemption.dm
@@ -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
diff --git a/code/modules/mining/machine_silo.dm b/code/modules/mining/machine_silo.dm
index 246106be..2f118d55 100644
--- a/code/modules/mining/machine_silo.dm
+++ b/code/modules/mining/machine_silo.dm
@@ -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,
diff --git a/code/modules/mining/minebot.dm b/code/modules/mining/minebot.dm
index 6fe6842c..0cf3ef95 100644
--- a/code/modules/mining/minebot.dm
+++ b/code/modules/mining/minebot.dm
@@ -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
diff --git a/code/modules/mining/mint.dm b/code/modules/mining/mint.dm
index f32afb28..1e34771f 100644
--- a/code/modules/mining/mint.dm
+++ b/code/modules/mining/mint.dm
@@ -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)
diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm
index 67e1d769..f7057b0c 100644
--- a/code/modules/mining/ores_coins.dm
+++ b/code/modules/mining/ores_coins.dm
@@ -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"
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 1eafe550..cbb2e2f9 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -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, "You feel fit again!")//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, "You feel less restrained by your fat!")
@@ -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, "You feel fit again!")//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, "You feel even plumper!")
+ 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, "You feel like you've lost weight!")
+ 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, "Your clothes creak quietly!")
+ 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, "You feel like you've lost weight!")
+ 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, "You feel like you're starting to get really heavy.")
+ 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, "You feel like you've lost weight!")
+ 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, "Your thighs begin to rub against each other.")
+ 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, "You feel a bit less fat!")
+ 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, "You feel your belly rest heavily on your lap!")
+ 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, "You feel less restrained by your fat!")
+ 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, "You feel like you can barely move!")
+ 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, "You feel less restrained by your fat!")
+ 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, "You feel belly smush against the floor!")
+ 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, "You feel less restrained by your fat!")
+ 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, "You feel like you've become a mountain of fat!")
+ 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, "You feel like you've regained some mobility!")
+ 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, "You suddenly feel blubbery!")
+ 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 //
//////////////////
diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm
index 786357dd..325514a6 100644
--- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm
@@ -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"
diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm
index 617b101a..0b97bbec 100644
--- a/code/modules/paperwork/contract.dm
+++ b/code/modules/paperwork/contract.dm
@@ -28,7 +28,7 @@
/obj/item/paper/contract/employment/update_text()
name = "paper- [target] employment contract"
- info = "
Conditions of Employment
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). WITNESSETH: 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. WHEREAS, the omnipresent and helpful watcher of humanity agrees to sporadically provide payment to SLAVE, in exchange for permanent servitude. NOW THEREFORE in consideration of the mutual covenants herein contained, and other good and valuable consideration, the parties hereto mutually agree as follows: 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. Further, SLAVE agrees to transfer ownership of his or her soul to the loyalty department of the omnipresent and helpful watcher of humanity. Should transfership of a soul not be possible, a lien shall be placed instead. Signed, [target]"
+ info = "
Conditions of Employment
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). WITNESSETH: 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. WHEREAS, the omnipresent and helpful watcher of this galactic sector agrees to regularly provide payment to SLAVE, in exchange for permanent servitude. NOW THEREFORE in consideration of the mutual covenants herein contained, and other good and valuable consideration, the parties hereto mutually agree as follows: 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. 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. 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. Signed, [target]"
/obj/item/paper/contract/employment/attack(mob/living/M, mob/living/carbon/human/user)
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index b6094aae..2d6ff776 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -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"
diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm
index 261ae89f..388d1c13 100644
--- a/code/modules/reagents/chemistry/recipes/others.dm
+++ b/code/modules/reagents/chemistry/recipes/others.dm
@@ -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
\ No newline at end of file
+ mob_react = FALSE
diff --git a/code/modules/ruins/spaceruin_code/feeders_den.dm b/code/modules/ruins/spaceruin_code/feeders_den.dm
new file mode 100644
index 00000000..fb92d3dc
--- /dev/null
+++ b/code/modules/ruins/spaceruin_code/feeders_den.dm
@@ -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.)"
diff --git a/code/modules/vending/clothesmate.dm b/code/modules/vending/clothesmate.dm
index 7d0ffcca..345bac08 100644
--- a/code/modules/vending/clothesmate.dm
+++ b/code/modules/vending/clothesmate.dm
@@ -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,
diff --git a/config/custom_roundstart_items.txt b/config/custom_roundstart_items.txt
index 8c5a87a6..a0a8e415 100644
--- a/config/custom_roundstart_items.txt
+++ b/config/custom_roundstart_items.txt
@@ -7,4 +7,8 @@
//test1|Memename Lastname|testjob1|/obj/item/device/aicard=3;/obj/item/device/flightpack=1;/obj/item/gun/energy=3
//kevinz000|Skylar Lineman|ALL|/obj/item/bikehorn/airhorn=1
//kevinz000|ALL|Clown|/obj/item/bikehorn=1
-JayEhh|ALL|ALL|/obj/item/custom/ceb_soap=1
\ No newline at end of file
+JayEhh|ALL|ALL|/obj/item/custom/ceb_soap=1
+
+
+Sonoida|Dezir Rose|ALL|/obj/item/grown/rose=1
+Sonoida|Desert Rose|ALL|/obj/item/grown/rose=1
\ No newline at end of file
diff --git a/config/game_options.txt b/config/game_options.txt
index e961ac22..781134d0 100644
--- a/config/game_options.txt
+++ b/config/game_options.txt
@@ -221,7 +221,7 @@ BROTHER_OBJECTIVES_AMOUNT 2
## Uncomment to prohibit jobs that start with loyalty
## implants from being most antagonists.
-#PROTECT_ROLES_FROM_ANTAGONIST
+PROTECT_ROLES_FROM_ANTAGONIST
## Uncomment to prohibit assistants from becoming most antagonists.
#PROTECT_ASSISTANT_FROM_ANTAGONIST
@@ -440,8 +440,8 @@ ROUNDSTART_RACES felinid
#ROUNDSTART_RACES skeleton
#ROUNDSTART_RACES zombie
#ROUNDSTART_RACES slime
-#ROUNDSTART_RACES pod
-#ROUNDSTART_RACES military_synth
+ROUNDSTART_RACES pod
+ROUNDSTART_RACES military_synth
#ROUNDSTART_RACES agent
## CITADEL Races
@@ -525,7 +525,7 @@ BOMBCAP 20
LAVALAND_BUDGET 60
## Space Ruin Budged
-Space_Budget 16
+Space_Budget 30
## Time in ds from when a player latejoins till the arrival shuttle docks at the station
## Must be at least 30. At least 55 recommended to be visually/aurally appropriate
@@ -579,7 +579,7 @@ BOX_RANDOM_ENGINE Box Singulo,3
BOX_RANDOM_ENGINE Box SM 1x3,1
BOX_RANDOM_ENGINE Box SM 5x5,1
BOX_RANDOM_ENGINE Box SM 3x,1
-BOX_RANDOM_ENGINE Box TEG,2
-BOX_RANDOM_ENGINE Box Empty,0
-BOX_RANDOM_ENGINE Box Antimatter,0
-BOX_RANDOM_ENGINE Box P.A.C.M.A.N,0
+BOX_RANDOM_ENGINE Box TEG,1
+BOX_RANDOM_ENGINE Box Empty,1
+BOX_RANDOM_ENGINE Box Antimatter,1
+BOX_RANDOM_ENGINE Box P.A.C.M.A.N,1
diff --git a/config/lavaRuinBlacklist.txt b/config/lavaRuinBlacklist.txt
index d006b5bf..c8cd94c8 100644
--- a/config/lavaRuinBlacklist.txt
+++ b/config/lavaRuinBlacklist.txt
@@ -44,3 +44,4 @@ _maps/RandomRuins/LavaRuins/lavaland_surface_cube.dmm
#_maps/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm
#_maps/RandomRuins/LavaRuins/lavaland_surface_swarmer_crash.dmm
#_maps/RandomRuins/LavaRuins/lavaland_surface_oasis.dmm
+#_maps/RandomRuins/LavaRuins/lavaland_surface_snack_store.dmm
diff --git a/config/spaceRuinBlacklist.txt b/config/spaceRuinBlacklist.txt
index aea87f97..901acce8 100644
--- a/config/spaceRuinBlacklist.txt
+++ b/config/spaceRuinBlacklist.txt
@@ -51,3 +51,5 @@
#_maps/RandomRuins/SpaceRuins/spacehermit.dmm
#_maps/RandomRuins/SpaceRuins/advancedlab.dmm
#_maps/RandomRuins/SpaceRuins/hilbertshoteltestingsite.dmm
+#_maps/RandomRuins/SpaceRuins/feeders_den.dmm
+#_maps/RandomRuins/SpaceRuins/fastfood.dmm
diff --git a/html/changelog.html b/html/changelog.html
index d378f695..0b11e856 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -1,7 +1,7 @@
- Hyperstation 13 Changelog
+ Gain Station 13 Changelog