diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm
index 1d65b141cc7..40acaf36c90 100644
--- a/code/game/gamemodes/objective.dm
+++ b/code/game/gamemodes/objective.dm
@@ -474,6 +474,19 @@ datum/objective/steal
for(var/mob/living/silicon/ai/M in C)
if(istype(M, /mob/living/silicon/ai) && M.stat != 2) //See if any AI's are alive inside that card.
return 1
+ for(var/mob/living/silicon/ai/ai in world)
+ if(istype(ai.loc, /turf))
+ var/area/check_area = get_area(ai)
+ if(istype(check_area, /area/shuttle/escape/centcom))
+ return 1
+ if(istype(check_area, /area/shuttle/escape_pod1/centcom))
+ return 1
+ if(istype(check_area, /area/shuttle/escape_pod2/centcom))
+ return 1
+ if(istype(check_area, /area/shuttle/escape_pod3/centcom))
+ return 1
+ if(istype(check_area, /area/shuttle/escape_pod5/centcom))
+ return 1
else
for(var/obj/I in all_items) //Check for items
diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm
index f053e0f4f4a..ce4e4f2ce63 100644
--- a/code/game/objects/items/weapons/grenades/chem_grenade.dm
+++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm
@@ -1,269 +1,148 @@
/obj/item/weapon/grenade/chem_grenade
name = "Grenade Casing"
icon_state = "chemg"
- icon = 'chemical.dmi'
item_state = "flashbang"
+ desc = "A hand made chemical grenade."
w_class = 2.0
force = 2.0
- var/list/beakers = list()
- var/obj/item/device/assembly/attached_device
- var/exploding = 0
+ var/stage = 0
var/state = 0
var/path = 0
- var/motion = 0
- var/direct = "SOUTH"
- var/obj/item/weapon/circuitboard/circuit = null
- var/list/allowed_containers = list("/obj/item/weapon/reagent_containers/glass/beaker", "/obj/item/weapon/reagent_containers/glass/dispenser", "/obj/item/weapon/reagent_containers/glass/bottle")
+ var/obj/item/device/assembly_holder/detonator = null
+ var/list/beakers = new/list()
+ var/list/allowed_containers = list(/obj/item/weapon/reagent_containers/glass/beaker, /obj/item/weapon/reagent_containers/glass/bottle)
var/affected_area = 3
- var/mob/attacher = "Unknown"
- throw_speed = 4
- throw_range = 20
- flags = FPRINT | TABLEPASS | CONDUCT | USEDELAY
- slot_flags = SLOT_BELT
-
- attackby(var/obj/item/weapon/W, var/mob/user)
- if(path || !active)
- switch(active)
- if(0)
- if(istype(W, /obj/item/device/assembly/igniter))
- active = 1
- icon_state = initial(icon_state) +"_ass"
- name = "unsecured grenade"
- path = 1
- del(W)
- if(1)
- if(istype(W, /obj/item/weapon/reagent_containers/glass))
- if(beakers.len == 2)
- user << "\red There are already two beakers inside, remove one first!"
- return
-
- beakers |= W
- user.drop_item()
- W.loc = src
- user << "\blue You insert the beaker into the casing."
-
- else if(istype(W, /obj/item/device/assembly/signaler) || istype(W, /obj/item/device/assembly/timer) || istype(W, /obj/item/device/assembly/infra) || istype(W, /obj/item/device/assembly/prox_sensor))
- if(attached_device)
- user << "\red There is already an device attached to the controls, remove it first!"
- return
-
- attached_device = W
- user.drop_item()
- W.loc = src
- user << "\blue You attach the [W] to the grenade controls!"
- W.master = src
- bombers += "[key_name(user)] attached a [W] to a grenade casing."
- message_admins("[key_name_admin(user)] attached a [W] to a grenade casing.")
- log_game("[key_name_admin(user)] attached a [W] to a grenade casing.")
- attacher = key_name(user)
-
- else if(istype(W, /obj/item/weapon/screwdriver))
- if(beakers.len == 2 && attached_device)
- user << "\blue You lock the assembly."
- playsound(src.loc, 'Screwdriver.ogg', 25, -3)
- name = "grenade"
- icon_state = initial(icon_state) + "_locked"
- active = 2
- path = 1
- else
- user << "\red You need to add all components before locking the assembly."
- if(2)
- if(istype(W, /obj/item/weapon/screwdriver))
- user << "\blue You disarm the [src]!"
- playsound(src.loc, 'Screwdriver.ogg', 25, -3)
- name = "grenade casing"
- icon_state = initial(icon_state) +"_ass"
- active = 1
- path = 1
-
- if(path != 1)
- if(!istype(src.loc,/turf))
- user << "\red You need to put the canister on the ground to do that!"
- else
- switch(state)
- if(0)
- if(istype(W, /obj/item/weapon/wrench))
- playsound(src.loc, 'Ratchet.ogg', 50, 1)
- if(do_after(user, 20))
- user << "\blue You wrench the canister in place."
- src.name = "Camera Assembly"
- src.anchored = 1
- src.state = 1
- path = 2
- if(1)
- if(istype(W, /obj/item/weapon/wrench))
- playsound(src.loc, 'Ratchet.ogg', 50, 1)
- if(do_after(user, 20))
- user << "\blue You unfasten the canister."
- src.name = "Grenade Casing"
- src.anchored = 0
- src.state = 0
- path = 0
- if(istype(W, /obj/item/device/multitool))
- playsound(src.loc, 'Deconstruct.ogg', 50, 1)
- user << "\blue You place the electronics inside the canister."
- src.circuit = W
- user.drop_item()
- W.loc = src
- if(istype(W, /obj/item/weapon/screwdriver) && circuit)
- playsound(src.loc, 'Screwdriver.ogg', 50, 1)
- user << "\blue You screw the circuitry into place."
- src.state = 2
- if(istype(W, /obj/item/weapon/crowbar) && circuit)
- playsound(src.loc, 'Crowbar.ogg', 50, 1)
- user << "\blue You remove the circuitry."
- src.state = 1
- circuit.loc = src.loc
- src.circuit = null
- if(2)
- if(istype(W, /obj/item/weapon/screwdriver) && circuit)
- playsound(src.loc, 'Screwdriver.ogg', 50, 1)
- user << "\blue You unfasten the circuitry."
- src.state = 1
- if(istype(W, /obj/item/weapon/cable_coil))
- if(W:amount >= 1)
- playsound(src.loc, 'Deconstruct.ogg', 50, 1)
- if(do_after(user, 20))
- W:amount -= 1
- if(!W:amount) del(W)
- user << "\blue You add cabling to the canister."
- src.state = 3
- if(3)
- if(istype(W, /obj/item/weapon/wirecutters))
- playsound(src.loc, 'wirecutter.ogg', 50, 1)
- user << "\blue You remove the cabling."
- src.state = 2
- var/obj/item/weapon/cable_coil/A = new /obj/item/weapon/cable_coil( src.loc )
- A.amount = 1
- if(issignaler(W))
- playsound(src.loc, 'Deconstruct.ogg', 50, 1)
- user << "\blue You attach the wireless signaller unit to the circutry."
- user.drop_item()
- W.loc = src
- src.state = 4
- if(4)
- if(istype(W, /obj/item/weapon/crowbar) && !motion)
- playsound(src.loc, 'Crowbar.ogg', 50, 1)
- user << "\blue You remove the remote signalling device."
- src.state = 3
- var/obj/item/device/assembly/signaler/S = locate() in src
- if(S)
- S.loc = src.loc
- else
- new /obj/item/device/assembly/signaler( src.loc, 1 )
- if(isprox(W) && motion == 0)
-// if(W:amount >= 1)
- playsound(src.loc, 'Deconstruct.ogg', 50, 1)
-// W:use(1)
- user << "\blue You attach the proximity sensor."
- user.drop_item()
- W.loc = src
- motion = 1
- if(istype(W, /obj/item/weapon/crowbar) && motion)
- playsound(src.loc, 'Crowbar.ogg', 50, 1)
- user << "\blue You remove the proximity sensor."
- var/obj/item/device/assembly/prox_sensor/S = locate() in src
- if(S)
- S.loc = src.loc
- else
- new /obj/item/device/assembly/prox_sensor( src.loc, 1 )
- motion = 0
- if(istype(W, /obj/item/stack/sheet/glass))
- if(W:amount >= 1)
- playsound(src.loc, 'Deconstruct.ogg', 50, 1)
- if(do_after(user, 20))
- if(W)
- W:use(1)
- user << "\blue You put in the glass lens."
- src.state = 5
- if(5)
- if(istype(W, /obj/item/weapon/crowbar))
- playsound(src.loc, 'Crowbar.ogg', 50, 1)
- user << "\blue You remove the glass lens."
- src.state = 4
- new /obj/item/stack/sheet/glass( src.loc, 2 )
- if(istype(W, /obj/item/weapon/screwdriver))
- playsound(src.loc, 'Screwdriver.ogg', 50, 1)
- user << "\blue You connect the lense."
- var/B
- if(motion == 1)
- B = new /obj/machinery/camera/motion( src.loc )
- else
- B = new /obj/machinery/camera( src.loc )
- B:network = "SS13"
- B:network = input(usr, "Which network would you like to connect this camera to?", "Set Network", "SS13")
- direct = input(user, "Direction?", "Assembling Camera", null) in list( "NORTH", "EAST", "SOUTH", "WEST" )
- B:dir = text2dir(direct)
- del(src)
- return
+ New()
+ var/datum/reagents/R = new/datum/reagents(1000)
+ reagents = R
+ R.my_atom = src
attack_self(mob/user as mob)
- if(active == 2)
- attached_device.attack_self(user)
- return
- user.machine = src
- var/dat = {" Grenade properties:
-
Beaker one: [beakers[1]] [beakers[1] ? "Remove" : ""]
-
Beaker two: [beakers[2]] [beakers[2] ? "Remove" : ""]
-
Control attachment: [attached_device ? "[attached_device]" : "None"] [attached_device ? "Remove" : ""]"}
+ if(!stage || stage==1)
+ if(detonator)
+// detonator.loc=src.loc
+ detonator.detached()
+ usr.put_in_hands(detonator)
+ detonator=null
+ stage=0
+ icon_state = initial(icon_state)
+ else if(beakers.len)
+ for(var/obj/B in beakers)
+ if(istype(B))
+ beakers -= B
+ user.put_in_hands(B)
+ name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]"
+ if(stage > 1 && !active && clown_check(user))
+ user << "You prime \the [name]!"
+
+ log_attack("[user.name] ([user.ckey]) primed \a [src].")
+ log_admin("ATTACK: [user] ([user.ckey]) primed \a [src].")
+ message_admins("ATTACK: [user] ([user.ckey]) primed \a [src].")
+
+ activate()
+ add_fingerprint(user)
+ if(iscarbon(user))
+ var/mob/living/carbon/C = user
+ C.throw_mode_on()
+
+ attackby(obj/item/weapon/W as obj, mob/user as mob)
+
+ if(istype(W,/obj/item/device/assembly_holder) && (!stage || stage==1) && path != 2)
+ var/obj/item/device/assembly_holder/det = W
+ if(istype(det.a_left,det.a_right.type) || (!isigniter(det.a_left) && !isigniter(det.a_right)))
+ user << "\red Assembly must contain one igniter."
+ return
+ if(!det.secured)
+ user << "\red Assembly must be secured with screwdriver."
+ return
+ path = 1
+ user << "\blue You add [W] to the metal casing."
+ playsound(src.loc, 'sound/items/Screwdriver2.ogg', 25, -3)
+ user.remove_from_mob(det)
+ det.loc = src
+ detonator = det
+ icon_state = initial(icon_state) +"_ass"
+ name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]"
+ stage = 1
+ else if(istype(W,/obj/item/weapon/screwdriver) && path != 2)
+ if(stage == 1)
+ path = 1
+ if(beakers.len)
+ user << "\blue You lock the assembly."
+ name = "grenade"
+ else
+// user << "\red You need to add at least one beaker before locking the assembly."
+ user << "\blue You lock the empty assembly."
+ name = "fake grenade"
+ playsound(src.loc, 'sound/items/Screwdriver.ogg', 25, -3)
+ icon_state = initial(icon_state) +"_locked"
+ stage = 2
+ else if(stage == 2)
+ if(active && prob(95))
+ user << "\red You trigger the assembly!"
+ prime()
+ return
+ else
+ user << "\blue You unlock the assembly."
+ playsound(src.loc, 'sound/items/Screwdriver.ogg', 25, -3)
+ name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]"
+ icon_state = initial(icon_state) + (detonator?"_ass":"")
+ stage = 1
+ active = 0
+ else if(is_type_in_list(W, allowed_containers) && (!stage || stage==1) && path != 2)
+ path = 1
+ if(beakers.len == 2)
+ user << "\red The grenade can not hold more containers."
+ return
+ else
+ if(W.reagents.total_volume)
+ user << "\blue You add \the [W] to the assembly."
+ user.drop_item()
+ W.loc = src
+ beakers += W
+ stage = 1
+ name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]"
+ else
+ user << "\red \the [W] is empty."
+
+ examine()
+ set src in usr
+ usr << desc
+ if(detonator)
+ usr << "With attached [detonator.name]"
+
+ activate(mob/user as mob)
+ if(active) return
+
+ if(detonator)
+ if(!isigniter(detonator.a_left))
+ detonator.a_left.activate()
+ active = 1
+ if(!isigniter(detonator.a_right))
+ detonator.a_right.activate()
+ active = 1
+ if(active)
+ icon_state = initial(icon_state) + "_active"
+
+ if(user)
+ log_attack("[user.name] ([user.ckey]) primed \a [src]")
+ log_admin("ATTACK: [user] ([user.ckey]) primed \a [src]")
+ message_admins("ATTACK: [user] ([user.ckey]) primed \a [src]")
- user << browse(dat, "window=trans_valve;size=600x300")
- onclose(user, "trans_valve")
return
+ proc/primed(var/primed = 1)
+ if(active)
+ icon_state = initial(icon_state) + (primed?"_primed":"_active")
- Topic(href, href_list)
- ..()
- if (usr.stat || usr.restrained())
- return
- if (src.loc == usr)
- if(href_list["beakerone"])
- if(beakers.len < 1)
- return
- var/obj/b1 = beakers[1]
- b1.loc = get_turf(src)
- beakers.Remove(b1)
- if(href_list["beakertwo"])
- if(beakers.len < 2)
- return
- var/obj/b2 = beakers[2]
- b2.loc = get_turf(src)
- beakers.Remove(b2)
- if(href_list["rem_device"])
- attached_device.loc = get_turf(src)
- attached_device = null
- if(href_list["device"])
- attached_device.attack_self(usr)
- src.attack_self(usr)
- src.add_fingerprint(usr)
- return
-
- receive_signal(signal)
- if(!(active == 2))
- return //cant go off before it gets primed
- explode()
-
-
- HasProximity(atom/movable/AM as mob|obj)
- if(istype(attached_device, /obj/item/device/assembly/prox_sensor))
- var/obj/item/device/assembly/prox_sensor/D = attached_device
- if (istype(AM, /obj/effect/beam))
- return
- if (AM.move_speed < 12)
- D.sense()
-
-
- proc/explode()
- if(exploding) return
- exploding = 1
+ prime()
+ if(!stage || stage<2) return
//if(prob(reliability))
var/has_reagents = 0
for(var/obj/item/weapon/reagent_containers/glass/G in beakers)
- if(G.reagents.total_volume)
- has_reagents = 1
- break
+ if(G.reagents.total_volume) has_reagents = 1
active = 0
if(!has_reagents)
@@ -271,18 +150,11 @@
playsound(src.loc, 'sound/items/Screwdriver2.ogg', 50, 1)
return
- var/datum/reagents/R = new/datum/reagents(1000)
- reagents = R
- R.my_atom = src
-
playsound(src.loc, 'sound/effects/bamf.ogg', 50, 1)
for(var/obj/item/weapon/reagent_containers/glass/G in beakers)
G.reagents.trans_to(src, G.reagents.total_volume)
- var/obj/item/weapon/reagent_containers/glass/G = locate() in beakers
- reagents.trans_to(G, reagents.total_volume/2)
-
if(src.reagents.total_volume) //The possible reactions didnt use up all reagents.
var/datum/effect/effect/system/steam_spread/steam = new /datum/effect/effect/system/steam_spread()
steam.set_up(10, 0, get_turf(src))
@@ -293,10 +165,6 @@
if( A == src ) continue
src.reagents.reaction(A, 1, 10)
- for(var/atom/A in view(affected_area, src.loc))
- if( A == src ) continue
- G.reagents.reaction(A, 1, 10)
-
invisibility = INVISIBILITY_MAXIMUM //Why am i doing this?
spawn(50) //To make sure all reagents can work
@@ -307,19 +175,12 @@
for(var/obj/item/weapon/reagent_containers/glass/G in beakers)
G.loc = get_turf(src.loc)*/
- proc/c_state(var/i = 0)
- if(i)
- icon_state = initial(icon_state) + "_armed"
- else
- icon_state = initial(icon_state) + "_locked"
- return
-
/obj/item/weapon/grenade/chem_grenade/large
name = "Large Chem Grenade"
desc = "An oversized grenade that affects a larger area."
icon_state = "large_grenade"
- allowed_containers = list("/obj/item/weapon/reagent_containers/glass")
+ allowed_containers = list(/obj/item/weapon/reagent_containers/glass)
origin_tech = "combat=3;materials=3"
affected_area = 4
@@ -327,13 +188,10 @@
name = "Metal-Foam Grenade"
desc = "Used for emergency sealing of air breaches."
path = 1
- active = 2
+ stage = 2
New()
..()
- attached_device = new /obj/item/device/assembly/timer(src)
- attached_device.master = src
- attached_device.toggle_secure()
var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
@@ -341,41 +199,41 @@
B2.reagents.add_reagent("foaming_agent", 10)
B2.reagents.add_reagent("pacid", 10)
- beakers.Add(B1, B2)
- icon_state = "chemg_locked"
+ detonator = new/obj/item/device/assembly_holder/timer_igniter(src)
+
+ beakers += B1
+ beakers += B2
+ icon_state = initial(icon_state) +"_locked"
/obj/item/weapon/grenade/chem_grenade/incendiary
name = "Incendiary Grenade"
desc = "Used for clearing rooms of living things."
path = 1
- active = 2
+ stage = 2
New()
..()
- attached_device = new /obj/item/device/assembly/timer(src)
- attached_device.master = src
- attached_device.toggle_secure()
var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
B1.reagents.add_reagent("aluminum", 25)
B2.reagents.add_reagent("plasma", 25)
- B2.reagents.add_reagent("acid", 25)
+ B2.reagents.add_reagent("sacid", 25)
- beakers.Add(B1, B2)
- icon_state = "chemg_locked"
+ detonator = new/obj/item/device/assembly_holder/timer_igniter(src)
+
+ beakers += B1
+ beakers += B2
+ icon_state = initial(icon_state) +"_locked"
/obj/item/weapon/grenade/chem_grenade/cleaner
name = "Cleaner Grenade"
desc = "BLAM!-brand foaming space cleaner. In a special applicator for rapid cleaning of wide areas."
- active = 2
+ stage = 2
path = 1
New()
..()
- attached_device = new /obj/item/device/assembly/timer(src)
- attached_device.master = src
- attached_device.toggle_secure()
var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
@@ -383,5 +241,8 @@
B2.reagents.add_reagent("water", 40)
B2.reagents.add_reagent("cleaner", 10)
- beakers.Add(B1, B2)
- icon_state = "chemg_locked"
\ No newline at end of file
+ detonator = new/obj/item/device/assembly_holder/timer_igniter(src)
+
+ beakers += B1
+ beakers += B2
+ icon_state = initial(icon_state) +"_locked"
diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm
index 0579188a253..8b22dbdce24 100644
--- a/code/modules/admin/verbs/adminhelp.dm
+++ b/code/modules/admin/verbs/adminhelp.dm
@@ -129,7 +129,8 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an", "monkey", "ali
send2irc(ckey, "[original_msg] - No admins online")
else
send2irc(ckey, "[original_msg] - All admins AFK ([admin_number_afk])")
- send2irc(ckey, original_msg)
+ else
+ send2irc(ckey, original_msg)
feedback_add_details("admin_verb","AH") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
diff --git a/code/modules/assembly/assembly.dm b/code/modules/assembly/assembly.dm
index 68789879a1e..61773960fb0 100644
--- a/code/modules/assembly/assembly.dm
+++ b/code/modules/assembly/assembly.dm
@@ -71,8 +71,6 @@
holder.process_activation(src, 1, 0)
if(holder && (wires & WIRE_PULSE_SPECIAL))
holder.process_activation(src, 0, 1)
- if(master && (wires & WIRE_PULSE))
- master.receive_signal("activate")
// if(radio && (wires & WIRE_RADIO_PULSE))
//Not sure what goes here quite yet send signal?
return 1
diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm
index 710e9564c3f..b8fd9107195 100644
--- a/code/modules/assembly/holder.dm
+++ b/code/modules/assembly/holder.dm
@@ -231,6 +231,9 @@
if ( !(usr.stat || usr.restrained()) )
var/obj/item/device/assembly_holder/holder
+ if(istype(src,/obj/item/weapon/grenade/chem_grenade))
+ var/obj/item/weapon/grenade/chem_grenade/gren = src
+ holder=gren.detonator
var/obj/item/device/assembly/timer/tmr = holder.a_left
if(!istype(tmr,/obj/item/device/assembly/timer))
tmr = holder.a_right
diff --git a/code/modules/assembly/proximity.dm b/code/modules/assembly/proximity.dm
index 7d35d6f70fb..c54afdc0c67 100644
--- a/code/modules/assembly/proximity.dm
+++ b/code/modules/assembly/proximity.dm
@@ -104,7 +104,7 @@
holder.update_icon()
if(holder && istype(holder.loc,/obj/item/weapon/grenade/chem_grenade))
var/obj/item/weapon/grenade/chem_grenade/grenade = holder.loc
- grenade.c_state(scanning)
+ grenade.primed(scanning)
return
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index bb2f591ed9d..9c8fc5d3eab 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -117,7 +117,7 @@
return
//if(icon_state == initial(icon_state))
- var/icontype = ""
+ var/icontype = ""
var/list/icons = list("Monochrome", "Blue", "Inverted", "Firewall", "Green", "Red", "Static")
if (src.name == "B.A.N.N.E.D." && src.ckey == "spaceman96")
icons += "B.A.N.N.E.D."
@@ -708,3 +708,25 @@
src.current = camera
src.current.SetLuminosity(AI_CAMERA_LUMINOSITY)
camera_light_on = world.timeofday + 1 * 20 // Update the light every 2 seconds.
+
+
+/mob/living/silicon/ai/attackby(obj/item/weapon/W as obj, mob/user as mob)
+ if(istype(W, /obj/item/weapon/wrench))
+ if(anchored)
+ user.visible_message("\blue \The [user] starts to unbolt \the [src] from the plating...")
+ if(!do_after(user,40))
+ user.visible_message("\blue \The [user] decides not to unbolt \the [src].")
+ return
+ user.visible_message("\blue \The [user] finishes unfastening \the [src]!")
+ anchored = 0
+ return
+ else
+ user.visible_message("\blue \The [user] starts to bolt \the [src] to the plating...")
+ if(!do_after(user,40))
+ user.visible_message("\blue \The [user] decides not to bolt \the [src].")
+ return
+ user.visible_message("\blue \The [user] finishes fastening down \the [src]!")
+ anchored = 1
+ return
+ else
+ return ..()
\ No newline at end of file
diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm
index d1ae1c05b77..1726440053c 100644
--- a/code/modules/mob/living/silicon/ai/life.dm
+++ b/code/modules/mob/living/silicon/ai/life.dm
@@ -90,7 +90,7 @@
src.see_in_dark = 0
src.see_invisible = SEE_INVISIBLE_LIVING
- if (((!loc.master.power_equip) || istype(T, /turf/space)) && !istype(src.loc,/obj/item))
+ if (((!loc.master.power_equip) || istype(T, /turf/space)) && !istype(src.loc,/obj/item) && !istype(get_area(src), /area/shuttle))
if (src:aiRestorePowerRoutine==0)
src:aiRestorePowerRoutine = 1
diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm
index 068241967d3..983d7fbbcaf 100644
--- a/code/modules/mob/mob_movement.dm
+++ b/code/modules/mob/mob_movement.dm
@@ -293,7 +293,7 @@
if(config.Tickcomp)
move_delay -= 1.3
- var/tickcomp = ((1/(world.tick_lag))*1.3)
+// var/tickcomp = ((1/(world.tick_lag))*1.3)
//We are now going to move
moving = 1