diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index f1e27be33fa..009241149bf 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -4,14 +4,14 @@ icon = 'icons/effects/effects.dmi' icon_state = "shield-old" density = 1 - opacity = 0 + opacity = FALSE anchored = 1 unacidable = 1 var/const/max_health = 200 var/health = max_health //The shield can only take so much beating (prevents perma-prisons) /obj/machinery/shield/New() - src.dir = pick(1,2,3,4) + dir = pick(NORTH, SOUTH, EAST, WEST) ..() /obj/machinery/shield/Initialize() @@ -19,7 +19,7 @@ ..() /obj/machinery/shield/Destroy() - opacity = 0 + opacity = FALSE density = 0 air_update_turf(1) return ..() @@ -30,43 +30,48 @@ move_update_air(T) /obj/machinery/shield/CanPass(atom/movable/mover, turf/target, height) - if(!height) return 0 - else return ..() + if(!height) + return FALSE + return ..() -/obj/machinery/shield/CanAtmosPass(var/turf/T) +/obj/machinery/shield/CanAtmosPass(turf/T) return !density -/obj/machinery/shield/attackby(obj/item/W as obj, mob/user as mob, params) - if(!istype(W)) return +/obj/machinery/shield/attackby(obj/item/I, mob/user, params) + if(!istype(I)) + return //Calculate damage - var/aforce = W.force - if(W.damtype == BRUTE || W.damtype == BURN) - src.health -= aforce + var/aforce = I.force + if(I.damtype == BRUTE || I.damtype == BURN) + health -= aforce //Play a fitting sound - playsound(src.loc, 'sound/effects/EMPulse.ogg', 75, 1) + playsound(loc, 'sound/effects/EMPulse.ogg', 75, 1) - - if(src.health <= 0) + if(health <= 0) visible_message("The [src] dissipates") qdel(src) return - opacity = 1 - spawn(20) if(src) opacity = 0 + opacity = TRUE + spawn(20) + if(src) + opacity = FALSE ..() -/obj/machinery/shield/bullet_act(var/obj/item/projectile/Proj) +/obj/machinery/shield/bullet_act(obj/item/projectile/Proj) health -= Proj.damage ..() if(health <=0) visible_message("The [src] dissipates") qdel(src) return - opacity = 1 - spawn(20) if(src) opacity = 0 + opacity = TRUE + spawn(20) + if(src) + opacity = FALSE /obj/machinery/shield/ex_act(severity) switch(severity) @@ -79,7 +84,6 @@ if(3.0) if(prob(25)) qdel(src) - return /obj/machinery/shield/emp_act(severity) switch(severity) @@ -114,10 +118,10 @@ return //The shield becomes dense to absorb the blow.. purely asthetic. - opacity = 1 + opacity = TRUE spawn(20) if(src) - opacity = 0 + opacity = FALSE /obj/machinery/shieldgen @@ -126,17 +130,17 @@ icon = 'icons/obj/objects.dmi' icon_state = "shieldoff" density = 1 - opacity = 0 + opacity = FALSE anchored = 0 pressure_resistance = 2*ONE_ATMOSPHERE req_access = list(access_engine) var/const/max_health = 100 var/health = max_health var/active = 0 - var/malfunction = 0 //Malfunction causes parts of the shield to slowly dissapate + var/malfunction = FALSE //Malfunction causes parts of the shield to slowly dissapate var/list/deployed_shields = list() - var/is_open = 0 //Whether or not the wires are exposed - var/locked = 0 + var/is_open = FALSE //Whether or not the wires are exposed + var/locked = FALSE /obj/machinery/shieldgen/Destroy() QDEL_LIST(deployed_shields) @@ -145,9 +149,10 @@ /obj/machinery/shieldgen/proc/shields_up() - if(active) return 0 //If it's already turned on, how did this get called? + if(active) + return //If it's already turned on, how did this get called? - src.active = 1 + active = 1 update_icon() for(var/turf/target_tile in range(2, src)) @@ -156,9 +161,10 @@ deployed_shields += new /obj/machinery/shield(target_tile) /obj/machinery/shieldgen/proc/shields_down() - if(!active) return 0 //If it's already off, how did this get called? + if(!active) + return //If it's already off, how did this get called? - src.active = 0 + active = 0 update_icon() for(var/obj/machinery/shield/shield_tile in deployed_shields) @@ -173,7 +179,7 @@ /obj/machinery/shieldgen/proc/checkhp() if(health <= 30) - src.malfunction = 1 + malfunction = TRUE if(health <= 0) qdel(src) update_icon() @@ -182,28 +188,28 @@ /obj/machinery/shieldgen/ex_act(severity) switch(severity) if(1.0) - src.health -= 75 - src.checkhp() + health -= 75 + checkhp() if(2.0) - src.health -= 30 + health -= 30 if(prob(15)) - src.malfunction = 1 - src.checkhp() + malfunction = TRUE + checkhp() if(3.0) - src.health -= 10 - src.checkhp() + health -= 10 + checkhp() return /obj/machinery/shieldgen/emp_act(severity) switch(severity) if(1) - src.health /= 2 //cut health in half - malfunction = 1 - locked = pick(0,1) + health = health * 0.5 //cut health in half + malfunction = TRUE + locked = pick(TRUE, FALSE) if(2) if(prob(50)) - src.health *= 0.3 //chop off a third of the health - malfunction = 1 + health *= 0.3 //chop off a third of the health + malfunction = TRUE checkhp() /obj/machinery/shieldgen/attack_hand(mob/user as mob) @@ -214,70 +220,70 @@ to_chat(user, "The panel must be closed before operating this machine.") return - if(src.active) + if(active) user.visible_message("[bicon(src)] [user] deactivated the shield generator.", \ "[bicon(src)] You deactivate the shield generator.", \ "You hear heavy droning fade out.") - src.shields_down() + shields_down() else if(anchored) user.visible_message("[bicon(src)] [user] activated the shield generator.", \ "[bicon(src)] You activate the shield generator.", \ "You hear heavy droning.") - src.shields_up() + shields_up() else to_chat(user, "The device must first be secured to the floor.") - return -/obj/machinery/shieldgen/attackby(obj/item/W as obj, mob/user as mob, params) - if(istype(W, /obj/item/card/emag)) - malfunction = 1 +/obj/machinery/shieldgen/attackby(obj/item/I as obj, mob/user as mob, params) + if(istype(I, /obj/item/card/emag)) + malfunction = TRUE update_icon() - else if(istype(W, /obj/item/screwdriver)) - playsound(src.loc, W.usesound, 100, 1) + else if(isscrewdriver(I)) + playsound(loc, I.usesound, 100, 1) if(is_open) to_chat(user, "You close the panel.") - is_open = 0 + is_open = FALSE else to_chat(user, "You open the panel and expose the wiring.") - is_open = 1 + is_open = TRUE - else if(istype(W, /obj/item/stack/cable_coil) && malfunction && is_open) - var/obj/item/stack/cable_coil/coil = W + else if(istype(I, /obj/item/stack/cable_coil) && malfunction && is_open) + var/obj/item/stack/cable_coil/coil = I to_chat(user, "You begin to replace the wires.") - //if(do_after(user, min(60, round( ((maxhealth/health)*10)+(malfunction*10) ), target = src)) //Take longer to repair heavier damage if(do_after(user, 30 * coil.toolspeed, target = src)) - if(!src || !coil) return + if(!src || !coil) + return coil.use(1) health = max_health - malfunction = 0 + malfunction = TRUE playsound(loc, coil.usesound, 50, 1) to_chat(user, "You repair the [src]!") update_icon() - else if(istype(W, /obj/item/wrench)) + else if(istype(I, /obj/item/wrench)) if(locked) to_chat(user, "The bolts are covered, unlocking this would retract the covers.") return if(anchored) - playsound(src.loc, W.usesound, 100, 1) + playsound(loc, I.usesound, 100, 1) to_chat(user, "You unsecure the [src] from the floor!") if(active) to_chat(user, "The [src] shuts off!") - src.shields_down() + shields_down() anchored = 0 else - if(istype(get_turf(src), /turf/space)) return //No wrenching these in space! - playsound(src.loc, W.usesound, 100, 1) + if(istype(get_turf(src), /turf/space)) + return //No wrenching these in space! + playsound(loc, I.usesound, 100, 1) to_chat(user, "You secure the [src] to the floor!") anchored = 1 - else if(istype(W, /obj/item/card/id) || istype(W, /obj/item/pda)) - if(src.allowed(user)) - src.locked = !src.locked - to_chat(user, "The controls are now [src.locked ? "locked." : "unlocked."]") + else if(istype(I, /obj/item/card/id) || istype(I, /obj/item/pda)) + if(allowed(user)) + locked = !locked + to_chat(user, "The controls are now [locked ? "locked." : "unlocked."]") else to_chat(user, "Access denied.") @@ -287,11 +293,12 @@ /obj/machinery/shieldgen/update_icon() if(active) - src.icon_state = malfunction ? "shieldonbr":"shieldon" + icon_state = malfunction ? "shieldonbr":"shieldon" else - src.icon_state = malfunction ? "shieldoffbr":"shieldoff" + icon_state = malfunction ? "shieldoffbr":"shieldoff" return + ////FIELD GEN START //shameless copypasta from fieldgen, powersink, and grille #define maxstoredpower 500 /obj/machinery/shieldwallgen @@ -309,10 +316,9 @@ var/last_check = 0 var/check_delay = 10 var/recalc = 0 - var/locked = 1 + var/locked = TRUE var/destroyed = 0 var/directwired = 1 -// var/maxshieldload = 200 var/obj/structure/cable/attached // the attached cable var/storedpower = 0 flags = CONDUCT @@ -322,11 +328,12 @@ if(!anchored) power = 0 return 0 - var/turf/T = src.loc + var/turf/T = loc var/obj/structure/cable/C = T.get_cable_node() var/datum/powernet/PN - if(C) PN = C.powernet // find the powernet of the connected cable + if(C) + PN = C.powernet // find the powernet of the connected cable if(!PN) power = 0 @@ -345,32 +352,33 @@ // message_admins("[PN.load]", 1) // use_power(250) //uses APC power -/obj/machinery/shieldwallgen/attack_hand(mob/user as mob) +/obj/machinery/shieldwallgen/attack_hand(mob/user) if(state != 1) to_chat(user, "The shield generator needs to be firmly secured to the floor first.") return 1 - if(src.locked && !istype(user, /mob/living/silicon)) + if(locked && !issilicon(user)) to_chat(user, "The controls are locked!") return 1 if(power != 1) to_chat(user, "The shield generator needs to be powered by wire underneath.") return 1 - if(src.active >= 1) - src.active = 0 + if(active >= 1) + active = 0 icon_state = "Shield_Gen" user.visible_message("[user] turned the shield generator off.", \ "You turn off the shield generator.", \ "You hear heavy droning fade out.") - for(var/dir in list(1,2,4,8)) src.cleanup(dir) + for(var/dir in list(NORTH, SOUTH, EAST, WEST)) + cleanup(dir) else - src.active = 1 + active = 1 icon_state = "Shield_Gen +a" user.visible_message("[user] turned the shield generator on.", \ "You turn on the shield generator.", \ "You hear heavy droning.") - src.add_fingerprint(user) + add_fingerprint(user) /obj/machinery/shieldwallgen/process() spawn(100) @@ -381,12 +389,10 @@ storedpower = maxstoredpower if(storedpower <= 0) storedpower = 0 -// if(shieldload >= maxshieldload) //there was a loop caused by specifics of process(), so this was needed. -// shieldload = maxshieldload - if(src.active == 1) - if(!src.state == 1) - src.active = 0 + if(active == 1) + if(!state == 1) + active = 0 return spawn(1) setup_field(1) @@ -396,18 +402,19 @@ setup_field(4) spawn(4) setup_field(8) - src.active = 2 - if(src.active >= 1) - if(src.power == 0) - src.visible_message("The [src.name] shuts down due to lack of power!", \ + active = 2 + if(active >= 1) + if(power == 0) + visible_message("The [name] shuts down due to lack of power!", \ "You hear heavy droning fade out") icon_state = "Shield_Gen" - src.active = 0 - for(var/dir in list(1,2,4,8)) src.cleanup(dir) + active = 0 + for(var/dir in list(NORTH, SOUTH, EAST, WEST)) + cleanup(dir) -/obj/machinery/shieldwallgen/proc/setup_field(var/NSEW = 0) - var/turf/T = src.loc - var/turf/T2 = src.loc +/obj/machinery/shieldwallgen/proc/setup_field(NSEW = 0) + var/turf/T = loc + var/turf/T2 = loc var/obj/machinery/shieldwallgen/G var/steps = 0 var/oNSEW = 0 @@ -439,7 +446,7 @@ if(isnull(G)) return - T2 = src.loc + T2 = loc for(var/dist = 0, dist < steps, dist += 1) // creates each field tile var/field_dir = get_dir(T2,get_step(T2, NSEW)) @@ -450,30 +457,30 @@ CF.dir = field_dir -/obj/machinery/shieldwallgen/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/wrench)) +/obj/machinery/shieldwallgen/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/wrench)) if(active) to_chat(user, "Turn off the field generator first.") return else if(state == 0) state = 1 - playsound(src.loc, W.usesound, 75, 1) + playsound(loc, I.usesound, 75, 1) to_chat(user, "You secure the external reinforcing bolts to the floor.") - src.anchored = 1 + anchored = 1 return else if(state == 1) state = 0 - playsound(src.loc, W.usesound, 75, 1) + playsound(loc, I.usesound, 75, 1) to_chat(user, "You undo the external reinforcing bolts.") - src.anchored = 0 + anchored = 0 return - if(istype(W, /obj/item/card/id)||istype(W, /obj/item/pda)) - if(src.allowed(user)) - src.locked = !src.locked - to_chat(user, "Controls are now [src.locked ? "locked." : "unlocked."]") + if(istype(I, /obj/item/card/id)||istype(I, /obj/item/pda)) + if(allowed(user)) + locked = !locked + to_chat(user, "Controls are now [locked ? "locked." : "unlocked."]") else to_chat(user, "Access denied.") @@ -481,18 +488,19 @@ add_fingerprint(user) ..() -/obj/machinery/shieldwallgen/proc/cleanup(var/NSEW) +/obj/machinery/shieldwallgen/proc/cleanup(NSEW) var/obj/machinery/shieldwall/F var/obj/machinery/shieldwallgen/G - var/turf/T = src.loc - var/turf/T2 = src.loc + var/turf/T = loc + var/turf/T2 = loc for(var/dist = 0, dist <= 9, dist += 1) // checks out to 8 tiles away for fields T = get_step(T2, NSEW) T2 = T if(locate(/obj/machinery/shieldwall) in T) F = (locate(/obj/machinery/shieldwall) in T) - qdel(F) + if(F.gen_primary == src || F.gen_secondary == src) + qdel(F) if(locate(/obj/machinery/shieldwallgen) in T) G = (locate(/obj/machinery/shieldwallgen) in T) @@ -500,19 +508,19 @@ break /obj/machinery/shieldwallgen/Destroy() - src.cleanup(1) - src.cleanup(2) - src.cleanup(4) - src.cleanup(8) + cleanup(1) + cleanup(2) + cleanup(4) + cleanup(8) return ..() -/obj/machinery/shieldwallgen/bullet_act(var/obj/item/projectile/Proj) +/obj/machinery/shieldwallgen/bullet_act(obj/item/projectile/Proj) storedpower -= Proj.damage ..() return -//////////////Containment Field START +////////////// Containment Field START /obj/machinery/shieldwall name = "Shield" desc = "An energy shield." @@ -524,21 +532,20 @@ luminosity = 3 var/needs_power = 0 var/active = 1 -// var/power = 10 var/delay = 5 var/last_active var/mob/U var/obj/machinery/shieldwallgen/gen_primary var/obj/machinery/shieldwallgen/gen_secondary -/obj/machinery/shieldwall/New(var/obj/machinery/shieldwallgen/A, var/obj/machinery/shieldwallgen/B) +/obj/machinery/shieldwall/New(obj/machinery/shieldwallgen/A, obj/machinery/shieldwallgen/B) ..() - src.gen_primary = A - src.gen_secondary = B + gen_primary = A + gen_secondary = B if(A && B) needs_power = 1 -/obj/machinery/shieldwall/attack_hand(mob/user as mob) +/obj/machinery/shieldwall/attack_hand(mob/user) return /obj/machinery/shieldwall/rpd_blocksusage() @@ -553,14 +560,14 @@ if(!(gen_primary.active)||!(gen_secondary.active)) qdel(src) return -// + if(prob(50)) gen_primary.storedpower -= 10 else gen_secondary.storedpower -=10 -/obj/machinery/shieldwall/bullet_act(var/obj/item/projectile/Proj) +/obj/machinery/shieldwall/bullet_act(obj/item/projectile/Proj) if(needs_power) var/obj/machinery/shieldwallgen/G if(prob(50)) @@ -600,7 +607,8 @@ /obj/machinery/shieldwall/CanPass(atom/movable/mover, turf/target, height=0) - if(height==0) return 1 + if(height == 0) + return TRUE if(istype(mover) && mover.checkpass(PASSGLASS)) return prob(20) @@ -608,7 +616,7 @@ if(istype(mover, /obj/item/projectile)) return prob(10) else - return !src.density + return !density /obj/machinery/shieldwall/syndicate