Fixes exfiltration species adjustments, holoparas (#30419)

This commit is contained in:
PollardTheDragon
2025-10-01 12:01:47 -04:00
committed by GitHub
parent 4d4627b2c1
commit abc25754ea
8 changed files with 57 additions and 5 deletions
+2
View File
@@ -136,6 +136,8 @@
#define COMPONENT_NO_ATTACH (1<<0)
///from base of mob/living/health_update()
#define COMSIG_LIVING_HEALTH_UPDATE "living_health_update"
/// Sent during exfiltration to handle guardians
#define COMSIG_SUMMONER_EXTRACTED "summoner_extracted"
///sent from borg recharge stations: (amount, repairs)
#define COMSIG_PROCESS_BORGCHARGER_OCCUPANT "living_charge"
///sent when a mob enters a borg charger
+24
View File
@@ -51,6 +51,12 @@
/obj/item/ammo_box/magazine/toy/pistol = 2
)
/datum/outfit/admin/ghostbar_antag/syndicate/plasmaman
name = "Syndicate Plasmaman"
head = /obj/item/clothing/head/helmet/space/plasmaman
uniform = /obj/item/clothing/under/plasmaman
/datum/outfit/admin/ghostbar_antag/vampire
name = "Vampire"
@@ -65,6 +71,12 @@
/obj/item/reagent_containers/iv_bag/blood/o_plus = 3
)
/datum/outfit/admin/ghostbar_antag/vampire/plasmaman
name = "Vampire Plasmaman"
head = /obj/item/clothing/head/helmet/space/plasmaman
uniform = /obj/item/clothing/under/plasmaman
/datum/outfit/admin/ghostbar_antag/changeling
name = "Changeling"
@@ -79,6 +91,12 @@
/obj/item/toy/foamblade = 1
)
/datum/outfit/admin/ghostbar_antag/changeling/plasmaman
name = "Changeling Plasmaman"
head = /obj/item/clothing/head/helmet/space/plasmaman
uniform = /obj/item/clothing/under/plasmaman
/datum/outfit/admin/ghostbar_antag/mindflayer
name = "Mindflayer"
@@ -92,3 +110,9 @@
/obj/item/storage/box/engineer = 1,
/obj/item/toy/plushie/ipcplushie = 1
)
/datum/outfit/admin/ghostbar_antag/mindflayer/plasmaman
name = "Mindflayer Plasmaman"
head = /obj/item/clothing/head/helmet/space/plasmaman
uniform = /obj/item/clothing/under/plasmaman
@@ -55,6 +55,7 @@
summoner = host
host.grant_guardian_actions(src)
RegisterSignal(summoner, COMSIG_LIVING_HEALTH_UPDATE, PROC_REF(update_health_hud))
RegisterSignal(summoner, COMSIG_SUMMONER_EXTRACTED, PROC_REF(handle_extraction))
/mob/living/simple_animal/hostile/guardian/can_buckle()
return FALSE
@@ -192,6 +193,13 @@
/mob/living/simple_animal/hostile/guardian/Process_Spacemove(movement_dir = 0, continuous_move = FALSE)
return TRUE //Works better in zero G, and not useless in space
/mob/living/simple_animal/hostile/guardian/proc/handle_extraction()
if(summoner)
summoner.remove_guardian_actions()
UnregisterSignal(summoner, COMSIG_LIVING_HEALTH_UPDATE)
ghostize()
qdel(src)
//Manifest, Recall, Communicate
/mob/living/simple_animal/hostile/guardian/proc/Manifest()
@@ -591,11 +591,17 @@
for(var/datum/martial_art/MA in extractor.mind.known_martial_arts)
MA.remove(extractor)
// Kill guardians
SEND_SIGNAL(extractor, COMSIG_SUMMONER_EXTRACTED)
// Equip outfits and remove spells
var/datum/mind/extractor_mind = extractor.mind
for(var/datum/antagonist/antag in extractor_mind.antag_datums)
antag.exfiltrate(extractor, radio)
if(isvox(extractor))
extractor.dna.species.after_equip_job(null, extractor) // Nitrogen tanks
if(isplasmaman(extractor))
extractor.dna.species.after_equip_job(null, extractor) // Plasma tanks
// Apply traits
ADD_TRAIT(extractor, TRAIT_PACIFISM, GHOST_ROLE)
ADD_TRAIT(extractor, TRAIT_RESPAWNABLE, GHOST_ROLE)
@@ -191,7 +191,10 @@ RESTRICT_TYPE(/datum/antagonist/changeling)
remove_changeling_powers(FALSE)
var/datum/action/changeling/power = new /datum/action/changeling/transform
power.Grant(extractor)
extractor.equipOutfit(/datum/outfit/admin/ghostbar_antag/changeling)
if(isplasmaman(extractor))
extractor.equipOutfit(/datum/outfit/admin/ghostbar_antag/changeling/plasmaman)
else
extractor.equipOutfit(/datum/outfit/admin/ghostbar_antag/changeling)
radio.autosay("<b>--ZZZT!- Welcome home, [extractor.real_name]. -ZZT!-</b>", "Changeling Hive", "Security")
SSblackbox.record_feedback("tally", "successful_extraction", 1, "Changeling")
@@ -64,7 +64,10 @@
/datum/antagonist/mindflayer/exfiltrate(mob/living/carbon/human/extractor, obj/item/radio/radio)
remove_all_abilities()
remove_all_passives()
extractor.equipOutfit(/datum/outfit/admin/ghostbar_antag/mindflayer)
if(isplasmaman(extractor)) // Normally, only IPCs can be flayers. This is in case they somehow end up mindswapped to a plasmaman.
extractor.equipOutfit(/datum/outfit/admin/ghostbar_antag/mindflayer/plasmaman)
else
extractor.equipOutfit(/datum/outfit/admin/ghostbar_antag/mindflayer)
radio.autosay("<b>--ZZZT!- Excellent job, [extractor.real_name]. Proceed to -^%&!-ZZT!-</b>", "Master Flayer", "Security")
SSblackbox.record_feedback("tally", "successful_extraction", 1, "Mindflayer")
@@ -118,7 +118,10 @@ RESTRICT_TYPE(/datum/antagonist/traitor)
forge_human_objectives()
/datum/antagonist/traitor/exfiltrate(mob/living/carbon/human/extractor, obj/item/radio/radio)
extractor.equipOutfit(/datum/outfit/admin/ghostbar_antag/syndicate)
if(isplasmaman(extractor))
extractor.equipOutfit(/datum/outfit/admin/ghostbar_antag/syndicate/plasmaman)
else
extractor.equipOutfit(/datum/outfit/admin/ghostbar_antag/syndicate)
// Remove mindslaves
var/list/mindslaves = SSticker.mode.implanted
for(var/datum/mind/possible_slave in mindslaves)
@@ -110,7 +110,10 @@ RESTRICT_TYPE(/datum/antagonist/vampire)
if(slave.master == extractor.mind)
possible_thrall.remove_antag_datum(/datum/antagonist/mindslave/thrall)
extractor.equipOutfit(/datum/outfit/admin/ghostbar_antag/vampire)
if(isplasmaman(extractor))
extractor.equipOutfit(/datum/outfit/admin/ghostbar_antag/vampire/plasmaman)
else
extractor.equipOutfit(/datum/outfit/admin/ghostbar_antag/vampire)
radio.autosay("<b>--ZZZT!- Wonderfully done, [extractor.real_name]. Welcome to -^%&!-ZZT!-</b>", "Ancient Vampire", "Security")
SSblackbox.record_feedback("tally", "successful_extraction", 1, "Vampire")