Merge pull request #3833 from Citadel-Station-13/upstream-merge-32183
[MIRROR] Ling datum antag standarization.
This commit is contained in:
@@ -23,7 +23,7 @@
|
||||
|
||||
name = "brain"
|
||||
|
||||
if(C.mind && C.mind.changeling && !no_id_transfer) //congrats, you're trapped in a body you don't control
|
||||
if(C.mind && C.mind.has_antag_datum(/datum/antagonist/changeling) && !no_id_transfer) //congrats, you're trapped in a body you don't control
|
||||
if(brainmob && !(C.stat == DEAD || (C.status_flags & FAKEDEATH)))
|
||||
to_chat(brainmob, "<span class = danger>You can't feel your body! You're still just a brain!</span>")
|
||||
loc = C
|
||||
|
||||
@@ -770,7 +770,7 @@
|
||||
|
||||
/mob/living/carbon/can_be_revived()
|
||||
. = ..()
|
||||
if(!getorgan(/obj/item/organ/brain) && (!mind || !mind.changeling))
|
||||
if(!getorgan(/obj/item/organ/brain) && (!mind || !mind.has_antag_datum(/datum/antagonist/changeling)))
|
||||
return 0
|
||||
|
||||
/mob/living/carbon/harvest(mob/living/user)
|
||||
|
||||
@@ -60,9 +60,10 @@
|
||||
stat("Chemicals", B.chemicals)
|
||||
|
||||
if(mind)
|
||||
if(mind.changeling)
|
||||
stat("Chemical Storage", "[mind.changeling.chem_charges]/[mind.changeling.chem_storage]")
|
||||
stat("Absorbed DNA", mind.changeling.absorbedcount)
|
||||
var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling)
|
||||
if(changeling)
|
||||
stat("Chemical Storage", "[changeling.chem_charges]/[changeling.chem_storage]")
|
||||
stat("Absorbed DNA", changeling.absorbedcount)
|
||||
|
||||
|
||||
//NINJACODE
|
||||
|
||||
@@ -39,8 +39,10 @@
|
||||
return real_name
|
||||
else
|
||||
return real_name
|
||||
if(mind && mind.changeling && mind.changeling.mimicing)
|
||||
return mind.changeling.mimicing
|
||||
if(mind)
|
||||
var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling)
|
||||
if(changeling && changeling.mimicing )
|
||||
return changeling.mimicing
|
||||
if(GetSpecialVoice())
|
||||
return GetSpecialVoice()
|
||||
return real_name
|
||||
|
||||
@@ -251,12 +251,14 @@
|
||||
if(stat != DEAD)
|
||||
D.stage_act()
|
||||
|
||||
//todo generalize this and move hud out
|
||||
/mob/living/carbon/proc/handle_changeling()
|
||||
if(mind && hud_used && hud_used.lingchemdisplay)
|
||||
if(mind.changeling)
|
||||
mind.changeling.regenerate(src)
|
||||
var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling)
|
||||
if(changeling)
|
||||
changeling.regenerate()
|
||||
hud_used.lingchemdisplay.invisibility = 0
|
||||
hud_used.lingchemdisplay.maptext = "<div align='center' valign='middle' style='position:relative; top:0px; left:6px'><font color='#dd66dd'>[round(mind.changeling.chem_charges)]</font></div>"
|
||||
hud_used.lingchemdisplay.maptext = "<div align='center' valign='middle' style='position:relative; top:0px; left:6px'><font color='#dd66dd'>[round(changeling.chem_charges)]</font></div>"
|
||||
else
|
||||
hud_used.lingchemdisplay.invisibility = INVISIBILITY_ABSTRACT
|
||||
|
||||
|
||||
@@ -74,9 +74,10 @@
|
||||
stat(null, "Intent: [a_intent]")
|
||||
stat(null, "Move Mode: [m_intent]")
|
||||
if(client && mind)
|
||||
if(mind.changeling)
|
||||
stat("Chemical Storage", "[mind.changeling.chem_charges]/[mind.changeling.chem_storage]")
|
||||
stat("Absorbed DNA", mind.changeling.absorbedcount)
|
||||
var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling)
|
||||
if(changeling)
|
||||
stat("Chemical Storage", "[changeling.chem_charges]/[changeling.chem_storage]")
|
||||
stat("Absorbed DNA", changeling.absorbedcount)
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -336,8 +336,9 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
|
||||
if(prob(40))
|
||||
to_chat(M, "<i><font color=#800080>We can faintly sense an outsider trying to communicate through the hivemind...</font></i>")
|
||||
if(2)
|
||||
var/msg = "<i><font color=#800080><b>[mind.changeling.changelingID]:</b> [message]</font></i>"
|
||||
log_talk(src,"[mind.changeling.changelingID]/[key] : [message]",LOGSAY)
|
||||
var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling)
|
||||
var/msg = "<i><font color=#800080><b>[changeling.changelingID]:</b> [message]</font></i>"
|
||||
log_talk(src,"[changeling.changelingID]/[key] : [message]",LOGSAY)
|
||||
for(var/_M in GLOB.mob_list)
|
||||
var/mob/M = _M
|
||||
if(M in GLOB.dead_mob_list)
|
||||
@@ -413,10 +414,12 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
|
||||
return 0
|
||||
|
||||
/mob/living/lingcheck() //1 is ling w/ no hivemind. 2 is ling w/hivemind. 3 is ling victim being linked into hivemind.
|
||||
if(mind && mind.changeling)
|
||||
if(mind.changeling.changeling_speak)
|
||||
return 2
|
||||
return 1
|
||||
if(mind)
|
||||
var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling)
|
||||
if(changeling)
|
||||
if(changeling.changeling_speak)
|
||||
return 2
|
||||
return 1
|
||||
if(mind && mind.linglink)
|
||||
return 3
|
||||
return 0
|
||||
|
||||
@@ -486,7 +486,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
|
||||
if(guardians.len && !allowmultiple)
|
||||
to_chat(user, "<span class='holoparasite'>You already have a [mob_name]!</span>")
|
||||
return
|
||||
if(user.mind && user.mind.changeling && !allowling)
|
||||
if(user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling) && !allowling)
|
||||
to_chat(user, "[ling_failure]")
|
||||
return
|
||||
if(used == TRUE)
|
||||
|
||||
@@ -74,12 +74,13 @@
|
||||
|
||||
if(origin && origin.current && (origin.current.stat == DEAD))
|
||||
origin.transfer_to(M)
|
||||
if(!origin.changeling)
|
||||
M.make_changeling()
|
||||
if(origin.changeling.can_absorb_dna(M, owner))
|
||||
origin.changeling.add_new_profile(owner, M)
|
||||
var/datum/antagonist/changeling/C = origin.has_antag_datum(/datum/antagonist/changeling)
|
||||
if(!C)
|
||||
C = origin.add_antag_datum(/datum/antagonist/changeling/xenobio)
|
||||
if(C.can_absorb_dna(owner))
|
||||
C.add_new_profile(owner)
|
||||
|
||||
origin.changeling.purchasedpowers += new /obj/effect/proc_holder/changeling/humanform(null)
|
||||
C.purchasedpowers += new /obj/effect/proc_holder/changeling/humanform(null)
|
||||
M.key = origin.key
|
||||
owner.gib()
|
||||
|
||||
|
||||
@@ -651,8 +651,9 @@
|
||||
|
||||
if(mind)
|
||||
add_spells_to_statpanel(mind.spell_list)
|
||||
if(mind.changeling)
|
||||
add_stings_to_statpanel(mind.changeling.purchasedpowers)
|
||||
var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling)
|
||||
if(changeling)
|
||||
add_stings_to_statpanel(changeling.purchasedpowers)
|
||||
add_spells_to_statpanel(mob_spell_list)
|
||||
|
||||
/mob/proc/add_spells_to_statpanel(list/spells)
|
||||
|
||||
@@ -365,7 +365,7 @@ It's fairly easy to fix if dealing with single letters but not so much with comp
|
||||
if(M.mind in SSticker.mode.syndicates)
|
||||
return 2
|
||||
if("changeling")
|
||||
if(M.mind in SSticker.mode.changelings)
|
||||
if(M.mind.has_antag_datum(/datum/antagonist/changeling,TRUE))
|
||||
return 2
|
||||
if("wizard")
|
||||
if(iswizard(M))
|
||||
|
||||
@@ -94,8 +94,9 @@
|
||||
|
||||
if(mind)
|
||||
mind.transfer_to(O)
|
||||
if(O.mind.changeling)
|
||||
O.mind.changeling.purchasedpowers += new /obj/effect/proc_holder/changeling/humanform(null)
|
||||
var/datum/antagonist/changeling/changeling = O.mind.has_antag_datum(/datum/antagonist/changeling)
|
||||
if(changeling)
|
||||
changeling.purchasedpowers += new /obj/effect/proc_holder/changeling/humanform(null)
|
||||
|
||||
for(var/X in internal_organs)
|
||||
var/obj/item/organ/I = X
|
||||
@@ -118,7 +119,7 @@
|
||||
for(var/X in O.internal_organs)
|
||||
var/obj/item/organ/G = X
|
||||
if(BP.body_zone == check_zone(G.zone))
|
||||
if(mind && mind.changeling && istype(G, /obj/item/organ/brain))
|
||||
if(mind && mind.has_antag_datum(/datum/antagonist/changeling) && istype(G, /obj/item/organ/brain))
|
||||
continue //so headless changelings don't lose their brain when transforming
|
||||
qdel(G) //we lose the organs in the missing limbs
|
||||
qdel(BP)
|
||||
@@ -126,8 +127,9 @@
|
||||
//transfer mind if we didn't yet
|
||||
if(mind)
|
||||
mind.transfer_to(O)
|
||||
if(O.mind.changeling)
|
||||
O.mind.changeling.purchasedpowers += new /obj/effect/proc_holder/changeling/humanform(null)
|
||||
var/datum/antagonist/changeling/changeling = O.mind.has_antag_datum(/datum/antagonist/changeling)
|
||||
if(changeling)
|
||||
changeling.purchasedpowers += new /obj/effect/proc_holder/changeling/humanform(null)
|
||||
|
||||
|
||||
if (tr_flags & TR_DEFAULTMSG)
|
||||
@@ -248,9 +250,10 @@
|
||||
|
||||
if(mind)
|
||||
mind.transfer_to(O)
|
||||
if(O.mind.changeling)
|
||||
for(var/obj/effect/proc_holder/changeling/humanform/HF in O.mind.changeling.purchasedpowers)
|
||||
O.mind.changeling.purchasedpowers -= HF
|
||||
var/datum/antagonist/changeling/changeling = O.mind.has_antag_datum(/datum/antagonist/changeling)
|
||||
if(changeling)
|
||||
for(var/obj/effect/proc_holder/changeling/humanform/HF in changeling.purchasedpowers)
|
||||
changeling.purchasedpowers -= HF
|
||||
|
||||
for(var/X in internal_organs)
|
||||
var/obj/item/organ/I = X
|
||||
@@ -274,16 +277,17 @@
|
||||
for(var/X in O.internal_organs)
|
||||
var/obj/item/organ/G = X
|
||||
if(BP.body_zone == check_zone(G.zone))
|
||||
if(mind && mind.changeling && istype(G, /obj/item/organ/brain))
|
||||
if(mind && mind.has_antag_datum(/datum/antagonist/changeling) && istype(G, /obj/item/organ/brain))
|
||||
continue //so headless changelings don't lose their brain when transforming
|
||||
qdel(G) //we lose the organs in the missing limbs
|
||||
qdel(BP)
|
||||
|
||||
if(mind)
|
||||
mind.transfer_to(O)
|
||||
if(O.mind.changeling)
|
||||
for(var/obj/effect/proc_holder/changeling/humanform/HF in O.mind.changeling.purchasedpowers)
|
||||
O.mind.changeling.purchasedpowers -= HF
|
||||
var/datum/antagonist/changeling/changeling = O.mind.has_antag_datum(/datum/antagonist/changeling)
|
||||
if(changeling)
|
||||
for(var/obj/effect/proc_holder/changeling/humanform/HF in changeling.purchasedpowers)
|
||||
changeling.purchasedpowers -= HF
|
||||
|
||||
O.a_intent = INTENT_HELP
|
||||
if (tr_flags & TR_DEFAULTMSG)
|
||||
|
||||
Reference in New Issue
Block a user