diff --git a/code/datums/supplypacks/recreation_vr.dm b/code/datums/supplypacks/recreation_vr.dm
index 8f0d775797..cf12b4815b 100644
--- a/code/datums/supplypacks/recreation_vr.dm
+++ b/code/datums/supplypacks/recreation_vr.dm
@@ -18,7 +18,7 @@
/obj/item/stack/cable_coil/random,
/obj/item/clothing/accessory/collar/shock,
/obj/item/clothing/suit/straight_jacket,
- /obj/item/weapon/handcuffs/legcuffs,
+ /obj/item/weapon/handcuffs/legcuffs/fuzzy,
/obj/item/weapon/melee/fluff/holochain/mass,
/obj/item/weapon/material/twohanded/fluff/riding_crop,
/obj/item/clothing/under/fluff/latexmaid
diff --git a/code/game/objects/items/weapons/handcuffs_vr.dm b/code/game/objects/items/weapons/handcuffs_vr.dm
new file mode 100644
index 0000000000..ecafc8b6c3
--- /dev/null
+++ b/code/game/objects/items/weapons/handcuffs_vr.dm
@@ -0,0 +1,5 @@
+/obj/item/weapon/handcuffs/legcuffs/fuzzy
+ name = "fuzzy legcuffs"
+ desc = "Use this to keep... 'prisoners' in line."
+ icon = 'icons/obj/items_vr.dmi'
+ icon_state = "fuzzylegcuff"
\ No newline at end of file
diff --git a/code/game/objects/random/random.dm b/code/game/objects/random/random.dm
index c83e96ad04..19a83c8e40 100644
--- a/code/game/objects/random/random.dm
+++ b/code/game/objects/random/random.dm
@@ -274,7 +274,7 @@
prob(1);/obj/item/clothing/suit/storage/vest/heavy/merc,
prob(1);/obj/item/weapon/beartrap,
prob(1);/obj/item/weapon/handcuffs/fuzzy,
- prob(1);/obj/item/weapon/handcuffs/legcuffs,
+ prob(1);/obj/item/weapon/handcuffs/legcuffs/fuzzy,
prob(2);/obj/item/weapon/reagent_containers/syringe/drugs,
prob(1);/obj/item/weapon/reagent_containers/syringe/steroid,
prob(4);/obj/item/device/radio_jammer,
diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm
index 9b3d866d2b..eddffe55ea 100644
--- a/code/game/objects/structures/bedsheet_bin.dm
+++ b/code/game/objects/structures/bedsheet_bin.dm
@@ -32,7 +32,7 @@ LINEN BINS
if(do_after(user, 50))
user << "You cut [src] into pieces!"
for(var/i in 1 to rand(2,5))
- new /obj/item/weapon/reagent_containers/glass/rag(src.loc)
+ new /obj/item/weapon/reagent_containers/glass/rag(drop_location())
qdel(src)
return
..()
diff --git a/code/modules/busy_space/organizations_vr.dm b/code/modules/busy_space_vr/organizations.dm
similarity index 52%
rename from code/modules/busy_space/organizations_vr.dm
rename to code/modules/busy_space_vr/organizations.dm
index 2e700b6497..731ef73b22 100644
--- a/code/modules/busy_space/organizations_vr.dm
+++ b/code/modules/busy_space_vr/organizations.dm
@@ -1,6 +1,406 @@
//Datums for different companies that can be used by busy_space, VR edition
+
+// Some of these intentionally copy from busy_space/organizations.dm, which is disabled in our server.
//////////////////////////////////////////////////////////////////////////////////
+//Datums for different companies that can be used by busy_space
+/datum/lore/organization
+ var/name = "" // Organization's name
+ var/short_name = "" // Organization's shortname (NanoTrasen for "NanoTrasen Incorporated")
+ var/acronym = "" // Organization's acronym, e.g. 'NT' for NanoTrasen'.
+ var/desc = "" // One or two paragraph description of the organization, but only current stuff. Currently unused.
+ var/history = "" // Historical discription of the organization's origins Currently unused.
+ var/work = "" // Short description of their work, eg "an arms manufacturer"
+ var/headquarters = "" // Location of the organization's HQ. Currently unused.
+ var/motto = "" // A motto/jingle/whatever, if they have one. Currently unused.
+
+ var/list/ship_prefixes = list() //Some might have more than one! Like NanoTrasen. Value is the mission they perform, e.g. ("ABC" = "mission desc")
+ var/list/ship_names = list( //Names of spaceships. This is a mostly generic list that all the other organizations inherit from if they don't have anything better.
+ "Kestrel",
+ "Beacon",
+ "Signal",
+ "Freedom",
+ "Glory",
+ "Axiom",
+ "Eternal",
+ "Harmony",
+ "Light",
+ "Discovery",
+ "Endeavour",
+ "Explorer",
+ "Swift",
+ "Dragonfly",
+ "Ascendant",
+ "Tenacious",
+ "Pioneer",
+ "Hawk",
+ "Haste",
+ "Radiant",
+ "Luminous"
+ )
+ var/list/destination_names = list() //Names of static holdings that the organization's ships visit regularly.
+ var/autogenerate_destination_names = TRUE
+
+/datum/lore/organization/New()
+ ..()
+ if(autogenerate_destination_names) // Lets pad out the destination names.
+ var/i = rand(6, 10)
+ var/list/star_names = list(
+ "Sol", "Alpha Centauri", "Sirius", "Vega", "Regulus", "Vir", "Algol", "Aldebaran", "Vilous", "Sanctum", "Qerr'Vallis", "Kataigal", "Antares",
+ "Delta Doradus", "Menkar", "Geminga", "Elnath", "Gienah", "Mu Leporis", "Nyx", "Tau Ceti", "Virgo-Erigone", "Uueoa-Esa", "Vazzend", "Kastra-71",
+ "Wazn", "Alphard", "Phact", "Altair", "El", "Eutopia", "Qerr'valis", "Qerrna-Lakirr", "Rarkajar", "the Almach Rim")
+ var/list/destination_types = list("dockyard", "station", "vessel", "waystation", "telecommunications satellite", "spaceport", "distress beacon", "anomaly", "colony", "outpost")
+ while(i)
+ destination_names.Add("a [pick(destination_types)] in [pick(star_names)]")
+ i--
+
+//////////////////////////////////////////////////////////////////////////////////
+
+// TSCs
+/datum/lore/organization/tsc/nanotrasen
+ name = "NanoTrasen Incorporated"
+ short_name = "NanoTrasen"
+ acronym = "NT"
+ desc = "NanoTrasen is one of the foremost research and development companies in SolGov space. \
+ Originally focused on consumer products, their swift move into the field of Phoron has lead to \
+ them being the foremost experts on the substance and its uses. In the modern day, NanoTrasen prides \
+ itself on being an early adopter to as many new technologies as possible, often offering the newest \
+ products to their employees. In an effort to combat complaints about being 'guinea pigs', Nanotrasen \
+ also offers one of the most comprehensive medical plans in SolGov space, up to and including cloning \
+ and therapy.\
+
\
+ NT's most well known products are its phoron based creations, especially those used in Cryotherapy. \
+ It also boasts an prosthetic line, which is provided to its employees as needed, and is used as an incentive \
+ for newly tested posibrains to remain with the company."
+ history = "" // To be written someday.
+ work = "research giant"
+ headquarters = "Luna"
+ motto = ""
+
+ ship_prefixes = list("NSV" = "exploration", "NTV" = "hauling", "NDV" = "patrol", "NRV" = "emergency response")
+ //Scientist or Greek mythology naming scheme
+ ship_names = list(
+ "Bardeen",
+ "Einstein",
+ "Feynman",
+ "Sagan",
+ "Tyson",
+ "Galilei",
+ "Jans",
+ "Fhriede",
+ "Franklin",
+ "Tesla",
+ "Curie",
+ "Darwin",
+ "Newton",
+ "Pasteur",
+ "Bell",
+ "Mendel",
+ "Kepler",
+ "Edision",
+ "Cavendish",
+ "Nye",
+ "Hawking",
+ "Aristotle",
+ "Von Braun",
+ "Kaku",
+ "Oppenheimer"
+ )
+ // Note that the current station being used will be pruned from this list upon being instantiated
+ destination_names = list(
+ "NSS Exodus in Nyx",
+ "NCS Northern Star in Vir",
+ "NAB Smythside Central Headquarters in Sol",
+ "NAS Zeus orbiting Virgo-Prime",
+ "NIB Posideon in Alpha Centauri",
+ "NTB An-Nur on Virgo-Prime",
+ "the colony at Virgo-3B",
+ "the NanoTrasen phoron refinery in Vilous",
+ "a dockyard orbiting Virgo-Prime",
+ "an asteroid orbiting Virgo 3",
+ )
+
+/datum/lore/organization/tsc/nanotrasen/New()
+ ..()
+ spawn(1) // BYOND shenanigans means using_map is not initialized yet. Wait a tick.
+ // Get rid of the current map from the list, so ships flying in don't say they're coming to the current map.
+ var/string_to_test = "[using_map.station_name] in [using_map.starsys_name]"
+ if(string_to_test in destination_names)
+ destination_names.Remove(string_to_test)
+
+
+
+/datum/lore/organization/tsc/hephaestus
+ name = "Hephaestus Industries"
+ short_name = "Hephaestus"
+ acronym = "HI"
+ desc = "Hephaestus Industries is the largest supplier of arms, ammunition, and small millitary vehicles in Sol space. \
+ Hephaestus products have a reputation for reliability, and the corporation itself has a noted tendency to stay removed \
+ from corporate politics. They enforce their neutrality with the help of a fairly large asset-protection contingent which \
+ prevents any contracting polities from using their own materiel against them. SolGov itself is one of Hephastus’ largest \
+ bulk contractors owing to the above factors."
+ history = ""
+ work = "arms manufacturer"
+ headquarters = ""
+ motto = ""
+
+ ship_prefixes = list("HTV" = "freight", "HTV" = "munitions resupply")
+ //War God/Soldier Theme
+ ship_names = list(
+ "Ares",
+ "Athena",
+ "Grant",
+ "Custer",
+ "Puller",
+ "Nike",
+ "Bellona",
+ "Leonides",
+ "Bast",
+ "Jackson",
+ "Lee",
+ "Annan",
+ "Chi Yu",
+ "Shiva",
+ "Tyr"
+ )
+ destination_names = list(
+ "a SolGov dockyard on Luna",
+ "a Fleet outpost in the Almach Rim",
+ "a Fleet outpost on the Moghes border"
+ )
+
+/datum/lore/organization/tsc/vey_med
+ name = "Vey-Medical"
+ short_name = "Vey-Med"
+ acronym = "VM"
+ desc = "Vey-Med is one of the newer TSCs on the block and is notable for being largely owned and opperated by Skrell. \
+ Despite the suspicion and prejudice leveled at them for their alien origin, Vey-Med has obtained market dominance in \
+ the sale of medical equipment-- from surgical tools to large medical devices to the Oddyseus trauma response mecha \
+ and everything in between. Their equipment tends to be top-of-the-line, most obviously shown by their incredibly \
+ human-like FBP designs. Vey’s rise to stardom came from their introduction of ressurective cloning, although in \
+ recent years they’ve been forced to diversify as their patents expired and NanoTrasen-made medications became \
+ essential to modern cloning."
+ history = ""
+ work = "medical equipment supplier"
+ headquarters = ""
+ motto = ""
+
+ ship_prefixes = list("VTV" = "transportation", "VMV" = "medical resupply")
+ // Diona names
+ ship_names = list(
+ "Wind That Stirs The Waves",
+ "Sustained Note Of Metal",
+ "Bright Flash Reflecting Off Glass",
+ "Veil Of Mist Concealing The Rock",
+ "Thin Threads Intertwined",
+ "Clouds Drifting Amid Storm",
+ "Loud Note And Breaking",
+ "Endless Vistas Expanding Before The Void",
+ "Fire Blown Out By Wind",
+ "Star That Fades From View",
+ "Eyes Which Turn Inwards",
+ "Joy Without Which The World Would Come Undone",
+ "A Thousand Thousand Planets Dangling From Branches"
+ )
+ destination_names = list(
+ "a research facility in Samsara",
+ "a SDTF near Ue-Orsi",
+ "a sapientarian mission in the Almach Rim"
+ )
+
+/datum/lore/organization/tsc/zeng_hu
+ name = "Zeng-Hu pharmaceuticals"
+ short_name = "Zeng-Hu"
+ acronym = "ZH"
+ desc = "Zeng-Hu is an old TSC, based in the Sol system. Until the discovery of Phoron, Zeng-Hu maintained a stranglehold \
+ on the market for medications, and many household names are patentted by Zeng-Hu-- Bicaridyne, Dylovene, Tricordrizine, \
+ and Dexalin all came from a Zeng-Hu medical laboratory. Zeng-Hu’s fortunes have been in decline as Nanotrasen’s near monopoly \
+ on phoron research cuts into their R&D and Vey-Med’s superior medical equipment effectively decimated their own equipment \
+ interests. The three-way rivalry between these companies for dominance in the medical field is well-known and a matter of \
+ constant economic speculation."
+ history = ""
+ work = "pharmaceuticals company"
+ headquarters = ""
+ motto = ""
+
+ ship_prefixes = list("ZTV" = "transportation", "ZMV" = "medical resupply")
+ destination_names = list()
+
+/datum/lore/organization/tsc/ward_takahashi
+ name = "Ward-Takahashi General Manufacturing Conglomerate"
+ short_name = "Ward-Takahashi"
+ acronym = "WT"
+ desc = "Ward-Takahashi focuses on the sale of small consumer electronics, with its computers, communicators, \
+ and even mid-class automobiles a fixture of many households. Less famously, Ward-Takahashi also supplies most \
+ of the AI cores on which vital control systems are mounted, and it is this branch of their industry that has \
+ led to their tertiary interest in the development and sale of high-grade AI systems. Ward-Takahashi’s economies \
+ of scale frequently steal market share from Nanotrasen’s high-price products, leading to a bitter rivalry in the \
+ consumer electronics market."
+ history = ""
+ work = "electronics manufacturer"
+ headquarters = ""
+ motto = ""
+
+ ship_prefixes = list("WTV" = "freight")
+ ship_names = list(
+ "Comet",
+ "Aurora",
+ "Supernova",
+ "Nebula",
+ "Galaxy",
+ "Starburst",
+ "Constellation",
+ "Pulsar",
+ "Quark",
+ "Void",
+ "Asteroid"
+ )
+ destination_names = list()
+
+/datum/lore/organization/tsc/bishop
+ name = "Bishop Cybernetics"
+ short_name = "Bishop"
+ acronym = "BC"
+ desc = "Bishop’s focus is on high-class, stylish cybernetics. A favorite among transhumanists (and a bête noire for \
+ bioconservatives), Bishop manufactures not only prostheses but also brain augmentation, synthetic organ replacements, \
+ and odds and ends like implanted wrist-watches. Their business model tends towards smaller, boutique operations, giving \
+ it a reputation for high price and luxury, with Bishop cyberware often rivalling Vey-Med’s for cost. Bishop’s reputation \
+ for catering towards the interests of human augmentation enthusiasts instead of positronics have earned it ire from the \
+ Positronic Rights Group and puts it in ideological (but not economic) comptetition with Morpheus Cyberkinetics."
+ history = ""
+ work = "cybernetics and augmentation manufacturer"
+ headquarters = ""
+ motto = ""
+
+ ship_prefixes = list("BTV" = "transportation")
+ destination_names = list()
+
+/datum/lore/organization/tsc/morpheus
+ name = "Morpheus Cyberkinetics"
+ short_name = "Morpheus"
+ acronym = "MC"
+ desc = "The only large corporation run by positronic intelligences, Morpheus caters almost exclusively to their sensibilities \
+ and needs. A product of the synthetic colony of Shelf, Morpheus eschews traditional advertising to keep their prices low and \
+ relied on word of mouth among positronics to reach their current economic dominance. Morpheus in exchange lobbies heavily for \
+ positronic rights, sponsors positronics through their Jans-Fhriede test, and tends to other positronic concerns to earn them \
+ the good-will of the positronics, and the ire of those who wish to exploit them."
+ history = ""
+ work = "cybernetics manufacturer"
+ headquarters = ""
+ motto = ""
+
+ ship_prefixes = list("MTV" = "freight")
+ // Culture names, because Anewbe told me so.
+ ship_names = list(
+ "Nervous Energy",
+ "Prosthetic Conscience",
+ "Revisionist",
+ "Trade Surplus",
+ "Flexible Demeanour",
+ "Just Read The Instructions",
+ "Limiting Factor",
+ "Cargo Cult",
+ "Gunboat Diplomat",
+ "A Ship With A View",
+ "Cantankerous",
+ "I Thought He Was With You",
+ "Never Talk To Strangers",
+ "Sacrificial Victim",
+ "Unwitting Accomplice",
+ "Witting Accomplice",
+ "Bad For Business",
+ "Just Testing",
+ "Size Isn't Everything",
+ "Yawning Angel",
+ "Liveware Problem",
+ "Very Little Gravitas Indeed",
+ "Zero Gravitas",
+ "Gravitas Free Zone",
+ "Absolutely No You-Know-What",
+ "Existence Is Pain",
+ "I'm Walking Here",
+ "Screw Loose",
+ "Of Course I Still Love You",
+ "Limiting Factor",
+ "So Much For Subtley",
+ "Unfortunate Conflict Of Evidence",
+ "Prime Mover",
+ "It's One Of Ours",
+ "Thank You And Goodnight",
+ "Boo!",
+ "Reasonable Excuse",
+ "Honest Mistake",
+ "Appeal To Reason",
+ "My First Ship II",
+ "Hidden Income",
+ "Anything Legal Considered",
+ "New Toy",
+ "Me, I'm Always Counting",
+ "Just Five More Minutes",
+ "Are You Feeling It",
+ "Great White Snark",
+ "No Shirt No Shoes",
+ "Callsign",
+ "Three Ships in a Trenchcoat",
+ "Not Wearing Pants",
+ "Ridiculous Naming Convention",
+ "God Dammit Morpheus",
+ "It Seemed Like a Good Idea",
+ "Legs All the Way Up",
+ "Purchase Necessary",
+ "Some Assembly Required",
+ "Buy One Get None Free",
+ "BRB",
+ "SHIP NAME HERE",
+ "Questionable Ethics",
+ "Accept Most Substitutes",
+ "I Blame the Government",
+ "Garbled Gibberish",
+ "Thinking Emoji",
+ "Is This Thing On?",
+ "Make My Day",
+ "No Vox Here",
+ "Savings and Values",
+ "Secret Name",
+ "Can't Find My Keys",
+ "Look Over There!",
+ "Made You Look!",
+ "Take Nothing Seriously",
+ "It Comes In Lime, Too",
+ "Loot Me",
+ "Nothing To Declare",
+ "Sneaking Suspicion",
+ "Bass Ackwards",
+ "Good Things Come to Those Who Freight",
+ "Redundant Morality",
+ "Synthetic Goodwill",
+ "Your Ad Here",
+ "What Are We Plotting?",
+ "Set Phasers To Stun",
+ "Preemptive Defensive Strike",
+ "This Ship Is Spiders",
+ "Legitimate Trade Vessel",
+ "Please Don't Explode II"
+ )
+ destination_names = list(
+ "a trade outpost in Shelf"
+ )
+
+/datum/lore/organization/tsc/xion
+ name = "Xion Manufacturing Group"
+ short_name = "Xion"
+ desc = "Xion, quietly, controls most of the market for industrial equipment. Their portfolio includes mining exosuits, \
+ factory equipment, rugged positronic chassis, and other pieces of equipment vital to the function of the economy. Xion \
+ keeps its control of the market by leasing, not selling, their equipment, and through infamous and bloody patent protection \
+ lawsuits. Xion are noted to be a favorite contractor for SolGov engineers, owing to their low cost and rugged design."
+ history = ""
+ work = "industrial equipment manufacturer"
+ headquarters = ""
+ motto = ""
+
+ ship_prefixes = list("XTV" = "hauling")
+ destination_names = list()
+
/datum/lore/organization/gov/solgov
name = "Solar Central Government"
short_name = "SolGov"
@@ -26,26 +426,30 @@
ship_prefixes = list("SCG-T" = "transportation", "SCG-D" = "diplomatic", "SCG-F" = "freight")
destination_names = list(
+ "Mercury",
"Venus",
"Earth",
"Luna",
"Mars",
- "Titan"
+ "Titan",
+ "Europa",
+ "the SolGov embassy in Virgo-Erigone",
+ "the SolGov embassy in Vilous"
)// autogen will add a lot of other places as well.
/datum/lore/organization/gov/sifgov // Overrides Polaris stuff
name = "Virgo-Erigone Governmental Authority"
short_name = ""
- desc = "Existing far outside the reach of SolGov space, the only governing body of the Virgo-Erigone system is the Virgo Prime Governmental \
+ desc = "Existing far outside the reach of SolGov space, the only governing body of the Virgo-Erigone system is the Virgo-Prime Governmental \
Authority, also known as VEGA. It is a Technocracy founded and operated by NanoTrasen, using company appointed experts hired to see \
to the comfort and well being of Virgo's citizens; most of whom are also NanoTrasen employees. VEGA provides basic social services \
such as law enforcement, emergency services, medical care, education, and infrastructure. VEGA's operations are based on the world \
- of Virgo Prime, within the spaceport city of Anur. Although the government is an entity of NanoTrasen, some elements of democracy \
+ of Virgo-Prime, within the spaceport city of Anur. Although the government is an entity of NanoTrasen, some elements of democracy \
are still practiced, such as voting on changes to local law, policy, or public works."
history = "VEGA was founded in 2556, shortly after the Virgo-Erigone system was colonized by a population of 1000. That population has \
multiplied many times since then as wealth and commerce come and go from this frontier star system."
work = "governing body of Virgo-Erigone"
- headquarters = "Anur, Virgo Prime"
+ headquarters = "Anur, Virgo-Prime"
motto = "Reach for the Stars."
autogenerate_destination_names = FALSE
@@ -53,13 +457,19 @@
destination_names = list(
"the colony at Virgo-3B",
"the VORE-1 debris field",
- "a colony on Virgo-2",
- "a telecommunications satellite",
+ "a mining colony on Virgo-2",
"the Anur Spaceport",
- "to a local distress beacon"
+ "to a local distress beacon",
+ "NAS Zeus orbiting Virgo-Prime",
+ "NTB An-Nur on Virgo-Prime",
+ "the colony at Virgo-3B",
+ "a dockyard orbiting Virgo-Prime",
+ "an asteroid orbiting Virgo 3",
+ "a telecommunications satellite near Virgo-3B",
+ "a telecommunications satellite near Virgo-Prime"
)
-/*
+/* // Waiting for lore to be updated.
/datum/lore/organization/gov/federation
name = "United Federation of Planets"
short_name = "Federation"
@@ -127,11 +537,11 @@
"Naro Industrial Complex on Scheddi III",
"Mari Industrial Complex on Furlou Prime",
"Runni Crystal Mines of Keid V")
-*/ // ToDo: ReDo.
+*/
-/datum/lore/organization/mil/USDF // change to sif_guard in future to overwrite Polaris stuff
+/datum/lore/organization/mil/usdf
name = "United Sol Defense Force"
- short_name = "" // This is blank on purpose. Otherwise they call the ships "USDF" "USDF Name"
+ short_name = "" // This is blank on purpose. Otherwise they call the ships "USDF USDF Name"
desc = "The USDF is the dedicated military force of SolGov, originally formed by the United Nations. It is the \
dominant superpower of the Orion Spur, and is able to project its influence well into parts of the Perseus and \
Sagittarius arms of the galaxy. However, regions beyond that are too far for the USDF to be a major player."
@@ -153,8 +563,8 @@
against other major military powers such as the Moghes Hegemony."
work = "peacekeeping and piracy suppression"
headquarters = "Paris, Earth"
- motto = "Per Mare, Per Terras, Per Constellatum." // Stolen from Halo because fuck you that's why.
- ship_prefixes = list("USDF" = "military", "USDF" = "anti-piracy", "USDF" = "escort", "USDF" = "humanitarian", "USDF" = "peacekeeping", "USDF" = "search-and-rescue") // It's all USDF but let's mix up what they do.
+ motto = "Per Mare, Per Terras, Per Constellatum." // Stolen from Halo because fuck you that's why. -Ace
+ ship_prefixes = list("USDF" = "military", "USDF" = "anti-piracy", "USDF" = "escort", "USDF" = "humanitarian", "USDF" = "peacekeeping", "USDF" = "search-and-rescue", "USDF" = "war game") // It's all USDF but let's mix up what missions they do.
ship_names = list("Aegis Fate",
"Ain't No Sunshine",
"All Under Heaven",
@@ -186,10 +596,10 @@
"Hoenir",
"In Amber Clad",
"Iwo Jima",
+ "Jolly Roger",
"Jormungandr",
"Leonidas",
"Meriwether Lewis",
- "Midsummer Night",
"Mona Lisa",
"Olympus",
"Paris",
@@ -199,6 +609,7 @@
"Purpose",
"Ready or Not",
"Redoubtable",
+ "Rising Sun",
"Saratoga",
"Savannah",
"Shanxi",
@@ -211,7 +622,6 @@
"Tripping Light",
"Two for Flinching")
destination_names = list("San Francisco on Earth",
- "SolGov Fleet Academy on Earth",
"Gateway One above Luna",
"SolGov Headquarters on Earth",
"Olympus City on Mars",
@@ -221,13 +631,51 @@
"a settlement on Titan",
"a settlement on Europa",
"Aleph Grande on Ganymede",
- "a new colony in Proxima II",
- "a new settlement on Ceti IV-B",
+ "a colony in Proxima II",
+ "a settlement on Ceti IV-B",
"a colony ship around Ceti IV-B",
"a naval station above Ceti IV-B",
"a classified location in SolGov territory",
"a classified location in uncharted space",
- "an emergency nav bouy")
+ "an emergency nav bouy",
+ "the USDF Naval Academy on Earth",
+ "Fort Rain on Tal")
+
+/datum/lore/organization/mil/oni
+ name = "SolGov Office of Naval Intelligence"
+ short_name = "" // This is blank on purpose. Otherwise they call the ships "ONI ONI Name"
+ desc = "The Office of Naval Intelligence is SolGov's eyes and ears in the galaxy's affairs. Despite its name, and despite its \
+ usual association with the USDF, the Office of Naval Intelligence does not fall under the command of the military. From espionage \
+ to archeological research, ONI's work provides SolGov with the knowledge and technology it requires to advance both military and \
+ civilian interests across the galaxy."
+ history = "ONI was originally created by the consolidation of several military intelligence agencies from Sol during the Sol-Hegemony war. \
+ The USDF's victory in that war was largely accredited to intelligence and technology advancements provided by ONI during that time, \
+ most notably of which was the reverse-engineering of Unathi vessels, allowing the production of countermeasures that played a crucial \
+ role during in the late stages of the conflict. After the war, ONI's resources were pooled into numerous top secret projects; much of \
+ which remains unknown or outright denied to the public even today. Among their suspected activities include exploration, weapons \
+ development, xenoarcheology, xenobiology, corporate espionage, and manipulation of political affairs."
+ work = "espionage, piracy suppression, xeno research, and various other black projects"
+ headquarters = "Paris, Earth"
+ motto = "The truth will set you free."
+ ship_prefixes = list("ONI" = "classified", "ONI" = "archeological", "ONI" = "exploration", "ONI" = "logistic") // It's all ONI but let's mix up what missions they do.
+ ship_names = list("Bastille",
+ "Fantôme",
+ "Harpocrates",
+ "Hoenir",
+ "Mata Hari",
+ "Midsummer Night",
+ "Mirage",
+ "Persephone", // Director Ixchel Kisoda's personal research ship
+ "Versailles")
+ destination_names = list("parts unknown",
+ "none of your business",
+ "uncharted space",
+ "an undisclosed location",
+ "facility 8492",
+ "you don't want to know",
+ "if told you I'd have to kill you",
+ "... wait, why am I even telling you this? Just let me pass",
+ "stop asking questions")
/datum/lore/organization/gov/kitsuhana
name = "Kitsuhana Heavy Industries"
diff --git a/code/modules/lore_codex/codex.dm b/code/modules/lore_codex/codex.dm
index 42987628ae..7c5f071874 100644
--- a/code/modules/lore_codex/codex.dm
+++ b/code/modules/lore_codex/codex.dm
@@ -1,12 +1,12 @@
// Inherits from /book/ so it can fit on bookshelves.
-/obj/item/weapon/book/codex
- name = "The Traveler's Guide to Human Space: Virgo-Erigone Edition" //VOREStation Edit - Book Name
- desc = "Contains useful information about the world around you. It seems to have been written for travelers to Virgo-Erigone, human or not. It also \
- has the words 'Don't Panic' in small, friendly letters on the cover." //VOREStation Edit - System Name
+/obj/item/weapon/book/codex // Vorestation Edits throughout this object.
+ name = "The Traveler's Guide to Human Space: Virgo-Erigone Edition"
+ desc = "Contains useful information about the world around you. It seems to have been written for travelers to Virgo-Erigone, human or not. It also \
+ has the words 'Don't Panic' in small, friendly letters on the cover."
icon_state = "codex"
unique = TRUE
var/datum/codex_tree/tree = null
- var/root_type = /datum/lore/codex/category/main_vir_lore //Runtimes on codex_tree.dm, line 18 with a null here
+ var/root_type = /datum/lore/codex/category/main_virgo_lore //Runtimes on codex_tree.dm, line 18 with a null here
/obj/item/weapon/book/codex/initialize()
tree = new(src, root_type)
@@ -18,12 +18,12 @@
icon_state = "[initial(icon_state)]-open"
tree.display(user)
-/obj/item/weapon/book/codex/lore/vir
- name = "The Traveler's Guide to Human Space: Vir Edition"
- desc = "Contains useful information about the world around you. It seems to have been written for travelers to Vir, human or not. It also \
+/obj/item/weapon/book/codex/lore/vir // Vorestation Edits throughout this object.
+ name = "The Traveler's Guide to Human Space: Virgo-Erigone Edition"
+ desc = "Contains useful information about the world around you. It seems to have been written for travelers to Virgo-Erigone, human or not. It also \
has the words 'Don't Panic' in small, friendly letters on the cover."
icon_state = "codex"
- root_type = /datum/lore/codex/category/main_vir_lore
+ root_type = /datum/lore/codex/category/main_virgo_lore
/obj/item/weapon/book/codex/lore/news
name = "Daedalus Pocket Newscaster"
diff --git a/code/modules/lore_codex/lore_data_vr/important_locations.dm b/code/modules/lore_codex/lore_data_vr/important_locations.dm
index e2bb96ef50..ae87092212 100644
--- a/code/modules/lore_codex/lore_data_vr/important_locations.dm
+++ b/code/modules/lore_codex/lore_data_vr/important_locations.dm
@@ -28,10 +28,10 @@
/datum/lore/codex/page/radiance_energy_chain/add_content()
name = "R.E.C. (Artificial Satellites)"
- keywords += list("Radiance Energy Chain")
+ keywords += list("Radiance Energy Chain", "R.E.C.")
data = "A sparse government-owned chain of automated stations exists between [quick_link("Virgo 3")] and the star itself, known as the Radiance Energy Chain. The idea is based on \
an ancient design that was pioneered at Sol. The stations are heavily shielded from the stellar radiation, and feature massive \
- arrays of photo-voltaic panels. Each station harvests energy from Vir using the solar panels, and sends it to other areas of \
+ arrays of photo-voltaic panels. Each station harvests energy from Virgo-Erigone using the solar panels, and sends it to other areas of \
the system by beaming the energy to several relay stations farther away from the star, typically with a large laser.\
\
These stations are generally devoid of life, instead, they are operated mainly by [quick_link("drones")], with maintenance performed \
@@ -86,9 +86,9 @@
Currently, [quick_link("NanoTrasen")] is constructing a 'space elevator' for commercial purposes, as the atmosphere of Virgo-3B is inimical to shuttles, and engines in particular."
/datum/lore/codex/page/virgo_prime/add_content() // Virgo 4 technically.
- name = "Virgo Prime (Terrestrial Planet)"
- keywords += list("Virgo Prime")
- data = "Virgo Prime is the fourth planet of Virgo-Eirgone. Although primarily desert, temperatures linger around only 287 kelvin (~14°C). \
+ name = "Virgo 4 / Virgo-Prime (Terrestrial Planet)"
+ keywords += list("Virgo 4","Virgo-Prime")
+ data = "Virgo 4, also known as Virgo-Prime, is the fourth planet of Virgo-Eirgone. Although primarily desert, temperatures linger around only 287 kelvin (~14°C). \
It is the only planet in the system with an environment that supports oxygen-breathing lifeforms. \
\
While being about the size of Earth, it is home to only about 750,000 known residents, most of whom live \
diff --git a/code/modules/lore_codex/lore_data_vr/main.dm b/code/modules/lore_codex/lore_data_vr/main.dm
new file mode 100644
index 0000000000..a5ee6c8252
--- /dev/null
+++ b/code/modules/lore_codex/lore_data_vr/main.dm
@@ -0,0 +1,32 @@
+/datum/lore/codex/category/main_virgo_lore // The top-level categories for the Virgo book
+ name = "Index"
+ data = "Don't panic!\
+
\
+ The many star systems inhabitied by humanity and friends can seem bewildering to the uninitiated. \
+ This guide seeks to provide valuable information to anyone new in the system. This edition is tailored for visitors to the Virgo-Erigone system, \
+ however it also contains useful general information about human space, such as locations you may hear about, the current (as of 2562) political climate, various aliens you \
+ may meet in your travels, the big Trans-Stellars, and more."
+ children = list(
+ /datum/lore/codex/category/important_locations,
+ /datum/lore/codex/category/species,
+ /datum/lore/codex/category/auto_org/tsc,
+ /datum/lore/codex/category/auto_org/gov,
+ /datum/lore/codex/category/auto_org/mil,
+ /datum/lore/codex/category/political_factions,
+ /datum/lore/codex/page/about_lore
+ )
+
+// We're a bird.
+/datum/lore/codex/page/about_lore
+ name = "About"
+ data = "The Traveler's Guide to Human Space is a series of books detailing a specific location inside a location colonized by humans. \
+ This book is for the system Virgo, and was written by Eshi Tache, an explorer whom has visited many star systems, and \
+ has personally visited and seen many of the locations described inside this book. Two other people have also assisted in the creation of this \
+ book, being Qooqr Volquum, whom is an expert on synthetics, and Damian Fischer, a historian. Together, they provide valuable information and facts that lie outside of Tache's expertise.\
+
\
+ The writings inside this edition are intended to be useful to anyone visiting it for the first time, from someone taking a vacation to beautiful Virgo-Prime, \
+ to an immigrant from another system, or even from outside human space, and anyone inbetween. The publisher wishes to note that any opinions expressed \
+ in this text does not reflect the opinions of the publisher, and are instead the author's.\
+
\
+ Eshi Tache has also written other The Traveler's Guide books, including Sol Edition, Tau Ceti Edition, Alpha Centauri Edition, Vir Edition, and more, \
+ which you can find in your local book store, library, or e-reader device."
\ No newline at end of file
diff --git a/code/modules/lore_codex/lore_data_vr/political_parties.dm b/code/modules/lore_codex/lore_data_vr/political_parties.dm
index 5f6a251669..1a768ff9e0 100644
--- a/code/modules/lore_codex/lore_data_vr/political_parties.dm
+++ b/code/modules/lore_codex/lore_data_vr/political_parties.dm
@@ -1,9 +1,10 @@
/datum/lore/codex/category/political_factions
name = "Political Factions"
- data = "Those wishing to immigrate to somewhere in Virgo-Erigone, or otherwise plan to stay for a long time should get to know human politics. \
+ data = "For some weird reason, this section is blank. This looks like a publishing error."
+ /*data = "Those wishing to immigrate to somewhere in Virgo-Erigone, or otherwise plan to stay for a long time should get to know human politics. \
There are presently three major political parties that exist throughout SolGov space, being the Icarus Front, the Shadow Coalition, and \
the Sol Economic Organization, and several smaller ones which tend to align themselves among one of the major parties. In the Virgo-Erigone system, the \
- Icarus Front's influence is much less than somewhere closer to Sol, and the other two parties being more popular."
+ Icarus Front's influence is much less than somewhere closer to Sol, and the other two parties being more popular."*/ // ToDo: A lot.
children = list(
/datum/lore/codex/page/blank
)
@@ -11,4 +12,4 @@
/datum/lore/codex/page/blank/add_content()
name = "Blank Page"
keywords += list("Blank")
- data = "For some weird reason, this page is blank. This looks like a publishing error."
+ data = "For some weird reason, this section is blank. This looks like a publishing error." // ToDo: A lot.
diff --git a/code/modules/lore_codex/lore_data_vr/species.dm b/code/modules/lore_codex/lore_data_vr/species.dm
index a2737aa1b4..2ccfc6475b 100644
--- a/code/modules/lore_codex/lore_data_vr/species.dm
+++ b/code/modules/lore_codex/lore_data_vr/species.dm
@@ -42,12 +42,16 @@
/datum/lore/codex/page/unathi
name = "Unathi"
- data = "Raging in from Moghes, the Unathi are a race of tall, reptilian humanoids that possess both crocodile-like and serpent-like features. \
- They are a proud, warlike species that favors honor and strength, their home, Moghes, is a desert planet but was once believed to be full of life. \
- Of all the currently known sentient species, the Unathi are the most unequal in gender with females tending to be property of the males. Most Unathi \
- outside of Moghes tend to be exiles however, and with influence of other species the gender difference is not nearly as pronounced. Unathi were \
- humanity's second contact, and despite their aggressive nature, seem to get along well enough with humanity, though are often considered to be \
- 'second-class' citizens and are rarely seen in jobs other than where muscle is needed." // ToDo: Update with Unathi rewrite from Polaris.
+ data = "The Unathi are a race of tall, reptilian humanoids that possess both crocodile-like and serpent-like features. Their scales are hard and \
+ plate-like, save for the softer ones that line the inside of their legs, armpits, and groin. Originating from the planet of Moghes, the Unathi \
+ live in an extremely religious society. The Unathi believe in and closely follow a set of Decrees laid out in their belief system, The Unity. \
+ Unathi believes in living long, prosperous, honorable and productive lives. They firmly believe in improving the skills of their craft to reach \
+ a level where they can be considered to have mastered it. Unathi was humanity's second alien contact, but due to their aggressive nature, engaged \
+ in an interstellar war with humanity known as the Sol-Hegemony Conflict. \
+
\
+ Although the conflict has long since ended, and relations have slowly improved, Unathi are still often considered to be 'second-class' citizens \
+ and are rarely seen in jobs other than where muscle is needed. It is also still common for racial tensions to run high, although this is less \
+ common on the outskirts of SolGov's grasp, such as systems like Virgo-Erigone."
/datum/lore/codex/page/tajaran
name = "Tajaran"
@@ -85,7 +89,7 @@
\
With the help of Skrellean technology, the Akula had their genome modified to be capable of surviving in open air for long periods of time. \
However, Akula even today still require a high humidity environment to avoid drying out after a few days, which would make life on an arid world like \
- [quick_link("Virgo Prime")] nearly impossible if it were not for Skrellean technology to aid them."
+ [quick_link("Virgo-Prime")] nearly impossible if it were not for Skrellean technology to aid them."
/datum/lore/codex/page/nevrean/add_content()
name = "Nevrean"
@@ -126,7 +130,7 @@
/datum/lore/codex/page/zorren/add_content()
name = "Zorren"
keywords += list("Zorren")
- data = "The fox-like Zorren are native to [quick_link("Virgo Prime")], however there are two distinct varieties of \
+ data = "The fox-like Zorren are native to [quick_link("Virgo-Prime")], however there are two distinct varieties of \
Zorren one with large ears and shorter fur, and the other with longer fur that is a bit more vibrant. The \
long-eared, short-furred Zorren have come to be known as \"Flatland\" Zorren as that is where most of their \
settlements are located. The Flatland Zorren are somewhat tribal and shamanistic as they have only recently \
@@ -147,7 +151,7 @@
maintaining their own settlements and cultures, but often finding themselves standing on the shoulders of their more technologically advanced neighbors \
when it comes to meeting and exploring the rest of the galaxy.\
\
- It is important to note that Teshari names are unlike standard human names. Their pack name precedes their given name."
+ It is important to note that Teshari names are unlike standard human names. Their pack name precedes their given name."
children = list(
/datum/lore/codex/page/teshari_packs,
/datum/lore/codex/page/teshari_physical
diff --git a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm
index 610315275a..c4b2542f22 100644
--- a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm
+++ b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm
@@ -47,6 +47,8 @@
player_msg = "In this form, you can move a little faster, your health will regenerate as long as you have metal in you, and you can ventcrawl!"
+ can_buckle = TRUE //Blobsurfing
+
//Constructor allows passing the human to sync damages
/mob/living/simple_animal/protean_blob/New(var/newloc, var/mob/living/carbon/human/H)
..()
@@ -183,6 +185,8 @@
if(potentials.len)
var/mob/living/target = pick(potentials)
if(istype(target) && vore_selected)
+ if(target.buckled)
+ target.buckled.unbuckle_mob(target, force = TRUE)
target.forceMove(vore_selected)
to_chat(target,"\The [src] quickly engulfs you, [vore_selected.vore_verb]ing you into their [vore_selected.name]!")
@@ -211,6 +215,9 @@
/mob/living/carbon/human/proc/nano_intoblob()
if(buckled)
buckled.unbuckle_mob()
+ if(LAZYLEN(buckled_mobs))
+ for(var/buckledmob in buckled_mobs)
+ unbuckle_mob(buckledmob, force = TRUE)
if(pulledby)
pulledby.stop_pulling()
stop_pulling()
@@ -255,6 +262,9 @@
return
if(buckled)
buckled.unbuckle_mob()
+ if(LAZYLEN(buckled_mobs))
+ for(var/buckledmob in buckled_mobs)
+ unbuckle_mob(buckledmob, force = TRUE)
if(pulledby)
pulledby.stop_pulling()
stop_pulling()
diff --git a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm
index 5898afcd96..184e751a6a 100644
--- a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm
+++ b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm
@@ -1,4 +1,5 @@
#define DAM_SCALE_FACTOR 0.01
+#define METAL_PER_TICK 150
/datum/species/protean
name = "Protean"
name_plural = "Proteans"
@@ -170,15 +171,15 @@
if(refactory && !(refactory.status & ORGAN_DEAD))
//MHydrogen adds speeeeeed
- if(refactory.get_stored_material("mhydrogen") >= 100)
+ if(refactory.get_stored_material("mhydrogen") >= METAL_PER_TICK)
H.add_modifier(/datum/modifier/protean/mhydrogen, origin = refactory)
//Plasteel adds brute armor
- if(refactory.get_stored_material("plasteel") >= 100)
+ if(refactory.get_stored_material("plasteel") >= METAL_PER_TICK)
H.add_modifier(/datum/modifier/protean/plasteel, origin = refactory)
//Diamond adds burn armor
- if(refactory.get_stored_material("diamond") >= 100)
+ if(refactory.get_stored_material("diamond") >= METAL_PER_TICK)
H.add_modifier(/datum/modifier/protean/diamond, origin = refactory)
return ..()
@@ -207,7 +208,7 @@
// Various modifiers
/datum/modifier/protean
stacks = MODIFIER_STACK_FORBID
- var/material_use = 150
+ var/material_use = METAL_PER_TICK
var/material_name = DEFAULT_WALL_MATERIAL
/datum/modifier/protean/on_applied()
@@ -303,3 +304,4 @@
desc += "\nVALID THROUGH END OF: [time2text(world.timeofday, "Month") +" "+ num2text(text2num(time2text(world.timeofday, "YYYY"))+544)]\nREGISTRANT: [new_name]"
#undef DAM_SCALE_FACTOR
+#undef METAL_PER_TICK
\ No newline at end of file
diff --git a/code/modules/mob/new_player/sprite_accessories_vr.dm b/code/modules/mob/new_player/sprite_accessories_vr.dm
index 8c4b66bfa0..3cbf856cf3 100644
--- a/code/modules/mob/new_player/sprite_accessories_vr.dm
+++ b/code/modules/mob/new_player/sprite_accessories_vr.dm
@@ -209,6 +209,13 @@
icon_state = "hair_messy"
species_allowed = list(SPECIES_TAJ, SPECIES_XENOCHIMERA, SPECIES_PROTEAN)
+ teshari_fluffymohawk
+ name = "Teshari Fluffy Mohawk"
+ icon = 'icons/mob/human_face_vr.dmi'
+ icon_add = 'icons/mob/human_face_vr_add.dmi'
+ icon_state = "teshari_fluffymohawk"
+ species_allowed = list(SPECIES_TESHARI)
+
//Teshari things
teshari
icon_add = 'icons/mob/human_face_vr_add.dmi'
@@ -909,3 +916,15 @@
icon_state = "catwomanleft"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_LEG)
+
+ teshi_fluff
+ name = "Teshari underfluff"
+ icon_state = "teshi_fluff"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_GROIN,BP_TORSO,BP_HEAD)
+
+ teshi_small_feathers
+ name = "Teshari small wingfeathers"
+ icon_state = "teshi_sf"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_HAND,BP_R_HAND,BP_TORSO)
\ No newline at end of file
diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm
index 0e549897c1..957cf5927f 100644
--- a/code/modules/paperwork/faxmachine.dm
+++ b/code/modules/paperwork/faxmachine.dm
@@ -1,5 +1,5 @@
var/list/obj/machinery/photocopier/faxmachine/allfaxes = list()
-var/list/admin_departments = list("[using_map.boss_name]", "Virgo Prime Governmental Authority", "Supply")
+var/list/admin_departments = list("[using_map.boss_name]", "Virgo-Prime Governmental Authority", "Supply") // Vorestation Edit
var/list/alldepartments = list()
var/list/adminfaxes = list() //cache for faxes that have been sent to admins
@@ -182,7 +182,7 @@ var/list/adminfaxes = list() //cache for faxes that have been sent to admins
//message badmins that a fax has arrived
if (destination == using_map.boss_name)
message_admins(sender, "[uppertext(using_map.boss_short)] FAX", rcvdcopy, "CentComFaxReply", "#006100")
- else if (destination == "Virgo Prime Governmental Authority")
+ else if (destination == "Virgo-Prime Governmental Authority") // Vorestation Edit
message_admins(sender, "VIRGO GOVERNMENT FAX", rcvdcopy, "CentComFaxReply", "#1F66A0")
else if (destination == "Supply")
message_admins(sender, "[uppertext(using_map.boss_short)] SUPPLY FAX", rcvdcopy, "CentComFaxReply", "#5F4519")
diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm
index bb37a380b6..3b4833a533 100644
--- a/code/modules/paperwork/paperplane.dm
+++ b/code/modules/paperwork/paperplane.dm
@@ -19,7 +19,11 @@
internalPaper = newPaper
flags = newPaper.flags
color = newPaper.color
- newPaper.forceMove(src)
+ if(isstorage(newPaper.loc))
+ var/obj/item/weapon/storage/S = newPaper.loc
+ S.remove_from_storage(newPaper, src)
+ else
+ newPaper.forceMove(src)
else
internalPaper = new /obj/item/weapon/paper(src)
update_icon()
diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm
index 1c08294b6a..4db4d40c4c 100644
--- a/code/modules/power/cell.dm
+++ b/code/modules/power/cell.dm
@@ -24,6 +24,11 @@
var/charge_delay = 0 // How long it takes for the cell to start recharging after last use
matter = list(DEFAULT_WALL_MATERIAL = 700, "glass" = 50)
+ // Overlay stuff.
+ var/overlay_half_state = "cell-o1" // Overlay used when not fully charged but not empty.
+ var/overlay_full_state = "cell-o2" // Overlay used when fully charged.
+ var/last_overlay_state = null // Used to optimize update_icon() calls.
+
/obj/item/weapon/cell/New()
..()
charge = maxcharge
@@ -55,15 +60,38 @@
return use(cell_amt) / CELLRATE
-/obj/item/weapon/cell/update_icon()
- overlays.Cut()
+#define OVERLAY_FULL 2
+#define OVERLAY_PARTIAL 1
+#define OVERLAY_EMPTY 0
- if(charge < 0.01)
- return
- else if(charge/maxcharge >=0.995)
- overlays += image('icons/obj/power.dmi', "cell-o2")
- else
- overlays += image('icons/obj/power.dmi', "cell-o1")
+/obj/item/weapon/cell/update_icon()
+ var/new_overlay = null // The overlay that is needed.
+ // If it's different than the current overlay, then it'll get changed.
+ // Otherwise nothing happens, to save on CPU.
+
+ if(charge < 0.01) // Empty.
+ new_overlay = OVERLAY_EMPTY
+ if(last_overlay_state != new_overlay)
+ cut_overlays()
+
+ else if(charge/maxcharge >= 0.995) // Full
+ new_overlay = OVERLAY_FULL
+ if(last_overlay_state != new_overlay)
+ cut_overlay(overlay_half_state)
+ add_overlay(overlay_full_state)
+
+
+ else // Inbetween.
+ new_overlay = OVERLAY_PARTIAL
+ if(last_overlay_state != new_overlay)
+ cut_overlay(overlay_full_state)
+ add_overlay(overlay_half_state)
+
+ last_overlay_state = new_overlay
+
+#undef OVERLAY_FULL
+#undef OVERLAY_PARTIAL
+#undef OVERLAY_EMPTY
/obj/item/weapon/cell/proc/percent() // return % charge of cell
return 100.0*charge/maxcharge
diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm
index 827bd9aefd..eaca5bd663 100644
--- a/code/modules/power/singularity/emitter.dm
+++ b/code/modules/power/singularity/emitter.dm
@@ -165,6 +165,7 @@
"You undo the external reinforcing bolts.", \
"You hear a ratchet.")
src.anchored = 0
+ disconnect_from_network()
if(2)
user << "\The [src] needs to be unwelded from the floor."
return
diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm
index 0048cd5194..dd431e2de9 100644
--- a/code/modules/recycling/conveyor2.dm
+++ b/code/modules/recycling/conveyor2.dm
@@ -23,8 +23,8 @@
id = "round_end_belt"
// create a conveyor
-/obj/machinery/conveyor/New(loc, newdir, on = 0)
- ..(loc)
+/obj/machinery/conveyor/initialize(mapload, newdir, on = 0)
+ . = ..()
if(newdir)
set_dir(newdir)
@@ -105,7 +105,7 @@
id = input
for(var/obj/machinery/conveyor_switch/C in world)
if(C.id == id)
- C.conveyors += src
+ C.conveyors |= src
return
user.drop_item(get_turf(src))
@@ -158,12 +158,6 @@
if(C)
C.set_operable(stepdir, id, op)
-/*
-/obj/machinery/conveyor/verb/destroy()
- set src in view()
- src.broken()
-*/
-
/obj/machinery/conveyor/power_change()
..()
update()
@@ -189,15 +183,16 @@
-/obj/machinery/conveyor_switch/New()
+/obj/machinery/conveyor_switch/initialize()
..()
update()
+ return INITIALIZE_HINT_LATELOAD
- spawn(5) // allow map load
- conveyors = list()
- for(var/obj/machinery/conveyor/C in world)
- if(C.id == id)
- conveyors += C
+/obj/machinery/conveyor_switch/LateInitialize()
+ conveyors = list()
+ for(var/obj/machinery/conveyor/C in world)
+ if(C.id == id)
+ conveyors += C
// update the icon depending on the position
@@ -273,6 +268,7 @@
usr << "No input found please hang up and try your call again."
return
id = input
+ conveyors = list() // Clear list so they aren't double added.
for(var/obj/machinery/conveyor/C in world)
if(C.id == id)
conveyors += C
diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm
index ed701aa9e0..b0e5eca83b 100644
--- a/code/modules/telesci/telesci_computer.dm
+++ b/code/modules/telesci/telesci_computer.dm
@@ -22,17 +22,13 @@
// Based on the distance used
var/teleport_cooldown = 0
var/teleporting = 0
- var/starting_crystals = 2
+ var/starting_crystals = 0
var/max_crystals = 4
// Used to adjust OP-ness: (4 crystals * 6 efficiency * 12.5 coefficient) = 300 range.
var/powerCoefficient = 12.5
var/list/crystals = list()
var/obj/item/device/gps/inserted_gps
-/obj/machinery/computer/telescience/New()
- ..()
- recalibrate()
-
/obj/machinery/computer/telescience/Destroy()
eject()
if(inserted_gps)
@@ -46,6 +42,7 @@
/obj/machinery/computer/telescience/initialize()
. = ..()
+ recalibrate()
for(var/i = 1; i <= starting_crystals; i++)
crystals += new /obj/item/weapon/ore/bluespace_crystal/artificial(src) // starting crystals
diff --git a/code/modules/vore/appearance/sprite_accessories_vr.dm b/code/modules/vore/appearance/sprite_accessories_vr.dm
index 7f7ff7e364..5ea245462c 100644
--- a/code/modules/vore/appearance/sprite_accessories_vr.dm
+++ b/code/modules/vore/appearance/sprite_accessories_vr.dm
@@ -270,6 +270,31 @@
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
+/datum/sprite_accessory/ears/teshari
+ name = "Teshari (colorable fluff)"
+ desc = ""
+ icon_state = "teshari"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "teshariinner"
+
+/datum/sprite_accessory/ears/tesharihigh
+ name = "Teshari upper ears (colorable fluff)"
+ desc = ""
+ icon_state = "tesharihigh"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "tesharihighinner"
+
+/datum/sprite_accessory/ears/tesharilow
+ name = "Teshari lower ears (colorable fluff)"
+ desc = ""
+ icon_state = "tesharilow"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "tesharilowinner"
+
+
// Special snowflake ears go below here.
/datum/sprite_accessory/ears/molenar_kitsune
@@ -896,6 +921,14 @@
color_blend_mode = ICON_MULTIPLY
extra_overlay = "deertail_mark"
+/datum/sprite_accessory/tail/teshari_fluffytail
+ name = "Teshari alternative, colorable"
+ desc = ""
+ icon_state = "teshari_fluffytail"
+ extra_overlay = "teshari_fluffytail_mark"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
//For all species tails. Includes haircolored tails.
/datum/sprite_accessory/tail/special
name = "Blank tail. Do not select."
diff --git a/code/modules/vore/eating/bellymodes_vr.dm b/code/modules/vore/eating/bellymodes_vr.dm
index 66df5151f2..1dff971638 100644
--- a/code/modules/vore/eating/bellymodes_vr.dm
+++ b/code/modules/vore/eating/bellymodes_vr.dm
@@ -13,6 +13,7 @@
next_process = times_fired + (6 SECONDS/wait) //Set up our next process time.
var/play_sound //Potential sound to play at the end to avoid code duplication.
+ var/to_update = FALSE //Did anything update worthy happen?
/////////////////////////// Auto-Emotes ///////////////////////////
if(contents.len && next_emote <= times_fired)
@@ -41,7 +42,7 @@
items_preserved |= I
else
digest_item(I)
- owner.updateVRPanel()
+ to_update = TRUE
did_an_item = TRUE
//Handle eaten mobs
@@ -72,8 +73,7 @@
items_preserved |= I
else
digest_item(I)
- owner.updateVRPanel()
- H.updateVRPanel()
+ to_update = TRUE
break
///////////////////////////// DM_HOLD /////////////////////////////
@@ -113,6 +113,7 @@
play_sound = pick(death_sounds)
digestion_death(M)
owner.update_icons()
+ to_update = TRUE
continue
// Deal digestion damage (and feed the pred)
@@ -128,9 +129,6 @@
owner.nutrition += offset*(2*(digest_brute+digest_burn)/difference) // 9.5 nutrition per digestion tick if they're 130 pounds and it's same size. 10.2 per digestion tick if they're 140 and it's same size. Etc etc.
else
owner.nutrition += 2*(digest_brute+digest_burn)/difference
- M.updateVRPanel()
-
- owner.updateVRPanel()
//////////////////////////// DM_ABSORB ////////////////////////////
else if(digest_mode == DM_ABSORB)
@@ -149,6 +147,7 @@
owner.nutrition += oldnutrition
else if(M.nutrition < 100) //When they're finally drained.
absorb_living(M)
+ to_update = TRUE
//////////////////////////// DM_UNABSORB ////////////////////////////
else if(digest_mode == DM_UNABSORB)
@@ -161,6 +160,7 @@
to_chat(M,"You suddenly feel solid again ")
to_chat(owner,"You feel like a part of you is missing.")
owner.nutrition -= 100
+ to_update = TRUE
//////////////////////////// DM_DRAIN ////////////////////////////
else if(digest_mode == DM_DRAIN)
@@ -254,4 +254,11 @@
/////////////////////////// Make any noise ///////////////////////////
if(play_sound)
playsound(src, play_sound, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, ignore_walls = TRUE, preference = /datum/client_preference/digestion_noises)
+ if(to_update)
+ for(var/mob/living/M in contents)
+ if(M.client)
+ M.updateVRPanel()
+ if(owner.client)
+ owner.updateVRPanel()
+
return SSBELLIES_PROCESSED
diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm
index 0d50650924..31a9e7e476 100644
--- a/code/modules/vore/eating/vorepanel_vr.dm
+++ b/code/modules/vore/eating/vorepanel_vr.dm
@@ -507,7 +507,7 @@
selected.name = new_name
if(href_list["b_mode"])
- var/list/menu_list = selected.digest_modes
+ var/list/menu_list = selected.digest_modes.Copy()
if(istype(usr,/mob/living/carbon/human))
menu_list += DM_TRANSFORM
@@ -526,7 +526,7 @@
selected.items_preserved.Cut() //Re-evaltuate all items in belly on belly-mode change
if(href_list["b_addons"])
- var/list/menu_list = selected.mode_flag_list
+ var/list/menu_list = selected.mode_flag_list.Copy()
var/toggle_addon = input("Toggle Addon") as null|anything in menu_list
if(!toggle_addon)
return 0
diff --git a/code/modules/vore/fluffstuff/custom_boxes_vr.dm b/code/modules/vore/fluffstuff/custom_boxes_vr.dm
index 1776ca6eeb..57b83c9876 100644
--- a/code/modules/vore/fluffstuff/custom_boxes_vr.dm
+++ b/code/modules/vore/fluffstuff/custom_boxes_vr.dm
@@ -172,27 +172,6 @@
can_hold = list(/obj/item/clothing/under/swimsuit/)
has_items = list(/obj/item/clothing/under/swimsuit/fluff/penelope)
-//Arokha:Aronai Kadigan
-/obj/item/weapon/storage/backpack/satchel/gen/fluff/aronai
- name = "blue medical satchel"
- desc = "A medical satchel done up in blue and white."
-
- New()
- ..() //Might look like a lot... but all small items.
- //Centcom stuff and permit
- new /obj/item/weapon/card/id/centcom/station/fluff/aronai(src)
- //new /obj/item/clothing/accessory/permit/gun/fluff/aronai_kadigan(src)
- //Gun and holster
- //new /obj/item/weapon/gun/projectile/nsfw(src)
- //new /obj/item/ammo_magazine/nsfw_mag(src)
- //new /obj/item/ammo_casing/nsfw_batt/stun(src)
- //new /obj/item/ammo_casing/nsfw_batt/stun(src)
- //new /obj/item/ammo_casing/nsfw_batt/net(src)
- //new /obj/item/clothing/accessory/holster(src)
-
-/obj/item/weapon/storage/backpack/satchel/gen/fluff/aronai/digest_act(...)
- return FALSE //I get eaten a lot, okay
-
//Aerowing:Sebastian Aji
/obj/item/weapon/storage/box/fluff/sebastian_aji
name = "Sebastian's Lumoco Arms P3 Box"
diff --git a/code/modules/vore/fluffstuff/custom_clothes_vr.dm b/code/modules/vore/fluffstuff/custom_clothes_vr.dm
index c903dec636..539d9f2613 100644
--- a/code/modules/vore/fluffstuff/custom_clothes_vr.dm
+++ b/code/modules/vore/fluffstuff/custom_clothes_vr.dm
@@ -1797,3 +1797,14 @@ Departamental Swimsuits, for general use
else
H << "This suit is not designed for you."
return 0
+
+//Zigfe:Zaoozaoo Xrimxuqmqixzix
+/obj/item/clothing/head/fluff/zao
+ name = "Zao's Hat"
+ desc = "A black hat that has an uncanny similarity to the HoS's hat. There's a small letter Z sewn on the inside of the brim."
+
+ icon = 'icons/vore/custom_clothes_vr.dmi'
+ icon_state = "zao_cap"
+
+ icon_override = 'icons/vore/custom_clothes_vr.dmi'
+ item_state = "zao_cap_mob"
\ No newline at end of file
diff --git a/code/modules/vore/fluffstuff/custom_guns_vr.dm b/code/modules/vore/fluffstuff/custom_guns_vr.dm
index b42c15cc8c..50f238fd59 100644
--- a/code/modules/vore/fluffstuff/custom_guns_vr.dm
+++ b/code/modules/vore/fluffstuff/custom_guns_vr.dm
@@ -347,6 +347,11 @@
name = "\improper MEUSOC .45"
desc = "Some serious drywall work, coming up!"
*/
+//hzdonut:Jesse Soemmer
+/obj/item/weapon/gun/projectile/revolver/fluff/jesselemat
+ name = "Modified LeMat"
+ desc = "The LeMat Revolver is a 9 shot revolver with a secondary firing barrel for loading shotgun shells. Uses .38-Special and 12g rounds depending on the barrel. This one appears to have had it's secondary barrel sealed off and looks to be in pristine condition. Either it's brand new, or its owner takes very good care of it."
+ icon_state = "lemat"
//////////////////// Energy Weapons ////////////////////
@@ -794,4 +799,4 @@
if(T.z in using_map.map_levels)
to_chat(user, "The safety device prevents the gun from firing this close to the facility.")
return 0
- return ..()
\ No newline at end of file
+ return ..()
diff --git a/code/modules/vore/fluffstuff/custom_permits_vr.dm b/code/modules/vore/fluffstuff/custom_permits_vr.dm
index f5afc8aaec..c96783e246 100644
--- a/code/modules/vore/fluffstuff/custom_permits_vr.dm
+++ b/code/modules/vore/fluffstuff/custom_permits_vr.dm
@@ -51,6 +51,11 @@
name = "Sorrel Cavalet's Sidearm Permit"
desc = "A card indicating that the owner is allowed to carry a sidearm. It is issued by CentCom, so it is valid until it expires on September 26th, 2562."
+// hzdonut:Jesse Soemmer
+/obj/item/clothing/accessory/permit/gun/fluff/JesseSoemmer
+ name = "Jesse Soemmer's Sidearm Permit"
+ desc = "A card indicating that the owner is allowed to carry a sidearm. It is issued by CentCom, so it is valid until it expires on March 4, 2563."
+
/* Legacy Permits
// BEGIN - PROTOTYPE
/obj/item/clothing/accessory/permit/gun/fluff
diff --git a/code/modules/vore/fluffstuff/guns/sickshot.dm b/code/modules/vore/fluffstuff/guns/sickshot.dm
index f7d5a4b291..ea0820a908 100644
--- a/code/modules/vore/fluffstuff/guns/sickshot.dm
+++ b/code/modules/vore/fluffstuff/guns/sickshot.dm
@@ -3,7 +3,7 @@
name = "\improper MPA6 \'Sickshot\'"
desc = "Need to stun someone? Don't mind having to clean up the mess afterwards? The Sickshot is the answer to your prayers. \
Using a short-range concentrated blast of disruptive sound, the Sickshot will nauseate and confuse the target for several seconds. NOTE: Not suitable \
- for use in vacuum, or on animals. May cause contraction and release of various 'things' from various 'orifices'."
+ for use in vacuum. Usage on animals may cause panic and rage without stunning. May cause contraction and release of various 'things' from various 'orifices', even if the target is already dead."
description_info = "This gun causes nausea in targets, stunning them briefly and causing vomiting. It will also cause them to vomit up prey, sometimes. Repeated shots may help in that case."
description_fluff = ""
diff --git a/config/custom_items.txt b/config/custom_items.txt
index a81ee5bd5e..c03ddb8099 100644
--- a/config/custom_items.txt
+++ b/config/custom_items.txt
@@ -79,7 +79,7 @@ item_desc: A medical jacket straight from Central Command.
{
ckey: arokha
character_name: Aronai Kadigan
-item_path: /obj/item/weapon/storage/backpack/satchel/gen/fluff/aronai
+item_path: /obj/item/weapon/card/id/centcom/station/fluff/aronai
}
{
@@ -703,12 +703,12 @@ item_path: /obj/item/clothing/glasses/sunglasses/fluff/alfonso
#req_access = 1
#}
-#{
-#ckey: silencedmp5a5
-#character_name: NT-HASD #556
-#item_path: /obj/item/device/modkit_conversion/hasd
-#req_access = 1
-#}
+{
+ckey: silencedmp5a5
+character_name: NT-HASD #556
+item_path: /obj/item/device/modkit_conversion/hasd
+req_access = 1
+}
{
ckey: silvertalismen
@@ -936,6 +936,12 @@ character_name: Zeke Arachi
item_path: /obj/item/clothing/head/fluff/xeno
}
+{
+ckey: zigfe
+character_name: Zaoozaoo Xrimxuqmqixzix
+item_path: /obj/item/clothing/head/fluff/zao
+}
+
{
ckey: zodiacshadow
character_name: Nehi Maximus
diff --git a/icons/mob/human_face_or_vr.dmi b/icons/mob/human_face_or_vr.dmi
index fda6c68b48..3642b50afb 100644
Binary files a/icons/mob/human_face_or_vr.dmi and b/icons/mob/human_face_or_vr.dmi differ
diff --git a/icons/mob/human_face_vr.dmi b/icons/mob/human_face_vr.dmi
index 9ffa67f0d8..80c2d6a317 100644
Binary files a/icons/mob/human_face_vr.dmi and b/icons/mob/human_face_vr.dmi differ
diff --git a/icons/mob/human_face_vr_add.dmi b/icons/mob/human_face_vr_add.dmi
index e8f51f32eb..1656e00a2d 100644
Binary files a/icons/mob/human_face_vr_add.dmi and b/icons/mob/human_face_vr_add.dmi differ
diff --git a/icons/mob/human_races/markings_vr.dmi b/icons/mob/human_races/markings_vr.dmi
index ad94451018..a41a1db5cf 100644
Binary files a/icons/mob/human_races/markings_vr.dmi and b/icons/mob/human_races/markings_vr.dmi differ
diff --git a/icons/mob/vore/ears_vr.dmi b/icons/mob/vore/ears_vr.dmi
index bda8585543..126f2ba426 100644
Binary files a/icons/mob/vore/ears_vr.dmi and b/icons/mob/vore/ears_vr.dmi differ
diff --git a/icons/mob/vore/tails_vr.dmi b/icons/mob/vore/tails_vr.dmi
index f24c702e82..e5e0799996 100644
Binary files a/icons/mob/vore/tails_vr.dmi and b/icons/mob/vore/tails_vr.dmi differ
diff --git a/icons/obj/items_vr.dmi b/icons/obj/items_vr.dmi
index 312f2691c1..46276e7f7c 100644
Binary files a/icons/obj/items_vr.dmi and b/icons/obj/items_vr.dmi differ
diff --git a/icons/vore/custom_clothes_vr.dmi b/icons/vore/custom_clothes_vr.dmi
index 5cd12ac238..cdd0e8fa93 100644
Binary files a/icons/vore/custom_clothes_vr.dmi and b/icons/vore/custom_clothes_vr.dmi differ
diff --git a/maps/tether/submaps/beach/_beach.dm b/maps/tether/submaps/beach/_beach.dm
index e96c75641b..6e100c868c 100644
--- a/maps/tether/submaps/beach/_beach.dm
+++ b/maps/tether/submaps/beach/_beach.dm
@@ -13,7 +13,7 @@
//The other destination is landed on the surface
/datum/shuttle_destination/excursion/beach
- name = "Coastal Area"
+ name = "Remote Coastal Area"
my_area = /area/shuttle/excursion/away_beach
preferred_interim_area = /area/shuttle/excursion/sand_moving
skip_me = TRUE
@@ -157,7 +157,7 @@
dynamic_lighting = 0
/area/tether_away/beach
- name = "\improper Desert Planet Beach"
+ name = "\improper Away Mission - Virgo 4 Beach"
icon_state = "away"
base_turf = /turf/simulated/floor/beach/sand //This is what the ground turns into if destroyed/bombed/etc
//Not going to do sunlight simulations here like virgo3b
diff --git a/maps/tether/tether-02-surface2.dmm b/maps/tether/tether-02-surface2.dmm
index 13729ba275..30b84ecbd6 100644
--- a/maps/tether/tether-02-surface2.dmm
+++ b/maps/tether/tether-02-surface2.dmm
@@ -373,7 +373,7 @@
/obj/structure/closet/wardrobe/pjs,
/obj/item/weapon/handcuffs/fuzzy,
/obj/item/weapon/handcuffs/fuzzy,
-/obj/item/weapon/handcuffs/legcuffs,
+/obj/item/weapon/handcuffs/legcuffs/fuzzy,
/obj/item/weapon/handcuffs/fuzzy,
/obj/item/clothing/mask/balaclava,
/obj/item/clothing/gloves/combat{
diff --git a/vorestation.dme b/vorestation.dme
index 7226792402..419f4e5893 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -1016,6 +1016,7 @@
#include "code\game\objects\items\weapons\flamethrower.dm"
#include "code\game\objects\items\weapons\gift_wrappaper.dm"
#include "code\game\objects\items\weapons\handcuffs.dm"
+#include "code\game\objects\items\weapons\handcuffs_vr.dm"
#include "code\game\objects\items\weapons\improvised_components.dm"
#include "code\game\objects\items\weapons\manuals.dm"
#include "code\game\objects\items\weapons\manuals_vr.dm"
@@ -1420,8 +1421,7 @@
#include "code\modules\blob2\overmind\types.dm"
#include "code\modules\busy_space\air_traffic.dm"
#include "code\modules\busy_space\loremaster.dm"
-#include "code\modules\busy_space\organizations.dm"
-#include "code\modules\busy_space\organizations_vr.dm"
+#include "code\modules\busy_space_vr\organizations.dm"
#include "code\modules\client\client defines.dm"
#include "code\modules\client\client procs.dm"
#include "code\modules\client\movement.dm"
@@ -1808,8 +1808,8 @@
#include "code\modules\lore_codex\codex.dm"
#include "code\modules\lore_codex\codex_tree.dm"
#include "code\modules\lore_codex\pages.dm"
-#include "code\modules\lore_codex\lore_data\main.dm"
#include "code\modules\lore_codex\lore_data_vr\important_locations.dm"
+#include "code\modules\lore_codex\lore_data_vr\main.dm"
#include "code\modules\lore_codex\lore_data_vr\orgs.dm"
#include "code\modules\lore_codex\lore_data_vr\political_parties.dm"
#include "code\modules\lore_codex\lore_data_vr\species.dm"