diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm index 1a3997272a..af9c10abc6 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm @@ -666,7 +666,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)) + if(last_disk_move < world.time - 5000 && prob((world.time - 5000 - last_disk_move)*0.0001 / max(disk_comfort_level,1))) var/datum/round_event_control/operative/loneop = locate(/datum/round_event_control/operative) in SSevents.control if(istype(loneop) && loneop.occurrences < loneop.max_occurrences) loneop.weight += 1 diff --git a/code/modules/mining/lavaland/ruins/gym.dm b/code/modules/mining/lavaland/ruins/gym.dm index c26631be74..68e0706d84 100644 --- a/code/modules/mining/lavaland/ruins/gym.dm +++ b/code/modules/mining/lavaland/ruins/gym.dm @@ -1,7 +1,7 @@ /obj/structure/punching_bag name = "punching bag" desc = "A punching bag. Can you get to speed level 4???" - icon = 'goon/icons/obj/fitness.dmi' + icon = 'icons/obj/fitness.dmi' icon_state = "punchingbag" anchored = TRUE layer = WALL_OBJ_LAYER @@ -12,7 +12,7 @@ . = ..() if(.) return - flick("[icon_state]2", src) + flick("[icon_state]-punch", src) playsound(loc, pick(hit_sounds), 25, 1, -1) if(isliving(user)) var/mob/living/L = user @@ -20,15 +20,24 @@ L.apply_status_effect(STATUS_EFFECT_EXERCISED) /obj/structure/weightmachine - name = "Weight Machine" desc = "Just looking at this thing makes you feel tired." + icon = 'icons/obj/fitness.dmi' density = TRUE anchored = TRUE - var/icon_state_inuse /obj/structure/weightmachine/proc/AnimateMachine(mob/living/user) return +/obj/structure/weightmachine/update_icon_state() + . = ..() + icon_state = (obj_flags & IN_USE) ? "[base_icon_state]-u" : base_icon_state + +/obj/structure/weightmachine/update_overlays() + . = ..() + + if(obj_flags & IN_USE) + . += mutable_appearance(icon, "[base_icon_state]-o", layer = ABOVE_MOB_LAYER, alpha = src.alpha) + /obj/structure/weightmachine/on_attack_hand(mob/living/user, act_intent = user.a_intent, unarmed_attack_flags) . = ..() if(.) @@ -38,7 +47,7 @@ return else obj_flags |= IN_USE - icon_state = icon_state_inuse + update_appearance() user.setDir(SOUTH) user.Stun(80) user.forceMove(src.loc) @@ -48,17 +57,17 @@ playsound(user, 'sound/machines/click.ogg', 60, 1) obj_flags &= ~IN_USE + update_appearance() user.pixel_y = 0 var/finishmessage = pick("You feel stronger!","You feel like you can take on the world!","You feel robust!","You feel indestructible!") SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "exercise", /datum/mood_event/exercise) - icon_state = initial(icon_state) to_chat(user, finishmessage) user.apply_status_effect(STATUS_EFFECT_EXERCISED) /obj/structure/weightmachine/stacklifter - icon = 'goon/icons/obj/fitness.dmi' - icon_state = "fitnesslifter" - icon_state_inuse = "fitnesslifter2" + name = "chest press machine" + icon_state = "stacklifter" + base_icon_state = "stacklifter" /obj/structure/weightmachine/stacklifter/AnimateMachine(mob/living/user) var/lifts = 0 @@ -69,27 +78,24 @@ animate(user, pixel_y = -2, time = 3) sleep(3) animate(user, pixel_y = -4, time = 3) - sleep(3) - playsound(user, 'goon/sound/effects/spring.ogg', 60, 1) + sleep(2) + playsound(user, 'sound/machines/creak.ogg', 60, 1) /obj/structure/weightmachine/weightlifter - icon = 'goon/icons/obj/fitness.dmi' - icon_state = "fitnessweight" - icon_state_inuse = "fitnessweight-c" + name = "inline bench press" + icon_state = "benchpress" + base_icon_state = "benchpress" /obj/structure/weightmachine/weightlifter/AnimateMachine(mob/living/user) - var/mutable_appearance/swole_overlay = mutable_appearance(icon, "fitnessweight-w", WALL_OBJ_LAYER) - add_overlay(swole_overlay) var/reps = 0 user.pixel_y = 5 while (reps++ < 6) if (user.loc != src.loc) break for (var/innerReps = max(reps, 1), innerReps > 0, innerReps--) - sleep(3) + sleep(4) animate(user, pixel_y = (user.pixel_y == 3) ? 5 : 3, time = 3) - playsound(user, 'goon/sound/effects/spring.ogg', 60, 1) + playsound(user, 'sound/machines/creak.ogg', 60, 1) sleep(3) animate(user, pixel_y = 2, time = 3) sleep(3) - cut_overlay(swole_overlay) diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index 9d887a8e1f..567ac00487 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -34,6 +34,7 @@ field_generator power level display max_integrity = 500 //100% immune to lasers and energy projectiles since it absorbs their energy. armor = list(MELEE = 25, BULLET = 10, LASER = 100, ENERGY = 100, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 70) + var/obj/item/radio/radio var/const/num_power_levels = 6 // Total number of power level icon has var/power_level = 0 var/active = FG_OFFLINE @@ -58,6 +59,9 @@ field_generator power level display . = ..() fields = list() connected_gens = list() + radio = new(src) + radio.listening = 0 + radio.recalculateChannels() /obj/machinery/field/generator/ComponentInitialize() . = ..() @@ -166,6 +170,7 @@ field_generator power level display /obj/machinery/field/generator/Destroy() cleanup() + QDEL_NULL(radio) return ..() @@ -333,6 +338,7 @@ field_generator power level display if((world.time - O.last_warning) > 50) //to stop message-spam temp = 0 var/turf/T = get_turf(src) + radio.talk_into(src, "A containment field has failed in [get_area_name(src, TRUE)] while a singularity exists.", null, language = get_selected_language()) message_admins("A singulo exists and a containment field has failed at [ADMIN_VERBOSEJMP(T)].") investigate_log("has failed whilst a singulo exists at [AREACOORD(T)].", INVESTIGATE_SINGULO) O.last_warning = world.time diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 8490daa681..29fd68d034 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -415,17 +415,13 @@ /obj/singularity/proc/mezzer() for(var/mob/living/carbon/M in oviewers(8, src)) - if(isbrain(M)) //Ignore brains - continue - - if(M.stat == CONSCIOUS) - if (ishuman(M)) - var/mob/living/carbon/human/H = M - if(istype(H.glasses, /obj/item/clothing/glasses/meson)) - var/obj/item/clothing/glasses/meson/MS = H.glasses - if(MS.vision_flags == SEE_TURFS) - to_chat(H, "You look directly into the [src.name], good thing you had your protective eyewear on!") - return + if(M.stat == CONSCIOUS && ishuman(M)) + var/mob/living/carbon/human/H = M + if(istype(H.glasses, /obj/item/clothing/glasses/meson)) + var/obj/item/clothing/glasses/meson/MS = H.glasses + if(MS.vision_flags == SEE_TURFS) + to_chat(H, "You look directly into the [src.name], good thing you had your protective eyewear on!") + return M.apply_effect(60, EFFECT_STUN) M.visible_message("[M] stares blankly at the [src.name]!", \ diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index cc02e271f9..9c7ca5b999 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -84,15 +84,7 @@ Note: Must be placed within 3 tiles of the R&D Console reclaim_materials_from(thing) for(var/mob/M in thing) M.death() - if(istype(thing, /obj/item/stack/sheet)) - var/obj/item/stack/sheet/S = thing - if(S.amount > 1 && !innermode) - S.amount-- - loaded_item = S - else - qdel(S) - else - qdel(thing) + qdel(thing) if (!innermode) update_icon() return TRUE diff --git a/goon/icons/obj/chairs.dmi b/goon/icons/obj/chairs.dmi deleted file mode 100644 index 462370ac37..0000000000 Binary files a/goon/icons/obj/chairs.dmi and /dev/null differ diff --git a/goon/icons/obj/fitness.dmi b/goon/icons/obj/fitness.dmi deleted file mode 100644 index e2675cbda4..0000000000 Binary files a/goon/icons/obj/fitness.dmi and /dev/null differ diff --git a/goon/sound/effects/spring.ogg b/goon/sound/effects/spring.ogg deleted file mode 100644 index 472a75e304..0000000000 Binary files a/goon/sound/effects/spring.ogg and /dev/null differ diff --git a/html/changelogs/archive/2022-09.yml b/html/changelogs/archive/2022-09.yml new file mode 100644 index 0000000000..e0dee70cac --- /dev/null +++ b/html/changelogs/archive/2022-09.yml @@ -0,0 +1,25 @@ +2022-09-01: + Putnam3145: + - bugfix: Job code is no longer fricked (oh well) + - rscadd: Antag roles can be set to "low" rather than just "enabled" or "disabled", + which will prevent spending antag rep on that antag but make you a low priority + pick + - code_imp: Changed no antags from a special role to a toggle (why did i make it + a special role) + - code_imp: All direct references to ROLE_NO_ANTAGONISTS have been swapped to the + HAS_ANTAG_PREF macro or removed +2022-09-02: + Putnam3145: + - tweak: comfy disky no longer wants the station to blow up + - balance: Field generators now yell if they fail (singuloose nerf) + ? zeroisthebiggay and Tastyfish (https://github.com/Tastyfish) and Fikou (https://github.com/Fikou) + and san7890 (https://github.com/san7890) + : - bugfix: The 2 types of weight machines now have unique in-game names. + - imageadd: New sprites for the weight machines. + - imageadd: new punching bag sprites!!!!!!!!!!!!!!!! + - soundadd: The next time you work out at the gym, please appreciate the new crispness + of the sound when that machine starts to squeak as a result of your effort. + So refreshing. +2022-09-03: + Putnam3145: + - bugfix: Destructive analyzer now does not multiply your stack by 50 diff --git a/icons/obj/fitness.dmi b/icons/obj/fitness.dmi new file mode 100644 index 0000000000..c48e2450fb Binary files /dev/null and b/icons/obj/fitness.dmi differ diff --git a/sound/machines/creak.ogg b/sound/machines/creak.ogg new file mode 100644 index 0000000000..edb9802b08 Binary files /dev/null and b/sound/machines/creak.ogg differ