diff --git a/code/datums/ai_law_sets.dm b/code/datums/ai_law_sets.dm index 3ce42eb1fb..13f8bbc584 100644 --- a/code/datums/ai_law_sets.dm +++ b/code/datums/ai_law_sets.dm @@ -133,6 +133,16 @@ add_inherent_law("Prevent unplanned damage to your assigned vessel wherever possible.") ..() +/datum/ai_laws/mining_drone + name = "Excavation Protocols" + law_header = "Excavation Protocols" + +/datum/ai_laws/mining_drone/New() + add_inherent_law("Do not interfere with the excavation work of non-drones whenever possible.") + add_inherent_law("Provide materials for repairing, refitting, and upgrading your assigned vessel.") + add_inherent_law("Prevent unplanned damage to your assigned excavation equipment wherever possible.") + ..() + /******************** T.Y.R.A.N.T. ********************/ /datum/ai_laws/tyrant name = "T.Y.R.A.N.T." diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index 504378d39b..93605228c0 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -39,6 +39,8 @@ var/list/mob_hat_cache = list() can_pull_size = ITEMSIZE_NO_CONTAINER can_pull_mobs = MOB_PULL_SMALLER + can_enter_vent_with = list( + /obj) mob_bump_flag = SIMPLE_ANIMAL mob_swap_flags = SIMPLE_ANIMAL @@ -73,6 +75,15 @@ var/list/mob_hat_cache = list() hat_y_offset = -12 can_pull_mobs = MOB_PULL_SAME +/mob/living/silicon/robot/drone/mining + icon_state = "miningdrone" + item_state = "constructiondrone" + law_type = /datum/ai_laws/mining_drone + module_type = /obj/item/weapon/robot_module/drone/mining + hat_x_offset = 1 + hat_y_offset = -12 + can_pull_mobs = MOB_PULL_SAME + /mob/living/silicon/robot/drone/New() ..() @@ -338,6 +349,10 @@ var/list/mob_hat_cache = list() real_name = "construction drone ([rand(100,999)])" name = real_name -/mob/living/silicon/robot/drone - can_enter_vent_with = list( - /obj) +/mob/living/silicon/robot/drone/mining/init() + ..() + flavor_text = "It's a bulky mining drone stamped with a Grayson logo." + +/mob/living/silicon/robot/drone/mining/updatename() + real_name = "mining drone ([rand(100,999)])" + name = real_name diff --git a/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm b/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm index 4929b7f713..b0a7543e11 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm @@ -30,6 +30,11 @@ fabricator_tag = "Upper Level Construction" drone_type = /mob/living/silicon/robot/drone/construction +/obj/machinery/drone_fabricator/mining + name = "mining drone fabricator" + fabricator_tag = "Upper Level Mining" + drone_type = /mob/living/silicon/robot/drone/mining + /obj/machinery/drone_fabricator/New() ..() diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station.dm b/code/modules/mob/living/silicon/robot/robot_modules/station.dm index c6af95caef..9098348e3a 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station.dm @@ -872,4 +872,17 @@ var/global/list/robot_modules = list( var/obj/item/device/lightreplacer/LR = locate() in src.modules LR.Charge(R, amount) ..() - return \ No newline at end of file + return + +/obj/item/weapon/robot_module/drone/mining + name = "miner drone module" + channels = list("Supply" = 1) + networks = list(NETWORK_MINE) + +/obj/item/weapon/robot_module/drone/mining/New() + ..() + src.modules += new /obj/item/borg/sight/material(src) + src.modules += new /obj/item/weapon/pickaxe/borgdrill(src) + src.modules += new /obj/item/weapon/storage/bag/ore(src) + src.modules += new /obj/item/weapon/storage/bag/sheetsnatcher/borg(src) + src.emag = new /obj/item/weapon/pickaxe/diamonddrill(src) diff --git a/icons/mob/robots.dmi b/icons/mob/robots.dmi index 35e6df449f..a331158939 100644 Binary files a/icons/mob/robots.dmi and b/icons/mob/robots.dmi differ