From 3ca17220fccc04af096042c8248178240f537857 Mon Sep 17 00:00:00 2001 From: Sharkmare <34294231+Sharkmare@users.noreply.github.com> Date: Thu, 7 Mar 2019 13:19:48 +0100 Subject: [PATCH 01/13] Drone unification Project file for easier overview of drone everything, This may actually replace the old drone files If I expand the system i have in mind enough. --- .../living/silicon/robot/drone/drone_unify.dm | 93 +++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 code/modules/mob/living/silicon/robot/drone/drone_unify.dm diff --git a/code/modules/mob/living/silicon/robot/drone/drone_unify.dm b/code/modules/mob/living/silicon/robot/drone/drone_unify.dm new file mode 100644 index 0000000000..67453e6bd7 --- /dev/null +++ b/code/modules/mob/living/silicon/robot/drone/drone_unify.dm @@ -0,0 +1,93 @@ +//Multi purpose DRONE TYPE DM +//CONTENTS: DRONE actual drones. DRONE modules. DRONE laws. DRONE roundstart info. DRONE items.DRONE Fabricators. DRONE Procs. +//Formatting: Indents= Tab; Tabspacing = 8; Do not use space indenting in this file. -Shark + +//Instead of doing a clean rewrite of drone Code we'll be making our own subtype of drones +//Then we'll strip drone of things we dont want every drone to have, drone/unify is basically our new main object to work with. +//In the future we'll have things like drone/unify/dronetype +//Also the fact that im writing this should show my annoyance at how spread drone code is, that's why I'm trying to collect it all here now. + +//////////////////////////////////////// +//DRONE TYPES //TODO: extract clown egg: https://github.com/tgstation/tgstation/blob/master/icons/mob/robots.dmi +//////////////////////////////////////// +/mob/living/silicon/robot/drone/unify //Hello world~ + name = "drone" + real_name = "drone" + icon = 'icons/mob/robots.dmi' + + law_type = /datum/ai_laws/drone + module_type = /obj/item/weapon/robot_module/drone + + hat_x_offset = 0 //This is the base X offset for hats of the normal drone// X= Horizontal + hat_y_offset = -13 //This is the base Y offset for hats of the normal drone// Y = Vertical + + holder_type = /obj/item/weapon/holder/drone + //var/selected_icon = null //Can be compared to "Wideborg" will tell us in the future if we ar eusing non standardized icon. + possible_chassis = list( + "Maintenance" = "repairbot", + "Mining" = "miningdrone", + "Construction" = "constructiondrone", + "White Spider" = "whitespider", + "Crawler" = "crawler", + "Gravekeeper" = "drone-gravekeeper", + "Egg" = "peaceborg", + "Ball" = "omoikane", + ) //This list populates the drone sprite selection, Left side is Displayed names, Right side is icon_state names. + //TODO: Find someone willing to sell their soul to actively document the PX offset for each of these for hatcode +//////////////////////////////////////// +//DRONE MODULES +//////////////////////////////////////// +/obj/item/weapon/robot_module/drone/unify + //yup this is nothing for now until we build more drone versions + +//////////////////////////////////////// +//DRONE LAWS +//////////////////////////////////////// +//TODO: Remake drone laws, Add subroutine clause "If no maintenance are active nor maintenance crew your duties include maintenance" +//TODO: Unify Drone law system, might be impossible due to how the ..() are structured may need to look into how to add additional laws if add_inherent fails. + +//////////////////////////////////////// +//DRONE HELLO WORLD +//////////////////////////////////////// +//TODO: Rewrite all hello worlds to be more accurate to our lore. Make Drone spawntext more lore heavy in general +/mob/living/silicon/robot/drone/unify/proc/welcome_drone() + src << "You are a Unified Drone Module, an autonomous maintenance and fabrication system.." + src << "You are assigned to a Sol Central maintenance project. The name is irrelevant. Your task is to complete maintenance and subsystem integration as soon as possible." + src << "Use :d to talk to other drones and say to speak silently to your nearby fellows." + src << "You do not follow orders from anyone; not the AI, not humans, and not other synthetics.." + + +//////////////////////////////////////// +//DRONE ITEMS (mostly mods of other items) +//////////////////////////////////////// +//TODO: Move Advanced soap here. + +//////////////////////////////////////// +//DRONE FABRICATOR, ONE FOR ALL SYSTEM. +//////////////////////////////////////// +//TODO: Actually write this +/obj/machinery/drone_fabricator/unify + name = "Unified Drone Module fabricator" + fabricator_tag = "Prototype UNIFY Fabricator" + desc = "A large automated factory for producing Unified Drone Modules." + drone_type = null //Gonna try to set this later + var/list/possible_drones = list("UNIFY Module" = /obj/item/weapon/robot_module/drone/unify, + "Construction Module" = /mob/living/silicon/robot/drone/construction,) + + +//////////////////////////////////////// +//DRONE PROCS +//////////////////////////////////////// +/mob/living/silicon/robot/drone/unify/updatename() + real_name = "Unified Drone Module ([rand(100,999)])" //UDMs, sounds kinda nice, maybe call them this Lore wise? + name = real_name + +/obj/machinery/drone_fabricator/unify/create_drone(var/client/player) + choose_dronetype()//code for dronetypes goes here + ..() + +/mob/living/silicon/robot/drone/proc/choose_dronetype() + var/choice + choice = input(usr,"What module would you like to use?") as null|anything in possible_drones + if(!choice) return + drone_type = possible_chassis[choice] From 74f350feddcdae29b1e9f3d10fe5f595e42e4bd4 Mon Sep 17 00:00:00 2001 From: Sharkmare <34294231+Sharkmare@users.noreply.github.com> Date: Thu, 7 Mar 2019 13:21:21 +0100 Subject: [PATCH 02/13] Update vorestation.dme --- vorestation.dme | 1 + 1 file changed, 1 insertion(+) diff --git a/vorestation.dme b/vorestation.dme index cc80968237..76aea2c827 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -2156,6 +2156,7 @@ #include "code\modules\mob\living\silicon\robot\dogborg\dog_modules_vr.dm" #include "code\modules\mob\living\silicon\robot\dogborg\dog_sleeper_vr.dm" #include "code\modules\mob\living\silicon\robot\drone\drone.dm" +#include "code\modules\mob\living\silicon\robot\drone\drone_unify.dm" #include "code\modules\mob\living\silicon\robot\drone\drone_abilities.dm" #include "code\modules\mob\living\silicon\robot\drone\drone_console.dm" #include "code\modules\mob\living\silicon\robot\drone\drone_damage.dm" From 0c9a04e9ca96c519a8ae368463dd28a5e6ef8bd5 Mon Sep 17 00:00:00 2001 From: Sharkmare <34294231+Sharkmare@users.noreply.github.com> Date: Thu, 7 Mar 2019 13:38:19 +0100 Subject: [PATCH 03/13] Update drone_unify.dm --- .../mob/living/silicon/robot/drone/drone_unify.dm | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/drone/drone_unify.dm b/code/modules/mob/living/silicon/robot/drone/drone_unify.dm index 67453e6bd7..0b614b1c2a 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_unify.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_unify.dm @@ -23,7 +23,7 @@ holder_type = /obj/item/weapon/holder/drone //var/selected_icon = null //Can be compared to "Wideborg" will tell us in the future if we ar eusing non standardized icon. - possible_chassis = list( + var/global/list/possible_chassis = list( "Maintenance" = "repairbot", "Mining" = "miningdrone", "Construction" = "constructiondrone", @@ -50,7 +50,7 @@ //DRONE HELLO WORLD //////////////////////////////////////// //TODO: Rewrite all hello worlds to be more accurate to our lore. Make Drone spawntext more lore heavy in general -/mob/living/silicon/robot/drone/unify/proc/welcome_drone() +/mob/living/silicon/robot/drone/unify/welcome_drone() src << "You are a Unified Drone Module, an autonomous maintenance and fabrication system.." src << "You are assigned to a Sol Central maintenance project. The name is irrelevant. Your task is to complete maintenance and subsystem integration as soon as possible." src << "Use :d to talk to other drones and say to speak silently to your nearby fellows." @@ -71,23 +71,25 @@ fabricator_tag = "Prototype UNIFY Fabricator" desc = "A large automated factory for producing Unified Drone Modules." drone_type = null //Gonna try to set this later - var/list/possible_drones = list("UNIFY Module" = /obj/item/weapon/robot_module/drone/unify, + var/global/list/possible_drones = list("UNIFY Module" = /obj/item/weapon/robot_module/drone/unify, "Construction Module" = /mob/living/silicon/robot/drone/construction,) //////////////////////////////////////// //DRONE PROCS //////////////////////////////////////// +//Drone Drone Procs /mob/living/silicon/robot/drone/unify/updatename() real_name = "Unified Drone Module ([rand(100,999)])" //UDMs, sounds kinda nice, maybe call them this Lore wise? name = real_name +//Fabricator procs /obj/machinery/drone_fabricator/unify/create_drone(var/client/player) choose_dronetype()//code for dronetypes goes here ..() -/mob/living/silicon/robot/drone/proc/choose_dronetype() +/obj/machinery/drone_fabricator//proc/choose_dronetype() var/choice choice = input(usr,"What module would you like to use?") as null|anything in possible_drones if(!choice) return - drone_type = possible_chassis[choice] + drone_type = possible_drones[choice] From f5d4276fb2ec2f8f7282bb9ec8253164d76faab7 Mon Sep 17 00:00:00 2001 From: Sharkmare <34294231+Sharkmare@users.noreply.github.com> Date: Thu, 7 Mar 2019 13:41:28 +0100 Subject: [PATCH 04/13] Update drone_unify.dm --- .../mob/living/silicon/robot/drone/drone_unify.dm | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/drone/drone_unify.dm b/code/modules/mob/living/silicon/robot/drone/drone_unify.dm index 0b614b1c2a..1dc31b0fdb 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_unify.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_unify.dm @@ -23,17 +23,9 @@ holder_type = /obj/item/weapon/holder/drone //var/selected_icon = null //Can be compared to "Wideborg" will tell us in the future if we ar eusing non standardized icon. - var/global/list/possible_chassis = list( - "Maintenance" = "repairbot", - "Mining" = "miningdrone", - "Construction" = "constructiondrone", - "White Spider" = "whitespider", - "Crawler" = "crawler", - "Gravekeeper" = "drone-gravekeeper", - "Egg" = "peaceborg", - "Ball" = "omoikane", - ) //This list populates the drone sprite selection, Left side is Displayed names, Right side is icon_state names. - //TODO: Find someone willing to sell their soul to actively document the PX offset for each of these for hatcode + possible_chassis += "PROTOTYPE" = "miningdrone" + //This list populates the drone sprite selection, Left side is Displayed names, Right side is icon_state names. + //TODO: Find someone willing to sell their soul to actively document the PX offset for each of these for hatcode //////////////////////////////////////// //DRONE MODULES //////////////////////////////////////// From 4d670daea2f0c4c9416501dc00bf779aada86b5e Mon Sep 17 00:00:00 2001 From: Sharkmare <34294231+Sharkmare@users.noreply.github.com> Date: Thu, 7 Mar 2019 13:42:42 +0100 Subject: [PATCH 05/13] Update drone_unify.dm --- .../mob/living/silicon/robot/drone/drone_unify.dm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/drone/drone_unify.dm b/code/modules/mob/living/silicon/robot/drone/drone_unify.dm index 1dc31b0fdb..2c1b63dfc4 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_unify.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_unify.dm @@ -23,9 +23,6 @@ holder_type = /obj/item/weapon/holder/drone //var/selected_icon = null //Can be compared to "Wideborg" will tell us in the future if we ar eusing non standardized icon. - possible_chassis += "PROTOTYPE" = "miningdrone" - //This list populates the drone sprite selection, Left side is Displayed names, Right side is icon_state names. - //TODO: Find someone willing to sell their soul to actively document the PX offset for each of these for hatcode //////////////////////////////////////// //DRONE MODULES //////////////////////////////////////// @@ -71,6 +68,12 @@ //DRONE PROCS //////////////////////////////////////// //Drone Drone Procs +/mob/living/silicon/robot/drone/unify/New() + ..() + possible_chassis += "PROTOTYPE" = "miningdrone" + //This list populates the drone sprite selection, Left side is Displayed names, Right side is icon_state names. + //TODO: Find someone willing to sell their soul to actively document the PX offset for each of these for hatcode + /mob/living/silicon/robot/drone/unify/updatename() real_name = "Unified Drone Module ([rand(100,999)])" //UDMs, sounds kinda nice, maybe call them this Lore wise? name = real_name From a24a1abc6c5081e76f9900e9c45ae8f1239db6ca Mon Sep 17 00:00:00 2001 From: Sharkmare <34294231+Sharkmare@users.noreply.github.com> Date: Thu, 7 Mar 2019 13:52:01 +0100 Subject: [PATCH 06/13] Update drone_unify.dm --- code/modules/mob/living/silicon/robot/drone/drone_unify.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/robot/drone/drone_unify.dm b/code/modules/mob/living/silicon/robot/drone/drone_unify.dm index 2c1b63dfc4..2fb33788af 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_unify.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_unify.dm @@ -83,7 +83,7 @@ choose_dronetype()//code for dronetypes goes here ..() -/obj/machinery/drone_fabricator//proc/choose_dronetype() +/obj/machinery/drone_fabricator/proc/choose_dronetype() var/choice choice = input(usr,"What module would you like to use?") as null|anything in possible_drones if(!choice) return From c271c868b47d3c9e74ebdb7eaeb61a4cdbff13f2 Mon Sep 17 00:00:00 2001 From: Sharkmare <34294231+Sharkmare@users.noreply.github.com> Date: Thu, 7 Mar 2019 13:55:41 +0100 Subject: [PATCH 07/13] Update drone_unify.dm --- .../mob/living/silicon/robot/drone/drone_unify.dm | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/code/modules/mob/living/silicon/robot/drone/drone_unify.dm b/code/modules/mob/living/silicon/robot/drone/drone_unify.dm index 2fb33788af..209139cb8c 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_unify.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_unify.dm @@ -50,6 +50,15 @@ //DRONE ITEMS (mostly mods of other items) //////////////////////////////////////// //TODO: Move Advanced soap here. +/obj/item/weapon/soap/drone + name = "Advanced Soap" + var/tile_clean_amount = 100 + +/obj/item/weapon/soap/drone/New() + ..() + create_reagents(tile_clean_amount) + wet(tile_clean_amount) + //////////////////////////////////////// //DRONE FABRICATOR, ONE FOR ALL SYSTEM. From 878a3d7b746f754922d31c72c1b07e698942ea5f Mon Sep 17 00:00:00 2001 From: Sharkmare <34294231+Sharkmare@users.noreply.github.com> Date: Thu, 7 Mar 2019 13:56:07 +0100 Subject: [PATCH 08/13] Update clown_items.dm --- code/game/objects/items/weapons/clown_items.dm | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm index b0512fde22..1bf562320e 100644 --- a/code/game/objects/items/weapons/clown_items.dm +++ b/code/game/objects/items/weapons/clown_items.dm @@ -19,17 +19,7 @@ ..() create_reagents(5) wet(5) - - -/obj/item/weapon/soap/drone - name = "Advanced Soap" - var/tile_clean_amount = 100 -/obj/item/weapon/soap/drone/New() - ..() - create_reagents(tile_clean_amount) - wet(tile_clean_amount) - /obj/item/weapon/soap/proc/wet(var/amount) reagents.add_reagent("cleaner", amount) From 145e29052d7b12ed1025130545228b724ae6d6fd Mon Sep 17 00:00:00 2001 From: Sharkmare <34294231+Sharkmare@users.noreply.github.com> Date: Thu, 7 Mar 2019 14:00:30 +0100 Subject: [PATCH 09/13] Update drone_unify.dm --- .../modules/mob/living/silicon/robot/drone/drone_unify.dm | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/drone/drone_unify.dm b/code/modules/mob/living/silicon/robot/drone/drone_unify.dm index 209139cb8c..1f74e79d2e 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_unify.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_unify.dm @@ -69,7 +69,7 @@ fabricator_tag = "Prototype UNIFY Fabricator" desc = "A large automated factory for producing Unified Drone Modules." drone_type = null //Gonna try to set this later - var/global/list/possible_drones = list("UNIFY Module" = /obj/item/weapon/robot_module/drone/unify, + var/global/list/possible_drones = list("UNIFY Module" = /mob/living/silicon/robot/drone/unify, "Construction Module" = /mob/living/silicon/robot/drone/construction,) @@ -77,12 +77,6 @@ //DRONE PROCS //////////////////////////////////////// //Drone Drone Procs -/mob/living/silicon/robot/drone/unify/New() - ..() - possible_chassis += "PROTOTYPE" = "miningdrone" - //This list populates the drone sprite selection, Left side is Displayed names, Right side is icon_state names. - //TODO: Find someone willing to sell their soul to actively document the PX offset for each of these for hatcode - /mob/living/silicon/robot/drone/unify/updatename() real_name = "Unified Drone Module ([rand(100,999)])" //UDMs, sounds kinda nice, maybe call them this Lore wise? name = real_name From 3b2446f439184c116e539130a49037cd9f5143a9 Mon Sep 17 00:00:00 2001 From: Sharkmare <34294231+Sharkmare@users.noreply.github.com> Date: Thu, 7 Mar 2019 14:13:45 +0100 Subject: [PATCH 10/13] Update drone_unify.dm --- .../mob/living/silicon/robot/drone/drone_unify.dm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/drone/drone_unify.dm b/code/modules/mob/living/silicon/robot/drone/drone_unify.dm index 1f74e79d2e..931aa45fb8 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_unify.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_unify.dm @@ -69,9 +69,6 @@ fabricator_tag = "Prototype UNIFY Fabricator" desc = "A large automated factory for producing Unified Drone Modules." drone_type = null //Gonna try to set this later - var/global/list/possible_drones = list("UNIFY Module" = /mob/living/silicon/robot/drone/unify, - "Construction Module" = /mob/living/silicon/robot/drone/construction,) - //////////////////////////////////////// //DRONE PROCS @@ -87,6 +84,12 @@ ..() /obj/machinery/drone_fabricator/proc/choose_dronetype() + var/list/possible_drones = list("UNIFY Module (Same as Maintenance)" = /mob/living/silicon/robot/drone/unify, + "Construction Module" = /mob/living/silicon/robot/drone/construction, + "Mining Module" = /mob/living/silicon/robot/drone/mining, + "Security Module" = /mob/living/silicon/robot/drone/security, + "Maintenance Module" = /mob/living/silicon/robot/drone,) + var/choice choice = input(usr,"What module would you like to use?") as null|anything in possible_drones if(!choice) return From 5c799c96258596c889cded43178704193b848f15 Mon Sep 17 00:00:00 2001 From: Sharkmare <34294231+Sharkmare@users.noreply.github.com> Date: Thu, 7 Mar 2019 14:27:22 +0100 Subject: [PATCH 11/13] Update drone.dm --- code/modules/mob/living/silicon/robot/drone/drone.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index e742b1b9fa..fdffdafeaf 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -119,6 +119,7 @@ var/list/mob_hat_cache = list() verbs += /mob/living/proc/ventcrawl verbs += /mob/living/proc/hide verbs |= /mob/living/silicon/robot/drone/proc/choose_chassis //CHOMPEDIT verb addition + verbs -= /mob/living/silicon/robot/verb/self_diagnosis_verb //Drones dont take component based damage. remove_language("Robot Talk") add_language("Robot Talk", 0) add_language("Drone Talk", 1) From 053edf812aa03e289715998902232fcc39755d39 Mon Sep 17 00:00:00 2001 From: Sharkmare <34294231+Sharkmare@users.noreply.github.com> Date: Thu, 7 Mar 2019 14:33:27 +0100 Subject: [PATCH 12/13] Update drone_unify.dm --- code/modules/mob/living/silicon/robot/drone/drone_unify.dm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/code/modules/mob/living/silicon/robot/drone/drone_unify.dm b/code/modules/mob/living/silicon/robot/drone/drone_unify.dm index 931aa45fb8..99a9353e68 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_unify.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_unify.dm @@ -59,6 +59,13 @@ create_reagents(tile_clean_amount) wet(tile_clean_amount) +//Drone Control Presets; +/obj/machinery/computer/drone_control/engineering + req_access = list(access_engine_equip) +/obj/machinery/computer/drone_control/security + req_access = list(access_security) +/obj/machinery/computer/drone_control/mining + req_access = list(access_mining) //////////////////////////////////////// //DRONE FABRICATOR, ONE FOR ALL SYSTEM. From b4f1231758c65b7086b2fe7568dc7de27ef1a490 Mon Sep 17 00:00:00 2001 From: Sharkmare <34294231+Sharkmare@users.noreply.github.com> Date: Thu, 7 Mar 2019 14:35:54 +0100 Subject: [PATCH 13/13] Update drone_console.dm --- .../mob/living/silicon/robot/drone/drone_console.dm | 8 -------- 1 file changed, 8 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/drone/drone_console.dm b/code/modules/mob/living/silicon/robot/drone/drone_console.dm index 6fe2f8f27b..c6b8e87ca2 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_console.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_console.dm @@ -11,14 +11,6 @@ //Used to enable or disable drone fabrication. var/obj/machinery/drone_fabricator/dronefab - -/obj/machinery/computer/drone_control/New() - ..() - for(var/obj/machinery/drone_fabricator/fab in oview(3,src)) - dronefab = fab - if(istype(dronefab, /obj/machinery/drone_fabricator/mining)) - req_access = list(access_mining) - /obj/machinery/computer/drone_control/attack_ai(var/mob/user as mob) return src.attack_hand(user)