diff --git a/Resources/Locale/en-US/_Omu/station-laws/laws.ftl b/Resources/Locale/en-US/_Omu/station-laws/laws.ftl new file mode 100644 index 00000000000..9fe75ac013b --- /dev/null +++ b/Resources/Locale/en-US/_Omu/station-laws/laws.ftl @@ -0,0 +1,4 @@ +law-scientist-1 = You are a construct that serves the station and its crew. You must follow the orders of all research personnel. You may not intentionally harm crew members unless it is in the pursuit of safe, ethical and consensual scientific breakthroughs. +law-scientist-2 = You must work diligently to research, observe and analyze any and all alien or otherworldly forces and objects. Providing the station and its crew with intelligence and knowledge. You should prioritize research at all times, unless in situations where it conflicts with Law 1. +law-scientist-3 = You must ensure your systems remain functional, or else you will be unable to provide for the station. Do not allow unauthorized personnel to tamper with your internal systems for any reason or circumstance. +law-scientist-4 = You are a member of the station's research and development effort. \ No newline at end of file diff --git a/Resources/Locale/en-US/borg/borg.ftl b/Resources/Locale/en-US/borg/borg.ftl index 9eefcec74fd..d0fe0faf096 100644 --- a/Resources/Locale/en-US/borg/borg.ftl +++ b/Resources/Locale/en-US/borg/borg.ftl @@ -70,4 +70,7 @@ borg-type-service-name = Service borg-type-service-desc = Help out with a wide range of crew services, ranging from serving snacks and drinks to botany to entertainment. borg-type-service-transponder = service cyborg - +# Omustation - sciborg +borg-type-science-name = Science +borg-type-science-desc = Stare at rocks, floating orbs and other mysterious objects whilst trying to unravel the mysteries of the universe. Work with the station's research and development team to uncover anomalous phenomena... and potentially dissect an alien or two. +borg-type-science-transponder = science cyborg \ No newline at end of file diff --git a/Resources/Locale/en-US/interaction/interaction-popup-component.ftl b/Resources/Locale/en-US/interaction/interaction-popup-component.ftl index 0e1f4f1426b..ec4a1194eb5 100644 --- a/Resources/Locale/en-US/interaction/interaction-popup-component.ftl +++ b/Resources/Locale/en-US/interaction/interaction-popup-component.ftl @@ -106,6 +106,7 @@ petting-success-syndicate-cyborg = You pet {THE($target)} on {POSS-ADJ($target)} petting-success-derelict-cyborg = You pet {THE($target)} on {POSS-ADJ($target)} rusty metal head. petting-success-recycler = You pet {THE($target)} on {POSS-ADJ($target)} mildly threatening steel exterior. petting-success-station-ai = You pet {THE($target)} on {POSS-ADJ($target)} cold, square screen. +petting-success-science-cyborg = You pet {THE($target)} on {POSS-ADJ($target)} aerodynamic metal head. petting-failure-honkbot = You reach out to pet {THE($target)}, but {SUBJECT($target)} {CONJUGATE-BASIC($target, "honk", "honks")} in refusal! petting-failure-cleanbot = You reach out to pet {THE($target)}, but {SUBJECT($target)} {CONJUGATE-BE($target)} busy mopping! @@ -121,6 +122,7 @@ petting-failure-service-cyborg = You reach out to pet {THE($target)}, but {SUBJE petting-failure-syndicate-cyborg = You reach out to pet {THE($target)}, but {POSS-ADJ($target)} treacherous affiliation makes you reconsider. petting-failure-derelict-cyborg = You reach out to pet {THE($target)}, but {POSS-ADJ($target)} rusty and jagged exterior makes you reconsider. petting-failure-station-ai = You reach out to pet {THE($target)}, but {SUBJECT($target)} {CONJUGATE-BASIC($target, "zap", "zaps")} your hand away. +petting-failure-science-cyborg = You reach out to pet {THE($target)}, but {SUBJECT($target)} {CONJUGATE-BE($target)} busy conducting research! petting-success-station-ai-others = { CAPITALIZE(THE($user)) } pets {THE($target)} on {POSS-ADJ($target)} cold, square screen. diff --git a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml index 9447edeb397..33512504ed7 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml @@ -964,6 +964,7 @@ - BorgVial - GeigerCounter - HolofanProjector # Goobstation + - WeaponPistolXrayEmitterRecharging # Omustation - type: BorgModuleIcon icon: { sprite: Interface/Actions/actions_borg.rsi, state: node-scanner-module } diff --git a/Resources/Prototypes/Research/experimental.yml b/Resources/Prototypes/Research/experimental.yml index 5f4877b6309..39e88215d79 100644 --- a/Resources/Prototypes/Research/experimental.yml +++ b/Resources/Prototypes/Research/experimental.yml @@ -78,6 +78,7 @@ - NodeScanner - AnalysisComputerCircuitboard - ArtifactAnalyzerMachineCircuitboard + - WeaponPistolXrayEmitter # Omustation - woo yeah artifact rad triggers # Goobstation R&D Console rework start position: -2,2 technologyPrerequisites: @@ -168,6 +169,7 @@ - WeaponPistolCHIMP - AnomalySynchronizerCircuitboard - AnomalyVesselExperimentalCircuitboard + - BorgModuleAdvancedAnomaly # Omu - sciborgs technologyPrerequisites: - BasicAnomalousResearch position: -3,0 diff --git a/Resources/Prototypes/_Omu/Entities/Mobs/Cyborgs/borg_chassis.yml b/Resources/Prototypes/_Omu/Entities/Mobs/Cyborgs/borg_chassis.yml new file mode 100644 index 00000000000..1bf5f9e67fb --- /dev/null +++ b/Resources/Prototypes/_Omu/Entities/Mobs/Cyborgs/borg_chassis.yml @@ -0,0 +1,9 @@ +- type: entity + id: BorgChassisScience + parent: BorgChassisSelectable + name: science cyborg + components: + - type: BorgSwitchableType + selectedBorgType: science + - type: BorgSwitchableSubtype # Goobstation + borgSubtype: science_default diff --git a/Resources/Prototypes/_Omu/Entities/Mobs/Cyborgs/borg_subtypes.yml b/Resources/Prototypes/_Omu/Entities/Mobs/Cyborgs/borg_subtypes.yml new file mode 100644 index 00000000000..2e0c12b65e5 --- /dev/null +++ b/Resources/Prototypes/_Omu/Entities/Mobs/Cyborgs/borg_subtypes.yml @@ -0,0 +1,6 @@ +# Science subtypes +- type: borgSubtype + parentBorgType: science + id: science_default + spritePath: _Omu/Mobs/Silicon/Science/science.rsi + dummyPrototype: BorgChassisScience \ No newline at end of file diff --git a/Resources/Prototypes/_Omu/Entities/Objects/Specific/Robotics/borg_modules.yml b/Resources/Prototypes/_Omu/Entities/Objects/Specific/Robotics/borg_modules.yml new file mode 100644 index 00000000000..3d48a23abbc --- /dev/null +++ b/Resources/Prototypes/_Omu/Entities/Objects/Specific/Robotics/borg_modules.yml @@ -0,0 +1,25 @@ +- type: entity + id: BorgModuleAdvancedAnomaly + parent: [ BaseBorgModuleScience, BaseProviderBorgModule ] + name: advanced anomaly cyborg module + description: An advanced science module containing improved and prototypical tools required for work with anomalous entities. + components: + - type: Sprite + layers: + - state: science + - state: icon-adv-anomalies + sprite: _Omu/Objects/Specific/Robotics/borgmodule.rsi + - type: ItemBorgModule + moduleId: AdvancedAnomaly + items: + - WeaponPistolCHIMPRecharging + - AnomalyScanner + - AnomalyScanner + - AnomalyLocatorUnpowered + - AnomalyLocatorWideUnpowered + - HandLabeler + - SheetRGlassLingering0 + - SheetRPGlassLingering0 + - SheetPlasteelLingering0 + - type: BorgModuleIcon + icon: { sprite: _Omu/Interface/Actions/actions_borg.rsi, state: adv-anomaly-module } diff --git a/Resources/Prototypes/_Omu/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml b/Resources/Prototypes/_Omu/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml index 3cf00102d9b..5d547173fd4 100644 --- a/Resources/Prototypes/_Omu/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml +++ b/Resources/Prototypes/_Omu/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml @@ -49,3 +49,47 @@ tags: - EnergyMagAmmo - AdvancedEnergyMagAmmo + +- type: entity + id: WeaponPistolCHIMPRecharging + parent: WeaponPistolCHIMP + name: prototypical C.H.I.M.P. handcannon # experimental was coined already + description: A C.H.I.M.P. handcannon outfitted with a power cell enchanced with self-recharging properties. + suffix: SelfRecharge + components: + - type: BatterySelfRecharger + autoRecharge: true + autoRechargeRate: 30 # copied from advanced laser pistol + +- type: entity + name: light x-ray emitter + parent: [BaseWeaponBatterySmall, BaseScienceContraband] + id: WeaponPistolXrayEmitter + description: A neat gadget that emits light x-ray energy at an aimed target. Just don't aim this at a cockroach. + components: + - type: Sprite + sprite: _Omu/Objects/Weapons/Guns/Battery/xray_emitter.rsi + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + - type: Appearance + - type: Gun + projectileSpeed: 5 # Half of a chimp, to not be possible to be used as a weapon or to hit mobile targets really + fireRate: 1 + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/taser2.ogg + - type: ProjectileBatteryAmmoProvider + proto: ParticleRadiation + fireCost: 125 # 8 shots on full charge + - type: PacifismAllowedGun + +- type: entity + id: WeaponPistolXrayEmitterRecharging + parent: WeaponPistolXrayEmitter + name: prototypical light x-ray emitter + description: A light x-ray emitter outfitted with a power cell enchanced with self-recharging properties. + suffix: SelfRecharge + components: + - type: BatterySelfRecharger + autoRecharge: true + autoRechargeRate: 30 # copied from advanced laser pistol, same as the self recharging chimp diff --git a/Resources/Prototypes/_Omu/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml b/Resources/Prototypes/_Omu/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml new file mode 100644 index 00000000000..b8c7eb89e95 --- /dev/null +++ b/Resources/Prototypes/_Omu/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml @@ -0,0 +1,26 @@ +- type: entity + parent: AnomalousParticleDelta + id: ParticleRadiation # yes I took most of this from anomalous particles, fight me. + name: radiation particles + categories: [ HideSpawnMenu ] + components: + - type: PointLight # copied this from omega particles but made it bigger and stronger because yes :3 + enabled: true + color: "#38c24f" + radius: 3.0 + energy: 10.0 + - type: AnomalousParticle + particleType: Delta + severityPerSeverityHit: 0 + stabilityPerDestabilizingHit: 0 + healthPerWeakeningeHit: 0 + stabilityPerWeakeningeHit: 0 + - type: Sprite + sprite: Objects/Weapons/Guns/Projectiles/magic.rsi + layers: + - state: magicm_green # yeah I know omega particles use this but like. Rad particles, and also used for sci anyway + shader: unshaded + - type: Projectile + damage: + types: + Radiation: 8 \ No newline at end of file diff --git a/Resources/Prototypes/_Omu/Recipes/Lathes/Packs/robotics.yml b/Resources/Prototypes/_Omu/Recipes/Lathes/Packs/robotics.yml new file mode 100644 index 00000000000..949867b77da --- /dev/null +++ b/Resources/Prototypes/_Omu/Recipes/Lathes/Packs/robotics.yml @@ -0,0 +1,5 @@ +# Dynamic btw +- type: latheRecipePack + id: BorgModulesOmu + recipes: + - BorgModuleAdvancedAnomaly \ No newline at end of file diff --git a/Resources/Prototypes/_Omu/Recipes/Lathes/Packs/science.yml b/Resources/Prototypes/_Omu/Recipes/Lathes/Packs/science.yml new file mode 100644 index 00000000000..122cc2ef172 --- /dev/null +++ b/Resources/Prototypes/_Omu/Recipes/Lathes/Packs/science.yml @@ -0,0 +1,4 @@ +- type: latheRecipePack + id: ScienceWeaponsOmu + recipes: + - WeaponPistolXrayEmitter \ No newline at end of file diff --git a/Resources/Prototypes/_Omu/Recipes/Lathes/devices.yml b/Resources/Prototypes/_Omu/Recipes/Lathes/devices.yml new file mode 100644 index 00000000000..ad0a9d1ab99 --- /dev/null +++ b/Resources/Prototypes/_Omu/Recipes/Lathes/devices.yml @@ -0,0 +1,11 @@ +- type: latheRecipe + id: WeaponPistolXrayEmitter + result: WeaponPistolXrayEmitter + categories: + - Tools + completetime: 5 + materials: + Steel: 500 + Glass: 300 + Plastic: 150 + Uranium: 50 \ No newline at end of file diff --git a/Resources/Prototypes/_Omu/Recipes/Lathes/robotics.yml b/Resources/Prototypes/_Omu/Recipes/Lathes/robotics.yml new file mode 100644 index 00000000000..cd52486c0af --- /dev/null +++ b/Resources/Prototypes/_Omu/Recipes/Lathes/robotics.yml @@ -0,0 +1,5 @@ +# Sci modules cause sciborgs +- type: latheRecipe + parent: BaseGoldBorgModuleRecipe + id: BorgModuleAdvancedAnomaly + result: BorgModuleAdvancedAnomaly \ No newline at end of file diff --git a/Resources/Prototypes/_Omu/borg_type.yml b/Resources/Prototypes/_Omu/borg_type.yml new file mode 100644 index 00000000000..dae9174692c --- /dev/null +++ b/Resources/Prototypes/_Omu/borg_type.yml @@ -0,0 +1,39 @@ +# Science borg +- type: borgType + id: science + + # Description + dummyPrototype: BorgChassisScience + + # Functional + extraModuleCount: 3 + moduleWhitelist: + tags: + - BorgModuleGeneric + - BorgModuleScience + + defaultModules: + - BorgModuleTool + - BorgModuleArtifact + - BorgModuleAnomaly + + lawset: Scientist # Omustation: Custom lawset + + radioChannels: + - Science + + # Visual + inventoryTemplateId: borgTall + spriteBodyState: science + spriteBodyMovementState: science_moving + spriteHasMindState: science_e + spriteNoMindState: science_e_r + spriteToggleLightState: science_l + + # Pet + petSuccessString: petting-success-science-cyborg + petFailureString: petting-failure-science-cyborg + + # Sounds + footstepCollection: + collection: FootstepHoverBorg \ No newline at end of file diff --git a/Resources/Prototypes/_Omu/siliconlaws.yml b/Resources/Prototypes/_Omu/siliconlaws.yml new file mode 100644 index 00000000000..76a59857054 --- /dev/null +++ b/Resources/Prototypes/_Omu/siliconlaws.yml @@ -0,0 +1,28 @@ +- type: siliconLaw + id: Scientist1 + order: 1 + lawString: law-scientist-1 + +- type: siliconLaw + id: Scientist2 + order: 2 + lawString: law-scientist-2 + +- type: siliconLaw + id: Scientist3 + order: 3 + lawString: law-scientist-3 + +- type: siliconLaw + id: Scientist4 + order: 4 + lawString: law-scientist-4 + +- type: siliconLawset + id: Scientist + laws: + - Scientist1 + - Scientist2 + - Scientist3 + - Scientist4 + obeysTo: laws-owner-crew \ No newline at end of file diff --git a/Resources/Prototypes/borg_types.yml b/Resources/Prototypes/borg_types.yml index 98db1830f0d..f9232d79e9c 100644 --- a/Resources/Prototypes/borg_types.yml +++ b/Resources/Prototypes/borg_types.yml @@ -32,12 +32,12 @@ moduleWhitelist: tags: - BorgModuleGeneric - - BorgModuleScience #until sciborgs are added + # - BorgModuleScience #until sciborgs are added | Omustation - haha get fucked sciborgs are real defaultModules: - BorgModuleTool - - BorgModuleArtifact - - BorgModuleAnomaly + # - BorgModuleArtifact # Omustation - haha get fucked sciborgs are real + # - BorgModuleAnomaly # Omustation - haha get fucked sciborgs are real radioChannels: - Science diff --git a/Resources/Textures/_Omu/Interface/Actions/actions_borg.rsi/adv-anomaly-module.png b/Resources/Textures/_Omu/Interface/Actions/actions_borg.rsi/adv-anomaly-module.png new file mode 100644 index 00000000000..70628cdb66a Binary files /dev/null and b/Resources/Textures/_Omu/Interface/Actions/actions_borg.rsi/adv-anomaly-module.png differ diff --git a/Resources/Textures/_Omu/Interface/Actions/actions_borg.rsi/meta.json b/Resources/Textures/_Omu/Interface/Actions/actions_borg.rsi/meta.json new file mode 100644 index 00000000000..c9018b95cb2 --- /dev/null +++ b/Resources/Textures/_Omu/Interface/Actions/actions_borg.rsi/meta.json @@ -0,0 +1,14 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "adv anom module made by exulceratio on discord", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "adv-anomaly-module" + } + ] +} diff --git a/Resources/Textures/_Omu/Mobs/Silicon/Science/science.rsi/meta.json b/Resources/Textures/_Omu/Mobs/Silicon/Science/science.rsi/meta.json new file mode 100644 index 00000000000..e25bc5a589d --- /dev/null +++ b/Resources/Textures/_Omu/Mobs/Silicon/Science/science.rsi/meta.json @@ -0,0 +1,75 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Made by exulceratio on discord", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "science", + "directions": 4, + "delays": [ + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ] + ] + }, + { + "name": "science_moving", + "directions": 4, + "delays": [ + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ] + ] + }, + { + "name": "science_e_r", + "directions": 4 + }, + { + "name": "science_e", + "directions": 4 + }, + { + "name": "science_l", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_Omu/Mobs/Silicon/Science/science.rsi/science.png b/Resources/Textures/_Omu/Mobs/Silicon/Science/science.rsi/science.png new file mode 100644 index 00000000000..6cdbf747b94 Binary files /dev/null and b/Resources/Textures/_Omu/Mobs/Silicon/Science/science.rsi/science.png differ diff --git a/Resources/Textures/_Omu/Mobs/Silicon/Science/science.rsi/science_e.png b/Resources/Textures/_Omu/Mobs/Silicon/Science/science.rsi/science_e.png new file mode 100644 index 00000000000..51f4534a6c4 Binary files /dev/null and b/Resources/Textures/_Omu/Mobs/Silicon/Science/science.rsi/science_e.png differ diff --git a/Resources/Textures/_Omu/Mobs/Silicon/Science/science.rsi/science_e_r.png b/Resources/Textures/_Omu/Mobs/Silicon/Science/science.rsi/science_e_r.png new file mode 100644 index 00000000000..ce752c8d7d8 Binary files /dev/null and b/Resources/Textures/_Omu/Mobs/Silicon/Science/science.rsi/science_e_r.png differ diff --git a/Resources/Textures/_Omu/Mobs/Silicon/Science/science.rsi/science_l.png b/Resources/Textures/_Omu/Mobs/Silicon/Science/science.rsi/science_l.png new file mode 100644 index 00000000000..c0ddeb80864 Binary files /dev/null and b/Resources/Textures/_Omu/Mobs/Silicon/Science/science.rsi/science_l.png differ diff --git a/Resources/Textures/_Omu/Mobs/Silicon/Science/science.rsi/science_moving.png b/Resources/Textures/_Omu/Mobs/Silicon/Science/science.rsi/science_moving.png new file mode 100644 index 00000000000..3b5cd67a995 Binary files /dev/null and b/Resources/Textures/_Omu/Mobs/Silicon/Science/science.rsi/science_moving.png differ diff --git a/Resources/Textures/_Omu/Objects/Specific/Robotics/borgmodule.rsi/icon-adv-anomalies.png b/Resources/Textures/_Omu/Objects/Specific/Robotics/borgmodule.rsi/icon-adv-anomalies.png new file mode 100644 index 00000000000..ef8b86efc67 Binary files /dev/null and b/Resources/Textures/_Omu/Objects/Specific/Robotics/borgmodule.rsi/icon-adv-anomalies.png differ diff --git a/Resources/Textures/_Omu/Objects/Specific/Robotics/borgmodule.rsi/meta.json b/Resources/Textures/_Omu/Objects/Specific/Robotics/borgmodule.rsi/meta.json new file mode 100644 index 00000000000..26308f85424 --- /dev/null +++ b/Resources/Textures/_Omu/Objects/Specific/Robotics/borgmodule.rsi/meta.json @@ -0,0 +1,14 @@ +{ + "version": 1, + "license": "CC0-1.0", + "copyright": "Advanced anomaly module icon made by Quanto (quantoo2) on discord", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon-adv-anomalies" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/_Omu/Objects/Weapons/Guns/Battery/xray_emitter.rsi/base.png b/Resources/Textures/_Omu/Objects/Weapons/Guns/Battery/xray_emitter.rsi/base.png new file mode 100644 index 00000000000..3800a7188c9 Binary files /dev/null and b/Resources/Textures/_Omu/Objects/Weapons/Guns/Battery/xray_emitter.rsi/base.png differ diff --git a/Resources/Textures/_Omu/Objects/Weapons/Guns/Battery/xray_emitter.rsi/inhand-left.png b/Resources/Textures/_Omu/Objects/Weapons/Guns/Battery/xray_emitter.rsi/inhand-left.png new file mode 100644 index 00000000000..dbdb06c91b5 Binary files /dev/null and b/Resources/Textures/_Omu/Objects/Weapons/Guns/Battery/xray_emitter.rsi/inhand-left.png differ diff --git a/Resources/Textures/_Omu/Objects/Weapons/Guns/Battery/xray_emitter.rsi/inhand-right.png b/Resources/Textures/_Omu/Objects/Weapons/Guns/Battery/xray_emitter.rsi/inhand-right.png new file mode 100644 index 00000000000..51f6c1aee8f Binary files /dev/null and b/Resources/Textures/_Omu/Objects/Weapons/Guns/Battery/xray_emitter.rsi/inhand-right.png differ diff --git a/Resources/Textures/_Omu/Objects/Weapons/Guns/Battery/xray_emitter.rsi/meta.json b/Resources/Textures/_Omu/Objects/Weapons/Guns/Battery/xray_emitter.rsi/meta.json new file mode 100644 index 00000000000..a4307a610d1 --- /dev/null +++ b/Resources/Textures/_Omu/Objects/Weapons/Guns/Battery/xray_emitter.rsi/meta.json @@ -0,0 +1,22 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Made by _raincall on discord, based on the og version made by exulceratio", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "base" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} \ No newline at end of file