From 49abaf72f4892e2a5ccc09a9563919665ee2a8b2 Mon Sep 17 00:00:00 2001 From: JJRcop Date: Fri, 22 Sep 2017 02:54:34 -0400 Subject: [PATCH 1/4] Suiciding with a gun blows your brain out --- code/modules/projectiles/guns/ballistic.dm | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm index d65364c062..2f1c018400 100644 --- a/code/modules/projectiles/guns/ballistic.dm +++ b/code/modules/projectiles/guns/ballistic.dm @@ -144,6 +144,19 @@ if(user.is_holding(src)) process_fire(user, user, 0, zone_override = "head") user.visible_message("[user] blows [user.p_their()] brain[user.p_s()] out with [src]!") +<<<<<<< HEAD +======= + var/turf/target = get_ranged_target_turf(user, turn(user.dir, 180), BRAINS_BLOWN_THROW_RANGE) + B.Remove(user) + B.forceMove(T) + var/datum/dna/user_dna + if(iscarbon(user)) + var/mob/living/carbon/C = user + user_dna = C.dna + B.add_blood(user_dna) + var/datum/callback/gibspawner = CALLBACK(GLOBAL_PROC, /proc/spawn_atom_to_turf, /obj/effect/gibspawner/generic, B, 1, FALSE, list(user_dna)) + B.throw_at(target, BRAINS_BLOWN_THROW_RANGE, BRAINS_BLOWN_THROW_SPEED, callback=gibspawner) +>>>>>>> 69669be... Possibly fixes runtimes with gun suicide return(BRUTELOSS) else user.visible_message("[user] panics and starts choking to death!") From 67c3dc63e19bff13412ea25a5d3a91b62b4308d1 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sat, 23 Sep 2017 13:52:55 -0500 Subject: [PATCH 2/4] Update ballistic.dm --- code/modules/projectiles/guns/ballistic.dm | 3 --- 1 file changed, 3 deletions(-) diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm index 2f1c018400..e607ec0571 100644 --- a/code/modules/projectiles/guns/ballistic.dm +++ b/code/modules/projectiles/guns/ballistic.dm @@ -144,8 +144,6 @@ if(user.is_holding(src)) process_fire(user, user, 0, zone_override = "head") user.visible_message("[user] blows [user.p_their()] brain[user.p_s()] out with [src]!") -<<<<<<< HEAD -======= var/turf/target = get_ranged_target_turf(user, turn(user.dir, 180), BRAINS_BLOWN_THROW_RANGE) B.Remove(user) B.forceMove(T) @@ -156,7 +154,6 @@ B.add_blood(user_dna) var/datum/callback/gibspawner = CALLBACK(GLOBAL_PROC, /proc/spawn_atom_to_turf, /obj/effect/gibspawner/generic, B, 1, FALSE, list(user_dna)) B.throw_at(target, BRAINS_BLOWN_THROW_RANGE, BRAINS_BLOWN_THROW_SPEED, callback=gibspawner) ->>>>>>> 69669be... Possibly fixes runtimes with gun suicide return(BRUTELOSS) else user.visible_message("[user] panics and starts choking to death!") From d2149124b74a71ce58bc9a32214dad56af7bbce1 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Wed, 27 Sep 2017 15:10:01 -0500 Subject: [PATCH 3/4] Update mobs.dm --- code/__HELPERS/mobs.dm | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index cb64f3fb22..ed855c33b9 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -465,13 +465,17 @@ Proc for attack log creation, because really why not if(H.dna && istype(H.dna.species, species_datum)) . = TRUE -/proc/spawn_atom_to_turf(spawn_type, target, amount, admin_spawn=FALSE) +/proc/spawn_atom_to_turf(spawn_type, target, amount, admin_spawn=FALSE, list/extra_args) var/turf/T = get_turf(target) if(!T) CRASH("attempt to spawn atom type: [spawn_type] in nullspace") - for(var/j in 1 to amount) - var/atom/X = new spawn_type(T) + var/list/new_args = list(T) + if(extra_args) + new_args += extra_args + + for(var/j in 1 to amount) + var/atom/X = new spawn_type(arglist(new_args)) X.admin_spawned = admin_spawn /proc/spawn_and_random_walk(spawn_type, target, amount, walk_chance=100, max_walk=3, always_max_walk=FALSE, admin_spawn=FALSE) From 2163132c52e7335854a0ca4c6b547e15e053f4fa Mon Sep 17 00:00:00 2001 From: LetterJay Date: Wed, 27 Sep 2017 15:10:59 -0500 Subject: [PATCH 4/4] Update ballistic.dm --- code/modules/projectiles/guns/ballistic.dm | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm index e607ec0571..3bc26df8ba 100644 --- a/code/modules/projectiles/guns/ballistic.dm +++ b/code/modules/projectiles/guns/ballistic.dm @@ -137,11 +137,15 @@ boolets += magazine.ammo_count() return boolets +#define BRAINS_BLOWN_THROW_RANGE 3 +#define BRAINS_BLOWN_THROW_SPEED 1 /obj/item/gun/ballistic/suicide_act(mob/user) - if (chambered && chambered.BB && can_trigger_gun(user) && !chambered.BB.nodamage) + var/obj/item/organ/brain/B = user.getorganslot("brain") + if (B && chambered && chambered.BB && can_trigger_gun(user) && !chambered.BB.nodamage) user.visible_message("[user] is putting the barrel of [src] in [user.p_their()] mouth. It looks like [user.p_theyre()] trying to commit suicide!") sleep(25) if(user.is_holding(src)) + var/turf/T = get_turf(user) process_fire(user, user, 0, zone_override = "head") user.visible_message("[user] blows [user.p_their()] brain[user.p_s()] out with [src]!") var/turf/target = get_ranged_target_turf(user, turn(user.dir, 180), BRAINS_BLOWN_THROW_RANGE) @@ -162,8 +166,8 @@ user.visible_message("[user] is pretending to blow [user.p_their()] brain[user.p_s()] out with [src]! It looks like [user.p_theyre()] trying to commit suicide!") playsound(loc, 'sound/weapons/empty.ogg', 50, 1, -1) return (OXYLOSS) - - +#undef BRAINS_BLOWN_THROW_SPEED +#undef BRAINS_BLOWN_THROW_RANGE /obj/item/gun/ballistic/proc/sawoff(mob/user) if(sawn_state == SAWN_OFF)