Cling Test, Syringe Changes, Species Edge Cases

- Syringes take 30 seconds to extract blood, 60 seconds if target is in
a hardsuit, instant if target is user.
- Slime people can no longer be lings.
- Species with NO_SCAN not affected by transform sting.
- Adds reaction between blood and welding fuel. If the blood is normal,
destroys the blood and gives a message, giving a specific message if the
blood belonged to a changeling.
This commit is contained in:
DZD
2015-02-09 13:28:48 -05:00
parent e720ab7140
commit 752bd825ac
5 changed files with 52 additions and 8 deletions
+1 -1
View File
@@ -9,7 +9,7 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon"
config_tag = "changeling"
restricted_jobs = list("AI", "Cyborg")
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Brig Physician", "Internal Affairs Agent")
protected_species = list("Machine")
protected_species = list("Machine", "Slime People")
required_players = 2
required_players_secret = 10
required_enemies = 1
@@ -37,6 +37,8 @@
if(H.species.flags & IS_SYNTHETIC)
user << "<span class='warning'>This won't work on synthetics.</span>"
return
if(H.species.flags & NO_SCAN) //Prevents transforming slimes and killing them instantly
user << "<span class='warning'>This won't work on a creature with abnormal genetic material.</span>"
if(!isturf(user.loc))
return
if(get_dist(user, target) > (user.mind.changeling.sting_range))
@@ -7,7 +7,7 @@
required_players_secret = 10
required_enemies = 2
recommended_enemies = 3
var/protected_species_changeling = list("Machine")
var/protected_species_changeling = list("Machine", "Slime People")
/datum/game_mode/traitor/changeling/announce()
world << "<B>The current game mode is - Traitor+Changeling!</B>"
@@ -24,11 +24,11 @@
for(var/job in restricted_jobs)//Removing robots from the list
if(player.assigned_role == job)
possible_changelings -= player
for(var/mob/new_player/player in player_list)
if((player.mind in possible_changelings) && (player.client.prefs.species in protected_species_changeling))
possible_changelings -= player.mind
if(possible_changelings.len>0)
var/datum/mind/changeling = pick(possible_changelings)
//possible_changelings-=changeling
+25 -1
View File
@@ -730,7 +730,31 @@ datum
required_reagents = list("chlorine" = 1, "hydrogen" = 1, "nitrogen" = 1)
result_amount = 3
///////Changeling Blood Test/////////////
changeling_test
name = "Changeling blood test"
id = "changelingblood"
result = "blood"
required_reagents = list("blood" = 5)
required_catalysts = list("fuel")
result_amount = 1 //Needs this in order to check the donor, as the data var in the reacted blood gets transferred.
on_reaction(var/datum/reagents/holder, var/created_volume)
if(!holder.reagent_list) //reagent_list is not null
return
var/datum/reagent/blood/B = locate() in holder.reagent_list
if(!B) //B is not null
return
var/mob/living/carbon/human/H = B.data["donor"]
if(!H) //H is not null.
return
if(H.mind && H.mind.changeling) //Checks if H, the blood donor is a ling.
for(var/mob/M in viewers(get_turf_loc(holder.my_atom), null))
M.show_message( "<span class='danger'>The blood writhes and wriggles and sizzles away from the container!</span>", 1, "<span class='warning'>You hear bubbling and sizzling.</span>", 2)
else
for(var/mob/M in viewers(get_turf_loc(holder.my_atom), null))
M.show_message( "<span class ='notice'>The blood seems to break apart in the fuel.</span>", 1)
holder.del_reagent("blood")
return
/////////////////////////////////////OLD SLIME CORE REACTIONS ///////////////////////////////
/*
slimepepper
@@ -90,6 +90,23 @@
user << "\red You are unable to locate any blood."
return
var/time = 30 //Injecting through a hardsuit takes longer due to needing to find a port.
if(istype(target,/mob/living/carbon/human))
var/mob/living/carbon/human/H = T
if((H.species.bloodflags & BLOOD_SLIME) || (H.species.flags & NO_BLOOD))
usr << "<span class='warning'>You are unable to locate any blood.</span>"
return
if(H.wear_suit && istype(H.wear_suit,/obj/item/clothing/suit/space))
time = 60
if(target == user)
time = 0
else
for(var/mob/O in viewers(world.view, user))
O.show_message(text("\red <B>[] is trying to take a blood sample from []!</B>", user, target), 1)
if(!do_mob(user, target, time))
return
var/datum/reagent/B
if(istype(T,/mob/living/carbon/human))
var/mob/living/carbon/human/H = T
@@ -105,9 +122,10 @@
src.reagents.update_total()
src.on_reagent_change()
src.reagents.handle_reactions()
user << "\blue You take a blood sample from [target]"
for(var/mob/O in viewers(4, user))
O.show_message("\red [user] takes a blood sample from [target].", 1)
user << "\blue You take a blood sample from [target]"
for(var/mob/O in viewers(4, user))
O.show_message("\red [user] takes a blood sample from [target].", 1)
else //if not mob
if(!target.reagents.total_volume)