Blob upgrade and reskin. Apparently it's nigh invincible, but playtesting will sort out if it's too much powerful.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@233 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
uporotiy
2010-09-30 20:28:45 +00:00
parent 2d6ad4b55e
commit 2d21a52a42
40 changed files with 66 additions and 69 deletions

View File

@@ -27,8 +27,8 @@
anchored = 1 anchored = 1
/obj/blob/idle /obj/blob/idle
name = "blob" name = "magma"
desc = "it looks... frightened" desc = "it looks... calm"
icon_state = "blobidle0" icon_state = "blobidle0"
/obj/mark /obj/mark

View File

@@ -591,7 +591,7 @@
/obj/machinery/dna_scannernew/blob_act() /obj/machinery/dna_scannernew/blob_act()
if(prob(50)) if(prob(75))
for(var/atom/movable/A as mob|obj in src) for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc A.loc = src.loc
del(src) del(src)
@@ -613,7 +613,7 @@
/obj/machinery/scan_consolenew/blob_act() /obj/machinery/scan_consolenew/blob_act()
if(prob(50)) if(prob(75))
del(src) del(src)
/obj/machinery/scan_consolenew/power_change() /obj/machinery/scan_consolenew/power_change()

View File

@@ -66,7 +66,7 @@
if(T.Enter(B,src) && !(locate(/obj/blob) in T)) if(T.Enter(B,src) && !(locate(/obj/blob) in T))
B.loc = T // open cell, so expand B.loc = T // open cell, so expand
else else
if(prob(50)) // closed cell, 50% chance to not expand if(prob(70)) // closed cell, 50% chance to not expand
if(!locate(/obj/blob) in T) if(!locate(/obj/blob) in T)
for(var/atom/A in T) // otherwise explode contents of turf for(var/atom/A in T) // otherwise explode contents of turf
A.blob_act() A.blob_act()
@@ -114,16 +114,13 @@
/obj/blob/attackby(var/obj/item/weapon/W, var/mob/user) /obj/blob/attackby(var/obj/item/weapon/W, var/mob/user)
playsound(src.loc, 'attackblob.ogg', 50, 1) playsound(src.loc, 'attackblob.ogg', 50, 1)
src.visible_message("\red <B>The blob has been attacked with \the [W][(user ? " by [user]." : ".")]") src.visible_message("\red <B>The magma has been attacked with \the [W][(user ? " by [user]." : ".")]")
var/damage = W.force / 4.0 var/damage = W.force / 4.0
if(istype(W, /obj/item/weapon/weldingtool)) if(istype(W, /obj/item/weapon/extinguisher))
var/obj/item/weapon/weldingtool/WT = W damage = 25
playsound(src.loc, 'extinguish.ogg', 100, 1)
if(WT.welding)
damage = 15
playsound(src.loc, 'Welder.ogg', 100, 1)
else if(istype(W, /obj/item/weapon/plantbgone)) else if(istype(W, /obj/item/weapon/plantbgone))
var/obj/item/weapon/plantbgone/PBG = W var/obj/item/weapon/plantbgone/PBG = W
@@ -136,7 +133,7 @@
/obj/blob/examine() /obj/blob/examine()
set src in oview(1) set src in oview(1)
usr << "A mysterious alien blob-like organism." usr << "Mysterious magma."
/datum/station_state/proc/count() /datum/station_state/proc/count()
for(var/turf/T in world) for(var/turf/T in world)

View File

@@ -53,7 +53,7 @@
del(P) del(P)
if(4) if(4)
event = 1 event = 1
command_alert("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert") command_alert("Confirmed anomaly type SPC-MGM-152 aboard [station_name()]. All personnel must destroy the anomaly.", "Anomaly Alert")
world << sound('outbreak5.ogg') world << sound('outbreak5.ogg')
var/turf/T = pick(blobstart) var/turf/T = pick(blobstart)
var/obj/blob/bl = new /obj/blob( T.loc, 30 ) var/obj/blob/bl = new /obj/blob( T.loc, 30 )

View File

