diff --git a/code/modules/xenoarcheaology/effects/cellcharge.dm b/code/modules/xenoarcheaology/effects/cellcharge.dm index 42f64eb8dd..d543ac2411 100644 --- a/code/modules/xenoarcheaology/effects/cellcharge.dm +++ b/code/modules/xenoarcheaology/effects/cellcharge.dm @@ -1,74 +1,59 @@ -//todo /datum/artifact_effect/cellcharge name = "cell charge" effect_type = EFFECT_ELECTRO + effect_color = "#ffee06" var/last_message - effect_color = "#ffee06" -/datum/artifact_effect/cellcharge/DoEffectTouch(var/mob/user) +/datum/artifact_effect/cellcharge/DoEffectTouch(var/mob/living/user) if(user) - if(isrobot(user)) + if (istype(user, /mob/living/silicon/robot)) var/mob/living/silicon/robot/R = user for (var/obj/item/weapon/cell/D in R.contents) D.charge += rand() * 100 + 50 to_chat(R, "SYSTEM ALERT: Large energy boost detected!") - return 1 + /datum/artifact_effect/cellcharge/DoEffectAura() var/atom/holder = get_master_holder() - if(holder) - var/turf/T = get_turf(holder) - for (var/obj/machinery/power/apc/C in GLOB.apcs) - if(T.z != C.z) - continue - if(get_dist(T, C) > 200) - continue - for (var/obj/item/weapon/cell/B in C.contents) - B.charge += 25 - for (var/obj/machinery/power/smes/S in GLOB.smeses) - if(T.z != S.z) - continue - if(get_dist(T, S) > src.effectrange) - continue - S.charge += 25 - for (var/mob/living/silicon/robot/M in silicon_mob_list) - if(T.z != M.z) - continue - if(get_dist(T, M) > 50) - continue - for (var/obj/item/weapon/cell/D in M.contents) - D.charge += 25 - if(world.time - last_message > 200) - to_chat(M, "SYSTEM ALERT: Energy boost detected!") - last_message = world.time - return 1 + if(!holder) + return + var/turf/turf = get_turf(holder) + if(!turf) + return + for (var/obj/machinery/power/apc/apc as anything in GLOB.apcs) + if(get_dist(turf, apc) <= 200) + for (var/obj/item/weapon/cell/cell in apc.contents) + cell.charge += 25 + for (var/obj/machinery/power/smes/smes as anything in GLOB.smeses) + if(get_dist(turf, smes) <= effectrange) + smes.charge += 25 + var/charged_robots + for (var/mob/living/silicon/robot/robot as anything in global.silicon_mob_list) + if(get_dist(turf, robot) < 50) + var/charged_cells + for (var/obj/item/weapon/cell/cell in robot.contents) + cell.charge += 25 + charged_cells = TRUE + if(charged_cells) + to_chat(robot, "SYSTEM ALERT: Energy boost detected!") + charged_robots = TRUE + if(charged_robots) + last_message = world.time + /datum/artifact_effect/cellcharge/DoEffectPulse() var/atom/holder = get_master_holder() if(holder) var/turf/T = get_turf(holder) - for (var/obj/machinery/power/apc/C in GLOB.apcs) - if(T.z != C.z) - continue - if(get_dist(T, C) > 200) - continue + for (var/obj/machinery/power/apc/C in range(200, T)) for (var/obj/item/weapon/cell/B in C.contents) B.charge += rand() * 100 - for (var/obj/machinery/power/smes/S in GLOB.smeses) - if(T.z != S.z) - continue - if(get_dist(T, S) > src.effectrange) - continue + for (var/obj/machinery/power/smes/S in range (src.effectrange,src)) S.charge += 250 - for (var/mob/living/silicon/robot/M in silicon_mob_list) - if(T.z != M.z) - continue - if(get_dist(T, M) > 100) - continue + for (var/mob/living/silicon/robot/M in range(100, T)) for (var/obj/item/weapon/cell/D in M.contents) D.charge += rand() * 100 if(world.time - last_message > 200) to_chat(M, "SYSTEM ALERT: Energy boost detected!") last_message = world.time - return 1