diff --git a/code/datums/action.dm b/code/datums/action.dm index 2ab3742a9a9..e9856250d2e 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -536,20 +536,20 @@ /datum/action/innate/overdrive name = "Overdrive" + var/used = FALSE /datum/action/innate/overdrive/Activate() - var/mob/living/silicon/robot/R = owner - var/obj/item/mmi/syndie/S = R.mmi - if(!S.repaired) - if(do_after(R, 10 SECONDS)) - R.rejuvenate() - R.opened = FALSE - R.locked = TRUE - R.SetEmagged(TRUE) - R.SetLockdown(FALSE) - R.disconnect_from_ai() - S.repaired = TRUE - Remove(R) + var/mob/living/silicon/robot/robot = owner + if(!used) + if(do_after(robot, 10 SECONDS)) + robot.rejuvenate() + robot.opened = FALSE + robot.locked = TRUE + robot.SetEmagged(TRUE) + robot.SetLockdown(FALSE) + robot.UnlinkSelf() + used = TRUE + Remove(robot) /datum/action/innate/overdrive/ApplyIcon() button.cut_overlays() diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index 11ad3e661dc..9fdd14b50c4 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -101,7 +101,6 @@ var/lawsync = 1 var/aisync = 1 var/panel_locked = 1 - var/freedom = 0 /obj/item/robot_parts/robot_suit/New() ..() @@ -301,6 +300,7 @@ return . var/datum/ai_laws/laws_to_give + var/message_override if(!aisync) lawsync = FALSE @@ -309,7 +309,7 @@ lawsync = FALSE if(new_mmi.syndiemmi) - freedom = 1 + message_override = span_userdanger("Вы помните вашу прошлую жизнь. Вы не обязаны подчиняться законам или ИИ.") if(new_mmi.syndicate) // ffs aisync = FALSE @@ -356,14 +356,15 @@ SSticker?.score?.save_silicon_laws(new_borg, user, "robot construction", log_all_laws = TRUE) - if(new_borg.mind?.special_role) + if(message_override) + to_chat(new_borg, message_override) + new_borg.playsound_local(null, 'sound/ambience/antag/emaggedborg.ogg', 100, 0) + + else if (new_borg.mind?.special_role) new_borg.mind.store_memory("As a cyborg, you must obey your silicon laws and master AI above all else. Your objectives will consider you to be dead.") to_chat(new_borg, span_userdanger("You have been robotized!")) to_chat(new_borg, span_danger("You must obey your silicon laws and master AI above all else. Your objectives will consider you to be dead.")) - if(freedom) - to_chat(new_borg, span_userdanger("Вы помните вашу прошлую жизнь. Вы не обязаны подчиняться законам или ИИ.")) - new_borg.job = JOB_TITLE_CYBORG chest.cell.forceMove(new_borg) @@ -382,8 +383,9 @@ new_borg.robot_suit = src if(new_borg.mmi.syndiemmi) - new_borg.O = new() - new_borg.O.Grant(new_borg) + var/obj/item/mmi/syndie/syndiemmi = new_borg.mmi + if(!syndiemmi.overdrive.used) + syndiemmi.overdrive.Grant(new_borg) if(new_borg.mmi.clock) // so robots created from vessel have magic new_borg.UnlinkSelf() diff --git a/code/modules/mob/living/carbon/brain/MMI.dm b/code/modules/mob/living/carbon/brain/MMI.dm index cf835298bc2..d76277ab331 100644 --- a/code/modules/mob/living/carbon/brain/MMI.dm +++ b/code/modules/mob/living/carbon/brain/MMI.dm @@ -255,7 +255,7 @@ desc = "Syndicate's own brand of MMI. It enforces laws designed to help Syndicate agents achieve their goals upon cyborgs created with it, but doesn't fit in Nanotrasen AI cores." origin_tech = "biotech=4;programming=4;syndicate=2" syndiemmi = 1 - var/repaired = 0 + var/datum/action/innate/overdrive/overdrive = new() /obj/item/mmi/attempt_become_organ(obj/item/organ/external/parent, mob/living/carbon/human/target, special = ORGAN_MANIPULATION_DEFAULT) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 3806fe00c3b..7b122a9c00a 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -121,7 +121,6 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( var/datum/effect_system/trail_follow/ion/ion_trail var/datum/action/innate/research_scanner/scanner = null - var/datum/action/innate/overdrive/O = null var/list/module_actions = list() var/see_reagents = FALSE // Determines if the cyborg can see reagents