refactors grenades (#7138)

This commit is contained in:
silicons
2025-05-15 20:10:16 +02:00
committed by GitHub
parent 46de43e4cf
commit 95de4c698a
118 changed files with 1371 additions and 1249 deletions
+3
View File
@@ -0,0 +1,3 @@
# Assembly System
A simple assembly system made out of connected devices.
@@ -118,7 +118,10 @@
if(!a_left || !a_right)
to_chat(user, "<span class='warning'> BUG:Assembly part missing, please report this!</span>")
return
if(istype(a_left,a_right.type))//If they are the same type it causes issues due to window code
// WARNING: DO NOT REMOVE IGNITER TYPECHECKS
// If you do, grenades will INSTANTLY BLOW UP ON THE USER WHEN USED
// IN HAND!!
if(istype(a_left,a_right.type) && !istype(a_left, /obj/item/assembly/igniter))//If they are the same type it causes issues due to window code
switch(alert("Which side would you like to use?",,"Left","Right"))
if("Left") a_left.attack_self(user)
if("Right") a_right.attack_self(user)
@@ -160,6 +163,7 @@
a_right.hear_talk(M,msg,verb,speaking)
if(a_left)
a_left.hear_talk(M,msg,verb,speaking)
/obj/item/assembly_holder/timer_igniter
name = "timer-igniter assembly"
@@ -180,39 +184,3 @@
secured = 1
update_icon()
name = initial(name) + " ([tmr.time] secs)"
add_obj_verb(src, /obj/item/assembly_holder/timer_igniter/verb/configure)
/obj/item/assembly_holder/timer_igniter/detached()
remove_obj_verb(src, /obj/item/assembly_holder/timer_igniter/verb/configure)
..()
/obj/item/assembly_holder/timer_igniter/verb/configure()
set name = "Set Timer"
set category = VERB_CATEGORY_OBJECT
set src in usr
if ( !(usr.stat || usr.restrained()) )
var/obj/item/assembly_holder/holder
if(istype(src,/obj/item/grenade/chem_grenade))
var/obj/item/grenade/chem_grenade/gren = src
holder=gren.detonator
var/obj/item/assembly/timer/tmr = holder.a_left
if(!istype(tmr,/obj/item/assembly/timer))
tmr = holder.a_right
if(!istype(tmr,/obj/item/assembly/timer))
to_chat(usr, "<span class='notice'>This detonator has no timer.</span>")
return
if(tmr.timing)
to_chat(usr, "<span class='notice'>Clock is ticking already.</span>")
else
var/ntime = input("Enter desired time in seconds", "Time", "5") as num
if (ntime>0 && ntime<1000)
tmr.time = ntime
name = initial(name) + "([tmr.time] secs)"
to_chat(usr, "<span class='notice'>Timer set to [tmr.time] seconds.</span>")
else
to_chat(usr, "<span class='notice'>Timer can't be [ntime<=0?"negative":"more than 1000 seconds"].</span>")
else
to_chat(usr, "<span class='notice'>You cannot do this while [usr.stat?"unconscious/dead":"restrained"].</span>")
+3 -7
View File
@@ -12,8 +12,8 @@
if(!..())
return FALSE
if(holder && istype(holder.loc,/obj/item/grenade/chem_grenade))
var/obj/item/grenade/chem_grenade/grenade = holder.loc
if(holder && istype(holder.loc,/obj/item/grenade/simple/chemical))
var/obj/item/grenade/simple/chemical/grenade = holder.loc
grenade.detonate()
else
var/turf/location = get_turf(loc)
@@ -28,16 +28,12 @@
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
s.set_up(3, 1, src)
s.start()
return TRUE
/obj/item/assembly/igniter/attack_self(mob/user, datum/event_args/actor/actor)
. = ..()
if(.)
return
activate()
add_fingerprint(user)
return TRUE
/obj/item/assembly/igniter/is_hot()
return TRUE
-3
View File
@@ -93,9 +93,6 @@
LAZYADD(attached_overlays, "prox_scanning")
if(holder)
holder.update_icon()
if(holder && istype(holder.loc,/obj/item/grenade/chem_grenade))
var/obj/item/grenade/chem_grenade/grenade = holder.loc
grenade.primed(scanning)
/obj/item/assembly/prox_sensor/Move()
..()
+1 -5
View File
@@ -2,6 +2,7 @@
name = "voice analyzer"
desc = "A small electronic device able to record a voice sample, and send a signal when that sample is repeated."
icon_state = "voice"
atom_flags = ATOM_HEAR
origin_tech = list(TECH_MAGNET = 1)
materials_base = list(MAT_STEEL = 500, MAT_GLASS = 50)
var/listening = 0
@@ -26,11 +27,6 @@
/obj/item/assembly/voice/attack_self(mob/user, datum/event_args/actor/actor)
. = ..()
if(.)
return
if(!user)
return FALSE
activate()
return TRUE