Files
Bubberstation/code/game/objects/items/shooting_range.dm
Aranclanos 965ebdaed8 Fixes range targets changing icons
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)
2015-05-14 03:30:32 -03:00

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