-You can now target non-dense objects with a projectile.

-Added bullet_acts for computers, canisters and windoors.


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4953 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
giacomand@gmail.com
2012-10-24 21:56:00 +00:00
parent a6b214cc06
commit dd8d1f6ac2
6 changed files with 37 additions and 17 deletions

View File

@@ -159,6 +159,12 @@
healthcheck()
return
/obj/machinery/portable_atmospherics/canister/bullet_act(var/obj/item/projectile/Proj)
if(Proj.damage)
src.health -= round(Proj.damage / 2)
healthcheck()
..()
/obj/machinery/portable_atmospherics/canister/meteorhit(var/obj/O as obj)
src.health = 0
healthcheck()

View File

@@ -48,6 +48,11 @@
else
return
bullet_act(var/obj/item/projectile/Proj)
if(prob(Proj.damage))
set_broken()
..()
blob_act()
if (prob(75))

View File

@@ -134,6 +134,21 @@
src.operating = 0
return 1
/obj/machinery/door/window/proc/take_damage(var/damage)
src.health = max(0, src.health - damage)
if (src.health <= 0)
new /obj/item/weapon/shard(src.loc)
var/obj/item/weapon/cable_coil/CC = new /obj/item/weapon/cable_coil(src.loc)
CC.amount = 2
src.density = 0
del(src)
return
/obj/machinery/door/window/bullet_act(var/obj/item/projectile/Proj)
if(Proj.damage)
take_damage(round(Proj.damage / 2))
..()
//When an object is thrown at the window
/obj/machinery/door/window/hitby(AM as mob|obj)
@@ -145,14 +160,7 @@
else
tforce = AM:throwforce
playsound(src.loc, 'sound/effects/Glasshit.ogg', 100, 1)
src.health = max(0, src.health - tforce)
if (src.health <= 0)
new /obj/item/weapon/shard(src.loc)
var/obj/item/weapon/cable_coil/CC = new /obj/item/weapon/cable_coil(src.loc)
CC.amount = 2
src.density = 0
del(src)
return
take_damage(tforce)
//..() //Does this really need to be here twice? The parent proc doesn't even do anything yet. - Nodrak
return

View File

@@ -44,7 +44,7 @@
O.emp_act(severity)
afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag, params)//TODO: go over this
afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, flag, params)//TODO: go over this
if(flag) return //we're placing gun on a table or in backpack
if(istype(target, /obj/machinery/recharger) && istype(src, /obj/item/weapon/gun/energy)) return//Shouldnt flag take care of this?
@@ -104,7 +104,7 @@
playsound(user, fire_sound, 50, 1)
user.visible_message("\red [user.name] fires the [src.name]!", "\red You fire the [src.name]!", "\blue You hear a [istype(in_chamber, /obj/item/projectile/beam) ? "laser blast" : "gunshot"]!")
in_chamber.original = targloc
in_chamber.original = target
in_chamber.loc = get_turf(user)
in_chamber.starting = get_turf(user)
user.next_move = world.time + 4

View File

@@ -26,7 +26,7 @@
var/yo = null
var/xo = null
var/current = null
var/turf/original = null // the original turf clicked
var/atom/original = null // the original target clicked
var/turf/starting = null // the projectile's starting turf
var/list/permutated = list() // we've passed through these atoms, don't try to hit them again
@@ -139,10 +139,9 @@
return
step_towards(src, current)
sleep(1)
if(!bumped)
if(loc == original)
for(var/mob/living/M in original)
if(!(M in permutated))
Bump(M)
sleep(1)
if(!bumped && !isturf(original))
if(loc == get_turf(original))
if(!(original in permutated))
Bump(original)
sleep(1)
return