mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2025-12-24 09:14:17 +00:00
109 lines
4.0 KiB
Plaintext
109 lines
4.0 KiB
Plaintext
/mob/camera/blob
|
|
name = "Blob Overmind"
|
|
real_name = "Blob Overmind"
|
|
icon = 'icons/mob/blob.dmi'
|
|
icon_state = "marker"
|
|
|
|
see_in_dark = 8
|
|
see_invisible = SEE_INVISIBLE_MINIMUM
|
|
invisibility = INVISIBILITY_OBSERVER
|
|
|
|
pass_flags = PASSBLOB
|
|
faction = list("blob")
|
|
|
|
var/obj/effect/blob/core/blob_core = null // The blob overmind's core
|
|
var/blob_points = 0
|
|
var/max_blob_points = 100
|
|
|
|
/mob/camera/blob/New()
|
|
var/new_name = "[initial(name)] ([rand(1, 999)])"
|
|
name = new_name
|
|
real_name = new_name
|
|
..()
|
|
|
|
/mob/camera/blob/Login()
|
|
..()
|
|
sync_mind()
|
|
|
|
src << "<span class='notice'>You are the overmind!</span>"
|
|
src << "You are the overmind and can control the blob! You can expand, which will attack people, and place new blob pieces such as..."
|
|
src << "<b>Normal Blob</b> will expand your reach and allow you to upgrade into special blobs that perform certain functions."
|
|
src << "<b>Shield Blob</b> is a strong and expensive blob which can take more damage. It is fireproof and can block air, use this to protect yourself from station fires."
|
|
src << "<b>Resource Blob</b> is a blob which will collect more resources for you, try to build these earlier to get a strong income. It will benefit from being near your core or multiple nodes, by having an increased resource rate; put it alone and it won't create resources at all."
|
|
src << "<b>Node Blob</b> is a blob which will grow, like the core. Unlike the core it won't give you a small income but it can power resource and factory blobs to increase their rate."
|
|
src << "<b>Factory Blob</b> is a blob which will spawn blob spores which will attack nearby food. Putting this nearby nodes and your core will increase the spawn rate; put it alone and it will not spawn any spores."
|
|
src << "<b>Shortcuts:</b> CTRL Click = Expand Blob / Middle Mouse Click = Rally Spores / Alt Click = Create Shield"
|
|
update_health()
|
|
|
|
/mob/camera/blob/proc/update_health()
|
|
if(blob_core)
|
|
hud_used.blobhealthdisplay.maptext = "<div align='center' valign='middle' style='position:relative; top:0px; left:6px'> <font color='#e36600'>[blob_core.health]</font></div>"
|
|
|
|
/mob/camera/blob/proc/add_points(var/points)
|
|
if(points != 0)
|
|
blob_points = Clamp(blob_points + points, 0, max_blob_points)
|
|
//sanity for manual spawned blob cameras
|
|
if(hud_used)
|
|
hud_used.blobpwrdisplay.maptext = "<div align='center' valign='middle' style='position:relative; top:0px; left:6px'> <font color='#82ed00'>[src.blob_points]</font></div>"
|
|
|
|
/mob/camera/blob/say(var/message)
|
|
if (!message)
|
|
return
|
|
|
|
if (src.client)
|
|
if(client.prefs.muted & MUTE_IC)
|
|
src << "You cannot send IC messages (muted)."
|
|
return
|
|
if (src.client.handle_spam_prevention(message,MUTE_IC))
|
|
return
|
|
|
|
if (stat)
|
|
return
|
|
|
|
blob_talk(message)
|
|
|
|
/mob/camera/blob/proc/blob_talk(message)
|
|
log_say("[key_name(src)] : [message]")
|
|
|
|
message = trim(sanitize(copytext(message, 1, MAX_MESSAGE_LEN)))
|
|
|
|
if (!message)
|
|
return
|
|
|
|
var/verb = "states,"
|
|
var/rendered = "<font color=\"#EE4000\"><i><span class='game say'>Blob Telepathy, <span class='name'>[name]</span> <span class='message'>[verb] \"[message]\"</span></span></i></font>"
|
|
|
|
for (var/mob/camera/blob/S in world)
|
|
if(istype(S))
|
|
S.show_message(rendered, 2)
|
|
|
|
for (var/mob/M in dead_mob_list)
|
|
if(!istype(M,/mob/new_player) && !istype(M,/mob/living/carbon/brain)) //No meta-evesdropping
|
|
rendered = "<font color=\"#EE4000\"><i><span class='game say'>Blob Telepathy, <span class='name'>[name]</span> (<a href='byond://?src=\ref[M];follow2=\ref[M];follow=\ref[src]'>follow</a>) <span class='message'>[verb] \"[message]\"</span></span></i></font>"
|
|
M.show_message(rendered, 2)
|
|
|
|
/mob/camera/blob/emote(var/act,var/m_type=1,var/message = null)
|
|
return
|
|
|
|
/mob/camera/blob/blob_act()
|
|
return
|
|
|
|
/mob/camera/blob/Stat()
|
|
|
|
statpanel("Status")
|
|
..()
|
|
if (client.statpanel == "Status")
|
|
if(blob_core)
|
|
stat(null, "Core Health: [blob_core.health]")
|
|
stat(null, "Power Stored: [blob_points]/[max_blob_points]")
|
|
return
|
|
|
|
/mob/camera/blob/Move(var/NewLoc, var/Dir = 0)
|
|
var/obj/effect/blob/B = locate() in range("3x3", NewLoc)
|
|
if(B)
|
|
loc = NewLoc
|
|
else
|
|
return 0
|
|
|
|
|