diff --git a/GainStation13/code/modules/reagents/chemistry/reagents/consumable_reagents.dm b/GainStation13/code/modules/reagents/chemistry/reagents/consumable_reagents.dm
index 1226d120..8b7edef6 100644
--- a/GainStation13/code/modules/reagents/chemistry/reagents/consumable_reagents.dm
+++ b/GainStation13/code/modules/reagents/chemistry/reagents/consumable_reagents.dm
@@ -93,3 +93,20 @@
/datum/reagent/consumable/caloriteblessing/on_mob_end_metabolize(mob/living/L)
REMOVE_TRAIT(L, TRAIT_GOTTAGOFAST, type)
..()
+
+
+//BLUEBERRY CHEM - ONLY CHANGES PLAYER'S COLOR AND NOTHING MORE
+
+/datum/reagent/blueberry_juice
+ name = "Blueberry Juice"
+ description = "Non-infectious. Hopefully."
+ reagent_state = LIQUID
+ color = "#0004ff"
+ var/list/random_color_list = list("#0058db","#5d00c7","#0004ff","#0057e7")
+ taste_description = "blueberry pie"
+ var/no_mob_color = FALSE
+
+/datum/reagent/blueberry_juice/on_mob_life(mob/living/carbon/M)
+ if(!no_mob_color)
+ M.add_atom_colour(pick(random_color_list), WASHABLE_COLOUR_PRIORITY)
+ ..()
diff --git a/GainStation13/code/modules/vending/mealdor.dm b/GainStation13/code/modules/vending/mealdor.dm
index 4973fc1c..3c050243 100644
--- a/GainStation13/code/modules/vending/mealdor.dm
+++ b/GainStation13/code/modules/vending/mealdor.dm
@@ -42,10 +42,11 @@
/obj/item/reagent_containers/food/snacks/salad = 20,
/obj/item/reagent_containers/food/snacks/salad/hellcobb = 10,
/obj/item/clothing/under/cowkini = 5,
+ /obj/item/reagent_containers/food/snacks/blueberry_gum = 5
)
premium = list(
- /obj/item/reagent_containers/food/drinks/soda_cans/air = 1,
- /obj/item/reagent_containers/food/snacks/donut/chaos = 2
+ /obj/item/reagent_containers/food/drinks/soda_cans/air = 3,
+ /obj/item/reagent_containers/food/snacks/donut/chaos = 3
)
refill_canister = /obj/item/vending_refill/mealdor
diff --git a/GainStation13/code/obj/items/minor_items.dm b/GainStation13/code/obj/items/minor_items.dm
index 7a8da914..9a4b6122 100644
--- a/GainStation13/code/obj/items/minor_items.dm
+++ b/GainStation13/code/obj/items/minor_items.dm
@@ -1,13 +1,60 @@
-/////GS13 - miscellanous items
+/////GS13 - miscellanous items. If it's a small item, a container or something
+/////then it should land here, instead of making a seperate .dm file
+
+//fatoray research scraps (maintloot)
/obj/item/trash/fatoray_scrap1
name = "raygun scraps"
- icon = 'GainStation13/icons/obj/fatoray_scrap.dmi'
+ icon = 'GainStation13/icons/obj/fatoray.dmi'
icon_state = "fatoray_scrap1"
desc = "Small parts that seemingly once belonged to some sort of a raygun."
/obj/item/trash/fatoray_scrap2
name = "raygun scraps"
- icon = 'GainStation13/icons/obj/fatoray_scrap.dmi'
+ icon = 'GainStation13/icons/obj/fatoray.dmi'
icon_state = "fatoray_scrap2"
desc = "Small parts that seemingly once belonged to some sort of a raygun."
+
+// GS13 fatty liquid beakers defs, for admin stuff and mapping junk
+
+/obj/item/reagent_containers/glass/beaker/lipoifier
+ list_reagents = list(/datum/reagent/consumable/lipoifier = 50)
+
+/obj/item/reagent_containers/glass/beaker/cornoil
+ list_reagents = list(/datum/reagent/consumable/cornoil = 50)
+
+/obj/item/reagent_containers/glass/beaker/cornoil
+ list_reagents = list(/datum/reagent/blueberry_juice = 50)
+
+/obj/item/reagent_containers/glass/beaker/cornoil
+ list_reagents = list(/datum/chemical_reaction/fizulphite = 50)
+
+/obj/item/reagent_containers/glass/beaker/cornoil
+ list_reagents = list(/datum/chemical_reaction/extilphite = 50)
+
+/obj/item/reagent_containers/glass/beaker/cornoil
+ list_reagents = list(/datum/reagent/consumable/caloriteblessing = 50)
+
+/obj/item/reagent_containers/glass/beaker/cornoil
+ list_reagents = list(/datum/reagent/consumable/flatulose = 50)
+
+//blueberry gum snack
+
+/obj/item/reagent_containers/food/snacks/blueberry_gum
+ name = "blueberry gum"
+ icon = 'GainStation13/icons/obj/gum.dmi'
+ icon_state = "gum_wrapped"
+ desc = "Doesn't cause anything more than some discoloration... probably."
+ trash = /obj/item/trash/blueberry_gum
+ list_reagents = list(/datum/reagent/blueberry_juice = 0.5)
+ filling_color = "#001aff"
+ tastes = list("blueberry gum" = 1)
+ foodtype = FRUIT
+ price = 5
+
+//blueberry gum trash
+
+/obj/item/trash/blueberry_gum
+ name = "chewed gum"
+ icon = 'GainStation13/icons/obj/gum.dmi'
+ icon_state = "gum_chewed"
diff --git a/GainStation13/code/obj/structure/calorite_doors.dm b/GainStation13/code/obj/structure/calorite_doors.dm
new file mode 100644
index 00000000..0d0602ff
--- /dev/null
+++ b/GainStation13/code/obj/structure/calorite_doors.dm
@@ -0,0 +1,92 @@
+
+
+/obj/structure/mineral_door/calorite //GS13
+ name = "calorite door"
+ icon = 'GainStation13/icons/obj/structure/calorite_door.dmi'
+ icon_state = "calorite"
+ sheetType = /obj/item/stack/sheet/mineral/calorite
+ max_integrity = 200
+ light_range = 1
+ var/fatten = FALSE // whether player will be fattened
+ var/fatten_delay = 1 // ticks per periodic loop
+ var/fat_to_add = 2 // fatness per tick stunned
+ var/stuck = FALSE // whether player is stuck
+ var/stuck_delay = 0 // set in proc/Fatten
+ var/blocked = FALSE // whether door is blocked
+
+// override /obj/structure/mineral_door/proc/Open()
+/obj/structure/mineral_door/calorite/Open() //GS13
+ isSwitchingStates = 1
+ playsound(src, openSound, 100, 1)
+ set_opacity(FALSE)
+ flick("[initial_state]opening",src)
+ sleep(10)
+ density = FALSE
+ state = 1
+ air_update_turf(1)
+ update_icon()
+ isSwitchingStates = 0
+
+ if(close_delay != -1)
+ addtimer(CALLBACK(src, .proc/Close), close_delay)
+
+ // start periodic loop
+ stuck = FALSE
+ addtimer(CALLBACK(src, .proc/Fatten), fatten_delay)
+
+/obj/structure/mineral_door/calorite/proc/Fatten() //GS13
+ if(state == 1) // door must be open
+ // check periodically
+ addtimer(CALLBACK(src, .proc/Fatten), fatten_delay)
+ // check for mobs in open door
+ var/turf/T = get_turf(src)
+ blocked = FALSE
+ for(var/mob/living/carbon/M in T)
+ blocked = TRUE
+ // determine if mob should get stuck and be fattened
+ if(M.fatness >= FATNESS_LEVEL_BARELYMOBILE)
+ fatten = TRUE
+ if (!stuck)
+ stuck_delay = 120
+ M.visible_message(
+ "[M] gets stuck in the doorway!",
+ "You feel yourself get stuck in the doorway!")
+ else if(M.fatness >= FATNESS_LEVEL_MORBIDLY_OBESE)
+ fatten = TRUE
+ if (!stuck)
+ stuck_delay = 50
+ M.visible_message(
+ "[M] barely squeezes through the doorway!",
+ "You feel your sides barely squeeze through the doorway!")
+ else if(M.fatness >= FATNESS_LEVEL_FATTER)
+ fatten = TRUE
+ if (!stuck)
+ stuck_delay = 15
+ M.visible_message(
+ "[M]'s sides briefly smush against the doorway.",
+ "You feel your sides smush against the doorway!.")
+ else if(M.fatness >= FATNESS_LEVEL_FAT)
+ fatten = TRUE
+ if (!stuck)
+ stuck_delay = 5
+ M.visible_message(
+ "[M]'s sides briefly brush against the doorway.",
+ "You feel your sides briefly brush against the doorway!")
+ else
+ fatten = FALSE
+ stuck = FALSE
+ stuck_delay = 0
+
+ if (fatten) // get stuck
+ if (!stuck)
+ M.Stun(stuck_delay/2) // give player time to escape
+ stuck = TRUE
+ if (stuck_delay > 0) // wait for stun to end
+ stuck_delay = stuck_delay - fatten_delay
+ if (stuck_delay <= 0)
+ stuck_delay = 0
+ // gain weight while stuck
+ M.adjust_fatness(fat_to_add, FATTENING_TYPE_ITEM)
+
+ if (!blocked)
+ stuck = FALSE // ready to go again
diff --git a/GainStation13/code/obj/weapons/fatoray.dm b/GainStation13/code/obj/weapons/fatoray.dm
index 8876532c..ff931d0c 100644
--- a/GainStation13/code/obj/weapons/fatoray.dm
+++ b/GainStation13/code/obj/weapons/fatoray.dm
@@ -31,7 +31,7 @@
light_range = 2
light_color = LIGHT_COLOR_ORANGE
///How much fat is added to the target mob?
- var/fat_added = 50 //Around 12.5 pounds per hit.
+ var/fat_added = 100
////// Fatoray - cannon variant, strong but can be charged
@@ -75,7 +75,7 @@
desc = "An energy gun that fattens up anyone it hits. This version is considerably weaker than its original counterpart, the technology behind it seemingly still not perfected."
icon = 'GainStation13/icons/obj/fatoray.dmi'
icon_state = "fatoray_weak"
- pin = null
+ pin = /obj/item/firing_pin
ammo_type = list(/obj/item/ammo_casing/energy/fattening/weak)
/obj/item/ammo_casing/energy/fattening/weak
@@ -89,7 +89,7 @@
icon = 'GainStation13/icons/obj/fatoray.dmi'
icon_state = "ray"
///How much fat is added to the target mob?
- fat_added = 20
+ fat_added = 50
///////////////////////////////////////////////////
@@ -102,7 +102,7 @@
can_charge = 0
recoil = 3
slowdown = 1
- pin = null
+ pin = /obj/item/firing_pin
// charge_sections = 3
weapon_weight = WEAPON_HEAVY
ammo_type = list(/obj/item/ammo_casing/energy/fattening/cannon_weak)
@@ -110,7 +110,7 @@
/obj/item/ammo_casing/energy/fattening/cannon_weak
name = "one-shot fattening weapon lens"
select_name = "fatten"
- e_cost = 300
+ e_cost = 200
projectile_type = /obj/item/projectile/energy/fattening/cannon_weak
/obj/item/projectile/energy/fattening/cannon_weak
diff --git a/GainStation13/icons/obj/fatoray.dmi b/GainStation13/icons/obj/fatoray.dmi
index fb45d0ba..0e59d334 100644
Binary files a/GainStation13/icons/obj/fatoray.dmi and b/GainStation13/icons/obj/fatoray.dmi differ
diff --git a/GainStation13/icons/obj/fatoray_scrap.dmi b/GainStation13/icons/obj/fatoray_scrap.dmi
deleted file mode 100644
index efde51f3..00000000
Binary files a/GainStation13/icons/obj/fatoray_scrap.dmi and /dev/null differ
diff --git a/GainStation13/icons/obj/sugarland/unusualtentical.dmi b/GainStation13/icons/obj/mobs/unusualtentical.dmi
similarity index 100%
rename from GainStation13/icons/obj/sugarland/unusualtentical.dmi
rename to GainStation13/icons/obj/mobs/unusualtentical.dmi
diff --git a/GainStation13/icons/obj/structure/calorite_door.dmi b/GainStation13/icons/obj/structure/calorite_door.dmi
new file mode 100644
index 00000000..21d3892c
Binary files /dev/null and b/GainStation13/icons/obj/structure/calorite_door.dmi differ
diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm
index dd45f3d4..d5820d52 100644
--- a/code/game/objects/items/stacks/sheets/mineral.dm
+++ b/code/game/objects/items/stacks/sheets/mineral.dm
@@ -290,13 +290,14 @@ GLOBAL_LIST_INIT(bananium_recipes, list ( \
sheettype = "calorite"
materials = list(MAT_CALORITE=MINERAL_MATERIAL_AMOUNT)
novariants = TRUE
- grind_results = list(/datum/reagent/consumable/lipoifier = 5)
+ grind_results = list(/datum/reagent/consumable/lipoifier = 3)
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),
+ 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),
+ new/datum/stack_recipe("Calorite doors", /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)
diff --git a/code/game/turfs/simulated/minerals.dm b/code/game/turfs/simulated/minerals.dm
index 69f21035..ad4dd87a 100644
--- a/code/game/turfs/simulated/minerals.dm
+++ b/code/game/turfs/simulated/minerals.dm
@@ -173,7 +173,7 @@
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
defer_change = 1
mineralSpawnChanceList = list(
- /turf/closed/mineral/uranium/volcanic = 35, /turf/closed/mineral/diamond/volcanic = 30, /turf/closed/mineral/gold/volcanic = 45, /turf/closed/mineral/titanium/volcanic = 45,
+ /turf/closed/mineral/uranium/volcanic = 35, /turf/closed/mineral/diamond/volcanic = 30, /turf/closed/mineral/calorite = 30, /turf/closed/mineral/gold/volcanic = 45, /turf/closed/mineral/titanium/volcanic = 45,
/turf/closed/mineral/silver/volcanic = 50, /turf/closed/mineral/plasma/volcanic = 50, /turf/closed/mineral/bscrystal/volcanic = 20)
diff --git a/code/modules/cargo/exports/large_objects.dm b/code/modules/cargo/exports/large_objects.dm
index 26e8f34b..0ef733d0 100644
--- a/code/modules/cargo/exports/large_objects.dm
+++ b/code/modules/cargo/exports/large_objects.dm
@@ -275,7 +275,7 @@
export_types = list(/obj/structure/statue/bananium/clown)
/datum/export/large/fattystatue //GS13
- cost = 2000
+ cost = 1500
unit_name = "Fatty statue"
export_types = list(/obj/structure/statue/calorite/fatty)
diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm
index cff9bad7..b8a14a9d 100644
--- a/code/modules/mob/dead/new_player/new_player.dm
+++ b/code/modules/mob/dead/new_player/new_player.dm
@@ -122,9 +122,11 @@
LateChoices()
return
- if(client.prefs.real_name in client.pastcharacters) //if character has been spawned before
- to_chat(usr, "You have played that character before this round, please select a new one!")
- return
+ // if(client.prefs.real_name in client.pastcharacters) //if character has been spawned before
+ // to_chat(usr, "You have played that character before this round, please select a new one!")
+ // return
+
+ //GS13 - commented it out to allow players to rejoin
if(SSticker.queued_players.len || (relevant_cap && living_player_count() >= relevant_cap && !(ckey(key) in GLOB.admin_datums)))
to_chat(usr, "[CONFIG_GET(string/hard_popcap_message)]")
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index ab20dc2d..2133535c 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -451,10 +451,12 @@ mob/visible_message(message, self_message, blind_message, vision_distance = DEFA
//if they didnt join as a observer, add their name to the past character list so they cannot play them again.
if(!usr.client.respawn_observing)
- var/responserespawn = alert(src,"If you respawn now, you cannot rejoin the game as your current character! Are you sure you want to respawn?","Warning","Yes","No")
- if(responserespawn != "Yes")
- return
- usr.client.pastcharacters += usr.real_name
+ var/responserespawn = alert(src,"Are you sure you want to respawn?","Warning","Yes","No")
+ // if(responserespawn != "Yes")
+ // return
+ // usr.client.pastcharacters += usr.real_name
+
+ //GS13 - commented out to allow players to rejoin with the same char
if(!client)
log_game("[key_name(usr)] AM failed due to disconnect.")
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index e2468c83..cb38d885 100644
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -254,12 +254,6 @@
/obj/item/reagent_containers/glass/beaker/synthflesh
list_reagents = list(/datum/reagent/medicine/synthflesh = 50)
-/obj/item/reagent_containers/glass/beaker/lipoifier
- list_reagents = list(/datum/reagent/consumable/lipoifier = 50) //GS13
-
-/obj/item/reagent_containers/glass/beaker/cornoil
- list_reagents = list(/datum/reagent/consumable/cornoil = 50) //GS13
-
/obj/item/reagent_containers/glass/bucket
name = "bucket"
desc = "It's a bucket."
diff --git a/tgstation.dme b/tgstation.dme
index 8f63a30f..196a60f9 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -23,8 +23,9 @@
#define FILE_DIR "GainStation13/icons/obj"
#define FILE_DIR "GainStation13/icons/obj/clothing"
#define FILE_DIR "GainStation13/icons/obj/lavaland_demone"
+#define FILE_DIR "GainStation13/icons/obj/mobs"
#define FILE_DIR "GainStation13/icons/obj/spells"
-#define FILE_DIR "GainStation13/icons/obj/sugarland"
+#define FILE_DIR "GainStation13/icons/obj/structure"
#define FILE_DIR "GainStation13/icons/turf"
#define FILE_DIR "GainStation13/sound"
#define FILE_DIR "GainStation13/sound/voice"
@@ -3343,6 +3344,7 @@
#include "GainStation13\code\modules\vending\GBBurrito.dm"
#include "GainStation13\code\modules\vending\mealdor.dm"
#include "GainStation13\code\obj\items\minor_items.dm"
+#include "GainStation13\code\obj\structure\calorite_doors.dm"
#include "GainStation13\code\obj\structure\scale.dm"
#include "GainStation13\code\obj\weapons\fatoray.dm"
#include "hyperstation\code\__DEFINES\economy.dm"