Poking at poking at blobs (#12602)

* Only took me a month

* I tinied
This commit is contained in:
Skullyton
2016-12-10 23:28:25 +00:00
committed by Intigracy
parent 9082e9bee0
commit 0a0b12dd45
23 changed files with 137 additions and 101 deletions

File diff suppressed because one or more lines are too long

View File

@@ -719,50 +719,32 @@
A.toggle_lights(usr,2)
/obj/screen/specialblob/Click()
switch(name)
if("Spawn Blob")
if(isovermind(usr))
var/mob/camera/blob/overmind = usr
if(isovermind(usr))
var/mob/camera/blob/overmind = usr
switch(name)
if("Spawn Blob")
overmind.expand_blob_power()
if("Spawn Strong Blob")
if(isovermind(usr))
var/mob/camera/blob/overmind = usr
if("Spawn Strong Blob")
overmind.create_shield_power()
if("Spawn Resource Blob")
if(isovermind(usr))
var/mob/camera/blob/overmind = usr
if("Spawn Resource Blob")
overmind.create_resource()
if("Spawn Factory Blob")
if(isovermind(usr))
var/mob/camera/blob/overmind = usr
if("Spawn Factory Blob")
overmind.create_factory()
if("Spawn Node Blob")
if(isovermind(usr))
var/mob/camera/blob/overmind = usr
if("Spawn Node Blob")
overmind.create_node()
if("Spawn Blob Core")
if(isovermind(usr))
var/mob/camera/blob/overmind = usr
if("Spawn Blob Core")
overmind.create_core()
if("Call Overminds")
if(isovermind(usr))
var/mob/camera/blob/overmind = usr
if("Call Overminds")
overmind.callblobs()
if("Rally Spores")
if(isovermind(usr))
var/mob/camera/blob/overmind = usr
if("Rally Spores")
overmind.rally_spores_power()
if("Psionic Message")
if(isovermind(usr))
var/mob/camera/blob/overmind = usr
if("Psionic Message")
var/message = input(overmind,"Send a message to the crew.","Psionic Message") as null|text
if(message)
overmind.telepathy(message)
if("Jump to Blob")
if(isovermind(usr) && linked_blob)
var/mob/camera/blob/overmind = usr
if("Jump to Blob")
overmind.forceMove(linked_blob.loc)
return 1
return 1
/obj/screen/inventory/Click()
// At this point in client Click() code we have passed the 1/10 sec check and little else

View File

@@ -432,7 +432,7 @@ its easier to just keep the beam vertical.
//DEBUG to_chat(pick(player_list),"blob_act() on [src] ([src.type])")
if(flags & INVULNERABLE)
return
anim(target = loc, a_icon = 'icons/mob/blob.dmi', flick_anim = "blob_act", sleeptime = 15, lay = 12)
anim(target = loc, a_icon = 'icons/mob/blob/blob.dmi', flick_anim = "blob_act", sleeptime = 15, lay = 12)
return
/*

View File

@@ -0,0 +1,11 @@
#define BLOBCORECOSTINC 50
#define BLOBCOREBASECOST 100
#define BLOBSHICOST 10
#define BLOBRESCOST 40
#define BLOBFACCOST 60
#define BLOBNODCOST 60
#define BLOBATTCOST 5
#define BLOBRALCOST 5
#define BLOBTAUNTCOST 15
#define BLOBNDPOINTINC 10

View File

@@ -44,7 +44,7 @@ datum/game_mode/proc/auto_declare_completion_blob()
if(blob_mode.infected_crew.len)
text += "<FONT size = 2><B>The blob[(blob_mode.infected_crew.len > 1 ? "s were" : " was")]:</B></FONT>"
var/icon/logo = icon('icons/mob/blob.dmi', "blob_core")
var/icon/logo = icon('icons/mob/blob/blob.dmi', "blob_core")
end_icons += logo
var/tempstate = end_icons.len
for(var/datum/mind/blob in blob_mode.infected_crew)

View File

@@ -25,7 +25,7 @@
blob_cores += src
processing_objects.Add(src)
creator = C
if((blob_looks[looks] == 64) && !no_morph)
if((icon_size == 64) && !no_morph)
if(new_overmind)
flick("core_spawn",src)
else
@@ -86,8 +86,8 @@
if(!spawning)//no expanding on the first Life() tick
if(blob_looks[looks] == 64)
anim(target = loc, a_icon = icon, flick_anim = "corepulse", sleeptime = 15, lay = 12, offX = -16, offY = -16, alph = 200)
if(icon_size == 64)
// anim(target = loc, a_icon = icon, flick_anim = "corepulse", sleeptime = 15, lay = 12, offX = -16, offY = -16, alph = 200)
for(var/mob/M in viewers(src))
M.playsound_local(loc, adminblob_beat, 50, 0, null, FALLOFF_SOUNDS, 0)
@@ -157,8 +157,8 @@
B.verbs += /mob/camera/blob/proc/create_core
spawn()
var/can_choose_from = blob_looks - "adminbus"
var/chosen = input(B,"Select a blob looks", "Blob Looks", blob_looks[1]) as null|anything in can_choose_from
var/can_choose_from = blob_looks_player
var/chosen = input(B,"Select a blob looks", "Blob Looks", blob_looks_player[1]) as null|anything in can_choose_from
if(chosen)
for(var/obj/effect/blob/nearby_blob in range(src,5))
nearby_blob.looks = chosen
@@ -184,7 +184,7 @@
return 0
/obj/effect/blob/core/update_icon(var/spawnend = 0)
if(blob_looks[looks] == 64)
if(icon_size == 64)
spawn(1)
overlays.len = 0
underlays.len = 0

View File

@@ -17,7 +17,7 @@
/obj/effect/blob/factory/New(loc,newlook = "new")
..()
if(blob_looks[looks] == 64)
if(icon_size == 64)
flick("morph_factory",src)
spore_delay = world.time + (2 SECONDS)
@@ -28,7 +28,7 @@
return 0
spore_delay = world.time + (40 SECONDS) // 30 seconds
if(blob_looks[looks] == 64)
if(icon_size == 64)
flick("factorypulse",src)
anim(target = loc, a_icon = icon, flick_anim = "sporepulse", sleeptime = 15, lay = 7.2, offX = -16, offY = -16, alph = 220)
spawn(10)
@@ -51,7 +51,7 @@
..()
/obj/effect/blob/factory/update_icon(var/spawnend = 0)
if(blob_looks[looks] == 64)
if(icon_size == 64)
spawn(1)
overlays.len = 0
underlays.len = 0
@@ -72,7 +72,7 @@
/mob/living/simple_animal/hostile/blobspore
name = "Blob Spore"
desc = "A form of blob antibodies that attack foreign entities."
icon = 'icons/mob/blob.dmi'
icon = 'icons/mob/blob/blob.dmi'
icon_state = "blobpod"
icon_living = "blobpod"
pass_flags = PASSBLOB
@@ -97,6 +97,7 @@
if(istype(linked_node))
factory = linked_node
factory.spores += src
icon = factory.icon
..()
/mob/living/simple_animal/hostile/blobspore/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)

View File

@@ -18,7 +18,7 @@
processing_objects.Add(src)
..(loc, newlook)
if((blob_looks[looks] == 64) && !no_morph)
if((icon_size == 64) && !no_morph)
flick("morph_node",src)
/obj/effect/blob/node/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
@@ -30,6 +30,7 @@
to_chat(overmind,"<span class='warning'>A node blob that you had created has been destroyed.</span> <b><a href='?src=\ref[overmind];blobjump=\ref[loc]'>(JUMP)</a></b>")
overmind.special_blobs -= src
overmind.update_specialblobs()
overmind.max_blob_points -= BLOBNDPOINTINC
processing_objects.Remove(src)
..()
@@ -37,8 +38,8 @@
if(timestopped)
return 0 //under effects of time magick
if(blob_looks[looks] == 64)
anim(target = loc, a_icon = icon, flick_anim = "nodepulse", sleeptime = 15, lay = 12, offX = -16, offY = -16, alph = 150)
if(icon_size == 64)
// anim(target = loc, a_icon = icon, flick_anim = "nodepulse", sleeptime = 15, lay = 12, offX = -16, offY = -16, alph = 150)
for(var/mob/M in viewers(src))
M.playsound_local(loc, adminblob_beat, 50, 0, null, FALLOFF_SOUNDS, 0)
@@ -53,7 +54,7 @@
return 0
/obj/effect/blob/node/update_icon(var/spawnend = 0)
if(blob_looks[looks] == 64)
if(icon_size == 64)
spawn(1)
overlays.len = 0
underlays.len = 0

View File

@@ -17,7 +17,7 @@
..()
blob_resources += src
if(blob_looks[looks] == 64)
if(icon_size == 64)
flick("morph_resource",src)
/obj/effect/blob/resource/Destroy()
@@ -46,8 +46,8 @@
resource_delay = world.time + (4 SECONDS)
if(overmind)
if(blob_looks[looks] == 64)
anim(target = loc, a_icon = icon, flick_anim = "resourcepulse", sleeptime = 15, lay = 7.2, offX = -16, offY = -16, alph = 220)
/* if(blob_looks[looks] == 64)
anim(target = loc, a_icon = icon, flick_anim = "resourcepulse", sleeptime = 15, lay = 7.2, offX = -16, offY = -16, alph = 220)*/
overmind.add_points(1)
return 1
@@ -59,7 +59,7 @@
else
color = "#888888"
if(blob_looks[looks] == 64)
if(icon_size == 64)
spawn(1)
overlays.len = 0
underlays.len = 0

View File

@@ -32,14 +32,14 @@
health += 10
return 1
/*
/obj/effect/blob/shield/Pulse(var/pulse = 0, var/origin_dir = 0)
..()
if(blob_looks[looks] == 64)
anim(target = loc, a_icon = 'icons/mob/blob_64x64.dmi', flick_anim = "strongpulse", sleeptime = 15, lay = 12, offX = -16, offY = -16, alph = 51)
*/
/obj/effect/blob/shield/update_icon(var/spawnend = 0)
if(blob_looks[looks] == 64)
if(icon_size == 64)
spawn(1)
overlays.len = 0
underlays.len = 0

View File

@@ -1,7 +1,7 @@
/mob/camera/blob
name = "Blob Overmind"
real_name = "Blob Overmind"
icon = 'icons/mob/blob.dmi'
icon = 'icons/mob/blob/blob.dmi'
icon_state = "marker"
see_in_dark = 8
@@ -112,7 +112,7 @@
if(points != 0)
blob_points = Clamp(blob_points + points, 0, max_blob_points)
stat_collection.blobblob.res_generated += points
var/number_of_cores = blob_cores.len
//Updating the HUD
if(hud_used)
var/matrix/M = matrix()
@@ -134,19 +134,19 @@
hud_used.mymob.gui_icons.blob_rally.color = grayscale
hud_used.mymob.gui_icons.blob_taunt.color = grayscale
if(blob_points >= 5)
if(blob_points >= BLOBATTCOST)
hud_used.mymob.gui_icons.blob_spawnblob.color = null
hud_used.mymob.gui_icons.blob_rally.color = null
if(blob_points >= 10)
if(blob_points >= BLOBSHICOST)
hud_used.mymob.gui_icons.blob_spawnstrong.color = null
if(blob_points >= 15)
if(blob_points >= BLOBTAUNTCOST)
hud_used.mymob.gui_icons.blob_taunt.color = null
if(blob_points >= 40)
if(blob_points >= BLOBRESCOST)
hud_used.mymob.gui_icons.blob_spawnresource.color = null
if(blob_points >= 60)
if(blob_points >= BLOBFACCOST)
hud_used.mymob.gui_icons.blob_spawnfactory.color = null
hud_used.mymob.gui_icons.blob_spawnnode.color = null
if(blob_points >= 100)
if(blob_points >= BLOBCOREBASECOST+(BLOBCORECOSTINC*(number_of_cores-1)))
hud_used.mymob.gui_icons.blob_spawncore.color = null
/mob/camera/blob/say(var/message)

View File

@@ -33,7 +33,7 @@
/mob/camera/blob/verb/create_shield_power()
set category = "Blob"
set name = "Create Shield Blob (10)"
set name = "Create Shield Blob"
set desc = "Create a shield blob."
var/turf/T = get_turf(src)
@@ -52,7 +52,7 @@
to_chat(src, "Unable to use this blob, find a normal one.")
return
if(!can_buy(10))
if(!can_buy(BLOBSHICOST))
return
@@ -63,7 +63,7 @@
/mob/camera/blob/verb/create_resource()
set category = "Blob"
set name = "Create Resource Blob (40)"
set name = "Create Resource Blob"
set desc = "Create a resource tower which will generate points for you."
@@ -86,7 +86,7 @@
to_chat(src, "There is a resource blob nearby, move more than 4 tiles away from it!")
return
if(!can_buy(40))
if(!can_buy(BLOBRESCOST))
return
@@ -100,7 +100,7 @@
/mob/camera/blob/proc/create_core()
set category = "Blob"
set name = "Create Core Blob (100)"
set name = "Create Core Blob"
set desc = "Create another Core Blob to aid in the station takeover"
@@ -122,8 +122,11 @@
for(var/obj/effect/blob/core/blob in orange(15))
to_chat(src, "There is another core blob nearby, move more than 15 tiles away from it!")
return
var/number_of_cores = blob_cores.len
var/cost = BLOBCOREBASECOST+(BLOBCORECOSTINC*(number_of_cores-1))
if(!can_buy(100))
if(!can_buy(cost))
to_chat(src, "Current cost of a blob core is [cost]!")
return
@@ -133,7 +136,7 @@
/mob/camera/blob/verb/create_node()
set category = "Blob"
set name = "Create Node Blob (60)"
set name = "Create Node Blob"
set desc = "Create a Node."
@@ -156,7 +159,7 @@
to_chat(src, "There is another node nearby, move more than 5 tiles away from it!")
return
if(!can_buy(60))
if(!can_buy(BLOBNODCOST))
return
@@ -166,12 +169,13 @@
N.overmind = src
special_blobs += N
update_specialblobs()
max_blob_points += BLOBNDPOINTINC
return
/mob/camera/blob/verb/create_factory()
set category = "Blob"
set name = "Create Factory Blob (60)"
set name = "Create Factory Blob"
set desc = "Create a Spore producing blob."
@@ -193,7 +197,7 @@
to_chat(src, "There is a factory blob nearby, move more than 7 tiles away from it!")
return
if(!can_buy(60))
if(!can_buy(BLOBFACCOST))
return
B.change_to(/obj/effect/blob/factory)
@@ -254,7 +258,7 @@
/mob/camera/blob/verb/expand_blob_power()
set category = "Blob"
set name = "Expand/Attack Blob (5)"
set name = "Expand/Attack Blob"
set desc = "Attempts to create a new blob in this tile. If the tile isn't clear we will attack it, which might clear it."
var/turf/T = get_turf(src)
@@ -274,7 +278,7 @@
to_chat(src, "There is no blob adjacent to you.")
return
if(!can_buy(5))
if(!can_buy(BLOBATTCOST))
return
OB.expand(T, 0)
return
@@ -282,7 +286,7 @@
/mob/camera/blob/verb/rally_spores_power()
set category = "Blob"
set name = "Rally Spores (5)"
set name = "Rally Spores"
set desc = "Rally the spores to move to your location."
var/turf/T = get_turf(src)
@@ -291,7 +295,7 @@
/mob/camera/blob/proc/rally_spores(var/turf/T)
if(!can_buy(5))
if(!can_buy(BLOBRALCOST))
return
to_chat(src, "You rally your spores.")
@@ -306,12 +310,20 @@
BS.Goto(pick(surrounding_turfs), BS.move_to_delay)
return
/mob/camera/blob/verb/telepathy(message as text)
/mob/camera/blob/verb/telepathy_power()
set category = "Blob"
set name = "Psionic Message (15)"
set name = "Psionic Message"
set desc = "Give a psionic message to all creatures on and around the station."
telepathy()
/mob/camera/blob/proc/telepathy(message as text)
if(!can_buy(BLOBTAUNTCOST))
return
to_chat(world, "<span class='warning'>Your vision becomes cloudy, and your mind becomes clear.</span>")
spawn(5)
to_chat(world, "<span class='blob'>[message]</span>")
add_gamelogs(src, "used blob telepathy to convey \"[message]\"", tp_link = TRUE)
log_blobtelepathy("[key_name(usr)]: [message]")

View File

@@ -38,7 +38,7 @@ var/list/blob_looks
/obj/effect/blob
name = "blob"
icon = 'icons/mob/blob_64x64.dmi'
icon = 'icons/mob/blob/blob_64x64.dmi'
icon_state = "center"
luminosity = 2
desc = "Some blob creature thingy"
@@ -70,6 +70,7 @@ var/list/blob_looks
var/icon_classic = "blob"
var/manual_remove = 0
var/icon_size = 64
/obj/effect/blob/blob_act()
return
@@ -87,7 +88,7 @@ var/list/blob_looks
src.dir = pick(cardinal)
time_since_last_pulse = world.time
if(blob_looks[looks] == 64)
if(icon_size == 64)
if(spawning && !no_morph)
icon_state = initial(icon_state) + "_spawn"
spawn(10)
@@ -110,7 +111,7 @@ var/list/blob_looks
dying = 1
blobs -= src
if(blob_looks[looks] == 64)
if(icon_size == 64)
for(var/atom/movable/overlay/O in loc)
returnToPool(O)
@@ -230,7 +231,7 @@ var/list/blob_looks
return
/obj/effect/blob/update_icon(var/spawnend = 0)
if(blob_looks[looks] == 64)
if(icon_size == 64)
if(health < maxhealth)
var/hurt_percentage = round((health * 100) / maxhealth)
var/hurt_icon
@@ -246,9 +247,10 @@ var/list/blob_looks
overlays += image(icon,hurt_icon)
/obj/effect/blob/proc/update_looks(var/right_now = 0)
switch(blob_looks[looks])
switch(blob_looks_admin[looks]) //blob_looks_admin should have every possible blob skin
if(64)
icon_state = icon_new
icon_size = 64
pixel_x = -WORLD_ICON_SIZE/2
pixel_y = -WORLD_ICON_SIZE/2
layer = initial(layer)
@@ -256,6 +258,7 @@ var/list/blob_looks
spawning = 0
if(32)
icon_state = icon_classic
icon_size = 32
pixel_x = 0
pixel_y = 0
layer = OBJ_LAYER
@@ -263,11 +266,15 @@ var/list/blob_looks
switch(looks)
if("new")
icon = 'icons/mob/blob_64x64.dmi'
icon = 'icons/mob/blob/blob_64x64.dmi'
if("classic")
icon = 'icons/mob/blob.dmi'
icon = 'icons/mob/blob/blob.dmi'
if("adminbus")
icon = adminblob_icon
if("clownscape")
icon = 'icons/mob/blob/blob_honkscape.dmi'
if("AME")
icon = 'icons/mob/blob/blob_AME.dmi'
//<----------------------------------------------------------------------------DEAR SPRITERS, THIS IS WHERE YOU ADD YOUR NEW BLOB DMIs
/*EXAMPLES
if("fleshy")
@@ -279,10 +286,17 @@ var/list/blob_looks
if(right_now)
update_icon()
var/list/blob_looks = list(
var/list/blob_looks_admin = list(//Options available to admins
"new" = 64,
"classic" = 32,
"adminbus" = adminblob_size,
"clownscape" = 32,
"AME" = 32,
)
var/list/blob_looks_player = list(//Options available to players
"new" = 64,
"classic" = 32,
)
//<---------------------------------------ALSO ADD THE NAME OF YOUR BLOB LOOKS HERE, AS WELL AS THE RESOLUTION OF THE DMIS (64 or 32)
@@ -358,7 +372,7 @@ var/list/blob_looks = list(
var/obj/effect/blob/normal/B = new(src.loc, newlook = looks)
B.density = 1
if(blob_looks[looks] == 64)
if(icon_size == 64)
if(istype(src,/obj/effect/blob/normal))
var/num = rand(1,100)
num /= 10000
@@ -366,7 +380,7 @@ var/list/blob_looks = list(
if(T.Enter(B,src))//Attempt to move into the tile
B.density = initial(B.density)
if(blob_looks[looks] == 64)
if(icon_size == 64)
spawn(1)
B.forceMove(T)
B.aftermove()
@@ -413,14 +427,14 @@ var/list/blob_looks = list(
/obj/effect/blob/normal/Delete()
..()
/*
/obj/effect/blob/normal/Pulse(var/pulse = 0, var/origin_dir = 0)
..()
if(blob_looks[looks] == 64)
if(icon_size == 64)
anim(target = loc, a_icon = icon, flick_anim = "pulse", sleeptime = 15, direction = dir, lay = 12, offX = -16, offY = -16, alph = 51)
*/
/obj/effect/blob/normal/update_icon(var/spawnend = 0)
if(blob_looks[looks] == 64)
if(icon_size == 64)
spawn(1)
overlays.len = 0
underlays.len = 0

View File

@@ -191,6 +191,7 @@ var/global/floorIsLava = 0
<A href='?src=\ref[src];simplemake=ian;mob=\ref[M]'>Ian</A> |
<A href='?src=\ref[src];simplemake=crab;mob=\ref[M]'>Crab</A> |
<A href='?src=\ref[src];simplemake=coffee;mob=\ref[M]'>Coffee</A>
<A href='?src=\ref[src];simplemake=blob;mob=\ref[M]'>BLOB</A>
<br>\[ Silicon: <A href='?src=\ref[src];simplemake=ai;mob=\ref[M]'>AI</A>, |
<A href='?src=\ref[src];simplemake=robot;mob=\ref[M]'>Cyborg</A> \]
<br>\[ Alien: <A href='?src=\ref[src];simplemake=drone;mob=\ref[M]'>Drone</A>,

View File

@@ -1060,8 +1060,8 @@ var/list/admin_verbs_mod = list(
set category = "Fun"
var/to_choose_from = list("ADMINBUS (custom DMI upload)")
to_choose_from += blob_looks - "adminbus"
var/chosen = input("This will change the looks of every blob currently in the world.", "Blob Looks", blob_looks[1]) as null|anything in to_choose_from
to_choose_from += blob_looks_admin
var/chosen = input("This will change the looks of every blob currently in the world.", "Blob Looks", blob_looks_admin[1]) as null|anything in to_choose_from
if(!chosen)
return
@@ -1077,7 +1077,7 @@ var/list/admin_verbs_mod = list(
else
adminblob_beat = 'sound/effects/blob_pulse.ogg'
blob_looks["adminbus"] = adminblob_size
blob_looks_admin["adminbus"] = adminblob_size
chosen = "adminbus"
else
adminblob_icon = null

View File

@@ -421,6 +421,11 @@
new_mob = M.change_mob_type( /mob/living/simple_animal/construct/wraith , null, null, delmob )
if("shade")
new_mob = M.change_mob_type( /mob/living/simple_animal/shade , null, null, delmob )
if("blob")
var/obj/effect/blob/core/core = new(loc = get_turf(M), new_overmind = M.client)
new_mob = core.overmind
if(delmob)
qdel(M)
if("ai")
new_mob = M.AIize(spawn_here = 1, del_mob = delmob)
// to_chat(world, "Made a [new_mob] [usr ? "usr still exists" : "usr does not exist"]")

View File

@@ -438,3 +438,7 @@
l.show_message("<span class=\"warning\">You hear an uneartly ringing and notice your skin is covered in fresh radiation burns.</span>", 2)
var/rads = 500 * sqrt( 1 / (get_dist(l, src) + 1) )
l.apply_effect(rads, IRRADIATE, 0) // Permit blocking
/obj/machinery/power/supermatter/blob_act()
explode()

View File

Before

Width:  |  Height:  |  Size: 248 KiB

After

Width:  |  Height:  |  Size: 248 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 321 KiB

BIN
icons/mob/blob/blob_AME.dmi Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 312 KiB

View File

@@ -300,6 +300,7 @@
#include "code\game\gamemodes\setupgame.dm"
#include "code\game\gamemodes\steal_items.dm"
#include "code\game\gamemodes\autotraitor\autotraitor.dm"
#include "code\game\gamemodes\blob\_blob_defines.dm"
#include "code\game\gamemodes\blob\blob.dm"
#include "code\game\gamemodes\blob\blob_finish.dm"
#include "code\game\gamemodes\blob\blob_report.dm"