mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-23 21:18:37 +01:00
Adds a reagent that lets you remove c4 stuck to people because I saw an officer get stuck once. (#5248)
## About The Pull Request Adds a reagent that lets you remove c4 stuck to people. It can be made by mixing Space Lube, Space Cleaner, and Drying Reagent together and spraying it on someone. Note that this does not defuse the c4. You can no longer attach more than one stick of c4 on someone. ## Why It's Good For The Game There is actually no way to remove c4 from people once it is applied. Once it's on someone, the only way to get it off is for it to be detonated. Now you might be thinking that it might be possible via surgery or other nonsense, but no. Literally what happens in the code is that the c4 gets moved to nullspace (inaccessible) and then the c4 creates the explosion on the thing it's attached to. With absurdly long c4 timers existing, you can have a c4 attached for very long periods of time, which isn't really fun when you probably want to do other things. ## Proof Of Testing <img width="831" height="477" alt="image" src="https://github.com/user-attachments/assets/2e7d2213-1640-4227-8958-f2b6fecfebd4" /> Pictured: Monkey getting stuck with c4 then getting sprayed with the thing. Not pictured: My dumb ass losing the screenshot showing the reagent can be created. Trust me, it works. ## Changelog 🆑 BurgerBB add: Adds a reagent that lets you remove c4 stuck to people. It can be made by mixing Space Lube, Space Cleaner, and Drying Reagent together and spraying it on someone. remove: You can no longer attach more than one stick of c4 on someone. /🆑 --------- Co-authored-by: Roxy <94389951+SapphoQueer@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
/obj/item/grenade/c4/
|
||||
var/datum/component/c4_body_tracker/body_tracker
|
||||
|
||||
/obj/item/grenade/c4/plant_c4(atom/bomb_target, mob/living/user)
|
||||
|
||||
if(active)
|
||||
return FALSE
|
||||
|
||||
if(isliving(bomb_target) && bomb_target.GetComponent(/datum/component/c4_body_tracker))
|
||||
to_chat(user,span_warning("There is already an explosive charge planted on [bomb_target]!"))
|
||||
return FALSE
|
||||
|
||||
. = ..()
|
||||
|
||||
if(. && isliving(bomb_target))
|
||||
body_tracker = bomb_target.AddComponent(/datum/component/c4_body_tracker,src)
|
||||
|
||||
/obj/item/grenade/c4/proc/unstick()
|
||||
|
||||
if(!target)
|
||||
CRASH("Called c4 on_unstick() without a valid target!")
|
||||
|
||||
target.cut_overlay(plastic_overlay, TRUE)
|
||||
|
||||
var/turf/our_turf = get_turf(target)
|
||||
|
||||
forceMove(our_turf)
|
||||
|
||||
plastic_overlay.layer = HIGH_OBJ_LAYER
|
||||
|
||||
target = null
|
||||
|
||||
icon_state = "[inhand_icon_state]2"
|
||||
|
||||
QDEL_NULL(body_tracker)
|
||||
|
||||
|
||||
/obj/item/grenade/c4/Destroy()
|
||||
. = ..()
|
||||
QDEL_NULL(body_tracker)
|
||||
|
||||
/datum/component/c4_body_tracker
|
||||
var/obj/item/grenade/c4/stored_bomb
|
||||
|
||||
/datum/component/c4_body_tracker/Initialize(bomb_to_track)
|
||||
|
||||
. = ..()
|
||||
|
||||
if (!isliving(parent))
|
||||
return COMPONENT_INCOMPATIBLE
|
||||
|
||||
stored_bomb = bomb_to_track
|
||||
|
||||
|
||||
/datum/component/c4_body_tracker/Destroy()
|
||||
stored_bomb.body_tracker = null
|
||||
stored_bomb = null
|
||||
return ..()
|
||||
|
||||
|
||||
/datum/reagent/toxin/acid/c4_b_gone
|
||||
name = "c4-b-gone"
|
||||
description = "A patented acidic compound by HugBox incorporated that is designed to (unsafely) remove c4 from most living beings."
|
||||
|
||||
color = "#C6BED8" // rgb: 198, 190, 216
|
||||
|
||||
taste_description = "a box of acidic hugs"
|
||||
|
||||
reagent_weight = 2
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
penetrates_skin = VAPOR
|
||||
|
||||
/datum/reagent/toxin/acid/c4_b_gone/expose_mob(mob/living/exposed_mob, methods = TOUCH, reac_volume, show_message = TRUE, touch_protection = 0)
|
||||
|
||||
if(methods & (VAPOR|TOUCH))
|
||||
var/datum/component/c4_body_tracker/c4_tracker = exposed_mob.GetComponent(/datum/component/c4_body_tracker)
|
||||
if(c4_tracker && c4_tracker.stored_bomb)
|
||||
c4_tracker.stored_bomb.unstick()
|
||||
|
||||
. = ..()
|
||||
|
||||
/datum/chemical_reaction/c4_b_gone
|
||||
results = list(/datum/reagent/toxin/acid/c4_b_gone = 3)
|
||||
required_reagents = list(/datum/reagent/space_cleaner = 1, /datum/reagent/drying_agent = 1, /datum/reagent/lube = 1)
|
||||
rate_up_lim = 40
|
||||
required_temp = 374
|
||||
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_UNIQUE
|
||||
@@ -9123,6 +9123,7 @@
|
||||
#include "modular_zubbers\code\game\objects\items\food\meatslab.dm"
|
||||
#include "modular_zubbers\code\game\objects\items\food\misc.dm"
|
||||
#include "modular_zubbers\code\game\objects\items\food\sweets.dm"
|
||||
#include "modular_zubbers\code\game\objects\items\grenades\plastic.dm"
|
||||
#include "modular_zubbers\code\game\objects\items\holotool\holotool.dm"
|
||||
#include "modular_zubbers\code\game\objects\items\holotool\modes.dm"
|
||||
#include "modular_zubbers\code\game\objects\items\implants\implant_storage.dm"
|
||||
|
||||
Reference in New Issue
Block a user