Merge pull request #8841 from GunHog/Bot_Radio_And_Newscasters

Bot fixes and PDA upgrades!
This commit is contained in:
Jordie
2015-04-16 18:18:44 +10:00
12 changed files with 154 additions and 127 deletions
+7 -5
View File
@@ -318,7 +318,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
dat += "<h4>Engineering Functions</h4>"
dat += "<ul>"
dat += "<li><a href='byond://?src=\ref[src];choice=43'><img src=pda_power.png> Power Monitor</a></li>"
if(istype(cartridge.radio, /obj/item/radio/integrated/floorbot))
if(cartridge.access_floorbots)
dat += "<li><a href='byond://?src=\ref[src];choice=51'><img src=pda_floorbot.png> Floorbot Access</a></li>"
dat += "</ul>"
if (cartridge.access_medical)
@@ -326,7 +326,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
dat += "<ul>"
dat += "<li><a href='byond://?src=\ref[src];choice=44'><img src=pda_medical.png> Medical Records</a></li>"
dat += "<li><a href='byond://?src=\ref[src];choice=Medical Scan'><img src=pda_scanner.png> [scanmode == 1 ? "Disable" : "Enable"] Medical Scanner</a></li>"
if(istype(cartridge.radio, /obj/item/radio/integrated/medbot))
if(cartridge.access_medbots)
dat += "<li><a href='byond://?src=\ref[src];choice=52'><img src=pda_medbot.png> Medibot Access</a></li>"
dat += "</ul>"
else
@@ -335,7 +335,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
dat += "<h4>Security Functions</h4>"
dat += "<ul>"
dat += "<li><a href='byond://?src=\ref[src];choice=45'><img src=pda_cuffs.png> Security Records</A></li>"
if(istype(cartridge.radio, /obj/item/radio/integrated/beepsky))
if(cartridge.access_secbots)
dat += "<li><a href='byond://?src=\ref[src];choice=46'><img src=pda_cuffs.png> Security Bot Access</a></li>"
dat += "</ul>"
else dat += "</ul>"
@@ -350,10 +350,12 @@ var/global/list/obj/item/device/pda/PDAs = list()
dat += "<h4>Utilities</h4>"
dat += "<ul>"
if (cartridge)
if(cartridge.access_multibots)
dat += "<li><a href='byond://?src=\ref[src];choice=54'><img src=pda_medbot.png> Bots Access</a></li>"
if (cartridge.access_janitor)
dat += "<li><a href='byond://?src=\ref[src];choice=49'><img src=pda_bucket.png> Custodial Locator</a></li>"
if(istype(cartridge.radio, /obj/item/radio/integrated/cleanbot))
dat += "<li><a href='byond://?src=\ref[src];choice=50'><img src=pda_cleanbot.png> Cleanbot Access</a></li>"
if(cartridge.access_cleanbots)
dat += "<li><a href='byond://?src=\ref[src];choice=50'><img src=pda_cleanbot.png> Cleanbot Access</a></li>"
if (istype(cartridge.radio, /obj/item/radio/integrated/signal))
dat += "<li><a href='byond://?src=\ref[src];choice=40'><img src=pda_signaler.png> Signaler System</a></li>"
if (cartridge.access_newscaster)
+36 -5
View File
@@ -23,6 +23,11 @@
var/access_status_display = 0
var/access_quartermaster = 0
var/access_hydroponics = 0
var/access_secbots = 0
var/access_medbots = 0
var/access_floorbots = 0
var/access_cleanbots = 0
var/access_multibots = 0
var/mode = null
var/menu
var/datum/data/record/active1 = null //General
@@ -39,6 +44,7 @@
name = "\improper Power-ON cartridge"
icon_state = "cart-e"
access_engine = 1
access_floorbots = 1
/obj/item/weapon/cartridge/engineering/New()
..()
@@ -48,6 +54,7 @@
name = "\improper BreatheDeep cartridge"
icon_state = "cart-a"
access_atmos = 1
access_floorbots = 1
/obj/item/weapon/cartridge/atmos/New()
..()
@@ -57,6 +64,7 @@
name = "\improper Med-U cartridge"
icon_state = "cart-m"
access_medical = 1
access_medbots = 1
/obj/item/weapon/cartridge/medical/New()
..()
@@ -66,6 +74,7 @@
name = "\improper ChemWhiz cartridge"
icon_state = "cart-chem"
access_reagent_scanner = 1
access_medbots = 1
/obj/item/weapon/cartridge/chemistry/New()
..()
@@ -75,6 +84,7 @@
name = "\improper R.O.B.U.S.T. cartridge"
icon_state = "cart-s"
access_security = 1
access_secbots = 1
/obj/item/weapon/cartridge/security/New()
..()
@@ -86,6 +96,7 @@
access_security = 1
access_medical = 1
access_manifest = 1
access_secbots = 1
/obj/item/weapon/cartridge/detective/New()
..()
@@ -96,6 +107,7 @@
desc = "The ultimate in clean-room design."
icon_state = "cart-j"
access_janitor = 1
access_cleanbots = 1
/obj/item/weapon/cartridge/janitor/New()
..()
@@ -171,6 +183,7 @@
access_quartermaster = 1
access_janitor = 1
access_security = 1
access_newscaster = 1
/obj/item/weapon/cartridge/hop/New()
..()
@@ -182,6 +195,7 @@
access_manifest = 1
access_status_display = 1
access_security = 1
access_medbots = 1
/obj/item/weapon/cartridge/hos/New()
..()
@@ -194,6 +208,7 @@
access_status_display = 1
access_engine = 1
access_atmos = 1
access_floorbots = 1
/obj/item/weapon/cartridge/ce/New()
..()
@@ -206,6 +221,7 @@
access_status_display = 1
access_reagent_scanner = 1
access_medical = 1
access_medbots = 1
/obj/item/weapon/cartridge/cmo/New()
..()
@@ -225,7 +241,7 @@
/obj/item/weapon/cartridge/captain
name = "\improper Value-PAK cartridge"
desc = "Now with 200% more value!"
desc = "Now with 250% more value!"
icon_state = "cart-c"
access_manifest = 1
access_engine = 1
@@ -234,10 +250,12 @@
access_reagent_scanner = 1
access_status_display = 1
access_atmos = 1
access_newscaster = 1
access_multibots = 1
/obj/item/weapon/cartridge/captain/New()
..()
radio = new /obj/item/radio/integrated/beepsky(src)
radio = new /obj/item/radio/integrated/multi(src)
/obj/item/weapon/cartridge/syndicate
name = "\improper Detomatix cartridge"
@@ -346,7 +364,7 @@
return menu
/obj/item/weapon/cartridge/proc/generate_menu()
/obj/item/weapon/cartridge/proc/generate_menu(mob/user)
switch(mode)
if(40) //signaller
menu = "<h4><img src=pda_signaler.png> Remote Signaling System</h4>"
@@ -689,7 +707,7 @@ Code:
menu += "<h4>Located Cleanbots:</h4>"
ldat = null
for (var/obj/machinery/bot/cleanbot/B in world)
for (var/obj/machinery/bot/cleanbot/B in SSbot.processing)
var/turf/bl = get_turf(B)
if(bl)
@@ -732,10 +750,23 @@ Code:
if(!current)
menu += "<h5> ERROR : NO CHANNEL FOUND </h5>"
return
var/i = 1
for(var/datum/feed_message/msg in current.messages)
menu +="-[msg.body] <BR><FONT SIZE=1>\[Story by <FONT COLOR='maroon'>[msg.author]</FONT>\]</FONT><BR>"
menu +="<b><font size=1>[msg.comments.len] comment[msg.comments.len > 1 ? "s" : ""]</font></b><br>"
if(msg.img)
user << browse_rsc(msg.img, "tmp_photo[i].png")
menu +="<img src='tmp_photo[i].png' width = '180'><BR>"
i++
for(var/datum/feed_comment/comment in msg.comments)
menu +="<font size=1><small>[comment.body]</font><br><font size=1><small><small><small>[comment.author] [comment.time_stamp]</small></small></small></small></font><br>"
menu += "<br> <A href='byond://?src=\ref[src];choice=Newscaster Message'>Post Message</a>"
if (54) // Beepsky, Medibot, Floorbot, and Cleanbot access
menu = "<h4><img src=pda_medbot.png> Multi-Bot Interlink</h4>"
var/obj/item/radio/integrated/multi/SC = radio
bot_control(SC)
/obj/item/weapon/cartridge/Topic(href, href_list)
..()
@@ -825,5 +856,5 @@ Code:
generate_menu()
generate_menu(usr)
print_to_host(menu)
+25 -28
View File
@@ -8,7 +8,6 @@
var/obj/machinery/bot/active // the active bot; if null, show bot list
var/list/botstatus // the status signal sent by the bot
var/bot_type //The type of bot it is.
var/bot_filter //Determines which radio filter to use.
var/control_freq = 1447
@@ -19,9 +18,8 @@
..()
if (istype(loc.loc, /obj/item/device/pda))
hostpda = loc.loc
if (bot_filter)
spawn(5)
add_to_radio(bot_filter)
spawn(5)
add_to_radio()
/obj/item/radio/integrated/Destroy()
if(radio_controller)
@@ -30,7 +28,6 @@
/obj/item/radio/integrated/proc/post_signal(var/freq, var/key, var/value, var/key2, var/value2, var/key3, var/value3,var/key4, var/value4, s_filter)
//world << "Post: [freq]: [key]=[value], [key2]=[value2]"
var/datum/radio_frequency/frequency = radio_controller.return_frequency(freq)
if(!frequency)
@@ -63,13 +60,14 @@
/obj/item/radio/integrated/receive_signal(datum/signal/signal)
/*var/obj/item/device/pda/P = src.loc
world << "recvd:[P] : [signal.source]"
for(var/d in signal.data)
world << "- [d] = [signal.data[d]]"
*/
if(signal.data["sect"] != ZLEVEL_STATION) //Only detect bots on the station! (Getting the current Z-level is too costly)
return
if (signal.data["type"] == bot_type)
if (signal.data["type"] & bot_type)
if(!botlist)
botlist = new()
@@ -88,44 +86,43 @@
if("control")
active = locate(href_list["bot"])
post_signal(control_freq, "command", "bot_status", "active", active, s_filter = bot_filter)
post_signal(control_freq, "command", "bot_status", "active", active)
if("scanbots") // find all bots
botlist = null
post_signal(control_freq, "command", "bot_status", s_filter = bot_filter)
post_signal(control_freq, "command", "bot_status")
if("botlist")
active = null
if("stop", "go")
post_signal(control_freq, "command", href_list["op"], "active", active, s_filter = bot_filter)
post_signal(control_freq, "command", "bot_status", "active", active, s_filter = bot_filter)
post_signal(control_freq, "command", href_list["op"], "active", active)
post_signal(control_freq, "command", "bot_status", "active", active)
if("summon")
post_signal(control_freq, "command", "summon", "active", active, "target", get_turf(PDA) , "useraccess", PDA.GetAccess(), s_filter = bot_filter)
post_signal(control_freq, "command", "bot_status", "active", active, s_filter = bot_filter)
post_signal(control_freq, "command", "summon", "active", active, "target", get_turf(PDA) , "useraccess", PDA.GetAccess())
post_signal(control_freq, "command", "bot_status", "active", active)
PDA.cartridge.unlock()
/obj/item/radio/integrated/proc/add_to_radio(bot_filter) //Master filter control for bots. Must be placed in the bot's local New() to support map spawned bots.
/obj/item/radio/integrated/proc/add_to_radio()
if(radio_controller)
radio_controller.add_object(src, control_freq, filter = bot_filter)
radio_controller.add_object(src, control_freq)
/obj/item/radio/integrated/beepsky
bot_filter = RADIO_SECBOT
bot_type = SEC_BOT
/obj/item/radio/integrated/medbot
bot_filter = RADIO_MEDBOT
bot_type = MED_BOT
/obj/item/radio/integrated/floorbot
bot_filter = RADIO_FLOORBOT
bot_type = FLOOR_BOT
/obj/item/radio/integrated/cleanbot
bot_filter = RADIO_CLEANBOT
bot_type = CLEAN_BOT
/obj/item/radio/integrated/multi
bot_type = SEC_BOT|CLEAN_BOT|MED_BOT|FLOOR_BOT
/obj/item/radio/integrated/mule
//var/list/botlist = null // list of bots
@@ -141,7 +138,7 @@
..()
spawn(5)
if(radio_controller)
radio_controller.add_object(src, control_freq, filter = RADIO_MULEBOT)
radio_controller.add_object(src, control_freq)
radio_controller.add_object(src, beacon_freq, filter = RADIO_NAVBEACONS)
spawn(10)
post_signal(beacon_freq, "findbeacon", "delivery", s_filter = RADIO_NAVBEACONS)
@@ -203,28 +200,28 @@
active = null
if("unload")
post_signal(control_freq, cmd, "unload", s_filter = RADIO_MULEBOT)
post_signal(control_freq, cmd, "unload")
if("setdest")
if(beacons)
var/dest = input("Select Bot Destination", "Mulebot [active.suffix] Interlink", active.destination) as null|anything in beacons
if(dest)
post_signal(control_freq, cmd, "target", "destination", dest, s_filter = RADIO_MULEBOT)
post_signal(control_freq, cmd, "target", "destination", dest)
if("retoff")
post_signal(control_freq, cmd, "autoret", "value", 0, s_filter = RADIO_MULEBOT)
post_signal(control_freq, cmd, "autoret", "value", 0)
if("reton")
post_signal(control_freq, cmd, "autoret", "value", 1, s_filter = RADIO_MULEBOT)
post_signal(control_freq, cmd, "autoret", "value", 1)
if("pickoff")
post_signal(control_freq, cmd, "autopick", "value", 0, s_filter = RADIO_MULEBOT)
post_signal(control_freq, cmd, "autopick", "value", 0)
if("pickon")
post_signal(control_freq, cmd, "autopick", "value", 1, s_filter = RADIO_MULEBOT)
post_signal(control_freq, cmd, "autopick", "value", 1)
if("stop", "go", "home")
post_signal(control_freq, cmd, href_list["op"], s_filter = RADIO_MULEBOT)
post_signal(control_freq, cmd, href_list["op"])
post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
post_signal(control_freq, cmd, "bot_status")
PDA.cartridge.unlock()