mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-18 02:24:11 +01:00
Migrates meson stuff FULLY to traits (#21609)
* fuckin TRAITS * pickup -> equip
This commit is contained in:
@@ -12,8 +12,7 @@
|
||||
item_state = "trayson-meson"
|
||||
actions_types = list(/datum/action/item_action/toggle_mode)
|
||||
origin_tech = "materials=3;magnets=3;engineering=3;plasmatech=3"
|
||||
vision_flags = NONE
|
||||
invis_view = SEE_INVISIBLE_LIVING
|
||||
active_on_equip = FALSE
|
||||
|
||||
var/list/modes = list(MODE_NONE = MODE_MESON, MODE_MESON = MODE_TRAY, MODE_TRAY = MODE_RAD, MODE_RAD = MODE_NONE)
|
||||
var/mode = MODE_NONE
|
||||
@@ -32,14 +31,13 @@
|
||||
mode = modes[mode]
|
||||
to_chat(user, "<span class='[voluntary ? "notice" : "warning"]'>[voluntary ? "You turn the goggles" : "The goggles turn"] [mode ? "to [mode] mode" : "off"][voluntary ? "." : "!"]</span>")
|
||||
|
||||
switch(mode)
|
||||
if(MODE_MESON)
|
||||
vision_flags = SEE_TURFS
|
||||
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE
|
||||
|
||||
if(MODE_TRAY) //undoes the last mode, meson
|
||||
vision_flags = NONE
|
||||
lighting_alpha = null
|
||||
if(mode == MODE_MESON)
|
||||
if(!HAS_TRAIT_FROM(user, TRAIT_MESON_VISION, "meson_glasses[UID()]"))
|
||||
ADD_TRAIT(user, TRAIT_MESON_VISION, "meson_glasses[UID()]")
|
||||
active_on_equip = TRUE
|
||||
else
|
||||
REMOVE_TRAIT(user, TRAIT_MESON_VISION, "meson_glasses[UID()]")
|
||||
active_on_equip = FALSE
|
||||
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
|
||||
@@ -74,8 +74,6 @@
|
||||
icon_state = "meson"
|
||||
item_state = "meson"
|
||||
origin_tech = "magnets=1;engineering=2"
|
||||
vision_flags = SEE_TURFS
|
||||
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE
|
||||
prescription_upgradable = TRUE
|
||||
|
||||
sprite_sheets = list(
|
||||
@@ -86,6 +84,18 @@
|
||||
"Kidan" = 'icons/mob/clothing/species/kidan/eyes.dmi'
|
||||
)
|
||||
|
||||
var/active_on_equip = TRUE
|
||||
|
||||
/obj/item/clothing/glasses/meson/equipped(mob/user, slot, initial)
|
||||
. = ..()
|
||||
if(active_on_equip && slot == slot_glasses)
|
||||
ADD_TRAIT(user, TRAIT_MESON_VISION, "meson_glasses[UID()]")
|
||||
|
||||
/obj/item/clothing/glasses/meson/dropped(mob/user)
|
||||
. = ..()
|
||||
if(user)
|
||||
REMOVE_TRAIT(user, TRAIT_MESON_VISION, "meson_glasses[UID()]")
|
||||
|
||||
/obj/item/clothing/glasses/meson/night
|
||||
name = "night vision optical meson scanner"
|
||||
desc = "An optical meson scanner fitted with an amplified visible light spectrum overlay, providing greater visual clarity in darkness."
|
||||
|
||||
@@ -54,7 +54,16 @@
|
||||
name = "meson visor helmet"
|
||||
desc = "A helmet with a built-in meson scanning visor."
|
||||
icon_state = "helmetmesons"
|
||||
vision_flags = SEE_TURFS
|
||||
|
||||
/obj/item/clothing/head/helmet/meson/equipped(mob/user, slot, initial)
|
||||
. = ..()
|
||||
if(slot == slot_head)
|
||||
ADD_TRAIT(user, TRAIT_MESON_VISION, "meson_helmet[UID()]")
|
||||
|
||||
/obj/item/clothing/head/helmet/meson/dropped(mob/user)
|
||||
. = ..()
|
||||
if(user)
|
||||
REMOVE_TRAIT(user, TRAIT_MESON_VISION, "meson_helmet[UID()]")
|
||||
|
||||
/obj/item/clothing/head/helmet/material
|
||||
name = "material visor helmet"
|
||||
|
||||
@@ -454,14 +454,9 @@
|
||||
if(isbrain(M)) //Ignore brains
|
||||
continue
|
||||
|
||||
if(M.stat == CONSCIOUS)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(istype(H.glasses, /obj/item/clothing/glasses/meson))
|
||||
var/obj/item/clothing/glasses/meson/MS = H.glasses
|
||||
if(MS.vision_flags == SEE_TURFS)
|
||||
to_chat(H, "<span class='notice'>You look directly into [src], good thing you had your protective eyewear on!</span>")
|
||||
return
|
||||
if(HAS_TRAIT(M, TRAIT_MESON_VISION))
|
||||
to_chat(M, "<span class='notice'>You look directly into [src], but your meson vision protects you!</span>")
|
||||
return
|
||||
|
||||
M.Stun(6 SECONDS)
|
||||
M.visible_message("<span class='danger'>[M] stares blankly at [src]!</span>", \
|
||||
|
||||
@@ -240,8 +240,7 @@
|
||||
. = ..()
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(istype(H))
|
||||
var/immune = istype(H.glasses, /obj/item/clothing/glasses/meson)
|
||||
if(!immune && !HAS_TRAIT(H, TRAIT_MESON_VISION) && (get_dist(user, src) < HALLUCINATION_RANGE(power)))
|
||||
if(!HAS_TRAIT(H, TRAIT_MESON_VISION) && (get_dist(user, src) < HALLUCINATION_RANGE(power)))
|
||||
. += "<span class='danger'>You get headaches just from looking at it.</span>"
|
||||
. += "<span class='notice'>When actived by an item hitting this awe-inspiring feat of engineering, it emits radiation and heat. This is the basis of the use of the pseudo-perpetual energy source, the supermatter crystal.</span>"
|
||||
. +="<span class='notice'>Any object that touches [src] instantly turns to dust, be it complex as a human or as simple as a metal rod. These bursts of energy can cause hallucinations if meson scanners are not worn near the crystal.</span>"
|
||||
@@ -551,7 +550,7 @@
|
||||
|
||||
//Makes em go mad and accumulate rads.
|
||||
for(var/mob/living/carbon/human/l in view(src, HALLUCINATION_RANGE(power))) // If they can see it without mesons on. Bad on them.
|
||||
if(!istype(l.glasses, /obj/item/clothing/glasses/meson) && !HAS_TRAIT(l, TRAIT_MESON_VISION) && !HAS_TRAIT(l, SM_HALLUCINATION_IMMUNE))
|
||||
if(!HAS_TRAIT(l, TRAIT_MESON_VISION) && !HAS_TRAIT(l, SM_HALLUCINATION_IMMUNE))
|
||||
var/D = sqrt(1 / max(1, get_dist(l, src)))
|
||||
var/hallucination_amount = power * hallucination_power * D
|
||||
l.AdjustHallucinate(hallucination_amount, 0, 200 SECONDS)
|
||||
|
||||
Reference in New Issue
Block a user