diff --git a/code/WorkInProgress/Mloc/Shortcuts.dm b/code/WorkInProgress/Mloc/Shortcuts.dm
index 8d537d1583..361e647cbc 100644
--- a/code/WorkInProgress/Mloc/Shortcuts.dm
+++ b/code/WorkInProgress/Mloc/Shortcuts.dm
@@ -7,27 +7,59 @@
if("help")
usr.a_intent = "disarm"
usr.hud_used.action_intent.icon_state = "disarm"
+ usr.hud_used.hurt_intent.icon_state = "harm_small"
+ usr.hud_used.help_intent.icon_state = "help_small"
+ usr.hud_used.grab_intent.icon_state = "grab_small"
+ usr.hud_used.disarm_intent.icon_state = "disarm_small_active"
if("disarm")
usr.a_intent = "hurt"
usr.hud_used.action_intent.icon_state = "harm"
+ usr.hud_used.hurt_intent.icon_state = "harm_small_active"
+ usr.hud_used.help_intent.icon_state = "help_small"
+ usr.hud_used.grab_intent.icon_state = "grab_small"
+ usr.hud_used.disarm_intent.icon_state = "disarm_small"
if("hurt")
usr.a_intent = "grab"
usr.hud_used.action_intent.icon_state = "grab"
+ usr.hud_used.hurt_intent.icon_state = "harm_small"
+ usr.hud_used.help_intent.icon_state = "help_small"
+ usr.hud_used.grab_intent.icon_state = "grab_small_active"
+ usr.hud_used.disarm_intent.icon_state = "disarm_small"
if("grab")
usr.a_intent = "help"
usr.hud_used.action_intent.icon_state = "help"
+ usr.hud_used.hurt_intent.icon_state = "harm_small"
+ usr.hud_used.help_intent.icon_state = "help_small_active"
+ usr.hud_used.grab_intent.icon_state = "grab_small"
+ usr.hud_used.disarm_intent.icon_state = "disarm_small"
else if(changeto == -1)
switch(usr.a_intent)
if("help")
usr.a_intent = "grab"
usr.hud_used.action_intent.icon_state = "grab"
+ usr.hud_used.hurt_intent.icon_state = "harm_small"
+ usr.hud_used.help_intent.icon_state = "help_small"
+ usr.hud_used.grab_intent.icon_state = "grab_small_active"
+ usr.hud_used.disarm_intent.icon_state = "disarm_small"
if("disarm")
usr.a_intent = "help"
usr.hud_used.action_intent.icon_state = "help"
+ usr.hud_used.hurt_intent.icon_state = "harm_small"
+ usr.hud_used.help_intent.icon_state = "help_small_active"
+ usr.hud_used.grab_intent.icon_state = "grab_small"
+ usr.hud_used.disarm_intent.icon_state = "disarm_small"
if("hurt")
usr.a_intent = "disarm"
usr.hud_used.action_intent.icon_state = "disarm"
+ usr.hud_used.hurt_intent.icon_state = "harm_small"
+ usr.hud_used.help_intent.icon_state = "help_small"
+ usr.hud_used.grab_intent.icon_state = "grab_small"
+ usr.hud_used.disarm_intent.icon_state = "disarm_small_active"
if("grab")
usr.a_intent = "hurt"
usr.hud_used.action_intent.icon_state = "harm"
+ usr.hud_used.hurt_intent.icon_state = "harm_small_active"
+ usr.hud_used.help_intent.icon_state = "help_small"
+ usr.hud_used.grab_intent.icon_state = "grab_small"
+ usr.hud_used.disarm_intent.icon_state = "disarm_small"
return
\ No newline at end of file
diff --git a/code/defines/obj.dm b/code/defines/obj.dm
index 7e1a3fce72..83700c3686 100644
--- a/code/defines/obj.dm
+++ b/code/defines/obj.dm
@@ -402,7 +402,9 @@
var/obj/screen/r_hand_hud_object = null
var/obj/screen/l_hand_hud_object = null
var/list/obj/screen/intent_small_hud_objects = null
- var/show_intent_icons = 0
+ var/show_intent_icons = 1
+ var/list/obj/screen/hotkeybuttons = null
+ var/hotkey_ui_hidden = 0 //This is to hide the buttons that can be used via hotkeys. (hotkeybuttons list of buttons)
var/h_type = /obj/screen //this is like...the most pointless thing ever. Use a god damn define!
diff --git a/code/game/hud.dm b/code/game/hud.dm
index c100d0ca7e..5539c8c3c4 100644
--- a/code/game/hud.dm
+++ b/code/game/hud.dm
@@ -12,6 +12,7 @@
//Lower center, persistant menu
+#define ui_sstore1 "3:10,1:5"
#define ui_id "4:12,1:5"
#define ui_belt "5:14,1:5"
#define ui_back "6:14,1:5"
@@ -34,11 +35,12 @@
#define ui_monkey_back "6:14,1:5" //monkey
//Lower right, persistant menu
-#define ui_dropbutton "12:24,2:7"
-#define ui_throw "13:26,2:7"
-#define ui_pull "14:28,2:7"
+#define ui_dropbutton "13:26,1:5"
+#define ui_throw "13:26,1:5"
+#define ui_pull "13:26,2:7"
#define ui_acti "12:24,1:5"
-#define ui_movi "13:26,1:5"
+
+#define ui_movi "13:26,2:7"
#define ui_zonesel "14:28,1:5"
//Gun buttons
@@ -53,36 +55,47 @@
#define ui_fire "14:28,8:17"
#define ui_toxin "14:28,9:19"
+//Upper-middle right (damage indicators)
+#define ui_toxin "14:28,13:27"
+#define ui_fire "14:28,12:25"
+#define ui_oxygen "14:28,11:23"
+#define ui_pressure "14:28,10:21"
+
+//Middle right (status indicators)
+#define ui_nutrition "14:28,5:11"
+#define ui_temp "14:28,6:13"
+#define ui_health "14:28,7:15"
+#define ui_internal "14:28,8:17"
+
+ //borgs
#define ui_borg_health "14:28,6:13" //borgs have the health display where humans have the pressure damage indicator.
#define ui_alien_health "14:28,6:13" //aliens have the health display where humans have the pressure damage indicator.
-
-
-//Upper right (status indicators)
-#define ui_nutrition "11:22,15:-5"
-#define ui_internal "12:24,15:-5"
-#define ui_health "13:26,15:-5"
-#define ui_temp "14:28,15:-5"
-
+#define ui_throw_old "13:26,2:7"
+#define ui_movi_old "12:24,2:7"
+#define ui_pull_old "14:28,2:7"
//Pop-up inventory
-#define ui_shoes "1:6,2:7"
-#define ui_iclothing "2:8,2:7"
+#define ui_shoes "2:8,1:5"
+
+#define ui_iclothing "1:6,2:7"
+#define ui_oclothing "2:8,2:7"
#define ui_gloves "3:10,2:7"
-#define ui_sstore1 "1:6,3:9"
-#define ui_oclothing "2:8,3:9"
-#define ui_glasses "3:10,3:9"
+#define ui_glasses "1:6,3:9"
+#define ui_mask "2:8,3:9"
+#define ui_lear "3:10,3:9"
+#define ui_rear "3:10,4:11"
-#define ui_mask "1:6,4:11"
#define ui_head "2:8,4:11"
-#define ui_lear "3:10,4:11"
-#define ui_rear "4:12,4:11"
+
+
+
//Intent small buttons
-#define ui_help_small "12:8,1:1"
-#define ui_disarm_small "12:15,1:18"
-#define ui_grab_small "12:32,1:18"
-#define ui_harm_small "12:39,1:1"
+#define ui_help_small "12:16,1:-3"
+#define ui_disarm_small "12:16,1:12"
+#define ui_grab_small "12:32,1:12"
+#define ui_harm_small "12:32,1:-3"
@@ -117,7 +130,7 @@ obj/hud/New(var/type = 0)
if(mymob:gloves) mymob:gloves:screen_loc = ui_gloves
if(mymob:l_ear) mymob:l_ear:screen_loc = ui_lear
if(mymob:r_ear) mymob:r_ear:screen_loc = ui_rear
- if(mymob:s_store) mymob:s_store:screen_loc = ui_sstore1
+ //if(mymob:s_store) mymob:s_store:screen_loc = ui_sstore1
if(mymob:glasses) mymob:glasses:screen_loc = ui_glasses
if(mymob:w_uniform) mymob:w_uniform:screen_loc = ui_iclothing
if(mymob:wear_suit) mymob:wear_suit:screen_loc = ui_oclothing
@@ -129,7 +142,7 @@ obj/hud/New(var/type = 0)
if(mymob:gloves) mymob:gloves:screen_loc = null
if(mymob:l_ear) mymob:l_ear:screen_loc = null
if(mymob:r_ear) mymob:r_ear:screen_loc = null
- if(mymob:s_store) mymob:s_store:screen_loc = null
+ //if(mymob:s_store) mymob:s_store:screen_loc = null
if(mymob:glasses) mymob:glasses:screen_loc = null
if(mymob:w_uniform) mymob:w_uniform:screen_loc = null
if(mymob:wear_suit) mymob:wear_suit:screen_loc = null
@@ -139,6 +152,10 @@ obj/hud/New(var/type = 0)
/obj/hud/var/show_otherinventory = 1
/obj/hud/var/obj/screen/action_intent
+/obj/hud/var/obj/screen/hurt_intent
+/obj/hud/var/obj/screen/disarm_intent
+/obj/hud/var/obj/screen/help_intent
+/obj/hud/var/obj/screen/grab_intent
/obj/hud/var/obj/screen/move_intent
/obj/hud/proc/instantiate(var/type = 0)
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 006f6fb8ad..d6eee904e4 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -211,6 +211,13 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }.
doortype = 22
glass = 1
+ glass_atmos
+ name = "Maintenance Hatch"
+ icon = 'dooratmoglass.dmi'
+ opacity = 0
+ doortype = 23
+ glass = 1
+
centcom
name = "Airlock"
icon = 'Doorele.dmi'
@@ -435,6 +442,7 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }.
if(20) new/obj/structure/door_assembly/door_assembly_research( src.loc )
if(21) new/obj/structure/door_assembly/door_assembly_research( src.loc )
if(22) new/obj/structure/door_assembly/door_assembly_min/glass( src.loc )
+ if(23) new/obj/structure/door_assembly/door_assembly_atmo/glass( src.loc )
var/obj/item/weapon/airlock_electronics/ae
if (!electronics)
ae = new/obj/item/weapon/airlock_electronics( src.loc )
diff --git a/code/game/objects/devices/flashlight.dm b/code/game/objects/devices/flashlight.dm
index ddbff34c40..66b6f327f2 100644
--- a/code/game/objects/devices/flashlight.dm
+++ b/code/game/objects/devices/flashlight.dm
@@ -164,6 +164,32 @@
user.UpdateLuminosity()
src.sd_SetLuminosity(brightness_on)
+//RIG helmet light
+/obj/item/clothing/head/helmet/space/rig/attack_self(mob/user)
+ if(!isturf(user.loc))
+ user << "You cannot turn the light on while in this [user.loc]" //To prevent some lighting anomalities.
+ return
+ on = !on
+ icon_state = "rig[on]-[color]"
+ item_state = "rig[on]-[color]"
+
+ if(on)
+ user.total_luminosity += brightness_on
+ else
+ user.total_luminosity -= brightness_on
+
+/obj/item/clothing/head/helmet/space/rig/pickup(mob/user)
+ if(on)
+ user.total_luminosity += brightness_on
+ user.UpdateLuminosity()
+ src.sd_SetLuminosity(0)
+
+/obj/item/clothing/head/helmet/space/rig/dropped(mob/user)
+ if(on)
+ user.total_luminosity -= brightness_on
+ user.UpdateLuminosity()
+ src.sd_SetLuminosity(brightness_on)
+
/obj/item/device/flashlight/lamp/verb/toggle_light()
set name = "Toggle light"
set category = "Object"
diff --git a/code/game/objects/door_assembly.dm b/code/game/objects/door_assembly.dm
index 57f4d63ad6..f316fcc0e8 100644
--- a/code/game/objects/door_assembly.dm
+++ b/code/game/objects/door_assembly.dm
@@ -87,12 +87,18 @@ obj/structure/door_assembly
door_assembly_atmo
name = "Atmospherics Airlock Assembly"
icon_state = "door_as_atmo1"
+ glass_base_icon_state = "door_as_gatmo"
+ glass_type = /obj/machinery/door/airlock/glass/glass_atmos
airlock_type = /obj/machinery/door/airlock/atmos
anchored = 1
density = 1
state = 1
glass = 0
+ glass
+ glass = 1
+ icon_state = "door_as_gatmo1"
+
door_assembly_research
name = "Research Airlock Assembly"
icon_state = "door_as_res1"
diff --git a/code/game/objects/items/weapons/surgery_limbattachment.dm b/code/game/objects/items/weapons/surgery_limbattachment.dm
index 874536f7c7..d84350109a 100644
--- a/code/game/objects/items/weapons/surgery_limbattachment.dm
+++ b/code/game/objects/items/weapons/surgery_limbattachment.dm
@@ -55,14 +55,15 @@
S.attachable = 0
S.destroyed = 0
S.robot = 1
- var/datum/organ/external/T = H.organs[limbloc]
+ var/datum/organ/external/T = H.organs["[limbloc]"]
T.attachable = 0
T.destroyed = 0
T.broken = 0
T.robot = 1
- del(src)
M.update_body()
M.updatehealth()
M.UpdateDamageIcon()
+ del(src)
- return 1
\ No newline at end of file
+ return 1
+ return 0
\ No newline at end of file
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 795f2cf8ab..186fadd0ee 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -539,6 +539,7 @@
set category = "Admin"
if(holder)
holder.check_antagonists()
+ log_admin("[key_name(usr)] checked antagonists.") //for tsar~
//feedback_add_details("admin_verb","CHA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
diff --git a/code/modules/chemical/Chemistry-Tools.dm b/code/modules/chemical/Chemistry-Tools.dm
index ac56d023d0..0defa6ef77 100644
--- a/code/modules/chemical/Chemistry-Tools.dm
+++ b/code/modules/chemical/Chemistry-Tools.dm
@@ -1338,6 +1338,97 @@
user << "\blue [trans] units injected. [reagents.total_volume] units remaining in the hypospray."
return
+/obj/item/weapon/reagent_containers/borghypo
+ name = "Cyborg Hypospray"
+ desc = "An advanced chemical synthesizer and injection system, designed for heavy-duty medical equipment."
+ icon = 'syringe.dmi'
+ item_state = "hypo"
+ icon_state = "borghypo"
+ amount_per_transfer_from_this = 5
+ volume = 30
+ possible_transfer_amounts = null
+ flags = FPRINT
+ var/mode = 1
+ var/charge_cost = 100
+ var/charge_tick = 0
+ var/recharge_time = 10 //Time it takes for shots to recharge (in seconds)
+
+ New()
+ ..()
+ processing_objects.Add(src)
+
+
+ Del()
+ processing_objects.Remove(src)
+ ..()
+
+ process() //Every [recharge_time] seconds, recharge some reagents for the cyborg
+ charge_tick++
+ if(charge_tick < recharge_time) return 0
+ charge_tick = 0
+
+ if(isrobot(src.loc))
+ var/mob/living/silicon/robot/R = src.loc
+ if(R && R.cell)
+ if(mode == 1 && reagents.total_volume < 30) //Don't recharge reagents and drain power if the storage is full.
+ R.cell.use(charge_cost) //Take power from borg...
+ reagents.add_reagent("tricordrazine",10) //And fill hypo with reagent.
+ if(mode == 2 && reagents.total_volume < 30)
+ R.cell.use(charge_cost)
+ reagents.add_reagent("inaprovaline", 10)
+ if(mode == 3 && reagents.total_volume < 30)
+ R.cell.use(charge_cost)
+ reagents.add_reagent("spaceacillin", 10)
+ //update_icon()
+ return 1
+
+/obj/item/weapon/reagent_containers/borghypo/attack(mob/M as mob, mob/user as mob)
+ if(!reagents.total_volume)
+ user << "\red The injector is empty."
+ return
+ if (!( istype(M, /mob) ))
+ return
+ if (reagents.total_volume)
+ user << "\blue You inject [M] with the injector."
+ M << "\red You feel a tiny prick!"
+
+ src.reagents.reaction(M, INGEST)
+ if(M.reagents)
+ var/trans = reagents.trans_to(M, amount_per_transfer_from_this)
+ user << "\blue [trans] units injected. [reagents.total_volume] units remaining."
+ return
+
+/obj/item/weapon/reagent_containers/borghypo/attack_self(mob/user as mob)
+ playsound(src.loc, 'pop.ogg', 50, 0) //Change the mode
+ if(mode == 1)
+ mode = 2
+ reagents.clear_reagents() //Flushes whatever was in the storage previously, so you don't get chems all mixed up.
+ user << "\blue Synthesizer is now producing 'Inaprovaline'."
+ return
+ if(mode == 2)
+ mode = 3
+ reagents.clear_reagents()
+ user << "\blue Synthesizer is now producing 'Spaceacillin'."
+ return
+ if(mode == 3)
+ mode = 1
+ reagents.clear_reagents()
+ user << "\blue Synthesizer is now producing 'Tricordrazine'."
+ return
+
+/obj/item/weapon/reagent_containers/borghypo/examine()
+ set src in view()
+ ..()
+ if (!(usr in view(2)) && usr!=src.loc) return
+
+ if(reagents && reagents.reagent_list.len)
+ for(var/datum/reagent/R in reagents.reagent_list)
+ usr << "\blue It currently has [R.volume] units of [R.name] stored."
+ else
+ usr << "\blue It is currently empty. Allow some time for the internal syntheszier to produce more."
+
+
+
/obj/item/weapon/reagent_containers/hypospray/ert
name = "emergency hypospray"
desc = "The DeForest Medical Corporation hypospray is a sterile, air-needle autoinjector for rapid administration of drugs to patients."
@@ -1592,7 +1683,8 @@
istype(W, /obj/item/weapon/circular_saw) || \
istype(W, /obj/item/weapon/melee/energy/sword) && W:active || \
istype(W, /obj/item/weapon/melee/energy/blade) || \
- istype(W, /obj/item/weapon/shovel) \
+ istype(W, /obj/item/weapon/shovel) || \
+ istype(W, /obj/item/weapon/hatchet) \
)
inaccurate = 1
/*else if(W.w_class <= 2 && istype(src,/obj/item/weapon/reagent_containers/food/snacks/sliceable))
@@ -3608,7 +3700,7 @@
name = "Erika Surprise"
desc = "The surprise is, it's green!"
if("driestmartini")
- icon_state = "driestmartini"
+ icon_state = "driestmartiniglass"
name = "Driest Martini"
desc = "Only for the experienced. You think you see sand floating in the glass."
else
diff --git a/code/modules/clothing/spacesuits/rig.dm b/code/modules/clothing/spacesuits/rig.dm
index e7e8dc4e41..0aa74b947b 100644
--- a/code/modules/clothing/spacesuits/rig.dm
+++ b/code/modules/clothing/spacesuits/rig.dm
@@ -1,18 +1,26 @@
/obj/item/clothing/head/helmet/space/rig
name = "engineer RIG helmet"
desc = "A special helmet designed for work in a hazardous, low-pressure environment. Has radiation shielding."
- icon_state = "rig-engineering"
- item_state = "rig_helm"
- armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 35, bio = 100, rad = 20)
+ icon_state = "rig0-engineering"
+ item_state = "rig0_engineering"
+ armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 35, bio = 100, rad = 60)
allowed = list(/obj/item/device/flashlight)
+ var/brightness_on = 4 //luminosity when on
+ var/on = 0
+ color = "engineering" //Determines used sprites: rig[on]-[color] and rig[on]-[color]2 (lying down sprite)
/obj/item/clothing/head/helmet/space/rig/mining
name = "mining RIG helmet"
- icon_state = "rig-mining"
+ icon_state = "rig0-mining"
+ item_state = "rig0-mining"
+ color = "mining"
+
/obj/item/clothing/head/helmet/space/rig/elite
name = "advanced RIG helmet"
- icon_state = "rig-white"
+ icon_state = "rig0-white"
+ item_state = "rig0-white"
+ color = "white"
/obj/item/clothing/head/helmet/space/rig/engspace_helmet
name = "engineering space helmet"
@@ -32,7 +40,8 @@
/obj/item/clothing/head/helmet/space/rig/security
name = "security RIG helmet"
- icon_state = "rig-security"
+ icon_state = "rig0-security"
+ color = "security"
armor = list(melee = 60, bullet = 10, laser = 30, energy = 5, bomb = 45, bio = 100, rad = 10)
/obj/item/clothing/suit/space/rig
diff --git a/code/modules/food/food.dm b/code/modules/food/food.dm
index af8363d995..b820fd6c17 100644
--- a/code/modules/food/food.dm
+++ b/code/modules/food/food.dm
@@ -1411,14 +1411,6 @@
reagents.add_reagent("metroid", 5)
bitesize = 3
-/obj/item/weapon/reagent_containers/food/snacks/braincake
- name = "Brain Cake"
- desc = "A squishy cake-thing."
- icon_state = "braincake"
- New()
- ..()
- reagents.add_reagent("nutriment", 28)
- bitesize = 3
/obj/item/weapon/reagent_containers/food/snacks/mushroomsoup
name = "chantrelle soup"
@@ -1575,6 +1567,23 @@
trash = "plate"
bitesize = 2
+/obj/item/weapon/reagent_containers/food/snacks/sliceable/braincake
+ name = "Brain Cake"
+ desc = "A squishy cake-thing."
+ icon_state = "braincake"
+ slice_path = /obj/item/weapon/reagent_containers/food/snacks/braincakeslice
+ slices_num = 5
+ New()
+ ..()
+ reagents.add_reagent("nutriment", 28)
+ bitesize = 2
+
+/obj/item/weapon/reagent_containers/food/snacks/braincakeslice
+ name = "Brain Cake slice"
+ desc = "Lemme tell you something about prions. THEY'RE DELICIOUS."
+ icon_state = "braincakeslice"
+ bitesize = 2
+
/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesecake
name = "Cheese Cake"
desc = "DANGEROUSLY cheesy."
diff --git a/code/modules/food/recipes_microwave.dm b/code/modules/food/recipes_microwave.dm
index f89c92f4f2..9dd974a39c 100644
--- a/code/modules/food/recipes_microwave.dm
+++ b/code/modules/food/recipes_microwave.dm
@@ -959,9 +959,9 @@
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/egg,
- /mob/living/carbon/brain,
+ /obj/item/brain
)
- result = /obj/item/weapon/reagent_containers/food/snacks/braincake
+ result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/braincake
/datum/recipe/chocolateegg
items = list(
diff --git a/code/modules/mob/living/carbon/alien/humanoid/hud.dm b/code/modules/mob/living/carbon/alien/humanoid/hud.dm
index 9b48bde3e6..67223c85fb 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/hud.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/hud.dm
@@ -54,34 +54,38 @@
using = new src.h_type( src )
using.name = "help"
using.icon = 'screen1_alien.dmi'
- using.icon_state = "help_small"
+ using.icon_state = (mymob.a_intent == "help" ? "help_small_active" : "help_small")
using.screen_loc = ui_help_small
using.layer = 21
- src.intent_small_hud_objects += using
+ src.adding += using
+ help_intent = using
using = new src.h_type( src )
using.name = "disarm"
using.icon = 'screen1_alien.dmi'
- using.icon_state = "disarm_small"
+ using.icon_state = (mymob.a_intent == "disarm" ? "disarm_small_active" : "disarm_small")
using.screen_loc = ui_disarm_small
using.layer = 21
- src.intent_small_hud_objects += using
+ src.adding += using
+ disarm_intent = using
using = new src.h_type( src )
using.name = "grab"
using.icon = 'screen1_alien.dmi'
- using.icon_state = "grab_small"
+ using.icon_state = (mymob.a_intent == "grab" ? "grab_small_active" : "grab_small")
using.screen_loc = ui_grab_small
using.layer = 21
- src.intent_small_hud_objects += using
+ src.adding += using
+ grab_intent = using
using = new src.h_type( src )
using.name = "harm"
using.icon = 'screen1_alien.dmi'
- using.icon_state = "harm_small"
+ using.icon_state = (mymob.a_intent == "hurt" ? "harm_small_active" : "harm_small")
using.screen_loc = ui_harm_small
using.layer = 21
- src.intent_small_hud_objects += using
+ src.adding += using
+ hurt_intent = using
//end intent small hud objects
@@ -90,7 +94,7 @@
using.dir = SOUTHWEST
using.icon = 'screen1_alien.dmi'
using.icon_state = (mymob.m_intent == "run" ? "running" : "walking")
- using.screen_loc = ui_movi
+ using.screen_loc = ui_movi_old
using.layer = 20
src.adding += using
move_intent = using
@@ -257,7 +261,7 @@
mymob.throw_icon.icon = 'screen1_alien.dmi'
mymob.throw_icon.icon_state = "act_throw_off"
mymob.throw_icon.name = "throw"
- mymob.throw_icon.screen_loc = ui_throw
+ mymob.throw_icon.screen_loc = ui_throw_old
mymob.oxygen = new /obj/screen( null )
mymob.oxygen.icon = 'screen1_alien.dmi'
@@ -287,7 +291,7 @@
mymob.pullin.icon = 'screen1_alien.dmi'
mymob.pullin.icon_state = "pull0"
mymob.pullin.name = "pull"
- mymob.pullin.screen_loc = ui_pull
+ mymob.pullin.screen_loc = ui_pull_old
mymob.blind = new /obj/screen( null )
mymob.blind.icon = 'screen1_alien.dmi'
diff --git a/code/modules/mob/living/carbon/alien/larva/hud.dm b/code/modules/mob/living/carbon/alien/larva/hud.dm
index aeaba01f23..9da16a0b3b 100644
--- a/code/modules/mob/living/carbon/alien/larva/hud.dm
+++ b/code/modules/mob/living/carbon/alien/larva/hud.dm
@@ -56,7 +56,7 @@
using.dir = SOUTHWEST
using.icon = 'screen1_alien.dmi'
using.icon_state = (mymob.m_intent == "run" ? "running" : "walking")
- using.screen_loc = ui_movi
+ using.screen_loc = ui_movi_old
using.layer = 20
src.adding += using
move_intent = using
@@ -179,7 +179,7 @@
mymob.pullin.icon = 'screen1_alien.dmi'
mymob.pullin.icon_state = "pull0"
mymob.pullin.name = "pull"
- mymob.pullin.screen_loc = ui_pull
+ mymob.pullin.screen_loc = ui_pull_old
mymob.blind = new /obj/screen( null )
mymob.blind.icon = 'screen1_alien.dmi'
diff --git a/code/modules/mob/living/carbon/brain/hud.dm b/code/modules/mob/living/carbon/brain/hud.dm
index 1ce2c9726e..0362b10938 100644
--- a/code/modules/mob/living/carbon/brain/hud.dm
+++ b/code/modules/mob/living/carbon/brain/hud.dm
@@ -1,6 +1,6 @@
/obj/hud/proc/brain_hud(var/ui_style='screen1_old.dmi')
- ui_style='screen1_old.dmi' //Overriding the parameter. Only this UI style is acceptable with the 'sleek' layout.
+ //ui_style='screen1_old.dmi' //Overriding the parameter. Only this UI style is acceptable with the 'sleek' layout.
blurry = new h_type( src )
blurry.screen_loc = "WEST,SOUTH to EAST,NORTH"
diff --git a/code/modules/mob/living/carbon/human/hud.dm b/code/modules/mob/living/carbon/human/hud.dm
index 8a9cf5edbd..086271d8d6 100644
--- a/code/modules/mob/living/carbon/human/hud.dm
+++ b/code/modules/mob/living/carbon/human/hud.dm
@@ -1,6 +1,6 @@
/obj/hud/proc/human_hud(var/ui_style='screen1_old.dmi')
- ui_style='screen1_old.dmi' //Overriding the parameter. Only this UI style is acceptable with the 'sleek' layout.
+ //ui_style='screen1_old.dmi' //Overriding the parameter. Only this UI style is acceptable with the 'sleek' layout.
src.adding = list( )
src.other = list( )
@@ -11,6 +11,7 @@
src.vimpaired = list( )
src.darkMask = list( )
src.intent_small_hud_objects = list( )
+ src.hotkeybuttons = list( ) //These can be disabled for hotkey usersx
src.g_dither = new src.h_type( src )
src.g_dither.screen_loc = "WEST,SOUTH to EAST,NORTH"
@@ -60,34 +61,38 @@
using = new src.h_type( src )
using.name = "help"
using.icon = ui_style
- using.icon_state = "help_small"
+ using.icon_state = (mymob.a_intent == "help" ? "help_small_active" : "help_small")
using.screen_loc = ui_help_small
using.layer = 21
- src.intent_small_hud_objects += using
+ src.adding += using
+ help_intent = using
using = new src.h_type( src )
using.name = "disarm"
using.icon = ui_style
- using.icon_state = "disarm_small"
+ using.icon_state = (mymob.a_intent == "disarm" ? "disarm_small_active" : "disarm_small")
using.screen_loc = ui_disarm_small
using.layer = 21
- src.intent_small_hud_objects += using
+ src.adding += using
+ disarm_intent = using
using = new src.h_type( src )
using.name = "grab"
using.icon = ui_style
- using.icon_state = "grab_small"
+ using.icon_state = (mymob.a_intent == "grab" ? "grab_small_active" : "grab_small")
using.screen_loc = ui_grab_small
using.layer = 21
- src.intent_small_hud_objects += using
+ src.adding += using
+ grab_intent = using
using = new src.h_type( src )
using.name = "harm"
using.icon = ui_style
- using.icon_state = "harm_small"
+ using.icon_state = (mymob.a_intent == "hurt" ? "harm_small_active" : "harm_small")
using.screen_loc = ui_harm_small
using.layer = 21
- src.intent_small_hud_objects += using
+ src.adding += using
+ hurt_intent = using
//end intent small hud objects
@@ -148,7 +153,7 @@
using.icon_state = "act_drop"
using.screen_loc = ui_dropbutton
using.layer = 19
- src.adding += using
+ src.hotkeybuttons += using
using = new src.h_type( src )
using.name = "i_clothing"
@@ -269,7 +274,7 @@
using.icon_state = "belt"
using.screen_loc = ui_sstore1
using.layer = 19
- src.other += using
+ src.adding += using
/*
using = new src.h_type( src )
@@ -520,6 +525,7 @@
mymob.throw_icon.icon_state = "act_throw_off"
mymob.throw_icon.name = "throw"
mymob.throw_icon.screen_loc = ui_throw
+ src.hotkeybuttons += mymob.throw_icon
mymob.oxygen = new /obj/screen( null )
mymob.oxygen.icon = ui_style
@@ -528,7 +534,7 @@
mymob.oxygen.screen_loc = ui_oxygen
mymob.pressure = new /obj/screen( null )
- mymob.pressure.icon = 'screen1_old.dmi'
+ mymob.pressure.icon = ui_style
mymob.pressure.icon_state = "pressure0"
mymob.pressure.name = "pressure"
mymob.pressure.screen_loc = ui_pressure
@@ -587,6 +593,7 @@
mymob.pullin.icon_state = "pull0"
mymob.pullin.name = "pull"
mymob.pullin.screen_loc = ui_pull
+ src.hotkeybuttons += mymob.pullin
mymob.blind = new /obj/screen( null )
mymob.blind.icon = ui_style
@@ -728,7 +735,7 @@
//, mymob.i_select, mymob.m_select
mymob.client.screen += list( mymob.pain, mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.pressure, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.healths, mymob.nutrition_icon, mymob.pullin, mymob.blind, mymob.flash, mymob.gun_setting_icon) //, mymob.hands, mymob.rest, mymob.sleep, mymob.gun_setting_icon) //, mymob.mach )
- mymob.client.screen += src.adding + src.other
+ mymob.client.screen += src.adding + src.other + src.hotkeybuttons
//if(istype(mymob,/mob/living/carbon/monkey)) mymob.client.screen += src.mon_blo
@@ -764,4 +771,18 @@
using.screen_loc = "1,1 to 2,2"
using.layer = 19
src.adding += using
- */
\ No newline at end of file
+ */
+
+/mob/living/carbon/human/verb/toggle_hotkey_verbs()
+ set category = "OOC"
+ set name = "Toggle hotkey buttons"
+ set desc = "This disables or enables the user interface buttons which can be used with hotkeys."
+
+ if(hud_used.hotkey_ui_hidden)
+ client.screen += src.hud_used.hotkeybuttons
+ src.hud_used.hotkey_ui_hidden = 0
+ else
+ client.screen -= src.hud_used.hotkeybuttons
+ src.hud_used.hotkey_ui_hidden = 1
+
+
diff --git a/code/modules/mob/living/carbon/monkey/hud.dm b/code/modules/mob/living/carbon/monkey/hud.dm
index 39a3d29af9..79fe7e37c9 100644
--- a/code/modules/mob/living/carbon/monkey/hud.dm
+++ b/code/modules/mob/living/carbon/monkey/hud.dm
@@ -1,6 +1,6 @@
/obj/hud/proc/monkey_hud(var/ui_style='screen1_old.dmi')
- ui_style='screen1_old.dmi' //Overriding the parameter. Only this UI style is acceptable with the 'sleek' layout.
+ //ui_style='screen1_old.dmi' //Overriding the parameter. Only this UI style is acceptable with the 'sleek' layout.
src.adding = list( )
src.other = list( )
@@ -62,34 +62,38 @@
using = new src.h_type( src )
using.name = "help"
using.icon = ui_style
- using.icon_state = "help_small"
+ using.icon_state = (mymob.a_intent == "help" ? "help_small_active" : "help_small")
using.screen_loc = ui_help_small
using.layer = 21
- src.intent_small_hud_objects += using
+ src.adding += using
+ help_intent = using
using = new src.h_type( src )
using.name = "disarm"
using.icon = ui_style
- using.icon_state = "disarm_small"
+ using.icon_state = (mymob.a_intent == "disarm" ? "disarm_small_active" : "disarm_small")
using.screen_loc = ui_disarm_small
using.layer = 21
- src.intent_small_hud_objects += using
+ src.adding += using
+ disarm_intent = using
using = new src.h_type( src )
using.name = "grab"
using.icon = ui_style
- using.icon_state = "grab_small"
+ using.icon_state = (mymob.a_intent == "grab" ? "grab_small_active" : "grab_small")
using.screen_loc = ui_grab_small
using.layer = 21
- src.intent_small_hud_objects += using
+ src.adding += using
+ grab_intent = using
using = new src.h_type( src )
using.name = "harm"
using.icon = ui_style
- using.icon_state = "harm_small"
+ using.icon_state = (mymob.a_intent == "hurt" ? "harm_small_active" : "harm_small")
using.screen_loc = ui_harm_small
using.layer = 21
- src.intent_small_hud_objects += using
+ src.adding += using
+ hurt_intent = using
//end intent small hud objects
@@ -447,7 +451,7 @@
mymob.oxygen.screen_loc = ui_oxygen
mymob.pressure = new /obj/screen( null )
- mymob.pressure.icon = 'screen1_old.dmi'
+ mymob.pressure.icon = ui_style
mymob.pressure.icon_state = "pressure0"
mymob.pressure.name = "pressure"
mymob.pressure.screen_loc = ui_pressure
diff --git a/code/modules/mob/living/silicon/robot/hud.dm b/code/modules/mob/living/silicon/robot/hud.dm
index 8d74866ccf..d272c96f3a 100644
--- a/code/modules/mob/living/silicon/robot/hud.dm
+++ b/code/modules/mob/living/silicon/robot/hud.dm
@@ -47,7 +47,7 @@
using.dir = SOUTHWEST
using.icon = 'screen1_robot.dmi'
using.icon_state = "radio"
- using.screen_loc = ui_movi
+ using.screen_loc = ui_movi_old
using.layer = 20
src.adding += using
@@ -166,7 +166,7 @@
using.name = "panel"
using.icon = 'screen1_robot.dmi'
using.icon_state = "panel"
- using.screen_loc = ui_throw
+ using.screen_loc = ui_throw_old
using.layer = 19
src.adding += using
@@ -202,7 +202,7 @@
mymob.pullin.icon = 'screen1_robot.dmi'
mymob.pullin.icon_state = "pull0"
mymob.pullin.name = "pull"
- mymob.pullin.screen_loc = ui_pull
+ mymob.pullin.screen_loc = ui_pull_old
mymob.blind = new /obj/screen( null )
mymob.blind.icon = 'screen1_robot.dmi'
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index 53321d6748..2962b34692 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -59,37 +59,12 @@
..()
src.modules += new /obj/item/borg/sight/hud/med(src)
src.modules += new /obj/item/device/healthanalyzer(src)
- src.modules += new /obj/item/weapon/reagent_containers/syringe/robot/antitoxin(src)
- src.modules += new /obj/item/weapon/reagent_containers/syringe/robot/inaprovaline(src)
- src.modules += new /obj/item/weapon/reagent_containers/syringe/robot/mixed(src)
- src.modules += new /obj/item/weapon/reagent_containers/syringe(src)
- src.modules += new /obj/item/weapon/reagent_containers/syringe(src)
- src.modules += new /obj/item/weapon/reagent_containers/glass/bottle/robot/inaprovaline(src)
- src.modules += new /obj/item/weapon/reagent_containers/glass/bottle/robot/antitoxin(src)
- src.modules += new /obj/item/weapon/reagent_containers/glass/beaker(src)
+ src.modules += new /obj/item/weapon/reagent_containers/borghypo
+ src.modules += new /obj/item/weapon/reagent_containers/glass/large(src)
src.modules += new /obj/item/weapon/reagent_containers/robodropper(src)
- src.emag = new /obj/item/weapon/reagent_containers/pill/cyanide(src)
- src.modules += new /obj/item/weapon/reagent_containers/pill/dexalin(src)
- src.modules += new /obj/item/weapon/reagent_containers/pill/antitox(src)
- src.modules += new /obj/item/weapon/reagent_containers/pill/kelotane(src)
- src.modules += new /obj/item/weapon/reagent_containers/pill/bicaridine(src)
- return
-
-
- respawn_consumable(var/mob/living/silicon/robot/R)
- var/list/what = list (
- /obj/item/weapon/reagent_containers/pill/dexalin,
- /obj/item/weapon/reagent_containers/pill/antitox,
- /obj/item/weapon/reagent_containers/pill/kelotane,
- /obj/item/weapon/reagent_containers/pill/bicaridine
- )
- for (var/T in what)
- if (!(locate(T) in src.modules))
- src.modules -= null
- var/O = new T(src)
- src.modules += O
- if (R.emagged && !src.emag) //thanks to cyborg-900 for uncovering this
- src.emag = new /obj/item/weapon/reagent_containers/pill/cyanide(src)
+ src.modules += new /obj/item/weapon/reagent_containers/syringe
+ src.modules += new /obj/item/weapon/extinguisher/mini
+ src.emag = new /obj/item/weapon/circular_saw
return
@@ -167,7 +142,8 @@
New()
..()
src.modules += new /obj/item/weapon/soap/nanotrasen(src)
- src.modules += new /obj/item/weapon/trashbag(src)
+ src.modules += new /obj/item/weapon/trashbag
+ src.modules += new/obj/item/weapon/mop
src.emag = new /obj/item/weapon/cleaner(src)
var/datum/reagents/R = new/datum/reagents(1000)
diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm
index d0b5ae9c2f..9cda9325cf 100644
--- a/code/modules/mob/mob_movement.dm
+++ b/code/modules/mob/mob_movement.dm
@@ -76,11 +76,17 @@
else
usr.a_intent = "disarm"
usr.hud_used.action_intent.icon_state = "disarm"
-
+ usr.hud_used.hurt_intent.icon_state = "harm_small"
+ usr.hud_used.help_intent.icon_state = "help_small"
+ usr.hud_used.grab_intent.icon_state = "grab_small"
+ usr.hud_used.disarm_intent.icon_state = "disarm_small_active"
if("disarm")
usr.a_intent = "hurt"
usr.hud_used.action_intent.icon_state = "harm"
-
+ usr.hud_used.hurt_intent.icon_state = "harm_small_active"
+ usr.hud_used.help_intent.icon_state = "help_small"
+ usr.hud_used.grab_intent.icon_state = "grab_small"
+ usr.hud_used.disarm_intent.icon_state = "disarm_small"
if("hurt")
if(issilicon(usr))
usr.a_intent = "help"
@@ -88,10 +94,17 @@
else
usr.a_intent = "grab"
usr.hud_used.action_intent.icon_state = "grab"
-
+ usr.hud_used.hurt_intent.icon_state = "harm_small"
+ usr.hud_used.help_intent.icon_state = "help_small"
+ usr.hud_used.grab_intent.icon_state = "grab_small_active"
+ usr.hud_used.disarm_intent.icon_state = "disarm_small"
if("grab")
usr.a_intent = "help"
usr.hud_used.action_intent.icon_state = "help"
+ usr.hud_used.hurt_intent.icon_state = "harm_small"
+ usr.hud_used.help_intent.icon_state = "help_small_active"
+ usr.hud_used.grab_intent.icon_state = "grab_small"
+ usr.hud_used.disarm_intent.icon_state = "disarm_small"
usr << "\blue Your intent is now \"[usr.a_intent]\"."
else
usr << "\red This mob type does not use intents."
diff --git a/code/modules/mob/new_player/preferences.dm b/code/modules/mob/new_player/preferences.dm
index 66c5ed464a..1e776e3dbb 100644
--- a/code/modules/mob/new_player/preferences.dm
+++ b/code/modules/mob/new_player/preferences.dm
@@ -47,95 +47,95 @@ var/const
datum/preferences
- var
- real_name
- be_random_name = 0
- gender = MALE
- age = 30.0
- b_type = "A+"
+ var/real_name
+ var/be_random_name = 0
+ var/gender = MALE
+ var/age = 30.0
+ var/b_type = "A+"
//Special role selection
- be_special = 0
+ var/be_special = 0
//Play admin midis
- midis = 1
+ var/midis = 1
//Toggle ghost ears
- ghost_ears = 1
- ghost_sight = 1
+ var/ghost_ears = 1
+ var/ghost_sight = 1
//Play pregame music
- pregame_music = 1
+ var/pregame_music = 1
//Saved changlog filesize to detect if there was a change
- lastchangelog = 0
+ var/lastchangelog = 0
//Just like it sounds
- ooccolor = "#b82e00"
- underwear = 1
- list/underwear_m = list("White", "Grey", "Green", "Blue", "Black", "None") //Curse whoever made male/female underwear diffrent colours
- list/underwear_f = list("Red", "White", "Yellow", "Blue", "Black", "None")
- backbag = 2
- list/backbaglist = list("Nothing", "Backpack", "Satchel", "Satchel Alt")
+ var/ooccolor = "#b82e00"
+ var/underwear = 1
+ var/list/underwear_m = list("White", "Grey", "Green", "Blue", "Black", "None") //Curse whoever made male/female underwear diffrent colours
+ var/list/underwear_f = list("Red", "White", "Yellow", "Blue", "Black", "None")
+ var/backbag = 2
+ var/list/backbaglist = list("Nothing", "Backpack", "Satchel", "Satchel Alt")
//Hair type
- h_style = "Short Hair"
- datum/sprite_accessory/hair/hair_style
+ var/h_style = "Short Hair"
+ var/datum/sprite_accessory/hair/hair_style
//Hair color
- r_hair = 0
- g_hair = 0
- b_hair = 0
+ var/r_hair = 0
+ var/g_hair = 0
+ var/b_hair = 0
//Face hair type
- f_style = "Shaved"
- datum/sprite_accessory/facial_hair/facial_hair_style
+ var/f_style = "Shaved"
+ var/datum/sprite_accessory/facial_hair/facial_hair_style
//Face hair color
- r_facial = 0
- g_facial = 0
- b_facial = 0
+ var/r_facial = 0
+ var/g_facial = 0
+ var/b_facial = 0
//Species
- species = "Human"
+ var/species = "Human"
//Skin color
- s_tone = 0
+ var/s_tone = 0
//Eye color
- r_eyes = 0
- g_eyes = 0
- b_eyes = 0
+ var/r_eyes = 0
+ var/g_eyes = 0
+ var/b_eyes = 0
//UI style
- UI = UI_OLD
+ //UI = UI_OLD
+ var/UI_style = "Midnight"
//Mob preview
- icon/preview_icon = null
- preview_dir = SOUTH
+ var/icon/preview_icon = null
+ var/preview_dir = SOUTH
//Jobs, uses bitflags
- job_civilian_high = 0
- job_civilian_med = 0
- job_civilian_low = 0
+ var/job_civilian_high = 0
+ var/job_civilian_med = 0
+ var/job_civilian_low = 0
- job_medsci_high = 0
- job_medsci_med = 0
- job_medsci_low = 0
+ var/job_medsci_high = 0
+ var/job_medsci_med = 0
+ var/job_medsci_low = 0
- job_engsec_high = 0
- job_engsec_med = 0
- job_engsec_low = 0
+ var/job_engsec_high = 0
+ var/job_engsec_med = 0
+ var/job_engsec_low = 0
- list/job_alt_titles = new() // the default name of a job like "Medical Doctor"
+ var/list/job_alt_titles = new() // the default name of a job like "Medical Doctor"
- flavor_text = ""
+ var/flavor_text = ""
// slot stuff (Why were they var/var? --SkyMarshal)
- slotname
- curslot = 0
- disabilities = 0
+ var/slotname
+ var/curslot = 0
+ var/disabilities = 0
- used_skillpoints = 0
- skill_specialization = null
- list/skills = list() // skills can range from 0 to 3
+ var/used_skillpoints = 0
+ var/skill_specialization = null
+ var/list/skills = list() // skills can range from 0 to 3
// OOC Metadata:
- metadata = ""
+ var/metadata = ""
New()
@@ -262,7 +262,7 @@ datum/preferences
dat += "Age: [age]"
dat += "
"
- //dat += "UI Style: [UI == UI_NEW ? "New" : "Old"]
" -- UI Style no longer a thing
+ dat += "UI Style: [UI_style]
"
dat += "Play admin midis: [midis == 1 ? "Yes" : "No"]
"
dat += "Ghost ears: [ghost_ears == 0 ? "Nearest Creatures" : "All Speech"]
"
dat += "Ghost sight: [ghost_sight == 0 ? "Nearest Creatures" : "All Emotes"]
"
@@ -270,7 +270,7 @@ datum/preferences
if(config.allow_Metadata)
dat += "OOC Notes: Edit
"
- if((user.client) && (user.client.holder) && (user.client.holder.rank) && (user.client.holder.rank == "Game Master"))
+ if((user.client) && (user.client.holder) && (user.client.holder.rank) && (user.client.holder.level >= 5))
dat += "
| __ |
|
- Code: Abi79, Aryn, Cael_Aislinn, Chinsky, cib, CompactNinja, DopeGhoti, Erthilo, Hawk_v3, Head, Ispil, Lexus Langg, Melonstorm, Master_of_Stuff, Miniature, Mloc, SkyMarshal, Spectre, Strumpetplaya, Sunfall, Tastyfish, Uristqwerty - Sprites: Apple_Master, Arcalane, Chinsky, CompactNinja, Deus Dactyl, Erthilo, Flashkirby, Miniature + Code: Abi79, Aryn, Cael_Aislinn, Chinsky, cib, CompactNinja, DopeGhoti, Erthilo, Hawk_v3, Head, Ispil, Lexusjjss, Melonstorm, Miniature, Mloc, SkyMarshal, Spectre, Strumpetplaya, Sunfall, Tastyfish, Uristqwerty + Sprites: Apple_Master, Arcalane, Chinsky, CompactNinja, Deus Dactyl, Erthilo, Flashkirby, Miniature, Xenone Thanks To: /tg/ station devs, Goonstation devs, and the original Spacestation 13 devs. |