@@ -25,7 +25,7 @@
return return
/obj/machinery/optable/blob_act() /obj/machinery/optable/blob_act()
if(prob(50)) if(prob(75))
del(src) del(src)
/obj/machinery/optable/hand_p(mob/user as mob) /obj/machinery/optable/hand_p(mob/user as mob)

View File

@@ -485,7 +485,7 @@
return return
/obj/machinery/bot/medbot/blob_act() /obj/machinery/bot/medbot/blob_act()
if(prob(25)) if(prob(50))
src.explode() src.explode()
return return

View File

@@ -687,7 +687,7 @@ Auto Patrol: []"},
return return
blob_act() blob_act()
if(prob(25)) if(prob(50))
src.explode() src.explode()
return return

View File

@@ -78,7 +78,7 @@ Pod/Blast Doors computer
return return
/obj/machinery/computer/blob_act() /obj/machinery/computer/blob_act()
if (prob(50)) if (prob(75))
for(var/x in src.verbs) for(var/x in src.verbs)
src.verbs -= x src.verbs -= x
set_broken() set_broken()

View File

@@ -21,7 +21,7 @@
return return
/obj/machinery/dispenser/blob_act() /obj/machinery/dispenser/blob_act()
if (prob(25)) if (prob(50))
while(src.o2tanks > 0) while(src.o2tanks > 0)
new /obj/item/weapon/tank/oxygen( src.loc ) new /obj/item/weapon/tank/oxygen( src.loc )
src.o2tanks-- src.o2tanks--

View File

@@ -135,7 +135,7 @@
return return
/obj/machinery/door/blob_act() /obj/machinery/door/blob_act()
if(prob(20)) if(prob(40))
del(src) del(src)
/obj/machinery/door/ex_act(severity) /obj/machinery/door/ex_act(severity)

View File

@@ -26,5 +26,5 @@
return return
/obj/machinery/blob_act() /obj/machinery/blob_act()
if(prob(25)) if(prob(50))
del(src) del(src)

View File

@@ -50,7 +50,7 @@
return return
/obj/machinery/vending/blob_act() /obj/machinery/vending/blob_act()
if (prob(25)) if (prob(50))
spawn(0) spawn(0)
src.malfunction() src.malfunction()
del(src) del(src)

View File

@@ -97,7 +97,7 @@
return return
blob_act() blob_act()
if(prob(25)) if(prob(50))
src.death() src.death()
return return

View File

@@ -110,7 +110,7 @@
return return
blob_act() blob_act()
if(prob(25)) if(prob(50))
src.death() src.death()
return return

View File

@@ -124,7 +124,7 @@
// this should probably use dump_contents() // this should probably use dump_contents()
/obj/closet/blob_act() /obj/closet/blob_act()
if (prob(50)) if (prob(75))
for(var/atom/movable/A as mob|obj in src) for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc A.loc = src.loc
del(src) del(src)

View File

@@ -32,7 +32,7 @@
/obj/displaycase/blob_act() /obj/displaycase/blob_act()
if (prob(50)) if (prob(75))
new /obj/item/weapon/shard( src.loc ) new /obj/item/weapon/shard( src.loc )
if (occupied) if (occupied)
new /obj/item/weapon/gun/energy/laser_gun/captain( src.loc ) new /obj/item/weapon/gun/energy/laser_gun/captain( src.loc )

View File

@@ -30,9 +30,8 @@
return return
/obj/grille/blob_act() /obj/grille/blob_act()
src.health-- if (prob(70))
src.healthcheck() del(src)
/obj/grille/meteorhit(var/obj/M) /obj/grille/meteorhit(var/obj/M)
if (M.icon_state == "flaming") if (M.icon_state == "flaming")

View File

@@ -428,9 +428,8 @@ LATTICE
/obj/lattice/blob_act() /obj/lattice/blob_act()
if(prob(75)) del(src)
del(src) return
return
/obj/lattice/ex_act(severity) /obj/lattice/ex_act(severity)
switch(severity) switch(severity)

View File

