Files
Bubberstation/code/modules/modular_computers/computers/item/laptop.dm
YesterdaysPromise 8eb3b51ad9 /icons/ folder cleansing crusade part 3 (#83420)
## About The Pull Request

In my effort to make the /icons/ folder cleaner and more intuitive
instead of having to rely on recalling names of stuff and looking them
up in code to find them for poor sods such as myself, plus in spurt of
complusion to organize stuff, here goes. I've tracked all changes in
commit descriptions. A lot still to be done, but I know these waves go
over dozens of files making things slow, so went lighter on it.
Destroyed useless impostor files taking up space and cleaned a stray
pixel on my way.

## Why It's Good For The Game

Cleaner /icons/ file means saner spriters, less time spent. Stray pixels
and impostor files (ones which are copies of actually used ones
elsewhere) are not good.

## Changelog

🆑
image: Cleaned a single stray pixel in a single frame of a bite
telegraphing accidentaly found while re-organizing the files.
/🆑
2024-05-25 21:08:08 -07:00

125 lines
3.1 KiB
Plaintext

/obj/item/modular_computer/laptop
name = "laptop"
desc = "A portable laptop computer."
icon = 'icons/obj/devices/modular_laptop.dmi'
icon_state = "laptop-closed"
icon_state_powered = "laptop"
icon_state_unpowered = "laptop-off"
icon_state_menu = "menu"
hardware_flag = PROGRAM_LAPTOP
max_idle_programs = 3
w_class = WEIGHT_CLASS_NORMAL
// No running around with open laptops in hands.
item_flags = SLOWS_WHILE_IN_HAND
drag_slowdown = 0
screen_on = FALSE // Starts closed
var/start_open = TRUE // unless this var is set to 1
var/icon_state_closed = "laptop-closed"
var/w_class_open = WEIGHT_CLASS_BULKY
var/slowdown_open = 1
/obj/item/modular_computer/laptop/examine(mob/user)
. = ..()
if(screen_on)
. += span_notice("Alt-click to close it.")
/obj/item/modular_computer/laptop/Initialize(mapload)
. = ..()
if(start_open && !screen_on)
toggle_open()
/obj/item/modular_computer/laptop/update_icon_state()
if(!screen_on)
icon_state = icon_state_closed
return
return ..()
/obj/item/modular_computer/laptop/update_overlays()
if(!screen_on)
cut_overlays()
return
return ..()
/obj/item/modular_computer/laptop/attack_self(mob/user)
if(!screen_on)
try_toggle_open(user)
else
return ..()
/obj/item/modular_computer/laptop/verb/open_computer()
set name = "Toggle Open"
set category = "Object"
set src in view(1)
try_toggle_open(usr)
/obj/item/modular_computer/laptop/MouseDrop(obj/over_object, src_location, over_location)
. = ..()
if(over_object == usr || over_object == src)
try_toggle_open(usr)
return
if(istype(over_object, /atom/movable/screen/inventory/hand))
var/atom/movable/screen/inventory/hand/H = over_object
var/mob/M = usr
if(M.stat != CONSCIOUS || HAS_TRAIT(M, TRAIT_HANDS_BLOCKED))
return
if(!isturf(loc) || !Adjacent(M))
return
M.put_in_hand(src, H.held_index)
/obj/item/modular_computer/laptop/attack_hand(mob/user, list/modifiers)
. = ..()
if(.)
return
if(screen_on && isturf(loc))
return attack_self(user)
/obj/item/modular_computer/laptop/proc/try_toggle_open(mob/living/user)
if(issilicon(user))
return
if(!isturf(loc) && !ismob(loc)) // No opening it in backpack.
return
if(!user.can_perform_action(src))
return
toggle_open(user)
/obj/item/modular_computer/laptop/click_alt(mob/user)
if(!screen_on)
return CLICK_ACTION_BLOCKING
try_toggle_open(user) // Close it.
return CLICK_ACTION_SUCCESS
/obj/item/modular_computer/laptop/proc/toggle_open(mob/living/user=null)
if(screen_on)
to_chat(user, span_notice("You close \the [src]."))
slowdown = initial(slowdown)
update_weight_class(initial(w_class))
drag_slowdown = initial(drag_slowdown)
else
to_chat(user, span_notice("You open \the [src]."))
slowdown = slowdown_open
update_weight_class(w_class_open)
drag_slowdown = slowdown_open
if(isliving(loc))
var/mob/living/localmob = loc
localmob.update_equipment_speed_mods()
localmob.update_pull_movespeed()
screen_on = !screen_on
update_appearance()
/obj/item/modular_computer/laptop/get_messenger_ending()
return "Sent from my UNIX Laptop"
// Laptop frame, starts empty and closed.
/obj/item/modular_computer/laptop/buildable
start_open = FALSE