From 43760c792a8f9adc93bd48c7b08b77cd5dd17336 Mon Sep 17 00:00:00 2001 From: Guti <32563288+TheCaramelion@users.noreply.github.com> Date: Tue, 9 Jun 2026 22:44:35 +0200 Subject: [PATCH] Unlucky Trait changes & additions (#19515) * Unlucky stuff * stone_grind * Wall vendors stay * For good measure * Real flatten --- code/datums/components/traits/unlucky.dm | 23 ++++++--- code/datums/elements/lootable/_lootable.dm | 4 +- code/game/gamemodes/events/clang.dm | 4 +- code/modules/economy/vending.dm | 57 +++++++++++++++++++++ sound/effects/stone_grind.ogg | Bin 0 -> 14636 bytes 5 files changed, 76 insertions(+), 12 deletions(-) create mode 100644 sound/effects/stone_grind.ogg diff --git a/code/datums/components/traits/unlucky.dm b/code/datums/components/traits/unlucky.dm index 1f558b9a66f..a057670d213 100644 --- a/code/datums/components/traits/unlucky.dm +++ b/code/datums/components/traits/unlucky.dm @@ -163,6 +163,8 @@ return if(vorish) + if(living_guy.stat >= DEAD) // Make sure they're alive, else it might end up with insta-digestion + return for(var/mob/living/living_mob in the_turf) if(living_mob == our_guy || (living_mob.vore_selected == living_guy.vore_selected)) continue //Don't do anything to ourselves. @@ -212,18 +214,23 @@ to_chat(living_guy, span_warning("[evil_light] glows ominously...")) // ominously evil_light.visible_message(span_boldwarning("[evil_light] suddenly flares brightly and sparks!")) - //evil_light.broken(skip_sound_and_sparks = FALSE) //Let's not break it actually. + evil_light.broken(skip_sound_and_sparks = FALSE) // LET'S BREAK IT ACTUALLY evil_light.Beam(living_guy, icon_state = "lightning[rand(1,12)]", time = 0.5 SECONDS) - living_guy.electrocute_act(35 * (damage_mod * 0.5), evil_light, stun = TRUE) //Stun is binary and scales on damage..Lame. - living_guy.emote("scream") + if(living_guy.electrocute_act(35 * (damage_mod * 0.5), evil_light, stun = TRUE)) //Stun is binary and scales on damage..Lame.) + living_guy.emote("scream") consume_omen() return for(var/obj/machinery/vending/darth_vendor in the_turf) - if(darth_vendor.stat & (BROKEN|NOPOWER)) - continue - darth_vendor.visible_message(span_warning("[darth_vendor] suddenly clunks and the delivery chute raises up!")) - darth_vendor.throw_item(living_guy) + if(prob(50)) + if(darth_vendor.stat & (BROKEN|NOPOWER)) + continue + darth_vendor.visible_message(span_warning("[darth_vendor] suddenly clunks and the delivery chute raises up!")) + darth_vendor.throw_item(living_guy) + else + if(darth_vendor.tilted || !darth_vendor.density) + continue + darth_vendor.crush_under(living_guy) consume_omen() return @@ -279,7 +286,7 @@ for(var/obj/structure/table/evil_table in the_turf) if(!evil_table.material) //We only want tables, not just table frames. continue - if(!prob(10)) //Reduce the chance further, due to the number of tables that are passed in normal play. + if(prob(90)) //Reduce the chance further, due to the number of tables that are passed in normal play. continue living_guy.visible_message(span_danger("[living_guy] stubs [living_guy.p_their()] toe on [evil_table]!"), span_bolddanger("You stub your toe on [evil_table]!")) living_guy.apply_damage(2 * damage_mod, BRUTE, pick(BP_L_FOOT, BP_R_FOOT), used_weapon = "blunt force trauma") diff --git a/code/datums/elements/lootable/_lootable.dm b/code/datums/elements/lootable/_lootable.dm index 65fd39a6669..ba955ae46c2 100644 --- a/code/datums/elements/lootable/_lootable.dm +++ b/code/datums/elements/lootable/_lootable.dm @@ -54,10 +54,10 @@ var/obj/item/loot = null var/span = "notice" // Blue - if(HAS_TRAIT(L, TRAIT_UNLUCKY) && unlucky_loot.len) // If you're unlucky, you will always find bad stuff. + if(HAS_TRAIT(L, TRAIT_UNLUCKY) && unlucky_loot.len && prob(15)) // If you're unlucky, you will probably find bad stuff. loot = produce_unlucky_item(source) span = "cult" // Purple and bold. - if(prob(1)) + if(prob(6)) to_chat(L, span_danger("You cut your hand on something in the trash!")) L.apply_damage(2, BRUTE, pick(BP_L_HAND, BP_R_HAND), used_weapon = "sharp object") var/datum/disease/advance/random/random_disease = new /datum/disease/advance/random() diff --git a/code/game/gamemodes/events/clang.dm b/code/game/gamemodes/events/clang.dm index 3ac0280a2b9..9c02406c20f 100644 --- a/code/game/gamemodes/events/clang.dm +++ b/code/game/gamemodes/events/clang.dm @@ -114,7 +114,7 @@ qdel(src) return - if(prob(10) && !has_hunted_unlucky) + if(!has_hunted_unlucky) hunt_unlucky() /obj/effect/immovablerod/proc/hunt_unlucky() @@ -122,7 +122,7 @@ if(HAS_TRAIT(unlucky_bugger, TRAIT_UNLUCKY)) has_hunted_unlucky = TRUE walk(src, 0) - //stone_grinding.ogg + playsound(src, 'sound/effects/stone_grind.ogg', 75) addtimer(CALLBACK(src, PROC_REF(fetch_boy), unlucky_bugger), 1 SECOND, TIMER_DELETE_ME) break diff --git a/code/modules/economy/vending.dm b/code/modules/economy/vending.dm index 547de5b0b2c..63b2a6f1594 100644 --- a/code/modules/economy/vending.dm +++ b/code/modules/economy/vending.dm @@ -78,6 +78,7 @@ var/req_log_access = ACCESS_CARGO //default access for checking logs is cargo var/has_logs = 0 //defaults to 0, set to anything else for vendor to have logs var/can_rotate = 1 //Defaults to yes, can be set to 0 for vendors without or with unwanted directionals. + var/tilted = FALSE /obj/machinery/vending/Initialize(mapload) @@ -358,6 +359,16 @@ GLOBAL_LIST_EMPTY(vending_products) if(shock(user, 100)) return + if(tilted) + balloon_alert(user, "setting upright") + if(do_after(user, 2 SECONDS, src)) + tilt(TRUE) + return + + if(user.a_intent == I_HURT && density) + punch_machine(user) + return + wires.Interact(user) tgui_interact(user) @@ -744,4 +755,50 @@ GLOBAL_LIST_EMPTY(vending_products) visible_message(span_warning("\The [src] launches \a [throw_item] at \the [target]!")) return 1 +/obj/machinery/vending/proc/crush_under(mob/living/unlucky) + if(!unlucky) + return + visible_message(span_warning("\The [src] tilts over, falling on [unlucky]!")) + forceMove(get_turf(unlucky)) + for(var/mob/living/mob in get_turf(unlucky)) + mob.take_overall_damage(30) + mob.Stun(2) + mob.Weaken(5) + tilt() + +/obj/machinery/vending/proc/tilt(upright = FALSE) + if(!upright) + var/matrix/M = matrix() + M.Turn(90) + animate(src, transform = M, time = 0.25 SECOND) + playsound(src, 'sound/effects/meteorimpact.ogg', 50, 1) + tilted = TRUE + anchored = FALSE + plane = ABOVE_MOB_PLANE + else + animate(src, transform = matrix(), time = 0.4 SECOND) + tilted = FALSE + plane = initial(plane) + +/obj/machinery/vending/proc/punch_machine(mob/living/stupid_person) + stupid_person.visible_message(span_danger("[stupid_person] kicks \the [src]!"), span_danger("You kick \the [src]")) + playsound(src, 'sound/effects/clang2.ogg', 25, TRUE) + animate_shake() + + if(prob(10)) + crush_under(stupid_person) + return + + if(prob(5)) + var/obj/item/throw_item = null + for(var/datum/stored_item/vending_product/R in shuffle(product_records)) + throw_item = R.get_product(loc) + if(!throw_item) + continue + break + if(!throw_item) + return FALSE + throw_item.vendor_action(src) + playsound(src, vending_sound, 50, TRUE) + //Actual machines are in vending_machines.dm diff --git a/sound/effects/stone_grind.ogg b/sound/effects/stone_grind.ogg new file mode 100644 index 0000000000000000000000000000000000000000..8ce424fea8185b1ce841e250a77fe7a963a81526 GIT binary patch literal 14636 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