mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-14 02:43:16 +00:00
Fixes issue #129 Removed the unused /datum/bullethole Removed some copypaste code inbetween the targets and the target stakes Made these objects not search for eachother in the nearby turfs, they both link to eachother now Added removeOverlays() and nullPinnedLoc() procs for /obj/item/target Added removeTarget() and nullPinnedTarget() procs for /obj/structure/target_stake Added a huge list of additions to the commit log that nobody will read Cleaned up the code for both objects (target and target stakes)
81 lines
2.3 KiB
Plaintext
81 lines
2.3 KiB
Plaintext
/obj/item/target
|
|
name = "shooting target"
|
|
desc = "A shooting target."
|
|
icon = 'icons/obj/objects.dmi'
|
|
icon_state = "target_h"
|
|
density = 0
|
|
var/hp = 1800
|
|
var/obj/structure/target_stake/pinnedLoc
|
|
|
|
/obj/item/target/Destroy()
|
|
removeOverlays()
|
|
if(pinnedLoc)
|
|
pinnedLoc.nullPinnedTarget()
|
|
..()
|
|
|
|
/obj/item/target/proc/nullPinnedLoc()
|
|
pinnedLoc = null
|
|
density = 0
|
|
|
|
/obj/item/target/proc/removeOverlays()
|
|
overlays.Cut()
|
|
|
|
/obj/item/target/Move()
|
|
..()
|
|
if(pinnedLoc)
|
|
pinnedLoc.loc = loc
|
|
|
|
/obj/item/target/attackby(obj/item/W, mob/user, params)
|
|
if(istype(W, /obj/item/weapon/weldingtool))
|
|
var/obj/item/weapon/weldingtool/WT = W
|
|
if(WT.remove_fuel(0, user))
|
|
removeOverlays()
|
|
usr << "<span class='notice'>You slice off [src]'s uneven chunks of aluminium and scorch marks.</span>"
|
|
|
|
/obj/item/target/attack_hand(mob/user)
|
|
if(pinnedLoc)
|
|
pinnedLoc.removeTarget(user)
|
|
..()
|
|
|
|
/obj/item/target/syndicate
|
|
icon_state = "target_s"
|
|
desc = "A shooting target that looks like a syndicate scum."
|
|
hp = 2600
|
|
|
|
/obj/item/target/alien
|
|
icon_state = "target_q"
|
|
desc = "A shooting target that looks like a xenomorphic alien."
|
|
hp = 2350
|
|
|
|
#define DECALTYPE_SCORCH 1
|
|
#define DECALTYPE_BULLET 2
|
|
|
|
/obj/item/target/bullet_act(obj/item/projectile/P)
|
|
var/p_x = P.p_x + pick(0,0,0,0,0,-1,1) // really ugly way of coding "sometimes offset P.p_x!"
|
|
var/p_y = P.p_y + pick(0,0,0,0,0,-1,1)
|
|
var/decaltype = DECALTYPE_SCORCH
|
|
if(istype(/obj/item/projectile/bullet, P))
|
|
decaltype = DECALTYPE_BULLET
|
|
var/icon/C = icon(icon,icon_state)
|
|
if(C.GetPixel(p_x, p_y) && P.original == src && overlays.len <= 35) // if the located pixel isn't blank (null)
|
|
hp -= P.damage
|
|
if(hp <= 0)
|
|
visible_message("<span class='danger'>[src] breaks into tiny pieces and collapses!</span>")
|
|
qdel(src)
|
|
var/image/I = image("icon"='icons/effects/effects.dmi', "icon_state"="scorch", "layer"=OBJ_LAYER+0.5)
|
|
I.pixel_x = p_x - 1 //offset correction
|
|
I.pixel_y = p_y - 1
|
|
if(decaltype == DECALTYPE_SCORCH)
|
|
I.dir = pick(NORTH,SOUTH,EAST,WEST)// random scorch design
|
|
if(P.damage >= 20 || istype(P, /obj/item/projectile/beam/practice))
|
|
I.dir = pick(NORTH,SOUTH,EAST,WEST)
|
|
else
|
|
I.icon_state = "light_scorch"
|
|
else
|
|
I.icon_state = "dent"
|
|
overlays += I
|
|
return
|
|
return -1
|
|
|
|
#undef DECALTYPE_SCORCH
|
|
#undef DECALTYPE_BULLET |