From bf66e81eed335cc1ab4f4d16661de6e4f2e9cd00 Mon Sep 17 00:00:00 2001 From: Sonoida Date: Sun, 23 Apr 2023 20:09:26 +0200 Subject: [PATCH 1/5] fatoray balance added pins, made fatorays stronger --- GainStation13/code/obj/weapons/fatoray.dm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) 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 From 03c84d6bd9226fec00226cfd0096b63c6fe8ab25 Mon Sep 17 00:00:00 2001 From: GDLW Date: Tue, 9 May 2023 13:55:22 +0200 Subject: [PATCH 2/5] calorite doors tl;dr the fatter you are, the longer you get stuck and the more you fatten (thank you surftheseawing for immense help with the code) --- .../objects/items/stacks/sheets/mineral.dm | 7 +- code/game/objects/structures/mineral_doors.dm | 91 +++++++++++++++++++ code/game/turfs/simulated/minerals.dm | 2 +- code/modules/cargo/exports/large_objects.dm | 2 +- 4 files changed, 97 insertions(+), 5 deletions(-) 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/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index 5c6bd48f..3718be66 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -167,6 +167,97 @@ /obj/structure/mineral_door/uranium/ComponentInitialize() return + +/obj/structure/mineral_door/calorite //GS13 + name = "calorite door" + icon_state = "paperframe" + 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 brush 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 + /obj/structure/mineral_door/sandstone name = "sandstone door" icon_state = "sandstone" 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) From 1844b6b55c1b76c141f0981da7731057e743e18e Mon Sep 17 00:00:00 2001 From: GDLW Date: Tue, 9 May 2023 14:53:54 +0200 Subject: [PATCH 3/5] calorite doooors tl;dr fatasses will get stuck in them and get even fatter (wow!) (thank you surftheseawing (Carreg) for mega help with the code) --- GainStation13/code/obj/items/minor_items.dm | 4 +- .../code/obj/structure/calorite_doors.dm | 92 ++++++++++++++++++ GainStation13/icons/obj/fatoray.dmi | Bin 1335 -> 1703 bytes GainStation13/icons/obj/fatoray_scrap.dmi | Bin 613 -> 0 bytes .../{sugarland => mobs}/unusualtentical.dmi | Bin .../icons/obj/structure/calorite_door.dmi | Bin 0 -> 2319 bytes code/game/objects/structures/mineral_doors.dm | 91 ----------------- tgstation.dme | 4 +- 8 files changed, 97 insertions(+), 94 deletions(-) create mode 100644 GainStation13/code/obj/structure/calorite_doors.dm delete mode 100644 GainStation13/icons/obj/fatoray_scrap.dmi rename GainStation13/icons/obj/{sugarland => mobs}/unusualtentical.dmi (100%) create mode 100644 GainStation13/icons/obj/structure/calorite_door.dmi diff --git a/GainStation13/code/obj/items/minor_items.dm b/GainStation13/code/obj/items/minor_items.dm index 7a8da914..da1f1c3a 100644 --- a/GainStation13/code/obj/items/minor_items.dm +++ b/GainStation13/code/obj/items/minor_items.dm @@ -2,12 +2,12 @@ /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." 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/icons/obj/fatoray.dmi b/GainStation13/icons/obj/fatoray.dmi index fb45d0ba724043ebd87ae9603ec86c5e0b39cd4b..0e59d3348ba5dedfe089310fac7ddc3b812b5249 100644 GIT binary patch delta 1584 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 A761SM literal 0 HcmV?d00001 diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index 3718be66..5c6bd48f 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -167,97 +167,6 @@ /obj/structure/mineral_door/uranium/ComponentInitialize() return - -/obj/structure/mineral_door/calorite //GS13 - name = "calorite door" - icon_state = "paperframe" - 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 brush 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 - /obj/structure/mineral_door/sandstone name = "sandstone door" icon_state = "sandstone" diff --git a/tgstation.dme b/tgstation.dme index 8f63a30f..c745950d 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" @@ -3344,6 +3345,7 @@ #include "GainStation13\code\modules\vending\mealdor.dm" #include "GainStation13\code\obj\items\minor_items.dm" #include "GainStation13\code\obj\structure\scale.dm" +#include "GainStation13\code\obj\structure\calorite_doors.dm" #include "GainStation13\code\obj\weapons\fatoray.dm" #include "hyperstation\code\__DEFINES\economy.dm" #include "hyperstation\code\__DEFINES\wendigo.dm" From f91cd25b64ee8e4e37e929358f97e5c427de72e7 Mon Sep 17 00:00:00 2001 From: GDLW Date: Tue, 9 May 2023 15:34:54 +0200 Subject: [PATCH 4/5] blueberry gum added a chem, vendor item and trash variant for the item. Also reorganized some files. The blueberry chem does nothing more than recoloring the player, that's it --- .../chemistry/reagents/consumable_reagents.dm | 17 +++++++ GainStation13/code/modules/vending/mealdor.dm | 5 +- GainStation13/code/obj/items/minor_items.dm | 49 ++++++++++++++++++- .../reagents/reagent_containers/glass.dm | 6 --- tgstation.dme | 2 +- 5 files changed, 69 insertions(+), 10 deletions(-) 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 da1f1c3a..9a4b6122 100644 --- a/GainStation13/code/obj/items/minor_items.dm +++ b/GainStation13/code/obj/items/minor_items.dm @@ -1,4 +1,7 @@ -/////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" @@ -11,3 +14,47 @@ 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/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 c745950d..196a60f9 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3344,8 +3344,8 @@ #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\scale.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" #include "hyperstation\code\__DEFINES\wendigo.dm" From e6679878b345c8b89a1988753cb2078f0a68384e Mon Sep 17 00:00:00 2001 From: GDLW Date: Tue, 9 May 2023 16:03:21 +0200 Subject: [PATCH 5/5] respawn limit removed you can now respawn as the same character --- code/modules/mob/dead/new_player/new_player.dm | 8 +++++--- code/modules/mob/mob.dm | 10 ++++++---- 2 files changed, 11 insertions(+), 7 deletions(-) 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.")