mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-17 18:13:34 +01:00
Fixes exfiltration species adjustments, holoparas (#30419)
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user