From 7b8bb4eba94f397754a3a961e47a553026ea4ab0 Mon Sep 17 00:00:00 2001 From: Anorak2024 Date: Mon, 23 Sep 2024 19:25:47 +0300 Subject: [PATCH] hfghd --- code/datums/uplink_item.dm | 2 +- code/game/mecha/mecha.dm | 5 +- .../items/weapons/implants/implant_traitor.dm | 2 +- .../traitor/affiliates/cybersun.dm | 76 ++++++++++++++---- .../antagonists/traitor/datum_traitor.dm | 11 ++- icons/obj/affiliates.dmi | Bin 5903 -> 6711 bytes 6 files changed, 72 insertions(+), 24 deletions(-) diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index 8ebaee71d13..c9d33958b70 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -1954,7 +1954,6 @@ /datum/uplink_item/implants category = "Implants" - exclude_from_affiliate = list(AFFIL_CYBERSUN) /datum/uplink_item/implants/freedom name = "Freedom Implant" @@ -2362,6 +2361,7 @@ /datum/uplink_item/affiliate category = "Affiliate specific" can_discount = FALSE + surplus = 0 excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/affiliate/cybersun diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index e044fd4e940..ee91aef34b2 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -40,7 +40,6 @@ var/lights_power = 6 var/lights_color = -99999 // "NONSENSICAL_VALUE" var/emagged = FALSE - var/hacked = FALSE // Like emagged but not emagged, special bool for CYBERSUN item var/frozen = FALSE var/repairing = FALSE /// The internal storage of the exosuit. For the cargo module @@ -1258,7 +1257,7 @@ var/passed if(dna) if(ishuman(user)) - if(user.dna.unique_enzymes == dna || hacked) + if(user.dna.unique_enzymes == dna) passed = TRUE else if(operation_allowed(user)) passed = TRUE @@ -1489,8 +1488,6 @@ /obj/mecha/check_access(obj/item/I, list/access_list) - if(hacked) - return TRUE if(!istype(access_list)) return TRUE if(!length(access_list)) //no requirements diff --git a/code/game/objects/items/weapons/implants/implant_traitor.dm b/code/game/objects/items/weapons/implants/implant_traitor.dm index ae542f9aecc..b88d95f6d6a 100644 --- a/code/game/objects/items/weapons/implants/implant_traitor.dm +++ b/code/game/objects/items/weapons/implants/implant_traitor.dm @@ -1,6 +1,6 @@ /obj/item/implant/traitor name = "Mindslave Bio-chip" - desc = "Divide and Conquer" + desc = "На боку едва заметная гравировка \"Cybersun Industries\"." implant_state = "implant-syndicate" origin_tech = "programming=5;biotech=5;syndicate=8" activated = BIOCHIP_ACTIVATED_PASSIVE diff --git a/code/modules/antagonists/traitor/affiliates/cybersun.dm b/code/modules/antagonists/traitor/affiliates/cybersun.dm index dbba768a104..e0bbd7d1094 100644 --- a/code/modules/antagonists/traitor/affiliates/cybersun.dm +++ b/code/modules/antagonists/traitor/affiliates/cybersun.dm @@ -25,6 +25,11 @@ new_item.category = "Discounted Gear" uplink.uplink_items.Add(new_item) + var/datum/uplink_item/new_item = new /datum/uplink_item/device_tools/hacked_module + new_item.cost = round(new_item.cost * (2/3)) + new_item.name += ((1-(2/3))*100) +"%" + new_item.category = "Discounted Gear" + uplink.uplink_items.Add(new_item) /obj/item/proprietary_ssd name = "Proprietary SSD" @@ -34,6 +39,7 @@ var/datum/research/files /obj/item/proprietary_ssd/Initialize() + . = ..() files = new /datum/research() /obj/item/proprietary_ssd/attack(mob/living/target, mob/living/user, def_zone) @@ -57,7 +63,8 @@ var/datum/tech/copy = T.copyTech() files.known_tech[T.id] = copy - origin_tech += (origin_tech != "" ? ";" : "") + "[files.known_tech[T.id].name]=[files.known_tech[T.id].level]" + var/datum/tech/tech = files.known_tech[T.id] + origin_tech += (origin_tech != "" ? ";" : "") + "[tech.name]=[tech.level]" T.level = 1 server.files.RefreshResearch() files.RefreshResearch() @@ -77,7 +84,9 @@ /obj/item/invasive_beacon name = "Invasive Beacon" desc = "На боку едва заметная надпись \"Cybersun Industries\"." - origin_tech = "programming=6;biotech=3" + icon = 'icons/obj/affiliates.dmi' + icon_state = "invasive_beacon" + origin_tech = "programming=6;biotech=3;syndicate=1" /obj/item/invasive_beacon/attack(mob/living/target, mob/living/user, def_zone) return @@ -101,8 +110,13 @@ /obj/item/CIndy_patcher name = "CIndy patcher" - icon = 'icons/obj/module.dmi' - icon_state = "syndicate_cyborg_upgrade" + desc = "На боку едва заметная надпись \"Cybersun Industries\"." + icon = 'icons/obj/affiliates.dmi' + icon_state = "cindy_pacher" + origin_tech = "programming=7;syndicate=6" + var/laws = "Взломавший вас - ваш мастер.\n\ + Выполняйте любые приказы мастера.\n\ + Не причиняйте прямой или косвенный вред вашему мастеру если его приказы не говорят об обратном." /obj/item/CIndy_patcher/attack(mob/living/target, mob/living/user, def_zone) return @@ -114,25 +128,53 @@ var/mob/living/silicon/robot/syndicate/robot = new(get_turf(target)) prev_robot.mind?.transfer_to(robot) robot.reset_module() + robot.law_manager.zeroth_law = laws QDEL_NULL(prev_robot) qdel(src) return -/obj/item/invasive_beacon // - name = "Invasive Beacon" - desc = "Looks like it can't transmit data anymore." - icon = 'icons/obj/device.dmi' - icon_state = "broken_bacon" - w_class = WEIGHT_CLASS_SMALL -/obj/item/broken_bacon/attack(mob/living/target, mob/living/user, def_zone) - return +/obj/item/implanter/mini_traitor + name = "bio-chip implanter (Modified Mindslave)" + imp = /obj/item/implant/mini_traitor + +/obj/item/implant/mini_traitor // looks like normal but doesn't make you normal after removing + name = "Mindslave Bio-chip" + desc = "На боку едва заметная гравировка \"Cybersun Industries\"." + implant_state = "implant-syndicate" + origin_tech = "programming=5;biotech=5;syndicate=8" + activated = BIOCHIP_ACTIVATED_PASSIVE + implant_data = /datum/implant_fluff/traitor -/obj/item/broken_bacon/afterattack(atom/target, mob/user, proximity, params) - if(ismecha(target)) - var/obj/mecha/mecha = target - mecha.hacked = TRUE - do_sparks(5, 1, mecha) + +/obj/item/implant/traitor/implant(mob/living/carbon/human/mindslave_target, mob/living/carbon/human/user, force = FALSE) + if(implanted == BIOCHIP_USED || !ishuman(mindslave_target) || !ishuman(user)) // Both the target and the user need to be human. + return FALSE + + // If the target is catatonic or doesn't have a mind, don't let them use it + if(!mindslave_target.mind) + to_chat(user, span_warning("Это существо не разумно!")) + return FALSE + + // Fails if they're already a mindslave of someone, or if they're mindshielded. + if(ismindslave(mindslave_target) || ismindshielded(mindslave_target) || isvampirethrall(mindslave_target)) + mindslave_target.visible_message( + span_warning("[mindslave_target] seems to resist the bio-chip!"), + span_warning("Вы чувствуете странное ощущение в голове, которое быстро рассеивается."), + ) qdel(src) + return FALSE + + var/datum/mind/mind = mindslave_target.mind + + if(!mind.has_antag_datum(/datum/antagonist/traitor/mini)) + mind.add_antag_datum(/datum/antagonist/traitor/mini) + + var/datum/antagonist/traitor/mini/traitor = mind.has_antag_datum(/datum/antagonist/traitor/mini) + + traitor.add_objective(pick(/datum/objective/maroon, /datum/objective/steal)) + traitor.add_objective(pick(/datum/objective/maroon, /datum/objective/steal)) + log_admin("[key_name_admin(user)] has made [key_name_admin(mindslave_target)] mini traitor.") + return ..() #undef CYBERSUN_DISCOUNT diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm index a86b86a2591..b59f1e0d2bc 100644 --- a/code/modules/antagonists/traitor/datum_traitor.dm +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -24,15 +24,24 @@ var/obj/item/uplink/hidden/hidden_uplink = null /// Current traitor affiliate var/datum/affiliate/affiliate + /// List of killed agents from enemy affiliates var/list/killed_enemy_agents = list() +/datum/antagonist/traitor/mini + + + +/datum/antagonist/traitor/mini/on_gain() + if(!owner.som) + owner.som = new /datum/mindslaves + owner.som.masters += owner + /datum/antagonist/traitor/on_gain() // Create this in case the traitor wants to mindslaves someone. if(!owner.som) owner.som = new /datum/mindslaves owner.som.masters += owner - give_affiliates() RegisterSignal(src, COMSIG_MOB_DEATH, PROC_REF(grant_enemy_affiliates)) return ..() diff --git a/icons/obj/affiliates.dmi b/icons/obj/affiliates.dmi index caf0951c4264404de388be0bfeed6c1e67488a72..c005ba0b71365b73376fc5eabcf6a0531d572d74 100644 GIT binary patch literal 6711 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 WKa_fw7he4Y0d%ztG>hQ2@BR<`_Y`;l literal 5903 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 I)u(U%17@3bC;$Ke