Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
da2fc7a
15 new noticeboards
KingOfThePing Aug 17, 2025
6a9a9d6
Merge branch 'master' into new_noticeboards
KingOfThePing Aug 17, 2025
01987bd
all the fucking sprites
KingOfThePing Aug 17, 2025
9cc9394
this shit is on crack
KingOfThePing Aug 17, 2025
222baa3
changelog
KingOfThePing Aug 17, 2025
0d75e1d
Update KingOfThePing - 21211.yml
KingOfThePing Aug 17, 2025
c6f7d2a
Update code/game/objects/structures/noticeboard.dm
KingOfThePing Aug 18, 2025
096012a
Update code/game/objects/structures/noticeboard.dm
KingOfThePing Aug 18, 2025
fc29137
missing directionals + duplicate icon fix
KingOfThePing Aug 21, 2025
f62659c
actually fixing duplicate icon
KingOfThePing Aug 21, 2025
537cfbb
re-imlementing glass shattering
KingOfThePing Aug 21, 2025
c17acff
includes some missing if-else to the glass shattering
KingOfThePing Aug 21, 2025
fc318cf
fixes access restrictions
KingOfThePing Aug 21, 2025
a4494a5
spriting mistake fixes
KingOfThePing Aug 21, 2025
2d0aa68
first requested changes batch
KingOfThePing Aug 30, 2025
b238888
implements requested changes
KingOfThePing Aug 31, 2025
8dcc22e
implements all requested changes
KingOfThePing Aug 31, 2025
852cc3e
updated changelog
KingOfThePing Aug 31, 2025
e4c1c16
additional comment
KingOfThePing Aug 31, 2025
99500d7
Merge branch 'master' into new_noticeboards
KingOfThePing Aug 31, 2025
e4c9f61
removes glass shattering code
KingOfThePing Aug 31, 2025
494dce8
Update KingOfThePing - 21211.yml
KingOfThePing Aug 31, 2025
062e77c
implements Arrow's requested change
KingOfThePing Sep 3, 2025
571640f
undestroys the initialize
KingOfThePing Sep 3, 2025
d1c1fa9
please work
KingOfThePing Sep 3, 2025
1347dbf
Merge branch 'master' into new_noticeboards
KingOfThePing Sep 6, 2025
623a6d5
kicking the tests
KingOfThePing Sep 6, 2025
f9ec50a
Merge branch 'master' into new_noticeboards
KingOfThePing Sep 6, 2025
072c413
ich habe keine Lust mehr
KingOfThePing Sep 7, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 80 additions & 7 deletions code/game/objects/structures/noticeboard.dm
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
/obj/structure/noticeboard
name = "notice board"
desc = "A board for pinning important notices upon."
desc = "A board for pinning probably not-so-important notices upon."
icon = 'icons/obj/stationobjs.dmi'
icon_state = "nboard00"
icon_state = "nboard0"
density = 0
anchored = 1
var/notices = 0
var/notice_limit = 20
var/base_icon = "nboard"

/obj/structure/noticeboard/Initialize(mapload)
if (mapload)
Expand All @@ -14,21 +16,25 @@

/obj/structure/noticeboard/proc/add_papers_from_turf()
for(var/obj/item/I in loc)
if(notices > 4) break
if(notice_limit <= notices) break
if(istype(I, /obj/item/paper))
I.forceMove(src)
notices++
icon_state = "nboard0[notices]"
update_icon()

/obj/structure/noticeboard/update_icon()
..()
icon_state = "[base_icon][notices]"

//attaching papers!!
/obj/structure/noticeboard/attackby(obj/item/attacking_item, mob/user)
if(istype(attacking_item, /obj/item/paper))
if(notices < 5)
if(notice_limit > notices)
attacking_item.add_fingerprint(user)
add_fingerprint(user)
user.drop_from_inventory(attacking_item,src)
notices++
icon_state = "nboard0[notices]" //update sprite
update_icon()
SSpersistence.register_track(attacking_item, ckey(usr.key)) // Add paper to persistent tracker
to_chat(user, SPAN_NOTICE("You pin the paper to the noticeboard."))
else
Expand Down Expand Up @@ -62,7 +68,7 @@
P.add_fingerprint(usr)
add_fingerprint(usr)
notices--
icon_state = "nboard0[notices]"
update_icon()
SSpersistence.deregister_track(P) // Remove paper from persistent tracker
if(href_list["write"])
if((usr.stat || usr.restrained())) //For when a player is handcuffed while they have the notice window open
Expand All @@ -85,3 +91,70 @@
usr << browse("<HTML><HEAD><TITLE>[P.name]</TITLE></HEAD><BODY><TT>[P.info]</TT></BODY></HTML>", "window=[P.name]")
onclose(usr, "[P.name]")
return

/obj/structure/noticeboard/command
name = "command notice board"
desc = "A board for command to pin actually important information on. As if. Can be locked and unlocked with an appropiate ID."
icon = 'icons/obj/stationobjs.dmi'
icon_state = "comboard0"
req_access = list(ACCESS_CAPTAIN, ACCESS_CMO, ACCESS_HOS, ACCESS_QM, ACCESS_HOS, ACCESS_CE)
base_icon = "comboard"
notice_limit = 6
var/open
var/unlocked

/obj/structure/noticeboard/command/Initialize()
. = ..()
update_icon()

/obj/structure/noticeboard/command/update_icon()
..()
ClearOverlays()
if(unlocked)
AddOverlays("unlocked")
else
AddOverlays("locked")
if(open)
AddOverlays("glass_open")
else
AddOverlays("glass")

