ports some events
This commit is contained in:
@@ -129,6 +129,30 @@
|
||||
hos_gun_list[initial(A.name)] = A
|
||||
return hos_gun_list
|
||||
|
||||
/obj/item/choice_beacon/augments
|
||||
name = "augment beacon"
|
||||
desc = "Summons augmentations."
|
||||
|
||||
/obj/item/choice_beacon/augments/generate_display_names()
|
||||
var/static/list/augment_list
|
||||
if(!augment_list)
|
||||
augment_list = list()
|
||||
var/list/templist = list(
|
||||
/obj/item/organ/cyberimp/brain/anti_drop,
|
||||
/obj/item/organ/cyberimp/arm/toolset,
|
||||
/obj/item/organ/cyberimp/arm/surgery,
|
||||
/obj/item/organ/cyberimp/chest/thrusters,
|
||||
/obj/item/organ/lungs/cybernetic,
|
||||
/obj/item/organ/liver/cybernetic) //cyberimplants range from a nice bonus to fucking broken bullshit so no subtypesof
|
||||
for(var/V in templist)
|
||||
var/atom/A = V
|
||||
augment_list[initial(A.name)] = A
|
||||
return augment_list
|
||||
|
||||
/obj/item/choice_beacon/augments/spawn_option(obj/choice,mob/living/M)
|
||||
new choice(get_turf(M))
|
||||
to_chat(M, "<span class='hear'>You hear something crackle from the beacon for a moment before a voice speaks. \"Please stand by for a message from S.E.L.F. Message as follows: <b>Item request received. Your package has been transported, use the autosurgeon supplied to apply the upgrade.</b> Message ends.\"</span>")
|
||||
|
||||
/obj/item/skub
|
||||
desc = "It's skub."
|
||||
name = "skub"
|
||||
|
||||
@@ -183,3 +183,20 @@
|
||||
|
||||
A.other_pair = B
|
||||
B.other_pair = A
|
||||
|
||||
/obj/item/pinpointer/shuttle
|
||||
name = "fugitive pinpointer"
|
||||
desc = "A handheld tracking device that locates the bounty hunter shuttle for quick escapes."
|
||||
icon_state = "pinpointer_hunter"
|
||||
var/obj/shuttleport
|
||||
|
||||
/obj/item/pinpointer/shuttle/Initialize(mapload)
|
||||
. = ..()
|
||||
shuttleport = SSshuttle.getShuttle("huntership")
|
||||
|
||||
/obj/item/pinpointer/shuttle/scan_for_target()
|
||||
target = shuttleport
|
||||
|
||||
/obj/item/pinpointer/shuttle/Destroy()
|
||||
shuttleport = null
|
||||
. = ..()
|
||||
@@ -0,0 +1,66 @@
|
||||
|
||||
|
||||
/obj/effect/mob_spawn/human/fugitive
|
||||
assignedrole = "Fugitive Hunter"
|
||||
flavour_text = "" //the flavor text will be the backstory argument called on the antagonist's greet, see hunter.dm for details
|
||||
roundstart = FALSE
|
||||
death = FALSE
|
||||
random = TRUE
|
||||
show_flavour = FALSE
|
||||
density = TRUE
|
||||
var/back_story = "error"
|
||||
|
||||
/obj/effect/mob_spawn/human/fugitive/Initialize(mapload)
|
||||
. = ..()
|
||||
notify_ghosts("Hunters are waking up looking for refugees!", source = src, action=NOTIFY_ATTACK, flashwindow = FALSE, ignore_key = POLL_IGNORE_FUGITIVE)
|
||||
|
||||
/obj/effect/mob_spawn/human/fugitive/special(mob/living/new_spawn)
|
||||
var/datum/antagonist/fugitive_hunter/fughunter = new
|
||||
fughunter.backstory = back_story
|
||||
new_spawn.mind.add_antag_datum(fughunter)
|
||||
fughunter.greet()
|
||||
message_admins("[ADMIN_LOOKUPFLW(new_spawn)] has been made into a Fugitive Hunter by an event.")
|
||||
log_game("[key_name(new_spawn)] was spawned as a Fugitive Hunter by an event.")
|
||||
|
||||
/obj/effect/mob_spawn/human/fugitive/spacepol
|
||||
name = "police pod"
|
||||
desc = "A small sleeper typically used to put people to sleep for briefing on the mission."
|
||||
mob_name = "a spacepol officer"
|
||||
flavour_text = "Justice has arrived. I am a member of the Spacepol!"
|
||||
back_story = "space cop"
|
||||
outfit = /datum/outfit/spacepol
|
||||
icon = 'icons/obj/machines/sleeper.dmi'
|
||||
icon_state = "sleeper"
|
||||
|
||||
/obj/effect/mob_spawn/human/fugitive/russian
|
||||
name = "russian pod"
|
||||
flavour_text = "Ay blyat. I am a space-russian smuggler! We were mid-flight when our cargo was beamed off our ship!"
|
||||
back_story = "russian"
|
||||
desc = "A small sleeper typically used to make long distance travel a bit more bearable."
|
||||
mob_name = "russian"
|
||||
outfit = /datum/outfit/russiancorpse/hunter
|
||||
icon = 'icons/obj/machines/sleeper.dmi'
|
||||
icon_state = "sleeper"
|
||||
|
||||
/obj/effect/mob_spawn/human/fugitive/bounty
|
||||
name = "bounty hunter pod"
|
||||
flavour_text = "We got a new bounty on some fugitives, dead or alive."
|
||||
back_story = "bounty hunters"
|
||||
desc = "A small sleeper typically used to make long distance travel a bit more bearable."
|
||||
mob_name = "bounty hunter"
|
||||
icon = 'icons/obj/machines/sleeper.dmi'
|
||||
icon_state = "sleeper"
|
||||
|
||||
/obj/effect/mob_spawn/human/fugitive/bounty/Destroy()
|
||||
var/obj/structure/fluff/empty_sleeper/S = new(drop_location())
|
||||
S.setDir(dir)
|
||||
return ..()
|
||||
|
||||
/obj/effect/mob_spawn/human/fugitive/bounty/armor
|
||||
outfit = /datum/outfit/bountyarmor
|
||||
|
||||
/obj/effect/mob_spawn/human/fugitive/bounty/hook
|
||||
outfit = /datum/outfit/bountyhook
|
||||
|
||||
/obj/effect/mob_spawn/human/fugitive/bounty/synth
|
||||
outfit = /datum/outfit/bountysynth
|
||||
@@ -151,3 +151,74 @@
|
||||
new /mob/living/simple_animal/hostile/construct/proteon/hostile(loc)
|
||||
new /mob/living/simple_animal/hostile/construct/proteon/hostile(loc)
|
||||
QDEL_IN(src, 30)
|
||||
|
||||
//fugitive traps
|
||||
/obj/structure/trap/stun/hunter
|
||||
name = "bounty trap"
|
||||
desc = "A trap that only goes off when a fugitive steps on it, announcing the location and stunning the target. You'd better avoid it."
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "bounty_trap_on"
|
||||
var/obj/item/bountytrap/stored_item
|
||||
var/caught = FALSE
|
||||
|
||||
/obj/structure/trap/stun/hunter/Initialize(mapload)
|
||||
. = ..()
|
||||
time_between_triggers = 10
|
||||
|
||||
/obj/structure/trap/stun/hunter/Crossed(atom/movable/AM)
|
||||
if(isliving(AM))
|
||||
var/mob/living/L = AM
|
||||
if(!L.mind?.has_antag_datum(/datum/antagonist/fugitive))
|
||||
return
|
||||
caught = TRUE
|
||||
. = ..()
|
||||
|
||||
/obj/structure/trap/stun/hunter/flare()
|
||||
..()
|
||||
stored_item.forceMove(get_turf(src))
|
||||
forceMove(stored_item)
|
||||
if(caught)
|
||||
stored_item.announce_fugitive()
|
||||
caught = FALSE
|
||||
|
||||
/obj/item/bountytrap
|
||||
name = "bounty trap"
|
||||
desc = "A trap that only goes off when a fugitive steps on it, announcing the location and stunning the target. It's currently inactive."
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "bounty_trap_off"
|
||||
var/obj/structure/trap/stun/hunter/stored_trap
|
||||
var/obj/item/radio/radio
|
||||
var/datum/effect_system/spark_spread/spark_system
|
||||
|
||||
/obj/item/bountytrap/Initialize(mapload)
|
||||
. = ..()
|
||||
radio = new(src)
|
||||
radio.subspace_transmission = TRUE
|
||||
radio.canhear_range = 0
|
||||
radio.recalculateChannels()
|
||||
spark_system = new
|
||||
spark_system.set_up(4,1,src)
|
||||
spark_system.attach(src)
|
||||
name = "[name] #[rand(1, 999)]"
|
||||
stored_trap = new(src)
|
||||
stored_trap.name = name
|
||||
stored_trap.stored_item = src
|
||||
|
||||
/obj/item/bountytrap/proc/announce_fugitive()
|
||||
spark_system.start()
|
||||
playsound(src, 'sound/machines/ding.ogg', 50, TRUE)
|
||||
radio.talk_into(src, "Fugitive has triggered this trap in the [get_area_name(src)]!", RADIO_CHANNEL_COMMON)
|
||||
|
||||
/obj/item/bountytrap/attack_self(mob/living/user)
|
||||
var/turf/T = get_turf(src)
|
||||
if(!user || !user.transferItemToLoc(src, T))//visibly unequips
|
||||
return
|
||||
to_chat(user, "<span class=notice>You set up [src]. Examine while close to disarm it.</span>")
|
||||
stored_trap.forceMove(T)//moves trap to ground
|
||||
forceMove(stored_trap)//moves item into trap
|
||||
|
||||
/obj/item/bountytrap/Destroy()
|
||||
qdel(stored_trap)
|
||||
QDEL_NULL(radio)
|
||||
QDEL_NULL(spark_system)
|
||||
. = ..()
|
||||
Reference in New Issue
Block a user