/obj/machinery/syndicatebomb/ninja name = "spider clan bomb" payload = /obj/item/bombcore/ninja /obj/machinery/syndicatebomb/ninja/emp name = "spider clan EMP bomb" payload = /obj/item/bombcore/emp/ninja /obj/machinery/syndicatebomb/ninja/spiders name = "spider bomb" payload = /obj/item/bombcore/badmin/summon/ninja_spiders /obj/item/bombcore/ninja desc = "A powerful secondary explosive of spider clan design and unknown composition, it should be stable under normal conditions..." range_heavy = 3 range_medium = 8 range_light = 15 range_flame = 17 /obj/item/bombcore/emp/ninja light_emp = 24 heavy_emp = 12 /obj/item/bombcore/badmin/summon/ninja_spiders summon_path = /mob/living/basic/giant_spider amt_summon = 12 /obj/item/wormhole_jaunter/ninja_bomb name = "spider clan bomb deployment flare" icon = 'icons/obj/lighting.dmi' desc = "A single-use flare that will bring a high-yield payload to the location it was lit at." icon_state = "flare-contractor" inhand_icon_state = "flare" /// What area should be blow up? var/area/bomb_target /// What kind of bomb is it var/obj/machinery/syndicatebomb/bomb_type = /obj/machinery/syndicatebomb/ninja /obj/item/wormhole_jaunter/ninja_bomb/Initialize(mapload) . = ..() var/list/possible_areas = list( // Rooms /area/station/hallway/primary/aft, /area/station/engineering/atmos, /area/station/public/arcade, /area/station/maintenance/assembly_line, /area/station/public/storage/tools/auxiliary, /area/station/command/office/blueshield, /area/station/supply/storage, /area/station/service/chapel, /area/station/service/chapel/office, /area/station/service/clown, /area/station/legal/courtroom, /area/station/public/toilet, /area/station/engineering/control, /area/station/engineering/controlroom, /area/station/hallway/secondary/exit, /area/holodeck/alphadeck, /area/station/service/hydroponics, /area/station/service/library, /area/station/service/mime, /area/station/supply/miningdock, /area/station/medical/morgue, /area/station/public/storage/office, /area/station/public/pet_store, /area/station/public/storage/tools, /area/station/public/mrchangs, /area/station/science/research, /area/station/security/checkpoint, /area/station/engineering/tech_storage, /area/station/command/teleporter, /area/station/science/storage, /area/station/science/misc_lab, /area/station/science/xenobiology, /area/station/turret_protected/aisat/interior, /area/station/aisat/atmos, /area/station/aisat/hall, /area/station/aisat/service, /area/station/service/bar, /area/station/supply/office, /area/station/medical/chemistry, /area/station/command/office/ce, /area/station/command/office/cmo, /area/station/medical/cloning, /area/station/medical/cryo, /area/station/public/dorms, /area/station/engineering/equipmentstorage, /area/station/engineering/break_room, /area/station/ai_monitored/storage/eva, /area/station/supply/expedition, /area/station/science/genetics, /area/station/engineering/gravitygenerator, /area/station/command/office/hop, /area/station/command/meeting_room, /area/station/service/kitchen, /area/station/science/robotics/chargebay, /area/station/medical/medbay, /area/station/medical/medbay2, /area/station/medical/medbay3, /area/station/medical/reception, /area/station/medical/storage, /area/station/medical/sleeper, /area/station/command/server, /area/station/command/office/ntrep, /area/station/medical/paramedic, /area/station/hallway/primary/port, /area/station/supply/qm, /area/station/command/office/rd, /area/station/science/rnd, /area/station/science/robotics, /area/station/medical/surgery/primary, /area/station/medical/surgery/secondary, /area/station/telecomms/chamber, /area/station/engineering/secure_storage ) while(!bomb_target) var/area/selected_area = pick_n_take(possible_areas) for(var/area/potential in SSmapping.existing_station_areas) if(potential.type != selected_area) continue bomb_target = potential break /obj/item/wormhole_jaunter/ninja_bomb/examine(mob/user) . = ..() if(isAntag(user)) . += SPAN_WARNING("The target bomb location is: [bomb_target.name]") /obj/item/wormhole_jaunter/ninja_bomb/activate(mob/user) if(!turf_check(user)) return var/obj/effect/temp_visual/ninja_bomb/F = new /obj/effect/temp_visual/ninja_bomb(get_turf(src)) user.drop_item() forceMove(F) log_and_message_admins("[user] activated a ninja bomb flare.") addtimer(CALLBACK(src, PROC_REF(spawn_bomb), user), 5 SECONDS) /obj/item/wormhole_jaunter/ninja_bomb/proc/spawn_bomb(mob/user) new /obj/effect/decal/cleanable/ash(get_turf(src)) var/obj/machinery/syndicatebomb/new_bomb = new bomb_type(get_turf(src)) new_bomb.anchored = TRUE new_bomb.activate() var/objectives = user.mind.get_all_objectives() for(var/datum/objective/ninja/bomb_department/bomb_dep in objectives) if(!bomb_dep.completed) to_chat(user, SPAN_NOTICE("Contract complete. Good work - your cut of the pay has been forwarded to your uplink.")) bomb_dep.complete_objective() qdel(src) /obj/item/wormhole_jaunter/ninja_bomb/turf_check(mob/user) var/turf/device_turf = get_turf(user) if(!device_turf) to_chat(user, "You're having difficulties getting the [name] to work.") return FALSE var/area/our_area = get_area(device_turf) if(!istype(our_area, bomb_target)) to_chat(user, "You're having difficulties getting the [name] to work.") return FALSE return TRUE /obj/item/wormhole_jaunter/ninja_bomb/emp bomb_type = /obj/machinery/syndicatebomb/ninja/emp /obj/item/wormhole_jaunter/ninja_bomb/spiders bomb_type = /obj/machinery/syndicatebomb/ninja/spiders /obj/effect/temp_visual/ninja_bomb name = "spider clan bomb deployment flare" layer = BELOW_MOB_LAYER icon = 'icons/obj/lighting.dmi' icon_state = "flare-contractor-on" duration = 5.1 SECONDS /// Sound that plays when activated var/activation_sound = 'sound/goonstation/misc/matchstick_light.ogg' /// Light emitted when activated var/emitted_color = "#1faf2b" /obj/effect/temp_visual/ninja_bomb/Initialize(mapload) . = ..() playsound(loc, activation_sound, 50, TRUE) set_light(8, l_color = emitted_color)