mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-26 21:49:11 +01:00
Changing changeling (Refactor) (#17749)
* Begin antag component * Initial changeling move * Slow...And...Steady... * Initial * remove toworld testing * More adjustments * Update absorb.dm Changelings get a genetic point per person absorbed * Fixes losing your markings * wa * Update modularchangling.dm * BETTER LING WITH TGUI * Gives all stings a global 1 second cd Need to come up with a better way for this. * snake_case * Update epinephrine_overdose.dm * Update changeling.dm * Absorption/digestion absorbs people Also disabled death sting because gtfo with that, it's unfun for everyone involved. * prey ling also DELETES death sting...It didn't even KILL properly * fixes EMP shriek * Update vorestation.dme * Ling * Unfat sting lowers nutrition more * Update visible_camouflage.dm * Update visible_camouflage.dm * Changeling blades NOT embed * Armblade fix * Changeling spacesuit free * Updates the armor * Updates * awa * More * Update blind_sting.dm * Update blind_sting.dm * Update boost_range.dm * More adjustments * Update _reagents.dm * Update bioelectrogenesis.dm * more * all done * awa * shhh * Update visible_camouflage.dm * Update visible_camouflage.dm * Update visible_camouflage.dm * decon * gets rid of AB+ blood * Blood rejection and better checks * changeling holder * proper del * Changeling lock * Stops bodytheft * yeah * its reviving time * Lets them shapeshift * ah * check * Update negative.dm * Update examine.dm
This commit is contained in:
@@ -39,8 +39,9 @@
|
||||
|
||||
else
|
||||
L = holder
|
||||
|
||||
L.mind.changeling.chem_charges = between(0, L.mind.changeling.chem_charges - chem_maintenance, L.mind.changeling.chem_storage)
|
||||
if(L)
|
||||
var/datum/component/antag/changeling/comp = L.GetComponent(/datum/component/antag/changeling)
|
||||
comp.chem_charges = between(0, comp.chem_charges - chem_maintenance, comp.chem_storage)
|
||||
|
||||
/datum/modifier/changeling/thermal_sight
|
||||
name = "Thermal Adaptation"
|
||||
@@ -63,7 +64,7 @@
|
||||
expire()
|
||||
return
|
||||
|
||||
var/datum/changeling/changeling = L.changeling_power(0,0,100,CONSCIOUS)
|
||||
var/datum/component/antag/changeling/changeling = L.changeling_power(0,0,100,CONSCIOUS)
|
||||
|
||||
if(!changeling)
|
||||
expire()
|
||||
@@ -85,7 +86,7 @@
|
||||
L = holder
|
||||
|
||||
if(L)
|
||||
var/datum/changeling/changeling = L.changeling_power(0,0,100,CONSCIOUS)
|
||||
var/datum/component/antag/changeling/changeling = L.changeling_power(0,0,100,CONSCIOUS)
|
||||
|
||||
if(changeling)
|
||||
changeling.thermal_sight = FALSE
|
||||
|
||||
@@ -8,9 +8,9 @@
|
||||
flags = RESTRICTED | HIVEMIND
|
||||
|
||||
/datum/language/ling/broadcast(var/mob/living/speaker,var/message,var/speaker_mask)
|
||||
|
||||
if(speaker.mind && speaker.mind.changeling)
|
||||
..(speaker,message,speaker.mind.changeling.changelingID)
|
||||
var/datum/component/antag/changeling/comp = speaker.GetComponent(/datum/component/antag/changeling)
|
||||
if(speaker.mind && comp)
|
||||
..(speaker,message,comp.changelingID)
|
||||
else
|
||||
..(speaker,message)
|
||||
|
||||
|
||||
@@ -54,10 +54,11 @@
|
||||
stop_flying()
|
||||
|
||||
//Handle snowflake ling stuff.
|
||||
if(mind && mind.changeling)
|
||||
var/datum/component/antag/changeling/comp = is_changeling(src)
|
||||
if(comp)
|
||||
// If the ling is capable of revival, don't allow them to see deadchat.
|
||||
if(mind.changeling.chem_charges >= CHANGELING_STASIS_COST)
|
||||
if(mind.changeling.max_geneticpoints >= 0) // Absorbed lings don't count, as they can't revive.
|
||||
if(comp.chem_charges >= CHANGELING_STASIS_COST)
|
||||
if(comp.max_geneticpoints >= 0) // Absorbed lings don't count, as they can't revive.
|
||||
forbid_seeing_deadchat = TRUE
|
||||
|
||||
//Handle brain slugs.
|
||||
|
||||
@@ -123,11 +123,11 @@
|
||||
if(suit.cell) cell_status = "[suit.cell.charge]/[suit.cell.maxcharge]"
|
||||
. += "Suit charge: [cell_status]"
|
||||
|
||||
if(mind)
|
||||
if(mind.changeling)
|
||||
. += "Chemical Storage: [mind.changeling.chem_charges]"
|
||||
. += "Genetic Damage Time: [mind.changeling.geneticdamage]"
|
||||
. += "Re-Adaptations: [mind.changeling.readapts]/[mind.changeling.max_readapts]"
|
||||
var/datum/component/antag/changeling/comp = is_changeling(src)
|
||||
if(comp)
|
||||
. += "Chemical Storage: [comp.chem_charges]"
|
||||
. += "Genetic Damage Time: [comp.geneticdamage]"
|
||||
. += "Re-Adaptations: [comp.readapts]/[comp.max_readapts]"
|
||||
if(species)
|
||||
species.get_status_tab_items(src)
|
||||
|
||||
|
||||
@@ -56,8 +56,9 @@
|
||||
|
||||
//This is called when we want different types of 'cloaks' to stop working, e.g. when attacking.
|
||||
/mob/living/carbon/human/break_cloak()
|
||||
if(mind && mind.changeling) //Changeling visible camo
|
||||
mind.changeling.cloaked = 0
|
||||
var/datum/component/antag/changeling/comp = is_changeling(src)
|
||||
if(comp) //Changeling visible camo
|
||||
comp.cloaked = 0
|
||||
if(istype(back, /obj/item/rig)) //Ninja cloak
|
||||
var/obj/item/rig/suit = back
|
||||
for(var/obj/item/rig_module/stealth_field/cloaker in suit.installed_modules)
|
||||
@@ -67,7 +68,8 @@
|
||||
dr.uncloak()
|
||||
|
||||
/mob/living/carbon/human/is_cloaked()
|
||||
if(mind && mind.changeling && mind.changeling.cloaked) // Ling camo.
|
||||
var/datum/component/antag/changeling/comp = is_changeling(src)
|
||||
if(comp && comp.cloaked) // Ling camo.
|
||||
return TRUE
|
||||
else if(istype(back, /obj/item/rig)) //Ninja cloak
|
||||
var/obj/item/rig/suit = back
|
||||
|
||||
@@ -1794,14 +1794,19 @@
|
||||
playsound_local(src,pick(GLOB.scarySounds),50, 1, -1)
|
||||
|
||||
/mob/living/carbon/human/proc/handle_changeling()
|
||||
if(mind && mind.changeling)
|
||||
mind.changeling.regenerate()
|
||||
var/datum/component/antag/changeling/comp = is_changeling(src)
|
||||
if(!comp)
|
||||
if(mind && hud_used)
|
||||
ling_chem_display.invisibility = INVISIBILITY_ABSTRACT
|
||||
return
|
||||
else
|
||||
comp.regenerate()
|
||||
if(hud_used)
|
||||
ling_chem_display.invisibility = INVISIBILITY_NONE
|
||||
// ling_chem_display.maptext = "<div align='center' valign='middle' style='position:relative; top:0px; left:6px'><font color='#dd66dd'>[round(mind.changeling.chem_charges)]</font></div>"
|
||||
switch(mind.changeling.chem_storage)
|
||||
switch(comp.chem_storage)
|
||||
if(1 to 50)
|
||||
switch(mind.changeling.chem_charges)
|
||||
switch(comp.chem_charges)
|
||||
if(0 to 9)
|
||||
ling_chem_display.icon_state = "ling_chems0"
|
||||
if(10 to 19)
|
||||
@@ -1815,7 +1820,7 @@
|
||||
if(50)
|
||||
ling_chem_display.icon_state = "ling_chems50"
|
||||
if(51 to 80) //This is a crappy way of checking for engorged sacs...
|
||||
switch(mind.changeling.chem_charges)
|
||||
switch(comp.chem_charges)
|
||||
if(0 to 9)
|
||||
ling_chem_display.icon_state = "ling_chems0e"
|
||||
if(10 to 19)
|
||||
@@ -1834,9 +1839,6 @@
|
||||
ling_chem_display.icon_state = "ling_chems70e"
|
||||
if(80)
|
||||
ling_chem_display.icon_state = "ling_chems80e"
|
||||
else
|
||||
if(mind && hud_used)
|
||||
ling_chem_display.invisibility = INVISIBILITY_ABSTRACT
|
||||
|
||||
/mob/living/carbon/human/handle_shock()
|
||||
..()
|
||||
|
||||
@@ -101,8 +101,9 @@
|
||||
voice_sub = get_id_name()
|
||||
if(voice_sub)
|
||||
return voice_sub
|
||||
if(mind && mind.changeling && mind.changeling.mimicing)
|
||||
return mind.changeling.mimicing
|
||||
var/datum/component/antag/changeling/comp = is_changeling(src)
|
||||
if(comp && comp.mimicing)
|
||||
return comp.mimicing
|
||||
if(GetSpecialVoice())
|
||||
return GetSpecialVoice()
|
||||
return real_name
|
||||
|
||||
@@ -518,14 +518,13 @@
|
||||
if(H.hallucination >= hallucination_cap && H.loneliness_stage >= warning_cap)
|
||||
return
|
||||
|
||||
// Outpost 21 addition begin - extended loneliness mechanics
|
||||
if(H.mind && H.mind.changeling) // We are never alone~
|
||||
var/datum/component/antag/changeling/comp = H.GetComponent(/datum/component/antag/changeling)
|
||||
if(comp) // We are never alone~
|
||||
H.loneliness_stage = 0
|
||||
return
|
||||
if(H.has_brain_worms()) // Brain friends!
|
||||
sub_loneliness(H)
|
||||
return
|
||||
// Outpost 21 addition end
|
||||
|
||||
// Vored? Not gonna get frightened.
|
||||
if(isbelly(H.loc))
|
||||
|
||||
Reference in New Issue
Block a user