@@ -45,7 +45,7 @@
/obj/lamarr/blob_act() /obj/lamarr/blob_act()
if (prob(50)) if (prob(75))
new /obj/item/weapon/shard( src.loc ) new /obj/item/weapon/shard( src.loc )
if (occupied) if (occupied)
var/obj/alien/facehugger/A = new /obj/alien/facehugger( src.loc ) var/obj/alien/facehugger/A = new /obj/alien/facehugger( src.loc )

View File

@@ -12,7 +12,7 @@
return return
/obj/securearea/blob_act() /obj/securearea/blob_act()
if (prob(50)) if (prob(75))
del(src) del(src)
return return
return return

View File

@@ -100,7 +100,7 @@
del(src) del(src)
/obj/secure_closet/blob_act() /obj/secure_closet/blob_act()
if (prob(50)) if (prob(75))
for(var/atom/movable/A as mob|obj in src) for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc A.loc = src.loc
del(src) del(src)

View File

@@ -19,7 +19,7 @@
return return
/obj/stool/blob_act() /obj/stool/blob_act()
if(prob(50)) if(prob(75))
new /obj/item/weapon/sheet/metal( src.loc ) new /obj/item/weapon/sheet/metal( src.loc )
del(src) del(src)
@@ -194,7 +194,7 @@
return return
/obj/stool/chair/blob_act() /obj/stool/chair/blob_act()
if(prob(50)) if(prob(75))
for(var/mob/M in src.loc) for(var/mob/M in src.loc)
if(M.buckled == src) if(M.buckled == src)
M.buckled = null M.buckled = null

View File

@@ -110,3 +110,7 @@ obj/structure
return return
else else
..() ..()
/obj/structure/girder/blob_act()
if(prob(10))
del(src)

View File

@@ -18,7 +18,7 @@
/obj/table/blob_act() /obj/table/blob_act()
if(prob(50)) if(prob(75))
new /obj/item/weapon/table_parts( src.loc ) new /obj/item/weapon/table_parts( src.loc )
del(src) del(src)
@@ -173,7 +173,7 @@
return return
/obj/rack/blob_act() /obj/rack/blob_act()
if(prob(50)) if(prob(75))
del(src) del(src)
return return
else if(prob(50)) else if(prob(50))

View File

@@ -1,5 +1,5 @@
/obj/item/weapon/tank/blob_act() /obj/item/weapon/tank/blob_act()
if(prob(25)) if(prob(50))
var/turf/location = src.loc var/turf/location = src.loc
if (!( istype(location, /turf) )) if (!( istype(location, /turf) ))
del(src) del(src)

View File

@@ -38,11 +38,9 @@
return return
/obj/window/blob_act() /obj/window/blob_act()
if(prob(50)) if(reinf) new /obj/item/weapon/rods( src.loc)
new /obj/item/weapon/shard( src.loc ) density = 0
if(reinf) new /obj/item/weapon/rods( src.loc) del(src)
density = 0
del(src)
/obj/window/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) /obj/window/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
if(istype(mover, /obj/beam)) if(istype(mover, /obj/beam))

View File

@@ -270,7 +270,7 @@
return return
/turf/simulated/wall/blob_act() /turf/simulated/wall/blob_act()
if(prob(20)) if(prob(50))
dismantle_wall() dismantle_wall()
/turf/simulated/wall/attack_paw(mob/user as mob) /turf/simulated/wall/attack_paw(mob/user as mob)

View File

