mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-20 03:25:49 +01:00
Added global lists for chemistry datums.
chemical_reactions_list for storing /datum/chemical_reaction so we don't have to spawn them all everytime two reagents get mixed together. chemical_reagents_list, unlike reactions it is indexed by id so we can have fast lookup of reagent data. Again, without spawning everytype of that datum everytime we add a reagent to something It was making all subtypes of this datum everytime it filled any reagent_container with a single reagent. Considering how many reagent containers there are that's a lot of wastage. Now it only does this once, thank goodness. Unfortunately I had to stick the initialisation inside the datum/reagents holder object's New() proc, since New() for map ojects gets called before world/New() Fixed clean_blood() yet again *sigh*. It's probably as good as I'm gonna get it without changing loadsa stuff needlessly. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4273 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
+34
-38
@@ -281,10 +281,7 @@
|
||||
this.viruses += newDisease
|
||||
newDisease.holder = this
|
||||
|
||||
|
||||
|
||||
/atom/proc/clean_blood()
|
||||
|
||||
/atom/proc/clean_prints()
|
||||
if(istype(fingerprints, /list))
|
||||
//Smudge up dem prints some
|
||||
for(var/P in fingerprints)
|
||||
@@ -296,44 +293,43 @@
|
||||
if(!fingerprints.len)
|
||||
del(fingerprints)
|
||||
|
||||
/atom/proc/clean_blood()
|
||||
if(istype(blood_DNA, /list))
|
||||
//Cleaning blood off of mobs
|
||||
if(istype(src, /mob/living/carbon))
|
||||
var/mob/living/carbon/M = src
|
||||
del(M.blood_DNA)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.gloves)
|
||||
H.gloves.clean_blood()
|
||||
// H.update_inv_gloves(0) //Needs to be called even if we aren't wearing gloves.
|
||||
else
|
||||
H.bloody_hands = 0
|
||||
H.update_inv_gloves(0) //because it handles bloody hands too
|
||||
M.update_icons() //apply the now updated overlays to the mob
|
||||
del(blood_DNA)
|
||||
.=1
|
||||
|
||||
//Cleaning blood off of items
|
||||
else if(istype(src, /obj/item))
|
||||
var/obj/item/O = src
|
||||
del(O.blood_DNA)
|
||||
if(O.blood_overlay)
|
||||
O.overlays.Remove(O.blood_overlay)
|
||||
|
||||
if(istype(src, /obj/item/clothing/gloves))
|
||||
var/obj/item/clothing/gloves/G = src
|
||||
G.transfer_blood = 0
|
||||
|
||||
//Cleaning blood off of turfs
|
||||
else if(istype(src, /turf/simulated))
|
||||
var/turf/simulated/T = src
|
||||
del(T.blood_DNA)
|
||||
if(T.icon_old)
|
||||
var/icon/I = new /icon(T.icon_old, T.icon_state)
|
||||
T.icon = I
|
||||
//Cleaning blood off of mobs
|
||||
if(istype(src, /mob/living/carbon))
|
||||
var/mob/living/carbon/M = src
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.gloves)
|
||||
if(H.gloves.clean_blood())
|
||||
H.update_inv_gloves(0)
|
||||
else
|
||||
T.icon = initial(icon)
|
||||
if(H.bloody_hands)
|
||||
H.bloody_hands = 0
|
||||
H.update_inv_gloves(0)
|
||||
M.update_icons() //apply the now updated overlays to the mob
|
||||
|
||||
else if(!blood_DNA.len)
|
||||
del(blood_DNA)
|
||||
//Cleaning blood off of items
|
||||
else if(istype(src, /obj/item))
|
||||
var/obj/item/O = src
|
||||
if(O.blood_overlay)
|
||||
O.overlays.Remove(O.blood_overlay)
|
||||
|
||||
if(istype(src, /obj/item/clothing/gloves))
|
||||
var/obj/item/clothing/gloves/G = src
|
||||
G.transfer_blood = 0
|
||||
|
||||
//Cleaning blood off of turfs
|
||||
else if(istype(src, /turf/simulated))
|
||||
var/turf/simulated/T = src
|
||||
if(T.icon_old)
|
||||
var/icon/I = new /icon(T.icon_old, T.icon_state)
|
||||
T.icon = I
|
||||
else
|
||||
T.icon = initial(icon)
|
||||
return
|
||||
|
||||
/atom/MouseDrop(atom/over_object as mob|obj|turf|area)
|
||||
|
||||
@@ -465,7 +465,7 @@ ________________________________________________________________________________
|
||||
if(t_disk)
|
||||
dat += "<a href='byond://?src=\ref[src];choice=Eject Disk'>Eject Disk</a><br>"
|
||||
dat += "<ul>"
|
||||
if(stored_research.len)//If there is stored research. Should be but just in case.
|
||||
if(istype(stored_research,/list))//If there is stored research. Should be but just in case.
|
||||
for(var/datum/tech/current_data in stored_research)
|
||||
dat += "<li>"
|
||||
dat += "[current_data.name]: [current_data.level]"
|
||||
|
||||
@@ -208,22 +208,22 @@
|
||||
if(M.l_hand)
|
||||
M.l_hand.clean_blood()
|
||||
if(M.wear_mask)
|
||||
M.wear_mask.clean_blood()
|
||||
M.update_inv_wear_mask(0)
|
||||
if(M.wear_mask.clean_blood())
|
||||
M.update_inv_wear_mask(0)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.head)
|
||||
H.head.clean_blood()
|
||||
H.update_inv_head(0)
|
||||
if(H.head.clean_blood())
|
||||
H.update_inv_head(0)
|
||||
if(H.wear_suit)
|
||||
H.wear_suit.clean_blood()
|
||||
H.update_inv_wear_suit(0)
|
||||
if(H.wear_suit.clean_blood())
|
||||
H.update_inv_wear_suit(0)
|
||||
else if(H.w_uniform)
|
||||
H.w_uniform.clean_blood()
|
||||
H.update_inv_w_uniform(0)
|
||||
if(H.w_uniform.clean_blood())
|
||||
H.update_inv_w_uniform(0)
|
||||
if(H.shoes)
|
||||
H.shoes.clean_blood()
|
||||
H.update_inv_shoes(0)
|
||||
if(H.shoes.clean_blood())
|
||||
H.update_inv_shoes(0)
|
||||
|
||||
O.clean_blood()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user