Fixes glasses toggling

This commit is contained in:
Joan Lung
2017-01-30 11:31:00 -05:00
parent 65aa7782f4
commit 0fbde400e5
5 changed files with 33 additions and 17 deletions

View File

@@ -20,8 +20,14 @@
#define INVISIBILITY_ABSTRACT 101 //only used for abstract objects (e.g. spacevine_controller), things that are not really there. #define INVISIBILITY_ABSTRACT 101 //only used for abstract objects (e.g. spacevine_controller), things that are not really there.
#define BORGMESON 1 #define BORGMESON 1
#define BORGTHERM 2 #define BORGTHERM 2
#define BORGXRAY 4 #define BORGXRAY 4
#define BORGMATERIAL 8 #define BORGMATERIAL 8
//for clothing visor toggles, these determine which vars to toggle
#define VISOR_FLASHPROTECT 1
#define VISOR_TINT 2
#define VISOR_VISIONFLAGS 4 //all following flags only matter for glasses
#define VISOR_DARKNESSVIEW 8
#define VISOR_INVISVIEW 16

View File

@@ -7,9 +7,9 @@
item_state = "glasses" item_state = "glasses"
actions_types = list(/datum/action/item_action/toggle) actions_types = list(/datum/action/item_action/toggle)
resistance_flags = FIRE_PROOF | ACID_PROOF resistance_flags = FIRE_PROOF | ACID_PROOF
vision_flags = SEE_MOBS | SEE_TURFS | SEE_OBJS flags_cover = GLASSESCOVERSEYES
invis_view = SEE_INVISIBLE_NOLIGHTING visor_flags_inv = HIDEEYES
darkness_view = 3 visor_vars_to_toggle = NONE //we don't actually toggle anything we just set it
tint = 3 //this'll get reset, but it won't handle vision updates properly otherwise tint = 3 //this'll get reset, but it won't handle vision updates properly otherwise
/obj/item/clothing/glasses/wraith_spectacles/New() /obj/item/clothing/glasses/wraith_spectacles/New()
@@ -59,13 +59,15 @@
/obj/item/clothing/glasses/wraith_spectacles/proc/set_vision_vars(update_vision) /obj/item/clothing/glasses/wraith_spectacles/proc/set_vision_vars(update_vision)
invis_view = SEE_INVISIBLE_LIVING invis_view = SEE_INVISIBLE_LIVING
tint = 0 tint = 0
vision_flags = NONE
darkness_view = 2
if(!up) if(!up)
if(is_servant_of_ratvar(loc)) if(is_servant_of_ratvar(loc))
invis_view = SEE_INVISIBLE_NOLIGHTING invis_view = SEE_INVISIBLE_NOLIGHTING
vision_flags = SEE_MOBS | SEE_TURFS | SEE_OBJS vision_flags = SEE_MOBS | SEE_TURFS | SEE_OBJS
darkness_view = 3
else else
tint = 3 tint = 3
vision_flags = NONE
if(update_vision && iscarbon(loc)) if(update_vision && iscarbon(loc))
var/mob/living/carbon/C = loc var/mob/living/carbon/C = loc
C.head_update(src, forced = 1) C.head_update(src, forced = 1)

View File

