diff --git a/code/game/gamemodes/changeling/powers/augmented_eyesight.dm b/code/game/gamemodes/changeling/powers/augmented_eyesight.dm index e2f88ac9d9f..d40da71fff1 100644 --- a/code/game/gamemodes/changeling/powers/augmented_eyesight.dm +++ b/code/game/gamemodes/changeling/powers/augmented_eyesight.dm @@ -15,7 +15,7 @@ user << "We feel a minute twitch in our eyes, and darkness creeps away." else user << "Our vision dulls. Shadows gather." - user.sight -= SEE_MOBS + user.sight &= ~SEE_MOBS while(active) user.see_in_dark = 8 user.see_invisible = 2 diff --git a/code/game/gamemodes/changeling/powers/tiny_prick.dm b/code/game/gamemodes/changeling/powers/tiny_prick.dm index 2e6883196bc..d7820d11188 100644 --- a/code/game/gamemodes/changeling/powers/tiny_prick.dm +++ b/code/game/gamemodes/changeling/powers/tiny_prick.dm @@ -37,8 +37,6 @@ if(H.species.flags & IS_SYNTHETIC) user << "This won't work on synthetics." return - if(H.species.flags & NO_SCAN) //Prevents transforming slimes and killing them instantly - user << "This won't work on a creature with abnormal genetic material." if(!isturf(user.loc)) return if(get_dist(user, target) > (user.mind.changeling.sting_range)) @@ -87,6 +85,11 @@ if((M_HUSK in target.mutations) || (!ishuman(target) && !ismonkey(target))) user << "Our sting appears ineffective against its DNA." return 0 + if(ishuman(target)) + var/mob/living/carbon/human/H = target + if(H.species.flags & NO_SCAN) //Prevents transforming slimes and killing them instantly + user << "This won't work on a creature with abnormal genetic material." + return 0 return 1 /obj/effect/proc_holder/changeling/sting/transformation/sting_action(var/mob/user, var/mob/target) diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 3f9117f07b7..e5157e50bd9 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -30,7 +30,7 @@ datum/objective proc/find_target() var/list/possible_targets = list() for(var/datum/mind/possible_target in ticker.minds) - if(possible_target != owner && ishuman(possible_target.current) && (possible_target.current.stat != 2)) + if(possible_target != owner && ishuman(possible_target.current) && (possible_target.current.stat != DEAD)) possible_targets += possible_target if(possible_targets.len > 0) target = pick(possible_targets) @@ -38,7 +38,7 @@ datum/objective proc/find_target_by_role(role, role_type=0)//Option sets either to check assigned role or special role. Default to assigned. var/list/possible_targets = list() for(var/datum/mind/possible_target in ticker.minds) - if((possible_target != owner) && ishuman(possible_target.current) && ((role_type ? possible_target.special_role : possible_target.assigned_role) == role) && (possible_target.current.stat != 2) ) + if((possible_target != owner) && ishuman(possible_target.current) && ((role_type ? possible_target.special_role : possible_target.assigned_role) == role) && (possible_target.current.stat != DEAD) ) possible_targets += possible_target if(possible_targets.len > 0) target = pick(possible_targets) @@ -47,7 +47,7 @@ datum/objective proc/find_target_with_special_role(role) var/list/possible_targets = list() for(var/datum/mind/possible_target in ticker.minds) - if((possible_target != owner) && ishuman(possible_target.current) && (role && possible_target.special_role == role || !role && possible_target.special_role) && (possible_target.current.stat != 2) ) + if((possible_target != owner) && ishuman(possible_target.current) && (role && possible_target.special_role == role || !role && possible_target.special_role) && (possible_target.current.stat != DEAD) ) possible_targets += possible_target if(possible_targets.len > 0) target = pick(possible_targets) @@ -385,7 +385,7 @@ datum/objective/block for(var/mob/living/player in player_list) if(player.type in protected_mobs) continue if (player.mind) - if (player.stat != 2) + if (player.stat != DEAD) if (get_turf(player) in shuttle) return 0 return 1 @@ -451,7 +451,14 @@ datum/objective/escape/escape_with_identity var/target_real_name // Has to be stored because the target's real_name can change over the course of the round find_target() - target = ..() + var/list/possible_targets = list() //Copypasta because NO_SCAN races, yay for snowflakes. + for(var/datum/mind/possible_target in ticker.minds) + if(possible_target != owner && ishuman(possible_target.current) && (possible_target.current.stat != DEAD)) + var/mob/living/carbon/human/H = possible_target.current + if(!(H.species.flags & NO_SCAN)) + possible_targets += possible_target + if(possible_targets.len > 0) + target = pick(possible_targets) if(target && target.current) target_real_name = target.current.real_name explanation_text = "Escape on the shuttle or an escape pod with the identity of [target_real_name], the [target.assigned_role] while wearing their identification card." @@ -658,7 +665,7 @@ datum/objective/download check_completion() if(!ishuman(owner.current)) return 0 - if(!owner.current || owner.current.stat == 2) + if(!owner.current || owner.current.stat == DEAD) return 0 if(!(istype(owner.current:wear_suit, /obj/item/clothing/suit/space/space_ninja)&&owner.current:wear_suit:s_initialized)) return 0 @@ -685,25 +692,25 @@ datum/objective/capture var/captured_amount = 0 var/area/ninja/holding/A = locate() for(var/mob/living/carbon/human/M in A)//Humans. - if(M.stat==2)//Dead folks are worth less. + if(M.stat == DEAD)//Dead folks are worth less. captured_amount+=0.5 continue captured_amount+=1 for(var/mob/living/carbon/monkey/M in A)//Monkeys are almost worthless, you failure. captured_amount+=0.1 for(var/mob/living/carbon/alien/larva/M in A)//Larva are important for research. - if(M.stat==2) + if(M.stat == DEAD) captured_amount+=0.5 continue captured_amount+=1 for(var/mob/living/carbon/alien/humanoid/M in A)//Aliens are worth twice as much as humans. if(istype(M, /mob/living/carbon/alien/humanoid/queen))//Queens are worth three times as much as humans. - if(M.stat==2) + if(M.stat == DEAD) captured_amount+=1.5 else captured_amount+=3 continue - if(M.stat==2) + if(M.stat == DEAD) captured_amount+=1 continue captured_amount+=2 @@ -845,7 +852,7 @@ datum/objective/heist/kidnap var/list/priority_targets = list() for(var/datum/mind/possible_target in ticker.minds) - if(possible_target != owner && ishuman(possible_target.current) && (possible_target.current.stat != 2) && (possible_target.assigned_role != "MODE")) + if(possible_target != owner && ishuman(possible_target.current) && (possible_target.current.stat != DEAD) && (possible_target.assigned_role != "MODE")) possible_targets += possible_target for(var/role in roles) if(possible_target.assigned_role == role) @@ -865,7 +872,7 @@ datum/objective/heist/kidnap check_completion() if(target && target.current) - if (target.current.stat == 2) + if (target.current.stat == DEAD) return 0 // They're dead. Fail. //if (!target.current.restrained()) // return 0 // They're loose. Close but no cigar.