diff --git a/baystation12.dme b/baystation12.dme index 7a6d343a50b..c5ca6f95153 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -53,6 +53,7 @@ #include "code\_onclick\overmind.dm" #include "code\_onclick\telekinesis.dm" #include "code\_onclick\hud\_defines.dm" +#include "code\_onclick\hud\adminbus.dm" #include "code\_onclick\hud\ai.dm" #include "code\_onclick\hud\alien.dm" #include "code\_onclick\hud\alien_larva.dm" diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index f47230702e0..299daf895c0 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -146,3 +146,40 @@ #define ui_ai_pda_log "SOUTH:6,WEST+10:16" #define ui_ai_take_picture "SOUTH:6,WEST+11:16" #define ui_ai_view_images "SOUTH:6,WEST+12:16" + +//Adminbus HUD +#define ui_adminbus_bg "1:0,1:0" +#define ui_adminbus_delete "11:31,1:6" +#define ui_adminbus_delmobs "1:6,5:14" +#define ui_adminbus_spclowns "1:8,6:14" +#define ui_adminbus_spcarps "1:8,7:10" +#define ui_adminbus_spbears "1:8,8:6" +#define ui_adminbus_sptrees "1:8,9:2" +#define ui_adminbus_spspiders "1:8,9:30" +#define ui_adminbus_spalien "1:5,10:26" +#define ui_adminbus_loadsids "5:0,2:9" +#define ui_adminbus_loadsmone "5:0,3:5" +#define ui_adminbus_massrepair "6:3,2:9" +#define ui_adminbus_massrejuv "6:3,3:5" +#define ui_adminbus_hook "10:0,3:7" +#define ui_adminbus_juke "11:11,3:7" +#define ui_adminbus_tele "12:22,3:7" +#define ui_adminbus_bumpers_1 "9:21,2:14" +#define ui_adminbus_bumpers_2 "10:5,2:14" +#define ui_adminbus_bumpers_3 "10:21,2:14" +#define ui_adminbus_door_0 "11:11,2:14" +#define ui_adminbus_door_1 "11:27,2:14" +#define ui_adminbus_roadlights_0 "12:17,2:14" +#define ui_adminbus_roadlights_1 "13:1,2:14" +#define ui_adminbus_roadlights_2 "13:17,2:14" +#define ui_adminbus_free "13:9,14:20" +#define ui_adminbus_home "14:6,14:20" +#define ui_adminbus_antag "15:3,14:20" +#define ui_adminbus_dellasers "6:13,13:26" +#define ui_adminbus_givelasers "6:29,13:26" +#define ui_adminbus_delbombs "9:18,13:26" +#define ui_adminbus_givebombs "10:2,13:26" +#define ui_adminbus_tdred "1:18,13:26" +#define ui_adminbus_tdarena "2:4,13:26" +#define ui_adminbus_tdgreen "3:6,13:26" +#define ui_adminbus_tdobs "2:4,14:28" \ No newline at end of file diff --git a/code/_onclick/hud/adminbus.dm b/code/_onclick/hud/adminbus.dm new file mode 100644 index 00000000000..e8f4cf3647e --- /dev/null +++ b/code/_onclick/hud/adminbus.dm @@ -0,0 +1,302 @@ +/datum/hud/proc/adminbus_hud() + mymob.adminbus_bg = new /obj/screen() + mymob.adminbus_bg.icon = 'icons/adminbus/fullscreen.dmi' + mymob.adminbus_bg.icon_state = "HUD" + mymob.adminbus_bg.name = "HUD" + mymob.adminbus_bg.layer = 19 + mymob.adminbus_bg.screen_loc = ui_adminbus_bg + + mymob.adminbus_delete = new /obj/screen() + mymob.adminbus_delete.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_delete.icon_state = "icon_delete" + mymob.adminbus_delete.name = "Delete Bus" + mymob.adminbus_delete.screen_loc = ui_adminbus_delete + + mymob.adminbus_delmobs = new /obj/screen() + mymob.adminbus_delmobs.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_delmobs.icon_state = "icon_delmobs" + mymob.adminbus_delmobs.name = "Delete Mobs" + mymob.adminbus_delmobs.screen_loc = ui_adminbus_delmobs + + mymob.adminbus_spclowns = new /obj/screen() + mymob.adminbus_spclowns.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_spclowns.icon_state = "icon_spclowns" + mymob.adminbus_spclowns.name = "Spawn Clowns" + mymob.adminbus_spclowns.screen_loc = ui_adminbus_spclowns + + mymob.adminbus_spcarps = new /obj/screen() + mymob.adminbus_spcarps.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_spcarps.icon_state = "icon_spcarps" + mymob.adminbus_spcarps.name = "Spawn Carps" + mymob.adminbus_spcarps.screen_loc = ui_adminbus_spcarps + + mymob.adminbus_spbears = new /obj/screen() + mymob.adminbus_spbears.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_spbears.icon_state = "icon_spbears" + mymob.adminbus_spbears.name = "Spawn Bears" + mymob.adminbus_spbears.screen_loc = ui_adminbus_spbears + + mymob.adminbus_sptrees = new /obj/screen() + mymob.adminbus_sptrees.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_sptrees.icon_state = "icon_sptrees" + mymob.adminbus_sptrees.name = "Spawn Trees" + mymob.adminbus_sptrees.screen_loc = ui_adminbus_sptrees + + mymob.adminbus_spspiders = new /obj/screen() + mymob.adminbus_spspiders.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_spspiders.icon_state = "icon_spspiders" + mymob.adminbus_spspiders.name = "Spawn Spiders" + mymob.adminbus_spspiders.screen_loc = ui_adminbus_spspiders + + mymob.adminbus_spalien = new /obj/screen() + mymob.adminbus_spalien.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_spalien.icon_state = "icon_spalien" + mymob.adminbus_spalien.name = "Spawn Large Alien Queen" + mymob.adminbus_spalien.screen_loc = ui_adminbus_spalien + + mymob.adminbus_loadsids = new /obj/screen() + mymob.adminbus_loadsids.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_loadsids.icon_state = "icon_loadsids" + mymob.adminbus_loadsids.name = "Spawn Loads of Captain Spare IDs" + mymob.adminbus_loadsids.screen_loc = ui_adminbus_loadsids + + mymob.adminbus_loadsmoney = new /obj/screen() + mymob.adminbus_loadsmoney.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_loadsmoney.icon_state = "icon_loadsmone" + mymob.adminbus_loadsmoney.name = "Spawn Loads of Money" + mymob.adminbus_loadsmoney.screen_loc = ui_adminbus_loadsmone + + mymob.adminbus_massrepair = new /obj/screen() + mymob.adminbus_massrepair.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_massrepair.icon_state = "icon_massrepair" + mymob.adminbus_massrepair.name = "Repair Surroundings" + mymob.adminbus_massrepair.screen_loc = ui_adminbus_massrepair + + mymob.adminbus_massrejuv = new /obj/screen() + mymob.adminbus_massrejuv.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_massrejuv.icon_state = "icon_massrejuv" + mymob.adminbus_massrejuv.name = "Mass Rejuvination" + mymob.adminbus_massrejuv.screen_loc = ui_adminbus_massrejuv + + mymob.adminbus_hook = new /obj/screen() + mymob.adminbus_hook.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_hook.icon_state = "icon_hook" + mymob.adminbus_hook.name = "Singularity Hook" + mymob.adminbus_hook.screen_loc = ui_adminbus_hook + + mymob.adminbus_juke = new /obj/screen() + mymob.adminbus_juke.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_juke.icon_state = "icon_teleport" + mymob.adminbus_juke.name = "Adminbus-mounted Jukebox" + mymob.adminbus_juke.screen_loc = ui_adminbus_juke + + mymob.adminbus_tele = new /obj/screen() + mymob.adminbus_tele.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_tele.icon_state = "icon_jukebox" + mymob.adminbus_tele.name = "Teleportation" + mymob.adminbus_tele.screen_loc = ui_adminbus_tele + + mymob.adminbus_bumpers_1 = new /obj/screen() + mymob.adminbus_bumpers_1.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_bumpers_1.icon_state = "icon_stickleft" + mymob.adminbus_bumpers_1.name = "Capture Mobs" + mymob.adminbus_bumpers_1.screen_loc = ui_adminbus_bumpers_1 + + mymob.adminbus_bumpers_2 = new /obj/screen() + mymob.adminbus_bumpers_2.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_bumpers_2.icon_state = "" + mymob.adminbus_bumpers_2.name = "Hit Mobs" + mymob.adminbus_bumpers_2.screen_loc = ui_adminbus_bumpers_2 + + mymob.adminbus_bumpers_3 = new /obj/screen() + mymob.adminbus_bumpers_3.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_bumpers_3.icon_state = "" + mymob.adminbus_bumpers_3.name = "Gib Mobs" + mymob.adminbus_bumpers_3.screen_loc = ui_adminbus_bumpers_3 + + mymob.adminbus_door_0 = new /obj/screen() + mymob.adminbus_door_0.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_door_0.icon_state = "icon_stickleft" + mymob.adminbus_door_0.name = "Close Door" + mymob.adminbus_door_0.screen_loc = ui_adminbus_door_0 + + mymob.adminbus_door_1 = new /obj/screen() + mymob.adminbus_door_1.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_door_1.icon_state = "" + mymob.adminbus_door_1.name = "Open Door" + mymob.adminbus_door_1.screen_loc = ui_adminbus_door_1 + + mymob.adminbus_roadlights_0 = new /obj/screen() + mymob.adminbus_roadlights_0.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_roadlights_0.icon_state = "icon_stickleft" + mymob.adminbus_roadlights_0.name = "Turn Off Headlights" + mymob.adminbus_roadlights_0.screen_loc = ui_adminbus_roadlights_0 + + mymob.adminbus_roadlights_1 = new /obj/screen() + mymob.adminbus_roadlights_1.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_roadlights_1.icon_state = "" + mymob.adminbus_roadlights_1.name = "Dipped Headlights" + mymob.adminbus_roadlights_1.screen_loc = ui_adminbus_roadlights_1 + + mymob.adminbus_roadlights_2 = new /obj/screen() + mymob.adminbus_roadlights_2.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_roadlights_2.icon_state = "" + mymob.adminbus_roadlights_2.name = "Main Headlights" + mymob.adminbus_roadlights_2.screen_loc = ui_adminbus_roadlights_2 + + mymob.adminbus_free = new /obj/screen() + mymob.adminbus_free.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_free.icon_state = "icon_free" + mymob.adminbus_free.name = "Release Passengers" + mymob.adminbus_free.screen_loc = ui_adminbus_free + + mymob.adminbus_home = new /obj/screen() + mymob.adminbus_home.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_home.icon_state = "icon_home" + mymob.adminbus_home.name = "Send Passengers Back Home" + mymob.adminbus_home.screen_loc = ui_adminbus_home + + mymob.adminbus_antag = new /obj/screen() + mymob.adminbus_antag.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_antag.icon_state = "icon_antag" + mymob.adminbus_antag.name = "Antag Madness!" + mymob.adminbus_antag.screen_loc = ui_adminbus_antag + + mymob.adminbus_dellasers = new /obj/screen() + mymob.adminbus_dellasers.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_dellasers.icon_state = "icon_delgiven" + mymob.adminbus_dellasers.name = "Delete the given Infinite Laser Guns" + mymob.adminbus_dellasers.screen_loc = ui_adminbus_dellasers + + mymob.adminbus_givelasers = new /obj/screen() + mymob.adminbus_givelasers.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_givelasers.icon_state = "icon_givelasers" + mymob.adminbus_givelasers.name = "Give Infinite Laser Guns to the Passengers" + mymob.adminbus_givelasers.screen_loc = ui_adminbus_givelasers + + mymob.adminbus_delbombs = new /obj/screen() + mymob.adminbus_delbombs.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_delbombs.icon_state = "icon_delgiven" + mymob.adminbus_delbombs.name = "Delete the given Fuse-Bombs" + mymob.adminbus_delbombs.screen_loc = ui_adminbus_delbombs + + mymob.adminbus_givebombs = new /obj/screen() + mymob.adminbus_givebombs.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_givebombs.icon_state = "icon_givebombs" + mymob.adminbus_givebombs.name = "Give Fuse-Bombs to the Passengers" + mymob.adminbus_givebombs.screen_loc = ui_adminbus_givebombs + + mymob.adminbus_tdred = new /obj/screen() + mymob.adminbus_tdred.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_tdred.icon_state = "icon_tdred" + mymob.adminbus_tdred.name = "Send Passengers to the Thunderdome's Red Team" + mymob.adminbus_tdred.screen_loc = ui_adminbus_tdred + + mymob.adminbus_tdarena = new /obj/screen() + mymob.adminbus_tdarena.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_tdarena.icon_state = "icon_tdarena" + mymob.adminbus_tdarena.name = "Split the Passengers between the two Thunderdome Teams" + mymob.adminbus_tdarena.screen_loc = ui_adminbus_tdarena + + mymob.adminbus_tdgreen = new /obj/screen() + mymob.adminbus_tdgreen.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_tdgreen.icon_state = "icon_tdgreen" + mymob.adminbus_tdgreen.name = "Send Passengers to the Thunderdome's Green Team" + mymob.adminbus_tdgreen.screen_loc = ui_adminbus_tdgreen + + mymob.adminbus_tdobs = new /obj/screen() + mymob.adminbus_tdobs.icon = 'icons/adminbus/32x32.dmi' + mymob.adminbus_tdobs.icon_state = "icon_tdobs" + mymob.adminbus_tdobs.name = "Send Passengers to the Thunderdome's Observers' Lodge" + mymob.adminbus_tdobs.screen_loc = ui_adminbus_tdobs + + mymob.client.screen += list( + mymob.adminbus_bg, + mymob.adminbus_delete, + mymob.adminbus_delmobs, + mymob.adminbus_spclowns, + mymob.adminbus_spcarps, + mymob.adminbus_spbears, + mymob.adminbus_sptrees, + mymob.adminbus_spspiders, + mymob.adminbus_spalien, + mymob.adminbus_loadsids, + mymob.adminbus_loadsmoney, + mymob.adminbus_massrepair, + mymob.adminbus_massrejuv, + mymob.adminbus_hook, + mymob.adminbus_juke, + mymob.adminbus_tele, + mymob.adminbus_bumpers_1, + mymob.adminbus_bumpers_2, + mymob.adminbus_bumpers_3, + mymob.adminbus_door_0, + mymob.adminbus_door_1, + mymob.adminbus_roadlights_0, + mymob.adminbus_roadlights_1, + mymob.adminbus_roadlights_2, + mymob.adminbus_free, + mymob.adminbus_home, + mymob.adminbus_antag, + mymob.adminbus_dellasers, + mymob.adminbus_givelasers, + mymob.adminbus_delbombs, + mymob.adminbus_givebombs, + mymob.adminbus_tdred, + mymob.adminbus_tdarena, + mymob.adminbus_tdgreen, + mymob.adminbus_tdobs, + ) + + for(var/i=1;i<=16;i++) + var/obj/screen/S = new /obj/screen() + S.icon = 'icons/adminbus/32x32.dmi' + S.icon_state = "" + S.screen_loc = "[12-round(i/2)]:[16*((i-1)%2)],14:16" + mymob.rearviews[i] = S + + for(var/i=1;i<=16;i++) + mymob.client.screen += mymob.rearviews[i] + + +/datum/hud/proc/remove_adminbus_hud() + for(var/i=1;i<=16;i++) + mymob.client.screen -= mymob.rearviews[i] + + mymob.client.screen -= list( + mymob.adminbus_bg, + mymob.adminbus_delete, + mymob.adminbus_delmobs, + mymob.adminbus_spclowns, + mymob.adminbus_spcarps, + mymob.adminbus_spbears, + mymob.adminbus_sptrees, + mymob.adminbus_spspiders, + mymob.adminbus_spalien, + mymob.adminbus_loadsids, + mymob.adminbus_loadsmoney, + mymob.adminbus_massrepair, + mymob.adminbus_massrejuv, + mymob.adminbus_hook, + mymob.adminbus_juke, + mymob.adminbus_tele, + mymob.adminbus_bumpers_1, + mymob.adminbus_bumpers_2, + mymob.adminbus_bumpers_3, + mymob.adminbus_door_0, + mymob.adminbus_door_1, + mymob.adminbus_roadlights_0, + mymob.adminbus_roadlights_1, + mymob.adminbus_roadlights_2, + mymob.adminbus_free, + mymob.adminbus_home, + mymob.adminbus_antag, + mymob.adminbus_dellasers, + mymob.adminbus_givelasers, + mymob.adminbus_delbombs, + mymob.adminbus_givebombs, + mymob.adminbus_tdred, + mymob.adminbus_tdarena, + mymob.adminbus_tdgreen, + mymob.adminbus_tdobs, + ) \ No newline at end of file diff --git a/code/_onclick/hud/other_mobs.dm b/code/_onclick/hud/other_mobs.dm index 000c7374dac..7d16f110a46 100644 --- a/code/_onclick/hud/other_mobs.dm +++ b/code/_onclick/hud/other_mobs.dm @@ -13,7 +13,7 @@ mymob.client.screen += list(mymob.visible) -/datum/hud/proc/corgi_hud(u) +/datum/hud/proc/corgi_hud() mymob.fire = new /obj/screen() mymob.fire.icon = 'icons/mob/screen1_corgi.dmi' mymob.fire.icon_state = "fire0" diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 4be054faa8b..302409da987 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -663,6 +663,144 @@ C.harvesterharvest() else C << "The nullrod's power interferes with your own!" + +////////////ADMINBUS HUD ICONS//////////// + if("Delete Bus") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.Adminbus_Deletion(usr) + if("Delete Mobs") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.remove_mobs(usr) + if("Spawn Clowns") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.spawn_clowns(usr) + if("Spawn Carps") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.spawn_carps(usr) + if("Spawn Bears") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.spawn_bears(usr) + if("Spawn Trees") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.spawn_trees(usr) + if("Spawn Spiders") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.spawn_spiders(usr) + if("Spawn Large Alien Queen") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.spawn_alien(usr) + if("Spawn Loads of Captain Spare IDs") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.Loadsa_Captains_Spares(usr) + if("Spawn Loads of Money") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.Loadsa_Money(usr) + if("Repair Surroundings") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.Mass_Repair(usr) + if("Mass Rejuvination") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.mass_rejuvinate(usr) + if("Singularity Hook") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.throw_hookshot(usr) + if("Adminbus-mounted Jukebox") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.Mounted_Jukebox(usr) + if("Teleportation") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.Teleportation(usr) + if("Release Passengers") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.release_passengers(usr) + if("Send Passengers Back Home") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.Send_Home(usr) + if("Antag Madness!") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.Make_Antag(usr) + if("Give Infinite Laser Guns to the Passengers") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.give_lasers(usr) + if("Delete the given Infinite Laser Guns") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.delete_lasers(usr) + if("Give Fuse-Bombs to the Passengers") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.give_bombs(usr) + if("Delete the given Fuse-Bombs") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.delete_bombs(usr) + if("Send Passengers to the Thunderdome's Red Team") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.Sendto_Thunderdome_Arena_Red(usr) + if("Split the Passengers between the two Thunderdome Teams") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.Sendto_Thunderdome_Arena(usr) + if("Send Passengers to the Thunderdome's Green Team") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.Sendto_Thunderdome_Arena_Green(usr) + if("Send Passengers to the Thunderdome's Observers' Lodge") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.Sendto_Thunderdome_Obs(usr) + if("Capture Mobs") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.toggle_bumpers(usr,1) + if("Hit Mobs") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.toggle_bumpers(usr,2) + if("Gib Mobs") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.toggle_bumpers(usr,3) + if("Close Door") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.toggle_door(usr,0) + if("Open Door") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.toggle_door(usr,1) + if("Turn Off Headlights") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.toggle_lights(usr,0) + if("Dipped Headlights") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.toggle_lights(usr,1) + if("Main Headlights") + if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/vehicle/adminbus)) + var/obj/structure/stool/bed/chair/vehicle/adminbus/A = usr.buckled + A.toggle_lights(usr,2) else return 0 return 1 diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index 45ebb97e111..c22d50c92e0 100755 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -114,13 +114,8 @@ var/list/adminbusteleportlocs = list() proc/process_adminbus_teleport_locs() for(var/area/AR in world) if(adminbusteleportlocs.Find(AR.name)) continue - if(istype(AR, /area/turret_protected/aisat) || istype(AR, /area/derelict) || istype(AR, /area/tdome)) - adminbusteleportlocs += AR.name - adminbusteleportlocs[AR.name] = AR - var/turf/picked = pick(get_area_turfs(AR.type)) - if (picked.z == 1 || picked.z == 5 || picked.z == 3) - adminbusteleportlocs += AR.name - adminbusteleportlocs[AR.name] = AR + adminbusteleportlocs += AR.name + adminbusteleportlocs[AR.name] = AR var/not_in_order = 0 do diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm index 6c88617c6ae..bdc565f9d24 100644 --- a/code/game/jobs/access.dm +++ b/code/game/jobs/access.dm @@ -233,7 +233,7 @@ access_heads_vault, access_mining_station, access_xenobiology, access_ce, access_hop, access_hos, access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, /*vg paramedic*/, access_paramedic, access_mechanic, access_taxi, access_cent_general, access_cent_thunder, access_cent_specops, access_cent_medical, access_cent_living, access_cent_storage, access_cent_teleporter, access_cent_creed, access_cent_captain, - access_syndicate, + access_syndicate, access_salvage_captain, ) /proc/get_all_centcom_access() diff --git a/code/game/objects/structures/vehicles/adminbus.dm b/code/game/objects/structures/vehicles/adminbus.dm index bdd2fddf9b1..2b6679ca34f 100644 --- a/code/game/objects/structures/vehicles/adminbus.dm +++ b/code/game/objects/structures/vehicles/adminbus.dm @@ -14,7 +14,7 @@ var/list/overlays_bus[4]//1=underlay 2=roadlights 3=ad 4=door var/list/passengers[] = list() var/unloading = 0 - var/capture_mode = 1//1=capture mobs 2=roll over mobs(deals light brute damage and push them down) 3=gib mobs + var/bumpers = 1//1=capture mobs 2=roll over mobs(deals light brute damage and push them down) 3=gib mobs var/door_mode = 0//0=closed door, players cannot climb or leave on their own 1=openned door, players can climb and leave on their own var/spawned_mobs[] = list()//keeps track of every mobs spawned by the bus, so we can remove them all with the push of a button in needed var/hook = 1 @@ -27,6 +27,7 @@ var/spawnedbombs[] = list() var/spawnedlasers[] = list() var/obj/structure/teleportwarp/warp = null + var/obj/machinery/media/jukebox/superjuke/adminbus/busjuke = null /obj/structure/stool/bed/chair/vehicle/adminbus/New() ..() @@ -47,6 +48,7 @@ lightsource = new/obj/structure/buslight(src.loc) lightsource.x += 2 warp = new/obj/structure/teleportwarp(src.loc) + busjuke = new/obj/machinery/media/jukebox/superjuke/adminbus(src.loc) /obj/structure/stool/bed/chair/vehicle/adminbus/update_mob() if(buckled_mob) @@ -149,6 +151,11 @@ handle_mob_bumping() if(warp) warp.loc = src.loc + if(busjuke) + busjuke.loc = src.loc + busjuke.dir = dir + if((busjuke.icon_state != null) && (busjuke.icon_state != "")) + busjuke.repack() if(chain_base) chain_base.move_child(T) for(var/i=1;i<=passengers.len;i++) @@ -180,7 +187,7 @@ /obj/structure/stool/bed/chair/vehicle/adminbus/proc/handle_mob_bumping() var/turf/S = get_turf(src) - switch(capture_mode) + switch(bumpers) if(1) for(var/mob/living/L in S) if(L.isolated) @@ -285,6 +292,7 @@ B.dir = src.dir passengers += B update_mob() + update_rearview() /obj/structure/stool/bed/chair/vehicle/adminbus/buckle_mob(mob/M, mob/user) if(M != user || !ismob(M) || get_dist(src, user) > 1 || user.restrained() || user.lying || user.stat || M.buckled || istype(user, /mob/living/silicon) || destroyed) @@ -322,6 +330,7 @@ roadlights = 1 lightsource.SetLuminosity(2) playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0) + add_HUD(user) return @@ -359,6 +368,7 @@ /obj/structure/stool/bed/chair/vehicle/adminbus/unbuckle() if(buckled_mob) + remove_HUD(buckled_mob) buckled_mob.buckled = null buckled_mob.anchored = initial(buckled_mob.anchored) buckled_mob.update_canmove() @@ -372,6 +382,35 @@ lightsource.SetLuminosity(0) return +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/add_HUD(var/mob/M) + if(!M || !(M.hud_used)) return + + M.hud_used.adminbus_hud() + update_rearview() + +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/remove_HUD(var/mob/M) + if(!M || !(M.hud_used)) return + + M.hud_used.remove_adminbus_hud() + +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/update_rearview() + if(buckled_mob) + for(var/i=1;i<=16;i++) + buckled_mob.client.screen -= buckled_mob.rearviews[i] + var/obj/screen/S = buckled_mob.rearviews[i] + var/icon/img = null + var/atom/A = null + if(i<=passengers.len) + A = passengers[i] + if(!A) + S.icon = 'icons/adminbus/32x32.dmi' + S.icon_state = "" + else + img = getFlatIcon(A,SOUTH,0) + S.icon = img + buckled_mob.rearviews[i] = S + buckled_mob.client.screen += buckled_mob.rearviews[i] + /obj/structure/stool/bed/chair/vehicle/adminbus/emp_act(severity) return @@ -444,10 +483,14 @@ if(!dropped) var/obj/machinery/singularity/S = locate(/obj/machinery/singularity) in src.loc if(S) + if(abus.buckled_mob) + abus.buckled_mob.adminbus_hook.icon_state = "icon_singulo" abus.capture_singulo(S) forceMove(get_step_towards(src,abus)) max_distance++ if(max_distance >= 7) + if(abus.buckled_mob) + abus.buckled_mob.adminbus_hook.icon_state = "icon_hook" abus.hook = 1 del(src) return diff --git a/code/game/objects/structures/vehicles/adminbus_powers.dm b/code/game/objects/structures/vehicles/adminbus_powers.dm index 8e207ac5a4e..cc49e52fae4 100644 --- a/code/game/objects/structures/vehicles/adminbus_powers.dm +++ b/code/game/objects/structures/vehicles/adminbus_powers.dm @@ -4,18 +4,14 @@ //RELEASE PASSENGERS -/obj/structure/stool/bed/chair/vehicle/adminbus/verb/release_passengers() - set name = "Release Passengers" - set category = "Adminbus" - set src = view(0) - set popup_menu = 0 - set hidden = 0 +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/release_passengers(mob/bususer as mob) - if(!(istype(usr,/mob/living/carbon/human/dummy) || istype(usr,/mob/living/simple_animal/corgi/Ian))) - usr << "Nice try." + if(!(istype(bususer,/mob/living/carbon/human/dummy) || istype(bususer,/mob/living/simple_animal/corgi/Ian))) + bususer << "Nice try." return unloading = 1 + flick("icon_free-push",bususer.adminbus_free) for(var/i=passengers.len;i>0;i--) var/atom/A = passengers[i] @@ -37,6 +33,7 @@ B.isolated = 0 B.anchored = 0 passengers -= B + update_rearview() sleep(3) unloading = 0 @@ -62,20 +59,18 @@ L.update_canmove() L << "Thank you for riding with the Adminbus, have a secure day." passengers -= L + update_rearview() //MOB SPAWNING -/obj/structure/stool/bed/chair/vehicle/adminbus/verb/spawn_clowns() - set name = "Spawn Clowns" - set category = "Adminbus" - set src = view(0) - set popup_menu = 0 - set hidden = 0 +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/spawn_clowns(mob/bususer as mob) - if(!(istype(usr,/mob/living/carbon/human/dummy) || istype(usr,/mob/living/simple_animal/corgi/Ian))) - usr << "Nice try." + if(!(istype(bususer,/mob/living/carbon/human/dummy) || istype(bususer,/mob/living/simple_animal/corgi/Ian))) + bususer << "Nice try." return + flick("icon_spclowns-push",bususer.adminbus_spclowns) + var/turflist[] = list() for(var/turf/T in orange(src,1)) if((T.density == 0) && (T!=src.loc)) @@ -91,17 +86,14 @@ T.beamin("clown") sleep(5) -/obj/structure/stool/bed/chair/vehicle/adminbus/verb/spawn_carps() - set name = "Spawn Carps" - set category = "Adminbus" - set src = view(0) - set popup_menu = 0 - set hidden = 0 +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/spawn_carps(mob/bususer as mob) - if(!(istype(usr,/mob/living/carbon/human/dummy) || istype(usr,/mob/living/simple_animal/corgi/Ian))) - usr << "Nice try." + if(!(istype(bususer,/mob/living/carbon/human/dummy) || istype(bususer,/mob/living/simple_animal/corgi/Ian))) + bususer << "Nice try." return + flick("icon_spcarps-push",bususer.adminbus_spcarps) + var/turflist[] = list() for(var/turf/T in orange(src,1)) if((T.density == 0) && (T!=src.loc)) @@ -117,17 +109,14 @@ T.beamin("carp") sleep(5) -/obj/structure/stool/bed/chair/vehicle/adminbus/verb/spawn_bears() - set name = "Spawn Bears" - set category = "Adminbus" - set src = view(0) - set popup_menu = 0 - set hidden = 0 +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/spawn_bears(mob/bususer as mob) - if(!(istype(usr,/mob/living/carbon/human/dummy) || istype(usr,/mob/living/simple_animal/corgi/Ian))) - usr << "Nice try." + if(!(istype(bususer,/mob/living/carbon/human/dummy) || istype(bususer,/mob/living/simple_animal/corgi/Ian))) + bususer << "Nice try." return + flick("icon_spbears-push",bususer.adminbus_spbears) + var/turflist[] = list() for(var/turf/T in orange(src,1)) if((T.density == 0) && (T!=src.loc)) @@ -147,17 +136,14 @@ T.beamin("bear") sleep(5) -/obj/structure/stool/bed/chair/vehicle/adminbus/verb/spawn_trees() - set name = "Spawn Trees" - set category = "Adminbus" - set src = view(0) - set popup_menu = 0 - set hidden = 0 +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/spawn_trees(mob/bususer as mob) - if(!(istype(usr,/mob/living/carbon/human/dummy) || istype(usr,/mob/living/simple_animal/corgi/Ian))) - usr << "Nice try." + if(!(istype(bususer,/mob/living/carbon/human/dummy) || istype(bususer,/mob/living/simple_animal/corgi/Ian))) + bususer << "Nice try." return + flick("icon_sptrees-push",bususer.adminbus_sptrees) + var/turflist[] = list() for(var/turf/T in range(src,1)) if(((T.density == 0) && (T!=src.loc)) && (T!=src.loc)) @@ -173,17 +159,14 @@ T.beamin("tree") sleep(5) -/obj/structure/stool/bed/chair/vehicle/adminbus/verb/spawn_spiders() - set name = "Spawn Spiders" - set category = "Adminbus" - set src = view(0) - set popup_menu = 0 - set hidden = 0 +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/spawn_spiders(mob/bususer as mob) - if(!(istype(usr,/mob/living/carbon/human/dummy) || istype(usr,/mob/living/simple_animal/corgi/Ian))) - usr << "Nice try." + if(!(istype(bususer,/mob/living/carbon/human/dummy) || istype(bususer,/mob/living/simple_animal/corgi/Ian))) + bususer << "Nice try." return + flick("icon_spspiders-push",bususer.adminbus_spspiders) + var/turflist[] = list() for(var/turf/T in orange(src,1)) if((T.density == 0) && (T!=src.loc)) @@ -199,17 +182,14 @@ T.beamin("spider") sleep(5) -/obj/structure/stool/bed/chair/vehicle/adminbus/verb/spawn_alien() - set name = "Spawn Alien" - set category = "Adminbus" - set src = view(0) - set popup_menu = 0 - set hidden = 0 +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/spawn_alien(mob/bususer as mob) - if(!(istype(usr,/mob/living/carbon/human/dummy) || istype(usr,/mob/living/simple_animal/corgi/Ian))) - usr << "Nice try." + if(!(istype(bususer,/mob/living/carbon/human/dummy) || istype(bususer,/mob/living/simple_animal/corgi/Ian))) + bususer << "Nice try." return + flick("icon_spalien-push",bususer.adminbus_spalien) + var/turflist[] = list() for(var/turf/T in orange(src,1)) if((T.density == 0) && (T!=src.loc)) @@ -222,17 +202,14 @@ spawned_mobs += M T.beamin("alien") -/obj/structure/stool/bed/chair/vehicle/adminbus/verb/remove_mobs() - set name = "Remove Mobs" - set category = "Adminbus" - set src = view(0) - set popup_menu = 0 - set hidden = 0 +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/remove_mobs(mob/bususer as mob) - if(!(istype(usr,/mob/living/carbon/human/dummy) || istype(usr,/mob/living/simple_animal/corgi/Ian))) - usr << "Nice try." + if(!(istype(bususer,/mob/living/carbon/human/dummy) || istype(bususer,/mob/living/simple_animal/corgi/Ian))) + bususer << "Nice try." return + flick("icon_delmobs-push",bususer.adminbus_delmobs) + for(var/mob/M in spawned_mobs) var/turf/T = get_turf(M) if(T) @@ -268,52 +245,38 @@ chain += A //once the anchor has reached the singulo, it parents itself to the last element in the chain A.target = singulo //and stays on top of the singulo. -/obj/structure/stool/bed/chair/vehicle/adminbus/verb/throw_hookshot() - set name = "Throw Hookshot" - set category = "Adminbus" - set src = view(0) - set popup_menu = 0 - set hidden = 0 +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/throw_hookshot(mob/bususer as mob) - if(!(istype(usr,/mob/living/carbon/human/dummy) || istype(usr,/mob/living/simple_animal/corgi/Ian))) - usr << "Nice try." + if(!(istype(bususer,/mob/living/carbon/human/dummy) || istype(bususer,/mob/living/simple_animal/corgi/Ian))) + bususer << "Nice try." return - if(!hook) + if(!hook && !singulo) return - hook = 0 + if(hook) + bususer.adminbus_hook.icon_state = "icon_hook-push" + hook = 0 - var/obj/structure/hookshot/claw/C = new/obj/structure/hookshot/claw(get_step(src,src.dir)) //First we spawn the claw - hookshot += C - C.abus = src + var/obj/structure/hookshot/claw/C = new/obj/structure/hookshot/claw(get_step(src,src.dir)) //First we spawn the claw + hookshot += C + C.abus = src - var/obj/machinery/singularity/S = C.launchin(src.dir) //The claw moves forward, spawning hookshot-chains on its path - if(S) - capture_singulo(S) //If the claw hits a singulo, we remove the hookshot-chains and replace them with singulo-chains - else - for(var/obj/structure/hookshot/A in hookshot) //If it doesn't hit anything, all the elements of the chain come back toward the bus, - spawn()//so they all return at once //deleting themselves when they reach it. - A.returnin() - -/obj/structure/stool/bed/chair/vehicle/adminbus/verb/release_singulo() - set name = "Release Singulo" - set category = "Adminbus" - set src = view(0) - set popup_menu = 0 - set hidden = 0 - - if(!(istype(usr,/mob/living/carbon/human/dummy) || istype(usr,/mob/living/simple_animal/corgi/Ian))) - usr << "Nice try." - return - - if(chain_base) + var/obj/machinery/singularity/S = C.launchin(src.dir) //The claw moves forward, spawning hookshot-chains on its path + if(S) + bususer.adminbus_hook.icon_state = "icon_singulo" + capture_singulo(S) //If the claw hits a singulo, we remove the hookshot-chains and replace them with singulo-chains + else + for(var/obj/structure/hookshot/A in hookshot) //If it doesn't hit anything, all the elements of the chain come back toward the bus, + spawn()//so they all return at once //deleting themselves when they reach it. + A.returnin() + else if(singulo) + bususer.adminbus_hook.icon_state = "icon_hook-push" var/obj/structure/singulo_chain/anchor/A = locate(/obj/structure/singulo_chain/anchor) in chain if(A) del(A)//so we don't drag the singulo back to us along with the rest of the chain. - if(singulo) - singulo.on_release() - singulo = null + singulo.on_release() + singulo = null while(chain_base) var/obj/structure/singulo_chain/C = chain_base C.move_child(get_turf(src)) @@ -325,75 +288,116 @@ del(N) chain.len = 0 + bususer.adminbus_hook.icon_state = "icon_hook" hook = 1 ///////////////// -/obj/structure/stool/bed/chair/vehicle/adminbus/verb/mass_rejuvinate() - set name = "Mass Rejuvinate" - set category = "Adminbus" - set src = view(0) - set popup_menu = 0 - set hidden = 0 +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/mass_rejuvinate(mob/bususer as mob) - if(!(istype(usr,/mob/living/carbon/human/dummy) || istype(usr,/mob/living/simple_animal/corgi/Ian))) - usr << "Nice try." + if(!(istype(bususer,/mob/living/carbon/human/dummy) || istype(bususer,/mob/living/simple_animal/corgi/Ian))) + bususer << "Nice try." return + flick("icon_massrejuv-push",bususer.adminbus_massrejuv) + for(var/mob/living/M in orange(src,3)) M.revive() M << "THE ADMINBUS IS LOVE. THE ADMINBUS IS LIFE." sleep(2) + update_rearview() -/obj/structure/stool/bed/chair/vehicle/adminbus/verb/toggle_lights() - set name = "Toggle Roadlights" - set category = "Adminbus" - set src = view(0) - set popup_menu = 0 - set hidden = 0 +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/toggle_lights(mob/bususer as mob,var/lightpower=0) - if(!(istype(usr,/mob/living/carbon/human/dummy) || istype(usr,/mob/living/simple_animal/corgi/Ian))) - usr << "Nice try." + if(!(istype(bususer,/mob/living/carbon/human/dummy) || istype(bususer,/mob/living/simple_animal/corgi/Ian))) + bususer << "Nice try." return - if(roadlights) - roadlights = 0 - overlays -= overlays_bus[2] - lightsource.SetLuminosity(0) - else - roadlights = 1 - overlays += overlays_bus[2] - lightsource.SetLuminosity(2) - -/obj/structure/stool/bed/chair/vehicle/adminbus/verb/toggle_door() - set name = "Toggle Door" - set category = "Adminbus" - set src = view(0) - set popup_menu = 0 - set hidden = 0 - - if(!(istype(usr,/mob/living/carbon/human/dummy) || istype(usr,/mob/living/simple_animal/corgi/Ian))) - usr << "Nice try." + if(lightpower == roadlights) return - if(door_mode) - door_mode = 0 - overlays -= overlays_bus[4] - else - door_mode = 1 - overlays += overlays_bus[4] + switch(lightpower) + if(0) + bususer.adminbus_roadlights_0.icon_state = "icon_stickleft" + bususer.adminbus_roadlights_1.icon_state = "" + bususer.adminbus_roadlights_2.icon_state = "" + lightsource.SetLuminosity(0) + if(roadlights == 1 || roadlights == 2) + overlays -= overlays_bus[2] + roadlights = 0 + if(1) + bususer.adminbus_roadlights_0.icon_state = "" + bususer.adminbus_roadlights_1.icon_state = "icon_stickcenter" + bususer.adminbus_roadlights_2.icon_state = "" + lightsource.SetLuminosity(2) + if(roadlights == 0) + overlays += overlays_bus[2] + roadlights = 1 + if(2) + bususer.adminbus_roadlights_0.icon_state = "" + bususer.adminbus_roadlights_1.icon_state = "" + bususer.adminbus_roadlights_2.icon_state = "icon_stickright" + lightsource.SetLuminosity(3) + if(roadlights == 0) + overlays += overlays_bus[2] + roadlights = 2 -/obj/structure/stool/bed/chair/vehicle/adminbus/verb/Loadsa_Captains_Spares() - set name = "Loadsa Captains Spares" - set category = "Adminbus" - set src = view(0) - set popup_menu = 0 - set hidden = 0 +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/toggle_bumpers(mob/bususer as mob,var/bumperpower=1) - if(!(istype(usr,/mob/living/carbon/human/dummy) || istype(usr,/mob/living/simple_animal/corgi/Ian))) - usr << "Nice try." + if(!(istype(bususer,/mob/living/carbon/human/dummy) || istype(bususer,/mob/living/simple_animal/corgi/Ian))) + bususer << "Nice try." return + if(bumperpower == bumpers) + return + + switch(bumperpower) + if(1) + bususer.adminbus_bumpers_1.icon_state = "icon_stickleft" + bususer.adminbus_bumpers_2.icon_state = "" + bususer.adminbus_bumpers_3.icon_state = "" + bumpers = 1 + if(2) + bususer.adminbus_bumpers_1.icon_state = "" + bususer.adminbus_bumpers_2.icon_state = "icon_stickcenter" + bususer.adminbus_bumpers_3.icon_state = "" + bumpers = 2 + if(3) + bususer.adminbus_bumpers_1.icon_state = "" + bususer.adminbus_bumpers_2.icon_state = "" + bususer.adminbus_bumpers_3.icon_state = "icon_stickright" + bumpers = 3 + + +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/toggle_door(mob/bususer as mob,var/doorstate=0) + + if(!(istype(bususer,/mob/living/carbon/human/dummy) || istype(bususer,/mob/living/simple_animal/corgi/Ian))) + bususer << "Nice try." + return + + if(doorstate == door_mode) + return + + switch(doorstate) + if(0) + bususer.adminbus_door_0.icon_state = "icon_stickleft" + bususer.adminbus_door_1.icon_state = "" + door_mode = 0 + overlays -= overlays_bus[4] + if(1) + bususer.adminbus_door_0.icon_state = "" + bususer.adminbus_door_1.icon_state = "icon_stickright" + door_mode = 1 + overlays += overlays_bus[4] + +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/Loadsa_Captains_Spares(mob/bususer as mob) + + if(!(istype(bususer,/mob/living/carbon/human/dummy) || istype(bususer,/mob/living/simple_animal/corgi/Ian))) + bususer << "Nice try." + return + + flick("icon_loadsids-push",bususer.adminbus_loadsids) + visible_message("All Access for Everyone!") var/joy_sound = list('sound/voice/SC4Mayor1.ogg','sound/voice/SC4Mayor2.ogg','sound/voice/SC4Mayor3.ogg') playsound(src, pick(joy_sound), 50, 0, 0) @@ -405,17 +409,14 @@ var/obj/item/weapon/card/id/captains_spare/S = new/obj/item/weapon/card/id/captains_spare(src.loc) S.throw_at(pick(throwzone),rand(2,5),0) -/obj/structure/stool/bed/chair/vehicle/adminbus/verb/Loadsa_Money() - set name = "Loadsa Money" - set category = "Adminbus" - set src = view(0) - set popup_menu = 0 - set hidden = 0 +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/Loadsa_Money(mob/bususer as mob) - if(!(istype(usr,/mob/living/carbon/human/dummy) || istype(usr,/mob/living/simple_animal/corgi/Ian))) - usr << "Nice try." + if(!(istype(bususer,/mob/living/carbon/human/dummy) || istype(bususer,/mob/living/simple_animal/corgi/Ian))) + bususer << "Nice try." return + flick("icon_loadsmone-push",buckled_mob.adminbus_loadsmoney) + visible_message("Loads of Money!") var/joy_sound = list('sound/voice/SC4Mayor1.ogg','sound/voice/SC4Mayor2.ogg','sound/voice/SC4Mayor3.ogg') playsound(src, pick(joy_sound), 50, 0, 0) @@ -443,17 +444,14 @@ var/obj/item/C = new fuckingmoney(src.loc) C.throw_at(pick(throwzone),rand(2,5),0) -/obj/structure/stool/bed/chair/vehicle/adminbus/verb/give_bombs() - set name = "Give Bombs" - set category = "Adminbus" - set src = view(0) - set popup_menu = 0 - set hidden = 0 +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/give_bombs(mob/bususer as mob) - if(!(istype(usr,/mob/living/carbon/human/dummy) || istype(usr,/mob/living/simple_animal/corgi/Ian))) - usr << "Nice try." + if(!(istype(bususer,/mob/living/carbon/human/dummy) || istype(bususer,/mob/living/simple_animal/corgi/Ian))) + bususer << "Nice try." return + flick("icon_givebombs-push",bususer.adminbus_givebombs) + var/distributed = 0 if(buckled_mob && iscarbon(buckled_mob)) @@ -485,21 +483,18 @@ distributed++ C.update_inv_l_hand() - usr << "[distributed] bombs distributed to passengers." + bususer << "[distributed] bombs distributed to passengers." -/obj/structure/stool/bed/chair/vehicle/adminbus/verb/delete_bombs() - set name = "Delete Bombs" - set category = "Adminbus" - set src = view(0) - set popup_menu = 0 - set hidden = 0 +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/delete_bombs(mob/bususer as mob) - if(!(istype(usr,/mob/living/carbon/human/dummy) || istype(usr,/mob/living/simple_animal/corgi/Ian))) - usr << "Nice try." + if(!(istype(bususer,/mob/living/carbon/human/dummy) || istype(bususer,/mob/living/simple_animal/corgi/Ian))) + bususer << "Nice try." return + flick("icon_delbombs-push",bususer.adminbus_delbombs) + if(spawnedbombs.len == 0) - usr << "No bombs to delete." + bususer << "No bombs to delete." return var/distributed = 0 @@ -511,20 +506,17 @@ distributed++ spawnedbombs -= spawnedbombs[i] - usr << "Deleted all [distributed] bombs." + bususer << "Deleted all [distributed] bombs." -/obj/structure/stool/bed/chair/vehicle/adminbus/verb/give_lasers() - set name = "Give Laser Guns" - set category = "Adminbus" - set src = view(0) - set popup_menu = 0 - set hidden = 0 +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/give_lasers(mob/bususer as mob) - if(!(istype(usr,/mob/living/carbon/human/dummy) || istype(usr,/mob/living/simple_animal/corgi/Ian))) - usr << "Nice try." + if(!(istype(bususer,/mob/living/carbon/human/dummy) || istype(bususer,/mob/living/simple_animal/corgi/Ian))) + bususer << "Nice try." return + flick("icon_givelasers-push",bususer.adminbus_givelasers) + var/distributed = 0 if(buckled_mob && iscarbon(buckled_mob)) @@ -557,21 +549,19 @@ distributed++ C.update_inv_l_hand() - usr << "[distributed] infinite laser guns distributed to passengers." + update_rearview() + bususer << "[distributed] infinite laser guns distributed to passengers." -/obj/structure/stool/bed/chair/vehicle/adminbus/verb/delete_lasers() - set name = "Delete Laser Guns" - set category = "Adminbus" - set src = view(0) - set popup_menu = 0 - set hidden = 0 +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/delete_lasers(mob/bususer as mob) - if(!(istype(usr,/mob/living/carbon/human/dummy) || istype(usr,/mob/living/simple_animal/corgi/Ian))) - usr << "Nice try." + if(!(istype(bususer,/mob/living/carbon/human/dummy) || istype(bususer,/mob/living/simple_animal/corgi/Ian))) + bususer << "Nice try." return + flick("icon_dellasers-push",bususer.adminbus_dellasers) + if(spawnedlasers.len == 0) - usr << "No laser guns to delete." + bususer << "No laser guns to delete." return var/distributed = 0 @@ -583,19 +573,17 @@ distributed++ spawnedlasers -= spawnedlasers[i] - usr << "Deleted all [distributed] laser guns." + update_rearview() + bususer << "Deleted all [distributed] laser guns." -/obj/structure/stool/bed/chair/vehicle/adminbus/verb/Mass_Repair() - set name = "Mass Repair" - set category = "Adminbus" - set src = view(0) - set popup_menu = 0 - set hidden = 0 +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/Mass_Repair(mob/bususer as mob) - if(!(istype(usr,/mob/living/carbon/human/dummy) || istype(usr,/mob/living/simple_animal/corgi/Ian))) - usr << "Nice try." + if(!(istype(bususer,/mob/living/carbon/human/dummy) || istype(bususer,/mob/living/simple_animal/corgi/Ian))) + bususer << "Nice try." return + flick("icon_massrepair-push",bususer.adminbus_massrepair) + visible_message("WE BUILD!") for(var/obj/machinery/M in range(src,3)) @@ -638,23 +626,23 @@ new/obj/item/stack/sheet/glass(S.loc) del(S) -/obj/structure/stool/bed/chair/vehicle/adminbus/verb/Teleportation() - set name = "Teleportation" - set category = "Adminbus" - set src = view(0) - set popup_menu = 0 - set hidden = 0 +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/Teleportation(mob/bususer as mob) - if(!(istype(usr,/mob/living/carbon/human/dummy) || istype(usr,/mob/living/simple_animal/corgi/Ian))) - usr << "Nice try." + if(!(istype(bususer,/mob/living/carbon/human/dummy) || istype(bususer,/mob/living/simple_animal/corgi/Ian))) + bususer << "Nice try." return + if(warp.icon_state == "warp_activated") + return + + bususer.adminbus_tele.icon_state = "icon_teleport-push" warp.icon_state = "warp_activated" var/A - A = input(usr, "Area to jump to", "Teleportation Warp", A) as null|anything in adminbusteleportlocs + A = input(bususer, "Area to jump to", "Teleportation Warp", A) as null|anything in adminbusteleportlocs var/area/thearea = adminbusteleportlocs[A] if(!thearea) + bususer.adminbus_tele.icon_state = "icon_teleport" warp.icon_state = "" return @@ -664,35 +652,36 @@ L+=T if(!L || !L.len) - usr << "No area available." + bususer << "No area available." + bususer.adminbus_tele.icon_state = "icon_teleport" warp.icon_state = "" return var/turf/T1 = get_turf(src) var/turf/T2 = pick(L) + bususer.adminbus_tele.icon_state = "icon_teleport" warp.icon_state = "" src.loc = T2 src.Move() T1.busteleport() T2.busteleport() -/obj/structure/stool/bed/chair/vehicle/adminbus/verb/Sendto_Thunderdome_Obs() - set name = "Send Passengers to Thunderdome as Observers" - set category = "Adminbus" - set src = view(0) - set popup_menu = 0 - set hidden = 0 +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/Sendto_Thunderdome_Obs(mob/bususer as mob) - if(!(istype(usr,/mob/living/carbon/human/dummy) || istype(usr,/mob/living/simple_animal/corgi/Ian))) - usr << "Nice try." + if(!(istype(bususer,/mob/living/carbon/human/dummy) || istype(bususer,/mob/living/simple_animal/corgi/Ian))) + bususer << "Nice try." return if(passengers.len == 0) - usr << "There are no passengers to send." + flick("icon_tdobs-push",bususer.adminbus_tdobs) + bususer << "There are no passengers to send." return - if(alert(usr, "Send all passengers to the thunderdome's spectating area?", "Adminbus", "Yes", "No") != "Yes") + bususer.adminbus_tdobs.icon_state = "icon_tdobs-push" + if(alert(bususer, "Send all passengers to the thunderdome's spectating area?", "Adminbus", "Yes", "No") != "Yes") + bususer.adminbus_tdobs.icon_state = "icon_tdobs" return + bususer.adminbus_tdobs.icon_state = "icon_tdobs" var/turf/T = get_turf(src) if(T) @@ -743,23 +732,22 @@ sleep(1) -/obj/structure/stool/bed/chair/vehicle/adminbus/verb/Sendto_Thunderdome_Arena()//this one sends an equal number of fighter to each side. - set name = "Send Passengers to Thunderdome Arena" - set category = "Adminbus" - set src = view(0) - set popup_menu = 0 - set hidden = 0 +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/Sendto_Thunderdome_Arena(mob/bususer as mob)//this one sends an equal number of fighter to each side. - if(!(istype(usr,/mob/living/carbon/human/dummy) || istype(usr,/mob/living/simple_animal/corgi/Ian))) - usr << "Nice try." + if(!(istype(bususer,/mob/living/carbon/human/dummy) || istype(bususer,/mob/living/simple_animal/corgi/Ian))) + bususer << "Nice try." return if(passengers.len == 0) - usr << "There are no passengers to send." + flick("icon_tdarena-push",bususer.adminbus_tdarena) + bususer << "There are no passengers to send." return - if(alert(usr, "Split passengers between the two thunderdome teams?", "Adminbus", "Yes", "No") != "Yes") + bususer.adminbus_tdarena.icon_state = "icon_tdarena-push" + if(alert(bususer, "Split passengers between the two thunderdome teams?", "Adminbus", "Yes", "No") != "Yes") + bususer.adminbus_tdarena.icon_state = "icon_tdarena" return + bususer.adminbus_tdarena.icon_state = "icon_tdarena" var/turf/T = get_turf(src) if(T) @@ -776,25 +764,24 @@ green_team(A) alternate = 1 - usr << "The passengers' belongings were stored inside the Thunderdome's admin lodge." + bususer << "The passengers' belongings were stored inside the Thunderdome's admin lodge." -/obj/structure/stool/bed/chair/vehicle/adminbus/verb/Sendto_Thunderdome_Arena_Green() - set name = "Send Passengers to Thunderdome Arena Green" - set category = "Adminbus" - set src = view(0) - set popup_menu = 0 - set hidden = 0 +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/Sendto_Thunderdome_Arena_Green(mob/bususer as mob) - if(!(istype(usr,/mob/living/carbon/human/dummy) || istype(usr,/mob/living/simple_animal/corgi/Ian))) - usr << "Nice try." + if(!(istype(bususer,/mob/living/carbon/human/dummy) || istype(bususer,/mob/living/simple_animal/corgi/Ian))) + bususer << "Nice try." return if(passengers.len == 0) - usr << "There are no passengers to send." + flick("icon_tdgreen-push",bususer.adminbus_tdgreen) + bususer << "There are no passengers to send." return - if(alert(usr, "Send all passengers to the thunderdome's Green Team?", "Adminbus", "Yes", "No") != "Yes") + bususer.adminbus_tdgreen.icon_state = "icon_tdgreen-push" + if(alert(bususer, "Send all passengers to the thunderdome's Green Team?", "Adminbus", "Yes", "No") != "Yes") + bususer.adminbus_tdgreen.icon_state = "icon_tdgreen" return + bususer.adminbus_tdgreen.icon_state = "icon_tdgreen" var/turf/T = get_turf(src) if(T) @@ -804,25 +791,24 @@ var/atom/A = passengers[i] green_team(A) - usr << "The passengers' belongings were stored inside the Thunderdome's admin lodge." + bususer << "The passengers' belongings were stored inside the Thunderdome's admin lodge." -/obj/structure/stool/bed/chair/vehicle/adminbus/verb/Sendto_Thunderdome_Arena_Red() - set name = "Send Passengers to Thunderdome Arena Red" - set category = "Adminbus" - set src = view(0) - set popup_menu = 0 - set hidden = 0 +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/Sendto_Thunderdome_Arena_Red(mob/bususer as mob) - if(!(istype(usr,/mob/living/carbon/human/dummy) || istype(usr,/mob/living/simple_animal/corgi/Ian))) - usr << "Nice try." + if(!(istype(bususer,/mob/living/carbon/human/dummy) || istype(bususer,/mob/living/simple_animal/corgi/Ian))) + bususer << "Nice try." return if(passengers.len == 0) - usr << "There are no passengers to send." + flick("icon_tdred-push",bususer.adminbus_tdred) + bususer << "There are no passengers to send." return - if(alert(usr, "Send all passengers to the thunderdome's Red Team?", "Adminbus", "Yes", "No") != "Yes") + bususer.adminbus_tdred.icon_state = "icon_tdred-push" + if(alert(bususer, "Send all passengers to the thunderdome's Red Team?", "Adminbus", "Yes", "No") != "Yes") + bususer.adminbus_tdred.icon_state = "icon_tdred" return + bususer.adminbus_tdred.icon_state = "icon_tdred" var/turf/T = get_turf(src) if(T) @@ -832,7 +818,7 @@ var/atom/A = passengers[i] red_team(A) - usr << "The passengers' belongings were stored inside the Thunderdome's admin lodge." + bususer << "The passengers' belongings were stored inside the Thunderdome's admin lodge." /obj/structure/stool/bed/chair/vehicle/adminbus/proc/green_team(var/atom/A) if(isliving(A)) @@ -1040,24 +1026,23 @@ icon_state = "belongings-red" desc = "Items belonging to one of the Thunderdome contestants." -/obj/structure/stool/bed/chair/vehicle/adminbus/verb/Send_Home() - set name = "Send Back Home" - set category = "Adminbus" - set src = view(0) - set popup_menu = 0 - set hidden = 0 +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/Send_Home(mob/bususer as mob) - if(!(istype(usr,/mob/living/carbon/human/dummy) || istype(usr,/mob/living/simple_animal/corgi/Ian))) - usr << "Nice try." - return - - if(alert(usr, "Send all mobs among the passengers back where they first appeared? (Risky: This sends them back where their \"object\" was created. If they were cloned they will teleport back at genetics, If they had their species changed they'll spawn back where it happenned, etc...)", "Adminbus", "Yes", "No") != "Yes") + if(!(istype(bususer,/mob/living/carbon/human/dummy) || istype(bususer,/mob/living/simple_animal/corgi/Ian))) + bususer << "Nice try." return if(passengers.len == 0) - usr << "There are no passengers to send." + flick("icon_home-push",bususer.adminbus_home) + bususer << "There are no passengers to send." return + bususer.adminbus_home.icon_state = "icon_home-push" + if(alert(bususer, "Send all mobs among the passengers back where they first appeared? (Risky: This sends them back where their \"object\" was created. If they were cloned they will teleport back at genetics, If they had their species changed they'll spawn back where it happenned, etc...)", "Adminbus", "Yes", "No") != "Yes") + bususer.adminbus_home.icon_state = "icon_home" + return + bususer.adminbus_home.icon_state = "icon_home" + var/turf/T1 = get_turf(src) if(T1) T1.beamin("") @@ -1070,29 +1055,27 @@ if(T2) T2.beamin("") -/obj/structure/stool/bed/chair/vehicle/adminbus/verb/Make_Antag() - set name = "Make all passengers antags after a delay" - set category = "Adminbus" - set src = view(0) - set popup_menu = 0 - set hidden = 0 +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/Make_Antag(mob/bususer as mob) - if(!(istype(usr,/mob/living/carbon/human/dummy) || istype(usr,/mob/living/simple_animal/corgi/Ian))) - usr << "Nice try." + if(!(istype(bususer,/mob/living/carbon/human/dummy) || istype(bususer,/mob/living/simple_animal/corgi/Ian))) + bususer << "Nice try." return if(passengers.len == 0) - usr << "There are no make antag." + flick("icon_antag-push",bususer.adminbus_antag) + bususer << "There are no passengers to make antag." return - + bususer.adminbus_antag.icon_state = "icon_antag-push" var/list/delays = list("CANCEL", "No Delay", "10 seconds", "30 seconds", "1 minute", "5 minutes", "15 minutes") var/delay = input("How much delay before the transformation occurs?", "Antag Madness") in delays switch(delay) if("CANCEL") + bususer.adminbus_antag.icon_state = "icon_antag" return if("No Delay") + bususer.adminbus_antag.icon_state = "icon_antag" for(var/mob/M in passengers) spawn() M << "YOU JUST REMEMBERED SOMETHING IMPORTANT!" @@ -1118,6 +1101,7 @@ for(var/mob/M in passengers) spawn() Delay_Antag(M,9000) + bususer.adminbus_antag.icon_state = "icon_antag" /obj/structure/stool/bed/chair/vehicle/adminbus/proc/Delay_Antag(var/mob/M,var/delay=100) if(!M.mind) return @@ -1135,4 +1119,73 @@ sleep(20) - antag_madness_adminbus(M) \ No newline at end of file + antag_madness_adminbus(M) + +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/Mounted_Jukebox(mob/bususer as mob) + + if(!(istype(bususer,/mob/living/carbon/human/dummy) || istype(bususer,/mob/living/simple_animal/corgi/Ian))) + bususer << "Nice try." + return + + flick("icon_jukebox-push",bususer.adminbus_juke) + + busjuke.attack_hand(bususer) + +/obj/structure/stool/bed/chair/vehicle/adminbus/proc/Adminbus_Deletion(mob/bususer as mob)//make sure to always use this proc when deleting an adminbus + + if(!(istype(bususer,/mob/living/carbon/human/dummy) || istype(bususer,/mob/living/simple_animal/corgi/Ian))) + bususer << "Nice try." + return + + bususer.adminbus_delete.icon_state = "icon_delete-push" + if(alert(bususer, "This will free all passengers, remove any spawned mobs/laserguns/bombs, [singulo ? "free the captured singularity" : ""], and remove all the entities associated with the bus(chains, roadlights, jukebox,...)
Are you sure?", "Adminbus Deletion", "Yes", "No") != "Yes") + bususer.adminbus_delete.icon_state = "icon_delete" + return + + for(var/i=passengers.len;i>0;i--) + var/atom/A = passengers[i] + if(isliving(A)) + var/mob/living/L = A + freed(L) + else if(isbot(A)) + var/obj/machinery/bot/B = A + switch(dir) + if(SOUTH) + B.x = x-1 + if(WEST) + B.y = y+1 + if(NORTH) + B.x = x+1 + if(EAST) + B.y = y-1 + B.turn_on() + B.isolated = 0 + B.anchored = 0 + passengers -= B + + delete_bombs() + delete_lasers() + remove_mobs() + + if(singulo) + singulo.on_release() + + for(var/obj/structure/singulo_chain/N in chain) + del(N) + + for(var/obj/structure/hookshot/H in hookshot) + del(H) + + busjuke.disconnect_media_source() + del(busjuke) + del(warp) + lightsource.SetLuminosity(0) + del(lightsource) + + var/turf/T = get_turf(src) + T.busteleport() + + if(buckled_mob) + buckled_mob.hud_used.remove_adminbus_hud() + + del(src)//RIP ADMINBUS \ No newline at end of file diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 3a6dfccb547..b01d4fd7ae6 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -2600,6 +2600,7 @@ feedback_add_details("admin_secrets_fun_used","AB") var/obj/structure/stool/bed/chair/vehicle/adminbus/A = new /obj/structure/stool/bed/chair/vehicle/adminbus(get_turf(usr)) A.dir = EAST + A.busjuke.dir = EAST message_admins("[key_name_admin(usr)] has spawned an Adminbus. Who gave him the keys?") if("spawnselfdummy") feedback_inc("admin_secrets_fun_used",1) diff --git a/code/modules/admin/verbs/antag_madness.dm b/code/modules/admin/verbs/antag_madness.dm index 2ded58d763a..9ca15ef7d5e 100644 --- a/code/modules/admin/verbs/antag_madness.dm +++ b/code/modules/admin/verbs/antag_madness.dm @@ -18,29 +18,46 @@ client/proc/antag_madness(var/mob/M in mob_list) usr << "Only humans and monkeys can become overpowered antags." return - var/list/role_list = list("traitor", "changeling", "vampire", "cult", "rev", "nuke", "deathsquad", "wizard")//"monkey" + var/list/role_list = list("traitor", "changeling", "vampire", "cult", "rev", "nuke", "deathsquad", "wizard", "monkey") var/got_a_job = 0 if(ismonkey(M)) role_list = list("cult", "monkey") - while(role_list.len > 0) - var/choice = pick(role_list) - if(create_madness(M,choice)) - got_a_job = 1 - break - else - role_list -= choice + var/list/input_list = list("RANDOM") + input_list += role_list + input_list += "CANCEL" + var/procedure = input("Choose antag type.", "Antag Madness") in input_list - if(!got_a_job)//aka: if the mob already is every single type of antag. - usr << "The mob is already every type of antag at once holy shit stop that." + if(procedure == "CANCEL") return + else if(procedure == "RANDOM") + while(role_list.len > 0) + var/choice = pick(role_list) + if(create_madness(M,choice)) + log_admin("[key_name(usr)] turned [key_name(M)] into an overpowered [choice]") + message_admins("[key_name_admin(usr)] turned [key_name_admin(M)]into an overpowered [choice]", 1) + got_a_job = 1 + break + else + role_list -= choice + + if(!got_a_job)//aka: the mob failed all the antag creation checks + usr << "The mob is already every type of antag at once holy shit stop that." + return + + else + if(create_madness(M,procedure)) + log_admin("[key_name(usr)] turned [key_name(M)] into an overpowered [procedure]") + message_admins("[key_name_admin(usr)] turned [key_name_admin(M)]into an overpowered [procedure]", 1) + else + usr << "The mob is already a [procedure]." + return + var/turf/T = get_turf(M) T.beamin("") - log_admin("[key_name(usr)] turned [key_name(M)] into an overpowered ") - message_admins("[key_name_admin(usr)] turned [key_name_admin(M)]into an overpowered", 1) feedback_add_details("admin_verb","AM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /obj/structure/stool/bed/chair/vehicle/adminbus/proc/antag_madness_adminbus(var/mob/M) @@ -158,6 +175,7 @@ client/proc/antag_madness(var/mob/M in mob_list) M.equip_to_slot_or_del(new/obj/item/clothing/under/batmansuit, slot_w_uniform) M.equip_to_slot_or_del(new/obj/item/weapon/storage/backpack/satchel, slot_back) M.equip_to_slot_or_del(new/obj/item/clothing/shoes/jackboots, slot_shoes) + M.equip_to_slot_or_del(new/obj/item/clothing/gloves/batmangloves, slot_gloves) M.equip_to_slot_or_del(new/obj/item/clothing/mask/gas/death_commando, slot_wear_mask) M.equip_to_slot_or_del(new/obj/item/clothing/suit/hgpirate, slot_wear_suit) M.equip_to_slot_or_del(new/obj/item/clothing/head/chaplain_hood, slot_head) @@ -224,13 +242,16 @@ client/proc/antag_madness(var/mob/M in mob_list) M.equip_to_slot_or_del(pack, slot_in_backpack) M.equip_to_slot_or_del(T, slot_in_backpack) M.equip_to_slot_or_del(A, slot_in_backpack) + M.equip_to_slot_or_del(new /obj/item/weapon/melee/cultblade, slot_r_hand) else if(istype(M, /mob/living/carbon/monkey)) var/mob/living/carbon/monkey/K = M + var/obj/item/weapon/storage/backpack/cultpack/P = new/obj/item/weapon/storage/backpack/cultpack(K) K.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/death_commando(K), slot_wear_mask) - K.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/cultpack(K), slot_back) - pack.loc = get_turf(K) - K.equip_to_slot_or_del(T, slot_r_hand) - K.equip_to_slot_or_del(A, slot_l_hand) + K.equip_to_slot_or_del(P, slot_back) + pack.loc = P + T.loc = P + A.loc = P + K.equip_to_slot_or_del(new /obj/item/weapon/melee/cultblade(K), slot_r_hand) var/obj/item/clothing/monkeyclothes/cultrobes/JS = new /obj/item/clothing/monkeyclothes/cultrobes(K) var/obj/item/clothing/head/culthood/alt/CH = new /obj/item/clothing/head/culthood/alt(K) var/obj/item/clothing/monkeyclothes/olduniform = null diff --git a/code/modules/media/jukebox.dm b/code/modules/media/jukebox.dm index d2ce6740f30..21575651549 100644 --- a/code/modules/media/jukebox.dm +++ b/code/modules/media/jukebox.dm @@ -531,6 +531,8 @@ var/global/loopModeNames=list( desc = "The ultimate jukebox. Your brain begins to liquify from simply looking at it." state_base = "superjuke" + icon_state = "superjuke" + change_cost = 0 playlist_id="bar" @@ -543,7 +545,7 @@ var/global/loopModeNames=list( "emagged" = "Syndie Mix", "shuttle" = "Shuttle", - "endgame" = "Apocalypse" + "endgame" = "Apocalypse", ) /obj/machinery/media/jukebox/superjuke/attackby(obj/item/W, mob/user) @@ -576,4 +578,71 @@ var/global/loopModeNames=list( // Send update to clients. for(var/mob/M in mob_list) if(M && M.client) - M.force_music(media_url,media_start_time,volume) \ No newline at end of file + M.force_music(media_url,media_start_time,volume) + +/obj/machinery/media/jukebox/superjuke/adminbus + name = "adminbus-mounted Jukebox" + desc = "It really doesn't get any better." + icon = 'icons/obj/bus.dmi' + icon_state = "" + l_color = "#000066" + luminosity = 0 + layer = FLY_LAYER+1 + pixel_x = -32 + pixel_y = -32 + + var/datum/browser/popup = null + req_access = list() + playlist_id="endgame" + +/obj/machinery/media/jukebox/superjuke/adminbus/New() + ..() + return + +/obj/machinery/media/jukebox/superjuke/adminbus/attack_hand(var/mob/user) + var/t = "
" + t += "Main" + t += "
" + t += ScreenMain(user) + + user.set_machine(src) + popup = new (user,"jukebox",name,420,700) + popup.set_content(t) + popup.set_title_image(user.browse_rsc_icon(icon, icon_state)) + popup.open() + + if(icon_state != "jukebox") + deploy() + +/obj/machinery/media/jukebox/superjuke/adminbus/proc/deploy() + update_media_source() + icon_state = "jukebox" + SetLuminosity(4) + flick("deploying",src) + +/obj/machinery/media/jukebox/superjuke/adminbus/proc/repack() + if(playing) + for(var/mob/M in range (src,1)) + M << "The jukebox turns itself off to protect itself from any cahot induced damage." + if(popup) + popup.close() + playing = 0 + SetLuminosity(0) + icon_state = "" + flick("repacking",src) + update_music() + disconnect_media_source() + update_icon() + +/obj/machinery/media/jukebox/superjuke/adminbus/update_icon() + if(playing) + overlays += "beats" + else + overlays = 0 + return + +/obj/machinery/media/jukebox/superjuke/adminbus/ex_act(severity) + return + +/obj/machinery/media/jukebox/superjuke/adminbus/cultify() + return diff --git a/code/modules/media/machinery.dm b/code/modules/media/machinery.dm index e066dc158c5..fe5f6dedaad 100644 --- a/code/modules/media/machinery.dm +++ b/code/modules/media/machinery.dm @@ -52,8 +52,10 @@ var/area/A = get_area_master(src) // Check if there's a media source already. - if(A.media_source && A.media_source!=src) - master_area=null + if(A.media_source && A.media_source!=src) //if it does, the new media source replaces it. basically, the last media source arrived gets played on top. + A.media_source.disconnect_media_source()//you can turn a media source off and on for it to come back on top. + A.media_source=src + master_area=A return // Update Media Source. @@ -82,7 +84,6 @@ for(var/mob/M in mobs_in_area(A)) if(M && M.client) M.update_music() - master_area=null /obj/machinery/media/Move() @@ -98,6 +99,7 @@ /obj/machinery/media/New() ..() + if(istype(src, /obj/machinery/media/jukebox/superjuke/adminbus)) return//ugly but necessary update_media_source() /obj/machinery/media/Destroy() diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 68a4250f3a8..19cb42bada9 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -54,6 +54,44 @@ var/image/narsimage = null var/image/narglow = null + //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 + /*A bunch of this stuff really needs to go under their own defines instead of being globally attached to mob. A variable should only be globally attached to turfs/objects/whatever, when it is in fact needed as such. The current method unnecessarily clusters up the variable list, especially for humans (although rearranging won't really clean it up a lot but the difference will be noticable for other mobs). diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 7a1ec6dca5e..5f2d3e31cf9 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -11,6 +11,7 @@ var/global/list/uneatable = list( /obj/structure/hookshot, /obj/structure/buslight, /obj/structure/teleportwarp, + /obj/machinery/media/jukebox/superjuke/adminbus, ) /obj/machinery/singularity/ diff --git a/icons/adminbus/32x32.dmi b/icons/adminbus/32x32.dmi new file mode 100644 index 00000000000..9a37c013f9f Binary files /dev/null and b/icons/adminbus/32x32.dmi differ diff --git a/icons/adminbus/fullscreen.dmi b/icons/adminbus/fullscreen.dmi new file mode 100644 index 00000000000..5fb07f6998a Binary files /dev/null and b/icons/adminbus/fullscreen.dmi differ diff --git a/icons/obj/bus.dmi b/icons/obj/bus.dmi index 8b3f4368635..16505a3473f 100644 Binary files a/icons/obj/bus.dmi and b/icons/obj/bus.dmi differ