@@ -5,12 +5,14 @@
max_integrity = 200 max_integrity = 200
integrity_failure = 80 integrity_failure = 80
var/damaged_clothes = 0 //similar to machine's BROKEN stat and structure's broken var var/damaged_clothes = 0 //similar to machine's BROKEN stat and structure's broken var
var/flash_protect = 0 //Malk: What level of bright light protection item has. 1 = Flashers, Flashes, & Flashbangs | 2 = Welding | -1 = OH GOD WELDING BURNT OUT MY RETINAS var/flash_protect = 0 //What level of bright light protection item has. 1 = Flashers, Flashes, & Flashbangs | 2 = Welding | -1 = OH GOD WELDING BURNT OUT MY RETINAS
var/tint = 0 //Malk: Sets the item's level of visual impairment tint, normally set to the same as flash_protect var/tint = 0 //Sets the item's level of visual impairment tint, normally set to the same as flash_protect
var/up = 0 // but seperated to allow items to protect but not impair vision, like space helmets var/up = 0 //but seperated to allow items to protect but not impair vision, like space helmets
var/visor_flags = 0 // flags that are added/removed when an item is adjusted up/down var/visor_flags = 0 //flags that are added/removed when an item is adjusted up/down
var/visor_flags_inv = 0 // same as visor_flags, but for flags_inv var/visor_flags_inv = 0 //same as visor_flags, but for flags_inv
var/visor_flags_cover = 0 // same as above, but for flags_cover var/visor_flags_cover = 0 //same as above, but for flags_cover
//what to toggle when toggled with weldingvisortoggle()
var/visor_vars_to_toggle = VISOR_FLASHPROTECT | VISOR_TINT | VISOR_VISIONFLAGS | VISOR_DARKNESSVIEW | VISOR_INVISVIEW
lefthand_file = 'icons/mob/inhands/clothing_lefthand.dmi' lefthand_file = 'icons/mob/inhands/clothing_lefthand.dmi'
righthand_file = 'icons/mob/inhands/clothing_righthand.dmi' righthand_file = 'icons/mob/inhands/clothing_righthand.dmi'
var/alt_desc = null var/alt_desc = null
@@ -717,8 +719,10 @@ BLIND // can't see anything
flags_inv ^= visor_flags_inv flags_inv ^= visor_flags_inv
flags_cover ^= initial(flags_cover) flags_cover ^= initial(flags_cover)
icon_state = "[initial(icon_state)][up ? "up" : ""]" icon_state = "[initial(icon_state)][up ? "up" : ""]"
flash_protect ^= initial(flash_protect) if(visor_vars_to_toggle & VISOR_FLASHPROTECT)
tint ^= initial(tint) flash_protect ^= initial(flash_protect)
if(visor_vars_to_toggle & VISOR_TINT)
tint ^= initial(tint)
/obj/item/clothing/proc/can_use(mob/user) /obj/item/clothing/proc/can_use(mob/user)

View File

@@ -5,9 +5,12 @@
/obj/item/clothing/glasses/visor_toggling() /obj/item/clothing/glasses/visor_toggling()
..() ..()
vision_flags ^= initial(vision_flags) if(visor_vars_to_toggle & VISOR_VISIONFLAGS)
darkness_view ^= initial(darkness_view) vision_flags ^= initial(vision_flags)
invis_view ^= initial(invis_view) if(visor_vars_to_toggle & VISOR_DARKNESSVIEW)
darkness_view ^= initial(darkness_view)
if(visor_vars_to_toggle & VISOR_INVISVIEW)
invis_view ^= initial(invis_view)
/obj/item/clothing/glasses/weldingvisortoggle(mob/user) /obj/item/clothing/glasses/weldingvisortoggle(mob/user)
. = ..() . = ..()
@@ -209,6 +212,7 @@
materials = list(MAT_METAL = 250) materials = list(MAT_METAL = 250)
flash_protect = 2 flash_protect = 2
tint = 2 tint = 2
visor_vars_to_toggle = VISOR_FLASHPROTECT | VISOR_TINT
flags_cover = GLASSESCOVERSEYES flags_cover = GLASSESCOVERSEYES
visor_flags_inv = HIDEEYES visor_flags_inv = HIDEEYES
glass_colour_type = /datum/client_colour/glass_colour/gray glass_colour_type = /datum/client_colour/glass_colour/gray
@@ -222,7 +226,6 @@
desc = "Covers the eyes, preventing sight." desc = "Covers the eyes, preventing sight."
icon_state = "blindfold" icon_state = "blindfold"
item_state = "blindfold" item_state = "blindfold"
// vision_flags = BLIND
flash_protect = 2 flash_protect = 2
tint = 3 // to make them blind tint = 3 // to make them blind

View File

@@ -129,6 +129,7 @@
var/obj/item/clothing/C = I var/obj/item/clothing/C = I
if(C.tint || initial(C.tint)) if(C.tint || initial(C.tint))
update_tint() update_tint()
update_sight()
if(I.flags_inv & HIDEMASK || forced) if(I.flags_inv & HIDEMASK || forced)
update_inv_wear_mask() update_inv_wear_mask()
update_inv_head() update_inv_head()