diff --git a/GainStation13/code/obj/structure/calorite_doors.dm b/GainStation13/code/obj/structure/calorite_doors.dm index 0d0602ff..16644c50 100644 --- a/GainStation13/code/obj/structure/calorite_doors.dm +++ b/GainStation13/code/obj/structure/calorite_doors.dm @@ -1,5 +1,3 @@ - - /obj/structure/mineral_door/calorite //GS13 name = "calorite door" icon = 'GainStation13/icons/obj/structure/calorite_door.dmi' @@ -16,77 +14,66 @@ // 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) + START_PROCESSING(SSprocessing, src) + +/obj/structure/mineral_door/calorite/process() + if(!state) // Door be closed!!! + STOP_PROCESSING(SSprocessing, src) + + Fatten() /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) + 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