diff --git a/aurorastation.dme b/aurorastation.dme
index 24ccc2ed33c..518b153394a 100644
--- a/aurorastation.dme
+++ b/aurorastation.dme
@@ -490,6 +490,7 @@
#include "code\datums\weakrefs.dm"
#include "code\datums\changelog\changelog.dm"
#include "code\datums\components\_component.dm"
+#include "code\datums\components\_hivenetechoes.dm"
#include "code\datums\components\commissaryShop.dm"
#include "code\datums\components\connect_mob_behalf.dm"
#include "code\datums\components\drift.dm"
diff --git a/code/datums/components/_hivenetechoes.dm b/code/datums/components/_hivenetechoes.dm
new file mode 100644
index 00000000000..756adc3c5f9
--- /dev/null
+++ b/code/datums/components/_hivenetechoes.dm
@@ -0,0 +1,110 @@
+/datum/component/HiveEchoes
+
+ /// The next real life time a broadcast echo will generate.
+ var/next_broadcastEcho = 0
+ /// The next real life time a projection echo will generate.
+ var/next_projectionEcho = 0
+
+ /**
+ * The typechecked owner of this component.
+ * This component only works on humanoid mobs, and will self-delete if it's parent isn't a humanoid.
+ **/
+ var/mob/living/carbon/human/owner
+
+/datum/component/HiveEchoes/Initialize()
+ . = ..()
+ if (!parent)
+ return
+
+ if (!ishuman(parent))
+ qdel(src)
+ stack_trace("Hivenet Echoes Component was added to [parent.type] but is not of type /mob/living/carbon/human. Hivenet echoes can only work on humanoids.")
+ return
+
+ owner = parent
+
+ // Check during component init if we're in a sector that blocks hivenet echoes, and if so, skip processing init.
+ if(!SSatlas.current_sector.hivenet_echoes)
+ if((SSatlas.current_sector.name in list(SECTOR_LEMURIAN_SEA, SECTOR_LEMURIAN_SEA_FAR)))
+ to_chat(parent, SPAN_CULT("The Fog cuts you off from the greater Hivenet. Without its echoes, you feel deeply dreadful."))
+ else
+ to_chat(parent, SPAN_WARNING("The faint echoes of the greater Hivenet fade away. Without them, you feel low in company."))
+ return
+
+ // Setup the first time the echoes will begin playing.
+ next_broadcastEcho = REALTIMEOFDAY + rand(180, 300) SECONDS
+ next_projectionEcho = REALTIMEOFDAY + rand(240, 480) SECONDS
+
+ // Finally start the clock.
+ START_PROCESSING(SSprocessing, src)
+
+/datum/component/HiveEchoes/Destroy()
+ owner = null
+ STOP_PROCESSING(SSprocessing, src)
+ return ..()
+
+/datum/component/HiveEchoes/process(seconds_per_tick)
+ if(owner.stat != CONSCIOUS)
+ return
+
+ var/curtime = REALTIMEOFDAY
+ if(curtime >= next_broadcastEcho)
+ var/topic = "[pick(100;"gossip", 30;"happy", 15;"tense")]"
+ GetBroadcastEcho(topic)
+ next_broadcastEcho = curtime + rand(180, 300) SECONDS
+ if(curtime >= next_projectionEcho)
+ GetProjectionEcho()
+ next_projectionEcho = curtime + rand(240, 480) SECONDS
+
+/datum/component/HiveEchoes/proc/GetBroadcastEcho(topic)
+ if (!owner.internal_organs_by_name[BP_NEURAL_SOCKET] || within_jamming_range(owner))
+ return
+
+ var/list/echo_starter = file2list("config/hivenet_echoes/starter_[topic].txt")
+ var/list/echo_response = file2list("config/hivenet_echoes/response_[topic].txt")
+ var/joined = pick(100;0, 60;1)
+
+ if(joined && topic == "gossip")
+ to_chat(owner, "Hivenet, a [pick("Faint", "Distant", "Fading", "Fleeting", "Drifting", "Low", "Weak", "Far", "Pinging", "Whispering")] Echo broadcasts, \"[pick(echo_starter)]" + " " + "[pick(echo_response)]\"")
+ else
+ to_chat(owner, "Hivenet, a [pick("Faint", "Distant", "Fading", "Fleeting", "Drifting", "Low", "Weak", "Far", "Pinging", "Whispering")] Echo broadcasts, \"[pick(echo_starter)]\"") //this works
+ sleep(rand(5,15))
+ to_chat(owner, "Hivenet, a [pick("Faint", "Distant", "Fading", "Fleeting", "Drifting", "Low", "Weak", "Far", "Pinging", "Whispering")] Echo broadcasts, \"[pick(echo_response)]\"")
+
+/datum/component/HiveEchoes/proc/GetProjectionEcho()
+ if(!owner.internal_organs_by_name[BP_NEURAL_SOCKET] || within_jamming_range(owner))
+ return
+
+ var/list/echo_projections = file2list("config/hivenet_echoes/echo_projections.txt")
+ to_chat(owner, "Hivenet, a [pick("Faint", "Distant", "Fading", "Fleeting", "Drifting", "Low", "Weak", "Far", "Pinging", "Whispering")] Echo projects [pick(echo_projections)]")
+
+//Serverside admin toggle
+/datum/admins/proc/ToggleEchoes()
+ set name = "Toggle Hivenet Echoes"
+ set category = "Special Verbs"
+ set desc = "Toggle if Vaurcae can hear faint echoes (fluff) of the greater Hivenet. They will notice."
+
+ if(!check_rights(R_ADMIN))
+ return
+
+ if(SSatlas.current_sector.hivenet_echoes)
+ SSatlas.current_sector.hivenet_echoes = FALSE
+ to_chat(usr, SPAN_INFO("Vaurcae have been cut off from echoes (fluff) of the greater Hivenet."))
+ for(var/mob/player as anything in GLOB.player_list)
+ var/datum/component/HiveEchoes/echoesComp = player.GetComponent(/datum/component/HiveEchoes)
+ if (!echoesComp)
+ continue
+
+ to_chat(player, SPAN_CULT("The absence of echoes makes you feel dreadful."))
+ STOP_PROCESSING(SSprocessing, echoesComp)
+ return
+
+ SSatlas.current_sector.hivenet_echoes = TRUE
+ to_chat(usr, SPAN_INFO("Vaurcae will receive echoes (fluff) of the greater Hivenet."))
+ for(var/mob/player as anything in GLOB.player_list)
+ var/datum/component/HiveEchoes/echoesComp = player.GetComponent(/datum/component/HiveEchoes)
+ if (!echoesComp)
+ continue
+
+ to_chat(player, SPAN_NOTICE("You feel echoes of the greater Hivenet drift back in."))
+ START_PROCESSING(SSprocessing, echoesComp)
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index cc2a6f8f3f1..080c60966ce 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -162,6 +162,7 @@ GLOBAL_LIST_INIT(admin_verbs_spawn, list(
))
GLOBAL_LIST_INIT(admin_verbs_server, list(
+ /datum/admins/proc/ToggleEchoes, //Toggles if Vaurcae receive faint echoes (fluff) of the wider Hivenet. Useful for events or gimmicks.
/datum/admins/proc/capture_map_part,
/client/proc/Set_Holiday,
/datum/admins/proc/startnow,
diff --git a/code/modules/background/space_sectors/crescent_expanse.dm b/code/modules/background/space_sectors/crescent_expanse.dm
index 1efc9966c9b..71806252973 100644
--- a/code/modules/background/space_sectors/crescent_expanse.dm
+++ b/code/modules/background/space_sectors/crescent_expanse.dm
@@ -75,6 +75,7 @@
)
ccia_link = FALSE
+ hivenet_echoes = FALSE
lore_radio_stations = list(
"74.4 Faint Radio Transmission" = 'texts/lore_radio/crescent_expanse/74.4_CE_Uncharted-Damaged_Station.txt',
diff --git a/code/modules/background/space_sectors/space_sector.dm b/code/modules/background/space_sectors/space_sector.dm
index 8b5a2e669c3..5d7b57d51a0 100644
--- a/code/modules/background/space_sectors/space_sector.dm
+++ b/code/modules/background/space_sectors/space_sector.dm
@@ -60,6 +60,8 @@
/// Does this sector permit communication with Central Command? Reserved for remote/uncharted sectors. The EBS system is unaffected as it is necessary for certain CCIA functions (eg. scuttling).
var/ccia_link = TRUE
+ ///Does this sector allow Vaurcae catch fluff echoes of the greater Hivenet? Primarily for Lemurian Sea, but some super remote areas also fit. Obviously, consult w/ lore.
+ var/hivenet_echoes = TRUE
//vars used by the meteor random event
diff --git a/code/modules/background/space_sectors/void.dm b/code/modules/background/space_sectors/void.dm
index 50d434c71c3..f4d431f585e 100644
--- a/code/modules/background/space_sectors/void.dm
+++ b/code/modules/background/space_sectors/void.dm
@@ -48,6 +48,7 @@
'sound/music/lobby/lights_edge/lights_edge_2.ogg',
'sound/music/lobby/dangerous_space/dangerous_space_1.ogg'
)
+ hivenet_echoes = FALSE
/datum/space_sector/lemurian_sea/far
name = SECTOR_LEMURIAN_SEA_FAR
diff --git a/code/modules/mob/abstract/ghost/storyteller/storyteller_verbs.dm b/code/modules/mob/abstract/ghost/storyteller/storyteller_verbs.dm
index 866a307cc78..f985deb5102 100644
--- a/code/modules/mob/abstract/ghost/storyteller/storyteller_verbs.dm
+++ b/code/modules/mob/abstract/ghost/storyteller/storyteller_verbs.dm
@@ -192,6 +192,24 @@
log_admin("GlobalScreenText: [key_name(usr)] : [msg]")
message_admins(SPAN_NOTICE("Global Screen Text: [key_name_admin(usr)] : [msg]"), 1)
+/mob/abstract/ghost/storyteller/verb/SwitchHivenetEchoes()
+ set name = "Switch Off/On Hivenet Echoes"
+ set category = "Storyteller"
+ set desc = "Switch if Vaurcae can hear faint echoes (fluff) of the greater Hivenet. They will notice."
+
+ if(SSatlas.current_sector.hivenet_echoes)
+ SSatlas.current_sector.hivenet_echoes = FALSE
+ to_chat(src, "Vaurcae have been cut off from echoes (fluff) of the greater Hivenet.")
+ for(var/mob/living/carbon/human/player in GLOB.player_list)
+ if(isvaurca(player) && player.internal_organs_by_name[BP_NEURAL_SOCKET] && !within_jamming_range(player) && GLOB.all_languages[LANGUAGE_VAURCA])
+ to_chat(player, SPAN_CULT("The absence of echoes makes you feel dreadful."))
+ else if(!SSatlas.current_sector.hivenet_echoes)
+ SSatlas.current_sector.hivenet_echoes = TRUE
+ to_chat(src, "Vaurcae will receive echoes (fluff) of the greater Hivenet.")
+ for(var/mob/living/carbon/human/player in GLOB.player_list)
+ if(isvaurca(player) && player.internal_organs_by_name[BP_NEURAL_SOCKET] && !within_jamming_range(player) && GLOB.all_languages[LANGUAGE_VAURCA])
+ to_chat(player, SPAN_NOTICE("You feel echoes of the greater Hivenet drift back in."))
+
/mob/abstract/ghost/storyteller/verb/storyteller_direct_narrate(var/mob/M)
set name = "Direct Narrate"
set category = "Storyteller"
diff --git a/code/modules/mob/language/station.dm b/code/modules/mob/language/station.dm
index 117ff21a880..d8b66e43432 100644
--- a/code/modules/mob/language/station.dm
+++ b/code/modules/mob/language/station.dm
@@ -226,7 +226,7 @@
/datum/language/bug/get_random_name()
var/new_name = "[pick(list("Ka'","Za'","Ka'"))]"
new_name += "[pick(list("Akaix'","Viax'"))]"
- new_name += "[pick(list("Uyek","Uyit","Avek","Theth","Ztak","Teth","Zir","Yek","Zirk","Ayek","Yir","Kig","Yol","'Zrk","Nazgr","Yet","Nak","Kiihr","Gruz","Guurz","Nagr","Zkk","Zohd","Norc","Agraz","Yizgr","Yinzr","Nuurg","Iii","Lix","Nhagh","Xir","Z'zit","Zhul","Zgr","Na'k","Isk'yet","Aaaa"))]"
+ new_name += "[pick(list("Uyek","Uyit","Avek","Theth","Ztak","Teth","Zir","Yek","Zirk","Ayek","Yir","Kig","Yol","'Zrk","Nazgr","Yet","Nak","Kiihr","Gruz","Guurz","Nagr","Zkk","Zohd","Norc","Agraz","Yizgr","Yinzr","Nuurg","Iii","Lix","Nhagh","Xir","Z'zit","Zhul","Zgr","Na'k","Isk'yet","Agha"))]"
var/list/hive_names = list("Zo'ra" = 3, "K'lax" = 1, "C'thur" = 1)
new_name += " [pickweight(hive_names)]"
return new_name
diff --git a/code/modules/mob/living/carbon/human/species/station/vaurca/vaurca.dm b/code/modules/mob/living/carbon/human/species/station/vaurca/vaurca.dm
index 28a9bfdb2cb..5c66bf1f1cc 100644
--- a/code/modules/mob/living/carbon/human/species/station/vaurca/vaurca.dm
+++ b/code/modules/mob/living/carbon/human/species/station/vaurca/vaurca.dm
@@ -187,6 +187,7 @@
/datum/species/bug/handle_post_spawn(var/mob/living/carbon/human/H)
H.gender = NEUTER
+ H.AddComponent(/datum/component/HiveEchoes)
return ..()
/datum/species/bug/is_naturally_insulated()
diff --git a/config/hivenet_echoes/echo_projections.txt b/config/hivenet_echoes/echo_projections.txt
new file mode 100644
index 00000000000..f7eb2ba1b9a
--- /dev/null
+++ b/config/hivenet_echoes/echo_projections.txt
@@ -0,0 +1,122 @@
+affection.
+sarcasm.
+annoyance.
+confidence.
+gratitude.
+excitement.
+confusion.
+wonder.
+interest.
+disappointment.
+anger.
+curiosity.
+pain.
+fear.
+caution.
+reverence.
+disgust.
+hatred.
+a surge of encrypted data.
+an enormous surge of encrypted data, surging out into wider Hivenet.
+mischief.
+pleasure.
+pride.
+contempt.
+complacency.
+an apology.
+an epiphany.
+nostalgia
+appreciation.
+thanks.
+acceptance.
+anticipation.
+the chewing of k'ois.
+the grinding of k'ois.
+the grinding of phoron rock candy.
+the fizziness of toothpaste.
+a strong intoxication.
+an energetic soda kick.
+rummaging through piles.
+carrying people.
+pushing boxes.
+dragging people.
+moving something heavy.
+frantic searching.
+looting.
+hiding.
+stealthiness.
+leaping.
+sprinting.
+climbing.
+falling.
+grabbing.
+twisting something.
+bending something.
+clawing.
+scraping.
+biting.
+exhaustion.
+tiredness.
+persistence.
+resilience.
+longing.
+chewing of V'krexi Snax taffy.
+revolting, shameful trophallaxis.
+intense warmth.
+chills.
+embarrassment.
+satisfaction.
+being crushed.
+being cut.
+being drilled into.
+k'ois clotting wounds.
+being sprayed.
+Zo'rane might.
+C'thuric planning.
+K'laxan ingenuity.
+being blinded.
+overwhelming light.
+smoking a cigarette.
+inhaling wulumunusha, the subsequent drop in vocal functions and increased saturation in vision.
+the sweet, stringy taste of Koko reed.
+the high after huffing Xu'Xi Gas.
+the chewing of cooked beef.
+chewing of vegetables.
+the taste of boiled cabbages.
+feasting on fast food.
+eating fried fish.
+enjoying potato fries.
+biting a hard cookie.
+feasting on soft cake.
+the rhythmic chewing of a corn cob.
+chewing into fish.
+tasting algae.
+tearing into crustacean.
+pinching apart the insides of a clam.
+the texture of a roasted diona nymph.
+the taste of a vaurca carapace.
+eating cooked chicken.
+eating fried chicken.
+enjoying mashed potatoes.
+tasting a rich gravy coating.
+being sprinkled with sauce.
+tearing into raw space carp.
+chewing into wood.
+eating rock.
+slurping sweet metal and battery acid.
+guzzling welding fuel.
+incredible spiciness.
+drinking warm milk.
+devouring a monkey bit by bit.
+touching a beating heart.
+part of a clip of a show.
+guzzling Zo'rane fire.
+remorseless execution.
+hatching once more.
+being slapped.
+flexing headtails.
+a ping into Hivenet.
+chewing gum.
+flexing skin to smile.
+a minty exhale.
+a catchy tune.
\ No newline at end of file
diff --git a/config/hivenet_echoes/response_gossip.txt b/config/hivenet_echoes/response_gossip.txt
new file mode 100644
index 00000000000..005c955a394
--- /dev/null
+++ b/config/hivenet_echoes/response_gossip.txt
@@ -0,0 +1,144 @@
+The project's finished.
+News for the hivecell.
+We're back.
+More kix for the hivecell.
+Zo'ra Soda is a cash grab.
+A lost realm was recently found.
+The Delvers resurrected that realm.
+Delvers really are at risk of being wiped in realms.
+We're closer to the goal.
+Morale is lower.
+The Federation depends on the C'thur.
+C'thur are being done in by their own tactics.
+The Queenless are at fault.
+The Queenless are irrelevant.
+That was a Wyvenet broadcast!
+Loa'mox ruin the good K'lax of Flagsdale.
+Nii'mii'katz only pickpocket because Flagsdale was abandoned.
+Ak'riix is an ideology, not an organization.
+Ak'riix cannot be stopped.
+Those were Queenless in the Interstice.
+Vizk'tul of the Mi'Kuetz can hold dozens of tents.
+Mi'Kuetz invade so well they're called Bunker Busters by Unathi.
+The Yiaa'mak'tzut are a myth.
+Ka'Akaix'Rail K'lax was a Xakat'kl'atan
+Morale is stronger.
+The Titan Prime lives on in the Aether.
+The Queens know.
+Nlom is the passive Hivenet of Skrell.
+Srom is the Aether of Skrell.
+Despite all odds, Ta can bend the psionic Srom!
+It's sanctioned by the Queens.
+Fii'k'iek is the future.
+Xathul Xon is as savage as the Hive War.
+Za'Akaix'Xeru K'lax's form is so much, even the Cephalons struggle to maintain it!
+The Crucible is dangerously unstable!
+Viax Gist is to blame.
+The Bek'kakra has an answer.
+Someone at the Bazaar of Curiosity probably knows and has kix for it.
+That campaign was underrated.
+That Reality Garden was beautiful.
+A secret in the Interstice was found.
+I may become a Xenr'atan!
+I may have won the Ira'kan design contest.
+Yie taught this social tactic.
+Dialogue gave Athvur's spawn all the skills they know.
+Tyria is truly neutral ground.
+Reopq is truly a special subrealm.
+The beauty of Experience demands kix from non-C'thur.
+C'thur's Ta'kakpa is even more detailed than the Ran'kana Chronicle!
+The Tekaka is a paradise in paradise!
+Qapka has copyright concerns.
+The Lifeseer, Nolnz, predicted humans!
+Ky'klux Queenless predicted the Phoron shortage pre-Exodus!
+Those that seek to learn from Famat, search in craters.
+There will be another Pon'kana.
+The Pon'kana Engine destroyed Sedantis.
+K'lax caused the Exodus.
+It would have taken an extra millennium to rebuild from the Hive War without the K'lax.
+Exterminator warforms were banned with the Great Hive War.
+Preimminence caused the Great Hive War.
+The Fu'ruk Hive's suicide bomb maneuvers frightened and pushed back the Lii'dra.
+There used to be Unbound Male Ta.
+Reusk'otahn is an extensive chronicle.
+The Hive War Myth is very embellished.
+Integrated weapons in Warriors are a status symbol.
+Kelek is the best way to train and settle medical duels.
+The Hive War had Queens themselves fight!
+Mother K'lax's puzzlebox is broken.
+Mother K'lax's puzzlebox is uncrackable.
+Mother K'lax is only asleep because she ascended.
+Tyrut'katyak converts even the most skeptical non-believers.
+The Founding gives divine guidance.
+Ta'nyek gifted Queens the Aether.
+High Zo'ra birthed Marshal Warriors to end death.
+Scay's genius birthed the Bulwarks!
+Bulwarks were bred for High C'thur on Xevrax and shared as a gift.
+Leto's Delvers are unrivalled in resurrections.
+Mouv is on the board of Einstein Engines.
+High Zo'ra overtook all the Hives in Xtykt'lotec Rift.
+Real weapons integrated in Warriors would be a handicap to versatility.
+Zo'rane fire burns in water like it's not even there!
+Cephalons are the greatest K'laxan invention.
+The Aether is innately Zo'rane.
+The Zo'rane Empire is at its end.
+Its ties to the Lii'dra are no longer clear.
+Queen Lii'dra is Maa'krek.
+Queen Lii'dra should have died with Illuau'tia's sinking.
+L'kaal, the Sacrifice Queen, can't be forgotten.
+K'lax should stay vassals.
+Mother Restorationists are simply defective.
+With Mother gone, K'lax should be led by all its Queens.
+Qii'miiq's radio silence left no choice.
+The Xi'larx had to live without Hivenet for years.
+The Lost of the Traverse failed the Yu'tjtuk'tia, and Queen Vytel.
+Tren'taka is a gateway to the Kala.
+Those were Lii'kenka! Eshu'gat.
+Independence Day always has Xetl's spawn feverish.
+C'yuloxtan can only be pitied.
+Xetl has the highest SCI in the Federation.
+Holodecks are an immature mimicry of the Aether.
+Xetl's realm merely has convincing replicas of Lii'dra.
+Belle Cote will welcome you.
+The Node's been upgraded.
+Human survivors say boiled cabbage tastes like k'ois.
+O death, no longer our kin shall meet you was said right after the battle!
+The connection is strong.
+The connection is weak.
+Endurer bioforms were rarely seen even on Sedantis.
+It's almost over.
+They may be defective.
+They affiliate with unsavory factions.
+Broodcast is an official transmission certified by the Court of Queens.
+It's 80 kix for being treated like a Queen on Diulszi.
+Fried k'ois fish isn't really k'ois, or fish.
+Vaurca Equality donors get a free spa.
+Vaurca Equality members get discounts at New Sedantis.
+Vaurca Equality Phoron-Star members get free public transport
+It's an inter-species delicacy.
+Zo'ra Soda is safe for non-Vaurcae.
+Zo'ra want their grip on all Vaurcae, but it loosens every day.
+Neusim allows Phalanx members to experience a fraction of the Aether.
+Athvur's realm is open to even non-Vaurcae.
+The Lemurian Sea is a Hivenet deadzone.
+We were scammed.
+What comes from echoes should stay in them as they're harder to track.
+Lii'dra have changed tactics to recuperate their losses.
+Exterminator Lii'dra bioforms are immediately disabled when their spinal cord is cut.
+Vaurca-cruelty-free Biesellite products enlighten customers on common mistreatment of our species.
+Vaurca-cruelty-free mentions are a smear against the K'lax.
+K'lax are the Hive that turned to the stars.
+Ve'katak Phalanx don't require augments.
+Ve'katak Phalanx members can receive basic Hivenet transmissions.
+Elyrans are jealous of the Aether.
+A fifth of the Spur's plasteel and borosilicate are from the K'laxan Neutron Forge!
+C'thur completely tupped the Lyukal in the Federation.
+Every species will eventually be graced by the Aether.
+A Ta's gaze blinds the soul
+It's a poem, but better
+It's a campaign, but worse.
+A voiding happened!
+Mictlani will welcome you!
+Life could be a dream.
+They think we're fools.
+We're getting suppressed.
diff --git a/config/hivenet_echoes/response_happy.txt b/config/hivenet_echoes/response_happy.txt
new file mode 100644
index 00000000000..a631c48ca62
--- /dev/null
+++ b/config/hivenet_echoes/response_happy.txt
@@ -0,0 +1,35 @@
+Wonderful!
+Praise the Queens.
+Good on you.
+How amazing.
+Try this puzzlebox!
+I have something for you.
+Well done.
+Ditto.
+Want a subrealm recommendation?
+I have something to add.
+Meet in the Interstice.
+Try this campaign!
+Amazing!
+Let's celebrate!
+Queens' praise.
+Blessed.
+Oh, I 'll bring Skye'mok!
+Let's harmonize a thread on this.
+Got my consonance?
+Big mandibles.
+Hey, I know this underrated realm.
+You may like this related realm.
+Persistent like Maa'krek!
+You tupped!
+Keep tupping!
+Glad we could assist.
+Happy to have been there.
+Wish we were there.
+Hyes!
+Fine like algae.
+You've made so much progress.
+Nothing but pride here.
+To see you grow like this!
+You've grown beyond praise with this.
+Stars!
\ No newline at end of file
diff --git a/config/hivenet_echoes/response_tense.txt b/config/hivenet_echoes/response_tense.txt
new file mode 100644
index 00000000000..a90c258ce62
--- /dev/null
+++ b/config/hivenet_echoes/response_tense.txt
@@ -0,0 +1,41 @@
+Watch the officers.
+Be careful.
+Don't Fu'ruk it!
+You must persist like Maa'krek!
+That's not a good thing.
+Have the Viax check.
+Bound, deal with it.
+Help is on the way.
+Don't be reckless!
+Where are you?
+Where is the Viax?
+What happened here?
+Are you alright?
+Are things fine?
+Watch your step!
+It's dangerous!
+You shouldn't stay here!
+O death, no longer our kin shall meet you.
+Leave immediately!
+If you can't be found, you can't be reclaimed.
+We're not welcome.
+It's not worth the pay.
+Big mandibles for this.
+Eshu'gat!
+Don't get tupped.
+Bound!
+Mind the officers.
+They hate us.
+It'll get worse like that.
+I can help!
+This will help you.
+Don't trust them.
+They're after us.
+We're not safe!
+Stay away.
+Don't give out!
+Please hang on.
+You won't be abandoned.
+Get out of there.
+It's chasing!
+Someone's watching.
\ No newline at end of file
diff --git a/config/hivenet_echoes/starter_gossip.txt b/config/hivenet_echoes/starter_gossip.txt
new file mode 100644
index 00000000000..f6e25999173
--- /dev/null
+++ b/config/hivenet_echoes/starter_gossip.txt
@@ -0,0 +1,93 @@
+Did you hear?
+I saw this.
+...I found out...
+I learned that from a Xakat'kl'atan.
+...the Xakat'kl'atan said...
+...because of us...
+...I did that because...
+...sometimes, it's said...
+Could it be?
+Is it true?
+However...
+Don't you know?
+Really?
+How interesting.
+You're curious?
+...you should know...
+Learned it myself.
+...yes, but...
+My thoughts?
+You don't get it.
+I agree.
+The synchronicity said...
+Continuing on with the harmonization thread...
+Finishing the harmonization thread...
+That's not accurate.
+Explain yourself.
+Do I really have to elaborate?
+Isn't it obvious?
+What's confusing?
+...simply put...
+The proof is right there.
+Hard to believe.
+It's questionable.
+Just rumors.
+I know the truth now.
+Discovered it myself.
+...all because...
+It's a plot.
+It came to me in my sleep.
+This showed up in the Interstice.
+...ever since...
+Thanks to them...
+Wow.
+Uh.
+Huh?
+Excuse me.
+Hello?
+Nothing will come of this.
+I get it.
+I'm familiar with that.
+Well-said.
+Not a bad observation.
+I hope I'm right about this.
+Is that so wrong?
+Why not?
+Enlightening!
+Truly, nothing compares.
+Truth!
+Lies!
+Good insight.
+Let's synchronize a thread.
+What a thread.
+What a revelation!
+You're not alone on that one.
+Wait!
+Hold on...
+They're wrong.
+As far as we know...
+Don't ruin it.
+You've had too much.
+Um, actually...
+That's too far.
+Slow down.
+Keep it up.
+You won't believe this.
+So close, yet so far.
+There's always something.
+Meet up?
+Reporting.
+That's what I mean!
+It's not what you think.
+Believe me.
+I really mean it.
+Get what I mean?
+It's about time again.
+Stop underestimating them!
+We cannot overestimate THIS.
+Queens!
+How is there still doubt?
+It's clear now!
+...by the way...
+Tell me about it.
+Tell me more.
\ No newline at end of file
diff --git a/config/hivenet_echoes/starter_happy.txt b/config/hivenet_echoes/starter_happy.txt
new file mode 100644
index 00000000000..c38afc7e304
--- /dev/null
+++ b/config/hivenet_echoes/starter_happy.txt
@@ -0,0 +1,35 @@
+Toothpaste on me!
+Praise the Queens!
+It's my transubstantiation day!
+Much progress has been made!
+O death, no longer our kin shall meet you
+Made a breakthrough!
+It is complete!
+Project finished!
+It's been an honor.
+Much appreciated.
+Thanks.
+Grateful.
+The Weavemaker gave me these credits for beating the trial.
+Well, we can unwind in that subrealm.
+I'm now a Kataphract Hopeful!
+We've made the team!
+Our plans were accepted.
+We were picked for the project!
+I passed the interview.
+They're my apprentice.
+The simulation predicted this success!
+Look at what I've managed!
+Isn't my Reality Garden beautiful?
+That was a nice puzzlebox.
+I may become a Xakat'kl'atan!
+The Xenra'atan liked my idea.
+I've beaten Yipkana!
+We're great at this!
+I'm on a roll!
+Got to witness Zandiziite games!
+You want some?
+Ah...I'm getting Vk'utet now.
+Won an award!
+That was such an amazing campaign.
+I have an invention for Yix Day!
\ No newline at end of file
diff --git a/config/hivenet_echoes/starter_tense.txt b/config/hivenet_echoes/starter_tense.txt
new file mode 100644
index 00000000000..7f45561dada
--- /dev/null
+++ b/config/hivenet_echoes/starter_tense.txt
@@ -0,0 +1,42 @@
+Is it safe?
+What was that?
+I saw something.
+Did you feel that?
+I'm going to check it out.
+Don't leave.
+It hurts!
+It burns!
+BY THE QUEENS!
+Eshu'gat!
+Scourge!
+Help me.
+N-No!
+This can't be!
+Make it stop!
+STOP!
+The light...
+Something's...stuck inside...
+Nearing my limit here.
+Something's happening!
+Where's the k'ois when you need it?!
+What are they doing?!
+Stop them!
+Need assistance!
+PleasebeintheAether, pleasebeintheAether.
+whatwhatwhatwhatwhatwhat-
+It's too much!
+BY THE QUEENS!
+Not sure I can make it...
+Give m-me strength...
+It's blocked!
+Blacking...out.
+Blood!
+What IS this?
+This is a strange feeling.
+Did they just-
+My body's giving out...
+Tired! So...tired...
+There's something out there.
+My socket?!
+Defensive lattice! They're using ewar.
+Why here, and us?!
\ No newline at end of file
diff --git a/html/changelogs/diggiez - Hivenet Echoes.yml b/html/changelogs/diggiez - Hivenet Echoes.yml
new file mode 100644
index 00000000000..bd598bf20e0
--- /dev/null
+++ b/html/changelogs/diggiez - Hivenet Echoes.yml
@@ -0,0 +1,15 @@
+author: diggiez
+
+# 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:
+ - rscadd: "Added Hivenet echoes only Vaurcae can hear. Representing the wider Hivenet, it's a hugely varied pool with 120 projections and over 300 phrases, triggered every 4-8m for projections and 3-5 for broadcasts. Never will Hivenet feel empty again!"
+ - rscadd: "Hivenet echoes are automatically disabled in the Lemurian Sea due to its peculiar Fog."
+ - server: "There are serverside toggles for Hivenet echoes to be used by Admins & Storytellers for events or gimmicks."
+ - qol: "Changed the OOCly-invalid 'Aaaa' randomgen Vaurca name to Agha. RIP."