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