diff --git a/_maps/RandomZLevels/research.dmm b/_maps/RandomZLevels/research.dmm index 64f54fe8898..2910cedafff 100644 --- a/_maps/RandomZLevels/research.dmm +++ b/_maps/RandomZLevels/research.dmm @@ -3652,14 +3652,7 @@ /obj/effect/turf_decal/tile/red{ dir = 4 }, -/mob/living/simple_animal/bot/secbot/beepsky{ - desc = "A beefy variant of the standard securitron model."; - emagged = 1; - faction = list("nanotrasenprivate"); - health = 50; - maxHealth = 50; - name = "Officer Genesky" - }, +/mob/living/simple_animal/bot/secbot/genesky, /turf/open/floor/iron/white, /area/awaymission/research/interior/security) "ik" = ( diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 2f2a553ebf9..fbe14e8899d 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -83299,10 +83299,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/mob/living/simple_animal/bot/secbot/beepsky{ - desc = "It's Officer Beepsky! Powered by a potato and a shot of whiskey."; - name = "Officer Beepsky" - }, +/mob/living/simple_animal/bot/secbot/beepsky/officer, /turf/open/floor/iron, /area/hallway/primary/starboard) "sHr" = ( diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index 3bcaab21ec4..c4da403ef0b 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -12650,9 +12650,7 @@ /area/construction) "cCh" = ( /obj/item/bedsheet/red, -/mob/living/simple_animal/bot/secbot/beepsky{ - name = "Officer Beepsky" - }, +/mob/living/simple_animal/bot/secbot/beepsky, /turf/open/floor/plating, /area/security/processing) "cCj" = ( diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index a6826024df3..47bd597c8bd 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -19874,11 +19874,7 @@ dir = 1 }, /obj/effect/landmark/event_spawn, -/mob/living/simple_animal/bot/medbot{ - auto_patrol = 1; - desc = "A little medical robot, officially part of the Nanotrasen medical inspectorate. He looks somewhat underwhelmed."; - name = "Inspector Johnson" - }, +/mob/living/simple_animal/bot/medbot/autopatrol, /turf/open/floor/iron/showroomfloor, /area/medical/medbay/lobby) "cgO" = ( @@ -27303,11 +27299,7 @@ /obj/structure/disposalpipe/segment{ dir = 5 }, -/mob/living/simple_animal/bot/cleanbot{ - auto_patrol = 1; - icon_state = "cleanbot1"; - name = "Mopficcer Sweepsky" - }, +/mob/living/simple_animal/bot/cleanbot/autopatrol, /turf/open/floor/iron, /area/hallway/primary/starboard) "dAD" = ( @@ -50506,12 +50498,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/mob/living/simple_animal/bot/secbot/beepsky{ - desc = "It's Officer Beepsky! Powered by a potato and a shot of whiskey, and with a sturdier reinforced chassis, too."; - health = 45; - maxHealth = 45; - name = "Officer Beepsky" - }, +/mob/living/simple_animal/bot/secbot/beepsky/officer, /turf/open/floor/iron/dark, /area/security/office) "lXd" = ( diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 7c8b6057992..fc0f7f94c53 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -2630,12 +2630,7 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 }, -/mob/living/simple_animal/bot/secbot/beepsky{ - desc = "It's Officer Beepsky! Powered by a potato and a shot of whiskey, and with a sturdier reinforced chassis, too."; - health = 45; - maxHealth = 45; - name = "Officer Beepsky" - }, +/mob/living/simple_animal/bot/secbot/beepsky/officer, /turf/open/floor/iron, /area/security/brig) "awj" = ( @@ -22059,11 +22054,7 @@ /obj/effect/turf_decal/tile/blue{ dir = 1 }, -/mob/living/simple_animal/bot/medbot{ - auto_patrol = 1; - desc = "A little medical robot, officially part of the Nanotrasen medical inspectorate. He looks somewhat underwhelmed."; - name = "Inspector Johnson" - }, +/mob/living/simple_animal/bot/medbot/autopatrol, /turf/open/floor/iron/white/corner{ dir = 8 }, @@ -27795,11 +27786,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/mob/living/simple_animal/bot/cleanbot{ - auto_patrol = 1; - icon_state = "cleanbot1"; - name = "Mopficcer Sweepsky" - }, +/mob/living/simple_animal/bot/cleanbot/autopatrol, /turf/open/floor/iron, /area/hallway/primary/central) "hPP" = ( diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index 8a49b7bcc37..9e32c5fa1b8 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -37778,10 +37778,7 @@ /obj/machinery/camera/directional/south{ c_tag = "Maintenance - East Tram Tunnel 4" }, -/mob/living/simple_animal/bot/secbot{ - auto_patrol = 1; - name = "Officer Tunnel Rat" - }, +/mob/living/simple_animal/bot/secbot/beepsky/officer, /turf/open/floor/iron, /area/maintenance/tram/right) "mna" = ( @@ -62519,11 +62516,7 @@ /obj/effect/turf_decal/trimline/neutral/filled/corner{ dir = 1 }, -/mob/living/simple_animal/bot/medbot{ - auto_patrol = 1; - desc = "A little medical robot. He looks somewhat overwhelmed."; - name = "Emergency T.R.A.M Unit" - }, +/mob/living/simple_animal/bot/medbot/autopatrol, /turf/open/floor/iron, /area/maintenance/tram/left) "vMm" = ( diff --git a/code/__DEFINES/robots.dm b/code/__DEFINES/robots.dm index 983aa2d91ae..af82e038a16 100644 --- a/code/__DEFINES/robots.dm +++ b/code/__DEFINES/robots.dm @@ -50,38 +50,72 @@ /** Simple Animal BOT defines */ +//Assembly defines +#define ASSEMBLY_FIRST_STEP 1 +#define ASSEMBLY_SECOND_STEP 2 +#define ASSEMBLY_THIRD_STEP 3 +#define ASSEMBLY_FOURTH_STEP 4 +#define ASSEMBLY_FIFTH_STEP 5 +#define ASSEMBLY_SIXTH_STEP 6 +#define ASSEMBLY_SEVENTH_STEP 7 +#define ASSEMBLY_EIGHTH_STEP 8 +#define ASSEMBLY_NINTH_STEP 9 + //Bot defines, placed here so they can be read by other things! /// Delay between movemements #define BOT_STEP_DELAY 4 /// Maximum times a bot will retry to step from its position #define BOT_STEP_MAX_RETRIES 5 - /// Default view range for finding targets. #define DEFAULT_SCAN_RANGE 7 +//Amount of time that must pass after a Commissioned bot gets saluted to get another. +#define BOT_COMMISSIONED_SALUTE_DELAY (60 SECONDS) + +//Bot mode defines displaying how Bots act +///The Bot is currently active, and will do whatever it is programmed to do. +#define BOT_MODE_ON (1<<0) +///The Bot is currently set to automatically patrol the station. +#define BOT_MODE_AUTOPATROL (1<<1) +///The Bot is currently allowed to be remote controlled by Silicon. +#define BOT_MODE_REMOTE_ENABLED (1<<2) +///The Bot is allowed to have a pAI placed in control of it. +#define BOT_MODE_PAI_CONTROLLABLE (1<<3) + +//Bot cover defines indicating the Bot's status +///The Bot's cover is open and can be modified/emagged by anyone. +#define BOT_COVER_OPEN (1<<0) +///The Bot's cover is locked, and cannot be opened without unlocking it. +#define BOT_COVER_LOCKED (1<<1) +///The Bot is emagged. +#define BOT_COVER_EMAGGED (1<<2) +///The Bot has been hacked by a Silicon, emagging them, but revertable. +#define BOT_COVER_HACKED (1<<3) //Bot types /// Secutritrons (Beepsky) -#define SEC_BOT (1<<0) +#define SEC_BOT "Securitron" /// ED-209s -#define ADVANCED_SEC_BOT (1<<1) +#define ADVANCED_SEC_BOT "ED-209" /// MULEbots -#define MULE_BOT (1<<2) +#define MULE_BOT "MULEbot" /// Floorbots -#define FLOOR_BOT (1<<3) +#define FLOOR_BOT "Floorbot" /// Cleanbots -#define CLEAN_BOT (1<<4) +#define CLEAN_BOT "Cleanbot" /// Medibots -#define MED_BOT (1<<5) +#define MED_BOT "Medibot" /// Honkbots & ED-Honks -#define HONK_BOT (1<<6) +#define HONK_BOT "Honkbot" /// Firebots -#define FIRE_BOT (1<<7) +#define FIRE_BOT "Firebot" /// Hygienebots -#define HYGIENE_BOT (1<<8) +#define HYGIENE_BOT "Hygienebot" /// Vibe bots -#define VIBE_BOT (1<<9) +#define VIBE_BOT "Vibebot" //Mode defines. If you add a new one make sure you update mode_name in /mob/living/simple_animal/bot + +// General Bot modes // /// Idle #define BOT_IDLE 0 /// Found target, hunting @@ -96,6 +130,8 @@ #define BOT_SUMMON 5 /// Currently moving #define BOT_MOVING 6 + +// Unique modes // /// Secbot - At target, preparing to arrest #define BOT_PREP_ARREST 7 /// Secbot - Arresting target @@ -134,12 +170,3 @@ #define SECBOT_CHECK_RECORDS (1<<3) ///Whether we will stun & cuff or endlessly stun #define SECBOT_HANDCUFF_TARGET (1<<4) - -/** Misc Robot defines */ - -//Assembly defines -#define ASSEMBLY_FIRST_STEP 0 -#define ASSEMBLY_SECOND_STEP 1 -#define ASSEMBLY_THIRD_STEP 2 -#define ASSEMBLY_FOURTH_STEP 3 -#define ASSEMBLY_FIFTH_STEP 4 diff --git a/code/datums/brain_damage/special.dm b/code/datums/brain_damage/special.dm index 267bad5c265..857a6870190 100644 --- a/code/datums/brain_damage/special.dm +++ b/code/datums/brain_damage/special.dm @@ -395,7 +395,7 @@ /obj/effect/hallucination/simple/securitron/Initialize(mapload) . = ..() - name = pick("officer Beepsky", "officer Johnson", "officer Pingsky") + name = pick("Officer Beepsky", "Officer Johnson", "Officer Pingsky") START_PROCESSING(SSfastprocess, src) /obj/effect/hallucination/simple/securitron/process() diff --git a/code/datums/wires/mulebot.dm b/code/datums/wires/mulebot.dm index f2296641388..8351da231b0 100644 --- a/code/datums/wires/mulebot.dm +++ b/code/datums/wires/mulebot.dm @@ -20,7 +20,7 @@ if(!..()) return FALSE var/mob/living/simple_animal/bot/mulebot/mule = holder - if(mule.open) + if(mule.bot_cover_flags & BOT_COVER_OPEN) return TRUE /datum/wires/mulebot/on_cut(wire, mend) diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index 1294b27e817..b2a2d51af76 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -428,7 +428,7 @@ Diagnostic HUDs! var/image/holder = hud_list[DIAG_STAT_HUD] var/icon/I = icon(icon, icon_state, dir) holder.pixel_y = I.Height() - world.icon_size - if(on) + if(bot_mode_flags & BOT_MODE_ON) holder.icon_state = "hudstat" else if(stat) //Generally EMP causes this holder.icon_state = "hudoffline" diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 7236eb5406e..3f2f9e3c2f9 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -161,7 +161,7 @@ continue //only find medibots on the same z-level as the computer var/turf/bl = get_turf(M) if(bl) //if it can't find a turf for the medibot, then it probably shouldn't be showing up - bdat += "[M.name] - \[[bl.x],[bl.y]\] - [M.on ? "Online" : "Offline"]
" + bdat += "[M.name] - \[[bl.x],[bl.y]\] - [M.bot_mode_flags & BOT_MODE_ON ? "Online" : "Offline"]
" if(!bdat) dat += "
None detected
" else diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 9dedd04fc66..880849c2242 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -319,7 +319,7 @@ GLOBAL_LIST_EMPTY(PDAs) dat += "

Utilities

" dat += "