mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-01-04 06:22:14 +00:00
Bot Access (#630)
Added Master access to bot control panels for roboticists and research directors Also added a return 1 to all bot construction steps, to prevent calling afterattack for the items used on the bot. This fixes a couple runtime errors and prevents more in future. Not included in changelog as this is irrelevant to end-users since they cant see runtime errors
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
var/obj/access_scanner = null
|
||||
var/list/req_access = list()
|
||||
var/list/req_one_access = list()
|
||||
var/master_access = access_robotics
|
||||
|
||||
/mob/living/bot/New()
|
||||
..()
|
||||
@@ -53,12 +54,19 @@
|
||||
/mob/living/bot/death()
|
||||
explode()
|
||||
|
||||
/mob/living/bot/proc/has_master_access(var/obj/item/I)
|
||||
var/list/L = I.GetAccess()
|
||||
if (master_access in L)
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
|
||||
|
||||
/mob/living/bot/attackby(var/obj/item/O, var/mob/user)
|
||||
if(O.GetID())
|
||||
if(access_scanner.allowed(user) && !open && !emagged)
|
||||
if((has_master_access(O) || access_scanner.allowed(user)) && !open && !emagged)
|
||||
locked = !locked
|
||||
user << "<span class='notice'>Controls are now [locked ? "locked." : "unlocked."]</span>"
|
||||
attack_hand(user)
|
||||
else
|
||||
if(emagged)
|
||||
user << "<span class='warning'>ERROR</span>"
|
||||
|
||||
@@ -317,6 +317,7 @@
|
||||
user << "<span class='notice'>You add the robot arm to the bucket and sensor assembly. Beep boop!</span>"
|
||||
user.drop_from_inventory(src)
|
||||
qdel(src)
|
||||
return 1
|
||||
|
||||
else if(istype(O, /obj/item/weapon/pen))
|
||||
var/t = sanitizeSafe(input(user, "Enter new robot name", name, created_name), MAX_NAME_LEN)
|
||||
|
||||
@@ -105,6 +105,7 @@
|
||||
else
|
||||
item_state = "ed209_legs"
|
||||
icon_state = "ed209_legs"
|
||||
return 1
|
||||
|
||||
if(2)
|
||||
if(istype(W, /obj/item/clothing/suit/storage/vest))
|
||||
@@ -115,6 +116,7 @@
|
||||
name = "vest/legs/frame assembly"
|
||||
item_state = "ed209_shell"
|
||||
icon_state = "ed209_shell"
|
||||
return 1
|
||||
|
||||
if(3)
|
||||
if(istype(W, /obj/item/weapon/weldingtool))
|
||||
@@ -123,6 +125,7 @@
|
||||
build_step++
|
||||
name = "shielded frame assembly"
|
||||
user << "<span class='notice'>You welded the vest to [src].</span>"
|
||||
return 1
|
||||
if(4)
|
||||
if(istype(W, /obj/item/clothing/head/helmet))
|
||||
user.drop_item()
|
||||
@@ -132,6 +135,7 @@
|
||||
name = "covered and shielded frame assembly"
|
||||
item_state = "ed209_hat"
|
||||
icon_state = "ed209_hat"
|
||||
return 1
|
||||
|
||||
if(5)
|
||||
if(isprox(W))
|
||||
@@ -142,6 +146,7 @@
|
||||
name = "covered, shielded and sensored frame assembly"
|
||||
item_state = "ed209_prox"
|
||||
icon_state = "ed209_prox"
|
||||
return 1
|
||||
|
||||
if(6)
|
||||
if(istype(W, /obj/item/stack/cable_coil))
|
||||
@@ -166,6 +171,7 @@
|
||||
icon_state = "ed209_taser"
|
||||
user.drop_item()
|
||||
qdel(W)
|
||||
return 1
|
||||
|
||||
if(8)
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
@@ -188,3 +194,4 @@
|
||||
qdel(W)
|
||||
user.drop_from_inventory(src)
|
||||
qdel(src)
|
||||
return 1
|
||||
|
||||
@@ -319,6 +319,7 @@
|
||||
name = "farmbot assembly"
|
||||
user.remove_from_mob(W)
|
||||
qdel(W)
|
||||
return 1
|
||||
|
||||
else if((istype(W, /obj/item/weapon/reagent_containers/glass/bucket)) && (build_step == 1))
|
||||
build_step++
|
||||
@@ -326,6 +327,7 @@
|
||||
name = "farmbot assembly with bucket"
|
||||
user.remove_from_mob(W)
|
||||
qdel(W)
|
||||
return 1//Prevents the object's afterattack from executing and causing runtime errors
|
||||
|
||||
else if((istype(W, /obj/item/weapon/material/minihoe)) && (build_step == 2))
|
||||
build_step++
|
||||
@@ -333,6 +335,7 @@
|
||||
name = "farmbot assembly with bucket and minihoe"
|
||||
user.remove_from_mob(W)
|
||||
qdel(W)
|
||||
return 1
|
||||
|
||||
else if((isprox(W)) && (build_step == 3))
|
||||
build_step++
|
||||
@@ -345,6 +348,7 @@
|
||||
user.remove_from_mob(W)
|
||||
qdel(W)
|
||||
qdel(src)
|
||||
return 1
|
||||
|
||||
else if(istype(W, /obj/item/weapon/pen))
|
||||
var/t = input(user, "Enter new robot name", name, created_name) as text
|
||||
|
||||
@@ -327,6 +327,7 @@
|
||||
user << "<span class='notice'>You add the sensor to the toolbox and tiles!</span>"
|
||||
user.drop_from_inventory(src)
|
||||
qdel(src)
|
||||
return 1
|
||||
else if (istype(W, /obj/item/weapon/pen))
|
||||
var/t = sanitizeSafe(input(user, "Enter new robot name", name, created_name), MAX_NAME_LEN)
|
||||
if(!t)
|
||||
@@ -357,6 +358,7 @@
|
||||
user << "<span class='notice'>You add the robot arm to the odd looking toolbox assembly! Boop beep!</span>"
|
||||
user.drop_from_inventory(src)
|
||||
qdel(src)
|
||||
return 1
|
||||
else if(istype(W, /obj/item/weapon/pen))
|
||||
var/t = sanitizeSafe(input(user, "Enter new robot name", name, created_name), MAX_NAME_LEN)
|
||||
if(!t)
|
||||
|
||||
@@ -169,7 +169,7 @@
|
||||
O.loc = src
|
||||
reagent_glass = O
|
||||
user << "<span class='notice'>You insert [O].</span>"
|
||||
return
|
||||
return 1
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -350,6 +350,7 @@
|
||||
user << "<span class='notice'>You add the health sensor to [src].</span>"
|
||||
name = "First aid/robot arm/health analyzer assembly"
|
||||
overlays += image('icons/obj/aibots.dmi', "na_scanner")
|
||||
return 1
|
||||
|
||||
if(1)
|
||||
if(isprox(W))
|
||||
@@ -362,3 +363,4 @@
|
||||
S.name = created_name
|
||||
user.drop_from_inventory(src)
|
||||
qdel(src)
|
||||
return 1
|
||||
@@ -488,6 +488,7 @@
|
||||
user << "You add the signaler to the helmet."
|
||||
user.drop_from_inventory(src)
|
||||
qdel(src)
|
||||
return 1
|
||||
else
|
||||
return
|
||||
|
||||
@@ -508,6 +509,7 @@
|
||||
build_step = 1
|
||||
overlays += image('icons/obj/aibots.dmi', "hs_hole")
|
||||
user << "You weld a hole in \the [src]."
|
||||
return 1
|
||||
|
||||
else if(isprox(O) && (build_step == 1))
|
||||
user.drop_item()
|
||||
@@ -516,6 +518,7 @@
|
||||
overlays += image('icons/obj/aibots.dmi', "hs_eye")
|
||||
name = "helmet/signaler/prox sensor assembly"
|
||||
qdel(O)
|
||||
return 1
|
||||
|
||||
else if((istype(O, /obj/item/robot_parts/l_arm) || istype(O, /obj/item/robot_parts/r_arm)) && build_step == 2)
|
||||
user.drop_item()
|
||||
@@ -524,6 +527,7 @@
|
||||
name = "helmet/signaler/prox sensor/robot arm assembly"
|
||||
overlays += image('icons/obj/aibots.dmi', "hs_arm")
|
||||
qdel(O)
|
||||
return 1
|
||||
|
||||
else if(istype(O, /obj/item/weapon/melee/baton) && build_step == 3)
|
||||
user.drop_item()
|
||||
@@ -532,6 +536,7 @@
|
||||
S.name = created_name
|
||||
qdel(O)
|
||||
qdel(src)
|
||||
return 1
|
||||
|
||||
else if(istype(O, /obj/item/weapon/pen))
|
||||
var/t = sanitizeSafe(input(user, "Enter new robot name", name, created_name), MAX_NAME_LEN)
|
||||
|
||||
Reference in New Issue
Block a user