@@ -1103,7 +1103,7 @@ var/showadminmessages = 1
spawn(rand(300,600)) spawn(rand(300,600))
del(P) del(P)
if("goblob") if("goblob")
command_alert("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert") command_alert("Confirmed anomaly type SPC-MGM-152 aboard [station_name()]. All personnel must destroy the anomaly.", "Anomaly Alert")
world << sound('outbreak5.ogg') world << sound('outbreak5.ogg')
var/turf/T = pick(blobstart) var/turf/T = pick(blobstart)
var/obj/blob/bl = new /obj/blob( T.loc, 30 ) var/obj/blob/bl = new /obj/blob( T.loc, 30 )
@@ -1479,7 +1479,7 @@ var/showadminmessages = 1
<A href='?src=\ref[src];secretsfun=wave'>Spawn a wave of meteors</A><BR> <A href='?src=\ref[src];secretsfun=wave'>Spawn a wave of meteors</A><BR>
<A href='?src=\ref[src];secretsfun=gravanomalies'>Spawn a gravitational anomaly (Untested)</A><BR> <A href='?src=\ref[src];secretsfun=gravanomalies'>Spawn a gravitational anomaly (Untested)</A><BR>
<A href='?src=\ref[src];secretsfun=timeanomalies'>Spawn wormholes (Untested)</A><BR> <A href='?src=\ref[src];secretsfun=timeanomalies'>Spawn wormholes (Untested)</A><BR>
<A href='?src=\ref[src];secretsfun=goblob'>Spawn the bob(Untested)</A><BR> <A href='?src=\ref[src];secretsfun=goblob'>Spawn magma(Untested)</A><BR>
<A href='?src=\ref[src];secretsfun=aliens'>Trigger an Alien infestation</A><BR> <A href='?src=\ref[src];secretsfun=aliens'>Trigger an Alien infestation</A><BR>
<A href='?src=\ref[src];secretsfun=flicklights'>Ghost Mode</A><BR> <A href='?src=\ref[src];secretsfun=flicklights'>Ghost Mode</A><BR>
<A href='?src=\ref[src];secretsfun=cleanexcrement'>Remove all urine/poo from station</A><BR> <A href='?src=\ref[src];secretsfun=cleanexcrement'>Remove all urine/poo from station</A><BR>

View File

@@ -261,15 +261,15 @@ to clean it up, or just beat the shit out of it (which takes ages).
shielded = 1 shielded = 1
var/damage = null var/damage = null
if (src.stat != 2) if (src.stat != 2)
damage = rand(1,20) damage = rand(10,30)
if(shielded) if(shielded)
damage /= 4 damage /= 4
src.show_message("\red The blob attacks you!") src.show_message("\red The magma splashes on you!")
src.bruteloss += damage src.fireloss += damage
return return

View File

@@ -224,16 +224,16 @@ to clean it up, or just beat the shit out of it (which takes ages).
var/damage = null var/damage = null
if (src.stat != 2) if (src.stat != 2)
damage = rand(1,20) damage = rand(10,30)
if(shielded) if(shielded)
damage /= 4 damage /= 4
//src.paralysis += 1 //src.paralysis += 1
src.show_message("\red The blob attacks you!") src.show_message("\red The magma splashes on you!")
src.bruteloss += damage src.fireloss += damage
src.updatehealth() src.updatehealth()
return return

View File

