New gun: Freeze Gun. Metroids beware!

I also nerfed the damage water inflicts on Metroids because the previous amount of damage was absolutely insane.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1835 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
vageyenaman@gmail.com
2011-07-11 21:18:52 +00:00
parent d346ea9257
commit 76b5893e6e
9 changed files with 308 additions and 13 deletions
+23 -1
View File
@@ -165,6 +165,8 @@ datum
var/total_matching_reagents = 0
var/total_required_catalysts = C.required_catalysts.len
var/total_matching_catalysts= 0
var/matching_container = 0
var/matching_other = 0
var/list/multipliers = new/list()
for(var/B in C.required_reagents)
@@ -175,7 +177,27 @@ datum
if(has_reagent(B, C.required_catalysts[B]))
total_matching_catalysts++
if(total_matching_reagents == total_required_reagents && total_matching_catalysts == total_required_catalysts)
if(!C.required_container)
matching_container = 1
else
if(my_atom.type == C.required_container)
matching_container = 1
if(!C.required_other)
matching_other = 1
else
if(istype(my_atom, /obj/item/metroid_core))
var/obj/item/metroid_core/M = my_atom
if(M.POWERFLAG == C.required_other)
matching_other = 1
if(total_matching_reagents == total_required_reagents && total_matching_catalysts == total_required_catalysts && matching_container && matching_other)
var/multiplier = min(multipliers)
for(var/B in C.required_reagents)
remove_reagent(B, (multiplier * C.required_reagents[B]), safety = 1)
+8 -4
View File
@@ -209,7 +209,7 @@ datum
T.wet_overlay = null
for(var/mob/living/carbon/metroid/M in T)
M.toxloss+=rand(10,50)
M.toxloss+=rand(5,10)
var/hotspot = (locate(/obj/hotspot) in T)
if(hotspot && !istype(T, /turf/space))
@@ -798,7 +798,7 @@ datum
del(C)
for(var/mob/living/carbon/metroid/M in T)
M.toxloss+=rand(10,50)
M.toxloss+=rand(5,10)
reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
M.clean_blood()
@@ -1423,7 +1423,7 @@ datum
M.take_organ_damage(0, 1)
if(istype(M, /mob/living/carbon/metroid))
M:bodytemperature += rand(5,10)
M:bodytemperature += rand(5,20)
..()
return
@@ -1439,11 +1439,15 @@ datum
if(prob(40))
M.take_organ_damage(0, 1)
if(prob(80) && istype(M, /mob/living/carbon/metroid))
M.fireloss += rand(15,30)
M.fireloss += rand(5,20)
if(prob(5)) M << "\red You feel a terrible chill inside your body!"
..()
return
reaction_turf(var/turf/simulated/T, var/volume)
for(var/mob/living/carbon/metroid/M in T)
M.toxloss+=rand(15,30)
sodiumchloride
name = "Table Salt"
id = "sodiumchloride"
+149 -1
View File
@@ -503,7 +503,155 @@ datum
/////////////////////////////////////METROID CORE REACTIONS ///////////////////////////////
// TODO
metroid_explosion
name = "Explosion"
id = "m_explosion"
result = null
required_reagents = list("blood" = 1)
result_amount = 2
required_container = /obj/item/metroid_core
required_other = 2
on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
var/datum/effects/system/reagents_explosion/e = new()
e.set_up(round (created_volume/10, 1), location, 0, 0)
e.start()
holder.clear_reagents()
return
metroidjam
name = "Metroid Jam"
id = "m_jam"
result = "metroid"
required_reagents = list("water" = 1)
result_amount = 1
required_container = /obj/item/metroid_core
required_other = 2
metroidsynthi
name = "Metroid Synthetic Flesh"
id = "m_flesh"
result = null
required_reagents = list("sugar" = 1)
result_amount = 1
required_container = /obj/item/metroid_core
required_other = 2
on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
new /obj/item/weapon/syntiflesh(location)
return
metroidenzyme
name = "Metroid Enzyme"
id = "m_enzyme"
result = "enzyme"
required_reagents = list("blood" = 1, "water" = 1)
result_amount = 2
required_container = /obj/item/metroid_core
required_other = 3
metroidplasma
name = "Metroid Plasma"
id = "m_plasma"
result = "plasma"
required_reagents = list("sugar" = 1, "blood" = 2)
result_amount = 2
required_container = /obj/item/metroid_core
required_other = 3
metroidvirus
name = "Metroid Virus"
id = "m_virus"
result = null
required_reagents = list("sugar" = 1, "acid" = 1)
result_amount = 2
required_container = /obj/item/metroid_core
required_other = 3
on_reaction(var/datum/reagents/holder, var/created_volume)
holder.clear_reagents()
var/virus = pick(/datum/disease/flu, /datum/disease/cold, \
/datum/disease/pierrot_throat, /datum/disease/fake_gbs, \
/datum/disease/brainrot, /datum/disease/wizarditis, \
/datum/disease/magnitis)
var/datum/disease/F = new virus(0)
var/list/data = list("viruses"= list(F))
holder.add_reagent("blood", 20, data)
holder.add_reagent("cyanide", rand(1,10))
var/location = get_turf(holder.my_atom)
var/datum/effects/system/bad_smoke_spread/S = new /datum/effects/system/bad_smoke_spread
S.attach(location)
S.set_up(10, 0, location)
playsound(location, 'smoke.ogg', 50, 1, -3)
spawn(0)
S.start()
sleep(10)
S.start()
sleep(10)
S.start()
sleep(10)
S.start()
sleep(10)
S.start()
return
metroidchloral
name = "Metroid Chloral"
id = "m_bunch"
result = "chloralhydrate"
required_reagents = list("blood" = 1, "water" = 2)
result_amount = 2
required_container = /obj/item/metroid_core
required_other = 5
metroidxeno
name = "Metroid Xeno"
id = "m_xeno"
result = "xenomicrobes"
required_reagents = list("sugar" = 1)
result_amount = 1
required_container = /obj/item/metroid_core
required_other = 5
metroidfoam
name = "Metroid Foam"
id = "m_foam"
result = null
required_reagents = list("acid" = 1)
result_amount = 2
required_container = /obj/item/metroid_core
required_other = 5
on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
for(var/mob/M in viewers(5, location))
M << "\red The solution violently bubbles!"
location = get_turf(holder.my_atom)
for(var/mob/M in viewers(5, location))
M << "\red The solution spews out foam!"
//world << "Holder volume is [holder.total_volume]"
//for(var/datum/reagent/R in holder.reagent_list)
// world << "[R.name] = [R.volume]"
var/datum/effects/system/foam_spread/s = new()
s.set_up(created_volume, location, holder, 0)
s.start()
holder.clear_reagents()
return