mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-29 15:08:34 +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:
@@ -164,6 +164,7 @@
|
||||
new_character.key = player_key
|
||||
|
||||
//Were they any particular special role? If so, copy.
|
||||
|
||||
if(new_character.mind)
|
||||
new_character.mind.loaded_from_ckey = picked_ckey
|
||||
new_character.mind.loaded_from_slot = picked_slot
|
||||
@@ -171,6 +172,8 @@
|
||||
if(antag_data)
|
||||
antag_data.add_antagonist(new_character.mind)
|
||||
antag_data.place_mob(new_character)
|
||||
if(new_character.mind.antag_holder)
|
||||
new_character.mind.antag_holder.apply_antags(new_character)
|
||||
|
||||
for(var/lang in ghost_client.prefs.alternate_languages)
|
||||
var/datum/language/chosen_language = GLOB.all_languages[lang]
|
||||
|
||||
@@ -387,6 +387,12 @@
|
||||
active_mr = null
|
||||
return
|
||||
|
||||
//Changeling lock.
|
||||
if(sleever.get_occupant().changeling_locked && !is_changeling(active_mr.mind_ref))
|
||||
set_temp("Error: Mind incompatible with body", "danger")
|
||||
active_mr = null
|
||||
return TRUE
|
||||
|
||||
var/list/subtargets = list()
|
||||
for(var/mob/living/carbon/human/H in sleever.get_occupant())
|
||||
if(H.resleeve_lock && active_mr.ckey != H.resleeve_lock)
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
////////////////////////////////
|
||||
|
||||
/mob/living/carbon/human/var/resleeve_lock
|
||||
/mob/living/carbon/human/var/changeling_locked
|
||||
/mob/living/carbon/human/var/original_player
|
||||
|
||||
/////// Mind-backup record ///////
|
||||
@@ -79,6 +80,7 @@
|
||||
//These may or may not be set, mostly irrelevant since it's just a body record.
|
||||
var/ckey
|
||||
var/locked
|
||||
var/changeling_locked
|
||||
var/client/client_ref
|
||||
var/datum/mind/mind_ref
|
||||
var/synthetic
|
||||
@@ -123,6 +125,11 @@
|
||||
//Person OOCly doesn't want people impersonating them
|
||||
locked = ckeylock
|
||||
|
||||
//The mob is a changeling, don't allow anyone to possess them. Not using locked as locked gives OOC notices.
|
||||
if(is_changeling(M))
|
||||
changeling_locked = TRUE
|
||||
|
||||
|
||||
var/datum/species/S = GLOB.all_species["[M.dna.species]"]
|
||||
if(S)
|
||||
// Force ckey locking if species is whitelisted
|
||||
|
||||
@@ -493,8 +493,15 @@
|
||||
if(!occupant.mind)
|
||||
log_debug("[occupant] didn't have a mind to check for vore_death, which may be problematic.")
|
||||
|
||||
if(occupant.mind && occupant.original_player && ckey(occupant.mind.key) != occupant.original_player)
|
||||
log_and_message_admins("is now a cross-sleeved character. Body originally belonged to [occupant.real_name]. Mind is now [occupant.mind.name].",occupant)
|
||||
if(occupant.mind)
|
||||
if(occupant.original_player && ckey(occupant.mind.key) != occupant.original_player)
|
||||
log_and_message_admins("is now a cross-sleeved character. Body originally belonged to [occupant.real_name]. Mind is now [occupant.mind.name].",occupant)
|
||||
var/datum/antagonist/antag_data = get_antag_data(occupant.mind.special_role)
|
||||
if(antag_data)
|
||||
antag_data.add_antagonist(occupant.mind)
|
||||
antag_data.place_mob(occupant)
|
||||
if(occupant.mind.antag_holder)
|
||||
occupant.mind.antag_holder.apply_antags(occupant)
|
||||
|
||||
if(original_occupant)
|
||||
occupant = original_occupant
|
||||
|
||||
Reference in New Issue
Block a user