mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-12 08:27:13 +01:00
7f664eb1eb
Ports stickynotes from bay. They can be stuck to most surfaces, but have a much smaller character limit. Pads have been placed across the Horizon and can be ordered from Operations. Receipt paper and notepad paper was added for visual quality of life. Point of Sales now use receipt paper where applicable. Sprites were either created by myself, or modifications of baystation sprites from this PR: https://github.com/Baystation12/Baystation12/pull/23109 --------- Signed-off-by: CatsinHD <31459154+CatsinHD@users.noreply.github.com> Co-authored-by: VMSolidus <evilexecutive@gmail.com> Co-authored-by: FabianK3 <21039694+FabianK3@users.noreply.github.com> Co-authored-by: Wildkins <john.wildkins@gmail.com>
189 lines
5.7 KiB
Plaintext
189 lines
5.7 KiB
Plaintext
/obj/item/journal
|
|
name = "journal"
|
|
desc = "A journal, kind of like a folder, but bigger! And personal."
|
|
var/closed_desc
|
|
var/has_closed_overlay = TRUE
|
|
icon = 'icons/obj/library.dmi'
|
|
icon_state = "journal"
|
|
item_state = "journal"
|
|
color = COLOR_DARK_BROWN
|
|
update_icon_on_init = TRUE
|
|
throw_speed = 1
|
|
throw_range = 5
|
|
w_class = WEIGHT_CLASS_NORMAL
|
|
attack_verb = list("bashed", "whacked", "educated")
|
|
drop_sound = 'sound/items/drop/book.ogg'
|
|
pickup_sound = 'sound/items/pickup/book.ogg'
|
|
|
|
var/static/list/insertables = list(/obj/item/paper, /obj/item/photo, /obj/item/paper_bundle, /obj/item/sample)
|
|
|
|
var/open = FALSE
|
|
var/list/indices
|
|
|
|
/obj/item/journal/mechanics_hints(mob/user, distance, is_adjacent)
|
|
. += ..()
|
|
. += "ALT-click this while it's on your person or next to you to open this journal."
|
|
. += "While the journal is open, use it in hand or use a pen on it to access the contents."
|
|
|
|
/obj/item/journal/Destroy()
|
|
if (indices)
|
|
for(var/E in indices)
|
|
qdel(indices[E])
|
|
LAZYCLEARLIST(indices)
|
|
return ..()
|
|
|
|
/obj/item/journal/update_icon()
|
|
ClearOverlays()
|
|
if(!open)
|
|
icon_state = "[initial(icon_state)]_closed"
|
|
if(has_closed_overlay)
|
|
AddOverlays(overlay_image(icon, "closed", flags=RESET_COLOR))
|
|
else if(LAZYLEN(indices))
|
|
icon_state = initial(icon_state)
|
|
AddOverlays(overlay_image(icon, "writing", flags=RESET_COLOR))
|
|
else
|
|
icon_state = initial(icon_state)
|
|
AddOverlays(overlay_image(icon, "blank", flags=RESET_COLOR))
|
|
|
|
if(closed_desc)
|
|
desc = open ? initial(desc) + closed_desc : initial(desc)
|
|
|
|
/obj/item/journal/AltClick(mob/user)
|
|
if(Adjacent(user))
|
|
open = !open
|
|
to_chat(user, SPAN_NOTICE("You [open ? "open" : "close"] \the [src]."))
|
|
update_icon()
|
|
return
|
|
return ..()
|
|
|
|
/obj/item/journal/attack_self(mob/user)
|
|
if(!open)
|
|
to_chat(user, SPAN_WARNING("You can't look inside \the [src] while it's closed."))
|
|
return
|
|
if(!LAZYLEN(indices))
|
|
to_chat(user, SPAN_WARNING("\The [src] doesn't have anything inside!"))
|
|
return
|
|
var/selected_folder = input(user, "Select an index to view.", "Index View") as null|anything in indices
|
|
if(isnull(selected_folder))
|
|
return
|
|
var/obj/item/folder/embedded/E = indices[selected_folder]
|
|
E.attack_self(user)
|
|
|
|
/obj/item/journal/attackby(obj/item/attacking_item, mob/user)
|
|
if(is_type_in_list(attacking_item, insertables))
|
|
if(!open)
|
|
to_chat(user, SPAN_WARNING("You can't put anything into \the [src] while it's closed."))
|
|
return
|
|
insert_item(attacking_item, user)
|
|
return
|
|
if(attacking_item.tool_behaviour == TOOL_PEN)
|
|
if(!open)
|
|
to_chat(user, SPAN_NOTICE("You open \the [src] with \the [attacking_item]."))
|
|
open = !open
|
|
update_icon()
|
|
return
|
|
attack_self(user)
|
|
|
|
/obj/item/journal/proc/insert_item(obj/item/attacking_item, mob/user, var/selected_folder)
|
|
var/obj/item/folder/embedded/E
|
|
if(isnull(selected_folder))
|
|
var/list/options = LAZYLEN(indices) ? indices + "New Index" : list("New Index")
|
|
selected_folder = tgui_input_list(user, "Select an index to insert this into.", "Index Selection", options)
|
|
if(isnull(selected_folder))
|
|
return
|
|
if(selected_folder == "New Index")
|
|
var/index_name = sanitize(input(user, "Enter the index' name.", "Index Name") as text|null)
|
|
E = generate_index(index_name)
|
|
else
|
|
E = indices[selected_folder]
|
|
if(!E)
|
|
return
|
|
|
|
user.drop_from_inventory(attacking_item, E)
|
|
to_chat(user, SPAN_NOTICE("You put \the [attacking_item] into \the [E] index in \the [src]."))
|
|
update_icon()
|
|
|
|
/obj/item/journal/proc/generate_index(var/index_name)
|
|
var/obj/item/folder/embedded/E = new /obj/item/folder/embedded(src)
|
|
if(!index_name)
|
|
qdel(E)
|
|
return null
|
|
if(index_name == "New Index" || LAZYISIN(indices, index_name))
|
|
index_name = "Index ([length(indices) + 1])"
|
|
E.name = index_name
|
|
LAZYSET(indices, E.name, E)
|
|
RegisterSignal(E, COMSIG_QDELETING, PROC_REF(remove_index))
|
|
return E
|
|
|
|
/obj/item/journal/proc/remove_index(var/obj/item/folder/embedded/E)
|
|
LAZYREMOVE(indices, E.name)
|
|
update_icon()
|
|
|
|
/obj/item/journal/filled
|
|
|
|
/obj/item/journal/filled/Initialize()
|
|
. = ..()
|
|
var/obj/item/folder/embedded/E = generate_index("Journal")
|
|
for(var/i = 1 to 5)
|
|
new /obj/item/paper(E)
|
|
update_icon()
|
|
|
|
/obj/item/journal/notepad
|
|
name = "notepad"
|
|
desc = "A notepad for jotting down notes in meetings or interrogations."
|
|
|
|
icon = 'icons/obj/library.dmi'
|
|
icon_state = "notepad"
|
|
item_state = "notepad"
|
|
color = COLOR_DARK_BROWN
|
|
update_icon_on_init = TRUE
|
|
throw_speed = 1
|
|
throw_range = 5
|
|
w_class = WEIGHT_CLASS_SMALL
|
|
attack_verb = list("bashed", "whacked", "educated")
|
|
drop_sound = 'sound/items/drop/book.ogg'
|
|
pickup_sound = 'sound/items/pickup/book.ogg'
|
|
|
|
/obj/item/journal/notepad/update_icon()
|
|
ClearOverlays()
|
|
if(!open)
|
|
icon_state = "[initial(icon_state)]_closed"
|
|
AddOverlays(overlay_image(icon, "notepad_paper_closed", flags=RESET_COLOR))
|
|
else if(LAZYLEN(indices))
|
|
icon_state = initial(icon_state)
|
|
AddOverlays(overlay_image(icon, "notepad_writing", flags=RESET_COLOR))
|
|
else
|
|
icon_state = initial(icon_state)
|
|
AddOverlays(overlay_image(icon, "notepad_blank", flags=RESET_COLOR))
|
|
|
|
if(closed_desc)
|
|
desc = open ? initial(desc) + closed_desc : initial(desc)
|
|
|
|
/obj/item/journal/notepad/filled
|
|
|
|
/obj/item/journal/notepad/filled/Initialize()
|
|
. = ..()
|
|
var/obj/item/folder/embedded/E = generate_index("Notes")
|
|
for(var/i = 1 to 5)
|
|
new /obj/item/paper/notepad(E)
|
|
update_icon()
|
|
|
|
/obj/item/journal/notepad/scc
|
|
name = "scc notepad"
|
|
desc = "A notepad for jotting down notes in corporate meetings. This one is navy blue with a gold SCC logo on the front."
|
|
icon_state = "notepad_scc"
|
|
item_state = "notepad_scc"
|
|
color = COLOR_WHITE
|
|
|
|
/obj/item/journal/notepad/scc/filled
|
|
|
|
/obj/item/journal/notepad/scc/filled/Initialize()
|
|
. = ..()
|
|
var/obj/item/folder/embedded/E = generate_index("Notes")
|
|
for(var/i = 1 to 5)
|
|
new /obj/item/paper/notepad(E)
|
|
update_icon()
|
|
|
|
/obj/item/journal/notepad/filled/security
|
|
color = COLOR_DARK_BLUE_GRAY
|