@@ -482,14 +482,14 @@
shielded = 1 shielded = 1
var/damage = null var/damage = null
if (src.stat != 2) if (src.stat != 2)
damage = rand(1,20) damage = rand(10,30)
if(shielded) if(shielded)
damage /= 4 damage /= 4
//src.paralysis += 1 //src.paralysis += 1
src.show_message("\red The blob attacks you!") src.show_message("\red The magma splashes on you!")
var/list/zones = list("head","chest","chest", "groin", "l_arm", "r_arm", "l_hand", "r_hand", "l_leg", "r_leg", "l_foot", "r_foot") var/list/zones = list("head","chest","chest", "groin", "l_arm", "r_arm", "l_hand", "r_hand", "l_leg", "r_leg", "l_foot", "r_foot")
@@ -509,7 +509,7 @@
if (src.weakened < 10) if (src.weakened < 10)
src.weakened = rand(10, 15) src.weakened = rand(10, 15)
for(var/mob/O in viewers(src, null)) for(var/mob/O in viewers(src, null))
O.show_message(text("\red <B>The blob has weakened []!</B>", src), 1, "\red You hear someone fall.", 2) O.show_message(text("\red <B>The magma has weakened []!</B>", src), 1, "\red You hear someone fall.", 2)
temp.take_damage(damage) temp.take_damage(damage)
if ("chest") if ("chest")
if ((((src.wear_suit && src.wear_suit.body_parts_covered & UPPER_TORSO) || (src.w_uniform && src.w_uniform.body_parts_covered & UPPER_TORSO)) && prob(85))) if ((((src.wear_suit && src.wear_suit.body_parts_covered & UPPER_TORSO) || (src.w_uniform && src.w_uniform.body_parts_covered & UPPER_TORSO)) && prob(85)))
@@ -520,12 +520,12 @@
if (src.weakened < 5) if (src.weakened < 5)
src.weakened = 5 src.weakened = 5
for(var/mob/O in viewers(src, null)) for(var/mob/O in viewers(src, null))
O.show_message(text("\red <B>The blob has knocked down []!</B>", src), 1, "\red You hear someone fall.", 2) O.show_message(text("\red <B>The magma has knocked down []!</B>", src), 1, "\red You hear someone fall.", 2)
else else
if (src.stunned < 5) if (src.stunned < 5)
src.stunned = 5 src.stunned = 5
for(var/mob/O in viewers(src, null)) for(var/mob/O in viewers(src, null))
if(O.client) O.show_message(text("\red <B>The blob has stunned []!</B>", src), 1) if(O.client) O.show_message(text("\red <B>The magma has stunned []!</B>", src), 1)
if(src.stat != 2) src.stat = 1 if(src.stat != 2) src.stat = 1
temp.take_damage(damage) temp.take_damage(damage)
if ("groin") if ("groin")

View File

@@ -403,7 +403,7 @@
/mob/living/carbon/monkey/blob_act() /mob/living/carbon/monkey/blob_act()
if (src.stat != 2) if (src.stat != 2)
src.bruteloss += 30 src.fireloss += 60
src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
if (prob(50)) if (prob(50))
src.paralysis += 10 src.paralysis += 10

View File

@@ -114,7 +114,7 @@
/mob/living/silicon/ai/blob_act() /mob/living/silicon/ai/blob_act()
if (src.stat != 2) if (src.stat != 2)
src.bruteloss += 30 src.bruteloss += 60
src.updatehealth() src.updatehealth()
return 1 return 1
return 0 return 0

View File

@@ -34,7 +34,7 @@
/mob/living/silicon/hivebot/blob_act() /mob/living/silicon/hivebot/blob_act()
if (src.stat != 2) if (src.stat != 2)
src.bruteloss += 30 src.bruteloss += 60
src.updatehealth() src.updatehealth()
return 1 return 1
return 0 return 0

View File

@@ -130,7 +130,7 @@
/mob/living/silicon/robot/blob_act() /mob/living/silicon/robot/blob_act()
if (src.stat != 2) if (src.stat != 2)
src.bruteloss += 30 src.bruteloss += 60
src.updatehealth() src.updatehealth()
return 1 return 1
return 0 return 0

View File

@@ -924,7 +924,7 @@
return return
/obj/machinery/power/apc/blob_act() /obj/machinery/power/apc/blob_act()
if (prob(50)) if (prob(75))
set_broken() set_broken()

View File

@@ -33,7 +33,7 @@
return return
/turf/simulated/floor/engine/blob_act() /turf/simulated/floor/engine/blob_act()
if (prob(15)) if (prob(25))
ReplaceWithSpace() ReplaceWithSpace()
del(src) del(src)
return return

View File

@@ -297,7 +297,7 @@
//blob effect //blob effect
/obj/machinery/light/blob_act() /obj/machinery/light/blob_act()
if(prob(50)) if(prob(75))
broken() broken()

View File

@@ -103,7 +103,7 @@
return return
/obj/machinery/power/solar/blob_act() /obj/machinery/power/solar/blob_act()
if(prob(50)) if(prob(75))
broken() broken()
src.density = 0 src.density = 0
@@ -289,6 +289,6 @@
return return
/obj/machinery/power/solar_control/blob_act() /obj/machinery/power/solar_control/blob_act()
if (prob(50)) if (prob(75))
broken() broken()
src.density = 0 src.density = 0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 10 KiB