mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
Makes IAA good (Spawn more IAA, No more TC, Anti-tampering dust implant) (#19327)
Internal Affairs Agents now drop a special item on death. To get your kill reward as a syndicate, you must pick this item up and use it. Doing this spawns another Internal Affairs Agent. Internal Affairs kill reward is now a random syndicate item instead of 5TC Internal Affairs dusting implant now activates automatically if tampered with Internal Affairs dusting implant is now automatically removed (safely) when the antag status is removed
This commit is contained in:
@@ -45,11 +45,6 @@
|
||||
hijack_objective.owner = owner
|
||||
add_objective(hijack_objective)
|
||||
|
||||
if(uplink_holder && owner.current && ishuman(owner.current))
|
||||
var/datum/component/uplink/uplink = uplink_holder.GetComponent(/datum/component/uplink)
|
||||
uplink.telecrystals += 5
|
||||
to_chat(owner, span_notice("You have been given 5 TC as a reward for completing your objective!"))
|
||||
|
||||
owner.announce_objectives()
|
||||
|
||||
/datum/game_mode/traitor/internal_affairs/add_latejoin_traitor(datum/mind/character)
|
||||
|
||||
@@ -39,7 +39,91 @@
|
||||
|
||||
/obj/item/implant/dusting/on_mob_death(mob/living/L, gibbed)
|
||||
activate("death")
|
||||
|
||||
|
||||
/obj/item/implant/dusting/emp_act()
|
||||
return
|
||||
|
||||
|
||||
/obj/item/implant/dusting/iaa
|
||||
var/defused = FALSE // For safe removal, admin-only
|
||||
|
||||
/obj/item/implant/dusting/iaa/removed(mob/living/source, silent, special)
|
||||
if(!defused)
|
||||
activate("tampering")
|
||||
else
|
||||
. = ..()
|
||||
|
||||
/obj/item/implant/dusting/iaa/activate(cause)
|
||||
. = ..()
|
||||
var/turf/my_turf = get_turf(src)
|
||||
var/obj/item/iaa_reward/drop = new(my_turf)
|
||||
if(imp_in)
|
||||
drop.desc = "A syndicate 'dog tag' with an inscription that reads [imp_in.real_name]. Seems like it would be a bad idea to let someone evil press this."
|
||||
|
||||
/obj/item/iaa_reward
|
||||
name = "syndicate button"
|
||||
desc = "A syndicate 'dog tag' with an unreadable inscription. Seems like it would be a bad idea to let someone evil press this."
|
||||
icon = 'icons/obj/assemblies.dmi'
|
||||
icon_state = "bigred"
|
||||
item_state = "electronic"
|
||||
resistance_flags = INDESTRUCTIBLE // no cremation cheese!
|
||||
|
||||
/obj/item/iaa_reward/attack_self(mob/user)
|
||||
. = ..()
|
||||
if(is_syndicate(user))
|
||||
// Reward
|
||||
var/list/item_list = list( // Contract kit random items
|
||||
/obj/item/storage/backpack/duffelbag/syndie/x4,
|
||||
/obj/item/storage/box/syndie_kit/throwing_weapons,
|
||||
/obj/item/gun/syringe/syndicate,
|
||||
/obj/item/pen/edagger,
|
||||
/obj/item/pen/sleepy,
|
||||
/obj/item/flashlight/emp,
|
||||
/obj/item/book/granter/crafting_recipe/weapons,
|
||||
/obj/item/clothing/shoes/chameleon/noslip/syndicate,
|
||||
/obj/item/storage/firstaid/tactical,
|
||||
/obj/item/clothing/shoes/airshoes,
|
||||
/obj/item/clothing/glasses/thermal/syndi,
|
||||
/obj/item/camera_bug,
|
||||
/obj/item/storage/box/syndie_kit/imp_radio,
|
||||
/obj/item/storage/box/syndie_kit/imp_uplink,
|
||||
/obj/item/clothing/gloves/krav_maga/combatglovesplus,
|
||||
// /obj/item/gun/ballistic/automatic/c20r/toy/unrestricted/riot,
|
||||
/obj/item/reagent_containers/syringe/stimulants,
|
||||
/obj/item/storage/box/syndie_kit/imp_freedom,
|
||||
/obj/item/storage/belt/chameleon/syndicate,
|
||||
// From here is extra items
|
||||
/obj/item/storage/belt/military/shadowcloak,
|
||||
/obj/item/grenade/syndieminibomb/concussion/frag,
|
||||
/obj/item/card/id/syndicate,
|
||||
/obj/item/storage/pill_bottle/gummies/omnizine
|
||||
)
|
||||
// Pick one item from three random
|
||||
item_list = shuffle(item_list)
|
||||
var/list/icons_available = list()
|
||||
var/obj/item/first_choice = item_list[1]
|
||||
var/obj/item/second_choice = item_list[2]
|
||||
var/obj/item/third_choice = item_list[3]
|
||||
icons_available += list(initial(first_choice.name) = image(icon = initial(first_choice.icon), icon_state = initial(first_choice.icon_state)))
|
||||
icons_available += list(initial(second_choice.name) = image(icon = initial(second_choice.icon), icon_state = initial(second_choice.icon_state)))
|
||||
icons_available += list(initial(third_choice.name) = image(icon = initial(third_choice.icon), icon_state = initial(third_choice.icon_state)))
|
||||
var/selection = show_radial_menu(user, src, icons_available, radius = 38, require_near = TRUE)
|
||||
if(!selection || selection == initial(first_choice.name))
|
||||
selection = first_choice
|
||||
else if(selection == initial(second_choice.name))
|
||||
selection = second_choice
|
||||
else if(selection == initial(third_choice.name))
|
||||
selection = third_choice
|
||||
var/hand_index = user.get_held_index_of_item(src)
|
||||
user.dropItemToGround(src, TRUE, TRUE)
|
||||
var/obj/item/reward = new selection
|
||||
to_chat(user, span_notice("\The [src] transforms into \a [reward]!"))
|
||||
if(!user.put_in_hand(reward, hand_index))
|
||||
reward.forceMove(get_turf(user))
|
||||
// Spawn new IAA
|
||||
if(istype(SSticker.mode, /datum/game_mode/traitor/internal_affairs))
|
||||
var/datum/game_mode/traitor/internal_affairs/iaa_mode = SSticker.mode
|
||||
if(iaa_mode.create_new_traitor())
|
||||
to_chat(user, span_warning("You feel like someone is watching you... Keep on your guard."))
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(user, span_notice("\The [src] doesn't seem to do anything."))
|
||||
|
||||
@@ -165,7 +165,7 @@
|
||||
item = /obj/item/book/granter/martial/worldbreaker
|
||||
manufacturer = /datum/corporation/traitor/vahlen
|
||||
restricted_species = list("preternis")
|
||||
|
||||
|
||||
/datum/uplink_item/race_restricted/explosive_fist_art
|
||||
name = "Burned scroll"
|
||||
desc = "An ancient scroll, containing a guide to an ancient plasmamen martial art."
|
||||
|
||||
Reference in New Issue
Block a user