Infiltrator Suit Rework: MODsuit edition (#70303)

* Reconfigures the Infiltrator armor set into the Infiltrator modsuit. Comes with a brain agony demoralizer device, and makes it literally impossible to examine you.
This commit is contained in:
necromanceranne
2022-10-08 22:05:07 +00:00
committed by GitHub
parent 80c09c7cc5
commit a97c68a6df
20 changed files with 184 additions and 123 deletions
@@ -150,3 +150,31 @@
mood_change = -3
timeout = 2 MINUTES
hidden = TRUE
/datum/demoralise_moods/module
mood_category = "module"
antag_notification = "I feel oddly refreshed."
antag_mood = /datum/mood_event/traitor_module_antag
crew_notification = "My head hurts. It feels like something is driving nails into my brain!"
crew_mood = /datum/mood_event/traitor_module_crew
authority_notification = "My heads beginning to spin. The enemy is at the gate. I'm all alone..."
authority_mood = /datum/mood_event/traitor_module_auth
reading_requirements = (READING_CHECK_LIGHT)
/datum/mood_event/traitor_module_antag
description = "I think I'll cause problems on purpose."
mood_change = 1
timeout = 2 MINUTES
hidden = TRUE
/datum/mood_event/traitor_module_crew
description = "They're on the station! I know it! They're going to get me!"
mood_change = -4
timeout = 2 MINUTES
hidden = TRUE
/datum/mood_event/traitor_module_auth
description = "Nobody on this station is on my side, and the enemy could be anyone! I have to take more drastic measures..."
mood_change = -5
timeout = 2 MINUTES
hidden = TRUE
-11
View File
@@ -247,17 +247,6 @@
greyscale_colors = "#99eeff"
clothing_traits = list(TRAIT_QUICKER_CARRY, TRAIT_FASTMED)
/obj/item/clothing/gloves/color/infiltrator
name = "infiltrator gloves"
desc = "Specialized tactical gloves for carrying people around. Has tactical rubber grips for tactical ease of kidnapping. Tactically."
icon_state = "infiltrator"
inhand_icon_state = null
greyscale_colors = null
siemens_coefficient = 0
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 70, FIRE = 0, ACID = 0)
clothing_traits = list(TRAIT_QUICKER_CARRY)
resistance_flags = FIRE_PROOF | ACID_PROOF
/obj/item/clothing/gloves/color/latex/engineering
name = "tinker's gloves"
desc = "Overdesigned engineering gloves that have automated construction subrutines dialed in, allowing for faster construction while worn."
-12
View File
@@ -349,18 +349,6 @@
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
armor = list(MELEE = 25, BULLET = 20, LASER = 20, ENERGY = 30, BOMB = 20, BIO = 50, FIRE = -10, ACID = 50, WOUND = 5)
/obj/item/clothing/head/helmet/infiltrator
name = "infiltrator helmet"
desc = "The galaxy isn't big enough for the two of us."
icon_state = "infiltrator"
inhand_icon_state = "infiltrator_helmet"
armor = list(MELEE = 40, BULLET = 40, LASER = 30, ENERGY = 40, BOMB = 70, BIO = 0, FIRE = 100, ACID = 100)
resistance_flags = FIRE_PROOF | ACID_PROOF
flash_protect = FLASH_PROTECTION_WELDER
flags_inv = HIDEHAIR|HIDEFACIALHAIR|HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDESNOUT
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH | PEPPERPROOF
strip_delay = 80
/obj/item/clothing/head/helmet/elder_atmosian
name = "\improper Elder Atmosian Helmet"
desc = "A superb helmet made with the toughest and rarest materials available to man."
-32
View File
@@ -11,38 +11,6 @@
/obj/item/clothing/mask/balaclava/attack_self(mob/user)
adjustmask(user)
/obj/item/clothing/mask/infiltrator
name = "infiltrator balaclava"
desc = "It makes you feel safe in your anonymity, but for a stealth outfit you sure do look obvious that you're up to no good. It seems to have a built in heads-up display."
icon_state = "syndicate_balaclava"
inhand_icon_state = "balaclava"
clothing_flags = MASKINTERNALS
flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
visor_flags_inv = HIDEFACE|HIDEFACIALHAIR|HIDESNOUT
w_class = WEIGHT_CLASS_SMALL
armor = list(MELEE = 10, BULLET = 5, LASER = 5,ENERGY = 5, BOMB = 0, BIO = 50, FIRE = 100, ACID = 40)
resistance_flags = FIRE_PROOF | ACID_PROOF
var/voice_unknown = FALSE ///This makes it so that your name shows up as unknown when wearing the mask.
/obj/item/clothing/mask/infiltrator/equipped(mob/living/carbon/human/user, slot)
. = ..()
if(!(slot & ITEM_SLOT_MASK))
return
to_chat(user, "You roll the balaclava over your face, and a data display appears before your eyes.")
ADD_TRAIT(user, TRAIT_DIAGNOSTIC_HUD, MASK_TRAIT)
var/datum/atom_hud/diag_hud = GLOB.huds[DATA_HUD_DIAGNOSTIC_BASIC]
diag_hud.show_to(user)
voice_unknown = TRUE
/obj/item/clothing/mask/infiltrator/dropped(mob/living/carbon/human/user)
to_chat(user, "You pull off the balaclava, and the mask's internal hud system switches off quietly.")
REMOVE_TRAIT(user, TRAIT_DIAGNOSTIC_HUD, MASK_TRAIT)
var/datum/atom_hud/diag_hud = GLOB.huds[DATA_HUD_DIAGNOSTIC_BASIC]
diag_hud.hide_from(user)
voice_unknown = FALSE
return ..()
/obj/item/clothing/mask/luchador
name = "Luchador Mask"
desc = "Worn by robust fighters, flying high to defeat their foes!"
-9
View File
@@ -13,15 +13,6 @@
create_storage(type = /datum/storage/pockets/shoes)
/obj/item/clothing/shoes/combat/sneakboots
name = "sneakboots"
desc = "These boots have special noise cancelling soles. Perfect for stealth, if it wasn't for the color scheme."
icon_state = "sneakboots"
inhand_icon_state = null
w_class = WEIGHT_CLASS_SMALL
resistance_flags = FIRE_PROOF | ACID_PROOF
clothing_traits = list(TRAIT_SILENT_FOOTSTEPS)
/obj/item/clothing/shoes/combat/swat //overpowered boots for death squads
name = "\improper SWAT boots"
desc = "High speed, no drag combat boots."
-9
View File
@@ -231,15 +231,6 @@
. = ..()
allowed = GLOB.detective_vest_allowed
/obj/item/clothing/suit/armor/vest/infiltrator
name = "infiltrator vest"
desc = "This vest appears to be made of of highly flexible materials that absorb impacts with ease."
icon_state = "infiltrator"
inhand_icon_state = null
armor = list(MELEE = 40, BULLET = 40, LASER = 30, ENERGY = 40, BOMB = 70, BIO = 0, FIRE = 100, ACID = 100)
resistance_flags = FIRE_PROOF | ACID_PROOF
strip_delay = 80
/obj/item/clothing/suit/armor/swat
name = "MK.I SWAT Suit"
desc = "A tactical suit first developed in a joint effort by the defunct IS-ERI and Nanotrasen in 2321 for military operations. It has a minor slowdown, but offers decent protection."
@@ -8,14 +8,21 @@
var/t_is = p_are()
var/t_es = p_es()
var/obscure_name
var/obscure_examine
if(isliving(user))
var/mob/living/L = user
if(HAS_TRAIT(L, TRAIT_PROSOPAGNOSIA) || HAS_TRAIT(L, TRAIT_INVISIBLE_MAN))
obscure_name = TRUE
if(HAS_TRAIT(src, TRAIT_UNKNOWN))
obscure_name = TRUE
obscure_examine = TRUE
. = list("<span class='info'>This is <EM>[!obscure_name ? name : "Unknown"]</EM>!")
if(obscure_examine)
return list("<span class='warning'>You're struggling to make out any details...")
var/obscured = check_obscured_slots()
//uniform
@@ -9,6 +9,8 @@
//Useful when player do something with computers
/mob/living/carbon/human/proc/get_assignment(if_no_id = "No id", if_no_job = "No job", hand_first = TRUE)
var/obj/item/card/id/id = get_idcard(hand_first)
if(HAS_TRAIT(src, TRAIT_UNKNOWN))
return if_no_id
if(id)
. = id.assignment
else
@@ -24,6 +26,8 @@
//Useful when player do something with computers
/mob/living/carbon/human/proc/get_authentification_name(if_no_id = "Unknown")
var/obj/item/card/id/id = get_idcard(FALSE)
if(HAS_TRAIT(src, TRAIT_UNKNOWN))
return if_no_id
if(id)
return id.registered_name
var/obj/item/modular_computer/pda = wear_id
@@ -35,6 +39,8 @@
/mob/living/carbon/human/get_visible_name()
var/face_name = get_face_name("")
var/id_name = get_id_name("")
if(HAS_TRAIT(src, TRAIT_UNKNOWN))
return "Unknown"
if(name_override)
return name_override
if(face_name)
@@ -47,6 +53,8 @@
//Returns "Unknown" if facially disfigured and real_name if not. Useful for setting name when Fluacided or when updating a human's name variable
/mob/living/carbon/human/proc/get_face_name(if_no_face="Unknown")
if(HAS_TRAIT(src, TRAIT_UNKNOWN))
return if_no_face //We're Unknown, no face information for you
if( wear_mask && (wear_mask.flags_inv&HIDEFACE) ) //Wearing a mask which hides our face, use id-name if possible
return if_no_face
if( head && (head.flags_inv&HIDEFACE) )
@@ -62,6 +70,8 @@
var/obj/item/storage/wallet/wallet = wear_id
var/obj/item/modular_computer/tablet/pda/pda = wear_id
var/obj/item/card/id/id = wear_id
if(HAS_TRAIT(src, TRAIT_UNKNOWN))
. = if_no_id //You get NOTHING, no id name, good day sir
if(istype(wallet))
id = wallet.front_id
if(istype(id))
@@ -10,6 +10,9 @@
return ..()
/mob/living/carbon/human/GetVoice()
if(HAS_TRAIT(src, TRAIT_UNKNOWN))
return ("Unknown")
if(istype(wear_mask, /obj/item/clothing/mask/chameleon))
var/obj/item/clothing/mask/chameleon/V = wear_mask
if(V.voice_change && wear_id)
@@ -20,12 +23,7 @@
return real_name
else
return real_name
if(istype(wear_mask, /obj/item/clothing/mask/infiltrator))
var/obj/item/clothing/mask/infiltrator/V = wear_mask
if(V.voice_unknown)
return ("Unknown")
else
return real_name
if(mind)
var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling)
if(changeling?.mimicing)
+55
View File
@@ -928,6 +928,61 @@
),
)
/datum/mod_theme/infiltrator
name = "infiltrator"
desc = "A specialized infiltration suit, developed by the Roseus Galactic Actors Guild to strike fear and awe into the hearts of the public."
extended_desc = "Several questions have been raised over the years in regards to the clandestine Infiltrator modular suit. \
Why is the suit blood red despite being a sneaking suit? Why did a movie company of all things develop a stealth suit? \
The simplest answer is that Roseus Galactic hire more than a few eccentric individuals who know more about \
visual aesthetics and prop design than they do functional operative camouflage. But the true reason goes deeper. \
The visual appearance of the suit exemplifies brazen displays of power, not true stealth. However, the suit's inbuilt stealth mechanisms\
prevent anyone from fully recognizing the occupant, only the suit, creating perfect anonymity. This visual transformation is \
backed by inbuilt psi-emitters, heightening stressors common amongst Nanotrasen staff, and clouding identifiable information. \
Scrubbed statistical data presented a single correlation within documented psychological profiles. The fear of the Unknown."
default_skin = "infiltrator"
armor = list(MELEE = 50, BULLET = 50, LASER = 40, ENERGY = 50, BOMB = 40, BIO = 0, FIRE = 100, ACID = 100, WOUND = 25)
resistance_flags = FIRE_PROOF | ACID_PROOF
atom_flags = PREVENT_CONTENTS_EXPLOSION_1
siemens_coefficient = 0
slowdown_inactive = 0
slowdown_active = 0
ui_theme = "syndicate"
slot_flags = ITEM_SLOT_BELT
inbuilt_modules = list(/obj/item/mod/module/infiltrator, /obj/item/mod/module/storage/belt, /obj/item/mod/module/demoralizer)
allowed_suit_storage = list(
/obj/item/ammo_box,
/obj/item/ammo_casing,
/obj/item/restraints/handcuffs,
/obj/item/assembly/flash,
/obj/item/melee/baton,
/obj/item/melee/energy/sword,
/obj/item/shield/energy,
)
skins = list(
"infiltrator" = list(
HELMET_FLAGS = list(
UNSEALED_LAYER = null,
UNSEALED_CLOTHING = SNUG_FIT|THICKMATERIAL,
UNSEALED_INVISIBILITY = HIDEEARS|HIDEHAIR,
SEALED_INVISIBILITY = HIDEFACIALHAIR|HIDEMASK|HIDEEYES|HIDEFACE|HIDESNOUT,
SEALED_COVER = HEADCOVERSMOUTH|HEADCOVERSEYES|PEPPERPROOF,
CAN_OVERSLOT = TRUE,
),
CHESTPLATE_FLAGS = list(
UNSEALED_CLOTHING = THICKMATERIAL,
CAN_OVERSLOT = TRUE,
),
GAUNTLETS_FLAGS = list(
SEALED_CLOTHING = THICKMATERIAL,
CAN_OVERSLOT = TRUE,
),
BOOTS_FLAGS = list(
SEALED_CLOTHING = THICKMATERIAL,
CAN_OVERSLOT = TRUE,
),
),
)
/datum/mod_theme/enchanted
name = "enchanted"
desc = "The Wizard Federation's relatively low-tech MODsuit. Is very protective, though."
+10
View File
@@ -205,6 +205,16 @@
/obj/item/mod/module/flamethrower,
)
/obj/item/mod/control/pre_equipped/infiltrator
theme = /datum/mod_theme/infiltrator
applied_cell = /obj/item/stock_parts/cell/super
initial_modules = list(
/obj/item/mod/module/emp_shield,
/obj/item/mod/module/magnetic_harness,
/obj/item/mod/module/quick_carry,
/obj/item/mod/module/visor/diaghud,
)
/obj/item/mod/control/pre_equipped/enchanted
theme = /datum/mod_theme/enchanted
applied_core = /obj/item/mod/core/infinite
+46
View File
@@ -451,3 +451,49 @@
if(!holding_storage || holding_storage.max_specific_storage >= mod.w_class)
return
mod.forceMove(drop_location())
/obj/item/mod/module/demoralizer
name = "MOD psi-echo demoralizer module"
desc = "One incredibly morbid member of the RND team at Roseus Galactic posed a question to her colleagues. \
'I desire the power to scar my enemies mentally as I murder them. Who will stop me implementing this in our next project?' \
And thus the Psi-Echo Demoralizer Device was reluctantly invented. The future of psychological warfare, today!"
icon_state = "brain_hurties"
complexity = 0
idle_power_cost = DEFAULT_CHARGE_DRAIN * 0.1
removable = FALSE
var/datum/proximity_monitor/advanced/demoraliser/demoralizer
/obj/item/mod/module/demoralizer/on_suit_activation()
var/datum/demoralise_moods/module/mood_category = new()
demoralizer = new(mod.wearer, 7, TRUE, mood_category)
/obj/item/mod/module/demoralizer/on_suit_deactivation(deleting = FALSE)
QDEL_NULL(demoralizer)
/obj/item/mod/module/infiltrator
name = "MOD infiltration core programs module"
desc = "The primary stealth systems operating within the suit. Utilizing electromagnetic signals, \
the wearer simply cannot be observed closely, or heard clearly by those around them."
icon_state = "infiltrator"
complexity = 0
removable = FALSE
idle_power_cost = DEFAULT_CHARGE_DRAIN * 0
incompatible_modules = list(/obj/item/mod/module/infiltrator, /obj/item/mod/module/armor_booster, /obj/item/mod/module/welding)
/obj/item/mod/module/infiltrator/on_install()
mod.item_flags |= EXAMINE_SKIP
/obj/item/mod/module/infiltrator/on_uninstall(deleting = FALSE)
mod.item_flags &= ~EXAMINE_SKIP
/obj/item/mod/module/infiltrator/on_suit_activation()
ADD_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, MOD_TRAIT)
ADD_TRAIT(mod.wearer, TRAIT_UNKNOWN, MOD_TRAIT)
mod.helmet.flash_protect = FLASH_PROTECTION_WELDER
/obj/item/mod/module/infiltrator/on_suit_deactivation(deleting = FALSE)
REMOVE_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, MOD_TRAIT)
REMOVE_TRAIT(mod.wearer, TRAIT_UNKNOWN, MOD_TRAIT)
if(deleting)
return
mod.helmet.flash_protect = initial(mod.helmet.flash_protect)
@@ -60,6 +60,18 @@
max_combined_w_class = 30
max_items = 21
/obj/item/mod/module/storage/belt
name = "MOD case storage module"
desc = "Some concessions had to be made when creating a compressed modular suit core. \
As a result, Roseus Galactic equipped their suit with a slimline storage case. \
If you find this equipped to a standard modular suit, then someone has almost certainly shortchanged you on a proper storage module."
icon_state = "storage_case"
complexity = 0
max_w_class = WEIGHT_CLASS_SMALL
removable = FALSE
max_combined_w_class = 21
max_items = 7
/obj/item/mod/module/storage/bluespace
name = "MOD bluespace storage module"
desc = "A storage system developed by Nanotrasen, these compartments employ \
+8 -7
View File
@@ -9,13 +9,14 @@
surplus = 40
/datum/uplink_item/suits/infiltrator_bundle
name = "Infiltrator Case"
desc = "Developed by Roseus Galactic in conjunction with the Gorlex Marauders to produce a functional suit for urban operations, \
this suit proves to be cheaper than your standard issue MODsuit, with none of the movement restrictions of the outdated spacesuits employed by the company. \
Comes with an armor vest, helmet, sneaksuit, sneakboots, specialized combat gloves and a high-tech balaclava. The case is also rather useful as a storage container."
item = /obj/item/storage/toolbox/infiltrator
name = "Infiltrator MODsuit"
desc = "Developed by the Roseus Galactic Actors Guild in conjunction with the Gorlex Marauders to produce a functional suit for urban operations, \
this suit proves to be cheaper than your standard issue MODsuit, with none of the movement restrictions of the space suits employed by the company. \
However, this greater mobility comes at a cost, and the suit is ineffective at protecting the wearer from the vacuum of space. \
The suit does come pre-equipped with a special psi-emitter stealth module that makes it impossible to recognize the wearer \
as well as causing significant demoralization amongst Nanotrasen crew."
item = /obj/item/mod/control/pre_equipped/infiltrator
cost = 6
limited_stock = 1 //you only get one so you don't end up with too many gun cases
purchasable_from = ~(UPLINK_NUKE_OPS | UPLINK_CLOWN_OPS)
/datum/uplink_item/suits/space_suit
@@ -59,7 +60,7 @@
/datum/uplink_item/suits/plate_compression
name = "MODsuit Plate Compression Module"
desc = "A MODsuit module that lets the suit compress into a smaller size. Not compatible with storage modules."
desc = "A MODsuit module that lets the suit compress into a smaller size. Not compatible with storage modules or the Infiltrator MODsuit."
item = /obj/item/mod/module/plate_compression
progression_minimum = 20 MINUTES
cost = 2