/obj/structure/noticeboard/command/attack_hand(var/mob/user)
if(!unlocked)
to_chat(user, SPAN_NOTICE("\The [src] is locked."))
return
toggle_open(user)

/obj/structure/noticeboard/command/attackby(obj/item/attacking_item, mob/user)
if(attacking_item.GetID() && allowed(usr))
if(open)
to_chat(user, SPAN_WARNING("You need to close it first."))
return
toggle_lock(user)
return
else if(open)
return ..()

/obj/structure/noticeboard/command/proc/toggle_open(var/mob/user)
open = !open
to_chat(user, SPAN_NOTICE("You [open ? "open" : "close"] \the [src]."))
update_icon()

/obj/structure/noticeboard/command/proc/toggle_lock(var/mob/user)
if(open)
return
else
to_chat(user, SPAN_NOTICE("You [unlocked ? "enable" : "disable"] \the [src]'s maglock."))
if(!do_after(user, 5)) // So you can't spam it.
return

unlocked = !unlocked
to_chat(user, SPAN_NOTICE("You [unlocked ? "disable" : "enable"] the maglock."))

update_icon()

/obj/structure/noticeboard/command/Topic(href, href_list) // Allows to read through the closed glass of the board, but disallows removing and writing.
if("read" in href_list)
..()
else if(open)
..()
44 changes: 0 additions & 44 deletions code/modules/research/xenoarchaeology/misc.dm
Original file line number Diff line number Diff line change
@@ -1,47 +1,3 @@

//---- Noticeboard

/obj/structure/noticeboard/anomaly
notices = 5
icon_state = "nboard05"

/obj/structure/noticeboard/anomaly/New()
//add some memos
var/obj/item/paper/P = new()
P.name = "Memo RE: proper analysis procedure"
P.info = "<br>We keep test dummies in pens here for a reason, so standard procedure should be to activate newfound alien artifacts and place the two in close proximity. Promising items I might even approve monkey testing on."
P.stamped = list(/obj/item/stamp/rd)
P.overlays = list("paper_stamped_rd")
src.contents += P

P = new()
P.name = "Memo RE: materials gathering"
P.info = "Corasang,<br>the hands-on approach to gathering our samples may very well be slow at times, but it's safer than allowing the blundering miners to roll willy-nilly over our dig sites in their mechs, destroying everything in the process. And don't forget the escavation tools on your way out there!<br>- R.W"
P.stamped = list(/obj/item/stamp/rd)
P.overlays = list("paper_stamped_rd")
src.contents += P

P = new()
P.name = "Memo RE: ethical quandaries"
P.info = "Darion-<br><br>I don't care what his rank is, our business is that of science and knowledge - questions of moral application do not come into this. Sure, so there are those who would employ the energy-wave particles my modified device has managed to abscond for their own personal gain, but I can hardly see the practical benefits of some of these artifacts our benefactors left behind. Ward--"
P.stamped = list(/obj/item/stamp/rd)
P.overlays = list("paper_stamped_rd")
src.contents += P

P = new()
P.name = "READ ME! Before you people destroy any more samples"
P.info = "how many times do i have to tell you people, these xeno-arch samples are del-i-cate, and should be handled so! careful application of a focussed, concentrated heat or some corrosive liquids should clear away the extraneous carbon matter, while application of an energy beam will most decidedly destroy it entirely - like someone did to the chemical dispenser! W, <b>the one who signs your paychecks</b>"
P.stamped = list(/obj/item/stamp/rd)
P.overlays = list("paper_stamped_rd")
src.contents += P

P = new()
P.name = "Reminder regarding the anomalous material suits"
P.info = "Do you people think the anomaly suits are cheap to come by? I'm about a hair trigger away from instituting a log book for the damn things. Only wear them if you're going out for a dig, and for god's sake don't go tramping around in them unless you're field testing something, R"
P.stamped = list(/obj/item/stamp/rd)
P.overlays = list("paper_stamped_rd")
src.contents += P

//---- Bookcase

/obj/structure/bookcase/manuals/xenoarchaeology
Expand Down
61 changes: 61 additions & 0 deletions html/changelogs/KingOfThePing - 21211.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
################################
# Example Changelog File
#
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
#
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
# When it is, any changes listed below will disappear.
#
# Valid Prefixes:
# bugfix
# - (fixes bugs)
# wip
# - (work in progress)
# qol
# - (quality of life)
# soundadd
# - (adds a sound)
# sounddel
# - (removes a sound)
# rscadd
# - (adds a feature)
# rscdel
# - (removes a feature)
# imageadd
# - (adds an image or sprite)
# imagedel
# - (removes an image or sprite)
# spellcheck
# - (fixes spelling or grammar)
# experiment
# - (experimental change)
# balance
# - (balance changes)
# code_imp
# - (misc internal code change)
# refactor
# - (refactors code)
# config
# - (makes a change to the config files)
# admin
# - (makes changes to administrator tools)
# server
# - (miscellaneous changes to server)
#################################

# Your name.
author: KingOfThePing, FabianK3

# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
delete-after: True

# Any changes you've made. See valid prefix list above.
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
# SCREW THIS UP AND IT WON'T WORK.
# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit.
# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog.
changes:
- imageadd: "Resprites and greatly expanded the sprites for notice boards. Added a new subtype of notice boards."
- imagedel: "Removed the old notice board sprites."
- rscadd: "Added functionality for said new notice board subtype."
- qol: "Replaced the hardcoded notice board in Xenoarcheology with a proper persistent one."
Binary file modified icons/obj/stationobjs.dmi
Binary file not shown.
Loading
Loading