diff --git a/_maps/map_files/dun_manor/dun_manor.dmm b/_maps/map_files/dun_manor/dun_manor.dmm
index 2b9f7e7de77..a153608140e 100644
--- a/_maps/map_files/dun_manor/dun_manor.dmm
+++ b/_maps/map_files/dun_manor/dun_manor.dmm
@@ -16212,16 +16212,16 @@
/turf/open/floor/rogue/ruinedwood/herringbone,
/area/rogue/indoors/town/tavern)
"oBw" = (
-/obj/item/scomstone,
/obj/item/storage/belt/rogue/pouch/coins/mid,
/obj/item/roguegem/diamond,
-/obj/item/scomstone,
/obj/structure/closet/crate/drawer/random{
pixel_y = 0
},
/obj/structure/fluff/walldeco/painting{
pixel_y = 32
},
+/obj/item/scomstone/garrison,
+/obj/item/scomstone/garrison,
/turf/open/floor/rogue/ruinedwood{
icon_state = "weird1"
},
diff --git a/code/modules/clothing/rogueclothes/feet.dm b/code/modules/clothing/rogueclothes/feet.dm
index 861763d36c2..cb2b329e8b4 100644
--- a/code/modules/clothing/rogueclothes/feet.dm
+++ b/code/modules/clothing/rogueclothes/feet.dm
@@ -23,7 +23,7 @@
sewrepair = TRUE
armor = list("blunt" = 30, "slash" = 10, "stab" = 20, "fire" = 0, "acid" = 0)
-/obj/item/clothing/shoes/roguetown/psydonboots
+/obj/item/clothing/shoes/roguetown/boots/psydonboots
name = "psydonian boots"
desc = "Blacksteel-heeled boots. The leather refuses to be worn down, no matter how far you march through these lands."
icon_state = "psydonboots"
diff --git a/code/modules/jobs/job_types/roguetown/Inquisition/orthoclasses/psydoniantemplar.dm b/code/modules/jobs/job_types/roguetown/Inquisition/orthoclasses/psydoniantemplar.dm
index df03ed57b11..2d25c315fba 100644
--- a/code/modules/jobs/job_types/roguetown/Inquisition/orthoclasses/psydoniantemplar.dm
+++ b/code/modules/jobs/job_types/roguetown/Inquisition/orthoclasses/psydoniantemplar.dm
@@ -18,7 +18,7 @@
pants = /obj/item/clothing/under/roguetown/chainlegs
backl = /obj/item/storage/backpack/rogue/satchel/black
shirt = /obj/item/clothing/suit/roguetown/armor/gambeson
- shoes = /obj/item/clothing/shoes/roguetown/psydonboots
+ shoes = /obj/item/clothing/shoes/roguetown/boots/psydonboots
armor = /obj/item/clothing/suit/roguetown/armor/chainmail/hauberk/fluted
head = /obj/item/clothing/head/roguetown/helmet/heavy/psydonhelm
belt = /obj/item/storage/belt/rogue/leather/black
diff --git a/code/modules/jobs/job_types/roguetown/garrison/bogguard.dm b/code/modules/jobs/job_types/roguetown/garrison/bogguard.dm
index a4d45bcbb43..e1dbee4bc45 100644
--- a/code/modules/jobs/job_types/roguetown/garrison/bogguard.dm
+++ b/code/modules/jobs/job_types/roguetown/garrison/bogguard.dm
@@ -33,7 +33,7 @@ Also given some non-combat skills that a peasent would have, just to support the
wrists = /obj/item/clothing/wrists/roguetown/bracers/leather
shirt = /obj/item/clothing/suit/roguetown/armor/gambeson/heavy
pants = /obj/item/clothing/under/roguetown/trou/leather
- id = /obj/item/scomstone/bad
+ id = /obj/item/scomstone/bad/garrison
shoes = /obj/item/clothing/shoes/roguetown/boots/leather
beltl = /obj/item/storage/keyring/guard
belt = /obj/item/storage/belt/rogue/leather
@@ -41,7 +41,7 @@ Also given some non-combat skills that a peasent would have, just to support the
backr = /obj/item/storage/backpack/rogue/satchel
r_hand = /obj/item/rogueweapon/spear
wrists = /obj/item/clothing/wrists/roguetown/bracers/leather
- backpack_contents = list(/obj/item/rogueweapon/huntingknife = 1, /obj/item/signal_horn = 1, /obj/item/flashlight/flare/torch/lantern = 1)
+ backpack_contents = list(/obj/item/rogueweapon/huntingknife = 1, /obj/item/flashlight/flare/torch/lantern = 1)
if(H.mind)
H.mind.adjust_skillrank(/datum/skill/combat/bows, 4, TRUE)
H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 2, TRUE)
diff --git a/code/modules/jobs/job_types/roguetown/garrison/dungeoneer.dm b/code/modules/jobs/job_types/roguetown/garrison/dungeoneer.dm
index 348c3f9f9a4..5ea6134a0db 100644
--- a/code/modules/jobs/job_types/roguetown/garrison/dungeoneer.dm
+++ b/code/modules/jobs/job_types/roguetown/garrison/dungeoneer.dm
@@ -43,6 +43,7 @@
beltr = /obj/item/rogueweapon/whip/antique
beltl = /obj/item/storage/keyring/dungeoneer
backr = /obj/item/storage/backpack/rogue/satchel/black
+ id = /obj/item/scomstone/bad/garrison
if(H.mind)
H.mind.adjust_skillrank(/datum/skill/combat/whipsflails, 4, TRUE)
H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 5, TRUE) //hilarious
diff --git a/code/modules/jobs/job_types/roguetown/garrison/manorguard.dm b/code/modules/jobs/job_types/roguetown/garrison/manorguard.dm
index 09fbc8bf5c2..438b08e0f9a 100644
--- a/code/modules/jobs/job_types/roguetown/garrison/manorguard.dm
+++ b/code/modules/jobs/job_types/roguetown/garrison/manorguard.dm
@@ -47,7 +47,7 @@
beltl = /obj/item/storage/keyring/guardcastle
belt = /obj/item/storage/belt/rogue/leather/black
backr = /obj/item/storage/backpack/rogue/satchel/black
- backpack_contents = list(/obj/item/signal_horn = 1)
+ id = /obj/item/scomstone/bad/garrison
// Maces + Axes + Shield - Better armor, typical Man-at-Arms loadout
/datum/advclass/manorguard/footsman
diff --git a/code/modules/jobs/job_types/roguetown/garrison/sergeant.dm b/code/modules/jobs/job_types/roguetown/garrison/sergeant.dm
index d227500313a..35aadd62b25 100644
--- a/code/modules/jobs/job_types/roguetown/garrison/sergeant.dm
+++ b/code/modules/jobs/job_types/roguetown/garrison/sergeant.dm
@@ -51,8 +51,8 @@
shirt = /obj/item/clothing/suit/roguetown/armor/gambeson
armor = /obj/item/clothing/suit/roguetown/armor/plate/scale
head = /obj/item/clothing/head/roguetown/helmet/sallet/visored
- id = /obj/item/scomstone
- backpack_contents = list(/obj/item/signal_horn = 1, /obj/item/rogueweapon/huntingknife/idagger/steel/special = 1, /obj/item/rope/chain = 1)
+ id = /obj/item/scomstone/garrison
+ backpack_contents = list(/obj/item/rogueweapon/huntingknife/idagger/steel/special = 1, /obj/item/rope/chain = 1)
if(H.mind)
H.mind.adjust_skillrank(/datum/skill/combat/polearms, 4, TRUE)
H.mind.adjust_skillrank(/datum/skill/combat/swords, 4, TRUE)
diff --git a/code/modules/jobs/job_types/roguetown/nobility/bailiff.dm b/code/modules/jobs/job_types/roguetown/nobility/bailiff.dm
index cfafd0581dd..2c0628c53b8 100644
--- a/code/modules/jobs/job_types/roguetown/nobility/bailiff.dm
+++ b/code/modules/jobs/job_types/roguetown/nobility/bailiff.dm
@@ -31,6 +31,7 @@
backl = /obj/item/storage/backpack/rogue/satchel
gloves = /obj/item/clothing/gloves/roguetown/angle
wrists = /obj/item/clothing/wrists/roguetown/bracers
+ id = /obj/item/scomstone/garrison
backpack_contents = list(/obj/item/rogueweapon/huntingknife/idagger/steel/special = 1, /obj/item/signal_horn = 1)
if(H.mind)
diff --git a/code/modules/jobs/job_types/roguetown/nobility/captain.dm b/code/modules/jobs/job_types/roguetown/nobility/captain.dm
index 39aa87983db..b87771026fe 100644
--- a/code/modules/jobs/job_types/roguetown/nobility/captain.dm
+++ b/code/modules/jobs/job_types/roguetown/nobility/captain.dm
@@ -34,6 +34,7 @@
shoes = /obj/item/clothing/shoes/roguetown/boots/armor
belt = /obj/item/storage/belt/rogue/leather/plaquesilver
cloak = /obj/item/clothing/cloak/stabard/guardhood
+ id = /obj/item/scomstone/garrison
/datum/job/roguetown/captain/after_spawn(mob/living/L, mob/M, latejoin = TRUE)
. = ..()
diff --git a/code/modules/jobs/job_types/roguetown/nobility/knight.dm b/code/modules/jobs/job_types/roguetown/nobility/knight.dm
index 3cdb797eb3b..0adb3de34e1 100644
--- a/code/modules/jobs/job_types/roguetown/nobility/knight.dm
+++ b/code/modules/jobs/job_types/roguetown/nobility/knight.dm
@@ -58,7 +58,8 @@
shoes = /obj/item/clothing/shoes/roguetown/boots/armor
belt = /obj/item/storage/belt/rogue/leather/black
backr = /obj/item/storage/backpack/rogue/satchel/black
- backpack_contents = list(/obj/item/signal_horn = 1, /obj/item/storage/keyring/guardcastle = 1)
+ id = /obj/item/scomstone/garrison
+ backpack_contents = list(/obj/item/storage/keyring/guardcastle = 1)
/datum/advclass/knight/heavy
name = "Heavy Knight"
diff --git a/code/modules/roguetown/roguemachine/scomm.dm b/code/modules/roguetown/roguemachine/scomm.dm
index 3f002067297..b4eb02ae005 100644
--- a/code/modules/roguetown/roguemachine/scomm.dm
+++ b/code/modules/roguetown/roguemachine/scomm.dm
@@ -18,6 +18,7 @@
var/obj/structure/roguemachine/scomm/calling = null
var/obj/structure/roguemachine/scomm/called_by = null
var/spawned_rat = FALSE
+ var/garrisonline = FALSE
/obj/structure/roguemachine/scomm/OnCrafted(dirin, mob/user)
. = ..()
@@ -114,9 +115,16 @@
popup.set_content(contents)
popup.open()
-/obj/structure/roguemachine/scomm/MiddleClick(mob/user)
+/obj/structure/roguemachine/scomm/MiddleClick(mob/living/carbon/human/user)
if(.)
return
+ if((HAS_TRAIT(user, TRAIT_GUARDSMAN) || (HAS_TRAIT(user, TRAIT_KNIGHTSMAN)) || (HAS_TRAIT(user, TRAIT_WOODSMAN)) || (user.job = "Squire")))
+ if(alert("Would you like to swap lines or connect to a jabberline?",, "swap", "jabberline") != "jabberline")
+ garrisonline = !garrisonline
+ to_chat(user, span_info("I [garrisonline ? "connect to the garrison SCOMline" : "connect to the general SCOMLINE"]"))
+ playsound(loc, 'sound/misc/garrisonscom.ogg', 100, FALSE, -1)
+ update_icon()
+ return
user.changeNext_move(CLICK_CD_MELEE)
playsound(loc, 'sound/misc/beep.ogg', 100, FALSE, -1)
if(calling)
@@ -199,6 +207,9 @@
if(obj_broken)
set_light(0)
return
+ if(garrisonline)
+ icon_state = "scomm2"
+ return
if(calling)
icon_state = "scomm2"
else if(listening)
@@ -253,6 +264,15 @@
spawned_rat = TRUE
return*/
raw_message = "[raw_message]"
+ if(garrisonline)
+ for(var/obj/item/scomstone/garrison/S in SSroguemachine.scomm_machines)
+ S.repeat_message(raw_message, src, usedcolor, message_language)
+ for(var/obj/item/scomstone/bad/garrison/S in SSroguemachine.scomm_machines)
+ S.repeat_message(raw_message, src, usedcolor, message_language)
+ for(var/obj/structure/roguemachine/scomm/S in SSroguemachine.scomm_machines)
+ if(S.garrisonline)
+ S.repeat_message(raw_message, src, usedcolor, message_language)
+ return
for(var/obj/structure/roguemachine/scomm/S in SSroguemachine.scomm_machines)
if(!S.calling)
S.repeat_message(raw_message, src, usedcolor, message_language)
@@ -305,6 +325,8 @@
muteinmouth = TRUE
var/listening = TRUE
var/speaking = TRUE
+ var/messagereceivedsound = 'sound/misc/scom.ogg'
+ var/hearrange = 1 // change to 0 if you want your special scomstone to be only hearable by wearer
sellprice = 100
//wip
/obj/item/scomstone/attack_right(mob/living/carbon/human/user)
@@ -351,7 +373,7 @@
if(tcolor)
voicecolor_override = tcolor
if(speaking && message)
- playsound(loc, 'sound/misc/scom.ogg', 100, TRUE, -1)
+ playsound(loc, messagereceivedsound, 100, TRUE, -1)
say(message, language = message_language)
voicecolor_override = null
@@ -366,9 +388,9 @@
language = get_default_language()
if(istype(loc, /obj/item))
var/obj/item/I = loc
- I.send_speech(message, 1, I, , spans, message_language=language)
+ I.send_speech(message, hearrange, I, , spans, message_language=language)
else
- send_speech(message, 1, src, , spans, message_language=language)
+ send_speech(message, hearrange, src, , spans, message_language=language)
/obj/item/scomstone/bad
name = "serfstone"
@@ -657,3 +679,57 @@
raw_message = "[raw_message]"
for(var/obj/item/speakerinq/S in SSroguemachine.scomm_machines)
S.repeat_message(raw_message, src, usedcolor, message_language)
+
+// garrison scoms/listenstones
+
+/obj/item/scomstone/garrison
+ name = "crownstone"
+ icon_state = "ring_sapphire"
+ desc = "A silver ring with an sapphire gem."
+ var/garrisonline = TRUE
+ messagereceivedsound = 'sound/misc/garrisonscom.ogg'
+ hearrange = 0
+ sellprice = 100
+
+/obj/item/scomstone/garrison/attack_right(mob/living/carbon/human/user)
+ user.changeNext_move(CLICK_CD_MELEE)
+ var/input_text = input(user, "Enter your message:", "Message")
+ if(input_text)
+ var/usedcolor = user.voice_color
+ if(user.voicecolor_override)
+ usedcolor = user.voicecolor_override
+ user.whisper(input_text)
+ if(length(input_text) > 100) //When these people talk too much, put that shit in slow motion, yeah
+ input_text = "[input_text]"
+ if(!garrisonline)
+ for(var/obj/structure/roguemachine/scomm/S in SSroguemachine.scomm_machines)
+ S.repeat_message(input_text, src, usedcolor)
+ for(var/obj/item/scomstone/S in SSroguemachine.scomm_machines)
+ S.repeat_message(input_text, src, usedcolor)
+ for(var/obj/item/listenstone/S in SSroguemachine.scomm_machines)
+ S.repeat_message(input_text, src, usedcolor)
+ if(garrisonline)
+ for(var/obj/item/scomstone/bad/garrison/S in SSroguemachine.scomm_machines)
+ S.repeat_message(input_text, src, usedcolor)
+ for(var/obj/item/scomstone/garrison/S in SSroguemachine.scomm_machines)
+ S.repeat_message(input_text, src, usedcolor)
+ for(var/obj/structure/roguemachine/scomm/S in SSroguemachine.scomm_machines)
+ if(S.garrisonline)
+ S.repeat_message(input_text, src, usedcolor)
+
+/obj/item/scomstone/garrison/attack_self(mob/living/user)
+ if(.)
+ return
+ user.changeNext_move(CLICK_CD_MELEE)
+ playsound(loc, 'sound/misc/beep.ogg', 100, FALSE, -1)
+ garrisonline = !garrisonline
+ to_chat(user, span_info("I [garrisonline ? "connect to the garrison SCOMline" : "connect to the general SCOMline"]"))
+
+/obj/item/scomstone/bad/garrison
+ name = "houndstone"
+ desc = "A steel ring with a dull gem shoddily sticking out of it. This one has the mark of the Crown upon its side."
+ icon_state = "ring_lamerald"
+ listening = FALSE
+ sellprice = 20
+ messagereceivedsound = 'sound/misc/garrisonscom.ogg'
+ hearrange = 0
diff --git a/sound/misc/garrisonscom.ogg b/sound/misc/garrisonscom.ogg
new file mode 100644
index 00000000000..880f5b4c372
Binary files /dev/null and b/sound/misc/garrisonscom.ogg differ