mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
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:
@@ -27,8 +27,8 @@
|
||||
anchored = 1
|
||||
|
||||
/obj/blob/idle
|
||||
name = "blob"
|
||||
desc = "it looks... frightened"
|
||||
name = "magma"
|
||||
desc = "it looks... calm"
|
||||
icon_state = "blobidle0"
|
||||
|
||||
/obj/mark
|
||||
|
||||
@@ -591,7 +591,7 @@
|
||||
|
||||
|
||||
/obj/machinery/dna_scannernew/blob_act()
|
||||
if(prob(50))
|
||||
if(prob(75))
|
||||
for(var/atom/movable/A as mob|obj in src)
|
||||
A.loc = src.loc
|
||||
del(src)
|
||||
@@ -613,7 +613,7 @@
|
||||
|
||||
/obj/machinery/scan_consolenew/blob_act()
|
||||
|
||||
if(prob(50))
|
||||
if(prob(75))
|
||||
del(src)
|
||||
|
||||
/obj/machinery/scan_consolenew/power_change()
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
if(T.Enter(B,src) && !(locate(/obj/blob) in T))
|
||||
B.loc = T // open cell, so expand
|
||||
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)
|
||||
for(var/atom/A in T) // otherwise explode contents of turf
|
||||
A.blob_act()
|
||||
@@ -114,16 +114,13 @@
|
||||
/obj/blob/attackby(var/obj/item/weapon/W, var/mob/user)
|
||||
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
|
||||
|
||||
if(istype(W, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
|
||||
if(WT.welding)
|
||||
damage = 15
|
||||
playsound(src.loc, 'Welder.ogg', 100, 1)
|
||||
if(istype(W, /obj/item/weapon/extinguisher))
|
||||
damage = 25
|
||||
playsound(src.loc, 'extinguish.ogg', 100, 1)
|
||||
|
||||
else if(istype(W, /obj/item/weapon/plantbgone))
|
||||
var/obj/item/weapon/plantbgone/PBG = W
|
||||
@@ -136,7 +133,7 @@
|
||||
|
||||
/obj/blob/examine()
|
||||
set src in oview(1)
|
||||
usr << "A mysterious alien blob-like organism."
|
||||
usr << "Mysterious magma."
|
||||
|
||||
/datum/station_state/proc/count()
|
||||
for(var/turf/T in world)
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
del(P)
|
||||
if(4)
|
||||
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')
|
||||
var/turf/T = pick(blobstart)
|
||||
var/obj/blob/bl = new /obj/blob( T.loc, 30 )
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
return
|
||||
|
||||
/obj/machinery/optable/blob_act()
|
||||
if(prob(50))
|
||||
if(prob(75))
|
||||
del(src)
|
||||
|
||||
/obj/machinery/optable/hand_p(mob/user as mob)
|
||||
|
||||
@@ -485,7 +485,7 @@
|
||||
return
|
||||
|
||||
/obj/machinery/bot/medbot/blob_act()
|
||||
if(prob(25))
|
||||
if(prob(50))
|
||||
src.explode()
|
||||
return
|
||||
|
||||
|
||||
@@ -687,7 +687,7 @@ Auto Patrol: []"},
|
||||
return
|
||||
|
||||
blob_act()
|
||||
if(prob(25))
|
||||
if(prob(50))
|
||||
src.explode()
|
||||
return
|
||||
|
||||
|
||||
@@ -78,7 +78,7 @@ Pod/Blast Doors computer
|
||||
return
|
||||
|
||||
/obj/machinery/computer/blob_act()
|
||||
if (prob(50))
|
||||
if (prob(75))
|
||||
for(var/x in src.verbs)
|
||||
src.verbs -= x
|
||||
set_broken()
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
return
|
||||
|
||||
/obj/machinery/dispenser/blob_act()
|
||||
if (prob(25))
|
||||
if (prob(50))
|
||||
while(src.o2tanks > 0)
|
||||
new /obj/item/weapon/tank/oxygen( src.loc )
|
||||
src.o2tanks--
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
return
|
||||
|
||||
/obj/machinery/door/blob_act()
|
||||
if(prob(20))
|
||||
if(prob(40))
|
||||
del(src)
|
||||
|
||||
/obj/machinery/door/ex_act(severity)
|
||||
|
||||
@@ -26,5 +26,5 @@
|
||||
return
|
||||
|
||||
/obj/machinery/blob_act()
|
||||
if(prob(25))
|
||||
if(prob(50))
|
||||
del(src)
|
||||
@@ -50,7 +50,7 @@
|
||||
return
|
||||
|
||||
/obj/machinery/vending/blob_act()
|
||||
if (prob(25))
|
||||
if (prob(50))
|
||||
spawn(0)
|
||||
src.malfunction()
|
||||
del(src)
|
||||
|
||||
@@ -97,7 +97,7 @@
|
||||
return
|
||||
|
||||
blob_act()
|
||||
if(prob(25))
|
||||
if(prob(50))
|
||||
src.death()
|
||||
return
|
||||
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
return
|
||||
|
||||
blob_act()
|
||||
if(prob(25))
|
||||
if(prob(50))
|
||||
src.death()
|
||||
return
|
||||
|
||||
|
||||
@@ -124,7 +124,7 @@
|
||||
|
||||
// this should probably use dump_contents()
|
||||
/obj/closet/blob_act()
|
||||
if (prob(50))
|
||||
if (prob(75))
|
||||
for(var/atom/movable/A as mob|obj in src)
|
||||
A.loc = src.loc
|
||||
del(src)
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
|
||||
/obj/displaycase/blob_act()
|
||||
if (prob(50))
|
||||
if (prob(75))
|
||||
new /obj/item/weapon/shard( src.loc )
|
||||
if (occupied)
|
||||
new /obj/item/weapon/gun/energy/laser_gun/captain( src.loc )
|
||||
|
||||
@@ -30,9 +30,8 @@
|
||||
return
|
||||
|
||||
/obj/grille/blob_act()
|
||||
src.health--
|
||||
src.healthcheck()
|
||||
|
||||
if (prob(70))
|
||||
del(src)
|
||||
|
||||
/obj/grille/meteorhit(var/obj/M)
|
||||
if (M.icon_state == "flaming")
|
||||
|
||||
@@ -428,9 +428,8 @@ LATTICE
|
||||
|
||||
|
||||
/obj/lattice/blob_act()
|
||||
if(prob(75))
|
||||
del(src)
|
||||
return
|
||||
del(src)
|
||||
return
|
||||
|
||||
/obj/lattice/ex_act(severity)
|
||||
switch(severity)
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
|
||||
|
||||
/obj/lamarr/blob_act()
|
||||
if (prob(50))
|
||||
if (prob(75))
|
||||
new /obj/item/weapon/shard( src.loc )
|
||||
if (occupied)
|
||||
var/obj/alien/facehugger/A = new /obj/alien/facehugger( src.loc )
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
return
|
||||
|
||||
/obj/securearea/blob_act()
|
||||
if (prob(50))
|
||||
if (prob(75))
|
||||
del(src)
|
||||
return
|
||||
return
|
||||
@@ -100,7 +100,7 @@
|
||||
del(src)
|
||||
|
||||
/obj/secure_closet/blob_act()
|
||||
if (prob(50))
|
||||
if (prob(75))
|
||||
for(var/atom/movable/A as mob|obj in src)
|
||||
A.loc = src.loc
|
||||
del(src)
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
return
|
||||
|
||||
/obj/stool/blob_act()
|
||||
if(prob(50))
|
||||
if(prob(75))
|
||||
new /obj/item/weapon/sheet/metal( src.loc )
|
||||
del(src)
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
return
|
||||
|
||||
/obj/stool/chair/blob_act()
|
||||
if(prob(50))
|
||||
if(prob(75))
|
||||
for(var/mob/M in src.loc)
|
||||
if(M.buckled == src)
|
||||
M.buckled = null
|
||||
|
||||
@@ -110,3 +110,7 @@ obj/structure
|
||||
return
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/structure/girder/blob_act()
|
||||
if(prob(10))
|
||||
del(src)
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
/obj/table/blob_act()
|
||||
|
||||
if(prob(50))
|
||||
if(prob(75))
|
||||
new /obj/item/weapon/table_parts( src.loc )
|
||||
del(src)
|
||||
|
||||
@@ -173,7 +173,7 @@
|
||||
return
|
||||
|
||||
/obj/rack/blob_act()
|
||||
if(prob(50))
|
||||
if(prob(75))
|
||||
del(src)
|
||||
return
|
||||
else if(prob(50))
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/obj/item/weapon/tank/blob_act()
|
||||
if(prob(25))
|
||||
if(prob(50))
|
||||
var/turf/location = src.loc
|
||||
if (!( istype(location, /turf) ))
|
||||
del(src)
|
||||
|
||||
@@ -38,11 +38,9 @@
|
||||
return
|
||||
|
||||
/obj/window/blob_act()
|
||||
if(prob(50))
|
||||
new /obj/item/weapon/shard( src.loc )
|
||||
if(reinf) new /obj/item/weapon/rods( src.loc)
|
||||
density = 0
|
||||
del(src)
|
||||
if(reinf) new /obj/item/weapon/rods( src.loc)
|
||||
density = 0
|
||||
del(src)
|
||||
|
||||
/obj/window/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||
if(istype(mover, /obj/beam))
|
||||
|
||||
@@ -270,7 +270,7 @@
|
||||
return
|
||||
|
||||
/turf/simulated/wall/blob_act()
|
||||
if(prob(20))
|
||||
if(prob(50))
|
||||
dismantle_wall()
|
||||
|
||||
/turf/simulated/wall/attack_paw(mob/user as mob)
|
||||
|
||||
@@ -1103,7 +1103,7 @@ var/showadminmessages = 1
|
||||
spawn(rand(300,600))
|
||||
del(P)
|
||||
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')
|
||||
var/turf/T = pick(blobstart)
|
||||
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=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=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=flicklights'>Ghost Mode</A><BR>
|
||||
<A href='?src=\ref[src];secretsfun=cleanexcrement'>Remove all urine/poo from station</A><BR>
|
||||
|
||||
@@ -261,15 +261,15 @@ to clean it up, or just beat the shit out of it (which takes ages).
|
||||
shielded = 1
|
||||
var/damage = null
|
||||
if (src.stat != 2)
|
||||
damage = rand(1,20)
|
||||
damage = rand(10,30)
|
||||
|
||||
if(shielded)
|
||||
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
|
||||
|
||||
|
||||
@@ -224,16 +224,16 @@ to clean it up, or just beat the shit out of it (which takes ages).
|
||||
|
||||
var/damage = null
|
||||
if (src.stat != 2)
|
||||
damage = rand(1,20)
|
||||
damage = rand(10,30)
|
||||
|
||||
if(shielded)
|
||||
damage /= 4
|
||||
|
||||
//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()
|
||||
return
|
||||
|
||||
@@ -482,14 +482,14 @@
|
||||
shielded = 1
|
||||
var/damage = null
|
||||
if (src.stat != 2)
|
||||
damage = rand(1,20)
|
||||
damage = rand(10,30)
|
||||
|
||||
if(shielded)
|
||||
damage /= 4
|
||||
|
||||
//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")
|
||||
|
||||
@@ -509,7 +509,7 @@
|
||||
if (src.weakened < 10)
|
||||
src.weakened = rand(10, 15)
|
||||
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)
|
||||
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)))
|
||||
@@ -520,12 +520,12 @@
|
||||
if (src.weakened < 5)
|
||||
src.weakened = 5
|
||||
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
|
||||
if (src.stunned < 5)
|
||||
src.stunned = 5
|
||||
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
|
||||
temp.take_damage(damage)
|
||||
if ("groin")
|
||||
|
||||
@@ -403,7 +403,7 @@
|
||||
|
||||
/mob/living/carbon/monkey/blob_act()
|
||||
if (src.stat != 2)
|
||||
src.bruteloss += 30
|
||||
src.fireloss += 60
|
||||
src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
|
||||
if (prob(50))
|
||||
src.paralysis += 10
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
|
||||
/mob/living/silicon/ai/blob_act()
|
||||
if (src.stat != 2)
|
||||
src.bruteloss += 30
|
||||
src.bruteloss += 60
|
||||
src.updatehealth()
|
||||
return 1
|
||||
return 0
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
/mob/living/silicon/hivebot/blob_act()
|
||||
if (src.stat != 2)
|
||||
src.bruteloss += 30
|
||||
src.bruteloss += 60
|
||||
src.updatehealth()
|
||||
return 1
|
||||
return 0
|
||||
|
||||
@@ -130,7 +130,7 @@
|
||||
|
||||
/mob/living/silicon/robot/blob_act()
|
||||
if (src.stat != 2)
|
||||
src.bruteloss += 30
|
||||
src.bruteloss += 60
|
||||
src.updatehealth()
|
||||
return 1
|
||||
return 0
|
||||
|
||||
@@ -924,7 +924,7 @@
|
||||
return
|
||||
|
||||
/obj/machinery/power/apc/blob_act()
|
||||
if (prob(50))
|
||||
if (prob(75))
|
||||
set_broken()
|
||||
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
return
|
||||
|
||||
/turf/simulated/floor/engine/blob_act()
|
||||
if (prob(15))
|
||||
if (prob(25))
|
||||
ReplaceWithSpace()
|
||||
del(src)
|
||||
return
|
||||
|
||||
@@ -297,7 +297,7 @@
|
||||
//blob effect
|
||||
|
||||
/obj/machinery/light/blob_act()
|
||||
if(prob(50))
|
||||
if(prob(75))
|
||||
broken()
|
||||
|
||||
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
return
|
||||
|
||||
/obj/machinery/power/solar/blob_act()
|
||||
if(prob(50))
|
||||
if(prob(75))
|
||||
broken()
|
||||
src.density = 0
|
||||
|
||||
@@ -289,6 +289,6 @@
|
||||
return
|
||||
|
||||
/obj/machinery/power/solar_control/blob_act()
|
||||
if (prob(50))
|
||||
if (prob(75))
|
||||
broken()
|
||||
src.density = 0
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 10 KiB |
Reference in New Issue
Block a user