From c67ef2fadbe9b0ae02989187dc734264a969a4a8 Mon Sep 17 00:00:00 2001 From: LazennG <58535870+LazennG@users.noreply.github.com> Date: Mon, 27 Feb 2023 23:09:09 -0800 Subject: [PATCH 1/6] lets GO --- code/__DEFINES/status_effects.dm | 2 + code/datums/status_effects/buffs.dm | 45 +++++++++- .../temporary_visuals/miscellaneous.dm | 4 + .../items/devices/busterarm/_buster.dm | 16 +++- .../items/devices/busterarm/buster_limb.dm | 18 ++-- .../items/devices/busterarm/grapple.dm | 16 ++-- .../items/devices/busterarm/megabuster.dm | 19 +++-- .../objects/items/devices/busterarm/mop.dm | 22 ++--- .../objects/items/devices/busterarm/slam.dm | 77 ++++++++---------- .../items/devices/busterarm/wire_snatch.dm | 9 +- code/modules/uplink/uplink_items.dm | 3 +- icons/mob/augmentation/augments_buster.dmi | Bin 1037 -> 1035 bytes icons/mob/screen_alert.dmi | Bin 119126 -> 119938 bytes 13 files changed, 145 insertions(+), 86 deletions(-) diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm index fef4e566b9ed..0d00b6c713ac 100644 --- a/code/__DEFINES/status_effects.dm +++ b/code/__DEFINES/status_effects.dm @@ -48,6 +48,8 @@ #define STATUS_EFFECT_FRENZY /datum/status_effect/frenzy //Makes you fast and stronger +#define STATUS_EFFECT_DOUBLEDOWN /datum/status_effect/doubledown //Greatly reduced damage taken + ///////////// // DEBUFFS // ///////////// diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index e5907d6d7e3e..fb9d0e4d5931 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -588,4 +588,47 @@ name = "Time Dilation" desc = "Your actions are twice as fast, and the delay between them is halved. Additionally, you are immune to slowdown." icon = 'yogstation/icons/mob/actions/actions_darkspawn.dmi' - icon_state = "time_dilation" //yogs end + icon_state = "time_dilation" + +/datum/status_effect/doubledown + id = "doubledown" + duration = 20 + tick_interval = 0 + status_type = STATUS_EFFECT_REFRESH + alert_type = /atom/movable/screen/alert/status_effect/doubledown + var/obj/effect/temp_visual/decoy/tensecond/F //surely a combo wont go on for more than 10 seconds + +/atom/movable/screen/alert/status_effect/doubledown + name = "Doubling Down" + desc = "Taking 65% less damage, go all in!" + icon_state = "aura" + +/datum/status_effect/doubledown/on_apply() + . = ..() + if(.) + if(ishuman(owner)) + var/mob/living/carbon/human/H = owner + F = new(get_turf(H),H) + walk_towards(F, H) + animate(F, alpha = 100, color = "#d40a0a", transform = matrix()*1.25, time = 0.25 SECONDS) + H.ignore_slowdown(type) + H.physiology.brute_mod *= 0.35 + H.physiology.burn_mod *= 0.35 + H.physiology.tox_mod *= 0.35 + H.physiology.oxy_mod *= 0.35 + H.physiology.clone_mod *= 0.35 + H.physiology.stamina_mod *= 0.35 + owner.log_message("gained buster damage reduction", LOG_ATTACK) + +/datum/status_effect/doubledown/on_remove() + if(ishuman(owner)) + qdel(F) + var/mob/living/carbon/human/H = owner + H.unignore_slowdown(type) + H.physiology.brute_mod *= 2.85 + H.physiology.burn_mod *= 2.85 + H.physiology.tox_mod *= 2.85 + H.physiology.oxy_mod *= 2.85 + H.physiology.clone_mod *= 2.85 + H.physiology.stamina_mod *= 2.85 + owner.log_message("lost buster damage reduction", LOG_ATTACK)//yogs end diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm index edd83109c1e6..0f354533774f 100644 --- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm +++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm @@ -224,6 +224,10 @@ . = ..() animate(src, alpha = 0, time = duration) +/obj/effect/temp_visual/decoy/tensecond + desc = "It's a decoy!" + duration = 10 SECONDS + /obj/effect/temp_visual/decoy/fading/threesecond duration = 4 SECONDS diff --git a/code/game/objects/items/devices/busterarm/_buster.dm b/code/game/objects/items/devices/busterarm/_buster.dm index d8a97018acbf..ce34f646d072 100644 --- a/code/game/objects/items/devices/busterarm/_buster.dm +++ b/code/game/objects/items/devices/busterarm/_buster.dm @@ -3,13 +3,13 @@ /// Originally shitcoded by Lazenn, reorganized by ynot01 /* Formatting for these files, from top to bottom: - * Spell/Action + * Action * Trigger() * IsAvailable() * Items - In regards to spells or items with left and right subtypes, list the base, then left, then right. + In regards to actions or items with left and right subtypes, list the base, then left, then right. */ -/// Base for all buster arm spells +/// Base for all buster arm actions /datum/action/cooldown/buster check_flags = AB_CHECK_RESTRAINED|AB_CHECK_STUN|AB_CHECK_CONSCIOUS transparent_when_unavailable = TRUE @@ -47,3 +47,13 @@ var/obj/item/bodypart/limb_to_hit = target.get_bodypart(user.zone_selected) var/armor = target.run_armor_check(limb_to_hit, MELEE, armour_penetration = 35) target.apply_damage(damage, BRUTE, limb_to_hit, armor, wound_bonus=CANT_WOUND) + +//knocking them down +/datum/action/cooldown/buster/proc/footsies(mob/living/target) + if(target.stat == CONSCIOUS && target.resting == FALSE && !target.has_status_effect(STATUS_EFFECT_PARALYZED) && !target.has_status_effect(STATUS_EFFECT_KNOCKDOWN)) + animate(target, transform = matrix(90, MATRIX_ROTATE), time = 0.1 SECONDS, loop = 0) + +//Check for if someone is allowed to be stood back up +/datum/action/cooldown/buster/proc/wakeup(mob/living/target) + if(target.stat == CONSCIOUS && target.resting == FALSE && !target.has_status_effect(STATUS_EFFECT_PARALYZED) && !target.has_status_effect(STATUS_EFFECT_KNOCKDOWN)) + animate(target, transform = null, time = 0.4 SECONDS, loop = 0) diff --git a/code/game/objects/items/devices/busterarm/buster_limb.dm b/code/game/objects/items/devices/busterarm/buster_limb.dm index dfe8b708813a..c6f74d6ade27 100644 --- a/code/game/objects/items/devices/busterarm/buster_limb.dm +++ b/code/game/objects/items/devices/busterarm/buster_limb.dm @@ -1,9 +1,9 @@ /* Formatting for these files, from top to bottom: - * Spell/Action + * Action * Trigger() * IsAvailable() * Items - In regards to spells or items with left and right subtypes, list the base, then left, then right. + In regards to actions or items with left and right subtypes, list the base, then left, then right. */ /// The Buster Arm (Left) /// Same as the right one, but replaces your left arm! @@ -14,7 +14,7 @@ desc = "A robotic arm designed explicitly for combat and providing the user with extreme power. It can be configured by hand to fit on the opposite arm." icon = 'icons/mob/augmentation/augments_buster.dmi' icon_state = "left_buster_arm" - max_damage = 60 + max_damage = 50 aux_layer = 12 var/obj/item/bodypart/r_arm/robot/buster/opphand var/datum/action/cooldown/buster/wire_snatch/l/wire_action =new/datum/action/cooldown/buster/wire_snatch/l() @@ -23,7 +23,7 @@ var/datum/action/cooldown/buster/slam/l/slam_action = new/datum/action/cooldown/buster/slam/l() var/datum/action/cooldown/buster/megabuster/l/megabuster_action = new/datum/action/cooldown/buster/megabuster/l() -/// Set up our spells, disable gloves +/// Set up our actions, disable gloves /obj/item/bodypart/l_arm/robot/buster/attach_limb(mob/living/carbon/N, special) . = ..() var/datum/species/S = N.dna?.species @@ -34,7 +34,7 @@ slam_action.Grant(N) megabuster_action.Grant(N) -/// Remove our spells, re-enable gloves +/// Remove our actions, re-enable gloves /obj/item/bodypart/l_arm/robot/buster/drop_limb(special) var/mob/living/carbon/N = owner var/datum/species/S = N.dna?.species @@ -64,14 +64,14 @@ opphand.burn_dam = src.burn_dam to_chat(user, span_notice("You modify [src] to be installed on the right arm.")) qdel(src) - + /// Same code as above, but set up for the right arm instead /obj/item/bodypart/r_arm/robot/buster name = "right buster arm" desc = "A robotic arm designed explicitly for combat and providing the user with extreme power. It can be configured by hand to fit on the opposite arm." icon = 'icons/mob/augmentation/augments_buster.dmi' icon_state = "right_buster_arm" - max_damage = 60 + max_damage = 50 aux_layer = 12 var/obj/item/bodypart/l_arm/robot/buster/opphand var/datum/action/cooldown/buster/wire_snatch/r/wire_action = new/datum/action/cooldown/buster/wire_snatch/r() @@ -80,7 +80,7 @@ var/datum/action/cooldown/buster/slam/r/slam_action = new/datum/action/cooldown/buster/slam/r() var/datum/action/cooldown/buster/megabuster/r/megabuster_action = new/datum/action/cooldown/buster/megabuster/r() -/// Set up our spells, disable gloves +/// Set up our actions, disable gloves /obj/item/bodypart/r_arm/robot/buster/attach_limb(mob/living/carbon/N, special) . = ..() var/datum/species/S = N.dna?.species @@ -91,7 +91,7 @@ slam_action.Grant(N) megabuster_action.Grant(N) -/// Remove our spells, re-enable gloves +/// Remove our actions, re-enable gloves /obj/item/bodypart/r_arm/robot/buster/drop_limb(special) var/mob/living/carbon/N = owner var/datum/species/S = N.dna?.species diff --git a/code/game/objects/items/devices/busterarm/grapple.dm b/code/game/objects/items/devices/busterarm/grapple.dm index d8462012de20..7820c9edb0e5 100644 --- a/code/game/objects/items/devices/busterarm/grapple.dm +++ b/code/game/objects/items/devices/busterarm/grapple.dm @@ -1,11 +1,11 @@ /* Formatting for these files, from top to bottom: - * Spell/Action + * Action * Trigger() * IsAvailable() * Items - In regards to spells or items with left and right subtypes, list the base, then left, then right. + In regards to actions or items with left and right subtypes, list the base, then left, then right. */ -////////////////// Spell ////////////////// +////////////////// Action ////////////////// /datum/action/cooldown/buster/grap name = "Grapple" desc = "Prepare your left hand for grabbing. Throw your target and inflict more damage \ @@ -89,14 +89,15 @@ return if(target == user) return - if(isfloorturf(target)) + if(isopenturf(target)) return if(iswallturf(target)) return if(isitem(target)) return - - if(isstructure(target) || ismachinery(target) ||ismecha(target)) + if(iseffect(target)) + return + if(isstructure(target) || ismachinery(target) || ismecha(target)) var/obj/I = target var/old_density = I.density if(istype(I, /obj/mecha)) // Can pick up mechs @@ -107,6 +108,7 @@ I.visible_message(span_warning("[user] grabs [I] and tears it off the bolts securing it!")) else return + user.apply_status_effect(STATUS_EFFECT_DOUBLEDOWN) I.visible_message(span_warning("[user] grabs [I] and lifts it above [user.p_their()] head!")) qdel(src) // Remove the grapple hand so we cant carry several things at once animate(I, time = 0.2 SECONDS, pixel_y = 20) @@ -233,7 +235,7 @@ /// Invisible bed helper that buckles mobs to us /obj/structure/bed/grip - name = "" + name = "buster arm" icon_state = "" can_buckle = TRUE density = FALSE diff --git a/code/game/objects/items/devices/busterarm/megabuster.dm b/code/game/objects/items/devices/busterarm/megabuster.dm index 6e274a00c186..806f0406d5d2 100644 --- a/code/game/objects/items/devices/busterarm/megabuster.dm +++ b/code/game/objects/items/devices/busterarm/megabuster.dm @@ -1,11 +1,11 @@ /* Formatting for these files, from top to bottom: - * Spell/Action + * Action * Trigger() * IsAvailable() * Items - In regards to spells or items with left and right subtypes, list the base, then left, then right. + In regards to actions or items with left and right subtypes, list the base, then left, then right. */ -////////////////// Spell ////////////////// +////////////////// Action ////////////////// /datum/action/cooldown/buster/megabuster name = "Mega Buster" // Literal essay. It just punches shit really hard. @@ -114,7 +114,7 @@ return if(target == user) return - + // Punch items, if you wanted to do that for some reason. Can't destroy brains though. if(isitem(target)) var/obj/I = target @@ -130,7 +130,9 @@ // Punch open turf (does nothing) if(isopenturf(target)) return - + if(iseffect(target)) + return + user.apply_status_effect(STATUS_EFFECT_DOUBLEDOWN) playsound(L, 'sound/effects/gravhit.ogg', 60, 1) if(iswallturf(target)) // Destroys a wall var/turf/closed/wall/W = target @@ -174,14 +176,17 @@ else // If you target a limb and it's fully damaged then lop it off var/atom/throw_target = get_edge_target_turf(L, direction) to_chat(L, span_userdanger("[user] blows [limb_to_hit] off with inhuman force!")) - user.visible_message(span_warning("[user] punches [L]'s [limb_to_hit] clean off!")) + user.visible_message(span_warning("[user] punches [limb_to_hit] clean off!")) limb_to_hit.drop_limb() limb_to_hit.throw_at(throw_target, 8, 4, user, 3) L.Paralyze(3 SECONDS) return // Stop here, don't bother throwing L.SpinAnimation(0.5 SECONDS, 2) to_chat(L, span_userdanger("[user] hits you with a blast of energy and sends you flying!")) - user.visible_message(span_warning("[user] blasts [L] with a surge of energy and sends [L.p_them()] flying!")) + if(!istype(limb_to_hit, /obj/item/bodypart/head)) + user.visible_message(span_warning("[user] blasts [L] with a surge of energy and sends [L.p_them()] flying!")) + else + user.visible_message(span_warning("[user] smashes [user.p_their()] fist upwards into [L]'s jaw, sending [L.p_them()] flying!"))//slicer's request knockedback |= L // Shake cameras Woosh for(var/mob/M in view(7, user)) diff --git a/code/game/objects/items/devices/busterarm/mop.dm b/code/game/objects/items/devices/busterarm/mop.dm index 858e86955b57..385a6c1d88c5 100644 --- a/code/game/objects/items/devices/busterarm/mop.dm +++ b/code/game/objects/items/devices/busterarm/mop.dm @@ -1,11 +1,11 @@ /* Formatting for these files, from top to bottom: - * Spell/Action + * Action * Trigger() * IsAvailable() * Items - In regards to spells or items with left and right subtypes, list the base, then left, then right. + In regards to actions or items with left and right subtypes, list the base, then left, then right. */ -////////////////// Spell ////////////////// +////////////////// Action ////////////////// /datum/action/cooldown/buster/mop name = "Mop the Floor" desc = "Launch forward and drag whoever's in front of you on the ground. The \ @@ -42,21 +42,19 @@ animate(F, alpha = 0, color = "#d40a0a", time = 0.5 SECONDS) // Cool after-image for(var/mob/living/L in T.contents) // Take all mobs we encounter with us if(L != B) // Don't want to mop ourselves haha + B.apply_status_effect(STATUS_EFFECT_DOUBLEDOWN) mopped |= L // Add them to the list of things we are mopping L.add_fingerprint(B, FALSE) var/turf/Q = get_step(get_turf(B), B.dir) // Get the turf ahead to_chat(L, span_userdanger("[B] grinds you against the ground!")) - if(L.stat == CONSCIOUS && L.resting == FALSE) - animate(L, transform = matrix(90, MATRIX_ROTATE), time = 0.1 SECONDS, loop = 0) + footsies(L) if(istype(T, /turf/open/space)) // If we're about to hit space, throw the first mob into space var/atom/throw_target = get_edge_target_turf(L, B.dir) - if(L.stat == CONSCIOUS && L.resting == FALSE) - animate(L, transform = null, time = 0.5 SECONDS, loop = 0) + wakeup(L) L.throw_at(throw_target, 2, 4, B, 3) // Yeet return // Then stop here if(Q.density) // If we're about to hit a wall - if(L.stat == CONSCIOUS && L.resting == FALSE) - animate(L, transform = null, time = 0.5 SECONDS, loop = 0) + wakeup(L) grab(B, L, crashdam) // Apply damage to mob B.visible_message(span_warning("[B] rams [L] into [Q]!")) to_chat(L, span_userdanger("[B] rams you into [Q]!")) @@ -64,8 +62,7 @@ L.Immobilize(1.5 SECONDS) return // Then stop here for(var/obj/D in Q.contents) // If we're about to hit a dense object like a table or window - if(L.stat == CONSCIOUS && L.resting == FALSE) - animate(L, transform = null, time = 0.5 SECONDS, loop = 0) + wakeup(L) if(D.density == TRUE) grab(B, L, crashdam) // Apply damage to mob B.visible_message(span_warning("[B] rams [L] into [D]!")) @@ -83,8 +80,7 @@ playsound(L,'sound/effects/meteorimpact.ogg', 60, 1) T = get_step(B, B.dir) // Move our goalpost forward one for(var/mob/living/C in mopped) // Return everyone to standing if they should be - if(C.stat == CONSCIOUS && C.resting == FALSE) - animate(C, transform = null, time = 0.5 SECONDS, loop = 0) + wakeup(C) /datum/action/cooldown/buster/mop/l/IsAvailable() . = ..() diff --git a/code/game/objects/items/devices/busterarm/slam.dm b/code/game/objects/items/devices/busterarm/slam.dm index 6c19cc4fffee..dba36cd5ae71 100644 --- a/code/game/objects/items/devices/busterarm/slam.dm +++ b/code/game/objects/items/devices/busterarm/slam.dm @@ -1,11 +1,11 @@ /* Formatting for these files, from top to bottom: - * Spell/Action + * Action * Trigger() * IsAvailable() * Items - In regards to spells or items with left and right subtypes, list the base, then left, then right. + In regards to actions or items with left and right subtypes, list the base, then left, then right. */ -////////////////// Spell ////////////////// +////////////////// Action ////////////////// /datum/action/cooldown/buster/slam name = "Slam" desc = "Grab the target in front of you and slam them back onto the ground. If there's a solid \ @@ -24,23 +24,23 @@ StartCooldown() var/turf/T = get_step(get_turf(owner), owner.dir) var/turf/Z = get_turf(owner) - owner.visible_message(span_warning("[owner] outstretches [owner.p_their()] arm and goes for a grab!")) + var/mob/living/B = owner + B.visible_message(span_warning("[B] outstretches [B.p_their()] arm and goes for a grab!")) for(var/mob/living/L in T.contents) // If there's a mob in front of us, note that this will return on the first mob it finds - var/turf/Q = get_step(get_turf(owner), turn(owner.dir,180)) // Get the turf behind us + B.apply_status_effect(STATUS_EFFECT_DOUBLEDOWN) + var/turf/Q = get_step(get_turf(B), turn(B.dir,180)) // Get the turf behind us if(Q.density) // If there's a wall behind us var/turf/closed/wall/W = Q - grab(owner, L, walldam) // Apply damage to mob - if(L.stat == CONSCIOUS && L.resting == FALSE) - animate(L, transform = matrix(90, MATRIX_ROTATE), time = 0.1 SECONDS, loop = 0) + grab(B, L, walldam) // Apply damage to mob + footsies(L) if(isanimal(L) && L.stat == DEAD) L.visible_message(span_warning("[L] explodes into gore on impact!")) L.gib() - if(L.stat == CONSCIOUS && L.resting == FALSE) - animate(L, transform = null, time = 0.2 SECONDS, loop = 0) - to_chat(owner, span_warning("[owner] turns around and slams [L] against [Q]!")) - to_chat(L, span_userdanger("[owner] crushes you against [Q]!")) + wakeup(L) + to_chat(B, span_warning("[B] turns around and slams [L] against [Q]!")) + to_chat(L, span_userdanger("[B] crushes you against [Q]!")) playsound(L, 'sound/effects/meteorimpact.ogg', 60, 1) - playsound(owner, 'sound/effects/gravhit.ogg', 20, 1) + playsound(B, 'sound/effects/gravhit.ogg', 20, 1) if(!istype(W, /turf/closed/wall/r_wall)) // Attempt to destroy the wall W.dismantle_wall(1) L.forceMove(Q) // Move the mob behind us @@ -53,56 +53,49 @@ var/obj/machinery/disposal/bin/dumpster = D L.forceMove(D) dumpster.do_flush() - to_chat(L, span_userdanger("[owner] throws you down disposals!")) + to_chat(L, span_userdanger("[B] throws you down disposals!")) target.visible_message(span_warning("[L] is thrown down the trash chute!")) return // Stop here - owner.visible_message(span_warning("[owner] turns around and slams [L] against [D]!")) + B.visible_message(span_warning("[B] turns around and slams [L] against [D]!")) D.take_damage(400) // Heavily damage and hopefully break the object - grab(owner, L, crashdam) // Apply light damage to mob - if(L.stat == CONSCIOUS && L.resting == FALSE) - animate(L, transform = matrix(90, MATRIX_ROTATE), time = 0.1 SECONDS, loop = 0) + grab(B, L, crashdam) // Apply light damage to mob + footsies(L) if(isanimal(L) && L.stat == DEAD) L.visible_message(span_warning("[L] explodes into gore on impact!")) L.gib() sleep(0.2 SECONDS) - if(L.stat == CONSCIOUS && L.resting == FALSE) - animate(L, transform = null, time = 0.2 SECONDS, loop = 0) + wakeup(L) for(var/mob/living/M in Q.contents) // If there's mobs behind us, apply damage to the mob for each one they are slammed into - grab(owner, L, crashdam) // Apply damage to slammed mob - if(L.stat == CONSCIOUS && L.resting == FALSE) - animate(L, transform = matrix(90, MATRIX_ROTATE), time = 0.1 SECONDS, loop = 0) + grab(B, L, crashdam) // Apply damage to slammed mob + footsies(L) if(isanimal(L) && L.stat == DEAD) L.visible_message(span_warning("[L] explodes into gore on impact!")) L.gib() sleep(0.2 SECONDS) - if(L.stat == CONSCIOUS && L.resting == FALSE) - animate(L, transform = null, time = 0.2 SECONDS, loop = 0) - to_chat(L, span_userdanger("[owner] throws you into [M]")) - to_chat(M, span_userdanger("[owner] throws [L] into you!")) - owner.visible_message(span_warning("[L] slams into [M]!")) - grab(owner, M, crashdam) // Apply damage to mob that was behind us + wakeup(L) + to_chat(L, span_userdanger("[B] throws you into [M]")) + to_chat(M, span_userdanger("[B] throws [L] into you!")) + B.visible_message(span_warning("[L] slams into [M]!")) + grab(B, M, crashdam) // Apply damage to mob that was behind us L.forceMove(Q) // Move the mob behind us if(istype(Q, /turf/open/space)) // If they got slammed into space, throw them into deep space - owner.setDir(turn(owner.dir,180)) + B.setDir(turn(B.dir,180)) var/atom/throw_target = get_edge_target_turf(L, owner.dir) - L.throw_at(throw_target, 2, 4, owner, 3) - owner.visible_message(span_warning("[owner] throws [L] behind [owner.p_them()]!")) + L.throw_at(throw_target, 2, 4, B, 3) + B.visible_message(span_warning("[B] throws [L] behind [B.p_them()]!")) return playsound(L,'sound/effects/meteorimpact.ogg', 60, 1) - playsound(owner, 'sound/effects/gravhit.ogg', 20, 1) - to_chat(L, span_userdanger("[owner] catches you with [owner.p_their()] hand and crushes you on the ground!")) - owner.visible_message(span_warning("[owner] turns around and slams [L] against the ground!")) - owner.setDir(turn(owner.dir, 180)) - grab(owner, L, supdam) // Apply damage for the suplex itself, independent of whether anything was hit - if(L.stat == CONSCIOUS && L.resting == FALSE) - animate(L, transform = matrix(90, MATRIX_ROTATE), time = 0.1 SECONDS, loop = 0) + playsound(B, 'sound/effects/gravhit.ogg', 20, 1) + to_chat(L, span_userdanger("[B] catches you with [B.p_their()] hand and crushes you on the ground!")) + B.visible_message(span_warning("[B] turns around and slams [L] against the ground!")) + B.setDir(turn(B.dir, 180)) + grab(B, L, supdam) // Apply damage for the suplex itself, independent of whether anything was hit + footsies(L) if(isanimal(L) && L.stat == DEAD) L.visible_message(span_warning("[L] explodes into gore on impact!")) L.gib() sleep(0.2 SECONDS) - if(L.stat == CONSCIOUS && L.resting == FALSE) - animate(L, transform = null, time = 0.2 SECONDS, loop = 0) - + wakeup(L) /datum/action/cooldown/buster/slam/l/IsAvailable() . = ..() var/mob/living/O = owner diff --git a/code/game/objects/items/devices/busterarm/wire_snatch.dm b/code/game/objects/items/devices/busterarm/wire_snatch.dm index 12a75a33ba08..e47512b402e8 100644 --- a/code/game/objects/items/devices/busterarm/wire_snatch.dm +++ b/code/game/objects/items/devices/busterarm/wire_snatch.dm @@ -1,11 +1,11 @@ /* Formatting for these files, from top to bottom: - * Spell/Action + * Action * Trigger() * IsAvailable() * Items - In regards to spells or items with left and right subtypes, list the base, then left, then right. + In regards to actions or items with left and right subtypes, list the base, then left, then right. */ -////////////////// Spell ////////////////// +////////////////// Action ////////////////// /datum/action/cooldown/buster/wire_snatch name = "Wire Snatch" desc = "Extend a wire for reeling in foes from a distance. Reeled in targets will be unable to walk for 1.5 seconds. \ @@ -107,6 +107,7 @@ damage = 0 armour_penetration = 100 damage_type = BRUTE + nodamage = TRUE range = 8 hitsound = 'sound/effects/splat.ogg' knockdown = 0 @@ -128,6 +129,7 @@ var/mob/living/carbon/human/H = firer if(!H) return + H.apply_status_effect(STATUS_EFFECT_DOUBLEDOWN) if(isobj(target)) // If it's an object var/obj/item/I = target if(!I?.anchored) // Give it to us if it's not anchored @@ -141,6 +143,7 @@ return zip(H, target) // Pull us towards it if it's anchored if(isliving(target)) // If it's somebody + H.apply_status_effect(STATUS_EFFECT_DOUBLEDOWN) var/mob/living/L = target var/turf/T = get_step(get_turf(H), H.dir) var/turf/Q = get_turf(H) diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index 4661fed3bf7f..eeca60b98da1 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -325,7 +325,8 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) name = "Buster Arm" desc = "A box containing a combat-focused prosthetic left arm that can be attached on contact; It is intended for close combat and possesses immense strength. With it, the user\ can send people and heavy objects flying and even tear down solid objects like they're wet paper. To close the distance with ranged opponents, a grappling hook can be ejected\ - from the arm which momentarily keeps victims in place. Due to its unorthodox nature, the box includes 3 monkey cubes to familiarize the user with the arm functions." + from the arm which momentarily keeps victims in place. Due to its unorthodox nature, the box includes 3 monkey cubes to familiarize the user with the arm functions. Users are \ + warned that the arm renders them unable to wear gloves and sticks out of most outerwear." item = /obj/item/storage/box/syndie_kit/buster cost = 15 manufacturer = /datum/corporation/traitor/cybersun diff --git a/icons/mob/augmentation/augments_buster.dmi b/icons/mob/augmentation/augments_buster.dmi index a1c16dd729533ddaf8d6519b23d71bac1cae647f..a8dbc3963b1061096cbd1ab0321fdb77148bdee8 100644 GIT binary patch delta 725 zcmeC>=;qkK!^rq*GB2YXmSBt4y$N-xgh^Pp>!rdN?Us z*yrb^bl&rxxtwLE)|Vw@H)+1BsjXYfxoqR*TdysBoFC7XjZ>1{k}`2wAHV(6l`jQ) z&gP%r7jv`H{qJ`9{`_0R=qG#MF}7RQ^?Lq%=Q?zl4d>6EeSN*L zfBoY3e-3=JE;lk?pD0@$X@zdy0mUg<*IB=>?XkRX_v`JBDgDvs9%l;aY`mG-#q--G z!fT1S@5cbYNePlgDi&@{^4sf|^T&zosCB7JeloqiSS8|FqD1!jD{6aeueMFR_x4+4 zmQ35v4#s8K`|K)?+vs0xNq&3iM#Y>b*Y?Mr&$HbVsC6rU=5u8}k?fgw#iL~xC0@Jh z|M-$!UB2Y?XQwY-a<-YK{Or0(hyGHNbAm~4536$Zl7O_g;`5&s`>`dU2mqeH*G x>g?A~jhtQZ`RUfbPrh$=uRmvf{e1m}^ZD6^Lc!*%#Gisf-P6_2Wt~$(69AEoS~&m! delta 727 zcmeC?=;heJ!^rq%GB2YXqv2#7M&)|(th)}op2*eLoN&%=%9MZj-21YY(tf$s@_IW> z4^Gjqz4l?rl_?3!|75XmQ=9SVoa~e9GZLh%*Y2Hn*u>=C&4;R&oSh{yU;X$HJTIzi z>BgULZ$=(w3%We*f8^SirZS9XrSHsd$hkjfkhcDCypWlN0S!E;ulQzI^KQqrllA)j z1?t8u(pPqtPM_W%ck49I!MAqL|Lv`LyIWFe$JGgCMHQdyrfm$p{XwPb?yu$h zsmO}vfO;TbI_7h*^AD>&|K0!YMCkl|WwCMH&P$V>fBbrzaO;oCB&@Q$ZigX&av8w=-|GY+ruM;L`59 zcHX^*4de|El$^cZTYl!Vkgvrxy`J9Vo_T+7e|>Z9u=LVJf2UR2J#yIicJc3fK{=%z zZIR{nz23in>`jfCt?%y5|1qL(M*L-keN!%3xOZ&jpRQrB?{0Yiz5kV^OT-1Q{aAEk zMtz^vg>|`iH{LZpWV&DVpME&MTE+k3(#UHp*MIQMzGr-mAT0Defz#Y+vL))JZGPN>F=di4#zBevBI6Hr*E#8?T(L( zC7-_7O;uG|^L(R?Si;KXc8{X_e%$;nd+m)<|HqB_ubhLF_HSDDhuZbmzg6GAKliWY`xyKGj`sT*vknUd_loyk0|mUNtDnm{r-UW| DT_<4* diff --git a/icons/mob/screen_alert.dmi b/icons/mob/screen_alert.dmi index 76301089081c1d5c57759b2ac1ea751fc73b262a..434eccef65e333fd600f40eb14bcec9464b13560 100644 GIT binary patch delta 34753 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.pqi?sM& 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 From 741f220b17cbe98fa1dd6a559e3fdc7b9042260d Mon Sep 17 00:00:00 2001 From: LazennG <58535870+LazennG@users.noreply.github.com> Date: Mon, 27 Feb 2023 23:56:43 -0800 Subject: [PATCH 2/6] Update megabuster.dm --- code/game/objects/items/devices/busterarm/megabuster.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/objects/items/devices/busterarm/megabuster.dm b/code/game/objects/items/devices/busterarm/megabuster.dm index 806f0406d5d2..c05770a9b66b 100644 --- a/code/game/objects/items/devices/busterarm/megabuster.dm +++ b/code/game/objects/items/devices/busterarm/megabuster.dm @@ -123,6 +123,7 @@ to_chat(user, span_warning("You probably shouldn't attack something on your person.")) return if(!istype(I, /obj/item/organ/brain) && !istype(I, /obj/item/clothing/mask/cigarette)) + user.apply_status_effect(STATUS_EFFECT_DOUBLEDOWN) I.take_damage(objdam) user.visible_message(span_warning("[user] pulverizes [I]!")) return From bd3b91cd0f543298ecd431c0a5bc6a2c7fc99b08 Mon Sep 17 00:00:00 2001 From: LazennG <58535870+LazennG@users.noreply.github.com> Date: Fri, 3 Mar 2023 18:23:45 -0800 Subject: [PATCH 3/6] slightly arbitrary --- code/datums/status_effects/buffs.dm | 22 +++++++++---------- .../items/devices/busterarm/_buster.dm | 4 ++-- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index fb9d0e4d5931..92f150b379de 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -596,7 +596,7 @@ tick_interval = 0 status_type = STATUS_EFFECT_REFRESH alert_type = /atom/movable/screen/alert/status_effect/doubledown - var/obj/effect/temp_visual/decoy/tensecond/F //surely a combo wont go on for more than 10 seconds + var/obj/effect/temp_visual/decoy/tensecond/s_such_strength //surely a combo wont go on for more than 10 seconds /atom/movable/screen/alert/status_effect/doubledown name = "Doubling Down" @@ -608,9 +608,9 @@ if(.) if(ishuman(owner)) var/mob/living/carbon/human/H = owner - F = new(get_turf(H),H) - walk_towards(F, H) - animate(F, alpha = 100, color = "#d40a0a", transform = matrix()*1.25, time = 0.25 SECONDS) + s_such_strength = new(get_turf(H),H) + walk_towards(s_such_strength, H) + animate(s_such_strength, alpha = 100, color = "#d40a0a", transform = matrix()*1.25, time = 0.25 SECONDS) H.ignore_slowdown(type) H.physiology.brute_mod *= 0.35 H.physiology.burn_mod *= 0.35 @@ -622,13 +622,13 @@ /datum/status_effect/doubledown/on_remove() if(ishuman(owner)) - qdel(F) + qdel(s_such_strength) var/mob/living/carbon/human/H = owner H.unignore_slowdown(type) - H.physiology.brute_mod *= 2.85 - H.physiology.burn_mod *= 2.85 - H.physiology.tox_mod *= 2.85 - H.physiology.oxy_mod *= 2.85 - H.physiology.clone_mod *= 2.85 - H.physiology.stamina_mod *= 2.85 + H.physiology.brute_mod /= 0.35 + H.physiology.burn_mod /= 0.35 + H.physiology.tox_mod /= 0.35 + H.physiology.oxy_mod /= 0.35 + H.physiology.clone_mod /= 0.35 + H.physiology.stamina_mod /= 0.35 owner.log_message("lost buster damage reduction", LOG_ATTACK)//yogs end diff --git a/code/game/objects/items/devices/busterarm/_buster.dm b/code/game/objects/items/devices/busterarm/_buster.dm index ce34f646d072..ce480dc3e3bd 100644 --- a/code/game/objects/items/devices/busterarm/_buster.dm +++ b/code/game/objects/items/devices/busterarm/_buster.dm @@ -50,10 +50,10 @@ //knocking them down /datum/action/cooldown/buster/proc/footsies(mob/living/target) - if(target.stat == CONSCIOUS && target.resting == FALSE && !target.has_status_effect(STATUS_EFFECT_PARALYZED) && !target.has_status_effect(STATUS_EFFECT_KNOCKDOWN)) + if((target.mobility_flags & MOBILITY_STAND) && target.stat) animate(target, transform = matrix(90, MATRIX_ROTATE), time = 0.1 SECONDS, loop = 0) //Check for if someone is allowed to be stood back up /datum/action/cooldown/buster/proc/wakeup(mob/living/target) - if(target.stat == CONSCIOUS && target.resting == FALSE && !target.has_status_effect(STATUS_EFFECT_PARALYZED) && !target.has_status_effect(STATUS_EFFECT_KNOCKDOWN)) + if(!(target.mobility_flags & MOBILITY_STAND) && target.stat) animate(target, transform = null, time = 0.4 SECONDS, loop = 0) From 439b690dc06966a04017cc222a68fd9ed60c49a2 Mon Sep 17 00:00:00 2001 From: LazennG <58535870+LazennG@users.noreply.github.com> Date: Sat, 4 Mar 2023 02:37:08 -0800 Subject: [PATCH 4/6] mop still isnt working --- code/game/objects/items/devices/busterarm/_buster.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/devices/busterarm/_buster.dm b/code/game/objects/items/devices/busterarm/_buster.dm index ce480dc3e3bd..df6aab5c4ee7 100644 --- a/code/game/objects/items/devices/busterarm/_buster.dm +++ b/code/game/objects/items/devices/busterarm/_buster.dm @@ -50,10 +50,10 @@ //knocking them down /datum/action/cooldown/buster/proc/footsies(mob/living/target) - if((target.mobility_flags & MOBILITY_STAND) && target.stat) - animate(target, transform = matrix(90, MATRIX_ROTATE), time = 0.1 SECONDS, loop = 0) + if((target.mobility_flags & MOBILITY_STAND)) + animate(target, transform = matrix(90, MATRIX_ROTATE), time = 0.01 SECONDS, loop = 0) //Check for if someone is allowed to be stood back up /datum/action/cooldown/buster/proc/wakeup(mob/living/target) - if(!(target.mobility_flags & MOBILITY_STAND) && target.stat) + if((target.mobility_flags & MOBILITY_STAND)) animate(target, transform = null, time = 0.4 SECONDS, loop = 0) From 866079c2c0187cbf087ced4b5260bf9a9b7f0fe7 Mon Sep 17 00:00:00 2001 From: LazennG <58535870+LazennG@users.noreply.github.com> Date: Sat, 4 Mar 2023 03:43:52 -0800 Subject: [PATCH 5/6] leaving it in a state where animations still work and going to bed since it's 3am --- code/game/objects/items/devices/busterarm/_buster.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/devices/busterarm/_buster.dm b/code/game/objects/items/devices/busterarm/_buster.dm index df6aab5c4ee7..257be41a3a4a 100644 --- a/code/game/objects/items/devices/busterarm/_buster.dm +++ b/code/game/objects/items/devices/busterarm/_buster.dm @@ -50,10 +50,10 @@ //knocking them down /datum/action/cooldown/buster/proc/footsies(mob/living/target) - if((target.mobility_flags & MOBILITY_STAND)) - animate(target, transform = matrix(90, MATRIX_ROTATE), time = 0.01 SECONDS, loop = 0) + if(target.stat == CONSCIOUS && target.resting == FALSE && !target.has_status_effect(STATUS_EFFECT_PARALYZED) && !target.has_status_effect(STATUS_EFFECT_KNOCKDOWN)) + animate(target, transform = matrix(90, MATRIX_ROTATE), time = 0 SECONDS, loop = 0) //Check for if someone is allowed to be stood back up /datum/action/cooldown/buster/proc/wakeup(mob/living/target) - if((target.mobility_flags & MOBILITY_STAND)) + if(target.stat == CONSCIOUS && target.resting == FALSE && !target.has_status_effect(STATUS_EFFECT_PARALYZED) && !target.has_status_effect(STATUS_EFFECT_KNOCKDOWN)) animate(target, transform = null, time = 0.4 SECONDS, loop = 0) From 92e1b2fc3f52742307cb268baab9734f2643a0a3 Mon Sep 17 00:00:00 2001 From: LazennG <58535870+LazennG@users.noreply.github.com> Date: Sat, 4 Mar 2023 16:45:30 -0800 Subject: [PATCH 6/6] works forreal this time --- code/game/objects/items/devices/busterarm/_buster.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/devices/busterarm/_buster.dm b/code/game/objects/items/devices/busterarm/_buster.dm index 257be41a3a4a..c41ad88379bc 100644 --- a/code/game/objects/items/devices/busterarm/_buster.dm +++ b/code/game/objects/items/devices/busterarm/_buster.dm @@ -50,10 +50,10 @@ //knocking them down /datum/action/cooldown/buster/proc/footsies(mob/living/target) - if(target.stat == CONSCIOUS && target.resting == FALSE && !target.has_status_effect(STATUS_EFFECT_PARALYZED) && !target.has_status_effect(STATUS_EFFECT_KNOCKDOWN)) + if(target.mobility_flags & MOBILITY_STAND) animate(target, transform = matrix(90, MATRIX_ROTATE), time = 0 SECONDS, loop = 0) //Check for if someone is allowed to be stood back up /datum/action/cooldown/buster/proc/wakeup(mob/living/target) - if(target.stat == CONSCIOUS && target.resting == FALSE && !target.has_status_effect(STATUS_EFFECT_PARALYZED) && !target.has_status_effect(STATUS_EFFECT_KNOCKDOWN)) + if(target.mobility_flags & MOBILITY_STAND) animate(target, transform = null, time = 0.4 SECONDS, loop = 0)