mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-24 12:37:26 +01:00
Merge pull request #9302 from Kyep/refactor-shieldgen
shieldgen.dm refactoring
This commit is contained in:
+133
-125
@@ -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("<span class='notice'>The [src] dissipates</span>")
|
||||
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("<span class='notice'>The [src] dissipates</span>")
|
||||
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("<span class='notice'>[bicon(src)] [user] deactivated the shield generator.</span>", \
|
||||
"<span class='notice'>[bicon(src)] You deactivate the shield generator.</span>", \
|
||||
"You hear heavy droning fade out.")
|
||||
src.shields_down()
|
||||
shields_down()
|
||||
else
|
||||
if(anchored)
|
||||
user.visible_message("<span class='notice'>[bicon(src)] [user] activated the shield generator.</span>", \
|
||||
"<span class='notice'>[bicon(src)] You activate the shield generator.</span>", \
|
||||
"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, "<span class='notice'>You close the panel.</span>")
|
||||
is_open = 0
|
||||
is_open = FALSE
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You open the panel and expose the wiring.</span>")
|
||||
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, "<span class='notice'>You begin to replace the wires.</span>")
|
||||
//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, "<span class='notice'>You repair the [src]!</span>")
|
||||
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, "<span class='notice'>You unsecure the [src] from the floor!</span>")
|
||||
if(active)
|
||||
to_chat(user, "<span class='notice'>The [src] shuts off!</span>")
|
||||
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, "<span class='notice'>You secure the [src] to the floor!</span>")
|
||||
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, "<span class='warning'>Access denied.</span>")
|
||||
|
||||
@@ -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, "<span class='warning'>The shield generator needs to be firmly secured to the floor first.</span>")
|
||||
return 1
|
||||
if(src.locked && !istype(user, /mob/living/silicon))
|
||||
if(locked && !issilicon(user))
|
||||
to_chat(user, "<span class='warning'>The controls are locked!</span>")
|
||||
return 1
|
||||
if(power != 1)
|
||||
to_chat(user, "<span class='warning'>The shield generator needs to be powered by wire underneath.</span>")
|
||||
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("<span class='warning'>The [src.name] shuts down due to lack of power!</span>", \
|
||||
active = 2
|
||||
if(active >= 1)
|
||||
if(power == 0)
|
||||
visible_message("<span class='warning'>The [name] shuts down due to lack of power!</span>", \
|
||||
"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, "<span class='warning'>Access denied.</span>")
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user