diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index ffe718cca79..88e7dd8b429 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -194,3 +194,17 @@ #define ui_adminbus_tdarena "2:4,13:26" #define ui_adminbus_tdgreen "3:6,13:26" #define ui_adminbus_tdobs "2:4,14:28" + +//Blob HUD +#define ui_blob_bg "1:0,1:0" +#define ui_blob_powerbar "1:0,5:0" +#define ui_blob_healthbar "15:14,5:0" +#define ui_blob_spawnblob "1:18,5:5" +#define ui_blob_spawnstrong "1:18,6:9" +#define ui_blob_spawnresource "1:18,7:13" +#define ui_blob_spawnfactory "1:18,8:17" +#define ui_blob_spawnnode "1:18,9:21" +#define ui_blob_spawncore "1:18,10:25" +#define ui_blob_ping "14:24,11:21" +#define ui_blob_rally "14:24,12:25" +#define ui_blob_taunt "14:24,13:29" diff --git a/code/_onclick/hud/adminbus.dm b/code/_onclick/hud/adminbus.dm index 074509bc398..665458ec483 100644 --- a/code/_onclick/hud/adminbus.dm +++ b/code/_onclick/hud/adminbus.dm @@ -1,210 +1,210 @@ /datum/hud/proc/adminbus_hud() - mymob.gui_icons.adminbus_bg = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_bg = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_bg.icon = 'icons/adminbus/fullscreen.dmi' mymob.gui_icons.adminbus_bg.icon_state = "HUD" mymob.gui_icons.adminbus_bg.name = "HUD" mymob.gui_icons.adminbus_bg.layer = 19 mymob.gui_icons.adminbus_bg.screen_loc = ui_adminbus_bg - mymob.gui_icons.adminbus_delete = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_delete = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_delete.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_delete.icon_state = "icon_delete" mymob.gui_icons.adminbus_delete.name = "Delete Bus" mymob.gui_icons.adminbus_delete.screen_loc = ui_adminbus_delete - mymob.gui_icons.adminbus_delmobs = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_delmobs = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_delmobs.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_delmobs.icon_state = "icon_delmobs" mymob.gui_icons.adminbus_delmobs.name = "Delete Mobs" mymob.gui_icons.adminbus_delmobs.screen_loc = ui_adminbus_delmobs - mymob.gui_icons.adminbus_spclowns = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_spclowns = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_spclowns.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_spclowns.icon_state = "icon_spclown" mymob.gui_icons.adminbus_spclowns.name = "Spawn Clowns" mymob.gui_icons.adminbus_spclowns.screen_loc = ui_adminbus_spclowns - mymob.gui_icons.adminbus_spcarps = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_spcarps = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_spcarps.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_spcarps.icon_state = "icon_spcarp" mymob.gui_icons.adminbus_spcarps.name = "Spawn Carps" mymob.gui_icons.adminbus_spcarps.screen_loc = ui_adminbus_spcarps - mymob.gui_icons.adminbus_spbears = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_spbears = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_spbears.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_spbears.icon_state = "icon_spbear" mymob.gui_icons.adminbus_spbears.name = "Spawn Bears" mymob.gui_icons.adminbus_spbears.screen_loc = ui_adminbus_spbears - mymob.gui_icons.adminbus_sptrees = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_sptrees = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_sptrees.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_sptrees.icon_state = "icon_sptree" mymob.gui_icons.adminbus_sptrees.name = "Spawn Trees" mymob.gui_icons.adminbus_sptrees.screen_loc = ui_adminbus_sptrees - mymob.gui_icons.adminbus_spspiders = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_spspiders = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_spspiders.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_spspiders.icon_state = "icon_spspider" mymob.gui_icons.adminbus_spspiders.name = "Spawn Spiders" mymob.gui_icons.adminbus_spspiders.screen_loc = ui_adminbus_spspiders - mymob.gui_icons.adminbus_spalien = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_spalien = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_spalien.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_spalien.icon_state = "icon_spalien" mymob.gui_icons.adminbus_spalien.name = "Spawn Large Alien Queen" mymob.gui_icons.adminbus_spalien.screen_loc = ui_adminbus_spalien - mymob.gui_icons.adminbus_loadsids = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_loadsids = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_loadsids.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_loadsids.icon_state = "icon_loadsids" mymob.gui_icons.adminbus_loadsids.name = "Spawn Loads of Captain Spare IDs" mymob.gui_icons.adminbus_loadsids.screen_loc = ui_adminbus_loadsids - mymob.gui_icons.adminbus_loadsmoney = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_loadsmoney = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_loadsmoney.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_loadsmoney.icon_state = "icon_loadsmone" mymob.gui_icons.adminbus_loadsmoney.name = "Spawn Loads of Money" mymob.gui_icons.adminbus_loadsmoney.screen_loc = ui_adminbus_loadsmone - mymob.gui_icons.adminbus_massrepair = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_massrepair = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_massrepair.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_massrepair.icon_state = "icon_massrepair" mymob.gui_icons.adminbus_massrepair.name = "Repair Surroundings" mymob.gui_icons.adminbus_massrepair.screen_loc = ui_adminbus_massrepair - mymob.gui_icons.adminbus_massrejuv = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_massrejuv = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_massrejuv.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_massrejuv.icon_state = "icon_massrejuv" mymob.gui_icons.adminbus_massrejuv.name = "Mass Rejuvination" mymob.gui_icons.adminbus_massrejuv.screen_loc = ui_adminbus_massrejuv - mymob.gui_icons.adminbus_hook = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_hook = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_hook.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_hook.icon_state = "icon_hook" mymob.gui_icons.adminbus_hook.name = "Singularity Hook" mymob.gui_icons.adminbus_hook.screen_loc = ui_adminbus_hook - mymob.gui_icons.adminbus_juke = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_juke = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_juke.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_juke.icon_state = "icon_jukebox" mymob.gui_icons.adminbus_juke.name = "Adminbus-mounted Jukebox" mymob.gui_icons.adminbus_juke.screen_loc = ui_adminbus_juke - mymob.gui_icons.adminbus_tele = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_tele = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_tele.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_tele.icon_state = "icon_teleport" mymob.gui_icons.adminbus_tele.name = "Teleportation" mymob.gui_icons.adminbus_tele.screen_loc = ui_adminbus_tele - mymob.gui_icons.adminbus_bumpers_1 = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_bumpers_1 = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_bumpers_1.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_bumpers_1.icon_state = "icon_bumpers_1-on" mymob.gui_icons.adminbus_bumpers_1.name = "Capture Mobs" mymob.gui_icons.adminbus_bumpers_1.screen_loc = ui_adminbus_bumpers_1 - mymob.gui_icons.adminbus_bumpers_2 = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_bumpers_2 = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_bumpers_2.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_bumpers_2.icon_state = "icon_bumpers_2-off" mymob.gui_icons.adminbus_bumpers_2.name = "Hit Mobs" mymob.gui_icons.adminbus_bumpers_2.screen_loc = ui_adminbus_bumpers_2 - mymob.gui_icons.adminbus_bumpers_3 = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_bumpers_3 = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_bumpers_3.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_bumpers_3.icon_state = "icon_bumpers_3-off" mymob.gui_icons.adminbus_bumpers_3.name = "Gib Mobs" mymob.gui_icons.adminbus_bumpers_3.screen_loc = ui_adminbus_bumpers_3 - mymob.gui_icons.adminbus_door_0 = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_door_0 = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_door_0.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_door_0.icon_state = "icon_door_0-on" mymob.gui_icons.adminbus_door_0.name = "Close Door" mymob.gui_icons.adminbus_door_0.screen_loc = ui_adminbus_door_0 - mymob.gui_icons.adminbus_door_1 = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_door_1 = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_door_1.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_door_1.icon_state = "icon_door_1-off" mymob.gui_icons.adminbus_door_1.name = "Open Door" mymob.gui_icons.adminbus_door_1.screen_loc = ui_adminbus_door_1 - mymob.gui_icons.adminbus_roadlights_0 = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_roadlights_0 = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_roadlights_0.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_roadlights_0.icon_state = "icon_lights_0-on" mymob.gui_icons.adminbus_roadlights_0.name = "Turn Off Headlights" mymob.gui_icons.adminbus_roadlights_0.screen_loc = ui_adminbus_roadlights_0 - mymob.gui_icons.adminbus_roadlights_1 = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_roadlights_1 = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_roadlights_1.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_roadlights_1.icon_state = "icon_lights_1-off" mymob.gui_icons.adminbus_roadlights_1.name = "Dipped Headlights" mymob.gui_icons.adminbus_roadlights_1.screen_loc = ui_adminbus_roadlights_1 - mymob.gui_icons.adminbus_roadlights_2 = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_roadlights_2 = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_roadlights_2.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_roadlights_2.icon_state = "icon_lights_2-off" mymob.gui_icons.adminbus_roadlights_2.name = "Main Headlights" mymob.gui_icons.adminbus_roadlights_2.screen_loc = ui_adminbus_roadlights_2 - mymob.gui_icons.adminbus_free = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_free = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_free.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_free.icon_state = "icon_free" mymob.gui_icons.adminbus_free.name = "Release Passengers" mymob.gui_icons.adminbus_free.screen_loc = ui_adminbus_free - mymob.gui_icons.adminbus_home = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_home = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_home.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_home.icon_state = "icon_home" mymob.gui_icons.adminbus_home.name = "Send Passengers Back Home" mymob.gui_icons.adminbus_home.screen_loc = ui_adminbus_home - mymob.gui_icons.adminbus_antag = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_antag = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_antag.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_antag.icon_state = "icon_antag" mymob.gui_icons.adminbus_antag.name = "Antag Madness!" mymob.gui_icons.adminbus_antag.screen_loc = ui_adminbus_antag - mymob.gui_icons.adminbus_dellasers = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_dellasers = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_dellasers.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_dellasers.icon_state = "icon_delgiven" mymob.gui_icons.adminbus_dellasers.name = "Delete the given Infinite Laser Guns" mymob.gui_icons.adminbus_dellasers.screen_loc = ui_adminbus_dellasers - mymob.gui_icons.adminbus_givelasers = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_givelasers = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_givelasers.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_givelasers.icon_state = "icon_givelasers" mymob.gui_icons.adminbus_givelasers.name = "Give Infinite Laser Guns to the Passengers" mymob.gui_icons.adminbus_givelasers.screen_loc = ui_adminbus_givelasers - mymob.gui_icons.adminbus_delbombs = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_delbombs = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_delbombs.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_delbombs.icon_state = "icon_delgiven" mymob.gui_icons.adminbus_delbombs.name = "Delete the given Fuse-Bombs" mymob.gui_icons.adminbus_delbombs.screen_loc = ui_adminbus_delbombs - mymob.gui_icons.adminbus_givebombs = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_givebombs = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_givebombs.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_givebombs.icon_state = "icon_givebombs" mymob.gui_icons.adminbus_givebombs.name = "Give Fuse-Bombs to the Passengers" mymob.gui_icons.adminbus_givebombs.screen_loc = ui_adminbus_givebombs - mymob.gui_icons.adminbus_tdred = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_tdred = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_tdred.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_tdred.icon_state = "icon_tdred" mymob.gui_icons.adminbus_tdred.name = "Send Passengers to the Thunderdome's Red Team" mymob.gui_icons.adminbus_tdred.screen_loc = ui_adminbus_tdred - mymob.gui_icons.adminbus_tdarena = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_tdarena = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_tdarena.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_tdarena.icon_state = "icon_tdarena" mymob.gui_icons.adminbus_tdarena.name = "Split the Passengers between the two Thunderdome Teams" mymob.gui_icons.adminbus_tdarena.screen_loc = ui_adminbus_tdarena - mymob.gui_icons.adminbus_tdgreen = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_tdgreen = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_tdgreen.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_tdgreen.icon_state = "icon_tdgreen" mymob.gui_icons.adminbus_tdgreen.name = "Send Passengers to the Thunderdome's Green Team" mymob.gui_icons.adminbus_tdgreen.screen_loc = ui_adminbus_tdgreen - mymob.gui_icons.adminbus_tdobs = getFromPool(/obj/screen) + mymob.gui_icons.adminbus_tdobs = getFromPool(/obj/screen/adminbus) mymob.gui_icons.adminbus_tdobs.icon = 'icons/adminbus/32x32.dmi' mymob.gui_icons.adminbus_tdobs.icon_state = "icon_tdobs" mymob.gui_icons.adminbus_tdobs.name = "Send Passengers to the Thunderdome's Observers' Lodge" @@ -249,7 +249,7 @@ ) for(var/i=1;i<=16;i++) - var/obj/screen/S = getFromPool(/obj/screen) + var/obj/screen/adminbus/S = getFromPool(/obj/screen/adminbus) S.icon = 'icons/adminbus/32x32.dmi' S.icon_state = "" S.screen_loc = "[12-round(i/2)]:[16*((i-1)%2)],14:16" diff --git a/code/_onclick/hud/blob.dm b/code/_onclick/hud/blob.dm new file mode 100644 index 00000000000..c6ef3e5b540 --- /dev/null +++ b/code/_onclick/hud/blob.dm @@ -0,0 +1,157 @@ + +/datum/hud/proc/blob_hud() + mymob.gui_icons.blob_bgs = getFromPool(/obj/screen/specialblob) + mymob.gui_icons.blob_bgs.icon = 'icons/mob/screen1_blob_fullscreen.dmi' + mymob.gui_icons.blob_bgs.icon_state = "backgrounds" + mymob.gui_icons.blob_bgs.name = "Blob HUD" + mymob.gui_icons.blob_bgs.layer = 19 + mymob.gui_icons.blob_bgs.screen_loc = ui_blob_bg + mymob.gui_icons.blob_bgs.mouse_opacity = 0 + + mymob.gui_icons.blob_coverLEFT = getFromPool(/obj/screen/specialblob) + mymob.gui_icons.blob_coverLEFT.icon = 'icons/mob/screen1_blob_fullscreen.dmi' + mymob.gui_icons.blob_coverLEFT.icon_state = "coverLEFT" + mymob.gui_icons.blob_coverLEFT.name = "Points" + mymob.gui_icons.blob_coverLEFT.layer = 21 + mymob.gui_icons.blob_coverLEFT.screen_loc = ui_blob_bg + mymob.gui_icons.blob_coverLEFT.maptext_x = 1 + mymob.gui_icons.blob_coverLEFT.maptext_y = 126 + + mymob.gui_icons.blob_coverRIGHT = getFromPool(/obj/screen/specialblob) + mymob.gui_icons.blob_coverRIGHT.icon = 'icons/mob/screen1_blob_fullscreen.dmi' + mymob.gui_icons.blob_coverRIGHT.icon_state = "coverRIGHT" + mymob.gui_icons.blob_coverRIGHT.name = "Health" + mymob.gui_icons.blob_coverRIGHT.layer = 21 + mymob.gui_icons.blob_coverRIGHT.screen_loc = ui_blob_bg + mymob.gui_icons.blob_coverRIGHT.maptext_x = 464 + mymob.gui_icons.blob_coverRIGHT.maptext_y = 126 + + mymob.gui_icons.blob_powerbar = getFromPool(/obj/screen/specialblob) + mymob.gui_icons.blob_powerbar.icon = 'icons/mob/screen1_blob_bars.dmi' + mymob.gui_icons.blob_powerbar.icon_state = "points" + mymob.gui_icons.blob_powerbar.name = "Points" + mymob.gui_icons.blob_powerbar.layer = 20 + mymob.gui_icons.blob_powerbar.screen_loc = ui_blob_powerbar + + mymob.gui_icons.blob_healthbar = getFromPool(/obj/screen/specialblob) + mymob.gui_icons.blob_healthbar.icon = 'icons/mob/screen1_blob_bars.dmi' + mymob.gui_icons.blob_healthbar.icon_state = "health" + mymob.gui_icons.blob_healthbar.name = "Health" + mymob.gui_icons.blob_healthbar.layer = 20 + mymob.gui_icons.blob_healthbar.screen_loc = ui_blob_healthbar + + mymob.gui_icons.blob_spawnblob = getFromPool(/obj/screen/specialblob) + mymob.gui_icons.blob_spawnblob.icon = 'icons/mob/screen1_blob.dmi' + mymob.gui_icons.blob_spawnblob.icon_state = "blob1" + mymob.gui_icons.blob_spawnblob.name = "Spawn Blob" + mymob.gui_icons.blob_spawnblob.layer = 22 + mymob.gui_icons.blob_spawnblob.screen_loc = ui_blob_spawnblob + + mymob.gui_icons.blob_spawnstrong = getFromPool(/obj/screen/specialblob) + mymob.gui_icons.blob_spawnstrong.icon = 'icons/mob/screen1_blob.dmi' + mymob.gui_icons.blob_spawnstrong.icon_state = "strong1" + mymob.gui_icons.blob_spawnstrong.name = "Spawn Strong Blob" + mymob.gui_icons.blob_spawnstrong.layer = 22 + mymob.gui_icons.blob_spawnstrong.screen_loc = ui_blob_spawnstrong + + mymob.gui_icons.blob_spawnresource = getFromPool(/obj/screen/specialblob) + mymob.gui_icons.blob_spawnresource.icon = 'icons/mob/screen1_blob.dmi' + mymob.gui_icons.blob_spawnresource.icon_state = "resource1" + mymob.gui_icons.blob_spawnresource.name = "Spawn Resource Blob" + mymob.gui_icons.blob_spawnresource.layer = 22 + mymob.gui_icons.blob_spawnresource.screen_loc = ui_blob_spawnresource + + mymob.gui_icons.blob_spawnfactory = getFromPool(/obj/screen/specialblob) + mymob.gui_icons.blob_spawnfactory.icon = 'icons/mob/screen1_blob.dmi' + mymob.gui_icons.blob_spawnfactory.icon_state = "factory1" + mymob.gui_icons.blob_spawnfactory.name = "Spawn Factory Blob" + mymob.gui_icons.blob_spawnfactory.layer = 22 + mymob.gui_icons.blob_spawnfactory.screen_loc = ui_blob_spawnfactory + + mymob.gui_icons.blob_spawnnode = getFromPool(/obj/screen/specialblob) + mymob.gui_icons.blob_spawnnode.icon = 'icons/mob/screen1_blob.dmi' + mymob.gui_icons.blob_spawnnode.icon_state = "node1" + mymob.gui_icons.blob_spawnnode.name = "Spawn Node Blob" + mymob.gui_icons.blob_spawnnode.layer = 22 + mymob.gui_icons.blob_spawnnode.screen_loc = ui_blob_spawnnode + + mymob.gui_icons.blob_spawncore = getFromPool(/obj/screen/specialblob) + mymob.gui_icons.blob_spawncore.icon = 'icons/mob/screen1_blob.dmi' + mymob.gui_icons.blob_spawncore.icon_state = "core1" + mymob.gui_icons.blob_spawncore.name = "Spawn Blob Core" + mymob.gui_icons.blob_spawncore.layer = 22 + mymob.gui_icons.blob_spawncore.screen_loc = ui_blob_spawncore + + mymob.gui_icons.blob_ping = getFromPool(/obj/screen/specialblob) + mymob.gui_icons.blob_ping.icon = 'icons/mob/screen1_blob.dmi' + mymob.gui_icons.blob_ping.icon_state = "ping" + mymob.gui_icons.blob_ping.name = "Call Overminds" + mymob.gui_icons.blob_ping.layer = 22 + mymob.gui_icons.blob_ping.screen_loc = ui_blob_ping + + mymob.gui_icons.blob_rally = getFromPool(/obj/screen/specialblob) + mymob.gui_icons.blob_rally.icon = 'icons/mob/screen1_blob.dmi' + mymob.gui_icons.blob_rally.icon_state = "rally" + mymob.gui_icons.blob_rally.name = "Rally Spores" + mymob.gui_icons.blob_rally.layer = 22 + mymob.gui_icons.blob_rally.screen_loc = ui_blob_rally + + mymob.gui_icons.blob_taunt = getFromPool(/obj/screen/specialblob) + mymob.gui_icons.blob_taunt.icon = 'icons/mob/screen1_blob.dmi' + mymob.gui_icons.blob_taunt.icon_state = "taunt" + mymob.gui_icons.blob_taunt.name = "Psionic Message" + mymob.gui_icons.blob_taunt.layer = 22 + mymob.gui_icons.blob_taunt.screen_loc = ui_blob_taunt + + mymob.client.reset_screen() + + mymob.client.screen += list( + mymob.gui_icons.blob_bgs, + mymob.gui_icons.blob_coverLEFT, + mymob.gui_icons.blob_coverRIGHT, + mymob.gui_icons.blob_powerbar, + mymob.gui_icons.blob_healthbar, + mymob.gui_icons.blob_spawnblob, + mymob.gui_icons.blob_spawnstrong, + mymob.gui_icons.blob_spawnresource, + mymob.gui_icons.blob_spawnfactory, + mymob.gui_icons.blob_spawnnode, + mymob.gui_icons.blob_spawncore, + mymob.gui_icons.blob_ping, + mymob.gui_icons.blob_rally, + mymob.gui_icons.blob_taunt, + ) + + for(var/i=1;i<=24;i++) + var/obj/screen/specialblob/S = getFromPool(/obj/screen/specialblob) + S.icon = 'icons/mob/screen1_blob.dmi' + S.icon_state = "" + var/total_offset = -16 + (i * 20) + S.screen_loc = "[1 + round(total_offset/32)]:[total_offset%32],15:0" + mymob.gui_icons.specialblobs[i] = S + + for(var/i=1;i<=24;i++) + mymob.client.screen += mymob.gui_icons.specialblobs[i] + +/* +/datum/hud/proc/remove_blob_hud() + for(var/i=1;i<=24;i++) + mymob.client.screen -= mymob.gui_icons.specialblobs[i] + + mymob.client.screen -= list( + mymob.gui_icons.blob_bgs, + mymob.gui_icons.blob_coverLEFT, + mymob.gui_icons.blob_coverRIGHT, + mymob.gui_icons.blob_powerbar, + mymob.gui_icons.blob_healthbar, + mymob.gui_icons.blob_spawnblob, + mymob.gui_icons.blob_spawnstrong, + mymob.gui_icons.blob_spawnresource, + mymob.gui_icons.blob_spawnfactory, + mymob.gui_icons.blob_spawnnode, + mymob.gui_icons.blob_spawncore, + mymob.gui_icons.blob_ping, + mymob.gui_icons.blob_rally, + mymob.gui_icons.blob_taunt, + ) +*/ \ No newline at end of file diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index 018084a75d5..b7a70f6ed04 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -19,8 +19,6 @@ var/global/obj/screen/clicker/catcher = new() var/hotkey_ui_hidden = 0 //This is to hide the buttons that can be used via hotkeys. (hotkeybuttons list of buttons) var/obj/screen/lingchemdisplay - var/obj/screen/blobpwrdisplay - var/obj/screen/blobhealthdisplay var/obj/screen/vampire_blood_display // /vg/ var/obj/screen/r_hand_hud_object var/obj/screen/l_hand_hud_object @@ -45,8 +43,6 @@ var/global/obj/screen/clicker/catcher = new() disarm_intent = null help_intent = null lingchemdisplay = null - blobpwrdisplay = null - blobhealthdisplay = null vampire_blood_display = null r_hand_hud_object = null l_hand_hud_object = null @@ -146,8 +142,6 @@ var/global/obj/screen/clicker/catcher = new() robot_hud() else if(isobserver(mymob)) ghost_hud() - else if(isovermind(mymob)) - blob_hud() else if(isshade(mymob)) shade_hud() else if(isconstruct(mymob)) diff --git a/code/_onclick/hud/other_mobs.dm b/code/_onclick/hud/other_mobs.dm index 065f5d8438a..22579e9d4cc 100644 --- a/code/_onclick/hud/other_mobs.dm +++ b/code/_onclick/hud/other_mobs.dm @@ -64,25 +64,6 @@ /datum/hud/proc/brain_hud(ui_style = 'icons/mob/screen1_Midnight.dmi') -/datum/hud/proc/blob_hud(ui_style = 'icons/mob/screen1_Midnight.dmi') - - - blobpwrdisplay = getFromPool(/obj/screen) - blobpwrdisplay.name = "blob power" - blobpwrdisplay.icon_state = "block" - blobpwrdisplay.screen_loc = ui_health - blobpwrdisplay.layer = 20 - - blobhealthdisplay = getFromPool(/obj/screen) - blobhealthdisplay.name = "blob health" - blobhealthdisplay.icon_state = "block" - blobhealthdisplay.screen_loc = ui_internal - blobhealthdisplay.layer = 20 - - mymob.client.reset_screen() - - mymob.client.screen += list(blobpwrdisplay, blobhealthdisplay) - /datum/hud/proc/shade_hud() diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index c487d698a2a..383597e1502 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -28,6 +28,11 @@ maptext_height = 480 maptext_width = 480 +/obj/screen/adminbus + +/obj/screen/specialblob + var/obj/effect/blob/linked_blob = null + /obj/screen/schematics var/datum/rcd_schematic/ourschematic @@ -666,8 +671,12 @@ M.wearglasses(null) else if (istype(M.get_active_hand(), /obj/item/clothing/glasses)) M.wearglasses(M.get_active_hand()) + else + return 0 + return 1 -////////////ADMINBUS HUD ICONS//////////// +/obj/screen/adminbus/Click() + switch(name) if("Delete Bus") if(usr.locked_to && istype(usr.locked_to, /obj/structure/bed/chair/vehicle/adminbus)) var/obj/structure/bed/chair/vehicle/adminbus/A = usr.locked_to @@ -804,8 +813,51 @@ if(usr.locked_to && istype(usr.locked_to, /obj/structure/bed/chair/vehicle/adminbus)) var/obj/structure/bed/chair/vehicle/adminbus/A = usr.locked_to A.toggle_lights(usr,2) - else - return 0 + +/obj/screen/specialblob/Click() + switch(name) + if("Spawn Blob") + if(isovermind(usr)) + var/mob/camera/blob/overmind = usr + overmind.expand_blob_power() + if("Spawn Strong Blob") + if(isovermind(usr)) + var/mob/camera/blob/overmind = usr + overmind.create_shield_power() + if("Spawn Resource Blob") + if(isovermind(usr)) + var/mob/camera/blob/overmind = usr + overmind.create_resource() + if("Spawn Factory Blob") + if(isovermind(usr)) + var/mob/camera/blob/overmind = usr + overmind.create_factory() + if("Spawn Node Blob") + if(isovermind(usr)) + var/mob/camera/blob/overmind = usr + overmind.create_node() + if("Spawn Blob Core") + if(isovermind(usr)) + var/mob/camera/blob/overmind = usr + overmind.create_core() + if("Call Overminds") + if(isovermind(usr)) + var/mob/camera/blob/overmind = usr + overmind.callblobs() + if("Rally Spores") + if(isovermind(usr)) + var/mob/camera/blob/overmind = usr + overmind.rally_spores_power() + if("Psionic Message") + if(isovermind(usr)) + var/mob/camera/blob/overmind = usr + 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 + overmind.loc = linked_blob.loc return 1 /obj/screen/inventory/Click() diff --git a/code/datums/ui_icons.dm b/code/datums/ui_icons.dm index cf6fb1f07a3..9472b196091 100644 --- a/code/datums/ui_icons.dm +++ b/code/datums/ui_icons.dm @@ -3,38 +3,55 @@ //Adminbus HUD stuff var/list/rearviews[16] - var/obj/screen/adminbus_bg = null - var/obj/screen/adminbus_delete = null - var/obj/screen/adminbus_delmobs = null - var/obj/screen/adminbus_spclowns = null - var/obj/screen/adminbus_spcarps = null - var/obj/screen/adminbus_spbears = null - var/obj/screen/adminbus_sptrees = null - var/obj/screen/adminbus_spspiders = null - var/obj/screen/adminbus_spalien = null - var/obj/screen/adminbus_loadsids = null - var/obj/screen/adminbus_loadsmoney = null - var/obj/screen/adminbus_massrepair = null - var/obj/screen/adminbus_massrejuv = null - var/obj/screen/adminbus_hook = null - var/obj/screen/adminbus_juke = null - var/obj/screen/adminbus_tele = null - var/obj/screen/adminbus_bumpers_1 = null - var/obj/screen/adminbus_bumpers_2 = null - var/obj/screen/adminbus_bumpers_3 = null - var/obj/screen/adminbus_door_0 = null - var/obj/screen/adminbus_door_1 = null - var/obj/screen/adminbus_roadlights_0 - var/obj/screen/adminbus_roadlights_1 - var/obj/screen/adminbus_roadlights_2 - var/obj/screen/adminbus_free = null - var/obj/screen/adminbus_home = null - var/obj/screen/adminbus_antag = null - var/obj/screen/adminbus_dellasers = null - var/obj/screen/adminbus_givelasers = null - var/obj/screen/adminbus_delbombs = null - var/obj/screen/adminbus_givebombs = null - var/obj/screen/adminbus_tdred = null - var/obj/screen/adminbus_tdarena = null - var/obj/screen/adminbus_tdgreen = null - var/obj/screen/adminbus_tdobs = null + var/obj/screen/adminbus/adminbus_bg = null + var/obj/screen/adminbus/adminbus_delete = null + var/obj/screen/adminbus/adminbus_delmobs = null + var/obj/screen/adminbus/adminbus_spclowns = null + var/obj/screen/adminbus/adminbus_spcarps = null + var/obj/screen/adminbus/adminbus_spbears = null + var/obj/screen/adminbus/adminbus_sptrees = null + var/obj/screen/adminbus/adminbus_spspiders = null + var/obj/screen/adminbus/adminbus_spalien = null + var/obj/screen/adminbus/adminbus_loadsids = null + var/obj/screen/adminbus/adminbus_loadsmoney = null + var/obj/screen/adminbus/adminbus_massrepair = null + var/obj/screen/adminbus/adminbus_massrejuv = null + var/obj/screen/adminbus/adminbus_hook = null + var/obj/screen/adminbus/adminbus_juke = null + var/obj/screen/adminbus/adminbus_tele = null + var/obj/screen/adminbus/adminbus_bumpers_1 = null + var/obj/screen/adminbus/adminbus_bumpers_2 = null + var/obj/screen/adminbus/adminbus_bumpers_3 = null + var/obj/screen/adminbus/adminbus_door_0 = null + var/obj/screen/adminbus/adminbus_door_1 = null + var/obj/screen/adminbus/adminbus_roadlights_0 + var/obj/screen/adminbus/adminbus_roadlights_1 + var/obj/screen/adminbus/adminbus_roadlights_2 + var/obj/screen/adminbus/adminbus_free = null + var/obj/screen/adminbus/adminbus_home = null + var/obj/screen/adminbus/adminbus_antag = null + var/obj/screen/adminbus/adminbus_dellasers = null + var/obj/screen/adminbus/adminbus_givelasers = null + var/obj/screen/adminbus/adminbus_delbombs = null + var/obj/screen/adminbus/adminbus_givebombs = null + var/obj/screen/adminbus/adminbus_tdred = null + var/obj/screen/adminbus/adminbus_tdarena = null + var/obj/screen/adminbus/adminbus_tdgreen = null + var/obj/screen/adminbus/adminbus_tdobs = null + + //Blob HUD stuff + var/list/specialblobs[24] + var/obj/screen/specialblob/blob_bgs = null + var/obj/screen/specialblob/blob_coverLEFT = null + var/obj/screen/specialblob/blob_coverRIGHT = null + var/obj/screen/specialblob/blob_powerbar = null + var/obj/screen/specialblob/blob_healthbar = null + var/obj/screen/specialblob/blob_spawnblob = null + var/obj/screen/specialblob/blob_spawnstrong = null + var/obj/screen/specialblob/blob_spawnresource = null + var/obj/screen/specialblob/blob_spawnfactory = null + var/obj/screen/specialblob/blob_spawnnode = null + var/obj/screen/specialblob/blob_spawncore = null + var/obj/screen/specialblob/blob_ping = null + var/obj/screen/specialblob/blob_rally = null + var/obj/screen/specialblob/blob_taunt = null diff --git a/code/game/gamemodes/blob/blobs/core.dm b/code/game/gamemodes/blob/blobs/core.dm index 79e5a3cdbc7..e205bde0121 100644 --- a/code/game/gamemodes/blob/blobs/core.dm +++ b/code/game/gamemodes/blob/blobs/core.dm @@ -92,7 +92,7 @@ if(blob_looks[looks] == 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, 'sound/effects/blob_pulse.ogg', 50, 0, null, FALLOFF_SOUNDS, 0) + M.playsound_local(loc, adminblob_beat, 50, 0, null, FALLOFF_SOUNDS, 0) var/turf/T = get_turf(overmind) //The overmind's mind can expand the blob var/obj/effect/blob/O = locate() in T //As long as it is 'thinking' about a blob already @@ -145,6 +145,11 @@ B.key = C.key B.blob_core = src src.overmind = B + + B.special_blobs += src + B.hud_used.blob_hud() + B.update_specialblobs() + if(!B.blob_core.creator)//If this core is the first of its lineage (created by game mode/event/admins, instead of another overmind) it gets to choose its looks. var/new_name = "Blob Overmind ([rand(1, 999)])" B.name = new_name @@ -155,7 +160,8 @@ B.verbs += /mob/camera/blob/proc/create_core spawn() - var/chosen = input(B,"Select a blob looks", "Blob Looks", blob_looks[1]) as null|anything in blob_looks + 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 if(chosen) for(var/obj/effect/blob/nearby_blob in range(src,5)) nearby_blob.looks = chosen @@ -164,10 +170,14 @@ var/new_name = "Blob Cerebrate ([rand(1, 999)])" B.name = new_name B.real_name = new_name + B.gui_icons.blob_spawncore.icon_state = "" + B.gui_icons.blob_spawncore.name = "" for(var/mob/camera/blob/O in blob_overminds) if(O != B) to_chat(O,"A new blob cerebrate has started thinking inside a blob core! [B] joins the blob! (JUMP)") + + if(istype(ticker.mode, /datum/game_mode/blob)) var/datum/game_mode/blob/mode = ticker.mode mode.infected_crew += B.mind diff --git a/code/game/gamemodes/blob/blobs/factory.dm b/code/game/gamemodes/blob/blobs/factory.dm index c1739e98619..5287979b936 100644 --- a/code/game/gamemodes/blob/blobs/factory.dm +++ b/code/game/gamemodes/blob/blobs/factory.dm @@ -52,6 +52,8 @@ S.Die() if(!manual_remove && overmind) to_chat(overmind,"A factory blob that you had created has been destroyed. (JUMP)") + overmind.special_blobs -= src + overmind.update_specialblobs() ..() /obj/effect/blob/factory/update_icon(var/spawnend = 0) diff --git a/code/game/gamemodes/blob/blobs/node.dm b/code/game/gamemodes/blob/blobs/node.dm index eb04dc2c43c..46e0f29253c 100644 --- a/code/game/gamemodes/blob/blobs/node.dm +++ b/code/game/gamemodes/blob/blobs/node.dm @@ -28,6 +28,8 @@ blob_nodes -= src if(!manual_remove && overmind) to_chat(overmind,"A node blob that you had created has been destroyed. (JUMP)") + overmind.special_blobs -= src + overmind.update_specialblobs() processing_objects.Remove(src) ..() @@ -37,7 +39,7 @@ if(blob_looks[looks] == 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, 'sound/effects/blob_pulse.ogg', 50, 0, null, FALLOFF_SOUNDS, 0) + M.playsound_local(loc, adminblob_beat, 50, 0, null, FALLOFF_SOUNDS, 0) for(var/i = 1; i < 8; i += i) Pulse(5, i) diff --git a/code/game/gamemodes/blob/blobs/resource.dm b/code/game/gamemodes/blob/blobs/resource.dm index 829327b3c07..61855a72866 100644 --- a/code/game/gamemodes/blob/blobs/resource.dm +++ b/code/game/gamemodes/blob/blobs/resource.dm @@ -24,6 +24,8 @@ blob_resources -= src if(!manual_remove && overmind) to_chat(overmind,"You lost a resource blob. (JUMP)") + overmind.special_blobs -= src + overmind.update_specialblobs() ..() /obj/effect/blob/resource/update_health() @@ -40,6 +42,8 @@ if(B) to_chat(B,"You take control of the resource blob.") overmind = B + B.special_blobs += src + B.update_specialblobs() update_icon() ..() diff --git a/code/game/gamemodes/blob/blobs/shield.dm b/code/game/gamemodes/blob/blobs/shield.dm index c75ef4cc1f8..edc9997a679 100644 --- a/code/game/gamemodes/blob/blobs/shield.dm +++ b/code/game/gamemodes/blob/blobs/shield.dm @@ -29,7 +29,8 @@ /obj/effect/blob/shield/Cross(atom/movable/mover, turf/target, height=1.5, air_group = 0) if(istype(mover) && mover.checkpass(PASSBLOB)) return 1 - mover.Bump(src) //Only automatic for dense objects + if(mover) + mover.Bump(src) //Only automatic for dense objects return 0 /obj/effect/blob/shield/run_action() diff --git a/code/game/gamemodes/blob/overmind.dm b/code/game/gamemodes/blob/overmind.dm index 741ffc4dccc..3a07cd59ac7 100644 --- a/code/game/gamemodes/blob/overmind.dm +++ b/code/game/gamemodes/blob/overmind.dm @@ -20,6 +20,8 @@ var/blob_warning = 0 + var/list/special_blobs = list() + /mob/camera/blob/New() blob_overminds += src ..() @@ -70,8 +72,14 @@ /mob/camera/blob/proc/update_health() - if(blob_core) - hud_used.blobhealthdisplay.maptext = "