// Used to deploy the bacon. /obj/item/supply_beacon name = "inactive supply beacon" icon = 'icons/obj/supplybeacon.dmi' desc = "An inactive, hacked supply beacon stamped with the Tau Ceti Rapid Fabrication logo. Good for one (1) ballistic supply pod shipment." icon_state = "beacon" var/deploy_path = /obj/structure/machinery/power/supply_beacon var/deploy_time = 30 /obj/item/supply_beacon/supermatter name = "inactive supermatter supply beacon" deploy_path = /obj/structure/machinery/power/supply_beacon/supermatter /obj/item/supply_beacon/attack_self(var/mob/user) user.visible_message(SPAN_NOTICE("\The [user] begins setting up \the [src].")) if(!do_after(user, deploy_time, src, DO_REPAIR_CONSTRUCT)) return var/obj/S = new deploy_path(get_turf(user)) user.visible_message(SPAN_NOTICE("\The [user] deploys \the [S].")) user.unEquip(src) qdel(src) /obj/structure/machinery/power/supply_beacon name = "supply beacon" desc = "A bulky moonshot supply beacon. Someone has been messing with the wiring." icon = 'icons/obj/supplybeacon.dmi' icon_state = "beacon" anchored = 0 density = 1 stat = 0 var/target_drop_time var/drop_delay = 450 var/expended var/drop_type /obj/structure/machinery/power/supply_beacon/New() ..() if(!drop_type) drop_type = pick(supply_drop_random_loot_types()) /obj/structure/machinery/power/supply_beacon/supermatter name = "supermatter supply beacon" drop_type = "supermatter" /obj/structure/machinery/power/supply_beacon/attackby(obj/item/attacking_item, mob/user) if(!use_power && attacking_item.tool_behaviour == TOOL_WRENCH) if(!anchored && !connect_to_network()) to_chat(user, SPAN_WARNING("This device must be placed over an exposed cable.")) return TRUE anchored = !anchored user.visible_message(SPAN_NOTICE("\The [user] [anchored ? "secures" : "unsecures"] \the [src].")) attacking_item.play_tool_sound(get_turf(src), 50) return TRUE return ..() /obj/structure/machinery/power/supply_beacon/attack_hand(var/mob/user) if(expended) update_use_power(POWER_USE_OFF) to_chat(user, SPAN_WARNING("\The [src] has used up its charge.")) return if(anchored) return use_power ? deactivate(user) : activate(user) else to_chat(user, SPAN_WARNING("You need to secure the beacon with a wrench first!")) return /obj/structure/machinery/power/supply_beacon/attack_ai(var/mob/user) if(user.Adjacent(src)) attack_hand(user) /obj/structure/machinery/power/supply_beacon/proc/activate(var/mob/user) if(expended) return if(POWER_SURPLUS(src) < 500) if(user) to_chat(user, SPAN_NOTICE("The connected wire doesn't have enough current.")) return set_light(3, 3, "#00CCAA") icon_state = "beacon_active" if(user) to_chat(user, SPAN_NOTICE("You activate the beacon. The supply drop will be dispatched soon.")) /obj/structure/machinery/power/supply_beacon/proc/deactivate(var/mob/user, var/permanent) if(permanent) expended = 1 icon_state = "beacon_depleted" else icon_state = "beacon" set_light(0) update_use_power(POWER_USE_OFF) target_drop_time = null if(user) to_chat(user, SPAN_NOTICE("You deactivate the beacon.")) /obj/structure/machinery/power/supply_beacon/Destroy() if(use_power) deactivate() return ..() /obj/structure/machinery/power/supply_beacon/process() if(expended) return PROCESS_KILL if(!use_power) return var/can_draw = (POWER_DRAW(src, 500) >= 500) DRAW_POWER(src, can_draw) if(!can_draw) deactivate() return if(!target_drop_time) target_drop_time = world.time + drop_delay else if(world.time >= target_drop_time) deactivate(permanent = 1) var/drop_x = src.x-2 var/drop_y = src.y-2 var/drop_z = src.z command_announcement.Announce("Tau Ceti Rapid Fabrication priority supply request #[rand(1000,9999)]-[rand(100,999)] received. Shipment dispatched via ballistic supply pod for immediate delivery. Have a nice day.", "Thank You For Your Patronage") addtimer(CALLBACK(src, PROC_REF(make_supply_beacon), drop_x, drop_y, drop_z), rand(10, 30) SECONDS) /obj/structure/machinery/power/supply_beacon/proc/make_supply_beacon(drop_x, drop_y, drop_z) new /datum/random_map/droppod/supply(null, drop_x, drop_y, drop_z, supplied_drop = drop_type) // Splat.