diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm
index 932d14deeeb..b8734438aac 100644
--- a/code/_onclick/hud/_defines.dm
+++ b/code/_onclick/hud/_defines.dm
@@ -80,6 +80,7 @@
#define ui_alien_toxin "EAST-1:28,CENTER+5:25"
#define ui_alien_fire "EAST-1:28,CENTER+4:25"
#define ui_alien_oxygen "EAST-1:28,CENTER+3:25"
+#define ui_alien_nightvision "EAST-1:28,CENTER+2:25"
//Middle right (status indicators)
#define ui_nutrition "EAST-1:28,CENTER-3:11"
diff --git a/code/_onclick/hud/alien.dm b/code/_onclick/hud/alien.dm
index 270d848eab9..797561e37cf 100644
--- a/code/_onclick/hud/alien.dm
+++ b/code/_onclick/hud/alien.dm
@@ -142,6 +142,12 @@
mymob.healths.name = "health"
mymob.healths.screen_loc = ui_alien_health
+ nightvisionicon = new /obj/screen()
+ nightvisionicon.icon ='icons/mob/screen_alien.dmi'
+ nightvisionicon.icon_state = "nightvision1"
+ nightvisionicon.name = "nightvision"
+ nightvisionicon.screen_loc = ui_alien_nightvision
+
alien_plasma_display = new /obj/screen()
alien_plasma_display.icon = 'icons/mob/screen_gen.dmi'
alien_plasma_display.icon_state = "power_display2"
@@ -168,6 +174,6 @@
mymob.client.screen = null
- mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.fire, mymob.healths, alien_plasma_display, mymob.pullin, mymob.blind, mymob.flash) //, mymob.hands, mymob.rest, mymob.sleep, mymob.mach )
+ mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.fire, mymob.healths, nightvisionicon, alien_plasma_display, mymob.pullin, mymob.blind, mymob.flash) //, mymob.hands, mymob.rest, mymob.sleep, mymob.mach )
mymob.client.screen += adding + other
diff --git a/code/_onclick/hud/alien_larva.dm b/code/_onclick/hud/alien_larva.dm
index d1888d6d369..2775f546c6f 100644
--- a/code/_onclick/hud/alien_larva.dm
+++ b/code/_onclick/hud/alien_larva.dm
@@ -48,6 +48,12 @@
mymob.healths.name = "health"
mymob.healths.screen_loc = ui_alien_health
+ nightvisionicon = new /obj/screen()
+ nightvisionicon.icon ='icons/mob/screen_alien.dmi'
+ nightvisionicon.icon_state = "nightvision1"
+ nightvisionicon.name = "nightvision"
+ nightvisionicon.screen_loc = ui_alien_nightvision
+
mymob.pullin = new /obj/screen()
mymob.pullin.icon = 'icons/mob/screen_alien.dmi'
mymob.pullin.icon_state = "pull0"
@@ -74,5 +80,5 @@
mymob.client.screen = null
- mymob.client.screen += list( mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.fire, mymob.healths, mymob.pullin, mymob.blind, mymob.flash) //, mymob.rest, mymob.sleep, mymob.mach )
+ mymob.client.screen += list( mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.fire, mymob.healths, nightvisionicon, mymob.pullin, mymob.blind, mymob.flash) //, mymob.rest, mymob.sleep, mymob.mach )
mymob.client.screen += adding + other
\ No newline at end of file
diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm
index 103d639189d..ed7abd1d7ca 100644
--- a/code/_onclick/hud/hud.dm
+++ b/code/_onclick/hud/hud.dm
@@ -100,6 +100,7 @@ var/datum/global_hud/global_hud = new()
var/obj/screen/blobpwrdisplay
var/obj/screen/blobhealthdisplay
var/obj/screen/alien_plasma_display
+ var/obj/screen/nightvisionicon
var/obj/screen/r_hand_hud_object
var/obj/screen/l_hand_hud_object
var/obj/screen/action_intent
diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm
index b0d6037131c..f3910c9e246 100644
--- a/code/_onclick/hud/screen_objects.dm
+++ b/code/_onclick/hud/screen_objects.dm
@@ -366,7 +366,10 @@
else if(isrobot(usr))
var/mob/living/silicon/robot/R = usr
R.aicamera.viewpictures()
-
+ if("nightvision")
+ if(isalien(usr))
+ var/mob/living/carbon/alien/humanoid/A = usr
+ A.nightvisiontoggle()
else
return 0
return 1
diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm
index 657acb8b02c..e163f334470 100644
--- a/code/game/objects/structures/mineral_doors.dm
+++ b/code/game/objects/structures/mineral_doors.dm
@@ -249,25 +249,3 @@
for(var/i = 1, i <= oreAmount, i++)
new/obj/item/stack/sheet/mineral/wood(get_turf(src))
qdel(src)
-
-/obj/structure/mineral_door/resin
- mineralType = "resin"
- hardness = 1
- close_delay = 100
- openSound = 'sound/effects/attackblob.ogg'
- closeSound = 'sound/effects/attackblob.ogg'
-
-/obj/structure/mineral_door/resin/TryToSwitchState(atom/user)
- if(isalien(user))
- return ..()
-
-/obj/structure/mineral_door/resin/Dismantle(devastated = 0)
- qdel(src)
-
-/obj/structure/mineral_door/resin/CheckHardness()
- playsound(loc, 'sound/effects/attackblob.ogg', 100, 1)
- ..()
-
-/obj/structure/mineral_door/resin/BlockSuperconductivity()
- if(opacity)
- return 1
\ No newline at end of file
diff --git a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm
index 4512e2b45cc..01da7d6066e 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm
@@ -12,7 +12,6 @@
"[user.name] pulls [buckled_mob.name] free from the sticky nest!",\
"[user.name] pulls you free from the gelatinous resin.",\
"You hear squelching...")
- buckled_mob.pixel_y = 0
unbuckle()
/obj/structure/stool/bed/nest/unbuckle_myself(mob/user as mob)
@@ -22,7 +21,6 @@
"You hear squelching...")
spawn(600)
if(user && buckled_mob && user.buckled == src)
- buckled_mob.pixel_y = 0
unbuckle()
/obj/structure/stool/bed/nest/buckle_mob(mob/M as mob, mob/user as mob)
@@ -47,11 +45,15 @@
M.loc = src.loc
M.dir = src.dir
M.update_canmove()
- M.pixel_y = 6
src.buckled_mob = M
src.add_fingerprint(user)
+ src.overlays += image('icons/mob/alien.dmi', "nestoverlay", layer=6)
return
+/obj/structure/stool/bed/nest/unbuckle()
+ overlays.Cut()
+ ..()
+
/obj/structure/stool/bed/nest/attackby(obj/item/weapon/W as obj, mob/user as mob)
var/aforce = W.force
health = max(0, health - aforce)
diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm
index 0263237a03d..66dd57eafb0 100644
--- a/code/modules/mob/living/carbon/alien/alien.dm
+++ b/code/modules/mob/living/carbon/alien/alien.dm
@@ -33,7 +33,6 @@
var/heat_protection = 0.5
-
/mob/living/carbon/alien/New()
verbs += /mob/living/proc/mob_sleep
verbs += /mob/living/proc/lay_down
diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
index 2df6900028d..02239466ee4 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
@@ -142,10 +142,10 @@ Doesn't work on other aliens/AI.*/
set desc = "Secrete tough malleable resin."
set category = "Alien"
- if(powerc(75))
+ if(powerc(55))
var/choice = input("Choose what you wish to shape.","Resin building") as null|anything in list("resin wall","resin membrane","resin nest") //would do it through typesof but then the player choice would have the type path and we don't want the internal workings to be exposed ICly - Urist
- if(!choice || !powerc(75)) return
- adjustToxLoss(-75)
+ if(!choice || !powerc(55)) return
+ adjustToxLoss(-55)
src << "You shape a [choice]."
for(var/mob/O in viewers(src, null))
O.show_message(text("[src] vomits up a thick purple substance and begins to shape it!"), 1)
@@ -170,4 +170,19 @@ Doesn't work on other aliens/AI.*/
A.loc = loc
//Paralyse(10)
src.visible_message("[src] hurls out the contents of their stomach!")
- return
\ No newline at end of file
+ return
+
+/mob/living/carbon/alien/humanoid/verb/nightvisiontoggle()
+ set name = "Toggle Night Vision"
+ set category = "Alien"
+
+ if(nightvision == 0)
+ see_in_dark = 8
+ see_invisible = SEE_INVISIBLE_MINIMUM
+ nightvision = 1
+ hud_used.nightvisionicon.icon_state = "nightvision1"
+ else if(nightvision == 1)
+ see_in_dark = 4
+ see_invisible = 45
+ nightvision = 0
+ hud_used.nightvisionicon.icon_state = "nightvision0"
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
index c5c99d24fd7..c3ec78aa6f9 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
@@ -5,6 +5,7 @@
var/obj/item/l_store = null
var/caste = ""
update_icon = 1
+ var/nightvision = 1
//This is fine right now, if we're adding organ specific damage this needs to be updated
/mob/living/carbon/alien/humanoid/New()
diff --git a/code/modules/mob/living/carbon/alien/humanoid/life.dm b/code/modules/mob/living/carbon/alien/humanoid/life.dm
index a759c75c0cf..6b3b8196cd0 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/life.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/life.dm
@@ -389,8 +389,12 @@
sight |= SEE_MOBS
sight &= ~SEE_TURFS
sight &= ~SEE_OBJS
- see_in_dark = 4
- see_invisible = SEE_INVISIBLE_LEVEL_TWO
+ if(nightvision)
+ see_in_dark = 8
+ see_invisible = SEE_INVISIBLE_MINIMUM
+ else if(!nightvision)
+ see_in_dark = 4
+ see_invisible = 45
if(see_override)
see_invisible = see_override
diff --git a/code/modules/mob/living/carbon/alien/humanoid/queen.dm b/code/modules/mob/living/carbon/alien/humanoid/queen.dm
index 4b47808e80a..a4358eea84c 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/queen.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/queen.dm
@@ -22,7 +22,7 @@
break
real_name = src.name
- verbs.Add(/mob/living/carbon/alien/humanoid/proc/corrosive_acid,/mob/living/carbon/alien/humanoid/proc/neurotoxin,/mob/living/carbon/alien/humanoid/proc/resin)
+ verbs.Add(/mob/living/carbon/alien/humanoid/proc/corrosive_acid,/mob/living/carbon/alien/humanoid/proc/neurotoxin,/mob/living/carbon/alien/humanoid/proc/resin,/mob/living/carbon/alien/humanoid/verb/nightvisiontoggle)
..()
/mob/living/carbon/alien/humanoid/queen/handle_regular_hud_updates()
diff --git a/icons/mob/alien.dmi b/icons/mob/alien.dmi
index a8466bfeb98..fb6dcd22512 100644
Binary files a/icons/mob/alien.dmi and b/icons/mob/alien.dmi differ
diff --git a/icons/mob/screen_alien.dmi b/icons/mob/screen_alien.dmi
index 255a03d9919..8d58cdba6c8 100644
Binary files a/icons/mob/screen_alien.dmi and b/icons/mob/screen_alien.dmi differ