Meteors and Space dust (now that they work again) will no longer have an effect on singularity containment. Field generators and Emitters are protected.

I added a check to meteor and space dust Bump() directly because changing ex_act() on the machines themselves would make the machines immune to bombs and C4.
Hopefully fixes issue 716.

light/process() was added back in causing lights to use power as they were meant to. Recently lights have been made brighter causing more power to be drained. As a result the engineering APC would not last very long. The station using a lot of power is a good thing since the singularity produces an incredible amount of power, so to keep this higher power demand but still give engineers a fighting chance to set up the singularity, I've bumped up the engineering APC's starting battery power.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4401 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
johnsonmt88@gmail.com
2012-08-14 16:39:01 +00:00
parent be3450d319
commit 26ce5db5b0
6 changed files with 124 additions and 57 deletions

View File

@@ -97,10 +97,12 @@ The "dust" will damage the hull of the station causin minor hull breaches.
shake_camera(M, 3, 1)
if (A)
playsound(src.loc, 'meteorimpact.ogg', 40, 1)
if(ismob(A))
A.meteorhit(src)//This should work for now I guess
else
A.ex_act(strength)
else if(!istype(A,/obj/machinery/emitter) && !istype(A,/obj/machinery/field_generator)) //Protect the singularity from getting released every round!
A.ex_act(strength) //Changing emitter/field gen ex_act would make it immune to bombs and C4
life--
if(life <= 0)
walk(src,0)

View File

@@ -111,7 +111,13 @@
A.meteorhit(src)
playsound(src.loc, 'meteorimpact.ogg', 40, 1)
if (--src.hits <= 0)
if(prob(15))// && !istype(A, /obj/structure/grille))
//Prevent meteors from blowing up the singularity's containment.
//Changing emitter and generator ex_act would result in them being bomb and C4 proof.
if(!istype(A,/obj/machinery/emitter) && \
!istype(A,/obj/machinery/field_generator) && \
prob(15))
explosion(src.loc, 4, 5, 6, 7, 0)
playsound(src.loc, "explosion", 50, 1)
del(src)
@@ -133,6 +139,13 @@
Bump(atom/A)
spawn(0)
//Prevent meteors from blowing up the singularity's containment.
//Changing emitter and generator ex_act would result in them being bomb and C4 proof
if(!istype(A,/obj/machinery/emitter) && \
!istype(A,/obj/machinery/field_generator))
if(--src.hits <= 0)
del(src) //Dont blow up singularity containment if we get stuck there.
for(var/mob/M in range(10, src))
if(!M.stat && !istype(M, /mob/living/silicon/ai)) //bad idea to shake an ai's view
shake_camera(M, 3, 1)
@@ -150,4 +163,50 @@
if(istype(W, /obj/item/weapon/pickaxe))
del(src)
return
..()
..()
//Testing purposes only!
/obj/item/weapon/meteorgun
name = "Meteor Gun"
desc = "This beast fires meteors!. TESTING PURPOSES ONLY, This gun is <b>incomplete</b>!"
icon = 'icons/obj/gun.dmi'
icon_state = "lasercannon"
item_state = "gun"
/obj/item/weapon/attack_self()
var/start_x = usr.loc.x
var/start_y = usr.loc.y
var/start_z = usr.loc.z
var/end_x = 0
var/end_y = 0
var/end_z = 0
switch(usr.dir)
if(NORTH)
end_x = start_x
end_y = world.maxy-TRANSITIONEDGE
if(SOUTH)
end_x = start_x
end_y = TRANSITIONEDGE
if(EAST)
end_x = world.maxx-TRANSITIONEDGE
end_y = start_y
if(WEST)
end_x = TRANSITIONEDGE
end_y = start_y
else //north
end_x = start_x
end_y = TRANSITIONEDGE
end_z = start_z
var/start = locate(start_x, start_y, start_z)
var/end = locate(end_x, end_y, end_z)
var/obj/effect/meteor/M = new /obj/effect/meteor(start)
M.dest = end
spawn(0)
walk_towards(M, M.dest, 1)
return

View File

@@ -40,6 +40,8 @@
/obj/machinery/containment_field/ex_act(severity)
return 0
/obj/machinery/containment_field/meteorhit()
return 0
/obj/machinery/containment_field/HasProximity(atom/movable/AM as mob|obj)
if(istype(AM,/mob/living/silicon) && prob(40))

View File

@@ -80,6 +80,8 @@
src.use_power = 1 */
return 1
/obj/machinery/containment_field/meteorhit()
return 0
/obj/machinery/emitter/process()
if(stat & (NOPOWER|BROKEN))

View File

@@ -163,6 +163,8 @@ field_generator power level display
else
..()
/obj/machinery/containment_field/meteorhit()
return 0
/obj/machinery/field_generator/bullet_act(var/obj/item/projectile/Proj)
if(Proj.flag != "bullet")