diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index 90c953a110..8c62d68963 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -111,6 +111,10 @@ #define ui_alienplasmadisplay "EAST-1:28,CENTER-2:15" #define ui_alien_queen_finder "EAST-1:28,CENTER-3:15" +//constructs +#define ui_construct_pull "EAST,CENTER-2:15" +#define ui_construct_health "EAST,CENTER:15" //same as borgs and humans + // AI #define ui_ai_core "SOUTH:6,WEST" diff --git a/code/_onclick/hud/constructs.dm b/code/_onclick/hud/constructs.dm new file mode 100644 index 0000000000..dc3cea7f99 --- /dev/null +++ b/code/_onclick/hud/constructs.dm @@ -0,0 +1,18 @@ + +/datum/hud/construct + ui_style_icon = 'icons/mob/screen_construct.dmi' + +/datum/hud/construct/New(mob/owner) + ..() + pull_icon = new /obj/screen/pull() + pull_icon.icon = ui_style_icon + pull_icon.update_icon(mymob) + pull_icon.screen_loc = ui_pull_resist + static_inventory += pull_icon + + healths = new /obj/screen/healths/construct() + infodisplay += healths + +/mob/living/simple_animal/hostile/construct/create_mob_hud() + if(client && !hud_used) + hud_used = new /datum/hud/construct(src) diff --git a/code/_onclick/hud/constructs.dm.rej b/code/_onclick/hud/constructs.dm.rej new file mode 100644 index 0000000000..1ea29cde32 --- /dev/null +++ b/code/_onclick/hud/constructs.dm.rej @@ -0,0 +1,25 @@ +diff a/code/_onclick/hud/constructs.dm b/code/_onclick/hud/constructs.dm (rejected hunks) +@@ -1,18 +1,18 @@ + + /datum/hud/constructs + ui_style_icon = 'icons/mob/screen_construct.dmi' +- ++ + /datum/hud/constructs/New(mob/owner) + ..() + pull_icon = new /obj/screen/pull() +- pull_icon.icon = ui_style_icon ++ pull_icon.icon = 'icons/mob/screen_construct.dmi' + pull_icon.update_icon(mymob) +- pull_icon.screen_loc = ui_pull_resist ++ pull_icon.screen_loc = ui_construct_pull + static_inventory += pull_icon +- ++ + healths = new /obj/screen/healths/construct() + infodisplay += healths +- ++ + /mob/living/simple_animal/hostile/construct/create_mob_hud() + if(client && !hud_used) + hud_used = new /datum/hud/constructs(src) diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 81754efc93..bfab19ba5f 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -532,6 +532,12 @@ screen_loc = ui_health mouse_opacity = 0 +/obj/screen/healths/construct + icon = 'icons/mob/screen_construct.dmi' + icon_state = "artificer_health0" + screen_loc = ui_construct_health + mouse_opacity = 0 + /obj/screen/healthdoll name = "health doll" screen_loc = ui_healthdoll diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index edb12a3fef..b879f1baf6 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -14,7 +14,8 @@ stop_automated_movement = 1 status_flags = CANPUSH attack_sound = 'sound/weapons/punch1.ogg' - see_in_dark = 7 + see_in_dark = 7 + lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 0, CLONE = 0, STAMINA = 0, OXY = 0) atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 @@ -83,7 +84,11 @@ /mob/living/simple_animal/hostile/construct/electrocute_act(shock_damage, obj/source, siemens_coeff = 1, safety = 0, tesla_shock = 0, illusion = 0, stun = TRUE) return 0 - + +/mob/living/simple_animal/hostile/construct/adjustHealth(amount, updating_health = TRUE, forced = FALSE) + . = ..() + if(updating_health) + update_health_hud() /////////////////Juggernaut/////////////// /mob/living/simple_animal/hostile/construct/armored @@ -268,3 +273,22 @@ /mob/living/simple_animal/hostile/construct/harvester/hostile //actually hostile, will move around, hit things AIStatus = AI_ON environment_smash = 1 //only token destruction, don't smash the cult wall NO STOP + + + +/////////////////////////////ui stuff///////////////////////////// + +/mob/living/simple_animal/hostile/construct/update_health_hud() + if(hud_used) + if(health >= maxHealth) + hud_used.healths.icon_state = "[icon_state]_health0" + else if(health > maxHealth*0.8) + hud_used.healths.icon_state = "[icon_state]_health2" + else if(health > maxHealth*0.6) + hud_used.healths.icon_state = "[icon_state]_health3" + else if(health > maxHealth*0.4) + hud_used.healths.icon_state = "[icon_state]_health4" + else if(health > maxHealth*0.2) + hud_used.healths.icon_state = "[icon_state]_health5" + else + hud_used.healths.icon_state = "[icon_state]_health6" \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/constructs.dm.rej b/code/modules/mob/living/simple_animal/constructs.dm.rej new file mode 100644 index 0000000000..d200533753 --- /dev/null +++ b/code/modules/mob/living/simple_animal/constructs.dm.rej @@ -0,0 +1,9 @@ +diff a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm (rejected hunks) +@@ -35,7 +35,6 @@ + + /mob/living/simple_animal/hostile/construct/Initialize() + . = ..() +- updateglow() + update_health_hud() + for(var/spell in construct_spells) + AddSpell(new spell(null)) diff --git a/code/modules/mob/living/simple_animal/hostile/statue.dm b/code/modules/mob/living/simple_animal/hostile/statue.dm index 455f893a5c..a810d3fd67 100644 --- a/code/modules/mob/living/simple_animal/hostile/statue.dm +++ b/code/modules/mob/living/simple_animal/hostile/statue.dm @@ -220,7 +220,7 @@ else target.lighting_alpha = LIGHTING_PLANE_ALPHA_VISIBLE name = "Toggle Nightvision \[ON]" - target.update_sight() + target.update_sight() /mob/living/simple_animal/hostile/statue/sentience_act() faction -= "neutral" diff --git a/icons/mob/screen_construct.dmi b/icons/mob/screen_construct.dmi new file mode 100644 index 0000000000..82dbe19cf6 Binary files /dev/null and b/icons/mob/screen_construct.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 1647912f6c..f1439e8d5e 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -137,6 +137,7 @@ #include "code\_onclick\hud\blob_overmind.dm" #include "code\_onclick\hud\blobbernauthud.dm" #include "code\_onclick\hud\clockwork_marauder.dm" +#include "code\_onclick\hud\constructs.dm" #include "code\_onclick\hud\devil.dm" #include "code\_onclick\hud\drones.dm" #include "code\_onclick\hud\fullscreen.dm"