From 1844b6b55c1b76c141f0981da7731057e743e18e Mon Sep 17 00:00:00 2001 From: GDLW Date: Tue, 9 May 2023 14:53:54 +0200 Subject: [PATCH] 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"