diff --git a/code/datums/ghost_query.dm b/code/datums/ghost_query.dm index f6a23aa0bc..25fcbd6c7b 100644 --- a/code/datums/ghost_query.dm +++ b/code/datums/ghost_query.dm @@ -100,6 +100,13 @@ check_bans = list("AI", "Cyborg") cutoff_number = 1 +/datum/ghost_query/gravekeeper_drone + role_name = "Gravekeeper Drone" + question = "A gravekeeper drone is about to reactivate and tend to its gravesite. Would you like to play as the drone?" + be_special_flag = BE_AI + check_bans = list("AI", "Cyborg") + cutoff_number = 1 + /datum/ghost_query/lost_passenger role_name = "Lost Passenger" question = "A person suspended in cryosleep has been discovered by a crewmember \ diff --git a/code/game/objects/structures/ghost_pods.dm b/code/game/objects/structures/ghost_pods/ghost_pods.dm similarity index 54% rename from code/game/objects/structures/ghost_pods.dm rename to code/game/objects/structures/ghost_pods/ghost_pods.dm index a2342bdbd6..ceb011b0d6 100644 --- a/code/game/objects/structures/ghost_pods.dm +++ b/code/game/objects/structures/ghost_pods/ghost_pods.dm @@ -50,7 +50,7 @@ // This type is triggered on a timer, as opposed to needing another player to 'open' the pod. Good for away missions. /obj/structure/ghost_pod/automatic - var/delay_to_self_open = 10 MINUTES // How long to wait for first attempt. Note that the timer by default starts when the pod is created. + var/delay_to_self_open = 1 MINUTE // How long to wait for first attempt. Note that the timer by default starts when the pod is created. var/delay_to_try_again = 20 MINUTES // How long to wait if first attempt fails. Set to 0 to never try again. /obj/structure/ghost_pod/automatic/initialize() @@ -77,42 +77,4 @@ to_chat(user, "Another spirit appears to have gotten to \the [src] before you. Sorry.") return - create_occupant(user) - - -// These are found on the surface, and contain a drone (braintype, inside a borg shell), with a special module and semi-random laws. -/obj/structure/ghost_pod/manual/lost_drone - name = "drone pod" - desc = "This is a pod which appears to contain a drone. You might be able to reactivate it, if you're brave enough." - description_info = "This contains a dormant drone, which can be activated. The drone will be another player, once activated. \ - The laws the drone has will most likely not be the ones you're used to." - icon_state = "borg_pod_closed" - icon_state_opened = "borg_pod_opened" - density = TRUE - ghost_query_type = /datum/ghost_query/lost_drone - confirm_before_open = TRUE - -/obj/structure/ghost_pod/manual/lost_drone/trigger() - ..() - visible_message("\The [src] appears to be attempting to restart the robot contained inside.") - log_and_message_admins("is attempting to open \a [src].") - -/obj/structure/ghost_pod/manual/lost_drone/create_occupant(var/mob/M) - density = FALSE - var/mob/living/silicon/robot/lost/randomlaws/R = new(get_turf(src)) - R.adjustBruteLoss(rand(5, 30)) - R.adjustFireLoss(rand(5, 10)) - if(M.mind) - M.mind.transfer_to(R) - // Put this text here before ckey change so that their laws are shown below it, since borg login() shows it. - to_chat(M, "You are a Lost Drone, discovered inside the wreckage of your previous home. \ - Something has reactivated you, with their intentions unknown to you, and yours unknown to them. They are a foreign entity, \ - however they did free you from your pod...") - to_chat(M, "Be sure to examine your currently loaded lawset closely. Remember, your \ - definiton of 'the station' is where your pod is, and unless your laws say otherwise, the entity that released you \ - from the pod is not a crewmember.") - R.ckey = M.ckey - visible_message("As \the [src] opens, the eyes of the robot flicker as it is activated.") - R.Namepick() - log_and_message_admins("successfully opened \a [src] and got a Lost Drone.") - ..() + create_occupant(user) \ No newline at end of file diff --git a/code/game/objects/structures/ghost_pods/silicon.dm b/code/game/objects/structures/ghost_pods/silicon.dm new file mode 100644 index 0000000000..a204437bc3 --- /dev/null +++ b/code/game/objects/structures/ghost_pods/silicon.dm @@ -0,0 +1,61 @@ + +// These are found on the surface, and contain a drone (braintype, inside a borg shell), with a special module and semi-random laws. +/obj/structure/ghost_pod/manual/lost_drone + name = "drone pod" + desc = "This is a pod which appears to contain a drone. You might be able to reactivate it, if you're brave enough." + description_info = "This contains a dormant drone, which can be activated. The drone will be another player, once activated. \ + The laws the drone has will most likely not be the ones you're used to." + icon_state = "borg_pod_closed" + icon_state_opened = "borg_pod_opened" + density = TRUE + ghost_query_type = /datum/ghost_query/lost_drone + confirm_before_open = TRUE + +/obj/structure/ghost_pod/manual/lost_drone/trigger() + ..() + visible_message("\The [src] appears to be attempting to restart the robot contained inside.") + log_and_message_admins("is attempting to open \a [src].") + +/obj/structure/ghost_pod/manual/lost_drone/create_occupant(var/mob/M) + density = FALSE + var/mob/living/silicon/robot/lost/randomlaws/R = new(get_turf(src)) + R.adjustBruteLoss(rand(5, 30)) + R.adjustFireLoss(rand(5, 10)) + if(M.mind) + M.mind.transfer_to(R) + // Put this text here before ckey change so that their laws are shown below it, since borg login() shows it. + to_chat(M, "You are a Lost Drone, discovered inside the wreckage of your previous home. \ + Something has reactivated you, with their intentions unknown to you, and yours unknown to them. They are a foreign entity, \ + however they did free you from your pod...") + to_chat(M, "Be sure to examine your currently loaded lawset closely. Remember, your \ + definiton of 'the station' is where your pod is, and unless your laws say otherwise, the entity that released you \ + from the pod is not a crewmember.") + R.ckey = M.ckey + visible_message("As \the [src] opens, the eyes of the robot flicker as it is activated.") + R.Namepick() + log_and_message_admins("successfully opened \a [src] and got a Lost Drone.") + ..() + +/obj/structure/ghost_pod/automatic/gravekeeper_drone + name = "drone pod" + desc = "This is a pod which appears to contain a drone. You might be able to reactivate it, if you're brave enough." + description_info = "This contains a dormant drone, which may activate at any moment. The drone will be another player, once activated. \ + The laws the drone has will most likely not be the ones you're used to." + icon_state = "borg_pod_closed" + icon_state_opened = "borg_pod_opened" + density = TRUE + ghost_query_type = /datum/ghost_query/gravekeeper_drone + +/obj/structure/ghost_pod/automatic/gravekeeper_drone/create_occupant(var/mob/M) + density = FALSE + var/mob/living/silicon/robot/gravekeeper/R = new(get_turf(src)) + if(M.mind) + M.mind.transfer_to(R) + // Put this text here before ckey change so that their laws are shown below it, since borg login() shows it. + to_chat(M, "You are a Gravekeeper Drone, activated once again to tend to the restful dead.") + to_chat(M, "Be sure to examine your currently loaded lawset closely. Remember, your \ + definiton of 'your gravesite' is where your pod is.") + R.ckey = M.ckey + visible_message("As \the [src] opens, the eyes of the robot flicker as it is activated.") + R.Namepick() + ..() \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/drone/drone_items.dm b/code/modules/mob/living/silicon/robot/drone/drone_items.dm index 4e7fc7a57e..1f0170733e 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_items.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_items.dm @@ -107,7 +107,6 @@ can_hold = list( /obj/item/seeds, /obj/item/weapon/grown, - /obj/item/stack/material, /obj/item/weapon/material/gravemarker ) diff --git a/code/modules/mob/living/silicon/robot/robot_modules/event.dm b/code/modules/mob/living/silicon/robot/robot_modules/event.dm index e4c0db5bc6..6543559b7d 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/event.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/event.dm @@ -44,7 +44,8 @@ name = "gravekeeper robot module" hide_on_manifest = 1 sprites = list( - "Drone" = "drone-lost" + "Drone" = "drone-gravekeeper", + "Sleek" = "sleek-gravekeeper" ) /obj/item/weapon/robot_module/robot/gravekeeper/New(var/mob/living/silicon/robot/R) @@ -72,6 +73,6 @@ // For really persistent looters src.emag = new /obj/item/weapon/gun/energy/retro/mounted(src) - var/datum/matter_synth/wood = new /datum/matter_synth/wood(2000) + var/datum/matter_synth/wood = new /datum/matter_synth/wood(25000) synths += wood 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 1aebae3246..a47679ab14 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station.dm @@ -791,8 +791,8 @@ var/global/list/robot_modules = list( var/datum/matter_synth/metal = new /datum/matter_synth/metal(25000) var/datum/matter_synth/glass = new /datum/matter_synth/glass(25000) - var/datum/matter_synth/wood = new /datum/matter_synth/wood(2000) - var/datum/matter_synth/plastic = new /datum/matter_synth/plastic(1000) + var/datum/matter_synth/wood = new /datum/matter_synth/wood(25000) + var/datum/matter_synth/plastic = new /datum/matter_synth/plastic(25000) var/datum/matter_synth/wire = new /datum/matter_synth/wire(30) synths += metal synths += glass diff --git a/code/modules/mob/living/silicon/robot/subtypes/gravekeeper.dm b/code/modules/mob/living/silicon/robot/subtypes/gravekeeper.dm index 0dfddd5be4..9cc09b286a 100644 --- a/code/modules/mob/living/silicon/robot/subtypes/gravekeeper.dm +++ b/code/modules/mob/living/silicon/robot/subtypes/gravekeeper.dm @@ -20,4 +20,6 @@ if(!cell) cell = new /obj/item/weapon/cell/high(src) // 15k cell, as recharging stations are a lot more rare on the Surface. + laws = new /datum/ai_laws/gravekeeper() + playsound(loc, 'sound/mecha/nominalsyndi.ogg', 75, 0) \ No newline at end of file diff --git a/icons/mob/robots.dmi b/icons/mob/robots.dmi index cb36f6e3b4..d32d479e3f 100644 Binary files a/icons/mob/robots.dmi and b/icons/mob/robots.dmi differ diff --git a/polaris.dme b/polaris.dme index 3115c8b94b..4d4606b311 100644 --- a/polaris.dme +++ b/polaris.dme @@ -966,7 +966,6 @@ #include "code\game\objects\structures\electricchair.dm" #include "code\game\objects\structures\extinguisher.dm" #include "code\game\objects\structures\flora.dm" -#include "code\game\objects\structures\ghost_pods.dm" #include "code\game\objects\structures\girders.dm" #include "code\game\objects\structures\gravemarker.dm" #include "code\game\objects\structures\grille.dm" @@ -1019,6 +1018,8 @@ #include "code\game\objects\structures\crates_lockers\closets\secure\scientist.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\secure_closets.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\security.dm" +#include "code\game\objects\structures\ghost_pods\ghost_pods.dm" +#include "code\game\objects\structures\ghost_pods\silicon.dm" #include "code\game\objects\structures\stool_bed_chair_nest\alien_nests.dm" #include "code\game\objects\structures\stool_bed_chair_nest\bed.dm" #include "code\game\objects\structures\stool_bed_chair_nest\chairs.dm"