Final updates on Fingerprints

fix for traitors getting assassinate and protect targets for the same person
Ported blood rejection
This commit is contained in:
SkyMarshal
2012-01-31 02:00:45 -07:00
parent 6648061dcb
commit beffc2299a
20 changed files with 554 additions and 221 deletions

View File

@@ -19,15 +19,10 @@
usr << "Your message has been broadcast to administrators."
log_admin("HELP: [key_name(src)]: [msg]")
var/list/replacechars = list("'","\"",">","<","(",")")
/* var/list/replacechars = list("'","\"",">","<","(",")")
for(var/rep in replacechars)
var/list/temp = dd_text2list(msg, rep)
if(temp.len > 1)
for(var/i = 1, i < temp.len, i++)
world << temp[i]
temp[i] = copytext(temp[i],1,lentext(temp[i]))
msg = dd_list2text(temp)
world << msg
msg = dd_replacetext(msg, rep, "")
world << msg*/
send2adminirc("#bs12admin","HELP: [src.key]: [msg]")
if(tension_master)
tension_master.new_adminhelp()

View File

@@ -196,19 +196,27 @@
return
attackby(var/obj/item/weapon/reagent_containers/glass/B as obj, var/mob/user as mob)
if(!istype(B, /obj/item/weapon/reagent_containers/glass))
if(!istype(B, /obj/item/weapon/reagent_containers/glass) && !istype(B,/obj/item/weapon/reagent_containers/syringe))
return
if(src.beaker)
user << "A beaker is already loaded into the machine."
if(istype(beaker,/obj/item/weapon/reagent_containers/syringe))
user << "A syringe is already loaded into the machine."
else
user << "A beaker is already loaded into the machine."
return
src.beaker = B
user.drop_item()
B.loc = src
user << "You add the beaker to the machine!"
src.updateUsrDialog()
icon_state = "mixer1"
if(istype(B,/obj/item/weapon/reagent_containers/syringe))
user << "You add the syringe to the machine!"
src.updateUsrDialog()
icon_state = "mixers"
else
user << "You add the beaker to the machine!"
src.updateUsrDialog()
icon_state = "mixer1"
Topic(href, href_list)
if(stat & BROKEN) return
@@ -222,7 +230,18 @@
if (href_list["analyze"])
var/dat = ""
if(!condi)
dat += "<TITLE>Chemmaster 3000</TITLE>Chemical infos:<BR><BR>Name:<BR>[href_list["name"]]<BR><BR>Description:<BR>[href_list["desc"]]<BR><BR><BR><A href='?src=\ref[src];main=1'>(Back)</A>"
if(href_list["name"] == "Blood")
var/datum/reagent/blood/G
for(var/datum/reagent/F in R.reagent_list)
if(F.name == href_list["name"])
G = F
break
var/A = G.name
var/B = G.data["blood_type"]
var/C = G.data["blood_DNA"]
dat += "<TITLE>Chemmaster 3000</TITLE>Chemical infos:<BR><BR>Name:<BR>[A]<BR><BR>Description:<BR>Blood Type: [B]<br>DNA: [C]<BR><BR><BR><A href='?src=\ref[src];main=1'>(Back)</A>"
else
dat += "<TITLE>Chemmaster 3000</TITLE>Chemical infos:<BR><BR>Name:<BR>[href_list["name"]]<BR><BR>Description:<BR>[href_list["desc"]]<BR><BR><BR><A href='?src=\ref[src];main=1'>(Back)</A>"
else
dat += "<TITLE>Condimaster 3000</TITLE>Condiment infos:<BR><BR>Name:<BR>[href_list["name"]]<BR><BR>Description:<BR>[href_list["desc"]]<BR><BR><BR><A href='?src=\ref[src];main=1'>(Back)</A>"
usr << browse(dat, "window=chem_master;size=575x400")
@@ -316,7 +335,7 @@
dat += "Add to buffer:<BR>"
for(var/datum/reagent/G in R.reagent_list)
dat += "[G.name] , [G.volume] Units - "
dat += "<A href='?src=\ref[src];analyze=1;desc=[G.description];name=[G.name]'>(Analyze)</A> "
dat += "<A href='?src=\ref[src];analyze=1;desc=[G.description];name=[G.name];reagent=[G]'>(Analyze)</A> "
dat += "<A href='?src=\ref[src];add1=[G.id]'>(1)</A> "
if(G.volume >= 5) dat += "<A href='?src=\ref[src];add5=[G.id]'>(5)</A> "
if(G.volume >= 10) dat += "<A href='?src=\ref[src];add10=[G.id]'>(10)</A> "

View File

@@ -101,6 +101,12 @@ datum
id = "blood"
reagent_state = LIQUID
color = "#C80000" // rgb: 200, 0, 0
on_mob_life(var/mob/living/M)
if(istype(M, /mob/living/carbon/human) && blood_incompatible(data["blood_type"],M.dna.b_type))
M.adjustToxLoss(rand(1.5,3))
M.adjustOxyLoss(rand(1.5,3))
..()
return
reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
var/datum/reagent/blood/self = src

View File

@@ -863,6 +863,7 @@
amount_per_transfer_from_this = 5
possible_transfer_amounts = null //list(5,10,15)
volume = 15
var/has_blood = 0
var/mode = SYRINGE_DRAW
on_reagent_change()
@@ -1023,6 +1024,10 @@
update_icon()
var/rounded_vol = round(reagents.total_volume,5)
has_blood = 0
for(var/datum/reagent/blood/B in reagents.reagent_list)
has_blood = 1
break
if(ismob(loc))
var/mode_t
switch(mode)
@@ -1030,9 +1035,9 @@
mode_t = "d"
if (SYRINGE_INJECT)
mode_t = "i"
icon_state = "[mode_t][rounded_vol]"
icon_state = "[mode_t][(has_blood?"b":"")][rounded_vol]"
else
icon_state = "[rounded_vol]"
icon_state = "[(has_blood?"b":"")][rounded_vol]"
item_state = "syringe_[rounded_vol]"

View File

@@ -1,4 +1,5 @@
mob/living/carbon/verb/give()
set category = "IC"
set name = "Give"
set src in view(1)
if(src.stat == 2 || usr.stat == 2|| src.client == null)
@@ -42,6 +43,7 @@ mob/living/carbon/verb/give()
src.l_hand = I
else
usr << "Their hands are full."
return
else
usr.drop_item(I)
src.r_hand = I
@@ -70,6 +72,7 @@ mob/living/carbon/verb/give()
src.r_hand = I
else
usr << "Their hands are full."
return
else
usr.drop_item(I)
src.l_hand = I

View File

@@ -112,6 +112,7 @@ emp_act
else H.add_blood(src)
if(H.wear_suit) H.wear_suit.add_blood(src)
else if(H.w_uniform) H.w_uniform.add_blood(src)
if(H.shoes) H.shoes.add_blood(src)
switch(hit_area)
if("head")//Harder to score a stun but if you do it lasts a bit longer

View File

@@ -354,6 +354,7 @@
proc/create_character()
spawning = 1
var/mob/living/carbon/human/new_character = new(loc)
new_character.be_syndicate = src.preferences.be_special
close_spawn_windows()