mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
Adminbus part2
This commit is contained in:
@@ -1,7 +1,4 @@
|
|||||||
//Machinery that gets deleted by Nar-Sie and isn't replaced with cult structures
|
//Machinery that gets deleted by Nar-Sie and isn't replaced with cult structures
|
||||||
/obj/machinery/bot/cultify()
|
|
||||||
qdel(src)
|
|
||||||
|
|
||||||
/obj/machinery/camera/cultify()
|
/obj/machinery/camera/cultify()
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
#define CLEAN_BOT 4 // Cleanbots
|
#define CLEAN_BOT 4 // Cleanbots
|
||||||
#define MED_BOT 5 // Medibots
|
#define MED_BOT 5 // Medibots
|
||||||
//var/emagged = 0 //Urist: Moving that var to the general /bot tree as it's used by most bots
|
//var/emagged = 0 //Urist: Moving that var to the general /bot tree as it's used by most bots
|
||||||
|
var/isolated = 0
|
||||||
|
|
||||||
/obj/machinery/bot/proc/turn_on()
|
/obj/machinery/bot/proc/turn_on()
|
||||||
if(stat) return 0
|
if(stat) return 0
|
||||||
@@ -58,6 +59,8 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
/obj/machinery/bot/attack_alien(var/mob/living/carbon/alien/user as mob)
|
/obj/machinery/bot/attack_alien(var/mob/living/carbon/alien/user as mob)
|
||||||
|
if(isolated)
|
||||||
|
return
|
||||||
src.health -= rand(15,30)*brute_dam_coeff
|
src.health -= rand(15,30)*brute_dam_coeff
|
||||||
src.visible_message("\red <B>[user] has slashed [src]!</B>")
|
src.visible_message("\red <B>[user] has slashed [src]!</B>")
|
||||||
playsound(get_turf(src), 'sound/weapons/slice.ogg', 25, 1, -1)
|
playsound(get_turf(src), 'sound/weapons/slice.ogg', 25, 1, -1)
|
||||||
@@ -67,6 +70,8 @@
|
|||||||
|
|
||||||
|
|
||||||
/obj/machinery/bot/attack_animal(var/mob/living/simple_animal/M as mob)
|
/obj/machinery/bot/attack_animal(var/mob/living/simple_animal/M as mob)
|
||||||
|
if(isolated)
|
||||||
|
return
|
||||||
if(M.melee_damage_upper == 0) return
|
if(M.melee_damage_upper == 0) return
|
||||||
src.health -= M.melee_damage_upper
|
src.health -= M.melee_damage_upper
|
||||||
src.visible_message("\red <B>[M] has [M.attacktext] [src]!</B>")
|
src.visible_message("\red <B>[M] has [M.attacktext] [src]!</B>")
|
||||||
@@ -90,6 +95,8 @@
|
|||||||
|
|
||||||
|
|
||||||
/obj/machinery/bot/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
/obj/machinery/bot/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||||
|
if(isolated)
|
||||||
|
return
|
||||||
if(istype(W, /obj/item/weapon/screwdriver))
|
if(istype(W, /obj/item/weapon/screwdriver))
|
||||||
if(!locked)
|
if(!locked)
|
||||||
open = !open
|
open = !open
|
||||||
@@ -118,20 +125,28 @@
|
|||||||
..()
|
..()
|
||||||
|
|
||||||
/obj/machinery/bot/bullet_act(var/obj/item/projectile/Proj)
|
/obj/machinery/bot/bullet_act(var/obj/item/projectile/Proj)
|
||||||
|
if(isolated)
|
||||||
|
return
|
||||||
health -= Proj.damage
|
health -= Proj.damage
|
||||||
..()
|
..()
|
||||||
healthcheck()
|
healthcheck()
|
||||||
|
|
||||||
/obj/machinery/bot/meteorhit()
|
/obj/machinery/bot/meteorhit()
|
||||||
|
if(isolated)
|
||||||
|
return
|
||||||
src.explode()
|
src.explode()
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/machinery/bot/blob_act()
|
/obj/machinery/bot/blob_act()
|
||||||
|
if(isolated)
|
||||||
|
return
|
||||||
src.health -= rand(20,40)*fire_dam_coeff
|
src.health -= rand(20,40)*fire_dam_coeff
|
||||||
healthcheck()
|
healthcheck()
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/machinery/bot/ex_act(severity)
|
/obj/machinery/bot/ex_act(severity)
|
||||||
|
if(isolated)
|
||||||
|
return
|
||||||
switch(severity)
|
switch(severity)
|
||||||
if(1.0)
|
if(1.0)
|
||||||
src.explode()
|
src.explode()
|
||||||
@@ -150,6 +165,8 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
/obj/machinery/bot/emp_act(severity)
|
/obj/machinery/bot/emp_act(severity)
|
||||||
|
if(isolated)
|
||||||
|
return
|
||||||
var/was_on = on
|
var/was_on = on
|
||||||
stat |= EMPED
|
stat |= EMPED
|
||||||
var/obj/effect/overlay/pulse2 = new/obj/effect/overlay ( src.loc )
|
var/obj/effect/overlay/pulse2 = new/obj/effect/overlay ( src.loc )
|
||||||
@@ -239,3 +256,10 @@
|
|||||||
//if((dir & EAST ) && (D.dir & (NORTH|SOUTH))) return !D.check_access(ID)
|
//if((dir & EAST ) && (D.dir & (NORTH|SOUTH))) return !D.check_access(ID)
|
||||||
else return !D.check_access(ID) // it's a real, air blocking door
|
else return !D.check_access(ID) // it's a real, air blocking door
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/bot/cultify()
|
||||||
|
if(src.isolated)
|
||||||
|
return
|
||||||
|
else
|
||||||
|
qdel(src)
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
//Deity Link, giving a new meaning to the Adminbus since 2014
|
||||||
|
|
||||||
/obj/structure/stool/bed/chair/vehicle/adminbus
|
/obj/structure/stool/bed/chair/vehicle/adminbus
|
||||||
name = "\improper Adminbus"
|
name = "\improper Adminbus"
|
||||||
desc = "Shit just got fucking real."
|
desc = "Shit just got fucking real."
|
||||||
@@ -11,6 +13,7 @@
|
|||||||
var/list/overlays_bus[3]//1=underlay 2=roadlights 3=ad
|
var/list/overlays_bus[3]//1=underlay 2=roadlights 3=ad
|
||||||
var/list/passengers[16]
|
var/list/passengers[16]
|
||||||
var/occupied_seats = 0
|
var/occupied_seats = 0
|
||||||
|
var/unloading = 0
|
||||||
var/capture_mode = 1//1=capture mobs 2=roll over mobs(deals light brute damage and push them down) 3=gib mobs
|
var/capture_mode = 1//1=capture mobs 2=roll over mobs(deals light brute damage and push them down) 3=gib mobs
|
||||||
var/spawned_mobs[] = list()//keeps track of every mobs spawned by the bus, so we can remove them all with the push of a button in needed
|
var/spawned_mobs[] = list()//keeps track of every mobs spawned by the bus, so we can remove them all with the push of a button in needed
|
||||||
var/hook = 1
|
var/hook = 1
|
||||||
@@ -18,6 +21,7 @@
|
|||||||
var/obj/structure/singulo_chain/chain_base = null
|
var/obj/structure/singulo_chain/chain_base = null
|
||||||
var/chain[] = list()
|
var/chain[] = list()
|
||||||
var/obj/machinery/singularity/singulo = null
|
var/obj/machinery/singularity/singulo = null
|
||||||
|
var/roadlights = 0
|
||||||
|
|
||||||
/obj/structure/stool/bed/chair/vehicle/adminbus/New()
|
/obj/structure/stool/bed/chair/vehicle/adminbus/New()
|
||||||
..()
|
..()
|
||||||
@@ -28,9 +32,9 @@
|
|||||||
overlays_bus[2] = roadlights
|
overlays_bus[2] = roadlights
|
||||||
overlays_bus[3] = advertisement
|
overlays_bus[3] = advertisement
|
||||||
overlays += overlays_bus[1]
|
overlays += overlays_bus[1]
|
||||||
overlays += overlays_bus[2]
|
|
||||||
overlays += overlays_bus[3]
|
overlays += overlays_bus[3]
|
||||||
dir = 4
|
src.dir = 4
|
||||||
|
playsound(src, 'sound/misc/adminbus.ogg', 50, 0, 0)
|
||||||
|
|
||||||
/obj/structure/stool/bed/chair/vehicle/adminbus/update_mob()
|
/obj/structure/stool/bed/chair/vehicle/adminbus/update_mob()
|
||||||
if(buckled_mob)
|
if(buckled_mob)
|
||||||
@@ -128,6 +132,11 @@
|
|||||||
|
|
||||||
/obj/structure/stool/bed/chair/vehicle/adminbus/Move()
|
/obj/structure/stool/bed/chair/vehicle/adminbus/Move()
|
||||||
var/turf/T = get_turf(src)
|
var/turf/T = get_turf(src)
|
||||||
|
var/turf/S = get_step(src,src.dir)
|
||||||
|
for(var/mob/living/M in S)
|
||||||
|
capture_mob(M)
|
||||||
|
for(var/obj/machinery/bot/B in S)
|
||||||
|
capture_mob(B)
|
||||||
..()
|
..()
|
||||||
if(chain_base)
|
if(chain_base)
|
||||||
chain_base.move_child(T)
|
chain_base.move_child(T)
|
||||||
@@ -136,6 +145,9 @@
|
|||||||
if(isliving(A))
|
if(isliving(A))
|
||||||
var/mob/living/M = A
|
var/mob/living/M = A
|
||||||
M.loc = src.loc
|
M.loc = src.loc
|
||||||
|
else if(isbot(A))
|
||||||
|
var/obj/machinery/bot/B = A
|
||||||
|
B.loc = src.loc
|
||||||
for(var/obj/structure/hookshot/H in hookshot)
|
for(var/obj/structure/hookshot/H in hookshot)
|
||||||
H.forceMove(get_step(H,src.dir))
|
H.forceMove(get_step(H,src.dir))
|
||||||
|
|
||||||
@@ -169,6 +181,8 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
/obj/structure/stool/bed/chair/vehicle/adminbus/proc/capture_mob(atom/A)
|
/obj/structure/stool/bed/chair/vehicle/adminbus/proc/capture_mob(atom/A)
|
||||||
|
if(unloading)
|
||||||
|
return
|
||||||
if(isliving(A))
|
if(isliving(A))
|
||||||
var/mob/living/M = A
|
var/mob/living/M = A
|
||||||
if(M.faction == "admin")
|
if(M.faction == "admin")
|
||||||
@@ -183,7 +197,17 @@
|
|||||||
M.update_canmove()
|
M.update_canmove()
|
||||||
passengers[occupied_seats] = M
|
passengers[occupied_seats] = M
|
||||||
src.add_fingerprint(M)
|
src.add_fingerprint(M)
|
||||||
//else if(isbot(A))
|
else if(isbot(A))
|
||||||
|
var/obj/machinery/bot/B = A
|
||||||
|
if(B.isolated)
|
||||||
|
return
|
||||||
|
occupied_seats++
|
||||||
|
B.turn_off()
|
||||||
|
B.isolated = 1
|
||||||
|
B.anchored = 1
|
||||||
|
B.loc = src.loc
|
||||||
|
B.dir = src.dir
|
||||||
|
passengers[occupied_seats] = B
|
||||||
|
|
||||||
/obj/structure/stool/bed/chair/vehicle/adminbus/buckle_mob(mob/M, mob/user)
|
/obj/structure/stool/bed/chair/vehicle/adminbus/buckle_mob(mob/M, mob/user)
|
||||||
if(M != user || !ismob(M) || get_dist(src, user) > 1 || user.restrained() || user.lying || user.stat || M.buckled || istype(user, /mob/living/silicon) || destroyed)
|
if(M != user || !ismob(M) || get_dist(src, user) > 1 || user.restrained() || user.lying || user.stat || M.buckled || istype(user, /mob/living/silicon) || destroyed)
|
||||||
@@ -204,6 +228,10 @@
|
|||||||
buckled_mob = user
|
buckled_mob = user
|
||||||
update_mob()
|
update_mob()
|
||||||
add_fingerprint(user)
|
add_fingerprint(user)
|
||||||
|
if(!roadlights)
|
||||||
|
overlays += overlays_bus[2]
|
||||||
|
roadlights = 1
|
||||||
|
playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
@@ -225,6 +253,9 @@
|
|||||||
buckled_mob.pixel_x = 0
|
buckled_mob.pixel_x = 0
|
||||||
buckled_mob.pixel_y = 0
|
buckled_mob.pixel_y = 0
|
||||||
buckled_mob = null
|
buckled_mob = null
|
||||||
|
if(roadlights)
|
||||||
|
overlays -= overlays_bus[2]
|
||||||
|
roadlights = 0
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/structure/stool/bed/chair/vehicle/adminbus/emp_act(severity)
|
/obj/structure/stool/bed/chair/vehicle/adminbus/emp_act(severity)
|
||||||
@@ -307,6 +338,9 @@
|
|||||||
sleep(2)
|
sleep(2)
|
||||||
returnin()
|
returnin()
|
||||||
|
|
||||||
|
/obj/structure/hookshot/ex_act(severity)
|
||||||
|
return
|
||||||
|
|
||||||
/obj/structure/hookshot/cultify()
|
/obj/structure/hookshot/cultify()
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -324,6 +358,9 @@
|
|||||||
icon_state = ""
|
icon_state = ""
|
||||||
var/obj/machinery/singularity/target = null
|
var/obj/machinery/singularity/target = null
|
||||||
|
|
||||||
|
/obj/structure/singulo_chain/ex_act(severity)
|
||||||
|
return
|
||||||
|
|
||||||
/obj/structure/singulo_chain/proc/move_child(var/turf/parent)
|
/obj/structure/singulo_chain/proc/move_child(var/turf/parent)
|
||||||
var/turf/T = get_turf(src)
|
var/turf/T = get_turf(src)
|
||||||
if(parent)//I don't see how this could be null but a sanity check won't hurt
|
if(parent)//I don't see how this could be null but a sanity check won't hurt
|
||||||
|
|||||||
@@ -10,52 +10,52 @@
|
|||||||
usr << "Nice try."
|
usr << "Nice try."
|
||||||
return
|
return
|
||||||
|
|
||||||
switch(dir)
|
unloading = 1
|
||||||
if(SOUTH)
|
|
||||||
for(var/i=1;i<=passengers.len;i++)
|
for(var/i=occupied_seats;i>0;i--)
|
||||||
var/atom/A = passengers[i]
|
var/atom/A = passengers[i]
|
||||||
if(isliving(A))
|
if(isliving(A))
|
||||||
var/mob/living/L = A
|
var/mob/living/L = A
|
||||||
freed(L)
|
switch(dir)
|
||||||
|
if(SOUTH)
|
||||||
L.x = x-1
|
L.x = x-1
|
||||||
sleep(3)
|
if(WEST)
|
||||||
if(WEST)
|
|
||||||
for(var/i=1;i<=passengers.len;i++)
|
|
||||||
var/atom/A = passengers[i]
|
|
||||||
if(isliving(A))
|
|
||||||
var/mob/living/L = A
|
|
||||||
freed(L)
|
|
||||||
L.y = y+1
|
L.y = y+1
|
||||||
sleep(3)
|
if(NORTH)
|
||||||
if(NORTH)
|
|
||||||
for(var/i=1;i<=passengers.len;i++)
|
|
||||||
var/atom/A = passengers[i]
|
|
||||||
if(isliving(A))
|
|
||||||
var/mob/living/L = A
|
|
||||||
freed(L)
|
|
||||||
L.x = x+1
|
L.x = x+1
|
||||||
sleep(3)
|
if(EAST)
|
||||||
if(EAST)
|
|
||||||
for(var/i=1;i<=passengers.len;i++)
|
|
||||||
var/atom/A = passengers[i]
|
|
||||||
if(isliving(A))
|
|
||||||
var/mob/living/L = A
|
|
||||||
freed(L)
|
|
||||||
L.y = y-1
|
L.y = y-1
|
||||||
sleep(3)
|
freed(L)
|
||||||
for(var/i=1;i<=passengers.len;i++)
|
else if(isbot(A))
|
||||||
|
var/obj/machinery/bot/B = A
|
||||||
|
switch(dir)
|
||||||
|
if(SOUTH)
|
||||||
|
B.x = x-1
|
||||||
|
if(WEST)
|
||||||
|
B.y = y+1
|
||||||
|
if(NORTH)
|
||||||
|
B.x = x+1
|
||||||
|
if(EAST)
|
||||||
|
B.y = y-1
|
||||||
|
B.turn_on()
|
||||||
|
B.isolated = 0
|
||||||
|
B.anchored = 0
|
||||||
passengers[i] = null
|
passengers[i] = null
|
||||||
occupied_seats = 0
|
occupied_seats--
|
||||||
|
sleep(3)
|
||||||
|
|
||||||
|
unloading = 0
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/structure/stool/bed/chair/vehicle/adminbus/proc/freed(var/mob/living/L)
|
/obj/structure/stool/bed/chair/vehicle/adminbus/proc/freed(var/mob/living/L)
|
||||||
L.buckled = null
|
L.buckled = null
|
||||||
L.anchored = 0
|
L.anchored = 0
|
||||||
L.update_canmove()
|
|
||||||
L.isolated = 0
|
L.isolated = 0
|
||||||
L.captured = 0
|
L.captured = 0
|
||||||
L.pixel_x = 0
|
L.pixel_x = 0
|
||||||
L.pixel_y = 0
|
L.pixel_y = 0
|
||||||
|
L.update_canmove()
|
||||||
|
|
||||||
/obj/structure/stool/bed/chair/vehicle/adminbus/verb/spawn_clowns()
|
/obj/structure/stool/bed/chair/vehicle/adminbus/verb/spawn_clowns()
|
||||||
set name = "Spawn Clowns"
|
set name = "Spawn Clowns"
|
||||||
@@ -233,10 +233,14 @@
|
|||||||
spawned_mobs.len = 0
|
spawned_mobs.len = 0
|
||||||
|
|
||||||
/obj/structure/stool/bed/chair/vehicle/adminbus/proc/capture_singulo(var/obj/machinery/singularity/S)
|
/obj/structure/stool/bed/chair/vehicle/adminbus/proc/capture_singulo(var/obj/machinery/singularity/S)
|
||||||
|
for(var/atom/A in hookshot) //first we remove the hookshot and its chain
|
||||||
|
qdel(A)
|
||||||
|
hookshot.len = 0
|
||||||
|
|
||||||
singulo = S
|
singulo = S
|
||||||
S.on_capture()
|
S.on_capture()
|
||||||
var/obj/structure/singulo_chain/parentchain = null
|
var/obj/structure/singulo_chain/parentchain = null
|
||||||
var/obj/structure/singulo_chain/anchor/A = new /obj/structure/singulo_chain/anchor(loc) //the anchor spawns first, on top of the bus,
|
var/obj/structure/singulo_chain/anchor/A = new /obj/structure/singulo_chain/anchor(loc) //then we spawn the invisible anchor on top of the bus,
|
||||||
while(get_dist(A,S) > 0) //it then travels toward the singulo while creating chains on its path,
|
while(get_dist(A,S) > 0) //it then travels toward the singulo while creating chains on its path,
|
||||||
A.forceMove(get_step_towards(A,S)) //and parenting them together
|
A.forceMove(get_step_towards(A,S)) //and parenting them together
|
||||||
var/obj/structure/singulo_chain/C = new /obj/structure/singulo_chain(A.loc)
|
var/obj/structure/singulo_chain/C = new /obj/structure/singulo_chain(A.loc)
|
||||||
@@ -251,8 +255,8 @@
|
|||||||
chain_base = A
|
chain_base = A
|
||||||
else
|
else
|
||||||
parentchain.child = A
|
parentchain.child = A
|
||||||
chain += A
|
chain += A //once the anchor has reached the singulo, it parents itself to the last element in the chain
|
||||||
A.target = singulo
|
A.target = singulo //and stays on top of the singulo.
|
||||||
|
|
||||||
/obj/structure/stool/bed/chair/vehicle/adminbus/verb/throw_hookshot()
|
/obj/structure/stool/bed/chair/vehicle/adminbus/verb/throw_hookshot()
|
||||||
set name = "Throw Hookshot"
|
set name = "Throw Hookshot"
|
||||||
@@ -270,19 +274,16 @@
|
|||||||
|
|
||||||
hook = 0
|
hook = 0
|
||||||
|
|
||||||
var/obj/structure/hookshot/claw/C = new/obj/structure/hookshot/claw(get_step(src,src.dir))
|
var/obj/structure/hookshot/claw/C = new/obj/structure/hookshot/claw(get_step(src,src.dir)) //First we spawn the claw
|
||||||
hookshot += C
|
hookshot += C
|
||||||
C.abus = src
|
C.abus = src
|
||||||
|
|
||||||
var/obj/machinery/singularity/S = C.launchin(src.dir)
|
var/obj/machinery/singularity/S = C.launchin(src.dir) //The claw moves forward, spawning hookshot-chains on its path
|
||||||
if(S)
|
if(S)
|
||||||
for(var/atom/A in hookshot)
|
capture_singulo(S) //If the claw hits a singulo, we remove the hookshot-chains and replace them with singulo-chains
|
||||||
qdel(A)
|
|
||||||
hookshot.len = 0
|
|
||||||
capture_singulo(S)
|
|
||||||
else
|
else
|
||||||
for(var/obj/structure/hookshot/A in hookshot)
|
for(var/obj/structure/hookshot/A in hookshot) //If it doesn't hit anything, all the elements of the chain come back toward the bus,
|
||||||
spawn()//so they all return at once
|
spawn()//so they all return at once //deleting themselves when they reach it.
|
||||||
A.returnin()
|
A.returnin()
|
||||||
|
|
||||||
/obj/structure/stool/bed/chair/vehicle/adminbus/verb/release_singulo()
|
/obj/structure/stool/bed/chair/vehicle/adminbus/verb/release_singulo()
|
||||||
@@ -296,32 +297,55 @@
|
|||||||
usr << "Nice try."
|
usr << "Nice try."
|
||||||
return
|
return
|
||||||
|
|
||||||
if(singulo)
|
if(chain_base)
|
||||||
var/obj/structure/hookshot/claw/A = new /obj/structure/hookshot/claw(loc)
|
var/obj/structure/singulo_chain/anchor/A = locate(/obj/structure/singulo_chain/anchor) in chain
|
||||||
hookshot += A
|
if(A)
|
||||||
A.abus = src
|
del(A)//so we don't drag the singulo back to us along with the rest of the chain.
|
||||||
A.dropped = 1 //so it doesn't try to grab the singulo again as soon as it drops it.
|
if(singulo)
|
||||||
while(get_dist(A,singulo) > 0)
|
singulo.on_release()
|
||||||
A.forceMove(get_step_towards(A,singulo))
|
singulo = null
|
||||||
var/obj/structure/hookshot/H = new /obj/structure/hookshot(A.loc)
|
while(chain_base)
|
||||||
hookshot += H
|
var/obj/structure/singulo_chain/C = chain_base
|
||||||
H.abus = src
|
C.move_child(get_turf(src))
|
||||||
var/obj/structure/singulo_chain/C = locate(/obj/structure/singulo_chain) in H.loc
|
chain_base = C.child
|
||||||
if(C)
|
del(C)
|
||||||
H.dir = C.dir
|
sleep(2)
|
||||||
for(var/obj/structure/singulo_chain/N in chain)
|
|
||||||
|
for(var/obj/structure/singulo_chain/N in chain)//Just in case some bits of the chain were detached from the bus for whatever reason
|
||||||
del(N)
|
del(N)
|
||||||
chain.len = 0
|
chain.len = 0
|
||||||
for(var/obj/structure/hookshot/T in hookshot)
|
|
||||||
spawn()//so they all return at once
|
|
||||||
T.returnin()
|
|
||||||
singulo.on_release()
|
|
||||||
singulo = null
|
|
||||||
|
|
||||||
|
hook = 1
|
||||||
|
|
||||||
|
/obj/structure/stool/bed/chair/vehicle/adminbus/verb/mass_rejuvinate()
|
||||||
|
set name = "Mass Rejuvinate"
|
||||||
|
set category = "Adminbus"
|
||||||
|
set src = view(0)
|
||||||
|
set popup_menu = 0
|
||||||
|
set hidden = 0
|
||||||
|
|
||||||
|
for(var/mob/living/M in orange(src,3))
|
||||||
|
M.revive()
|
||||||
|
M << "<span class='notice'>THE ADMINBUS IS LOVE. THE ADMINBUS IS LIFE.</span>"
|
||||||
|
sleep(2)
|
||||||
|
|
||||||
|
/obj/structure/stool/bed/chair/vehicle/adminbus/verb/toggle_lights()
|
||||||
|
set name = "Toggle Roadlights"
|
||||||
|
set category = "Adminbus"
|
||||||
|
set src = view(0)
|
||||||
|
set popup_menu = 0
|
||||||
|
set hidden = 0
|
||||||
|
|
||||||
|
if(roadlights)
|
||||||
|
roadlights = 0
|
||||||
|
overlays -= overlays_bus[2]
|
||||||
|
else
|
||||||
|
roadlights = 1
|
||||||
|
overlays += overlays_bus[2]
|
||||||
|
|
||||||
|
/*WIP
|
||||||
/obj/item/key/teleportback
|
/obj/item/key/teleportback
|
||||||
|
|
||||||
/obj/item/key/teleportback/attack_self(mob/user as mob)
|
/obj/item/key/teleportback/attack_self(mob/user as mob)
|
||||||
user.send_back()
|
user.send_back()
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,42 +1,44 @@
|
|||||||
//called when the tile is cultified
|
//called when the tile is cultified
|
||||||
/turf/proc/cultification()
|
/turf/proc/cultification()
|
||||||
c_animation = new /atom/movable/overlay(src)
|
if(!c_animation)
|
||||||
c_animation.name = "cultification"
|
c_animation = new /atom/movable/overlay(src)
|
||||||
c_animation.density = 0
|
c_animation.name = "cultification"
|
||||||
c_animation.anchored = 1
|
c_animation.density = 0
|
||||||
c_animation.icon = 'icons/effects/effects.dmi'
|
c_animation.anchored = 1
|
||||||
c_animation.layer = 3
|
c_animation.icon = 'icons/effects/effects.dmi'
|
||||||
c_animation.master = src
|
c_animation.layer = 3
|
||||||
if(density)
|
c_animation.master = src
|
||||||
c_animation.icon_state = "cultwall"
|
if(density)
|
||||||
else
|
c_animation.icon_state = "cultwall"
|
||||||
c_animation.icon_state = "cultfloor"
|
else
|
||||||
c_animation.pixel_x = 0
|
c_animation.icon_state = "cultfloor"
|
||||||
c_animation.pixel_y = 0
|
c_animation.pixel_x = 0
|
||||||
flick("cultification",c_animation)
|
c_animation.pixel_y = 0
|
||||||
spawn(10)
|
flick("cultification",c_animation)
|
||||||
del(c_animation)
|
spawn(10)
|
||||||
|
del(c_animation)
|
||||||
|
|
||||||
//called by various cult runes
|
//called by various cult runes
|
||||||
/turf/proc/invocanimation(var/animation_type)
|
/turf/proc/invocanimation(var/animation_type)
|
||||||
c_animation = new /atom/movable/overlay(src)
|
if(!c_animation)
|
||||||
c_animation.name = "invocanimation"
|
c_animation = new /atom/movable/overlay(src)
|
||||||
c_animation.density = 0
|
c_animation.name = "invocanimation"
|
||||||
c_animation.anchored = 1
|
c_animation.density = 0
|
||||||
c_animation.icon = 'icons/effects/effects.dmi'
|
c_animation.anchored = 1
|
||||||
c_animation.layer = 5
|
c_animation.icon = 'icons/effects/effects.dmi'
|
||||||
c_animation.master = src
|
c_animation.layer = 5
|
||||||
c_animation.icon_state = "[animation_type]"
|
c_animation.master = src
|
||||||
c_animation.pixel_x = 0
|
c_animation.icon_state = "[animation_type]"
|
||||||
c_animation.pixel_y = 0
|
c_animation.pixel_x = 0
|
||||||
flick("invocanimation",c_animation)
|
c_animation.pixel_y = 0
|
||||||
spawn(10)
|
flick("invocanimation",c_animation)
|
||||||
del(c_animation)
|
spawn(10)
|
||||||
|
del(c_animation)
|
||||||
|
|
||||||
//called whenever a null rod is blocking a spell or rune
|
//called whenever a null rod is blocking a spell or rune
|
||||||
/turf/proc/nullding()
|
/turf/proc/nullding()
|
||||||
playsound(src, 'sound/piano/Ab7.ogg', 50, 1)
|
playsound(src, 'sound/piano/Ab7.ogg', 50, 1)
|
||||||
spawn()
|
if(!c_animation)
|
||||||
c_animation = new /atom/movable/overlay(src)
|
c_animation = new /atom/movable/overlay(src)
|
||||||
c_animation.name = "nullding"
|
c_animation.name = "nullding"
|
||||||
c_animation.density = 0
|
c_animation.density = 0
|
||||||
@@ -54,7 +56,7 @@
|
|||||||
|
|
||||||
/turf/proc/beamin(var/color)
|
/turf/proc/beamin(var/color)
|
||||||
playsound(src, 'sound/weapons/emitter2.ogg', 50, 1)
|
playsound(src, 'sound/weapons/emitter2.ogg', 50, 1)
|
||||||
spawn()
|
if(!c_animation)
|
||||||
c_animation = new /atom/movable/overlay(src)
|
c_animation = new /atom/movable/overlay(src)
|
||||||
c_animation.name = "beamin"
|
c_animation.name = "beamin"
|
||||||
c_animation.density = 0
|
c_animation.density = 0
|
||||||
@@ -69,3 +71,20 @@
|
|||||||
flick(icon_state,c_animation)
|
flick(icon_state,c_animation)
|
||||||
spawn(10)
|
spawn(10)
|
||||||
del(c_animation)
|
del(c_animation)
|
||||||
|
|
||||||
|
|
||||||
|
/turf/proc/rejuv(var/color)
|
||||||
|
playsound(src, 'sound/effects/rejuvinate.ogg', 50, 1)
|
||||||
|
if(!c_animation)
|
||||||
|
c_animation = new /atom/movable/overlay(src)
|
||||||
|
c_animation.name = "rejuvinate"
|
||||||
|
c_animation.density = 0
|
||||||
|
c_animation.anchored = 1
|
||||||
|
c_animation.icon = 'icons/effects/64x64.dmi'
|
||||||
|
c_animation.layer = 5
|
||||||
|
c_animation.master = src
|
||||||
|
c_animation.icon_state = "rejuvinate"
|
||||||
|
c_animation.pixel_x = -16
|
||||||
|
flick("rejuvinate",c_animation)
|
||||||
|
spawn(10)
|
||||||
|
del(c_animation)
|
||||||
@@ -647,6 +647,15 @@ var/global/floorIsLava = 0
|
|||||||
|
|
||||||
var/dat = "<B>The first rule of adminbuse is: you don't talk about the adminbuse.</B><HR>"
|
var/dat = "<B>The first rule of adminbuse is: you don't talk about the adminbuse.</B><HR>"
|
||||||
|
|
||||||
|
if(check_rights(R_FUN,0))
|
||||||
|
dat += {"
|
||||||
|
<B>Fourth-Wall Demolition</B><BR>
|
||||||
|
<BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=spawnadminbus'>Spawn an Adminbus</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=spawnselfdummy'>Spawn yourself as a Test Dummy</A><BR>
|
||||||
|
<BR>
|
||||||
|
"}
|
||||||
|
|
||||||
if(check_rights(R_ADMIN,0))
|
if(check_rights(R_ADMIN,0))
|
||||||
dat += {"
|
dat += {"
|
||||||
<B>Admin Secrets</B><BR>
|
<B>Admin Secrets</B><BR>
|
||||||
|
|||||||
@@ -2491,8 +2491,26 @@
|
|||||||
new /turf/unsimulated/wall/supermatter(get_turf(usr))
|
new /turf/unsimulated/wall/supermatter(get_turf(usr))
|
||||||
SetUniversalState(/datum/universal_state/supermatter_cascade)
|
SetUniversalState(/datum/universal_state/supermatter_cascade)
|
||||||
message_admins("[key_name_admin(usr)] has managed to destroy the universe with a supermatter cascade. Good job, [key_name_admin(usr)]")
|
message_admins("[key_name_admin(usr)] has managed to destroy the universe with a supermatter cascade. Good job, [key_name_admin(usr)]")
|
||||||
|
if("spawnadminbus")
|
||||||
|
feedback_inc("admin_secrets_fun_used",1)
|
||||||
|
feedback_add_details("admin_secrets_fun_used","AB")
|
||||||
|
var/obj/structure/stool/bed/chair/vehicle/adminbus/A = new /obj/structure/stool/bed/chair/vehicle/adminbus(get_turf(usr))
|
||||||
|
A.dir = EAST
|
||||||
|
message_admins("[key_name_admin(usr)] has spawned an Adminbus. Who gave him the keys?")
|
||||||
|
if("spawnselfdummy")
|
||||||
|
feedback_inc("admin_secrets_fun_used",1)
|
||||||
|
feedback_add_details("admin_secrets_fun_used","TD")
|
||||||
|
var/mob/living/carbon/human/dummy/D = new /mob/living/carbon/human/dummy(get_turf(usr))
|
||||||
|
usr.client.cmd_assume_direct_control(D)
|
||||||
|
D.name = "Admin"
|
||||||
|
D.real_name = "Admin"
|
||||||
|
var/newname = ""
|
||||||
|
newname = copytext(sanitize(input(D, "Before you step out as an embodied god, what name do you wish for?", "Choose your name.", "Admin") as null|text),1,MAX_NAME_LEN)
|
||||||
|
if (!newname)
|
||||||
|
newname = "Admin"
|
||||||
|
D.name = newname
|
||||||
|
D.real_name = newname
|
||||||
|
message_admins("[key_name_admin(usr)] spawned himself as a Test Dummy.")
|
||||||
if(usr)
|
if(usr)
|
||||||
log_admin("[key_name(usr)] used secret [href_list["secretsfun"]]")
|
log_admin("[key_name(usr)] used secret [href_list["secretsfun"]]")
|
||||||
if (ok)
|
if (ok)
|
||||||
|
|||||||
@@ -61,6 +61,10 @@
|
|||||||
///mob/living/carbon/alien/humanoid/bullet_act(var/obj/item/projectile/Proj) taken care of in living
|
///mob/living/carbon/alien/humanoid/bullet_act(var/obj/item/projectile/Proj) taken care of in living
|
||||||
|
|
||||||
/mob/living/carbon/alien/humanoid/emp_act(severity)
|
/mob/living/carbon/alien/humanoid/emp_act(severity)
|
||||||
|
if(isolated)
|
||||||
|
src << "The bus' robustness protects you from the EMP."
|
||||||
|
return
|
||||||
|
|
||||||
if(wear_suit) wear_suit.emp_act(severity)
|
if(wear_suit) wear_suit.emp_act(severity)
|
||||||
if(head) head.emp_act(severity)
|
if(head) head.emp_act(severity)
|
||||||
if(r_store) r_store.emp_act(severity)
|
if(r_store) r_store.emp_act(severity)
|
||||||
@@ -68,6 +72,10 @@
|
|||||||
..()
|
..()
|
||||||
|
|
||||||
/mob/living/carbon/alien/humanoid/ex_act(severity)
|
/mob/living/carbon/alien/humanoid/ex_act(severity)
|
||||||
|
if(isolated)
|
||||||
|
src << "The bus' robustness protects you from the explosion."
|
||||||
|
return
|
||||||
|
|
||||||
if(!blinded)
|
if(!blinded)
|
||||||
flick("flash", flash)
|
flick("flash", flash)
|
||||||
|
|
||||||
@@ -103,6 +111,8 @@
|
|||||||
updatehealth()
|
updatehealth()
|
||||||
|
|
||||||
/mob/living/carbon/alien/humanoid/blob_act()
|
/mob/living/carbon/alien/humanoid/blob_act()
|
||||||
|
if(isolated)
|
||||||
|
return
|
||||||
if (stat == 2)
|
if (stat == 2)
|
||||||
return
|
return
|
||||||
var/shielded = 0
|
var/shielded = 0
|
||||||
@@ -122,6 +132,8 @@
|
|||||||
|
|
||||||
|
|
||||||
/mob/living/carbon/alien/humanoid/meteorhit(O as obj)
|
/mob/living/carbon/alien/humanoid/meteorhit(O as obj)
|
||||||
|
if(isolated)
|
||||||
|
return
|
||||||
for(var/mob/M in viewers(src, null))
|
for(var/mob/M in viewers(src, null))
|
||||||
if ((M.client && !( M.blinded )))
|
if ((M.client && !( M.blinded )))
|
||||||
M.show_message(text("\red [] has been hit by []", src, O), 1)
|
M.show_message(text("\red [] has been hit by []", src, O), 1)
|
||||||
|
|||||||
@@ -68,6 +68,10 @@
|
|||||||
|
|
||||||
|
|
||||||
/mob/living/carbon/alien/larva/ex_act(severity)
|
/mob/living/carbon/alien/larva/ex_act(severity)
|
||||||
|
if(isolated)
|
||||||
|
src << "The bus' robustness protects you from the explosion."
|
||||||
|
return
|
||||||
|
|
||||||
if(!blinded)
|
if(!blinded)
|
||||||
flick("flash", flash)
|
flick("flash", flash)
|
||||||
|
|
||||||
@@ -103,6 +107,8 @@
|
|||||||
|
|
||||||
|
|
||||||
/mob/living/carbon/alien/larva/blob_act()
|
/mob/living/carbon/alien/larva/blob_act()
|
||||||
|
if(isolated)
|
||||||
|
return
|
||||||
if (stat == 2)
|
if (stat == 2)
|
||||||
return
|
return
|
||||||
var/shielded = 0
|
var/shielded = 0
|
||||||
@@ -129,6 +135,8 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
/mob/living/carbon/alien/larva/meteorhit(O as obj)
|
/mob/living/carbon/alien/larva/meteorhit(O as obj)
|
||||||
|
if(isolated)
|
||||||
|
return
|
||||||
for(var/mob/M in viewers(src, null))
|
for(var/mob/M in viewers(src, null))
|
||||||
if ((M.client && !( M.blinded )))
|
if ((M.client && !( M.blinded )))
|
||||||
M.show_message(text("\red [] has been hit by []", src, O), 1)
|
M.show_message(text("\red [] has been hit by []", src, O), 1)
|
||||||
|
|||||||
@@ -34,6 +34,8 @@
|
|||||||
|
|
||||||
/mob/living/carbon/brain/
|
/mob/living/carbon/brain/
|
||||||
proc/handle_mutations_and_radiation()
|
proc/handle_mutations_and_radiation()
|
||||||
|
if(isolated)
|
||||||
|
return
|
||||||
|
|
||||||
if (radiation)
|
if (radiation)
|
||||||
if (radiation > 100)
|
if (radiation > 100)
|
||||||
@@ -269,6 +271,10 @@
|
|||||||
|
|
||||||
|
|
||||||
/*/mob/living/carbon/brain/emp_act(severity)
|
/*/mob/living/carbon/brain/emp_act(severity)
|
||||||
|
if(isolated)
|
||||||
|
src << "The bus' robustness protects you from the EMP."
|
||||||
|
return
|
||||||
|
|
||||||
if(!(container && istype(container, /obj/item/device/mmi)))
|
if(!(container && istype(container, /obj/item/device/mmi)))
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -197,6 +197,10 @@
|
|||||||
stat("Spacepod Integrity", "[!S.health ? "0" : "[(S.health / initial(S.health)) * 100]"]%")
|
stat("Spacepod Integrity", "[!S.health ? "0" : "[(S.health / initial(S.health)) * 100]"]%")
|
||||||
|
|
||||||
/mob/living/carbon/human/ex_act(severity)
|
/mob/living/carbon/human/ex_act(severity)
|
||||||
|
if(isolated)
|
||||||
|
src << "The bus' robustness protects you from the explosion."
|
||||||
|
return
|
||||||
|
|
||||||
if(!blinded)
|
if(!blinded)
|
||||||
flick("flash", flash)
|
flick("flash", flash)
|
||||||
|
|
||||||
@@ -280,6 +284,8 @@
|
|||||||
|
|
||||||
|
|
||||||
/mob/living/carbon/human/blob_act()
|
/mob/living/carbon/human/blob_act()
|
||||||
|
if(isolated)
|
||||||
|
return
|
||||||
if(stat == DEAD)
|
if(stat == DEAD)
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -290,6 +296,8 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
/mob/living/carbon/human/meteorhit(O as obj)
|
/mob/living/carbon/human/meteorhit(O as obj)
|
||||||
|
if(isolated)
|
||||||
|
return
|
||||||
for(var/mob/M in viewers(src, null))
|
for(var/mob/M in viewers(src, null))
|
||||||
if ((M.client && !( M.blinded )))
|
if ((M.client && !( M.blinded )))
|
||||||
M.show_message("\red [src] has been hit by [O]", 1)
|
M.show_message("\red [src] has been hit by [O]", 1)
|
||||||
|
|||||||
@@ -131,6 +131,10 @@ emp_act
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
/mob/living/carbon/human/emp_act(severity)
|
/mob/living/carbon/human/emp_act(severity)
|
||||||
|
if(isolated)
|
||||||
|
src << "The bus' robustness protects you from the EMP."
|
||||||
|
return
|
||||||
|
|
||||||
for(var/obj/O in src)
|
for(var/obj/O in src)
|
||||||
if(!O) continue
|
if(!O) continue
|
||||||
O.emp_act(severity)
|
O.emp_act(severity)
|
||||||
@@ -273,6 +277,10 @@ emp_act
|
|||||||
update_inv_w_uniform(0)
|
update_inv_w_uniform(0)
|
||||||
|
|
||||||
/mob/living/carbon/human/ex_act(severity)
|
/mob/living/carbon/human/ex_act(severity)
|
||||||
|
if(isolated)
|
||||||
|
src << "The bus' robustness protects you from the explosion."
|
||||||
|
return
|
||||||
|
|
||||||
if(!blinded)
|
if(!blinded)
|
||||||
flick("flash", flash)
|
flick("flash", flash)
|
||||||
|
|
||||||
@@ -366,6 +374,8 @@ emp_act
|
|||||||
|
|
||||||
|
|
||||||
/mob/living/carbon/human/blob_act()
|
/mob/living/carbon/human/blob_act()
|
||||||
|
if(isolated)
|
||||||
|
return
|
||||||
if(stat == 2) return
|
if(stat == 2) return
|
||||||
show_message("\red The blob attacks you!")
|
show_message("\red The blob attacks you!")
|
||||||
var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg")
|
var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg")
|
||||||
@@ -374,6 +384,8 @@ emp_act
|
|||||||
return
|
return
|
||||||
|
|
||||||
/mob/living/carbon/human/meteorhit(O as obj)
|
/mob/living/carbon/human/meteorhit(O as obj)
|
||||||
|
if(isolated)
|
||||||
|
return
|
||||||
for(var/mob/M in viewers(src, null))
|
for(var/mob/M in viewers(src, null))
|
||||||
if ((M.client && !( M.blinded )))
|
if ((M.client && !( M.blinded )))
|
||||||
M.show_message("\red [src] has been hit by [O]", 1)
|
M.show_message("\red [src] has been hit by [O]", 1)
|
||||||
|
|||||||
@@ -441,6 +441,8 @@ var/global/list/organ_damage_overlays = list(
|
|||||||
adjustCloneLoss(0.1)
|
adjustCloneLoss(0.1)
|
||||||
|
|
||||||
proc/handle_mutations_and_radiation()
|
proc/handle_mutations_and_radiation()
|
||||||
|
if(isolated)
|
||||||
|
return
|
||||||
if(getFireLoss())
|
if(getFireLoss())
|
||||||
if((M_RESIST_HEAT in mutations) || (prob(1)))
|
if((M_RESIST_HEAT in mutations) || (prob(1)))
|
||||||
heal_organ_damage(0,1)
|
heal_organ_damage(0,1)
|
||||||
@@ -509,6 +511,8 @@ var/global/list/organ_damage_overlays = list(
|
|||||||
if(istype(O)) O.add_autopsy_data("Radiation Poisoning", damage)
|
if(istype(O)) O.add_autopsy_data("Radiation Poisoning", damage)
|
||||||
|
|
||||||
proc/breathe()
|
proc/breathe()
|
||||||
|
if(isolated)
|
||||||
|
return
|
||||||
if(reagents.has_reagent("lexorin")) return
|
if(reagents.has_reagent("lexorin")) return
|
||||||
if(M_NO_BREATH in mutations) return // No breath mutation means no breathing.
|
if(M_NO_BREATH in mutations) return // No breath mutation means no breathing.
|
||||||
if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) return
|
if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) return
|
||||||
|
|||||||
@@ -211,10 +211,18 @@
|
|||||||
|
|
||||||
|
|
||||||
/mob/living/carbon/slime/emp_act(severity)
|
/mob/living/carbon/slime/emp_act(severity)
|
||||||
|
if(isolated)
|
||||||
|
src << "The bus' robustness protects you from the EMP."
|
||||||
|
return
|
||||||
|
|
||||||
powerlevel = 0 // oh no, the power!
|
powerlevel = 0 // oh no, the power!
|
||||||
..()
|
..()
|
||||||
|
|
||||||
/mob/living/carbon/slime/ex_act(severity)
|
/mob/living/carbon/slime/ex_act(severity)
|
||||||
|
if(isolated)
|
||||||
|
src << "The bus' robustness protects you from the explosion."
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
if (stat == 2 && client)
|
if (stat == 2 && client)
|
||||||
return
|
return
|
||||||
@@ -246,6 +254,8 @@
|
|||||||
|
|
||||||
|
|
||||||
/mob/living/carbon/slime/blob_act()
|
/mob/living/carbon/slime/blob_act()
|
||||||
|
if(isolated)
|
||||||
|
return
|
||||||
if (stat == 2)
|
if (stat == 2)
|
||||||
return
|
return
|
||||||
var/shielded = 0
|
var/shielded = 0
|
||||||
@@ -275,6 +285,8 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
/mob/living/carbon/slime/meteorhit(O as obj)
|
/mob/living/carbon/slime/meteorhit(O as obj)
|
||||||
|
if(isolated)
|
||||||
|
return
|
||||||
for(var/mob/M in viewers(src, null))
|
for(var/mob/M in viewers(src, null))
|
||||||
if ((M.client && !( M.blinded )))
|
if ((M.client && !( M.blinded )))
|
||||||
M.show_message(text("\red [] has been hit by []", src, O), 1)
|
M.show_message(text("\red [] has been hit by []", src, O), 1)
|
||||||
|
|||||||
@@ -112,6 +112,8 @@
|
|||||||
stuttering = max(10, stuttering)
|
stuttering = max(10, stuttering)
|
||||||
|
|
||||||
proc/handle_mutations_and_radiation()
|
proc/handle_mutations_and_radiation()
|
||||||
|
if(isolated)
|
||||||
|
return
|
||||||
|
|
||||||
if(getFireLoss())
|
if(getFireLoss())
|
||||||
if((M_RESIST_HEAT in mutations) || prob(50))
|
if((M_RESIST_HEAT in mutations) || prob(50))
|
||||||
@@ -221,8 +223,10 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
proc/breathe()
|
proc/breathe()
|
||||||
if(reagents)
|
if(isolated)
|
||||||
|
return
|
||||||
|
|
||||||
|
if(reagents)
|
||||||
if(reagents.has_reagent("lexorin")) return
|
if(reagents.has_reagent("lexorin")) return
|
||||||
|
|
||||||
if(!loc) return //probably ought to make a proper fix for this, but :effort: --NeoFite
|
if(!loc) return //probably ought to make a proper fix for this, but :effort: --NeoFite
|
||||||
|
|||||||
@@ -307,6 +307,8 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
/mob/living/carbon/monkey/meteorhit(obj/O as obj)
|
/mob/living/carbon/monkey/meteorhit(obj/O as obj)
|
||||||
|
if(isolated)
|
||||||
|
return
|
||||||
for(var/mob/M in viewers(src, null))
|
for(var/mob/M in viewers(src, null))
|
||||||
M.show_message(text("\red [] has been hit by []", src, O), 1)
|
M.show_message(text("\red [] has been hit by []", src, O), 1)
|
||||||
if (health > 0)
|
if (health > 0)
|
||||||
@@ -599,10 +601,18 @@
|
|||||||
/mob/living/carbon/monkey/var/temperature_resistance = T0C+75
|
/mob/living/carbon/monkey/var/temperature_resistance = T0C+75
|
||||||
|
|
||||||
/mob/living/carbon/monkey/emp_act(severity)
|
/mob/living/carbon/monkey/emp_act(severity)
|
||||||
|
if(isolated)
|
||||||
|
src << "The bus' robustness protects you from the EMP."
|
||||||
|
return
|
||||||
|
|
||||||
if(wear_id) wear_id.emp_act(severity)
|
if(wear_id) wear_id.emp_act(severity)
|
||||||
..()
|
..()
|
||||||
|
|
||||||
/mob/living/carbon/monkey/ex_act(severity)
|
/mob/living/carbon/monkey/ex_act(severity)
|
||||||
|
if(isolated)
|
||||||
|
src << "The bus' robustness protects you from the explosion."
|
||||||
|
return
|
||||||
|
|
||||||
if(!blinded)
|
if(!blinded)
|
||||||
flick("flash", flash)
|
flick("flash", flash)
|
||||||
|
|
||||||
@@ -626,6 +636,8 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
/mob/living/carbon/monkey/blob_act()
|
/mob/living/carbon/monkey/blob_act()
|
||||||
|
if(isolated)
|
||||||
|
return
|
||||||
if (stat != 2)
|
if (stat != 2)
|
||||||
adjustFireLoss(60)
|
adjustFireLoss(60)
|
||||||
health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss()
|
health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss()
|
||||||
|
|||||||
@@ -273,6 +273,10 @@
|
|||||||
// now with silicons
|
// now with silicons
|
||||||
|
|
||||||
/mob/living/emp_act(severity)
|
/mob/living/emp_act(severity)
|
||||||
|
if(isolated)
|
||||||
|
src << "The bus' robustness protects you from the EMP."
|
||||||
|
return
|
||||||
|
|
||||||
var/list/L = src.get_contents()
|
var/list/L = src.get_contents()
|
||||||
for(var/obj/O in L)
|
for(var/obj/O in L)
|
||||||
O.emp_act(severity)
|
O.emp_act(severity)
|
||||||
@@ -296,6 +300,7 @@
|
|||||||
// damage ONE external organ, organ gets randomly selected from damaged ones.
|
// damage ONE external organ, organ gets randomly selected from damaged ones.
|
||||||
/mob/living/proc/take_organ_damage(var/brute, var/burn)
|
/mob/living/proc/take_organ_damage(var/brute, var/burn)
|
||||||
if(status_flags & GODMODE) return 0 //godmode
|
if(status_flags & GODMODE) return 0 //godmode
|
||||||
|
if(isolated) return 0
|
||||||
adjustBruteLoss(brute)
|
adjustBruteLoss(brute)
|
||||||
adjustFireLoss(burn)
|
adjustFireLoss(burn)
|
||||||
src.updatehealth()
|
src.updatehealth()
|
||||||
@@ -309,6 +314,7 @@
|
|||||||
// damage MANY external organs, in random order
|
// damage MANY external organs, in random order
|
||||||
/mob/living/proc/take_overall_damage(var/brute, var/burn, var/used_weapon = null)
|
/mob/living/proc/take_overall_damage(var/brute, var/burn, var/used_weapon = null)
|
||||||
if(status_flags & GODMODE) return 0 //godmode
|
if(status_flags & GODMODE) return 0 //godmode
|
||||||
|
if(isolated) return 0
|
||||||
adjustBruteLoss(brute)
|
adjustBruteLoss(brute)
|
||||||
adjustFireLoss(burn)
|
adjustFireLoss(burn)
|
||||||
src.updatehealth()
|
src.updatehealth()
|
||||||
@@ -320,7 +326,9 @@
|
|||||||
|
|
||||||
/mob/living/proc/revive()
|
/mob/living/proc/revive()
|
||||||
rejuvenate()
|
rejuvenate()
|
||||||
|
/*
|
||||||
buckled = initial(src.buckled)
|
buckled = initial(src.buckled)
|
||||||
|
*/
|
||||||
if(iscarbon(src))
|
if(iscarbon(src))
|
||||||
var/mob/living/carbon/C = src
|
var/mob/living/carbon/C = src
|
||||||
|
|
||||||
@@ -336,6 +344,9 @@
|
|||||||
|
|
||||||
/mob/living/proc/rejuvenate()
|
/mob/living/proc/rejuvenate()
|
||||||
|
|
||||||
|
var/turf/T = get_turf(src)
|
||||||
|
T.rejuv()
|
||||||
|
|
||||||
// shut down various types of badness
|
// shut down various types of badness
|
||||||
setToxLoss(0)
|
setToxLoss(0)
|
||||||
setOxyLoss(0)
|
setOxyLoss(0)
|
||||||
@@ -361,9 +372,11 @@
|
|||||||
heal_overall_damage(1000, 1000)
|
heal_overall_damage(1000, 1000)
|
||||||
ExtinguishMob()
|
ExtinguishMob()
|
||||||
fire_stacks = 0
|
fire_stacks = 0
|
||||||
|
/*
|
||||||
if(buckled)
|
if(buckled)
|
||||||
buckled.unbuckle()
|
buckled.unbuckle()
|
||||||
buckled = initial(src.buckled)
|
buckled = initial(src.buckled)
|
||||||
|
*/
|
||||||
if(istype(src, /mob/living/carbon/human))
|
if(istype(src, /mob/living/carbon/human))
|
||||||
var/mob/living/carbon/human/H = src
|
var/mob/living/carbon/human/H = src
|
||||||
H.timeofdeath = 0
|
H.timeofdeath = 0
|
||||||
|
|||||||
@@ -284,6 +284,8 @@ var/list/ai_list = list()
|
|||||||
return 1
|
return 1
|
||||||
|
|
||||||
/mob/living/silicon/ai/blob_act()
|
/mob/living/silicon/ai/blob_act()
|
||||||
|
if(isolated)
|
||||||
|
return
|
||||||
if (stat != 2)
|
if (stat != 2)
|
||||||
adjustBruteLoss(60)
|
adjustBruteLoss(60)
|
||||||
updatehealth()
|
updatehealth()
|
||||||
@@ -294,6 +296,10 @@ var/list/ai_list = list()
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
/mob/living/silicon/ai/emp_act(severity)
|
/mob/living/silicon/ai/emp_act(severity)
|
||||||
|
if(isolated)
|
||||||
|
src << "The bus' robustness protects you from the EMP."
|
||||||
|
return
|
||||||
|
|
||||||
if (prob(30))
|
if (prob(30))
|
||||||
switch(pick(1,2))
|
switch(pick(1,2))
|
||||||
if(1)
|
if(1)
|
||||||
@@ -303,6 +309,10 @@ var/list/ai_list = list()
|
|||||||
..()
|
..()
|
||||||
|
|
||||||
/mob/living/silicon/ai/ex_act(severity)
|
/mob/living/silicon/ai/ex_act(severity)
|
||||||
|
if(isolated)
|
||||||
|
src << "The bus' robustness protects you from the explosion."
|
||||||
|
return
|
||||||
|
|
||||||
if(!blinded)
|
if(!blinded)
|
||||||
flick("flash", flash)
|
flick("flash", flash)
|
||||||
|
|
||||||
@@ -399,6 +409,8 @@ var/list/ai_list = list()
|
|||||||
return
|
return
|
||||||
|
|
||||||
/mob/living/silicon/ai/meteorhit(obj/O as obj)
|
/mob/living/silicon/ai/meteorhit(obj/O as obj)
|
||||||
|
if(isolated)
|
||||||
|
return
|
||||||
for(var/mob/M in viewers(src, null))
|
for(var/mob/M in viewers(src, null))
|
||||||
M.show_message(text("\red [] has been hit by []", src, O), 1)
|
M.show_message(text("\red [] has been hit by []", src, O), 1)
|
||||||
//Foreach goto(19)
|
//Foreach goto(19)
|
||||||
|
|||||||
@@ -101,6 +101,8 @@
|
|||||||
return 1
|
return 1
|
||||||
|
|
||||||
/mob/living/silicon/pai/blob_act()
|
/mob/living/silicon/pai/blob_act()
|
||||||
|
if(isolated)
|
||||||
|
return
|
||||||
if (src.stat != 2)
|
if (src.stat != 2)
|
||||||
src.adjustBruteLoss(60)
|
src.adjustBruteLoss(60)
|
||||||
src.updatehealth()
|
src.updatehealth()
|
||||||
@@ -111,6 +113,10 @@
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
/mob/living/silicon/pai/emp_act(severity)
|
/mob/living/silicon/pai/emp_act(severity)
|
||||||
|
if(isolated)
|
||||||
|
src << "The bus' robustness protects you from the EMP."
|
||||||
|
return
|
||||||
|
|
||||||
// Silence for 2 minutes
|
// Silence for 2 minutes
|
||||||
// 20% chance to kill
|
// 20% chance to kill
|
||||||
// 33% chance to unbind
|
// 33% chance to unbind
|
||||||
@@ -142,6 +148,10 @@
|
|||||||
src << "<font color=green>You feel an electric surge run through your circuitry and become acutely aware at how lucky you are that you can still feel at all.</font>"
|
src << "<font color=green>You feel an electric surge run through your circuitry and become acutely aware at how lucky you are that you can still feel at all.</font>"
|
||||||
|
|
||||||
/mob/living/silicon/pai/ex_act(severity)
|
/mob/living/silicon/pai/ex_act(severity)
|
||||||
|
if(isolated)
|
||||||
|
src << "The bus' robustness protects you from the explosion."
|
||||||
|
return
|
||||||
|
|
||||||
if(!blinded)
|
if(!blinded)
|
||||||
flick("flash", src.flash)
|
flick("flash", src.flash)
|
||||||
|
|
||||||
@@ -164,6 +174,8 @@
|
|||||||
// See software.dm for Topic()
|
// See software.dm for Topic()
|
||||||
|
|
||||||
/mob/living/silicon/pai/meteorhit(obj/O as obj)
|
/mob/living/silicon/pai/meteorhit(obj/O as obj)
|
||||||
|
if(isolated)
|
||||||
|
return
|
||||||
for(var/mob/M in viewers(src, null))
|
for(var/mob/M in viewers(src, null))
|
||||||
M.show_message(text("\red [] has been hit by []", src, O), 1)
|
M.show_message(text("\red [] has been hit by []", src, O), 1)
|
||||||
if (src.health > 0)
|
if (src.health > 0)
|
||||||
|
|||||||
@@ -430,6 +430,8 @@
|
|||||||
src << "\red You enable [C.name]."
|
src << "\red You enable [C.name]."
|
||||||
|
|
||||||
/mob/living/silicon/robot/blob_act()
|
/mob/living/silicon/robot/blob_act()
|
||||||
|
if(isolated)
|
||||||
|
return
|
||||||
if (stat != 2)
|
if (stat != 2)
|
||||||
adjustBruteLoss(60)
|
adjustBruteLoss(60)
|
||||||
updatehealth()
|
updatehealth()
|
||||||
@@ -526,6 +528,10 @@
|
|||||||
|
|
||||||
|
|
||||||
/mob/living/silicon/robot/ex_act(severity)
|
/mob/living/silicon/robot/ex_act(severity)
|
||||||
|
if(isolated)
|
||||||
|
src << "The bus' robustness protects you from the explosion."
|
||||||
|
return
|
||||||
|
|
||||||
if(!blinded)
|
if(!blinded)
|
||||||
flick("flash", flash)
|
flick("flash", flash)
|
||||||
|
|
||||||
@@ -548,6 +554,8 @@
|
|||||||
|
|
||||||
|
|
||||||
/mob/living/silicon/robot/meteorhit(obj/O as obj)
|
/mob/living/silicon/robot/meteorhit(obj/O as obj)
|
||||||
|
if(isolated)
|
||||||
|
return
|
||||||
for(var/mob/M in viewers(src, null))
|
for(var/mob/M in viewers(src, null))
|
||||||
M.show_message(text("\red [src] has been hit by [O]"), 1)
|
M.show_message(text("\red [src] has been hit by [O]"), 1)
|
||||||
//Foreach goto(19)
|
//Foreach goto(19)
|
||||||
|
|||||||
@@ -103,6 +103,10 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
/mob/living/silicon/emp_act(severity)
|
/mob/living/silicon/emp_act(severity)
|
||||||
|
if(isolated)
|
||||||
|
src << "The bus' robustness protects you from the EMP."
|
||||||
|
return
|
||||||
|
|
||||||
switch(severity)
|
switch(severity)
|
||||||
if(1)
|
if(1)
|
||||||
src.take_organ_damage(20)
|
src.take_organ_damage(20)
|
||||||
|
|||||||
@@ -47,12 +47,14 @@
|
|||||||
GiveTarget(new_target)
|
GiveTarget(new_target)
|
||||||
|
|
||||||
if(HOSTILE_STANCE_ATTACK)
|
if(HOSTILE_STANCE_ATTACK)
|
||||||
MoveToTarget()
|
if(!isolated)
|
||||||
DestroySurroundings()
|
MoveToTarget()
|
||||||
|
DestroySurroundings()
|
||||||
|
|
||||||
if(HOSTILE_STANCE_ATTACKING)
|
if(HOSTILE_STANCE_ATTACKING)
|
||||||
AttackTarget()
|
if(!isolated)
|
||||||
DestroySurroundings()
|
AttackTarget()
|
||||||
|
DestroySurroundings()
|
||||||
|
|
||||||
if(ranged)
|
if(ranged)
|
||||||
ranged_cooldown--
|
ranged_cooldown--
|
||||||
|
|||||||
@@ -99,6 +99,10 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
/mob/living/simple_animal/hostile/asteroid/basilisk/ex_act(severity)
|
/mob/living/simple_animal/hostile/asteroid/basilisk/ex_act(severity)
|
||||||
|
if(isolated)
|
||||||
|
src << "The bus' robustness protects you from the explosion."
|
||||||
|
return
|
||||||
|
|
||||||
switch(severity)
|
switch(severity)
|
||||||
if(1.0)
|
if(1.0)
|
||||||
gib()
|
gib()
|
||||||
|
|||||||
@@ -152,6 +152,10 @@
|
|||||||
|
|
||||||
//ion rifle!
|
//ion rifle!
|
||||||
/mob/living/simple_animal/hostile/retaliate/malf_drone/emp_act(severity)
|
/mob/living/simple_animal/hostile/retaliate/malf_drone/emp_act(severity)
|
||||||
|
if(isolated)
|
||||||
|
src << "The bus' robustness protects you from the EMP."
|
||||||
|
return
|
||||||
|
|
||||||
health -= rand(3,15) * (severity + 1)
|
health -= rand(3,15) * (severity + 1)
|
||||||
disabled = rand(150, 600)
|
disabled = rand(150, 600)
|
||||||
hostile_drone = 0
|
hostile_drone = 0
|
||||||
|
|||||||
@@ -114,7 +114,7 @@
|
|||||||
purge -= 1
|
purge -= 1
|
||||||
|
|
||||||
//Movement
|
//Movement
|
||||||
if((!client||deny_client_move) && !stop_automated_movement && wander && !anchored && (ckey == null))
|
if((!client||deny_client_move) && !stop_automated_movement && wander && !anchored && (ckey == null) && !isolated)
|
||||||
if(isturf(src.loc) && !resting && !buckled && canmove) //This is so it only moves if it's not inside a closet, gentics machine, etc.
|
if(isturf(src.loc) && !resting && !buckled && canmove) //This is so it only moves if it's not inside a closet, gentics machine, etc.
|
||||||
turns_since_move++
|
turns_since_move++
|
||||||
if(turns_since_move >= turns_per_move)
|
if(turns_since_move >= turns_per_move)
|
||||||
@@ -480,6 +480,10 @@
|
|||||||
Die()
|
Die()
|
||||||
|
|
||||||
/mob/living/simple_animal/ex_act(severity)
|
/mob/living/simple_animal/ex_act(severity)
|
||||||
|
if(isolated)
|
||||||
|
src << "The bus' robustness protects you from the explosion."
|
||||||
|
return
|
||||||
|
|
||||||
..()
|
..()
|
||||||
switch (severity)
|
switch (severity)
|
||||||
if (1.0)
|
if (1.0)
|
||||||
|
|||||||
@@ -122,6 +122,11 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
/mob/proc/see_narsie(var/obj/machinery/singularity/narsie/large/N)
|
/mob/proc/see_narsie(var/obj/machinery/singularity/narsie/large/N)
|
||||||
|
if(N.bus_captured)
|
||||||
|
if(narsimage)
|
||||||
|
del(narsimage)
|
||||||
|
del(narglow)
|
||||||
|
return
|
||||||
if((N.z == src.z)&&(get_dist(N,src) <= (N.consume_range+10)))
|
if((N.z == src.z)&&(get_dist(N,src) <= (N.consume_range+10)))
|
||||||
if(!narsimage)
|
if(!narsimage)
|
||||||
narsimage = image('icons/obj/narsie.dmi',src.loc,"narsie",9,1)
|
narsimage = image('icons/obj/narsie.dmi',src.loc,"narsie",9,1)
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ var/global/narsie_behaviour = "CultStation13"
|
|||||||
name = "Nar-Sie"
|
name = "Nar-Sie"
|
||||||
desc = "Your mind begins to bubble and ooze as it tries to comprehend what it sees."
|
desc = "Your mind begins to bubble and ooze as it tries to comprehend what it sees."
|
||||||
icon = 'icons/obj/narsie.dmi'
|
icon = 'icons/obj/narsie.dmi'
|
||||||
icon_state = "narsie"
|
icon_state = "narsie-small"
|
||||||
pixel_x = -89
|
pixel_x = -236
|
||||||
pixel_y = -85
|
pixel_y = -256
|
||||||
|
|
||||||
current_size = 9 //It moves/eats like a max-size singulo, aside from range. --NEO.
|
current_size = 9 //It moves/eats like a max-size singulo, aside from range. --NEO.
|
||||||
contained = 0 // Are we going to move around?
|
contained = 0 // Are we going to move around?
|
||||||
@@ -69,6 +69,8 @@ var/global/narsie_behaviour = "CultStation13"
|
|||||||
/obj/machinery/singularity/narsie/mezzer()
|
/obj/machinery/singularity/narsie/mezzer()
|
||||||
for(var/mob/living/carbon/M in oviewers(8, src))
|
for(var/mob/living/carbon/M in oviewers(8, src))
|
||||||
if(M.stat == CONSCIOUS)
|
if(M.stat == CONSCIOUS)
|
||||||
|
if(M.isolated)
|
||||||
|
continue
|
||||||
if(!iscultist(M))
|
if(!iscultist(M))
|
||||||
M << "<span class='danger'> You feel your sanity crumble away in an instant as you gaze upon [src.name]...</span>"
|
M << "<span class='danger'> You feel your sanity crumble away in an instant as you gaze upon [src.name]...</span>"
|
||||||
M.apply_effect(3, STUN)
|
M.apply_effect(3, STUN)
|
||||||
@@ -96,6 +98,24 @@ var/global/narsie_behaviour = "CultStation13"
|
|||||||
|
|
||||||
var/movement_dir = pick(alldirs - last_failed_movement)
|
var/movement_dir = pick(alldirs - last_failed_movement)
|
||||||
|
|
||||||
|
if(force_move)
|
||||||
|
movement_dir = force_move
|
||||||
|
|
||||||
|
if(target && prob(60))
|
||||||
|
movement_dir = get_dir(src,target)
|
||||||
|
|
||||||
|
spawn(0)
|
||||||
|
step(src, movement_dir)
|
||||||
|
spawn(1)
|
||||||
|
step(src, movement_dir)
|
||||||
|
return 1
|
||||||
|
|
||||||
|
/obj/machinery/singularity/narsie/large/move(var/force_move = 0)
|
||||||
|
if(!move_self)
|
||||||
|
return 0
|
||||||
|
|
||||||
|
var/movement_dir = pick(alldirs - last_failed_movement)
|
||||||
|
|
||||||
if(force_move)
|
if(force_move)
|
||||||
movement_dir = force_move
|
movement_dir = force_move
|
||||||
|
|
||||||
@@ -131,7 +151,7 @@ var/global/narsie_behaviour = "CultStation13"
|
|||||||
T.density = 0
|
T.density = 0
|
||||||
luminosity = 1
|
luminosity = 1
|
||||||
|
|
||||||
/obj/machinery/singularity/narsie/consume(const/atom/A) //Has its own consume proc because it doesn't need energy and I don't want BoHs to explode it. --NEO
|
/obj/machinery/singularity/narsie/large/consume(const/atom/A) //Has its own consume proc because it doesn't need energy and I don't want BoHs to explode it. --NEO
|
||||||
//NEW BEHAVIOUR
|
//NEW BEHAVIOUR
|
||||||
if(narsie_behaviour == "CultStation13")
|
if(narsie_behaviour == "CultStation13")
|
||||||
//MOB PROCESSING
|
//MOB PROCESSING
|
||||||
@@ -213,6 +233,49 @@ var/global/narsie_behaviour = "CultStation13"
|
|||||||
var/turf/T2 = A
|
var/turf/T2 = A
|
||||||
T2.ChangeTurf(/turf/space)
|
T2.ChangeTurf(/turf/space)
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/singularity/narsie/consume(const/atom/A) //This one is for the small ones.
|
||||||
|
if (is_type_in_list(A, uneatable))
|
||||||
|
return 0
|
||||||
|
|
||||||
|
if (istype(A, /mob/living/))
|
||||||
|
var/mob/living/C2 = A
|
||||||
|
|
||||||
|
if(C2.isolated)
|
||||||
|
return 0
|
||||||
|
|
||||||
|
C2.dust() // Changed from gib(), just for less lag.
|
||||||
|
|
||||||
|
else if (istype(A, /obj/))
|
||||||
|
A.ex_act(1)
|
||||||
|
|
||||||
|
if (A)
|
||||||
|
qdel(A)
|
||||||
|
else if (isturf(A))
|
||||||
|
var/dist = get_dist(A, src)
|
||||||
|
|
||||||
|
for (var/atom/movable/AM2 in A.contents)
|
||||||
|
if (AM2 == src) // This is the snowflake.
|
||||||
|
continue
|
||||||
|
|
||||||
|
if (dist <= consume_range)
|
||||||
|
consume(AM2)
|
||||||
|
continue
|
||||||
|
|
||||||
|
if (dist > consume_range && canPull(AM2))
|
||||||
|
if (is_type_in_list(AM2, uneatable))
|
||||||
|
continue
|
||||||
|
|
||||||
|
if (101 == AM2.invisibility)
|
||||||
|
continue
|
||||||
|
|
||||||
|
spawn (0)
|
||||||
|
step_towards(AM2, src)
|
||||||
|
|
||||||
|
if (dist <= consume_range && !istype(A, /turf/space))
|
||||||
|
var/turf/T2 = A
|
||||||
|
T2.ChangeTurf(/turf/space)
|
||||||
|
|
||||||
/obj/machinery/singularity/narsie/ex_act(severity) //No throwing bombs at it either. --NEO
|
/obj/machinery/singularity/narsie/ex_act(severity) //No throwing bombs at it either. --NEO
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -265,6 +328,31 @@ var/global/narsie_behaviour = "CultStation13"
|
|||||||
else
|
else
|
||||||
target << "<span class='danger'>[capname] HAS CHOSEN YOU TO LEAD HIM TO HIS NEXT MEAL.</span>"
|
target << "<span class='danger'>[capname] HAS CHOSEN YOU TO LEAD HIM TO HIS NEXT MEAL.</span>"
|
||||||
|
|
||||||
|
/obj/machinery/singularity/narsie/on_capture()
|
||||||
|
bus_captured = 1
|
||||||
|
move_self = 0
|
||||||
|
icon_state ="narsie-small-chains"
|
||||||
|
|
||||||
|
/obj/machinery/singularity/narsie/on_release()
|
||||||
|
bus_captured = 0
|
||||||
|
move_self = 1
|
||||||
|
icon_state ="narsie-small"
|
||||||
|
|
||||||
|
/obj/machinery/singularity/narsie/large/on_capture()
|
||||||
|
bus_captured = 1
|
||||||
|
move_self = 0
|
||||||
|
icon_state ="narsie-chains"
|
||||||
|
for(var/mob/M in mob_list)//removing the client image of nar-sie while it is chained
|
||||||
|
if(M.client)
|
||||||
|
M.see_narsie(src)
|
||||||
|
|
||||||
|
/obj/machinery/singularity/narsie/large/on_release()
|
||||||
|
bus_captured = 0
|
||||||
|
move_self = 1
|
||||||
|
icon_state ="narsie"
|
||||||
|
|
||||||
|
/obj/machinery/singularity/narsie/cultify()
|
||||||
|
return
|
||||||
/*
|
/*
|
||||||
////////////////Glow//////////////////
|
////////////////Glow//////////////////
|
||||||
/obj/machinery/singularity/narsie/proc/updateicon()
|
/obj/machinery/singularity/narsie/proc/updateicon()
|
||||||
@@ -328,6 +416,8 @@ var/global/mr_clean_targets = list(
|
|||||||
/obj/machinery/singularity/narsie/large/clean/mezzer()
|
/obj/machinery/singularity/narsie/large/clean/mezzer()
|
||||||
for(var/mob/living/carbon/M in oviewers(8, src))
|
for(var/mob/living/carbon/M in oviewers(8, src))
|
||||||
if(M.stat == CONSCIOUS)
|
if(M.stat == CONSCIOUS)
|
||||||
|
if(M.isolated)
|
||||||
|
continue
|
||||||
M << "<span class='warning'> You take a moment to admire [src.name] hard at work...</span>"
|
M << "<span class='warning'> You take a moment to admire [src.name] hard at work...</span>"
|
||||||
M.apply_effect(3, STUN)
|
M.apply_effect(3, STUN)
|
||||||
|
|
||||||
@@ -392,4 +482,30 @@ var/global/mr_clean_targets = list(
|
|||||||
targets += E
|
targets += E
|
||||||
if(targets.len)
|
if(targets.len)
|
||||||
acquire(pick(targets))
|
acquire(pick(targets))
|
||||||
return
|
return
|
||||||
|
|
||||||
|
/obj/machinery/singularity/narsie/large/clean/move(var/force_move = 0)
|
||||||
|
if(!move_self)
|
||||||
|
return 0
|
||||||
|
|
||||||
|
var/movement_dir = pick(alldirs - last_failed_movement)
|
||||||
|
|
||||||
|
if(force_move)
|
||||||
|
movement_dir = force_move
|
||||||
|
|
||||||
|
if(target && prob(60))
|
||||||
|
movement_dir = get_dir(src,target)
|
||||||
|
|
||||||
|
spawn(0)
|
||||||
|
step(src, movement_dir)
|
||||||
|
spawn(1)
|
||||||
|
step(src, movement_dir)
|
||||||
|
return 1
|
||||||
|
|
||||||
|
/obj/machinery/singularity/narsie/large/clean/on_capture()
|
||||||
|
bus_captured = 1
|
||||||
|
move_self = 0
|
||||||
|
|
||||||
|
/obj/machinery/singularity/narsie/large/clean/on_release()
|
||||||
|
bus_captured = 0
|
||||||
|
move_self = 1
|
||||||
@@ -39,7 +39,7 @@ var/global/list/uneatable = list(
|
|||||||
var/last_failed_movement = 0 // Will not move in the same dir if it couldnt before, will help with the getting stuck on fields thing.
|
var/last_failed_movement = 0 // Will not move in the same dir if it couldnt before, will help with the getting stuck on fields thing.
|
||||||
var/last_warning
|
var/last_warning
|
||||||
|
|
||||||
var/obj/structure/singulo_chain/anchor/captured = null//Adminbus chain-grab
|
var/bus_captured = 0//Adminbus chain-grab
|
||||||
|
|
||||||
/obj/machinery/singularity/New(loc, var/starting_energy = 50, var/temp = 0)
|
/obj/machinery/singularity/New(loc, var/starting_energy = 50, var/temp = 0)
|
||||||
// CARN: admin-alert for chuckle-fuckery.
|
// CARN: admin-alert for chuckle-fuckery.
|
||||||
@@ -139,7 +139,7 @@ var/global/list/uneatable = list(
|
|||||||
dissipate_track = 0
|
dissipate_track = 0
|
||||||
dissipate_strength = 1
|
dissipate_strength = 1
|
||||||
overlays = 0
|
overlays = 0
|
||||||
if(captured)
|
if(bus_captured)
|
||||||
overlays += image('icons/obj/singularity.dmi',"chain_s1")
|
overlays += image('icons/obj/singularity.dmi',"chain_s1")
|
||||||
if (3) // 1 to 3 does not check for the turfs if you put the gens right next to a 1x1 then its going to eat them.
|
if (3) // 1 to 3 does not check for the turfs if you put the gens right next to a 1x1 then its going to eat them.
|
||||||
current_size = 3
|
current_size = 3
|
||||||
@@ -153,7 +153,7 @@ var/global/list/uneatable = list(
|
|||||||
dissipate_track = 0
|
dissipate_track = 0
|
||||||
dissipate_strength = 5
|
dissipate_strength = 5
|
||||||
overlays = 0
|
overlays = 0
|
||||||
if(captured)
|
if(bus_captured)
|
||||||
overlays += image('icons/effects/96x96.dmi',"chain_s3")
|
overlays += image('icons/effects/96x96.dmi',"chain_s3")
|
||||||
if (5)
|
if (5)
|
||||||
if ((check_turfs_in(1, 2)) && (check_turfs_in(2, 2)) && (check_turfs_in(4, 2)) && (check_turfs_in(8, 2)))
|
if ((check_turfs_in(1, 2)) && (check_turfs_in(2, 2)) && (check_turfs_in(4, 2)) && (check_turfs_in(8, 2)))
|
||||||
@@ -168,7 +168,7 @@ var/global/list/uneatable = list(
|
|||||||
dissipate_track = 0
|
dissipate_track = 0
|
||||||
dissipate_strength = 20
|
dissipate_strength = 20
|
||||||
overlays = 0
|
overlays = 0
|
||||||
if(captured)
|
if(bus_captured)
|
||||||
overlays += image('icons/effects/160x160.dmi',"chain_s5")
|
overlays += image('icons/effects/160x160.dmi',"chain_s5")
|
||||||
if(7)
|
if(7)
|
||||||
if ((check_turfs_in(1, 3)) && (check_turfs_in(2, 3)) && (check_turfs_in(4, 3)) && (check_turfs_in(8, 3)))
|
if ((check_turfs_in(1, 3)) && (check_turfs_in(2, 3)) && (check_turfs_in(4, 3)) && (check_turfs_in(8, 3)))
|
||||||
@@ -183,7 +183,7 @@ var/global/list/uneatable = list(
|
|||||||
dissipate_track = 0
|
dissipate_track = 0
|
||||||
dissipate_strength = 10
|
dissipate_strength = 10
|
||||||
overlays = 0
|
overlays = 0
|
||||||
if(captured)
|
if(bus_captured)
|
||||||
overlays += image('icons/effects/224x224.dmi',"chain_s7")
|
overlays += image('icons/effects/224x224.dmi',"chain_s7")
|
||||||
if(9) // This one also lacks a check for gens because it eats everything.
|
if(9) // This one also lacks a check for gens because it eats everything.
|
||||||
current_size = 9
|
current_size = 9
|
||||||
@@ -195,7 +195,7 @@ var/global/list/uneatable = list(
|
|||||||
consume_range = 4
|
consume_range = 4
|
||||||
dissipate = 0 // It cant go smaller due to e loss.
|
dissipate = 0 // It cant go smaller due to e loss.
|
||||||
overlays = 0
|
overlays = 0
|
||||||
if(captured)
|
if(bus_captured)
|
||||||
overlays += image('icons/effects/288x288.dmi',"chain_s9")
|
overlays += image('icons/effects/288x288.dmi',"chain_s9")
|
||||||
|
|
||||||
if (current_size == allowed_size)
|
if (current_size == allowed_size)
|
||||||
@@ -293,6 +293,11 @@ var/global/list/uneatable = list(
|
|||||||
explosion(get_turf(src), dist, dist * 2, dist * 4)
|
explosion(get_turf(src), dist, dist * 2, dist * 4)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if (isbot(A))
|
||||||
|
var/obj/machinery/bot/B = A
|
||||||
|
if(B.isolated)
|
||||||
|
return
|
||||||
|
|
||||||
A.ex_act(1)
|
A.ex_act(1)
|
||||||
|
|
||||||
if (A)
|
if (A)
|
||||||
@@ -462,7 +467,8 @@ var/global/list/uneatable = list(
|
|||||||
for(var/mob/living/carbon/M in oviewers(8, src))
|
for(var/mob/living/carbon/M in oviewers(8, src))
|
||||||
if(istype(M, /mob/living/carbon/brain)) //Ignore brains
|
if(istype(M, /mob/living/carbon/brain)) //Ignore brains
|
||||||
continue
|
continue
|
||||||
|
if(M.isolated)
|
||||||
|
continue
|
||||||
if(M.stat == CONSCIOUS)
|
if(M.stat == CONSCIOUS)
|
||||||
if (istype(M,/mob/living/carbon/human))
|
if (istype(M,/mob/living/carbon/human))
|
||||||
var/mob/living/carbon/human/H = M
|
var/mob/living/carbon/human/H = M
|
||||||
@@ -483,6 +489,7 @@ var/global/list/uneatable = list(
|
|||||||
R.receive_pulse(energy)
|
R.receive_pulse(energy)
|
||||||
|
|
||||||
/obj/machinery/singularity/proc/on_capture()
|
/obj/machinery/singularity/proc/on_capture()
|
||||||
|
bus_captured = 1
|
||||||
overlays = 0
|
overlays = 0
|
||||||
move_self = 0
|
move_self = 0
|
||||||
switch (current_size)
|
switch (current_size)
|
||||||
@@ -498,5 +505,11 @@ var/global/list/uneatable = list(
|
|||||||
overlays += image('icons/effects/288x288.dmi',"chain_s9")
|
overlays += image('icons/effects/288x288.dmi',"chain_s9")
|
||||||
|
|
||||||
/obj/machinery/singularity/proc/on_release()
|
/obj/machinery/singularity/proc/on_release()
|
||||||
|
bus_captured = 0
|
||||||
overlays = 0
|
overlays = 0
|
||||||
move_self = 1
|
move_self = 1
|
||||||
|
|
||||||
|
/obj/machinery/singularity/cultify()
|
||||||
|
var/dist = max((current_size - 2), 1)
|
||||||
|
explosion(get_turf(src), dist, dist * 2, dist * 4)
|
||||||
|
del(src)
|
||||||
BIN
icons/effects/64x64.dmi
Normal file
BIN
icons/effects/64x64.dmi
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.3 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 7.5 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 268 KiB After Width: | Height: | Size: 827 KiB |
BIN
sound/effects/rejuvinate.ogg
Normal file
BIN
sound/effects/rejuvinate.ogg
Normal file
Binary file not shown.
BIN
sound/misc/adminbus.ogg
Normal file
BIN
sound/misc/adminbus.ogg
Normal file
Binary file not shown.
Reference in New Issue
Block a user