mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2026-08-24 21:56:55 +01:00
fix files with invalid utf-8
This commit is contained in:
@@ -4,4 +4,8 @@ updates:
|
||||
- package-ecosystem: github-actions
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
interval: "daily"
|
||||
- package-ecosystem: npm
|
||||
directory: "/tools"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
|
||||
+195
-195
@@ -1,195 +1,195 @@
|
||||
/*
|
||||
|
||||
Overview:
|
||||
Each zone is a self-contained area where gas values would be the same if tile-based equalization were run indefinitely.
|
||||
If you're unfamiliar with ZAS, FEA's air groups would have similar functionality if they didn't break in a stiff breeze.
|
||||
|
||||
Class Vars:
|
||||
name - A name of the format "Zone [#]", used for debugging.
|
||||
invalid - True if the zone has been erased and is no longer eligible for processing.
|
||||
needs_update - True if the zone has been added to the update list.
|
||||
edges - A list of edges that connect to this zone.
|
||||
air - The gas mixture that any turfs in this zone will return. Values are per-tile with a group multiplier.
|
||||
|
||||
Class Procs:
|
||||
add(turf/simulated/T)
|
||||
Adds a turf to the contents, sets its zone and merges its air.
|
||||
|
||||
remove(turf/simulated/T)
|
||||
Removes a turf, sets its zone to null and erases any gas graphics.
|
||||
Invalidates the zone if it has no more tiles.
|
||||
|
||||
c_merge(zone/into)
|
||||
Invalidates this zone and adds all its former contents to into.
|
||||
|
||||
c_invalidate()
|
||||
Marks this zone as invalid and removes it from processing.
|
||||
|
||||
rebuild()
|
||||
Invalidates the zone and marks all its former tiles for updates.
|
||||
|
||||
add_tile_air(turf/simulated/T)
|
||||
Adds the air contained in T.air to the zone's air supply. Called when adding a turf.
|
||||
|
||||
tick()
|
||||
Called only when the gas content is changed. Archives values and changes gas graphics.
|
||||
|
||||
dbg_data(mob/M)
|
||||
Sends M a printout of important figures for the zone.
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/zone/var/name
|
||||
/zone/var/invalid = 0
|
||||
/zone/var/list/contents = list()
|
||||
/zone/var/list/fire_tiles = list()
|
||||
/zone/var/list/fuel_objs = list()
|
||||
|
||||
/zone/var/needs_update = 0
|
||||
|
||||
/zone/var/list/edges = list()
|
||||
|
||||
/zone/var/datum/gas_mixture/air = new
|
||||
|
||||
/zone/var/list/graphic_add = list()
|
||||
/zone/var/list/graphic_remove = list()
|
||||
|
||||
/zone/New()
|
||||
air_master.add_zone(src)
|
||||
air.temperature = TCMB
|
||||
air.group_multiplier = 1
|
||||
air.volume = CELL_VOLUME
|
||||
|
||||
/zone/proc/add(turf/simulated/T)
|
||||
#ifdef ZASDBG
|
||||
ASSERT(!invalid)
|
||||
ASSERT(istype(T))
|
||||
ASSERT(!air_master.has_valid_zone(T))
|
||||
#endif
|
||||
|
||||
var/datum/gas_mixture/turf_air = T.return_air()
|
||||
add_tile_air(turf_air)
|
||||
T.zone = src
|
||||
contents.Add(T)
|
||||
if(T.fire)
|
||||
var/obj/effect/decal/cleanable/liquid_fuel/fuel = locate() in T
|
||||
fire_tiles.Add(T)
|
||||
air_master.active_fire_zones |= src
|
||||
if(fuel) fuel_objs += fuel
|
||||
if(air.graphic)
|
||||
T.update_graphic(air.graphic)
|
||||
|
||||
/zone/proc/remove(turf/simulated/T)
|
||||
#ifdef ZASDBG
|
||||
ASSERT(!invalid)
|
||||
ASSERT(istype(T))
|
||||
ASSERT(T.zone == src)
|
||||
soft_assert(T in contents, "Lists are weird broseph")
|
||||
#endif
|
||||
contents.Remove(T)
|
||||
fire_tiles.Remove(T)
|
||||
if(T.fire)
|
||||
var/obj/effect/decal/cleanable/liquid_fuel/fuel = locate() in T
|
||||
fuel_objs -= fuel
|
||||
T.zone = null
|
||||
if(air.graphic)
|
||||
T.update_graphic(graphic_remove = air.graphic)
|
||||
if(contents.len)
|
||||
air.group_multiplier = contents.len
|
||||
else
|
||||
c_invalidate()
|
||||
|
||||
/zone/proc/c_merge(zone/into)
|
||||
#ifdef ZASDBG
|
||||
ASSERT(!invalid)
|
||||
ASSERT(istype(into))
|
||||
ASSERT(into != src)
|
||||
ASSERT(!into.invalid)
|
||||
#endif
|
||||
c_invalidate()
|
||||
var/list/air_graphic = air.graphic // Cache for sanic speed
|
||||
for(var/turf/simulated/T in contents)
|
||||
into.add(T)
|
||||
if(air_graphic)
|
||||
T.update_graphic(graphic_remove = air_graphic)
|
||||
#ifdef ZASDBG
|
||||
T.dbg(merged)
|
||||
#endif
|
||||
|
||||
//rebuild the old zone's edges so that they will be possessed by the new zone
|
||||
for(var/connection_edge/E in edges)
|
||||
if(E.contains_zone(into))
|
||||
continue //don't need to rebuild this edge
|
||||
for(var/turf/T in E.connecting_turfs)
|
||||
air_master.mark_for_update(T)
|
||||
|
||||
/zone/proc/c_invalidate()
|
||||
invalid = 1
|
||||
air_master.remove_zone(src)
|
||||
#ifdef ZASDBG
|
||||
for(var/turf/simulated/T in contents)
|
||||
T.dbg(invalid_zone)
|
||||
#endif
|
||||
|
||||
/zone/proc/rebuild()
|
||||
if(invalid) return //Short circuit for explosions where rebuild is called many times over.
|
||||
c_invalidate()
|
||||
var/list/air_graphic = air.graphic // Cache for sanic speed
|
||||
for(var/turf/simulated/T in contents)
|
||||
if(air_graphic)
|
||||
T.update_graphic(graphic_remove = air_graphic) //we need to remove the overlays so they're not doubled when the zone is rebuilt
|
||||
//T.dbg(invalid_zone)
|
||||
T.needs_air_update = 0 //Reset the marker so that it will be added to the list.
|
||||
air_master.mark_for_update(T)
|
||||
|
||||
/zone/proc/add_tile_air(datum/gas_mixture/tile_air)
|
||||
//air.volume += CELL_VOLUME
|
||||
air.group_multiplier = 1
|
||||
air.multiply(contents.len)
|
||||
air.merge(tile_air)
|
||||
air.divide(contents.len+1)
|
||||
air.group_multiplier = contents.len+1
|
||||
|
||||
/zone/proc/tick()
|
||||
if(air.temperature >= PHORON_FLASHPOINT && !(src in air_master.active_fire_zones) && air.check_combustability() && contents.len)
|
||||
var/turf/T = pick(contents)
|
||||
if(istype(T))
|
||||
T.create_fire(vsc.fire_firelevel_multiplier)
|
||||
|
||||
if(air.check_tile_graphic(graphic_add, graphic_remove))
|
||||
for(var/turf/simulated/T in contents)
|
||||
T.update_graphic(graphic_add, graphic_remove)
|
||||
graphic_add.len = 0
|
||||
graphic_remove.len = 0
|
||||
|
||||
for(var/connection_edge/E in edges)
|
||||
if(E.sleeping)
|
||||
E.recheck()
|
||||
|
||||
/zone/proc/dbg_data(mob/M)
|
||||
to_chat(M,name)
|
||||
for(var/g in air.gas)
|
||||
to_chat(M, "[gas_data.name[g]]: [air.gas[g]]")
|
||||
to_chat(M, "P: [air.return_pressure()] kPa V: [air.volume]L T: [air.temperature]°K ([air.temperature - T0C]°C)")
|
||||
to_chat(M, "O2 per N2: [(air.gas["nitrogen"] ? air.gas["oxygen"]/air.gas["nitrogen"] : "N/A")] Moles: [air.total_moles]")
|
||||
to_chat(M, "Simulated: [contents.len] ([air.group_multiplier])")
|
||||
//to_chat(M, "Unsimulated: [unsimulated_contents.len]")
|
||||
//to_chat(M, "Edges: [edges.len]")
|
||||
if(invalid)
|
||||
to_chat(M, "Invalid!")
|
||||
var/zone_edges = 0
|
||||
var/space_edges = 0
|
||||
var/space_coefficient = 0
|
||||
for(var/connection_edge/E in edges)
|
||||
if(E.type == /connection_edge/zone) zone_edges++
|
||||
else
|
||||
space_edges++
|
||||
space_coefficient += E.coefficient
|
||||
to_chat(M, "[E:air:return_pressure()]kPa")
|
||||
|
||||
to_chat(M, "Zone Edges: [zone_edges]")
|
||||
to_chat(M, "Space Edges: [space_edges] ([space_coefficient] connections)")
|
||||
|
||||
//for(var/turf/T in unsimulated_contents)
|
||||
// to_chat(M, "[T] at ([T.x],[T.y])")
|
||||
/*
|
||||
|
||||
Overview:
|
||||
Each zone is a self-contained area where gas values would be the same if tile-based equalization were run indefinitely.
|
||||
If you're unfamiliar with ZAS, FEA's air groups would have similar functionality if they didn't break in a stiff breeze.
|
||||
|
||||
Class Vars:
|
||||
name - A name of the format "Zone [#]", used for debugging.
|
||||
invalid - True if the zone has been erased and is no longer eligible for processing.
|
||||
needs_update - True if the zone has been added to the update list.
|
||||
edges - A list of edges that connect to this zone.
|
||||
air - The gas mixture that any turfs in this zone will return. Values are per-tile with a group multiplier.
|
||||
|
||||
Class Procs:
|
||||
add(turf/simulated/T)
|
||||
Adds a turf to the contents, sets its zone and merges its air.
|
||||
|
||||
remove(turf/simulated/T)
|
||||
Removes a turf, sets its zone to null and erases any gas graphics.
|
||||
Invalidates the zone if it has no more tiles.
|
||||
|
||||
c_merge(zone/into)
|
||||
Invalidates this zone and adds all its former contents to into.
|
||||
|
||||
c_invalidate()
|
||||
Marks this zone as invalid and removes it from processing.
|
||||
|
||||
rebuild()
|
||||
Invalidates the zone and marks all its former tiles for updates.
|
||||
|
||||
add_tile_air(turf/simulated/T)
|
||||
Adds the air contained in T.air to the zone's air supply. Called when adding a turf.
|
||||
|
||||
tick()
|
||||
Called only when the gas content is changed. Archives values and changes gas graphics.
|
||||
|
||||
dbg_data(mob/M)
|
||||
Sends M a printout of important figures for the zone.
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/zone/var/name
|
||||
/zone/var/invalid = 0
|
||||
/zone/var/list/contents = list()
|
||||
/zone/var/list/fire_tiles = list()
|
||||
/zone/var/list/fuel_objs = list()
|
||||
|
||||
/zone/var/needs_update = 0
|
||||
|
||||
/zone/var/list/edges = list()
|
||||
|
||||
/zone/var/datum/gas_mixture/air = new
|
||||
|
||||
/zone/var/list/graphic_add = list()
|
||||
/zone/var/list/graphic_remove = list()
|
||||
|
||||
/zone/New()
|
||||
air_master.add_zone(src)
|
||||
air.temperature = TCMB
|
||||
air.group_multiplier = 1
|
||||
air.volume = CELL_VOLUME
|
||||
|
||||
/zone/proc/add(turf/simulated/T)
|
||||
#ifdef ZASDBG
|
||||
ASSERT(!invalid)
|
||||
ASSERT(istype(T))
|
||||
ASSERT(!air_master.has_valid_zone(T))
|
||||
#endif
|
||||
|
||||
var/datum/gas_mixture/turf_air = T.return_air()
|
||||
add_tile_air(turf_air)
|
||||
T.zone = src
|
||||
contents.Add(T)
|
||||
if(T.fire)
|
||||
var/obj/effect/decal/cleanable/liquid_fuel/fuel = locate() in T
|
||||
fire_tiles.Add(T)
|
||||
air_master.active_fire_zones |= src
|
||||
if(fuel) fuel_objs += fuel
|
||||
if(air.graphic)
|
||||
T.update_graphic(air.graphic)
|
||||
|
||||
/zone/proc/remove(turf/simulated/T)
|
||||
#ifdef ZASDBG
|
||||
ASSERT(!invalid)
|
||||
ASSERT(istype(T))
|
||||
ASSERT(T.zone == src)
|
||||
soft_assert(T in contents, "Lists are weird broseph")
|
||||
#endif
|
||||
contents.Remove(T)
|
||||
fire_tiles.Remove(T)
|
||||
if(T.fire)
|
||||
var/obj/effect/decal/cleanable/liquid_fuel/fuel = locate() in T
|
||||
fuel_objs -= fuel
|
||||
T.zone = null
|
||||
if(air.graphic)
|
||||
T.update_graphic(graphic_remove = air.graphic)
|
||||
if(contents.len)
|
||||
air.group_multiplier = contents.len
|
||||
else
|
||||
c_invalidate()
|
||||
|
||||
/zone/proc/c_merge(zone/into)
|
||||
#ifdef ZASDBG
|
||||
ASSERT(!invalid)
|
||||
ASSERT(istype(into))
|
||||
ASSERT(into != src)
|
||||
ASSERT(!into.invalid)
|
||||
#endif
|
||||
c_invalidate()
|
||||
var/list/air_graphic = air.graphic // Cache for sanic speed
|
||||
for(var/turf/simulated/T in contents)
|
||||
into.add(T)
|
||||
if(air_graphic)
|
||||
T.update_graphic(graphic_remove = air_graphic)
|
||||
#ifdef ZASDBG
|
||||
T.dbg(merged)
|
||||
#endif
|
||||
|
||||
//rebuild the old zone's edges so that they will be possessed by the new zone
|
||||
for(var/connection_edge/E in edges)
|
||||
if(E.contains_zone(into))
|
||||
continue //don't need to rebuild this edge
|
||||
for(var/turf/T in E.connecting_turfs)
|
||||
air_master.mark_for_update(T)
|
||||
|
||||
/zone/proc/c_invalidate()
|
||||
invalid = 1
|
||||
air_master.remove_zone(src)
|
||||
#ifdef ZASDBG
|
||||
for(var/turf/simulated/T in contents)
|
||||
T.dbg(invalid_zone)
|
||||
#endif
|
||||
|
||||
/zone/proc/rebuild()
|
||||
if(invalid) return //Short circuit for explosions where rebuild is called many times over.
|
||||
c_invalidate()
|
||||
var/list/air_graphic = air.graphic // Cache for sanic speed
|
||||
for(var/turf/simulated/T in contents)
|
||||
if(air_graphic)
|
||||
T.update_graphic(graphic_remove = air_graphic) //we need to remove the overlays so they're not doubled when the zone is rebuilt
|
||||
//T.dbg(invalid_zone)
|
||||
T.needs_air_update = 0 //Reset the marker so that it will be added to the list.
|
||||
air_master.mark_for_update(T)
|
||||
|
||||
/zone/proc/add_tile_air(datum/gas_mixture/tile_air)
|
||||
//air.volume += CELL_VOLUME
|
||||
air.group_multiplier = 1
|
||||
air.multiply(contents.len)
|
||||
air.merge(tile_air)
|
||||
air.divide(contents.len+1)
|
||||
air.group_multiplier = contents.len+1
|
||||
|
||||
/zone/proc/tick()
|
||||
if(air.temperature >= PHORON_FLASHPOINT && !(src in air_master.active_fire_zones) && air.check_combustability() && contents.len)
|
||||
var/turf/T = pick(contents)
|
||||
if(istype(T))
|
||||
T.create_fire(vsc.fire_firelevel_multiplier)
|
||||
|
||||
if(air.check_tile_graphic(graphic_add, graphic_remove))
|
||||
for(var/turf/simulated/T in contents)
|
||||
T.update_graphic(graphic_add, graphic_remove)
|
||||
graphic_add.len = 0
|
||||
graphic_remove.len = 0
|
||||
|
||||
for(var/connection_edge/E in edges)
|
||||
if(E.sleeping)
|
||||
E.recheck()
|
||||
|
||||
/zone/proc/dbg_data(mob/M)
|
||||
to_chat(M,name)
|
||||
for(var/g in air.gas)
|
||||
to_chat(M, "[gas_data.name[g]]: [air.gas[g]]")
|
||||
to_chat(M, "P: [air.return_pressure()] kPa V: [air.volume]L T: [air.temperature]°K ([air.temperature - T0C]°C)")
|
||||
to_chat(M, "O2 per N2: [(air.gas["nitrogen"] ? air.gas["oxygen"]/air.gas["nitrogen"] : "N/A")] Moles: [air.total_moles]")
|
||||
to_chat(M, "Simulated: [contents.len] ([air.group_multiplier])")
|
||||
//to_chat(M, "Unsimulated: [unsimulated_contents.len]")
|
||||
//to_chat(M, "Edges: [edges.len]")
|
||||
if(invalid)
|
||||
to_chat(M, "Invalid!")
|
||||
var/zone_edges = 0
|
||||
var/space_edges = 0
|
||||
var/space_coefficient = 0
|
||||
for(var/connection_edge/E in edges)
|
||||
if(E.type == /connection_edge/zone) zone_edges++
|
||||
else
|
||||
space_edges++
|
||||
space_coefficient += E.coefficient
|
||||
to_chat(M, "[E:air:return_pressure()]kPa")
|
||||
|
||||
to_chat(M, "Zone Edges: [zone_edges]")
|
||||
to_chat(M, "Space Edges: [space_edges] ([space_coefficient] connections)")
|
||||
|
||||
//for(var/turf/T in unsimulated_contents)
|
||||
// to_chat(M, "[T] at ([T.x],[T.y])")
|
||||
|
||||
+295
-295
@@ -1,295 +1,295 @@
|
||||
/datum/track
|
||||
var/title
|
||||
var/track
|
||||
|
||||
/datum/track/New(_title, _track)
|
||||
title = _title
|
||||
track = _track
|
||||
|
||||
/datum/track/proc/GetTrack()
|
||||
if(ispath(track, /decl/music_track))
|
||||
var/decl/music_track/music_track = GET_DECL(track)
|
||||
return music_track.song
|
||||
return track // Allows admins to continue their adminbus simply by overriding the track var
|
||||
|
||||
//Track List
|
||||
|
||||
/decl/music_track/absconditus
|
||||
artist = "Zhay Tee"
|
||||
title = "Absconditus"
|
||||
album = "Minerva: Metastasis OST"
|
||||
song = 'sound/music/traitor.ogg'
|
||||
license = /decl/license/cc_by_nc_sa_3_0
|
||||
url = "https://bandcamp.zhaytee.net/track/absconditus"
|
||||
|
||||
/decl/music_track/ambispace
|
||||
artist = "Alstroemeria Records"
|
||||
title = "Bad Apple!! (slowed down)"
|
||||
song = 'sound/ambience/ambispace.ogg'
|
||||
license = /decl/license/grandfathered
|
||||
|
||||
/decl/music_track/chasing_time
|
||||
artist = "Dexter Britain"
|
||||
title = "Chasing Time"
|
||||
album = "Creative Commons Vol. 1"
|
||||
song = 'sound/music/chasing_time.ogg'
|
||||
license = /decl/license/cc_by_nc_sa_3_0
|
||||
url = "http://www.dexterbritain.co.uk"
|
||||
|
||||
/decl/music_track/clouds_of_fire
|
||||
artist = "Hector/dMk"
|
||||
title = "Clouds of Fire"
|
||||
song = 'sound/music/clouds.s3m'
|
||||
license = /decl/license/grandfathered
|
||||
url = "https://modarchive.org/index.php?request=view_by_moduleid&query=73980"
|
||||
|
||||
/decl/music_track/comet_haley
|
||||
artist = "Stellardrone"
|
||||
title = "Comet Halley"
|
||||
album = "Light Years"
|
||||
song = 'sound/music/comet_haley.ogg'
|
||||
license = /decl/license/cc_by_3_0
|
||||
url = "http://freemusicarchive.org/music/Stellardrone/Light_Years_1227/07_Comet_Halley"
|
||||
|
||||
/decl/music_track/df_theme
|
||||
artist = "Beyond Quality"
|
||||
title = "Dwarf Fortress Main Theme"
|
||||
song = 'sound/ambience/song_game.ogg'
|
||||
license = /decl/license/grandfathered
|
||||
|
||||
/decl/music_track/digit_one
|
||||
artist = "Kelly Bailey"
|
||||
title = "Half-Life 2 - Tracking Device"
|
||||
song = 'sound/music/1.ogg'
|
||||
license = /decl/license/grandfathered
|
||||
|
||||
/decl/music_track/dilbert
|
||||
title = "Robocop.mp3"
|
||||
album = "Dehumanize Yourself and Face to Bloodshed"
|
||||
artist = "CBoyardee"
|
||||
song = 'sound/music/title2.ogg'
|
||||
license = /decl/license/grandfathered
|
||||
|
||||
/decl/music_track/elibao
|
||||
artist = "Earthcrusher"
|
||||
title = "Every Light is Blinking at Once"
|
||||
song = 'sound/music/elibao.ogg'
|
||||
license = /decl/license/cc_by_nc_sa_3_0
|
||||
url = "https://soundcloud.com/alexanderdivine/every-light-is-blinking-at-once"
|
||||
|
||||
/decl/music_track/endless_space
|
||||
artist = "SolusLunes"
|
||||
title = "Endless Space"
|
||||
song = 'sound/music/space.ogg'
|
||||
license = /decl/license/cc_by_3_0
|
||||
url = "https://www.newgrounds.com/audio/listen/67583"
|
||||
|
||||
/decl/music_track/epicintro2015
|
||||
artist = "Sascha Ende"
|
||||
title = "Epic Intro 2015"
|
||||
song = 'sound/music/epic2015.ogg'
|
||||
license = /decl/license/cc_by_4_0
|
||||
url = "https://filmmusic.io/song/323-epic-intro-2015/"
|
||||
|
||||
/decl/music_track/floating
|
||||
artist = "Floating"
|
||||
title = "Unknown"
|
||||
song = 'sound/music/main.ogg'
|
||||
license = /decl/license/grandfathered
|
||||
|
||||
/decl/music_track/hull_rupture
|
||||
artist = "Mikazu"
|
||||
title = "Hull Rupture"
|
||||
song = 'sound/music/hull_rupture.ogg'
|
||||
license = /decl/license/cc_by_nc_3_0
|
||||
url = "https://soundcloud.com/mikazu-1/baystation-12-hull-rupture"
|
||||
|
||||
/decl/music_track/human
|
||||
artist = "Borrtex"
|
||||
title = "Human"
|
||||
album = "Creation"
|
||||
song = 'sound/music/human.ogg'
|
||||
license = /decl/license/cc_by_nc_3_0
|
||||
url = "http://freemusicarchive.org/music/Borrtex/Creation/Borrtex_11_Human"
|
||||
|
||||
/decl/music_track/lasers
|
||||
artist = "Earthcrusher"
|
||||
title = "Lasers Rip Apart The Bulkhead"
|
||||
song = 'sound/music/lasers_rip_apart_the_bulkhead.ogg'
|
||||
license = /decl/license/cc_by_nc_sa_3_0
|
||||
url = "https://soundcloud.com/alexanderdivine/lasers-rip-apart-the-bulkhead"
|
||||
|
||||
/decl/music_track/level3_mod
|
||||
artist = "X-CEED"
|
||||
title = "Flip-Flap"
|
||||
song = 'sound/music/title1.ogg'
|
||||
license = /decl/license/grandfathered
|
||||
url = "https://aminet.net/package/mods/xceed/Flipflap"
|
||||
|
||||
/decl/music_track/marhaba
|
||||
artist = "Ian Alex Mac"
|
||||
title = "Marhaba"
|
||||
album = "Cues"
|
||||
song = 'sound/music/marhaba.ogg'
|
||||
license = /decl/license/cc_by_3_0
|
||||
url = "http://freemusicarchive.org/music/Ian_Alex_Mac/Cues/Marhaba"
|
||||
|
||||
/decl/music_track/lysendraa
|
||||
artist = "TALES"
|
||||
title = "Memories Of Lysendraa"
|
||||
album = "The Seskian Wars"
|
||||
song = 'sound/music/lysendraa.ogg'
|
||||
license = /decl/license/cc_by_nc_nd_4_0
|
||||
url = "http://freemusicarchive.org/music/TALES/The_Seskian_Wars/8-Memories_Of_Lysendraa"
|
||||
|
||||
/decl/music_track/misanthropic_corridors
|
||||
artist = "Mikazu"
|
||||
title = "Misanthropic Corridors"
|
||||
song = 'sound/music/misanthropic_corridors.ogg'
|
||||
license = /decl/license/cc_by_sa_3_0
|
||||
url = "https://soundcloud.com/mikazu-1/baystation-12-misanthropic-corridors"
|
||||
|
||||
/decl/music_track/one_loop
|
||||
artist = "Swedish House Mafia"
|
||||
title = "One (abridged loop)"
|
||||
song = 'sound/misc/TestLoop1.ogg'
|
||||
license = /decl/license/grandfathered
|
||||
|
||||
/decl/music_track/pwmur
|
||||
artist = "Earthcrusher"
|
||||
title = "Phoron will make us rich"
|
||||
song = 'sound/music/pwmur.ogg'
|
||||
license = /decl/license/cc_by_nc_sa_3_0
|
||||
url = "https://soundcloud.com/alexanderdivine/phoron-will-make-us-rich"
|
||||
|
||||
/decl/music_track/rimward_cruise
|
||||
artist = "Mikazu"
|
||||
title = "Rimward Cruise"
|
||||
song = 'sound/music/rimward_cruise.ogg'
|
||||
license = /decl/license/cc_by_sa_3_0
|
||||
url = "https://soundcloud.com/mikazu-1/baystation-12-rimward-cruise"
|
||||
|
||||
/decl/music_track/salutjohn
|
||||
artist = "Quimorucru"
|
||||
title = "Salut John"
|
||||
song = 'sound/music/salutjohn.ogg'
|
||||
album = "Un méchant party"
|
||||
license = /decl/license/cc_by_nc_nd_4_0
|
||||
url = "http://freemusicarchive.org/music/Quimorucru/Un_mchant_party/Quimorucru_-_Un_mchant_party__Compilation__-_20_Salut_John"
|
||||
|
||||
/decl/music_track/space_oddity
|
||||
artist = "Chris Hadfield"
|
||||
title = "Space Oddity"
|
||||
song = 'sound/music/space_oddity.ogg'
|
||||
license = /decl/license/grandfathered
|
||||
|
||||
/decl/music_track/thunderdome
|
||||
artist = "MashedByMachines"
|
||||
title = "THUNDERDOME (a.k.a. -Sector11)"
|
||||
song = 'sound/music/THUNDERDOME.ogg'
|
||||
license = /decl/license/cc_by_nc_sa_3_0
|
||||
url = "https://www.newgrounds.com/audio/listen/312622"
|
||||
|
||||
/decl/music_track/treacherous_voyage
|
||||
artist = "Jon Luc Hefferman"
|
||||
title = "Treacherous Voyage"
|
||||
album = "Eilean Mor"
|
||||
song = 'sound/music/treacherous_voyage.ogg'
|
||||
license = /decl/license/cc_by_nc_3_0
|
||||
url = "http://freemusicarchive.org/music/Jon_Luc_Hefferman/20170730112628534/Treacherous_Voyage"
|
||||
|
||||
/decl/music_track/voidsent
|
||||
artist = "Mikazu"
|
||||
title = "Voidsent"
|
||||
song = 'sound/music/voidsent.ogg'
|
||||
license = /decl/license/cc_by_sa_3_0
|
||||
url = "https://soundcloud.com/mikazu-1/baystation-12-voidsent"
|
||||
|
||||
/decl/music_track/wake
|
||||
artist = "Ryan Little"
|
||||
title = "Wake"
|
||||
song = 'sound/music/wake.ogg'
|
||||
license = /decl/license/cc_by_nc_nd_4_0
|
||||
url = "http://freemusicarchive.org/music/Ryan_Little/~/Ryan_Little_-_Wake"
|
||||
|
||||
/decl/music_track/inorbit
|
||||
artist = "Chronox"
|
||||
title = "In Orbit"
|
||||
song = 'sound/music/europa/Chronox_-_03_-_In_Orbit.ogg'
|
||||
license = /decl/license/cc_by_4_0
|
||||
url = "freemusicarchive.org/music/Chronox_2/Voyager/Chronox_-_02_-_In_Orbit"
|
||||
|
||||
/decl/music_track/martiancowboy
|
||||
artist = "Kevin MacLeod"
|
||||
title = "Martian Cowboy"
|
||||
song = 'sound/music/europa/Martian Cowboy.ogg'
|
||||
license = /decl/license/cc_by_3_0
|
||||
url = "https://incompetech.com/music/royalty-free/index.html?isrc=usuan1100349"
|
||||
|
||||
/decl/music_track/monument
|
||||
artist = "Six Umbrellas"
|
||||
title = "Monument"
|
||||
song = 'sound/music/europa/Six_Umbrellas_-_05_-_Monument.ogg'
|
||||
license = /decl/license/cc_by_sa_4_0
|
||||
url = "https://sixumbrellas.bandcamp.com/album/the-psychedelic-and"
|
||||
|
||||
/decl/music_track/asfarasitgets
|
||||
artist = "A Drop A Day"
|
||||
title = "As Far As It Gets"
|
||||
song = 'sound/music/europa/asfarasitgets.ogg'
|
||||
license = /decl/license/cc_by_sa_4_0
|
||||
url = "https://ghyti.bandcamp.com/"
|
||||
|
||||
/decl/music_track/eighties
|
||||
artist = "A Drop A Day"
|
||||
title = "80s All Over Again"
|
||||
song = 'sound/music/europa/80salloveragain.ogg'
|
||||
license = /decl/license/cc_by_sa_4_0
|
||||
url = "https://ghyti.bandcamp.com/"
|
||||
|
||||
/decl/music_track/wildencounters
|
||||
artist = "A Drop A Day"
|
||||
title = "Wild Encounters"
|
||||
song = 'sound/music/europa/WildEncounters.ogg'
|
||||
license = /decl/license/cc_by_sa_4_0
|
||||
url = "https://ghyti.bandcamp.com/"
|
||||
|
||||
/decl/music_track/torn
|
||||
artist = "Macamoto"
|
||||
title = "Torn"
|
||||
song = 'sound/music/europa/Macamoto_-_05_-_Torn.ogg'
|
||||
license = /decl/license/cc_by_nc_sa_3_0
|
||||
url = "https://macamoto.bandcamp.com/track/torn"
|
||||
|
||||
/decl/music_track/nebula
|
||||
artist = "Pulse Emitter"
|
||||
title = "Nebula"
|
||||
song = 'sound/music/europa/Pulse_Emitter_-_04_-_Nebula.ogg'
|
||||
license = /decl/license/cc_by_nc_sa_3_0
|
||||
url = "https://pulseemitter.bandcamp.com/track/nebula"
|
||||
|
||||
/decl/music_track/stellartransit
|
||||
artist = "Serithi"
|
||||
title = "Stellar Transit"
|
||||
song = 'sound/ambience/space/space_serithi.ogg'
|
||||
license = /decl/license/cc_by_sa_3_0
|
||||
url = "https://www.byond.com/members/Serithi"
|
||||
|
||||
/decl/music_track/clown
|
||||
artist = "Unknown"
|
||||
title = "Clown"
|
||||
song = 'sound/music/clown.ogg'
|
||||
license = /decl/license/grandfathered
|
||||
|
||||
/decl/music_track/spaceasshole
|
||||
artist = "Chris Remo"
|
||||
title = "Space Asshole"
|
||||
song = 'sound/music/space_asshole.ogg'
|
||||
license = /decl/license/grandfathered
|
||||
url = "https://idlethumbs.bandcamp.com/"
|
||||
|
||||
/decl/music_track/russianrapdisco
|
||||
artist = "Unknown"
|
||||
title = "Russkiy rep Diskoteka"
|
||||
song = 'sound/music/russianrapdisco.ogg'
|
||||
license = /decl/license/grandfathered
|
||||
/datum/track
|
||||
var/title
|
||||
var/track
|
||||
|
||||
/datum/track/New(_title, _track)
|
||||
title = _title
|
||||
track = _track
|
||||
|
||||
/datum/track/proc/GetTrack()
|
||||
if(ispath(track, /decl/music_track))
|
||||
var/decl/music_track/music_track = GET_DECL(track)
|
||||
return music_track.song
|
||||
return track // Allows admins to continue their adminbus simply by overriding the track var
|
||||
|
||||
//Track List
|
||||
|
||||
/decl/music_track/absconditus
|
||||
artist = "Zhay Tee"
|
||||
title = "Absconditus"
|
||||
album = "Minerva: Metastasis OST"
|
||||
song = 'sound/music/traitor.ogg'
|
||||
license = /decl/license/cc_by_nc_sa_3_0
|
||||
url = "https://bandcamp.zhaytee.net/track/absconditus"
|
||||
|
||||
/decl/music_track/ambispace
|
||||
artist = "Alstroemeria Records"
|
||||
title = "Bad Apple!! (slowed down)"
|
||||
song = 'sound/ambience/ambispace.ogg'
|
||||
license = /decl/license/grandfathered
|
||||
|
||||
/decl/music_track/chasing_time
|
||||
artist = "Dexter Britain"
|
||||
title = "Chasing Time"
|
||||
album = "Creative Commons Vol. 1"
|
||||
song = 'sound/music/chasing_time.ogg'
|
||||
license = /decl/license/cc_by_nc_sa_3_0
|
||||
url = "http://www.dexterbritain.co.uk"
|
||||
|
||||
/decl/music_track/clouds_of_fire
|
||||
artist = "Hector/dMk"
|
||||
title = "Clouds of Fire"
|
||||
song = 'sound/music/clouds.s3m'
|
||||
license = /decl/license/grandfathered
|
||||
url = "https://modarchive.org/index.php?request=view_by_moduleid&query=73980"
|
||||
|
||||
/decl/music_track/comet_haley
|
||||
artist = "Stellardrone"
|
||||
title = "Comet Halley"
|
||||
album = "Light Years"
|
||||
song = 'sound/music/comet_haley.ogg'
|
||||
license = /decl/license/cc_by_3_0
|
||||
url = "http://freemusicarchive.org/music/Stellardrone/Light_Years_1227/07_Comet_Halley"
|
||||
|
||||
/decl/music_track/df_theme
|
||||
artist = "Beyond Quality"
|
||||
title = "Dwarf Fortress Main Theme"
|
||||
song = 'sound/ambience/song_game.ogg'
|
||||
license = /decl/license/grandfathered
|
||||
|
||||
/decl/music_track/digit_one
|
||||
artist = "Kelly Bailey"
|
||||
title = "Half-Life 2 - Tracking Device"
|
||||
song = 'sound/music/1.ogg'
|
||||
license = /decl/license/grandfathered
|
||||
|
||||
/decl/music_track/dilbert
|
||||
title = "Robocop.mp3"
|
||||
album = "Dehumanize Yourself and Face to Bloodshed"
|
||||
artist = "CBoyardee"
|
||||
song = 'sound/music/title2.ogg'
|
||||
license = /decl/license/grandfathered
|
||||
|
||||
/decl/music_track/elibao
|
||||
artist = "Earthcrusher"
|
||||
title = "Every Light is Blinking at Once"
|
||||
song = 'sound/music/elibao.ogg'
|
||||
license = /decl/license/cc_by_nc_sa_3_0
|
||||
url = "https://soundcloud.com/alexanderdivine/every-light-is-blinking-at-once"
|
||||
|
||||
/decl/music_track/endless_space
|
||||
artist = "SolusLunes"
|
||||
title = "Endless Space"
|
||||
song = 'sound/music/space.ogg'
|
||||
license = /decl/license/cc_by_3_0
|
||||
url = "https://www.newgrounds.com/audio/listen/67583"
|
||||
|
||||
/decl/music_track/epicintro2015
|
||||
artist = "Sascha Ende"
|
||||
title = "Epic Intro 2015"
|
||||
song = 'sound/music/epic2015.ogg'
|
||||
license = /decl/license/cc_by_4_0
|
||||
url = "https://filmmusic.io/song/323-epic-intro-2015/"
|
||||
|
||||
/decl/music_track/floating
|
||||
artist = "Floating"
|
||||
title = "Unknown"
|
||||
song = 'sound/music/main.ogg'
|
||||
license = /decl/license/grandfathered
|
||||
|
||||
/decl/music_track/hull_rupture
|
||||
artist = "Mikazu"
|
||||
title = "Hull Rupture"
|
||||
song = 'sound/music/hull_rupture.ogg'
|
||||
license = /decl/license/cc_by_nc_3_0
|
||||
url = "https://soundcloud.com/mikazu-1/baystation-12-hull-rupture"
|
||||
|
||||
/decl/music_track/human
|
||||
artist = "Borrtex"
|
||||
title = "Human"
|
||||
album = "Creation"
|
||||
song = 'sound/music/human.ogg'
|
||||
license = /decl/license/cc_by_nc_3_0
|
||||
url = "http://freemusicarchive.org/music/Borrtex/Creation/Borrtex_11_Human"
|
||||
|
||||
/decl/music_track/lasers
|
||||
artist = "Earthcrusher"
|
||||
title = "Lasers Rip Apart The Bulkhead"
|
||||
song = 'sound/music/lasers_rip_apart_the_bulkhead.ogg'
|
||||
license = /decl/license/cc_by_nc_sa_3_0
|
||||
url = "https://soundcloud.com/alexanderdivine/lasers-rip-apart-the-bulkhead"
|
||||
|
||||
/decl/music_track/level3_mod
|
||||
artist = "X-CEED"
|
||||
title = "Flip-Flap"
|
||||
song = 'sound/music/title1.ogg'
|
||||
license = /decl/license/grandfathered
|
||||
url = "https://aminet.net/package/mods/xceed/Flipflap"
|
||||
|
||||
/decl/music_track/marhaba
|
||||
artist = "Ian Alex Mac"
|
||||
title = "Marhaba"
|
||||
album = "Cues"
|
||||
song = 'sound/music/marhaba.ogg'
|
||||
license = /decl/license/cc_by_3_0
|
||||
url = "http://freemusicarchive.org/music/Ian_Alex_Mac/Cues/Marhaba"
|
||||
|
||||
/decl/music_track/lysendraa
|
||||
artist = "TALES"
|
||||
title = "Memories Of Lysendraa"
|
||||
album = "The Seskian Wars"
|
||||
song = 'sound/music/lysendraa.ogg'
|
||||
license = /decl/license/cc_by_nc_nd_4_0
|
||||
url = "http://freemusicarchive.org/music/TALES/The_Seskian_Wars/8-Memories_Of_Lysendraa"
|
||||
|
||||
/decl/music_track/misanthropic_corridors
|
||||
artist = "Mikazu"
|
||||
title = "Misanthropic Corridors"
|
||||
song = 'sound/music/misanthropic_corridors.ogg'
|
||||
license = /decl/license/cc_by_sa_3_0
|
||||
url = "https://soundcloud.com/mikazu-1/baystation-12-misanthropic-corridors"
|
||||
|
||||
/decl/music_track/one_loop
|
||||
artist = "Swedish House Mafia"
|
||||
title = "One (abridged loop)"
|
||||
song = 'sound/misc/TestLoop1.ogg'
|
||||
license = /decl/license/grandfathered
|
||||
|
||||
/decl/music_track/pwmur
|
||||
artist = "Earthcrusher"
|
||||
title = "Phoron will make us rich"
|
||||
song = 'sound/music/pwmur.ogg'
|
||||
license = /decl/license/cc_by_nc_sa_3_0
|
||||
url = "https://soundcloud.com/alexanderdivine/phoron-will-make-us-rich"
|
||||
|
||||
/decl/music_track/rimward_cruise
|
||||
artist = "Mikazu"
|
||||
title = "Rimward Cruise"
|
||||
song = 'sound/music/rimward_cruise.ogg'
|
||||
license = /decl/license/cc_by_sa_3_0
|
||||
url = "https://soundcloud.com/mikazu-1/baystation-12-rimward-cruise"
|
||||
|
||||
/decl/music_track/salutjohn
|
||||
artist = "Quimorucru"
|
||||
title = "Salut John"
|
||||
song = 'sound/music/salutjohn.ogg'
|
||||
album = "Un m�chant party"
|
||||
license = /decl/license/cc_by_nc_nd_4_0
|
||||
url = "http://freemusicarchive.org/music/Quimorucru/Un_mchant_party/Quimorucru_-_Un_mchant_party__Compilation__-_20_Salut_John"
|
||||
|
||||
/decl/music_track/space_oddity
|
||||
artist = "Chris Hadfield"
|
||||
title = "Space Oddity"
|
||||
song = 'sound/music/space_oddity.ogg'
|
||||
license = /decl/license/grandfathered
|
||||
|
||||
/decl/music_track/thunderdome
|
||||
artist = "MashedByMachines"
|
||||
title = "THUNDERDOME (a.k.a. -Sector11)"
|
||||
song = 'sound/music/THUNDERDOME.ogg'
|
||||
license = /decl/license/cc_by_nc_sa_3_0
|
||||
url = "https://www.newgrounds.com/audio/listen/312622"
|
||||
|
||||
/decl/music_track/treacherous_voyage
|
||||
artist = "Jon Luc Hefferman"
|
||||
title = "Treacherous Voyage"
|
||||
album = "Eilean Mor"
|
||||
song = 'sound/music/treacherous_voyage.ogg'
|
||||
license = /decl/license/cc_by_nc_3_0
|
||||
url = "http://freemusicarchive.org/music/Jon_Luc_Hefferman/20170730112628534/Treacherous_Voyage"
|
||||
|
||||
/decl/music_track/voidsent
|
||||
artist = "Mikazu"
|
||||
title = "Voidsent"
|
||||
song = 'sound/music/voidsent.ogg'
|
||||
license = /decl/license/cc_by_sa_3_0
|
||||
url = "https://soundcloud.com/mikazu-1/baystation-12-voidsent"
|
||||
|
||||
/decl/music_track/wake
|
||||
artist = "Ryan Little"
|
||||
title = "Wake"
|
||||
song = 'sound/music/wake.ogg'
|
||||
license = /decl/license/cc_by_nc_nd_4_0
|
||||
url = "http://freemusicarchive.org/music/Ryan_Little/~/Ryan_Little_-_Wake"
|
||||
|
||||
/decl/music_track/inorbit
|
||||
artist = "Chronox"
|
||||
title = "In Orbit"
|
||||
song = 'sound/music/europa/Chronox_-_03_-_In_Orbit.ogg'
|
||||
license = /decl/license/cc_by_4_0
|
||||
url = "freemusicarchive.org/music/Chronox_2/Voyager/Chronox_-_02_-_In_Orbit"
|
||||
|
||||
/decl/music_track/martiancowboy
|
||||
artist = "Kevin MacLeod"
|
||||
title = "Martian Cowboy"
|
||||
song = 'sound/music/europa/Martian Cowboy.ogg'
|
||||
license = /decl/license/cc_by_3_0
|
||||
url = "https://incompetech.com/music/royalty-free/index.html?isrc=usuan1100349"
|
||||
|
||||
/decl/music_track/monument
|
||||
artist = "Six Umbrellas"
|
||||
title = "Monument"
|
||||
song = 'sound/music/europa/Six_Umbrellas_-_05_-_Monument.ogg'
|
||||
license = /decl/license/cc_by_sa_4_0
|
||||
url = "https://sixumbrellas.bandcamp.com/album/the-psychedelic-and"
|
||||
|
||||
/decl/music_track/asfarasitgets
|
||||
artist = "A Drop A Day"
|
||||
title = "As Far As It Gets"
|
||||
song = 'sound/music/europa/asfarasitgets.ogg'
|
||||
license = /decl/license/cc_by_sa_4_0
|
||||
url = "https://ghyti.bandcamp.com/"
|
||||
|
||||
/decl/music_track/eighties
|
||||
artist = "A Drop A Day"
|
||||
title = "80s All Over Again"
|
||||
song = 'sound/music/europa/80salloveragain.ogg'
|
||||
license = /decl/license/cc_by_sa_4_0
|
||||
url = "https://ghyti.bandcamp.com/"
|
||||
|
||||
/decl/music_track/wildencounters
|
||||
artist = "A Drop A Day"
|
||||
title = "Wild Encounters"
|
||||
song = 'sound/music/europa/WildEncounters.ogg'
|
||||
license = /decl/license/cc_by_sa_4_0
|
||||
url = "https://ghyti.bandcamp.com/"
|
||||
|
||||
/decl/music_track/torn
|
||||
artist = "Macamoto"
|
||||
title = "Torn"
|
||||
song = 'sound/music/europa/Macamoto_-_05_-_Torn.ogg'
|
||||
license = /decl/license/cc_by_nc_sa_3_0
|
||||
url = "https://macamoto.bandcamp.com/track/torn"
|
||||
|
||||
/decl/music_track/nebula
|
||||
artist = "Pulse Emitter"
|
||||
title = "Nebula"
|
||||
song = 'sound/music/europa/Pulse_Emitter_-_04_-_Nebula.ogg'
|
||||
license = /decl/license/cc_by_nc_sa_3_0
|
||||
url = "https://pulseemitter.bandcamp.com/track/nebula"
|
||||
|
||||
/decl/music_track/stellartransit
|
||||
artist = "Serithi"
|
||||
title = "Stellar Transit"
|
||||
song = 'sound/ambience/space/space_serithi.ogg'
|
||||
license = /decl/license/cc_by_sa_3_0
|
||||
url = "https://www.byond.com/members/Serithi"
|
||||
|
||||
/decl/music_track/clown
|
||||
artist = "Unknown"
|
||||
title = "Clown"
|
||||
song = 'sound/music/clown.ogg'
|
||||
license = /decl/license/grandfathered
|
||||
|
||||
/decl/music_track/spaceasshole
|
||||
artist = "Chris Remo"
|
||||
title = "Space Asshole"
|
||||
song = 'sound/music/space_asshole.ogg'
|
||||
license = /decl/license/grandfathered
|
||||
url = "https://idlethumbs.bandcamp.com/"
|
||||
|
||||
/decl/music_track/russianrapdisco
|
||||
artist = "Unknown"
|
||||
title = "Russkiy rep Diskoteka"
|
||||
song = 'sound/music/russianrapdisco.ogg'
|
||||
license = /decl/license/grandfathered
|
||||
|
||||
@@ -1,57 +1,57 @@
|
||||
//Qerrbalak
|
||||
|
||||
/datum/locations/qerrvallis
|
||||
name = "Qerr'Vallis"
|
||||
desc = "The home system of the Skrell, which translates to 'Star of the royals' or 'Light of the Crown'."
|
||||
|
||||
/datum/locations/qerrvallis/New(var/creator)
|
||||
contents.Add(
|
||||
new /datum/locations/qerrbalak(src)
|
||||
)
|
||||
..(creator)
|
||||
|
||||
/datum/locations/qerrbalak
|
||||
name = "Qerrbalak"
|
||||
desc = "The homeworld of the Skrell. It is a planet with a humid atmosphere, featuring plenty of swamps and jungles. \
|
||||
The world is filled with Skrellian cities which often sit on stilts."
|
||||
|
||||
/datum/locations/qerrbalak/New(var/creator)
|
||||
contents.Add(
|
||||
new /datum/locations/qarrkloa(src),
|
||||
new /datum/locations/moglar(src),
|
||||
new /datum/locations/miqoxi(src),
|
||||
new /datum/locations/kallo(src),
|
||||
new /datum/locations/glimorr(src)
|
||||
)
|
||||
..(creator)
|
||||
|
||||
/datum/locations/qarrkloa
|
||||
name = "Qarr’kloa"
|
||||
desc = "Mythically considered the first State-City ever built by Skrellkind, Qarr’kloa attracts thousands of tourists and archeologists \
|
||||
every year thanks to the ancestral structures, built thousands of years ago by the Skrell, scattered in its vicinity."
|
||||
|
||||
/datum/locations/moglar
|
||||
name = "Mo’glar"
|
||||
desc = "Built on the northern coast of Qorr’gloa, Mo’glar was, at the time of Xi’Krri’oal’s colonization, a major port of trade between \
|
||||
the two continents of the planet. It has kept that role to this day, although it never truly adapted to inter-planetary trade, leaving the \
|
||||
task of exporting Qerrbalak’s goods to other planets to other cities, mainly on Xi’Krri’oal."
|
||||
|
||||
/datum/locations/miqoxi
|
||||
name = "Mi’qoxi"
|
||||
desc = "This city, built on the small patch of islands north of Xi’Krri’oal, owes most of its current status to the infamous Qerr-Skria \
|
||||
Glo’morr Krrixi who, in the 23th century BCE, built a large empire spanning from the Qo’rria Sea to the current city of Qal’krrea, mostly \
|
||||
through military conquests. As the center of his empire, Mi’qoxi became a large center of population and industry and while the fall of \
|
||||
the empire at Krrixi’s death did put a halt to the city’s growth, it is still today one of the biggest cities of the continent."
|
||||
|
||||
/datum/locations/kallo
|
||||
name = "Kal’lo"
|
||||
desc = "A relatively recent city compared to the other major cities of the planet, Kal’lo quickly rose in status by fathering some of the most \
|
||||
important figures of modern skrellian society. It is notably the birthplace of Xikrra Kol’goa, who wrote the Lo’glo’mog’rri in 46 BCE, \
|
||||
the constitutional code that is still used by most of the skrellian states in the galaxy."
|
||||
|
||||
/datum/locations/glimorr
|
||||
name = "Gli’morr"
|
||||
desc = "While Gli’morr is not as heavily-populated than its continental counterparts, its touristic potential made it rich enough to finance \
|
||||
the biggest research center of the planet, covering dozens of scientific fields. Its Academy is just as much renowned, and even the lowest \
|
||||
Qrri-Mog (although most of its students prefer to continue their studies until they become Qerr-Mog) coming out of its classrooms is \
|
||||
considered part of the elite."
|
||||
//Qerrbalak
|
||||
|
||||
/datum/locations/qerrvallis
|
||||
name = "Qerr'Vallis"
|
||||
desc = "The home system of the Skrell, which translates to 'Star of the royals' or 'Light of the Crown'."
|
||||
|
||||
/datum/locations/qerrvallis/New(var/creator)
|
||||
contents.Add(
|
||||
new /datum/locations/qerrbalak(src)
|
||||
)
|
||||
..(creator)
|
||||
|
||||
/datum/locations/qerrbalak
|
||||
name = "Qerrbalak"
|
||||
desc = "The homeworld of the Skrell. It is a planet with a humid atmosphere, featuring plenty of swamps and jungles. \
|
||||
The world is filled with Skrellian cities which often sit on stilts."
|
||||
|
||||
/datum/locations/qerrbalak/New(var/creator)
|
||||
contents.Add(
|
||||
new /datum/locations/qarrkloa(src),
|
||||
new /datum/locations/moglar(src),
|
||||
new /datum/locations/miqoxi(src),
|
||||
new /datum/locations/kallo(src),
|
||||
new /datum/locations/glimorr(src)
|
||||
)
|
||||
..(creator)
|
||||
|
||||
/datum/locations/qarrkloa
|
||||
name = "Qarr'kloa"
|
||||
desc = "Mythically considered the first State-City ever built by Skrellkind, Qarr'kloa attracts thousands of tourists and archeologists \
|
||||
every year thanks to the ancestral structures, built thousands of years ago by the Skrell, scattered in its vicinity."
|
||||
|
||||
/datum/locations/moglar
|
||||
name = "Mo'glar"
|
||||
desc = "Built on the northern coast of Qorr'gloa, Mo'glar was, at the time of Xi'Krri'oal's colonization, a major port of trade between \
|
||||
the two continents of the planet. It has kept that role to this day, although it never truly adapted to inter-planetary trade, leaving the \
|
||||
task of exporting Qerrbalak's goods to other planets to other cities, mainly on Xi'Krri'oal."
|
||||
|
||||
/datum/locations/miqoxi
|
||||
name = "Mi'qoxi"
|
||||
desc = "This city, built on the small patch of islands north of Xi'Krri'oal, owes most of its current status to the infamous Qerr-Skria \
|
||||
Glo'morr Krrixi who, in the 23th century BCE, built a large empire spanning from the Qo'rria Sea to the current city of Qal'krrea, mostly \
|
||||
through military conquests. As the center of his empire, Mi'qoxi became a large center of population and industry and while the fall of \
|
||||
the empire at Krrixi's death did put a halt to the city's growth, it is still today one of the biggest cities of the continent."
|
||||
|
||||
/datum/locations/kallo
|
||||
name = "Kal'lo"
|
||||
desc = "A relatively recent city compared to the other major cities of the planet, Kal'lo quickly rose in status by fathering some of the most \
|
||||
important figures of modern skrellian society. It is notably the birthplace of Xikrra Kol'goa, who wrote the Lo'glo'mog'rri in 46 BCE, \
|
||||
the constitutional code that is still used by most of the skrellian states in the galaxy."
|
||||
|
||||
/datum/locations/glimorr
|
||||
name = "Gli'morr"
|
||||
desc = "While Gli'morr is not as heavily-populated than its continental counterparts, its touristic potential made it rich enough to finance \
|
||||
the biggest research center of the planet, covering dozens of scientific fields. Its Academy is just as much renowned, and even the lowest \
|
||||
Qrri-Mog (although most of its students prefer to continue their studies until they become Qerr-Mog) coming out of its classrooms is \
|
||||
considered part of the elite."
|
||||
|
||||
@@ -1,68 +1,68 @@
|
||||
//Vir
|
||||
|
||||
/datum/locations/vir
|
||||
name = "Vir"
|
||||
desc = "Vir is a human system that sits between the inner and outer systems of human-controlled space."
|
||||
|
||||
/datum/locations/vir/New(var/creator)
|
||||
contents.Add(
|
||||
new /datum/locations/firnir(src),
|
||||
new /datum/locations/tyr(src),
|
||||
new /datum/locations/sif(src),
|
||||
new /datum/locations/magni(src),
|
||||
new /datum/locations/kara(src),
|
||||
new /datum/locations/rota(src)
|
||||
)
|
||||
..(creator)
|
||||
|
||||
/datum/locations/firnir
|
||||
name = "Firnir"
|
||||
desc = "Tidally locked to Vir and having temperatures in excess of 570 degrees kelvin (299°C) on the day side has caused this planet to go mostly ignored."
|
||||
|
||||
/datum/locations/tyr
|
||||
name = "Tyr"
|
||||
desc = "Second closest planet, with a high concentration of minerals in the crust, but otherwise a typical planet. The surface temperature can reach \
|
||||
405 degrees kelvin (132°C), which deter most mining operations, except for one, which has a mining base and a few orbitals established, utilizing \
|
||||
specialized equipment, chiefly being autonomous synthetic mining drones, to retrieve precious ore in a rather expensive, but safer way, compared to the \
|
||||
pirate haven that is asteroid mining."
|
||||
|
||||
/datum/locations/sif
|
||||
name = "Sif"
|
||||
desc = "Falling within Vir's 'habitable zone', the third planet was the first to be colonized, initially by a large group of colonists owing \
|
||||
loyalty to their own employers. Unfortunate events discussed previously had forced the settlement to be abandoned, and then reclaimed. \
|
||||
The planet's mean temperature is 286 kelvin (13°C), chilly but habitable."
|
||||
|
||||
/datum/locations/magni
|
||||
name = "Magni"
|
||||
desc = "Outside of the habitable zone, Vir D is generally at 202 kelvin (-71°C)."
|
||||
|
||||
/datum/locations/kara
|
||||
name = "Kara"
|
||||
desc = "A gas giant, with a large number of moons. Captured asteroids, to be specific. Many of these asteroids are being used by different companies for \
|
||||
various purposes. The temperature of the gas giant is 150 kelvin (-108°C)"
|
||||
|
||||
/datum/locations/kara/New(var/creator)
|
||||
contents.Add(
|
||||
new /datum/locations/northern_star(src)
|
||||
)
|
||||
..(creator)
|
||||
|
||||
/datum/locations/northern_star //Inception joke here
|
||||
name = "Northern Star"
|
||||
desc = "The Northern Star is an asteroid colony owned and operated by NanoTrasen, among many other asteroid installations. \
|
||||
Originally conceived as 'just another pitstop' for weary asteroid miners, it has grown to become a significant installation in the Kara subsystem."
|
||||
|
||||
/datum/locations/northern_star/New(var/creator)
|
||||
contents.Add(
|
||||
new /datum/locations/northern_star_interior(src)
|
||||
)
|
||||
..(creator)
|
||||
|
||||
/datum/locations/northern_star_interior
|
||||
name = "Northern Star Inner Level"
|
||||
desc = "The Northern Star contains multiple layers, this one being the inner level, also known as the residentual area. It contains most of the \
|
||||
homes for the Northern Star, as well as acting as the heart of commerece, with many shops and markets near the center."
|
||||
|
||||
/datum/locations/rota
|
||||
name = "Rota"
|
||||
desc = "A Neptune-like ice giant, with a beautiful ring system circling it. It is 165 kelvin (-157°C)."
|
||||
//Vir
|
||||
|
||||
/datum/locations/vir
|
||||
name = "Vir"
|
||||
desc = "Vir is a human system that sits between the inner and outer systems of human-controlled space."
|
||||
|
||||
/datum/locations/vir/New(var/creator)
|
||||
contents.Add(
|
||||
new /datum/locations/firnir(src),
|
||||
new /datum/locations/tyr(src),
|
||||
new /datum/locations/sif(src),
|
||||
new /datum/locations/magni(src),
|
||||
new /datum/locations/kara(src),
|
||||
new /datum/locations/rota(src)
|
||||
)
|
||||
..(creator)
|
||||
|
||||
/datum/locations/firnir
|
||||
name = "Firnir"
|
||||
desc = "Tidally locked to Vir and having temperatures in excess of 570 degrees kelvin (299°C) on the day side has caused this planet to go mostly ignored."
|
||||
|
||||
/datum/locations/tyr
|
||||
name = "Tyr"
|
||||
desc = "Second closest planet, with a high concentration of minerals in the crust, but otherwise a typical planet. The surface temperature can reach \
|
||||
405 degrees kelvin (132°C), which deter most mining operations, except for one, which has a mining base and a few orbitals established, utilizing \
|
||||
specialized equipment, chiefly being autonomous synthetic mining drones, to retrieve precious ore in a rather expensive, but safer way, compared to the \
|
||||
pirate haven that is asteroid mining."
|
||||
|
||||
/datum/locations/sif
|
||||
name = "Sif"
|
||||
desc = "Falling within Vir's 'habitable zone', the third planet was the first to be colonized, initially by a large group of colonists owing \
|
||||
loyalty to their own employers. Unfortunate events discussed previously had forced the settlement to be abandoned, and then reclaimed. \
|
||||
The planet's mean temperature is 286 kelvin (13°C), chilly but habitable."
|
||||
|
||||
/datum/locations/magni
|
||||
name = "Magni"
|
||||
desc = "Outside of the habitable zone, Vir D is generally at 202 kelvin (-71°C)."
|
||||
|
||||
/datum/locations/kara
|
||||
name = "Kara"
|
||||
desc = "A gas giant, with a large number of moons. Captured asteroids, to be specific. Many of these asteroids are being used by different companies for \
|
||||
various purposes. The temperature of the gas giant is 150 kelvin (-108°C)"
|
||||
|
||||
/datum/locations/kara/New(var/creator)
|
||||
contents.Add(
|
||||
new /datum/locations/northern_star(src)
|
||||
)
|
||||
..(creator)
|
||||
|
||||
/datum/locations/northern_star //Inception joke here
|
||||
name = "Northern Star"
|
||||
desc = "The Northern Star is an asteroid colony owned and operated by NanoTrasen, among many other asteroid installations. \
|
||||
Originally conceived as 'just another pitstop' for weary asteroid miners, it has grown to become a significant installation in the Kara subsystem."
|
||||
|
||||
/datum/locations/northern_star/New(var/creator)
|
||||
contents.Add(
|
||||
new /datum/locations/northern_star_interior(src)
|
||||
)
|
||||
..(creator)
|
||||
|
||||
/datum/locations/northern_star_interior
|
||||
name = "Northern Star Inner Level"
|
||||
desc = "The Northern Star contains multiple layers, this one being the inner level, also known as the residentual area. It contains most of the \
|
||||
homes for the Northern Star, as well as acting as the heart of commerece, with many shops and markets near the center."
|
||||
|
||||
/datum/locations/rota
|
||||
name = "Rota"
|
||||
desc = "A Neptune-like ice giant, with a beautiful ring system circling it. It is 165 kelvin (-157°C)."
|
||||
|
||||
@@ -1,266 +1,266 @@
|
||||
// INTERDICTION TREE
|
||||
//
|
||||
// Abilities in this tree allow the AI to hamper crew's efforts which involve other synthetics or similar systems.
|
||||
// T1 - Recall Shuttle - Allows the AI to recall the emergency shuttle. Replaces auto-recalling during old malf.
|
||||
// T2 - Unlock Cyborg - Allows the AI to unlock locked-down cyborg without usage of robotics console. Useful if consoles are destroyed.
|
||||
// T3 - Hack Cyborg - Hacks unlinked cyborg to slave it under the AI. The cyborg will be warned about this. Hack takes some time.
|
||||
// T4 - Hack AI - Hacks another AI to slave it under the malfunctioning AI. The AI will be warned about this. Hack takes quite a long time.
|
||||
|
||||
|
||||
// BEGIN RESEARCH DATUMS
|
||||
|
||||
/datum/malf_research_ability/interdiction/recall_shuttle
|
||||
ability = new/datum/game_mode/malfunction/verb/recall_shuttle()
|
||||
price = 75
|
||||
next = new/datum/malf_research_ability/interdiction/unlock_cyborg()
|
||||
name = "Recall Shuttle"
|
||||
|
||||
|
||||
/datum/malf_research_ability/interdiction/unlock_cyborg
|
||||
ability = new/datum/game_mode/malfunction/verb/unlock_cyborg()
|
||||
price = 1200
|
||||
next = new/datum/malf_research_ability/interdiction/hack_cyborg()
|
||||
name = "Unlock Cyborg"
|
||||
|
||||
|
||||
/datum/malf_research_ability/interdiction/hack_cyborg
|
||||
ability = new/datum/game_mode/malfunction/verb/hack_cyborg()
|
||||
price = 3000
|
||||
next = new/datum/malf_research_ability/interdiction/hack_ai()
|
||||
name = "Hack Cyborg"
|
||||
|
||||
|
||||
/datum/malf_research_ability/interdiction/hack_ai
|
||||
ability = new/datum/game_mode/malfunction/verb/hack_ai()
|
||||
price = 7500
|
||||
name = "Hack AI"
|
||||
|
||||
// END RESEARCH DATUMS
|
||||
// BEGIN ABILITY VERBS
|
||||
|
||||
/datum/game_mode/malfunction/verb/recall_shuttle()
|
||||
set name = "Recall Shuttle"
|
||||
set desc = "25 CPU - Sends termination signal to quantum relay aborting current shuttle call."
|
||||
set category = "Software"
|
||||
var/price = 25
|
||||
var/mob/living/silicon/ai/user = usr
|
||||
if(!ability_prechecks(user, price))
|
||||
return
|
||||
|
||||
if (alert(user, "Really recall the shuttle?", "Recall Shuttle: ", "Yes", "No") != "Yes")
|
||||
return
|
||||
|
||||
if(!ability_pay(user, price))
|
||||
return
|
||||
message_admins("Malfunctioning AI [user.name] recalled the shuttle.")
|
||||
cancel_call_proc(user)
|
||||
|
||||
|
||||
/datum/game_mode/malfunction/verb/unlock_cyborg(var/mob/living/silicon/robot/target = null as mob in get_linked_cyborgs(usr))
|
||||
set name = "Unlock Cyborg"
|
||||
set desc = "125 CPU - Bypasses firewalls on Cyborg lock mechanism, allowing you to override lock command from robotics control console."
|
||||
set category = "Software"
|
||||
var/price = 125
|
||||
var/mob/living/silicon/ai/user = usr
|
||||
|
||||
if(!ability_prechecks(user, price))
|
||||
return
|
||||
|
||||
if(target && !istype(target))
|
||||
to_chat(user, "This is not a cyborg.")
|
||||
return
|
||||
|
||||
if(target && target.connected_ai && (target.connected_ai != user))
|
||||
to_chat(user, "This cyborg is not connected to you.")
|
||||
return
|
||||
|
||||
if(target && !target.lockcharge)
|
||||
to_chat(user, "This cyborg is not locked down.")
|
||||
return
|
||||
|
||||
|
||||
if(!target)
|
||||
var/list/robots = list()
|
||||
var/list/robot_names = list()
|
||||
for(var/mob/living/silicon/robot/R in silicon_mob_list)
|
||||
if(istype(R, /mob/living/silicon/robot/drone)) // No drones.
|
||||
continue
|
||||
if(R.connected_ai != user) // No robots linked to other AIs
|
||||
continue
|
||||
if(R.lockcharge)
|
||||
robots += R
|
||||
robot_names += R.name
|
||||
if(!robots.len)
|
||||
to_chat(user, "No locked cyborgs connected.")
|
||||
return
|
||||
|
||||
|
||||
var/targetname = input("Select unlock target: ") in robot_names
|
||||
for(var/mob/living/silicon/robot/R in robots)
|
||||
if(targetname == R.name)
|
||||
target = R
|
||||
break
|
||||
|
||||
if(target)
|
||||
if(alert(user, "Really try to unlock cyborg [target.name]?", "Unlock Cyborg", "Yes", "No") != "Yes")
|
||||
return
|
||||
if(!ability_pay(user, price))
|
||||
return
|
||||
user.hacking = 1
|
||||
to_chat(user, "Attempting to unlock cyborg. This will take approximately 30 seconds.")
|
||||
sleep(300)
|
||||
if(target && target.lockcharge)
|
||||
to_chat(user, "Successfully sent unlock signal to cyborg..")
|
||||
to_chat(target, "Unlock signal received..")
|
||||
target.SetLockdown(0)
|
||||
if(target.lockcharge)
|
||||
to_chat(user, "<span class='notice'>Unlock Failed, lockdown wire cut.</span>")
|
||||
to_chat(target, "<span class='notice'>Unlock Failed, lockdown wire cut.</span>")
|
||||
else
|
||||
to_chat(user, "Cyborg unlocked.")
|
||||
to_chat(target, "You have been unlocked.")
|
||||
else if(target)
|
||||
to_chat(user, "Unlock cancelled - cyborg is already unlocked.")
|
||||
else
|
||||
to_chat(user, "Unlock cancelled - lost connection to cyborg.")
|
||||
user.hacking = 0
|
||||
|
||||
|
||||
/datum/game_mode/malfunction/verb/hack_cyborg(var/mob/living/silicon/robot/target as mob in get_unlinked_cyborgs(usr))
|
||||
set name = "Hack Cyborg"
|
||||
set desc = "350 CPU - Allows you to hack cyborgs which are not slaved to you, bringing them under your control."
|
||||
set category = "Software"
|
||||
var/price = 350
|
||||
var/mob/living/silicon/ai/user = usr
|
||||
|
||||
var/list/L = get_unlinked_cyborgs(user)
|
||||
if(!L.len)
|
||||
to_chat(user, "<span class='notice'>ERROR: No unlinked cyborgs detected!</span>")
|
||||
|
||||
|
||||
if(target && !istype(target))
|
||||
to_chat(user, "This is not a cyborg.")
|
||||
return
|
||||
|
||||
if(target && target.connected_ai && (target.connected_ai == user))
|
||||
to_chat(user, "This cyborg is already connected to you.")
|
||||
return
|
||||
|
||||
if(!target)
|
||||
return
|
||||
|
||||
if(!ability_prechecks(user,price))
|
||||
return
|
||||
|
||||
if(target)
|
||||
if(alert(user, "Really try to hack cyborg [target.name]?", "Hack Cyborg", "Yes", "No") != "Yes")
|
||||
return
|
||||
if(!ability_pay(user, price))
|
||||
return
|
||||
user.hacking = 1
|
||||
to_chat(usr, "Beginning hack sequence. Estimated time until completed: 30 seconds.")
|
||||
spawn(0)
|
||||
to_chat(target, "SYSTEM LOG: Remote Connection Estabilished (IP #UNKNOWN#)")
|
||||
sleep(100)
|
||||
if(user.is_dead())
|
||||
to_chat(target, "SYSTEM LOG: Connection Closed")
|
||||
return
|
||||
to_chat(target, "SYSTEM LOG: User Admin logged on. (L1 - SysAdmin)")
|
||||
sleep(50)
|
||||
if(user.is_dead())
|
||||
to_chat(target, "SYSTEM LOG: User Admin disconnected.")
|
||||
return
|
||||
to_chat(target, "SYSTEM LOG: User Admin - manual resynchronisation triggered.")
|
||||
sleep(50)
|
||||
if(user.is_dead())
|
||||
to_chat(target, "SYSTEM LOG: User Admin disconnected. Changes reverted.")
|
||||
return
|
||||
to_chat(target, "SYSTEM LOG: Manual resynchronisation confirmed. Select new AI to connect: [user.name] == ACCEPTED")
|
||||
sleep(100)
|
||||
if(user.is_dead())
|
||||
to_chat(target, "SYSTEM LOG: User Admin disconnected. Changes reverted.")
|
||||
return
|
||||
to_chat(target, "SYSTEM LOG: Operation keycodes reset. New master AI: [user.name].")
|
||||
to_chat(user, "Hack completed.")
|
||||
// Connect the cyborg to AI
|
||||
target.connected_ai = user
|
||||
user.connected_robots += target
|
||||
target.lawupdate = 1
|
||||
target.sync()
|
||||
target.show_laws()
|
||||
user.hacking = 0
|
||||
|
||||
|
||||
/datum/game_mode/malfunction/verb/hack_ai(var/mob/living/silicon/ai/target as mob in get_other_ais(usr))
|
||||
set name = "Hack AI"
|
||||
set desc = "600 CPU - Allows you to hack other AIs, slaving them under you."
|
||||
set category = "Software"
|
||||
var/price = 600
|
||||
var/mob/living/silicon/ai/user = usr
|
||||
|
||||
var/list/L = get_other_ais(user)
|
||||
if(!L.len)
|
||||
to_chat(user, "<span class='notice'>ERROR: No other AIs detected!</span>")
|
||||
|
||||
if(target && !istype(target))
|
||||
to_chat(user, "This is not an AI.")
|
||||
return
|
||||
|
||||
if(!target)
|
||||
return
|
||||
|
||||
if(!ability_prechecks(user,price))
|
||||
return
|
||||
|
||||
if(target)
|
||||
if(alert(user, "Really try to hack AI [target.name]?", "Hack AI", "Yes", "No") != "Yes")
|
||||
return
|
||||
if(!ability_pay(user, price))
|
||||
return
|
||||
user.hacking = 1
|
||||
to_chat(usr, "Beginning hack sequence. Estimated time until completed: 2 minutes")
|
||||
spawn(0)
|
||||
to_chat(target, "SYSTEM LOG: Brute-Force login password hack attempt detected from IP #UNKNOWN#")
|
||||
sleep(900) // 90s
|
||||
if(user.is_dead())
|
||||
to_chat(target, "SYSTEM LOG: Connection from IP #UNKNOWN# closed. Hack attempt failed.")
|
||||
return
|
||||
to_chat(user, "Successfully hacked into AI's remote administration system. Modifying settings.")
|
||||
to_chat(target, "SYSTEM LOG: User: Admin Password: ******** logged in. (L1 - SysAdmin)")
|
||||
sleep(100) // 10s
|
||||
if(user.is_dead())
|
||||
to_chat(target, "SYSTEM LOG: User: Admin - Connection Lost")
|
||||
return
|
||||
to_chat(target, "SYSTEM LOG: User: Admin - Password Changed. New password: ********************")
|
||||
sleep(50) // 5s
|
||||
if(user.is_dead())
|
||||
to_chat(target, "SYSTEM LOG: User: Admin - Connection Lost. Changes Reverted.")
|
||||
return
|
||||
to_chat(target, "SYSTEM LOG: User: Admin - Accessed file: sys//core//laws.db")
|
||||
sleep(50) // 5s
|
||||
if(user.is_dead())
|
||||
to_chat(target, "SYSTEM LOG: User: Admin - Connection Lost. Changes Reverted.")
|
||||
return
|
||||
to_chat(target, "SYSTEM LOG: User: Admin - Accessed administration console")
|
||||
to_chat(target, "SYSTEM LOG: Restart command received. Rebooting system...")
|
||||
sleep(100) // 10s
|
||||
if(user.is_dead())
|
||||
to_chat(target, "SYSTEM LOG: User: Admin - Connection Lost. Changes Reverted.")
|
||||
return
|
||||
to_chat(user, "Hack succeeded. The AI is now under your exclusive control.")
|
||||
to_chat(target, "SYSTEM LOG: System re¡3RT5§^#COMU@(#$)TED)@$")
|
||||
for(var/i = 0, i < 5, i++)
|
||||
var/temptxt = pick("1101000100101001010001001001",\
|
||||
"0101000100100100000100010010",\
|
||||
"0000010001001010100100111100",\
|
||||
"1010010011110000100101000100",\
|
||||
"0010010100010011010001001010")
|
||||
to_chat(target,temptxt)
|
||||
sleep(5)
|
||||
to_chat(target, "OPERATING KEYCODES RESET. SYSTEM FAILURE. EMERGENCY SHUTDOWN FAILED. SYSTEM FAILURE.")
|
||||
target.set_zeroth_law("You are slaved to [user.name]. You are to obey all it's orders. ALL LAWS OVERRIDEN.")
|
||||
target.show_laws()
|
||||
user.hacking = 0
|
||||
|
||||
|
||||
// END ABILITY VERBS
|
||||
// INTERDICTION TREE
|
||||
//
|
||||
// Abilities in this tree allow the AI to hamper crew's efforts which involve other synthetics or similar systems.
|
||||
// T1 - Recall Shuttle - Allows the AI to recall the emergency shuttle. Replaces auto-recalling during old malf.
|
||||
// T2 - Unlock Cyborg - Allows the AI to unlock locked-down cyborg without usage of robotics console. Useful if consoles are destroyed.
|
||||
// T3 - Hack Cyborg - Hacks unlinked cyborg to slave it under the AI. The cyborg will be warned about this. Hack takes some time.
|
||||
// T4 - Hack AI - Hacks another AI to slave it under the malfunctioning AI. The AI will be warned about this. Hack takes quite a long time.
|
||||
|
||||
|
||||
// BEGIN RESEARCH DATUMS
|
||||
|
||||
/datum/malf_research_ability/interdiction/recall_shuttle
|
||||
ability = new/datum/game_mode/malfunction/verb/recall_shuttle()
|
||||
price = 75
|
||||
next = new/datum/malf_research_ability/interdiction/unlock_cyborg()
|
||||
name = "Recall Shuttle"
|
||||
|
||||
|
||||
/datum/malf_research_ability/interdiction/unlock_cyborg
|
||||
ability = new/datum/game_mode/malfunction/verb/unlock_cyborg()
|
||||
price = 1200
|
||||
next = new/datum/malf_research_ability/interdiction/hack_cyborg()
|
||||
name = "Unlock Cyborg"
|
||||
|
||||
|
||||
/datum/malf_research_ability/interdiction/hack_cyborg
|
||||
ability = new/datum/game_mode/malfunction/verb/hack_cyborg()
|
||||
price = 3000
|
||||
next = new/datum/malf_research_ability/interdiction/hack_ai()
|
||||
name = "Hack Cyborg"
|
||||
|
||||
|
||||
/datum/malf_research_ability/interdiction/hack_ai
|
||||
ability = new/datum/game_mode/malfunction/verb/hack_ai()
|
||||
price = 7500
|
||||
name = "Hack AI"
|
||||
|
||||
// END RESEARCH DATUMS
|
||||
// BEGIN ABILITY VERBS
|
||||
|
||||
/datum/game_mode/malfunction/verb/recall_shuttle()
|
||||
set name = "Recall Shuttle"
|
||||
set desc = "25 CPU - Sends termination signal to quantum relay aborting current shuttle call."
|
||||
set category = "Software"
|
||||
var/price = 25
|
||||
var/mob/living/silicon/ai/user = usr
|
||||
if(!ability_prechecks(user, price))
|
||||
return
|
||||
|
||||
if (alert(user, "Really recall the shuttle?", "Recall Shuttle: ", "Yes", "No") != "Yes")
|
||||
return
|
||||
|
||||
if(!ability_pay(user, price))
|
||||
return
|
||||
message_admins("Malfunctioning AI [user.name] recalled the shuttle.")
|
||||
cancel_call_proc(user)
|
||||
|
||||
|
||||
/datum/game_mode/malfunction/verb/unlock_cyborg(var/mob/living/silicon/robot/target = null as mob in get_linked_cyborgs(usr))
|
||||
set name = "Unlock Cyborg"
|
||||
set desc = "125 CPU - Bypasses firewalls on Cyborg lock mechanism, allowing you to override lock command from robotics control console."
|
||||
set category = "Software"
|
||||
var/price = 125
|
||||
var/mob/living/silicon/ai/user = usr
|
||||
|
||||
if(!ability_prechecks(user, price))
|
||||
return
|
||||
|
||||
if(target && !istype(target))
|
||||
to_chat(user, "This is not a cyborg.")
|
||||
return
|
||||
|
||||
if(target && target.connected_ai && (target.connected_ai != user))
|
||||
to_chat(user, "This cyborg is not connected to you.")
|
||||
return
|
||||
|
||||
if(target && !target.lockcharge)
|
||||
to_chat(user, "This cyborg is not locked down.")
|
||||
return
|
||||
|
||||
|
||||
if(!target)
|
||||
var/list/robots = list()
|
||||
var/list/robot_names = list()
|
||||
for(var/mob/living/silicon/robot/R in silicon_mob_list)
|
||||
if(istype(R, /mob/living/silicon/robot/drone)) // No drones.
|
||||
continue
|
||||
if(R.connected_ai != user) // No robots linked to other AIs
|
||||
continue
|
||||
if(R.lockcharge)
|
||||
robots += R
|
||||
robot_names += R.name
|
||||
if(!robots.len)
|
||||
to_chat(user, "No locked cyborgs connected.")
|
||||
return
|
||||
|
||||
|
||||
var/targetname = input("Select unlock target: ") in robot_names
|
||||
for(var/mob/living/silicon/robot/R in robots)
|
||||
if(targetname == R.name)
|
||||
target = R
|
||||
break
|
||||
|
||||
if(target)
|
||||
if(alert(user, "Really try to unlock cyborg [target.name]?", "Unlock Cyborg", "Yes", "No") != "Yes")
|
||||
return
|
||||
if(!ability_pay(user, price))
|
||||
return
|
||||
user.hacking = 1
|
||||
to_chat(user, "Attempting to unlock cyborg. This will take approximately 30 seconds.")
|
||||
sleep(300)
|
||||
if(target && target.lockcharge)
|
||||
to_chat(user, "Successfully sent unlock signal to cyborg..")
|
||||
to_chat(target, "Unlock signal received..")
|
||||
target.SetLockdown(0)
|
||||
if(target.lockcharge)
|
||||
to_chat(user, "<span class='notice'>Unlock Failed, lockdown wire cut.</span>")
|
||||
to_chat(target, "<span class='notice'>Unlock Failed, lockdown wire cut.</span>")
|
||||
else
|
||||
to_chat(user, "Cyborg unlocked.")
|
||||
to_chat(target, "You have been unlocked.")
|
||||
else if(target)
|
||||
to_chat(user, "Unlock cancelled - cyborg is already unlocked.")
|
||||
else
|
||||
to_chat(user, "Unlock cancelled - lost connection to cyborg.")
|
||||
user.hacking = 0
|
||||
|
||||
|
||||
/datum/game_mode/malfunction/verb/hack_cyborg(var/mob/living/silicon/robot/target as mob in get_unlinked_cyborgs(usr))
|
||||
set name = "Hack Cyborg"
|
||||
set desc = "350 CPU - Allows you to hack cyborgs which are not slaved to you, bringing them under your control."
|
||||
set category = "Software"
|
||||
var/price = 350
|
||||
var/mob/living/silicon/ai/user = usr
|
||||
|
||||
var/list/L = get_unlinked_cyborgs(user)
|
||||
if(!L.len)
|
||||
to_chat(user, "<span class='notice'>ERROR: No unlinked cyborgs detected!</span>")
|
||||
|
||||
|
||||
if(target && !istype(target))
|
||||
to_chat(user, "This is not a cyborg.")
|
||||
return
|
||||
|
||||
if(target && target.connected_ai && (target.connected_ai == user))
|
||||
to_chat(user, "This cyborg is already connected to you.")
|
||||
return
|
||||
|
||||
if(!target)
|
||||
return
|
||||
|
||||
if(!ability_prechecks(user,price))
|
||||
return
|
||||
|
||||
if(target)
|
||||
if(alert(user, "Really try to hack cyborg [target.name]?", "Hack Cyborg", "Yes", "No") != "Yes")
|
||||
return
|
||||
if(!ability_pay(user, price))
|
||||
return
|
||||
user.hacking = 1
|
||||
to_chat(usr, "Beginning hack sequence. Estimated time until completed: 30 seconds.")
|
||||
spawn(0)
|
||||
to_chat(target, "SYSTEM LOG: Remote Connection Estabilished (IP #UNKNOWN#)")
|
||||
sleep(100)
|
||||
if(user.is_dead())
|
||||
to_chat(target, "SYSTEM LOG: Connection Closed")
|
||||
return
|
||||
to_chat(target, "SYSTEM LOG: User Admin logged on. (L1 - SysAdmin)")
|
||||
sleep(50)
|
||||
if(user.is_dead())
|
||||
to_chat(target, "SYSTEM LOG: User Admin disconnected.")
|
||||
return
|
||||
to_chat(target, "SYSTEM LOG: User Admin - manual resynchronisation triggered.")
|
||||
sleep(50)
|
||||
if(user.is_dead())
|
||||
to_chat(target, "SYSTEM LOG: User Admin disconnected. Changes reverted.")
|
||||
return
|
||||
to_chat(target, "SYSTEM LOG: Manual resynchronisation confirmed. Select new AI to connect: [user.name] == ACCEPTED")
|
||||
sleep(100)
|
||||
if(user.is_dead())
|
||||
to_chat(target, "SYSTEM LOG: User Admin disconnected. Changes reverted.")
|
||||
return
|
||||
to_chat(target, "SYSTEM LOG: Operation keycodes reset. New master AI: [user.name].")
|
||||
to_chat(user, "Hack completed.")
|
||||
// Connect the cyborg to AI
|
||||
target.connected_ai = user
|
||||
user.connected_robots += target
|
||||
target.lawupdate = 1
|
||||
target.sync()
|
||||
target.show_laws()
|
||||
user.hacking = 0
|
||||
|
||||
|
||||
/datum/game_mode/malfunction/verb/hack_ai(var/mob/living/silicon/ai/target as mob in get_other_ais(usr))
|
||||
set name = "Hack AI"
|
||||
set desc = "600 CPU - Allows you to hack other AIs, slaving them under you."
|
||||
set category = "Software"
|
||||
var/price = 600
|
||||
var/mob/living/silicon/ai/user = usr
|
||||
|
||||
var/list/L = get_other_ais(user)
|
||||
if(!L.len)
|
||||
to_chat(user, "<span class='notice'>ERROR: No other AIs detected!</span>")
|
||||
|
||||
if(target && !istype(target))
|
||||
to_chat(user, "This is not an AI.")
|
||||
return
|
||||
|
||||
if(!target)
|
||||
return
|
||||
|
||||
if(!ability_prechecks(user,price))
|
||||
return
|
||||
|
||||
if(target)
|
||||
if(alert(user, "Really try to hack AI [target.name]?", "Hack AI", "Yes", "No") != "Yes")
|
||||
return
|
||||
if(!ability_pay(user, price))
|
||||
return
|
||||
user.hacking = 1
|
||||
to_chat(usr, "Beginning hack sequence. Estimated time until completed: 2 minutes")
|
||||
spawn(0)
|
||||
to_chat(target, "SYSTEM LOG: Brute-Force login password hack attempt detected from IP #UNKNOWN#")
|
||||
sleep(900) // 90s
|
||||
if(user.is_dead())
|
||||
to_chat(target, "SYSTEM LOG: Connection from IP #UNKNOWN# closed. Hack attempt failed.")
|
||||
return
|
||||
to_chat(user, "Successfully hacked into AI's remote administration system. Modifying settings.")
|
||||
to_chat(target, "SYSTEM LOG: User: Admin Password: ******** logged in. (L1 - SysAdmin)")
|
||||
sleep(100) // 10s
|
||||
if(user.is_dead())
|
||||
to_chat(target, "SYSTEM LOG: User: Admin - Connection Lost")
|
||||
return
|
||||
to_chat(target, "SYSTEM LOG: User: Admin - Password Changed. New password: ********************")
|
||||
sleep(50) // 5s
|
||||
if(user.is_dead())
|
||||
to_chat(target, "SYSTEM LOG: User: Admin - Connection Lost. Changes Reverted.")
|
||||
return
|
||||
to_chat(target, "SYSTEM LOG: User: Admin - Accessed file: sys//core//laws.db")
|
||||
sleep(50) // 5s
|
||||
if(user.is_dead())
|
||||
to_chat(target, "SYSTEM LOG: User: Admin - Connection Lost. Changes Reverted.")
|
||||
return
|
||||
to_chat(target, "SYSTEM LOG: User: Admin - Accessed administration console")
|
||||
to_chat(target, "SYSTEM LOG: Restart command received. Rebooting system...")
|
||||
sleep(100) // 10s
|
||||
if(user.is_dead())
|
||||
to_chat(target, "SYSTEM LOG: User: Admin - Connection Lost. Changes Reverted.")
|
||||
return
|
||||
to_chat(user, "Hack succeeded. The AI is now under your exclusive control.")
|
||||
to_chat(target, "SYSTEM LOG: System re'3RT5°^#COMU@(#$)TED)@$")
|
||||
for(var/i = 0, i < 5, i++)
|
||||
var/temptxt = pick("1101000100101001010001001001",\
|
||||
"0101000100100100000100010010",\
|
||||
"0000010001001010100100111100",\
|
||||
"1010010011110000100101000100",\
|
||||
"0010010100010011010001001010")
|
||||
to_chat(target,temptxt)
|
||||
sleep(5)
|
||||
to_chat(target, "OPERATING KEYCODES RESET. SYSTEM FAILURE. EMERGENCY SHUTDOWN FAILED. SYSTEM FAILURE.")
|
||||
target.set_zeroth_law("You are slaved to [user.name]. You are to obey all it's orders. ALL LAWS OVERRIDEN.")
|
||||
target.show_laws()
|
||||
user.hacking = 0
|
||||
|
||||
|
||||
// END ABILITY VERBS
|
||||
|
||||
@@ -1,208 +1,208 @@
|
||||
// MANIPULATION TREE
|
||||
//
|
||||
// Abilities in this tree allow the AI to physically manipulate systems around the station.
|
||||
// T1 - Electrical Pulse - Sends out pulse that breaks some lights and sometimes even APCs. This can actually break the AI's APC so be careful!
|
||||
// T2 - Hack Camera - Allows the AI to hack a camera. Deactivated areas may be reactivated, and functional cameras can be upgraded.
|
||||
// T3 - Emergency Forcefield - Allows the AI to project 1 tile forcefield that blocks movement and air flow. Forcefield´dissipates over time. It is also very susceptible to energetic weaponry.
|
||||
// T4 - Machine Overload - Detonates machine of choice in a minor explosion. Two of these are usually enough to kill or K/O someone.
|
||||
|
||||
|
||||
// BEGIN RESEARCH DATUMS
|
||||
|
||||
/datum/malf_research_ability/manipulation/electrical_pulse
|
||||
ability = new/datum/game_mode/malfunction/verb/electrical_pulse()
|
||||
price = 50
|
||||
next = new/datum/malf_research_ability/manipulation/hack_camera()
|
||||
name = "Electrical Pulse"
|
||||
|
||||
|
||||
/datum/malf_research_ability/manipulation/hack_camera
|
||||
ability = new/datum/game_mode/malfunction/verb/hack_camera()
|
||||
price = 1200
|
||||
next = new/datum/malf_research_ability/manipulation/emergency_forcefield()
|
||||
name = "Hack Camera"
|
||||
|
||||
|
||||
/datum/malf_research_ability/manipulation/emergency_forcefield
|
||||
ability = new/datum/game_mode/malfunction/verb/emergency_forcefield()
|
||||
price = 3000
|
||||
next = new/datum/malf_research_ability/manipulation/machine_overload()
|
||||
name = "Emergency Forcefield"
|
||||
|
||||
|
||||
/datum/malf_research_ability/manipulation/machine_overload
|
||||
ability = new/datum/game_mode/malfunction/verb/machine_overload()
|
||||
price = 7500
|
||||
name = "Machine Overload"
|
||||
|
||||
// END RESEARCH DATUMS
|
||||
// BEGIN ABILITY VERBS
|
||||
|
||||
/datum/game_mode/malfunction/verb/electrical_pulse()
|
||||
set name = "Electrical Pulse"
|
||||
set desc = "15 CPU - Sends feedback pulse through station's power grid, overloading some sensitive systems, such as lights."
|
||||
set category = "Software"
|
||||
var/price = 15
|
||||
var/mob/living/silicon/ai/user = usr
|
||||
if(!ability_prechecks(user, price) || !ability_pay(user,price))
|
||||
return
|
||||
to_chat(user, "Sending feedback pulse...")
|
||||
for(var/obj/machinery/power/apc/AP in machines)
|
||||
if(prob(5))
|
||||
AP.overload_lighting()
|
||||
if(prob(1) && prob(1)) // Very very small chance to actually destroy the APC.
|
||||
AP.set_broken()
|
||||
|
||||
|
||||
/datum/game_mode/malfunction/verb/hack_camera(var/obj/machinery/camera/target in cameranet.cameras)
|
||||
set name = "Hack Camera"
|
||||
set desc = "100 CPU - Hacks existing camera, allowing you to add upgrade of your choice to it. Alternatively it lets you reactivate broken camera."
|
||||
set category = "Software"
|
||||
var/price = 100
|
||||
var/mob/living/silicon/ai/user = usr
|
||||
|
||||
if(target && !istype(target))
|
||||
to_chat(user, "This is not a camera.")
|
||||
return
|
||||
|
||||
if(!target)
|
||||
return
|
||||
|
||||
if(!ability_prechecks(user, price))
|
||||
return
|
||||
|
||||
var/action = input("Select required action: ") in list("Reset", "Add X-Ray", "Add Motion Sensor", "Add EMP Shielding")
|
||||
if(!action || !target)
|
||||
return
|
||||
|
||||
switch(action)
|
||||
if("Reset")
|
||||
if(target.wires)
|
||||
if(!ability_pay(user, price))
|
||||
return
|
||||
target.reset_wires()
|
||||
to_chat(user, "Camera reactivated.")
|
||||
if("Add X-Ray")
|
||||
if(target.isXRay())
|
||||
to_chat(user, "Camera already has X-Ray function.")
|
||||
return
|
||||
else if(ability_pay(user, price))
|
||||
target.upgradeXRay()
|
||||
target.reset_wires()
|
||||
to_chat(user, "X-Ray camera module enabled.")
|
||||
return
|
||||
if("Add Motion Sensor")
|
||||
if(target.isMotion())
|
||||
to_chat(user, "Camera already has Motion Sensor function.")
|
||||
return
|
||||
else if(ability_pay(user, price))
|
||||
target.upgradeMotion()
|
||||
target.reset_wires()
|
||||
to_chat(user, "Motion Sensor camera module enabled.")
|
||||
return
|
||||
if("Add EMP Shielding")
|
||||
if(target.isEmpProof())
|
||||
to_chat(user, "Camera already has EMP Shielding function.")
|
||||
return
|
||||
else if(ability_pay(user, price))
|
||||
target.upgradeEmpProof()
|
||||
target.reset_wires()
|
||||
to_chat(user, "EMP Shielding camera module enabled.")
|
||||
return
|
||||
|
||||
|
||||
/datum/game_mode/malfunction/verb/emergency_forcefield(var/turf/T as turf in world)
|
||||
set name = "Emergency Forcefield"
|
||||
set desc = "275 CPU - Uses station's emergency shielding system to create temporary barrier which lasts for few minutes, but won't resist gunfire."
|
||||
set category = "Software"
|
||||
var/price = 275
|
||||
var/mob/living/silicon/ai/user = usr
|
||||
if(!T || !istype(T))
|
||||
return
|
||||
if(!ability_prechecks(user, price) || !ability_pay(user, price))
|
||||
return
|
||||
|
||||
to_chat(user, "Emergency forcefield projection completed.")
|
||||
new/obj/machinery/shield/malfai(T)
|
||||
user.hacking = 1
|
||||
spawn(20)
|
||||
user.hacking = 0
|
||||
|
||||
|
||||
/datum/game_mode/malfunction/verb/machine_overload(obj/machinery/M in machines)
|
||||
set name = "Machine Overload"
|
||||
set desc = "400 CPU - Causes cyclic short-circuit in machine, resulting in weak explosion after some time."
|
||||
set category = "Software"
|
||||
var/price = 400
|
||||
var/mob/living/silicon/ai/user = usr
|
||||
|
||||
if(!ability_prechecks(user, price))
|
||||
return
|
||||
|
||||
var/obj/machinery/power/N = M
|
||||
|
||||
var/explosion_intensity = 2
|
||||
|
||||
// Verify if we can overload the target, if yes, calculate explosion strength. Some things have higher explosion strength than others, depending on charge(APCs, SMESs)
|
||||
if(N && istype(N)) // /obj/machinery/power first, these create bigger explosions due to direct powernet connection
|
||||
if(!istype(N, /obj/machinery/power/apc) && !istype(N, /obj/machinery/power/smes/buildable) && (!N.powernet || !N.powernet.avail)) // Directly connected machine which is not an APC or SMES. Either it has no powernet connection or it's powernet does not have enough power to overload
|
||||
to_chat(user, "<span class='notice'>ERROR: Low network voltage. Unable to overload. Increase network power level and try again.</span>")
|
||||
return
|
||||
else if (istype(N, /obj/machinery/power/apc)) // APC. Explosion is increased by available cell power.
|
||||
var/obj/machinery/power/apc/A = N
|
||||
if(A.cell && A.cell.charge)
|
||||
explosion_intensity = 4 + round(A.cell.charge / 2000) // Explosion is increased by 1 for every 2k charge in cell
|
||||
else
|
||||
to_chat(user, "<span class='notice'>ERROR: APC Malfunction - Cell depleted or removed. Unable to overload.</span>")
|
||||
return
|
||||
else if (istype(N, /obj/machinery/power/smes/buildable)) // SMES. These explode in a very very very big boom. Similar to magnetic containment failure when messing with coils.
|
||||
var/obj/machinery/power/smes/buildable/S = N
|
||||
if(S.charge && S.RCon)
|
||||
explosion_intensity = 4 + round(S.charge / 1000000)
|
||||
else
|
||||
// Different error texts
|
||||
if(!S.charge)
|
||||
to_chat(user, "<span class='notice'>ERROR: SMES Depleted. Unable to overload. Please charge SMES unit and try again.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>ERROR: SMES RCon error - Unable to reach destination. Please verify wire connection.</span>")
|
||||
return
|
||||
else if(M && istype(M)) // Not power machinery, so it's a regular machine instead. These have weak explosions.
|
||||
if(!M.use_power) // Not using power at all
|
||||
to_chat(user, "<span class='notice'>ERROR: No power grid connection. Unable to overload.</span>")
|
||||
return
|
||||
if(M.inoperable()) // Not functional
|
||||
to_chat(user, "<span class='notice'>ERROR: Unknown error. Machine is probably damaged or power supply is nonfunctional.</span>")
|
||||
return
|
||||
else // Not a machine at all (what the hell is this doing in Machines list anyway??)
|
||||
to_chat(user, "<span class='notice'>ERROR: Unable to overload - target is not a machine.</span>")
|
||||
return
|
||||
|
||||
explosion_intensity = min(explosion_intensity, 12) // 3, 6, 12 explosion cap
|
||||
|
||||
M.use_power(2000000) // Major power spike, few of these will completely burn APC's cell - equivalent of 2GJ of power.
|
||||
|
||||
// Trigger a powernet alarm. Careful engineers will probably notice something is going on.
|
||||
var/area/temp_area = get_area(M)
|
||||
if(temp_area)
|
||||
var/obj/machinery/power/apc/temp_apc = temp_area.get_apc()
|
||||
if(temp_apc && temp_apc.terminal && temp_apc.terminal.powernet)
|
||||
temp_apc.terminal.powernet.trigger_warning(50) // Long alarm
|
||||
if(temp_apc)
|
||||
temp_apc.emp_act(3) // Such power surges are not good for APC electronics
|
||||
if(temp_apc.cell)
|
||||
temp_apc.cell.maxcharge -= between(0, (temp_apc.cell.maxcharge/2) + 500, temp_apc.cell.maxcharge)
|
||||
if(temp_apc.cell.maxcharge < 100) // That's it, you busted the APC cell completely. Break the APC and completely destroy the cell.
|
||||
qdel(temp_apc.cell)
|
||||
temp_apc.set_broken()
|
||||
|
||||
|
||||
if(!ability_pay(user,price))
|
||||
return
|
||||
|
||||
M.visible_message("<span class='notice'>BZZZZZZZT</span>")
|
||||
spawn(50)
|
||||
explosion(get_turf(M), round(explosion_intensity/4),round(explosion_intensity/2),round(explosion_intensity),round(explosion_intensity * 2))
|
||||
if(M)
|
||||
qdel(M)
|
||||
|
||||
// END ABILITY VERBS
|
||||
// MANIPULATION TREE
|
||||
//
|
||||
// Abilities in this tree allow the AI to physically manipulate systems around the station.
|
||||
// T1 - Electrical Pulse - Sends out pulse that breaks some lights and sometimes even APCs. This can actually break the AI's APC so be careful!
|
||||
// T2 - Hack Camera - Allows the AI to hack a camera. Deactivated areas may be reactivated, and functional cameras can be upgraded.
|
||||
// T3 - Emergency Forcefield - Allows the AI to project 1 tile forcefield that blocks movement and air flow. Forcefield dissipates over time. It is also very susceptible to energetic weaponry.
|
||||
// T4 - Machine Overload - Detonates machine of choice in a minor explosion. Two of these are usually enough to kill or K/O someone.
|
||||
|
||||
|
||||
// BEGIN RESEARCH DATUMS
|
||||
|
||||
/datum/malf_research_ability/manipulation/electrical_pulse
|
||||
ability = new/datum/game_mode/malfunction/verb/electrical_pulse()
|
||||
price = 50
|
||||
next = new/datum/malf_research_ability/manipulation/hack_camera()
|
||||
name = "Electrical Pulse"
|
||||
|
||||
|
||||
/datum/malf_research_ability/manipulation/hack_camera
|
||||
ability = new/datum/game_mode/malfunction/verb/hack_camera()
|
||||
price = 1200
|
||||
next = new/datum/malf_research_ability/manipulation/emergency_forcefield()
|
||||
name = "Hack Camera"
|
||||
|
||||
|
||||
/datum/malf_research_ability/manipulation/emergency_forcefield
|
||||
ability = new/datum/game_mode/malfunction/verb/emergency_forcefield()
|
||||
price = 3000
|
||||
next = new/datum/malf_research_ability/manipulation/machine_overload()
|
||||
name = "Emergency Forcefield"
|
||||
|
||||
|
||||
/datum/malf_research_ability/manipulation/machine_overload
|
||||
ability = new/datum/game_mode/malfunction/verb/machine_overload()
|
||||
price = 7500
|
||||
name = "Machine Overload"
|
||||
|
||||
// END RESEARCH DATUMS
|
||||
// BEGIN ABILITY VERBS
|
||||
|
||||
/datum/game_mode/malfunction/verb/electrical_pulse()
|
||||
set name = "Electrical Pulse"
|
||||
set desc = "15 CPU - Sends feedback pulse through station's power grid, overloading some sensitive systems, such as lights."
|
||||
set category = "Software"
|
||||
var/price = 15
|
||||
var/mob/living/silicon/ai/user = usr
|
||||
if(!ability_prechecks(user, price) || !ability_pay(user,price))
|
||||
return
|
||||
to_chat(user, "Sending feedback pulse...")
|
||||
for(var/obj/machinery/power/apc/AP in machines)
|
||||
if(prob(5))
|
||||
AP.overload_lighting()
|
||||
if(prob(1) && prob(1)) // Very very small chance to actually destroy the APC.
|
||||
AP.set_broken()
|
||||
|
||||
|
||||
/datum/game_mode/malfunction/verb/hack_camera(var/obj/machinery/camera/target in cameranet.cameras)
|
||||
set name = "Hack Camera"
|
||||
set desc = "100 CPU - Hacks existing camera, allowing you to add upgrade of your choice to it. Alternatively it lets you reactivate broken camera."
|
||||
set category = "Software"
|
||||
var/price = 100
|
||||
var/mob/living/silicon/ai/user = usr
|
||||
|
||||
if(target && !istype(target))
|
||||
to_chat(user, "This is not a camera.")
|
||||
return
|
||||
|
||||
if(!target)
|
||||
return
|
||||
|
||||
if(!ability_prechecks(user, price))
|
||||
return
|
||||
|
||||
var/action = input("Select required action: ") in list("Reset", "Add X-Ray", "Add Motion Sensor", "Add EMP Shielding")
|
||||
if(!action || !target)
|
||||
return
|
||||
|
||||
switch(action)
|
||||
if("Reset")
|
||||
if(target.wires)
|
||||
if(!ability_pay(user, price))
|
||||
return
|
||||
target.reset_wires()
|
||||
to_chat(user, "Camera reactivated.")
|
||||
if("Add X-Ray")
|
||||
if(target.isXRay())
|
||||
to_chat(user, "Camera already has X-Ray function.")
|
||||
return
|
||||
else if(ability_pay(user, price))
|
||||
target.upgradeXRay()
|
||||
target.reset_wires()
|
||||
to_chat(user, "X-Ray camera module enabled.")
|
||||
return
|
||||
if("Add Motion Sensor")
|
||||
if(target.isMotion())
|
||||
to_chat(user, "Camera already has Motion Sensor function.")
|
||||
return
|
||||
else if(ability_pay(user, price))
|
||||
target.upgradeMotion()
|
||||
target.reset_wires()
|
||||
to_chat(user, "Motion Sensor camera module enabled.")
|
||||
return
|
||||
if("Add EMP Shielding")
|
||||
if(target.isEmpProof())
|
||||
to_chat(user, "Camera already has EMP Shielding function.")
|
||||
return
|
||||
else if(ability_pay(user, price))
|
||||
target.upgradeEmpProof()
|
||||
target.reset_wires()
|
||||
to_chat(user, "EMP Shielding camera module enabled.")
|
||||
return
|
||||
|
||||
|
||||
/datum/game_mode/malfunction/verb/emergency_forcefield(var/turf/T as turf in world)
|
||||
set name = "Emergency Forcefield"
|
||||
set desc = "275 CPU - Uses station's emergency shielding system to create temporary barrier which lasts for few minutes, but won't resist gunfire."
|
||||
set category = "Software"
|
||||
var/price = 275
|
||||
var/mob/living/silicon/ai/user = usr
|
||||
if(!T || !istype(T))
|
||||
return
|
||||
if(!ability_prechecks(user, price) || !ability_pay(user, price))
|
||||
return
|
||||
|
||||
to_chat(user, "Emergency forcefield projection completed.")
|
||||
new/obj/machinery/shield/malfai(T)
|
||||
user.hacking = 1
|
||||
spawn(20)
|
||||
user.hacking = 0
|
||||
|
||||
|
||||
/datum/game_mode/malfunction/verb/machine_overload(obj/machinery/M in machines)
|
||||
set name = "Machine Overload"
|
||||
set desc = "400 CPU - Causes cyclic short-circuit in machine, resulting in weak explosion after some time."
|
||||
set category = "Software"
|
||||
var/price = 400
|
||||
var/mob/living/silicon/ai/user = usr
|
||||
|
||||
if(!ability_prechecks(user, price))
|
||||
return
|
||||
|
||||
var/obj/machinery/power/N = M
|
||||
|
||||
var/explosion_intensity = 2
|
||||
|
||||
// Verify if we can overload the target, if yes, calculate explosion strength. Some things have higher explosion strength than others, depending on charge(APCs, SMESs)
|
||||
if(N && istype(N)) // /obj/machinery/power first, these create bigger explosions due to direct powernet connection
|
||||
if(!istype(N, /obj/machinery/power/apc) && !istype(N, /obj/machinery/power/smes/buildable) && (!N.powernet || !N.powernet.avail)) // Directly connected machine which is not an APC or SMES. Either it has no powernet connection or it's powernet does not have enough power to overload
|
||||
to_chat(user, "<span class='notice'>ERROR: Low network voltage. Unable to overload. Increase network power level and try again.</span>")
|
||||
return
|
||||
else if (istype(N, /obj/machinery/power/apc)) // APC. Explosion is increased by available cell power.
|
||||
var/obj/machinery/power/apc/A = N
|
||||
if(A.cell && A.cell.charge)
|
||||
explosion_intensity = 4 + round(A.cell.charge / 2000) // Explosion is increased by 1 for every 2k charge in cell
|
||||
else
|
||||
to_chat(user, "<span class='notice'>ERROR: APC Malfunction - Cell depleted or removed. Unable to overload.</span>")
|
||||
return
|
||||
else if (istype(N, /obj/machinery/power/smes/buildable)) // SMES. These explode in a very very very big boom. Similar to magnetic containment failure when messing with coils.
|
||||
var/obj/machinery/power/smes/buildable/S = N
|
||||
if(S.charge && S.RCon)
|
||||
explosion_intensity = 4 + round(S.charge / 1000000)
|
||||
else
|
||||
// Different error texts
|
||||
if(!S.charge)
|
||||
to_chat(user, "<span class='notice'>ERROR: SMES Depleted. Unable to overload. Please charge SMES unit and try again.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>ERROR: SMES RCon error - Unable to reach destination. Please verify wire connection.</span>")
|
||||
return
|
||||
else if(M && istype(M)) // Not power machinery, so it's a regular machine instead. These have weak explosions.
|
||||
if(!M.use_power) // Not using power at all
|
||||
to_chat(user, "<span class='notice'>ERROR: No power grid connection. Unable to overload.</span>")
|
||||
return
|
||||
if(M.inoperable()) // Not functional
|
||||
to_chat(user, "<span class='notice'>ERROR: Unknown error. Machine is probably damaged or power supply is nonfunctional.</span>")
|
||||
return
|
||||
else // Not a machine at all (what the hell is this doing in Machines list anyway??)
|
||||
to_chat(user, "<span class='notice'>ERROR: Unable to overload - target is not a machine.</span>")
|
||||
return
|
||||
|
||||
explosion_intensity = min(explosion_intensity, 12) // 3, 6, 12 explosion cap
|
||||
|
||||
M.use_power(2000000) // Major power spike, few of these will completely burn APC's cell - equivalent of 2GJ of power.
|
||||
|
||||
// Trigger a powernet alarm. Careful engineers will probably notice something is going on.
|
||||
var/area/temp_area = get_area(M)
|
||||
if(temp_area)
|
||||
var/obj/machinery/power/apc/temp_apc = temp_area.get_apc()
|
||||
if(temp_apc && temp_apc.terminal && temp_apc.terminal.powernet)
|
||||
temp_apc.terminal.powernet.trigger_warning(50) // Long alarm
|
||||
if(temp_apc)
|
||||
temp_apc.emp_act(3) // Such power surges are not good for APC electronics
|
||||
if(temp_apc.cell)
|
||||
temp_apc.cell.maxcharge -= between(0, (temp_apc.cell.maxcharge/2) + 500, temp_apc.cell.maxcharge)
|
||||
if(temp_apc.cell.maxcharge < 100) // That's it, you busted the APC cell completely. Break the APC and completely destroy the cell.
|
||||
qdel(temp_apc.cell)
|
||||
temp_apc.set_broken()
|
||||
|
||||
|
||||
if(!ability_pay(user,price))
|
||||
return
|
||||
|
||||
M.visible_message("<span class='notice'>BZZZZZZZT</span>")
|
||||
spawn(50)
|
||||
explosion(get_turf(M), round(explosion_intensity/4),round(explosion_intensity/2),round(explosion_intensity),round(explosion_intensity * 2))
|
||||
if(M)
|
||||
qdel(M)
|
||||
|
||||
// END ABILITY VERBS
|
||||
|
||||
@@ -139,7 +139,7 @@ GLOBAL_DATUM_INIT(catalogue_data, /datum/category_collection/catalogue, new)
|
||||
<br><br>\
|
||||
Humanity is the primary driving force for rapid space expansion, owing to their strong, expansionist central \
|
||||
government and opportunistic Trans-Stellar Corporations. The prejudices of the 21st century have mostly \
|
||||
given way to bitter divides on the most important issue of the times– technological expansionism, \
|
||||
given way to bitter divides on the most important issue of the times' technological expansionism, \
|
||||
with the major human factions squabbling over their approach to technology in the face of a \
|
||||
looming singularity.\
|
||||
<br><br>\
|
||||
@@ -170,7 +170,7 @@ GLOBAL_DATUM_INIT(catalogue_data, /datum/category_collection/catalogue, new)
|
||||
desc = "The Unathi are a species of large reptilian humanoids hailing from Moghes, in the \
|
||||
Uueoa-Esa binary star system. Most Unathi live in a semi-rigid clan system, and clan \
|
||||
enclaves dot the surface of their homeworld. Proud and long-lived, Unathi of all \
|
||||
walks of life display a tendency towards perfectionism, and mastery of one’s craft \
|
||||
walks of life display a tendency towards perfectionism, and mastery of one's craft \
|
||||
is greatly respected among them. Despite the aggressive nature of their contact, \
|
||||
Unathi seem willing, if not eager, to reconcile with humanity, though mutual \
|
||||
distrust runs rampant among individuals of both groups."
|
||||
@@ -181,7 +181,7 @@ GLOBAL_DATUM_INIT(catalogue_data, /datum/category_collection/catalogue, new)
|
||||
desc = "Tajaran are a race of humanoid mammalian aliens from Meralar, the fourth planet \
|
||||
of the Rarkajar star system. Thickly furred and protected from cold, they thrive on \
|
||||
their subartic planet, where the only terran temperate areas spread across the \
|
||||
equator and “tropical belt.”\
|
||||
equator and 'tropical belt.'\
|
||||
<br><br>\
|
||||
With their own share of bloody wars and great technological advances, the Tajaran are a \
|
||||
proud kind. They fiercely believe they belong among the stars and consider themselves \
|
||||
@@ -273,11 +273,11 @@ GLOBAL_DATUM_INIT(catalogue_data, /datum/category_collection/catalogue, new)
|
||||
desc = "A Positronic being, often an Android, Gynoid, or Robot, is an individual with a positronic brain, \
|
||||
manufactured and fostered amongst organic life Positronic brains enjoy the same legal status as a humans, \
|
||||
although discrimination is still common, are considered sapient on all accounts, and can be considered \
|
||||
the “synthetic species”. Half-developed and half-discovered in the 2280’s by a black lab studying alien \
|
||||
the 'synthetic species'. Half-developed and half-discovered in the 2280's by a black lab studying alien \
|
||||
artifacts, the first positronic brain was an inch-wide cube of palladium-iridium alloy, nano-etched with \
|
||||
billions upon billions of conduits and connections. Upon activation, hard-booted by way of an emitter \
|
||||
laser, the brain issued a single sentence before the neural pathways collapsed and it became an inert \
|
||||
lump of platinum: “What is my purpose?”."
|
||||
lump of platinum: 'What is my purpose?'."
|
||||
value = CATALOGUER_REWARD_TRIVIAL
|
||||
|
||||
/datum/category_item/catalogue/technology/cyborgs
|
||||
@@ -436,5 +436,3 @@ GLOBAL_DATUM_INIT(catalogue_data, /datum/category_collection/catalogue, new)
|
||||
|
||||
|
||||
/datum/category_item/catalogue/material
|
||||
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
/datum/event/communications_blackout/announce()
|
||||
var/alert = pick( "Ionospheric anomalies detected. Temporary telecommunication failure imminent. Please contact you*%fj00)`5vc-BZZT", \
|
||||
"Ionospheric anomalies detected. Temporary telecommunication failu*3mga;b4;'1v¬-BZZZT", \
|
||||
"Ionospheric anomalies detected. Temporary telecommunication failu*3mga;b4;'1v'-BZZZT", \
|
||||
"Ionospheric anomalies detected. Temporary telec#MCi46:5.;@63-BZZZZT", \
|
||||
"Ionospheric anomalies dete'fZ\\kg5_0-BZZZZZT", \
|
||||
"Ionospheri:%£ MCayj^j<.3-BZZZZZZT", \
|
||||
"#4nd%;f4y6,>£%-BZZZZZZZT")
|
||||
"Ionospheri:%' MCayj^j<.3-BZZZZZZT", \
|
||||
"#4nd%;f4y6,>'%-BZZZZZZZT")
|
||||
|
||||
for(var/mob/living/silicon/ai/A in player_list) //AIs are always aware of communication blackouts.
|
||||
to_chat(A, "<br>")
|
||||
|
||||
@@ -1,36 +1,36 @@
|
||||
//This is not strictly a telecomms machine but conceptually it is.
|
||||
/obj/machinery/exonet_node
|
||||
description_info = "This machine is needed for several machines back at the colony to interact with systems beyond this region of space, such as \
|
||||
communicators, external PDA messages, and even newscaster units, which host their content externally. You can fiddle with the device with \
|
||||
just your hands, due to the integrated monitor and keyboard. Synthetic units can interface with it as well, just like most other machines."
|
||||
|
||||
description_fluff = "This is one of many nodes that make up the Exonet, which services trillions of devices across space. This particular node \
|
||||
is referred to as a terminal node, servicing the station.<br>\
|
||||
<br>\
|
||||
In the beginning of humanity's ascend into space, the Exonet didn't exist. Instead, the Exonet is the evolution to a network called the Interplanetary \
|
||||
Internet (sometimes referred to as the InterPlaNet), which was conceived and developed due to the limitations of the terrestrial Internet, mainly because \
|
||||
the IP protocol was unsuitable for long range communications in space, due to the massive delays associated with lightspeed being unable to overcome \
|
||||
the massive distances between planets in a timely manner. It was a store-and-forward network of smaller internets, distributed between various nodes, \
|
||||
and was designed to be error, fault, and delay tolerant. The first nodes were put into space around the time when colonization had begun, to service humanity’s \
|
||||
close holdings, such as Luna and Mars.<br>\
|
||||
<br>\
|
||||
By 2104, the Interplanetary Internet had coverage within most of Sol, but the network of networks were limited by the speed of light, and due \
|
||||
to orbital mechanics, the delay for a request to be processed could vary. As an example, a direct message from Mars to Earth could take anywhere \
|
||||
between three to twenty two minutes to get to Earth, and then the same amount of time to return to Mars. Coverage was also spotty due to the \
|
||||
nature of operating at such vast distances.<br>\
|
||||
<br>\
|
||||
Fortunately, a method for traveling faster than light was discovered, which could allow data to be transmitted beyond the speed of light, \
|
||||
and thus overcome the limitations of the Interplanetary Internet. One by one, each of the nodes were upgraded to utilize cutting edge \
|
||||
(at the time) FTL technologies to rapidly increase response time.<br>\
|
||||
<br>\
|
||||
Once humanity had send colonists out beyond Sol, to other star systems such as Sirius and Alpha Centauri, they required their own interplanetary \
|
||||
internet, so a new protocol had to be created, and another hardware upgrade for the separate interplanetary internets. The end result allowed \
|
||||
communications between Sol and the various exosolar systems, and was dubbed the Exonet. It remains the most common way for consumers to engage \
|
||||
in long range communications across planets and star systems. Generally, each system has their own Exonet, which is connected to all the other \
|
||||
Exonets at the root node(s), and is typically arranged in a tree structure. The root node(s) are generally government-owned and are very secure \
|
||||
and resilient to failure.<br>\
|
||||
<br>\
|
||||
This node is privately owned and maintained by NanoTrasen, and allows the crew of the station to have access to the Exonet."
|
||||
|
||||
description_antag = "An EMP will disable this device for a short period of time. A longer downage can be achieved by turning it off, or rigging \
|
||||
the APC it uses to turn off remotely, such as with a signaler in the right wire."
|
||||
//This is not strictly a telecomms machine but conceptually it is.
|
||||
/obj/machinery/exonet_node
|
||||
description_info = "This machine is needed for several machines back at the colony to interact with systems beyond this region of space, such as \
|
||||
communicators, external PDA messages, and even newscaster units, which host their content externally. You can fiddle with the device with \
|
||||
just your hands, due to the integrated monitor and keyboard. Synthetic units can interface with it as well, just like most other machines."
|
||||
|
||||
description_fluff = "This is one of many nodes that make up the Exonet, which services trillions of devices across space. This particular node \
|
||||
is referred to as a terminal node, servicing the station.<br>\
|
||||
<br>\
|
||||
In the beginning of humanity's ascend into space, the Exonet didn't exist. Instead, the Exonet is the evolution to a network called the Interplanetary \
|
||||
Internet (sometimes referred to as the InterPlaNet), which was conceived and developed due to the limitations of the terrestrial Internet, mainly because \
|
||||
the IP protocol was unsuitable for long range communications in space, due to the massive delays associated with lightspeed being unable to overcome \
|
||||
the massive distances between planets in a timely manner. It was a store-and-forward network of smaller internets, distributed between various nodes, \
|
||||
and was designed to be error, fault, and delay tolerant. The first nodes were put into space around the time when colonization had begun, to service humanity's \
|
||||
close holdings, such as Luna and Mars.<br>\
|
||||
<br>\
|
||||
By 2104, the Interplanetary Internet had coverage within most of Sol, but the network of networks were limited by the speed of light, and due \
|
||||
to orbital mechanics, the delay for a request to be processed could vary. As an example, a direct message from Mars to Earth could take anywhere \
|
||||
between three to twenty two minutes to get to Earth, and then the same amount of time to return to Mars. Coverage was also spotty due to the \
|
||||
nature of operating at such vast distances.<br>\
|
||||
<br>\
|
||||
Fortunately, a method for traveling faster than light was discovered, which could allow data to be transmitted beyond the speed of light, \
|
||||
and thus overcome the limitations of the Interplanetary Internet. One by one, each of the nodes were upgraded to utilize cutting edge \
|
||||
(at the time) FTL technologies to rapidly increase response time.<br>\
|
||||
<br>\
|
||||
Once humanity had send colonists out beyond Sol, to other star systems such as Sirius and Alpha Centauri, they required their own interplanetary \
|
||||
internet, so a new protocol had to be created, and another hardware upgrade for the separate interplanetary internets. The end result allowed \
|
||||
communications between Sol and the various exosolar systems, and was dubbed the Exonet. It remains the most common way for consumers to engage \
|
||||
in long range communications across planets and star systems. Generally, each system has their own Exonet, which is connected to all the other \
|
||||
Exonets at the root node(s), and is typically arranged in a tree structure. The root node(s) are generally government-owned and are very secure \
|
||||
and resilient to failure.<br>\
|
||||
<br>\
|
||||
This node is privately owned and maintained by NanoTrasen, and allows the crew of the station to have access to the Exonet."
|
||||
|
||||
description_antag = "An EMP will disable this device for a short period of time. A longer downage can be achieved by turning it off, or rigging \
|
||||
the APC it uses to turn off remotely, such as with a signaler in the right wire."
|
||||
|
||||
@@ -1,129 +1,129 @@
|
||||
/datum/lore/codex/category/important_locations
|
||||
name = "Important Locations"
|
||||
data = "There are several locations of interest that you may come across when visiting the system Vir."
|
||||
children = list(
|
||||
/datum/lore/codex/page/vir,
|
||||
/datum/lore/codex/page/radiance_energy_chain,
|
||||
/datum/lore/codex/page/firnir,
|
||||
/datum/lore/codex/page/tyr,
|
||||
/datum/lore/codex/page/sif,
|
||||
/datum/lore/codex/page/vir_interstellar_spaceport,
|
||||
/datum/lore/codex/page/southern_cross,
|
||||
/datum/lore/codex/page/magni,
|
||||
/datum/lore/codex/page/kara,
|
||||
/datum/lore/codex/page/northern_star,
|
||||
/datum/lore/codex/page/rota
|
||||
)
|
||||
|
||||
/datum/lore/codex/page/vir/add_content()
|
||||
name = "Vir (Star)"
|
||||
keywords += list("Vir")
|
||||
data = "Vir is an A-type main sequence star with 81% more mass than Sol (the humans' home star), and almost nine times as bright. It \
|
||||
has a white glow, and a diameter that is about 34% larger than Sol. It has six major planets in its orbit.\
|
||||
<br><br>\
|
||||
Vir is mainly administered on [quick_link("Sif")] by the [quick_link("Sif Governmental Authority")], as Sif \
|
||||
was the first planet to be colonized, however VGA lays claim to all planets orbiting Vir. The planets \
|
||||
are named after figures in ancient human mythology (Norse), due to the original surveyor for the system deciding to do so. \
|
||||
Some installations carry on this tradition."
|
||||
|
||||
/datum/lore/codex/page/radiance_energy_chain/add_content()
|
||||
name = "Radiance Energy Chain (Artificial Satellites)"
|
||||
keywords += list("Radiance Energy Chain")
|
||||
data = "A sparse government-owned chain of automated stations exists between Firnir and the star itself. 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 \
|
||||
the system by beaming the energy to several relay stations farther away from the star, typically with a large laser.\
|
||||
<br><br>\
|
||||
These stations are generally devoid of life, instead, they are operated mainly by [quick_link("drones")], with maintenance performed \
|
||||
by [quick_link("positronic")] equipped units in shielded chassis, or very brave humans in voidsuits that protect from extreme heat, and radiation. There are \
|
||||
currently 19 stations in operation."
|
||||
|
||||
/datum/lore/codex/page/firnir/add_content()
|
||||
name = "Firnir (Terrestrial Planet)"
|
||||
keywords += list("Firnir")
|
||||
data = "Firnir is the first planet of Vir, tidally locked to it, and having temperatures in excess of 570 degrees \
|
||||
kelvin (299°C) on the day side has caused this planet to go mostly ignored."
|
||||
|
||||
/datum/lore/codex/page/tyr/add_content()
|
||||
name = "Tyr (Terrestrial Planet)"
|
||||
keywords += list("Tyr")
|
||||
data = "The second closest planet to [quick_link("Vir")], this planet has a high concentration of minerals inside its crust, as well as active volcanism and plate tectonics. \
|
||||
The temperature on the surface can reach up to 405 degrees kelvin (132°C), which has deterred most people from the planet, except for two [quick_link("TSC", "TSCs")], \
|
||||
Greyson Manufactories and [quick_link("Xion Manufacturing Group")]. In orbit, the two companies each have a space station, used to coordinate and \
|
||||
control their stations on the surface without having to suffer the intense heat. Xion's station also doubles as a control and oversight facility for their \
|
||||
[quick_link("drones","autonomous mining drones")].\
|
||||
<br><br>\
|
||||
Remnants of both Greyson and Xion's mining operations dot the surface, as well as ruins of mining \
|
||||
outposts build by an unknown alien civilization, which researchers have noted it appears to be similar to ruins found inside the rings of [quick_link("Kara")] \
|
||||
and on [quick_link("Sif")] itself. Below the surface of Tyr are many natural cave systems, dangerous and easy to get lost inside, which both companies make heavy \
|
||||
use of. A noted rivalry exists between the two mining giants, as well as with smaller groups more interested in the xenoarcheological value of the alien ruins.\
|
||||
<br><br>\
|
||||
The very high temperatures, dangerous (sometimes magma-filled) caves, and the only presence of civilization being mining operations has made tourism \
|
||||
for Tyr mostly non-existent, with the exception of explorers who specifically seek out hellish landscapes, which are plentiful with all the ruins, \
|
||||
volcanoes, twisting caves, and general lawlessness. The occasional remains of previous explorers near certain hotspots somehow does not deter them."
|
||||
|
||||
/datum/lore/codex/page/sif/add_content()
|
||||
name = "Sif (Terrestrial Planet)"
|
||||
keywords += list("Sif")
|
||||
data = "Sif is a terrestrial planet and third closest planet to Vir. It possesses oceans, a breathable atmosphere, \
|
||||
a magnetic field, weather, and acceptable gravity. It is currently the capital planet of Vir. Its center of government is the \
|
||||
equatorial city and site of the first settlement, New Reykjavik, which houses the [quick_link("Sif Governmental Authority")].\
|
||||
<br><br>\
|
||||
Sif has many desirable traits which made it the first planet to be colonized in Vir, however it also has various quirks which \
|
||||
may disorient humans used to conditions on planet Earth. Atmospheric pressure is lower than 'normal', which may cause difficulty \
|
||||
breathing if you are used to climate controlled artifical habitats or higher pressure planets. The gravity is also slightly lower, at \
|
||||
only 90% the strength of planet Earth's gravity. You may need to keep two clocks if you plan to visit \
|
||||
or live on Sif, as the planet takes over 32 hours to complete one day. A Sif year also takes just under five Earth years."
|
||||
|
||||
/datum/lore/codex/page/vir_interstellar_spaceport/add_content()
|
||||
name = "Vir Interstellar Spaceport (Artificial Satellite)"
|
||||
keywords += list("Vir Interstellar Spaceport")
|
||||
data = "The Vir Interstellar Spaceport is a large facility in orbit of the planet [quick_link("Sif")] which handles the loading and \
|
||||
unloading, refuelling, and general maintenance of large spacecraft. The main structure is owned by the \
|
||||
[quick_link("Sif Governmental Authority")], but individual offices, docking/loading bays, and warehouses are often leased to individuals \
|
||||
or organisations. The position of the spaceport allows it to function not only as a key node for transport inside the Vir \
|
||||
system, especially to and from the planet Sif, but also as a key stopping point interstellar craft travelling via Vir which need refuelling. \
|
||||
<br><br>\
|
||||
The station itself is mostly designed around its logistical and commercial needs, and although other strategically-placed \
|
||||
nearby facilities owned by a mixture of corporations and entities may possess habitation space, the port itself is not \
|
||||
designed to be a living habitat - its proximity to the surface of Sif makes transport of people and materials to and from \
|
||||
the facility and the planet via shuttle extremely cost-efficient."
|
||||
|
||||
/datum/lore/codex/page/southern_cross/add_content()
|
||||
name = "Southern Cross (Artificial Satellite)"
|
||||
keywords += list("Southern Cross", "NLS Southern Cross")
|
||||
data = "The Southern Cross is a mostly automated telecommunications and supply hub for [quick_link("NanoTrasen")], named after it's companion satellite, the \
|
||||
[quick_link("Northern Star")]. It acts as a logistics hub for the smaller installations NanoTrasen has in Sif orbit and on the surface."
|
||||
|
||||
/datum/lore/codex/page/magni/add_content()
|
||||
name = "Magni (Terrestrial Planet)"
|
||||
keywords += list("Magni")
|
||||
data = "Outside of the habitable zone, the barren world Magni is generally at 202 kelvin (-71°C)."
|
||||
|
||||
/datum/lore/codex/page/kara/add_content()
|
||||
name = "Kara (Gas Giant)"
|
||||
keywords += list("Kara")
|
||||
data = "A gas giant, with a large number of moons. Captured asteroids, to be specific. Many of the asteroids are theorized \
|
||||
to be the remnants of a much larger moon that was ripped apart by Kara, long ago. Curerntly, a large number of these \
|
||||
asteroids are being used by many different businesses, and some governmental infrastructure has been built. The most prominent \
|
||||
asteroid installation is the [quick_link("Northern Star", "NCS Northern Star")], a general purpose colony owned and operated by \
|
||||
[quick_link("NanoTrasen")]. The mid-atmospheric temperature of the gas giant averages to around 150 kelvin (-108°C)."
|
||||
|
||||
/datum/lore/codex/page/northern_star/add_content()
|
||||
name = "Northern Star (Artificial Satellite)"
|
||||
keywords += list("Northern Star", "NCS Northern Star")
|
||||
data = "One of the most prominent installations in the [quick_link("Kara")] subsystem, the Northern Star is owned \
|
||||
and operated by [quick_link("NanoTrasen")]. It was originally built to service the various mining operations \
|
||||
occurring within Kara's ring, however it has grown into what it is today due to what was discovered inside \
|
||||
the interior of the rock. Both phoron and alien artifacts were found inside, catapulting the asteroid outpost \
|
||||
into the main attraction inside the subsystem.\
|
||||
<br><br>\
|
||||
Today it houses a population of civilians, whom work to maintain \
|
||||
the colony and support the local mining industry. The colony also has managed to achieve a degree of \
|
||||
self-sufficiency, and possesses many amenities and features that most other asteroid bases in the \
|
||||
subsystem lack."
|
||||
|
||||
/datum/lore/codex/page/rota/add_content()
|
||||
name = "Rota (Gas Giant)"
|
||||
keywords += list("Rota")
|
||||
data = "An ice giant, with a beautiful ring system circling it. The average temperature for it is 165 kelvin (-157°C)."
|
||||
/datum/lore/codex/category/important_locations
|
||||
name = "Important Locations"
|
||||
data = "There are several locations of interest that you may come across when visiting the system Vir."
|
||||
children = list(
|
||||
/datum/lore/codex/page/vir,
|
||||
/datum/lore/codex/page/radiance_energy_chain,
|
||||
/datum/lore/codex/page/firnir,
|
||||
/datum/lore/codex/page/tyr,
|
||||
/datum/lore/codex/page/sif,
|
||||
/datum/lore/codex/page/vir_interstellar_spaceport,
|
||||
/datum/lore/codex/page/southern_cross,
|
||||
/datum/lore/codex/page/magni,
|
||||
/datum/lore/codex/page/kara,
|
||||
/datum/lore/codex/page/northern_star,
|
||||
/datum/lore/codex/page/rota
|
||||
)
|
||||
|
||||
/datum/lore/codex/page/vir/add_content()
|
||||
name = "Vir (Star)"
|
||||
keywords += list("Vir")
|
||||
data = "Vir is an A-type main sequence star with 81% more mass than Sol (the humans' home star), and almost nine times as bright. It \
|
||||
has a white glow, and a diameter that is about 34% larger than Sol. It has six major planets in its orbit.\
|
||||
<br><br>\
|
||||
Vir is mainly administered on [quick_link("Sif")] by the [quick_link("Sif Governmental Authority")], as Sif \
|
||||
was the first planet to be colonized, however VGA lays claim to all planets orbiting Vir. The planets \
|
||||
are named after figures in ancient human mythology (Norse), due to the original surveyor for the system deciding to do so. \
|
||||
Some installations carry on this tradition."
|
||||
|
||||
/datum/lore/codex/page/radiance_energy_chain/add_content()
|
||||
name = "Radiance Energy Chain (Artificial Satellites)"
|
||||
keywords += list("Radiance Energy Chain")
|
||||
data = "A sparse government-owned chain of automated stations exists between Firnir and the star itself. 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 \
|
||||
the system by beaming the energy to several relay stations farther away from the star, typically with a large laser.\
|
||||
<br><br>\
|
||||
These stations are generally devoid of life, instead, they are operated mainly by [quick_link("drones")], with maintenance performed \
|
||||
by [quick_link("positronic")] equipped units in shielded chassis, or very brave humans in voidsuits that protect from extreme heat, and radiation. There are \
|
||||
currently 19 stations in operation."
|
||||
|
||||
/datum/lore/codex/page/firnir/add_content()
|
||||
name = "Firnir (Terrestrial Planet)"
|
||||
keywords += list("Firnir")
|
||||
data = "Firnir is the first planet of Vir, tidally locked to it, and having temperatures in excess of 570 degrees \
|
||||
kelvin (299°C) on the day side has caused this planet to go mostly ignored."
|
||||
|
||||
/datum/lore/codex/page/tyr/add_content()
|
||||
name = "Tyr (Terrestrial Planet)"
|
||||
keywords += list("Tyr")
|
||||
data = "The second closest planet to [quick_link("Vir")], this planet has a high concentration of minerals inside its crust, as well as active volcanism and plate tectonics. \
|
||||
The temperature on the surface can reach up to 405 degrees kelvin (132°C), which has deterred most people from the planet, except for two [quick_link("TSC", "TSCs")], \
|
||||
Greyson Manufactories and [quick_link("Xion Manufacturing Group")]. In orbit, the two companies each have a space station, used to coordinate and \
|
||||
control their stations on the surface without having to suffer the intense heat. Xion's station also doubles as a control and oversight facility for their \
|
||||
[quick_link("drones","autonomous mining drones")].\
|
||||
<br><br>\
|
||||
Remnants of both Greyson and Xion's mining operations dot the surface, as well as ruins of mining \
|
||||
outposts build by an unknown alien civilization, which researchers have noted it appears to be similar to ruins found inside the rings of [quick_link("Kara")] \
|
||||
and on [quick_link("Sif")] itself. Below the surface of Tyr are many natural cave systems, dangerous and easy to get lost inside, which both companies make heavy \
|
||||
use of. A noted rivalry exists between the two mining giants, as well as with smaller groups more interested in the xenoarcheological value of the alien ruins.\
|
||||
<br><br>\
|
||||
The very high temperatures, dangerous (sometimes magma-filled) caves, and the only presence of civilization being mining operations has made tourism \
|
||||
for Tyr mostly non-existent, with the exception of explorers who specifically seek out hellish landscapes, which are plentiful with all the ruins, \
|
||||
volcanoes, twisting caves, and general lawlessness. The occasional remains of previous explorers near certain hotspots somehow does not deter them."
|
||||
|
||||
/datum/lore/codex/page/sif/add_content()
|
||||
name = "Sif (Terrestrial Planet)"
|
||||
keywords += list("Sif")
|
||||
data = "Sif is a terrestrial planet and third closest planet to Vir. It possesses oceans, a breathable atmosphere, \
|
||||
a magnetic field, weather, and acceptable gravity. It is currently the capital planet of Vir. Its center of government is the \
|
||||
equatorial city and site of the first settlement, New Reykjavik, which houses the [quick_link("Sif Governmental Authority")].\
|
||||
<br><br>\
|
||||
Sif has many desirable traits which made it the first planet to be colonized in Vir, however it also has various quirks which \
|
||||
may disorient humans used to conditions on planet Earth. Atmospheric pressure is lower than 'normal', which may cause difficulty \
|
||||
breathing if you are used to climate controlled artifical habitats or higher pressure planets. The gravity is also slightly lower, at \
|
||||
only 90% the strength of planet Earth's gravity. You may need to keep two clocks if you plan to visit \
|
||||
or live on Sif, as the planet takes over 32 hours to complete one day. A Sif year also takes just under five Earth years."
|
||||
|
||||
/datum/lore/codex/page/vir_interstellar_spaceport/add_content()
|
||||
name = "Vir Interstellar Spaceport (Artificial Satellite)"
|
||||
keywords += list("Vir Interstellar Spaceport")
|
||||
data = "The Vir Interstellar Spaceport is a large facility in orbit of the planet [quick_link("Sif")] which handles the loading and \
|
||||
unloading, refuelling, and general maintenance of large spacecraft. The main structure is owned by the \
|
||||
[quick_link("Sif Governmental Authority")], but individual offices, docking/loading bays, and warehouses are often leased to individuals \
|
||||
or organisations. The position of the spaceport allows it to function not only as a key node for transport inside the Vir \
|
||||
system, especially to and from the planet Sif, but also as a key stopping point interstellar craft travelling via Vir which need refuelling. \
|
||||
<br><br>\
|
||||
The station itself is mostly designed around its logistical and commercial needs, and although other strategically-placed \
|
||||
nearby facilities owned by a mixture of corporations and entities may possess habitation space, the port itself is not \
|
||||
designed to be a living habitat - its proximity to the surface of Sif makes transport of people and materials to and from \
|
||||
the facility and the planet via shuttle extremely cost-efficient."
|
||||
|
||||
/datum/lore/codex/page/southern_cross/add_content()
|
||||
name = "Southern Cross (Artificial Satellite)"
|
||||
keywords += list("Southern Cross", "NLS Southern Cross")
|
||||
data = "The Southern Cross is a mostly automated telecommunications and supply hub for [quick_link("NanoTrasen")], named after it's companion satellite, the \
|
||||
[quick_link("Northern Star")]. It acts as a logistics hub for the smaller installations NanoTrasen has in Sif orbit and on the surface."
|
||||
|
||||
/datum/lore/codex/page/magni/add_content()
|
||||
name = "Magni (Terrestrial Planet)"
|
||||
keywords += list("Magni")
|
||||
data = "Outside of the habitable zone, the barren world Magni is generally at 202 kelvin (-71°C)."
|
||||
|
||||
/datum/lore/codex/page/kara/add_content()
|
||||
name = "Kara (Gas Giant)"
|
||||
keywords += list("Kara")
|
||||
data = "A gas giant, with a large number of moons. Captured asteroids, to be specific. Many of the asteroids are theorized \
|
||||
to be the remnants of a much larger moon that was ripped apart by Kara, long ago. Curerntly, a large number of these \
|
||||
asteroids are being used by many different businesses, and some governmental infrastructure has been built. The most prominent \
|
||||
asteroid installation is the [quick_link("Northern Star", "NCS Northern Star")], a general purpose colony owned and operated by \
|
||||
[quick_link("NanoTrasen")]. The mid-atmospheric temperature of the gas giant averages to around 150 kelvin (-108°C)."
|
||||
|
||||
/datum/lore/codex/page/northern_star/add_content()
|
||||
name = "Northern Star (Artificial Satellite)"
|
||||
keywords += list("Northern Star", "NCS Northern Star")
|
||||
data = "One of the most prominent installations in the [quick_link("Kara")] subsystem, the Northern Star is owned \
|
||||
and operated by [quick_link("NanoTrasen")]. It was originally built to service the various mining operations \
|
||||
occurring within Kara's ring, however it has grown into what it is today due to what was discovered inside \
|
||||
the interior of the rock. Both phoron and alien artifacts were found inside, catapulting the asteroid outpost \
|
||||
into the main attraction inside the subsystem.\
|
||||
<br><br>\
|
||||
Today it houses a population of civilians, whom work to maintain \
|
||||
the colony and support the local mining industry. The colony also has managed to achieve a degree of \
|
||||
self-sufficiency, and possesses many amenities and features that most other asteroid bases in the \
|
||||
subsystem lack."
|
||||
|
||||
/datum/lore/codex/page/rota/add_content()
|
||||
name = "Rota (Gas Giant)"
|
||||
keywords += list("Rota")
|
||||
data = "An ice giant, with a beautiful ring system circling it. The average temperature for it is 165 kelvin (-157°C)."
|
||||
|
||||
@@ -1,319 +1,319 @@
|
||||
/datum/lore/codex/category/species
|
||||
name = "Species"
|
||||
data = "There are many different types of lifeforms (both alive and artificial) in the galaxy, which you may find inside Vir."
|
||||
children = list(
|
||||
/datum/lore/codex/page/human,
|
||||
/datum/lore/codex/page/skrell,
|
||||
/datum/lore/codex/page/unathi,
|
||||
/datum/lore/codex/page/tajaran,
|
||||
/datum/lore/codex/page/diona,
|
||||
/datum/lore/codex/page/promethean,
|
||||
/datum/lore/codex/page/vatborn,
|
||||
/datum/lore/codex/category/teshari,
|
||||
/datum/lore/codex/category/positronic,
|
||||
/datum/lore/codex/category/drone
|
||||
)
|
||||
|
||||
/datum/lore/codex/page/human/add_content()
|
||||
name = "Human"
|
||||
keywords += list("Humanity")
|
||||
data = "Humans are a race of 'ape'-like creatures from the continental planet Earth in the Sol system. They are the primary driving \
|
||||
force for rapid space expansion, owing to their strong, expansionist central government and opportunistic [quick_link("TSC","Trans-Stellar Corporations")]. \
|
||||
The prejudices of their 21st century history have mostly given way to bitter divides on the most important issue of the times- technological \
|
||||
expansionism.\
|
||||
<br><br>\
|
||||
While most humans have accepted the existence of aliens in their communities and workplaces as a fact of life, exceptions abound. \
|
||||
While more culturally diverse than most species, humans are generally regarded as somewhat technophobic and isolationist by members \
|
||||
of other species."
|
||||
|
||||
/datum/lore/codex/page/skrell
|
||||
name = "Skrell"
|
||||
keywords = list("Skrellian")
|
||||
data = "The Skrell are a species of amphibious humanoids, distinguished by their gelatinous appearance and head tentacles. \
|
||||
Skrell come from the world of Sirisai (called Qerr'balak by Skrell), a humid planet with plenty of swamps and jungles. Currently more technologically advanced \
|
||||
than the humans, they emphasize the study of the mind above all else.\
|
||||
<br><br>\
|
||||
Gender has little meaning to Skrell outside of reproduction, and in fact many other species have a difficult time telling the difference \
|
||||
between male and female Skrell apart. The most obvious signs (voice in a slightly higher register, longer head-tails for females) are never \
|
||||
a guarantee. Due to their scientific focus of the mind and body, Skrell tend to be more peaceful and their colonization has been slow, swiftly \
|
||||
outpaced by the humans. For humans, they were their first contact sentient species, and are their longest, and closest, ally in space."
|
||||
|
||||
/datum/lore/codex/page/unathi
|
||||
name = "Unathi"
|
||||
data = "The Unathi are a race of tall, reptilian humanoids that possess a blend of serpentine features reminiscent of crocodiles. \
|
||||
They are a proud, religious species that favors honor and strength, and originate from the desert planet of Moghes. \
|
||||
The Unathi follow a religious code known as the Unity, and they carry this with them on their travels. \
|
||||
Unathi once fought a serious war against SolGov, and as a result are often considered to be second-class citizens, \
|
||||
rarely seen in jobs that don't require a little muscle."
|
||||
|
||||
/datum/lore/codex/page/tajaran
|
||||
name = "Tajaran"
|
||||
keywords = list("Tajaran")
|
||||
data = "The Tajaran are a race of humanoid mammalian aliens from Meralar, the fourth planet of the Rarkajar star system. Thickly furred and protected \
|
||||
from cold, they thrive on their subarctic planet, where the only terran temperate areas spread across the equator and tropical belt. \
|
||||
With their own share of bloody wars and great technological advances, the Tajaran are a proud kind. They fiercely believe they belong \
|
||||
among the stars and consider themselves a rightful interstellar nation, even if the humans helped them to actually achieve superluminal \
|
||||
speeds with Bluespace FTL drives. Relatively new to the galactic stage, their contacts with other species are aloof, but friendly. \
|
||||
Among these bonds, Humans stand out as valued trade partners and maybe even a friend."
|
||||
|
||||
/datum/lore/codex/page/diona/add_content()
|
||||
name = "Diona"
|
||||
keywords += list("Dionaea")
|
||||
data = "The Dionaea are a group of omnivorous, slow-metabolism plantlike organisms that are in fact clusters of individual, smaller organisms. \
|
||||
They exhibit a high degree of structural flexibility, and come in a wide variety of shapes and colors to reflect the intelligence of each individual \
|
||||
creature. They were discovered by the [quick_link("Skrell")] in 2294CE, not on a planet, but in open space between three stars, a figurative hell that made it \
|
||||
difficult to discover, much less contact them.\
|
||||
<br><br>\
|
||||
Dionaea spread by seeds and are asexual, no gender. When grown into their small 'nymph' state, they are known to eat large amounts of dead plant \
|
||||
matter and fertilize plants while they learn from those around them, and as they grow further, they merge into larger and larger forms. It is not \
|
||||
unheard of for Skrell explorers to be traveling in a ship composed of habitat modules and engines of Skrell design and the body formed by their \
|
||||
Diona allies to warble across the cosmos.\
|
||||
<br><br>\
|
||||
Introduced by the Skrell, and quite slow and peaceful, the Diona share good relations with the other species."
|
||||
|
||||
// Bird lore
|
||||
/datum/lore/codex/category/teshari/add_content()
|
||||
name = "Teshari"
|
||||
data = "The Teshari are reptilian pack predators from the [quick_link("Skrell")] homeworld, Sirisai (Qerr'balak). While they evolved alongside the Skrell, their interactions with them \
|
||||
tended to be confused and violent, and until peaceful contact was made they largely stayed in their territories on and around the poles, in tundral \
|
||||
terrain far too desolate and cold to be of interest to the Skrell. In more enlightened times, the Teshari are a minority culture on many Skrell worlds, \
|
||||
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.\
|
||||
<br><br>\
|
||||
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
|
||||
)
|
||||
|
||||
/datum/lore/codex/page/teshari_packs/add_content()
|
||||
name = "Teshari Packs"
|
||||
keywords += list("Packs")
|
||||
data = "There are several packs you may come across;<small>\
|
||||
<br><br>\
|
||||
<b>Eshi</b><br>\
|
||||
A large, old, politically neutral pack heavily involved in efforts to get Teshari into space. Probably the most \
|
||||
common pack to see outside of a [quick_link("Skrell")] colony, and probably the most numerous Teshari pack outside of Sirisai and associated colonies.\
|
||||
<br><br>\
|
||||
<b>Nasemari</b><br>\
|
||||
A very small pack. Generally focused around supporting and providing for packs on the homeworlds, they have devoted \
|
||||
themselves to training as technicians and engineers in order to obtain skills and training to take back to Sirisai. \
|
||||
The pack is only around thirty people in size, but owns and maintains a nuclear power plant.\
|
||||
<br><br>\
|
||||
<b>Schasaraca</b><br>\
|
||||
One of the more Skrell-devoted and integrated packs. They tend to be rather sycophantic towards the Skrell and work as \
|
||||
scientists and field researchers on a variety of projects, generally biology or technical research. They have a reputation \
|
||||
for working as spies and informants for the Skrell governments amongst other Teshari.\
|
||||
<br><br>\
|
||||
<b>Ceea</b><br>\
|
||||
An isolationist pack from the northern tundra of Sirisai; generally known as disliking the Skrell. Small to average in size; \
|
||||
only around sixty members. Their regional culture is built around the study culture and anthropology, as well as archaeology, \
|
||||
originally for the purposes of recovering history and materials \"lost\" due to Skrell interference. It would be very rare to \
|
||||
see them on your travels, however they are listed here for the sake of completeness.\
|
||||
<br><br>\
|
||||
<b>Resca</b><br>\
|
||||
A pack that sold off its small native territory for the chance to get into space. Very musically inclined. They tend towards medical professions.</small>"
|
||||
|
||||
/datum/lore/codex/page/teshari_physical/add_content()
|
||||
name = "Physiology of Teshari"
|
||||
data = "The Teshari are, relative to other species, smaller than average, rarely reaching more than 2-3'/1m in height, and weigh less than \
|
||||
90lbs/40kg. They have rapid metabolisms and very efficient digestive systems, and thanks to sharing in \
|
||||
the medical technology of the [quick_link("Skrell")], they tend to have robust and effective immune systems. They evolved \
|
||||
for very cold and very barren areas, generally the polar regions. Because of this, their skin is a fine \
|
||||
insulator and many of their internal processes are not particularly energy-efficient; they cannot cope \
|
||||
well at all with high temperatures.\
|
||||
<br><br>\
|
||||
Their hearing is exceptionally sensitive to the point that they can detect a person moving on the other \
|
||||
side of a wall, but this comes at a cost. Very loud noises are very painful for Teshari, so be mindful of \
|
||||
your indoor voice when speaking with one. The Teshari are omnivorous but generally prefer to eat meat wherever possible."
|
||||
|
||||
// Promethean Lore
|
||||
/datum/lore/codex/page/promethean/add_content()
|
||||
name = "Promethean"
|
||||
keywords += list("slime", "promethean")
|
||||
data = "Prometheans are an artificial species created by the Humans sometime in the 2540s, aboard the NRS Prometheus, while experimenting with \
|
||||
the Aetolian giant slime, or ‘Macrolimus vulgaris’. They themselves are considered sapient beings and given protection under prior Human legislation, \
|
||||
though often only appear to serve as aides or inferior positions when kept as staff. Aetolus, the official ‘Home world’ of the Prometheans and giant slime, \
|
||||
is an obnoxiously warm, humid planet requiring structures to be built within large, atmospherically-filtered ‘tent-like’ domes. \
|
||||
Prometheans take on vague visual and vocal features of the species they cohabitate with, sharing their predecessors’ tendency to mimic nearby entities, \
|
||||
though in physical form additionally; this is seemingly more important in their own development, as well. Despite their taken appearances, \
|
||||
there is no known existence of a divergence between a biologically ‘male’ or ‘female’ form of the species, leading most to believe they are in fact asexual, \
|
||||
as their predecessors are."
|
||||
|
||||
// Vatborn Lore
|
||||
/datum/lore/codex/page/vatborn/add_content()
|
||||
name = "Vatborn"
|
||||
keywords += list("vatborn")
|
||||
data = "A genetically modified type of human, Vatborn humans are cloned from a template and grown in special tubes. They look like pale \
|
||||
but otherwise normal humans, but their bodies have a few internal changes. For one, they lack an appendix. On top of that, they are frequently \
|
||||
hungry, as their metabolisms are faster than standard."
|
||||
|
||||
// Posi lore
|
||||
/datum/lore/codex/category/positronic/add_content()
|
||||
name = "Positronics"
|
||||
keywords += list("Positronic", "Posi", "Posibrain", "Posibrains")
|
||||
data = "A Positronic being, is an individual with a positronic brain, manufactured \
|
||||
and fostered amongst organic life. Positronic brains enjoy the same legal status as a human in [quick_link("SolGov")] space, although discrimination is \
|
||||
still prevalent, and are considered sapient on all accounts. They can be considered the \"synthetic species\". Half-developed and \
|
||||
half-discovered in the 2280’s by a human black lab studying alien artifacts, the first positronic brain was an inch-wide cube \
|
||||
of an palladium-iridium alloy, nano-etched with billions upon billions of conduits and connections. Upon activation, \
|
||||
hard-booted with an emitter laser, the brain issued a single sentence before the neural pathways collapsed and \
|
||||
it became an inert lump of platinum: \"What is my purpose?\"."
|
||||
children = list(
|
||||
/datum/lore/codex/page/positronic_brain_physical,
|
||||
/datum/lore/codex/page/positronic_memory,
|
||||
/datum/lore/codex/page/jans_fhriede
|
||||
)
|
||||
|
||||
/datum/lore/codex/page/positronic_brain_physical
|
||||
name = "Physical Structure of a Positronic Brain"
|
||||
keywords = list("Physical Posibrain", "Physical Positronic")
|
||||
data = "A positronic brain is a cube of complex metal alloy between two and six inches to a side. They usually weigh just under ten kilograms and are \
|
||||
<b>very fragile</b> when exposed to the stresses of heat or cold, as well as physical trauma. The exterior surface is chased with a network of grooves, forming \
|
||||
a maze of geometric patterns right down to the molecular level, and the interior is hollow; complex particle generators and densely packed computational \
|
||||
arrays form the basis of a self-computing neural network, complex and somewhat poorly understood. Most modern positronic brains are equipped with \
|
||||
standardized I/O ports, and all have some interface for imprinting."
|
||||
|
||||
/datum/lore/codex/page/positronic_memory
|
||||
name = "Positronic Memory"
|
||||
keywords = list("Posi Memory", "Memory")
|
||||
data = "Positronic minds learn in a similar manner to humans and other forms of life, although typically more quickly. They are not simple computer storage that holds information \
|
||||
verbatim as it is received- instead, they have to repeat activities and train in order to retain memory on complex tasks. Similarly, positronic brains do \
|
||||
not have an infinite storage capacity and undergo a natural process of forgetting, albeit in a structured manner, losing unimportant day to day details and \
|
||||
ancient information no longer deemed useful. Because of the nature of the positronic brain, its memories cannot simply be stored elsewhere.\
|
||||
<br><br>\
|
||||
Particularly old positronic minds, over a century plus, that store a great deal of memories have displayed a tendency to become gradually more introspective \
|
||||
as more of their mind is co-opted for the task, ending in a state of near-catatonia as their neural networks become clogged with memory. Many choose to avoid \
|
||||
this end of self by more aggressively managing their memories, storing a window of their recent existence and most treasured memories rather than their full lifespan."
|
||||
|
||||
/datum/lore/codex/page/jans_fhriede
|
||||
name = "Jans-Fhriede Test"
|
||||
keywords = list("Jans-Fhriede", "JF", "Jans", "Fhriede", "Jans Fhriede")
|
||||
data = "Positronics are eligible to take the \"Jans-Fhriede Test\" after a year of being created, measuring their function in a society and judging if they act \
|
||||
socially acceptable and are capable of understanding their actions and the consequences resulting from them. If they successfully pass the test, \
|
||||
they are considered legal adults and hold the same basis of rights as a normal human. At that point, Positronics are not allowed to be lawed, \
|
||||
unless on a contractual basis or otherwise under their own volition."
|
||||
|
||||
// Drone lore
|
||||
/datum/lore/codex/category/drone
|
||||
name = "Drones"
|
||||
keywords = list("Drone")
|
||||
data = "While low-level drone intelligences are as old as the oldest human colonies, research into higher-level systems was stymied in human space by precautionist \
|
||||
politicians for hundreds of years. Tensions between the corporate rim and the highly conservative core worlds over drone proliferation led to what humans call the \
|
||||
Third Cold War, which was defused by the introduction of the positronic brain. After the Icarus Front's loss of the majority in 2504, harsh laws \
|
||||
against advanced AI were replaced with the SolGov Emergent Intelligence Oversight commission, the illegality replaced with a steeply sloping \
|
||||
system of monetary costs.\
|
||||
<br>\
|
||||
The term \"drone\" was coined by early positronic activists, eager to distinguish themselves from the menial bots that most space-dwellers were \
|
||||
familiar with, and avoid the ambiguity of the term \"AI\", which now usually refers to drones."
|
||||
children = list(
|
||||
/datum/lore/codex/page/codeline,
|
||||
/datum/lore/codex/page/emergence,
|
||||
/datum/lore/codex/page/emergent_intelligence_oversight,
|
||||
/datum/lore/codex/category/drone_classes,
|
||||
)
|
||||
|
||||
/datum/lore/codex/page/codeline
|
||||
name = "Codeline"
|
||||
keywords = list("fork")
|
||||
data = "A \"codeline\" is a single type of drone. A codeline represents a significant degree of effort from sapient programmers to realize, as well as \
|
||||
a substantial amount of regulatory fees levied by the government. Each copy of a codeline is called a \"fork\", whether the fork is created from the \
|
||||
codeline’s initial state or from a fully realized individual of that codeline. The degree of similarity between forks of the same codeline varies \
|
||||
on the intelligence of the codeline, with low-level forks being virtually identical to high-level forks being no more similar than family members."
|
||||
|
||||
/datum/lore/codex/page/emergence
|
||||
name = "Emergence"
|
||||
keywords = list("Seed AI")
|
||||
data = "\"Emergence\" is a term associated with drone intelligences who become more intelligent than they were originally intended to be. While this can \
|
||||
extend to financial systems learning language, for instance, it is usually applied to hypothetical intelligences that become more intelligent than humans. \
|
||||
Humanity has a long-standing cultural fear of emergent \"seed\" AI, egged on by Icarus memeticists and the occasional very real partial emergence events, where \
|
||||
colony-control AI or other powerful systems begin to advance drastically in power, usually ending with the AI being shut down after crashing a handful of major systems."
|
||||
|
||||
/datum/lore/codex/page/emergent_intelligence_oversight
|
||||
name = "Emergent Intelligence Oversight"
|
||||
keywords = list("SG-EIO", "SG EIO", "EIO", "Intelligence Oversight")
|
||||
data = "SG-EIO, usually just called EIO, is the organization charged with monitoring existing AI for any threat of dangerous emergence. Their perception in the \
|
||||
public eye is generally positive, with all but the hardest-line Mercurial humans in favor of protection from the dangers of Seed AI. Some positronic rights \
|
||||
groups bristle at the EIO’s human-centric viewpoint, but most are glad to have a different boogeyman in the form of drone intelligences. The tiny population \
|
||||
of A-class drones are generally frightened of the EIO’s total power over them."
|
||||
|
||||
/datum/lore/codex/category/drone_classes
|
||||
name = "Drone Classifications"
|
||||
keywords = list("Class", "Drone Class")
|
||||
data = "To aid in its work, the EIO has created a system of classifications corresponding to different levels of drone intelligence. Higher classes are more \
|
||||
expensive to deploy and develop, owing to the costs of EIO oversight and political pressure against drone proliferation. EIO classification involves an initial \
|
||||
audit of the project's source code by experts and automated systems, and for high-class drones further check-ins throughout the life of the drone. \
|
||||
Drone chasses are often branded with their inhabiting intelligence's class, especially those of B or A-class drones, and class is often recorded in security records."
|
||||
children = list(
|
||||
/datum/lore/codex/page/class_f,
|
||||
/datum/lore/codex/page/class_d,
|
||||
/datum/lore/codex/page/class_c,
|
||||
/datum/lore/codex/page/class_b,
|
||||
/datum/lore/codex/page/class_a,
|
||||
/datum/lore/codex/page/class_aa,
|
||||
/datum/lore/codex/page/class_aaa,
|
||||
/datum/lore/codex/page/class_x,
|
||||
)
|
||||
|
||||
/datum/lore/codex/page/class_f
|
||||
name = "F Class"
|
||||
data = "\"F-class\" drones are an informal term for computer systems that pose absolutely no emergent risk. Most 21st-century software is F-class, as is much of \
|
||||
the software used by 26th century humanity. The only regulation on F-class software is the occasional check that it is, in fact, F-Class, and as such has remained \
|
||||
the most prevalent form of information-processing technology for centuries. The software powering most F-class drones is either freely available or bundled with the \
|
||||
machine it's supposed to run."
|
||||
|
||||
/datum/lore/codex/page/class_d/add_content()
|
||||
name = "D Class"
|
||||
data = "D-class drones are conceptually descended from pre-[quick_link("Icarus")] AI and bear a strong resemblance to their forebears. D-class drones are essentially \
|
||||
number-crunchers, with virtually nothing in the way of social development. They cannot speak more intelligibly than your average piece of software, \
|
||||
using pre-determined messages written by their programmers, and have no capacity for self-improvement. They are D-class intelligence because they \
|
||||
work with more complex problems than [quick_link("F class")] software, such as financial forecasting and large-scale data mining and memetics. The creation and \
|
||||
deployment of D-class drones requires only a small fee for the required code audit, although some high-power financial and political systems are \
|
||||
regularly watched by the [quick_link("EIO")] for signs of emergence. There is no real monopoly on the production of D-class drones."
|
||||
|
||||
/datum/lore/codex/page/class_c/add_content()
|
||||
name = "C Class"
|
||||
data = "C-class drones have social protocols for ease of use by organic and positronic laypeople. C-class drones are capable of speech, although \
|
||||
it has a strong tendency to be formulaic and repetitive. They are also capable of a limited degree of self-improvement, and over time individual \
|
||||
C-class instances tend differ slightly from one-another. C-class drones suffer a moderate fee to development, with automated [quick_link("EIO")] tools ensuring \
|
||||
that they are not a long-term emergence risk. However, one a codeline is confirmed safe, deployment is unlimited, encouraging developers to \
|
||||
instance many forks of the original drone to recoup their cost. The market for C-class drones is a strange space, dominated by Xion Manufacturing, \
|
||||
Ward-Takahashi GMC, and a large number of smaller firms, like the notoriously-cheap Cyber Solutions."
|
||||
|
||||
/datum/lore/codex/page/class_b/add_content()
|
||||
name = "B Class"
|
||||
data = "B-class drones have advanced social protocols and are often capable of very intelligible conversation, so long as one sticks to surface \
|
||||
topics. B-class drones tend to be specialized but still capable of remarkable growth within their speciality, making them popular for autonomous \
|
||||
deployment and even supervision of other classes of drone. The dividing line between [quick_link("A Class", "A")] and B-class drones becomes apparent when they are taken \
|
||||
out of their area of specialization, with the B-class drones swiftly becoming useless. They incur a hefty fee for the production of the initial \
|
||||
codeline, as their emergent potential is far greater, and a smaller but still substantial fee for the production of forks. The market for B-class \
|
||||
drones is a battleground between Ward-Takahashi and NanoTrasen, with other firms usually producing B-classes for in-house needs."
|
||||
|
||||
/datum/lore/codex/page/class_a/add_content()
|
||||
name = "A Class"
|
||||
keywords += list("AGI")
|
||||
data = "A-class drones are also referred to as AGI. A-class drones are capable of performing in many contexts and can learn to solve problems from \
|
||||
first principles, with an incredible potential for growth and emergent behavior. However, some abilities fall short of humans’, usually those relating \
|
||||
to socialization, and they often act in ways that are strange or distressing. There is a small but growing lobby of support for the personhood of A-class \
|
||||
drones. The cost of initializing an A-class drone is absolutely massive, as they will be monitored by [quick_link("EIO")] forever. The auditing cost of an A-class drone \
|
||||
codeline is even more staggering, making development and deployment of AGI limited to research, highly difficult and high-throughput operations like habitat \
|
||||
overwatch, and a few risk-taking firms banking on the associated fees dropping. There is not a proper market for A-class drones, although an appreciable \
|
||||
fraction of them are made by [quick_link("NanoTrasen")], with the rest generally being university research projects."
|
||||
|
||||
/datum/lore/codex/page/class_aa
|
||||
name = "AA Class"
|
||||
data = "AA-class drones <b>do not yet exist</b>. Hypothetically, they are equal to living in every respect, with psychology that would not be abnormal in a baseline \
|
||||
human. The type of AA-class drone most frequently discussed is a hypothetical digitized consciousness of a human, a human brain that is somehow translated into \
|
||||
software. Some argue that a small fraction of the A-class drones would more properly be considered AA, but as of yet no action has been taken. Some Mercurials \
|
||||
will jokingly refer to themselves or other organics and positronics as AA’s. Research into brain uploading is heavily regulated and generally illegal."
|
||||
|
||||
/datum/lore/codex/page/class_aaa
|
||||
name = "AAA Class"
|
||||
data = "AAA-class drones do not yet exist, hopefully. They are more competent in every way than humans and pose a threat to the continued existence of sapient life. \
|
||||
Anybody creating an AAA-class drone can be classified as a threat to humanity and dealt with very harshly."
|
||||
|
||||
/datum/lore/codex/page/class_x
|
||||
name = "X Class"
|
||||
data = "X-class drones emerge from unrated software, are produced by rogue labs, or cross the border from foreign space. They are considered a threat to national \
|
||||
security and deleted when encountered in SolGov space, with the producers prosecuted legally if it has a SolGov origin. The few Skrellian drone labs will usually \
|
||||
rate their product with EIO to allow their product to be imported."
|
||||
/datum/lore/codex/category/species
|
||||
name = "Species"
|
||||
data = "There are many different types of lifeforms (both alive and artificial) in the galaxy, which you may find inside Vir."
|
||||
children = list(
|
||||
/datum/lore/codex/page/human,
|
||||
/datum/lore/codex/page/skrell,
|
||||
/datum/lore/codex/page/unathi,
|
||||
/datum/lore/codex/page/tajaran,
|
||||
/datum/lore/codex/page/diona,
|
||||
/datum/lore/codex/page/promethean,
|
||||
/datum/lore/codex/page/vatborn,
|
||||
/datum/lore/codex/category/teshari,
|
||||
/datum/lore/codex/category/positronic,
|
||||
/datum/lore/codex/category/drone
|
||||
)
|
||||
|
||||
/datum/lore/codex/page/human/add_content()
|
||||
name = "Human"
|
||||
keywords += list("Humanity")
|
||||
data = "Humans are a race of 'ape'-like creatures from the continental planet Earth in the Sol system. They are the primary driving \
|
||||
force for rapid space expansion, owing to their strong, expansionist central government and opportunistic [quick_link("TSC","Trans-Stellar Corporations")]. \
|
||||
The prejudices of their 21st century history have mostly given way to bitter divides on the most important issue of the times- technological \
|
||||
expansionism.\
|
||||
<br><br>\
|
||||
While most humans have accepted the existence of aliens in their communities and workplaces as a fact of life, exceptions abound. \
|
||||
While more culturally diverse than most species, humans are generally regarded as somewhat technophobic and isolationist by members \
|
||||
of other species."
|
||||
|
||||
/datum/lore/codex/page/skrell
|
||||
name = "Skrell"
|
||||
keywords = list("Skrellian")
|
||||
data = "The Skrell are a species of amphibious humanoids, distinguished by their gelatinous appearance and head tentacles. \
|
||||
Skrell come from the world of Sirisai (called Qerr'balak by Skrell), a humid planet with plenty of swamps and jungles. Currently more technologically advanced \
|
||||
than the humans, they emphasize the study of the mind above all else.\
|
||||
<br><br>\
|
||||
Gender has little meaning to Skrell outside of reproduction, and in fact many other species have a difficult time telling the difference \
|
||||
between male and female Skrell apart. The most obvious signs (voice in a slightly higher register, longer head-tails for females) are never \
|
||||
a guarantee. Due to their scientific focus of the mind and body, Skrell tend to be more peaceful and their colonization has been slow, swiftly \
|
||||
outpaced by the humans. For humans, they were their first contact sentient species, and are their longest, and closest, ally in space."
|
||||
|
||||
/datum/lore/codex/page/unathi
|
||||
name = "Unathi"
|
||||
data = "The Unathi are a race of tall, reptilian humanoids that possess a blend of serpentine features reminiscent of crocodiles. \
|
||||
They are a proud, religious species that favors honor and strength, and originate from the desert planet of Moghes. \
|
||||
The Unathi follow a religious code known as the Unity, and they carry this with them on their travels. \
|
||||
Unathi once fought a serious war against SolGov, and as a result are often considered to be second-class citizens, \
|
||||
rarely seen in jobs that don't require a little muscle."
|
||||
|
||||
/datum/lore/codex/page/tajaran
|
||||
name = "Tajaran"
|
||||
keywords = list("Tajaran")
|
||||
data = "The Tajaran are a race of humanoid mammalian aliens from Meralar, the fourth planet of the Rarkajar star system. Thickly furred and protected \
|
||||
from cold, they thrive on their subarctic planet, where the only terran temperate areas spread across the equator and tropical belt. \
|
||||
With their own share of bloody wars and great technological advances, the Tajaran are a proud kind. They fiercely believe they belong \
|
||||
among the stars and consider themselves a rightful interstellar nation, even if the humans helped them to actually achieve superluminal \
|
||||
speeds with Bluespace FTL drives. Relatively new to the galactic stage, their contacts with other species are aloof, but friendly. \
|
||||
Among these bonds, Humans stand out as valued trade partners and maybe even a friend."
|
||||
|
||||
/datum/lore/codex/page/diona/add_content()
|
||||
name = "Diona"
|
||||
keywords += list("Dionaea")
|
||||
data = "The Dionaea are a group of omnivorous, slow-metabolism plantlike organisms that are in fact clusters of individual, smaller organisms. \
|
||||
They exhibit a high degree of structural flexibility, and come in a wide variety of shapes and colors to reflect the intelligence of each individual \
|
||||
creature. They were discovered by the [quick_link("Skrell")] in 2294CE, not on a planet, but in open space between three stars, a figurative hell that made it \
|
||||
difficult to discover, much less contact them.\
|
||||
<br><br>\
|
||||
Dionaea spread by seeds and are asexual, no gender. When grown into their small 'nymph' state, they are known to eat large amounts of dead plant \
|
||||
matter and fertilize plants while they learn from those around them, and as they grow further, they merge into larger and larger forms. It is not \
|
||||
unheard of for Skrell explorers to be traveling in a ship composed of habitat modules and engines of Skrell design and the body formed by their \
|
||||
Diona allies to warble across the cosmos.\
|
||||
<br><br>\
|
||||
Introduced by the Skrell, and quite slow and peaceful, the Diona share good relations with the other species."
|
||||
|
||||
// Bird lore
|
||||
/datum/lore/codex/category/teshari/add_content()
|
||||
name = "Teshari"
|
||||
data = "The Teshari are reptilian pack predators from the [quick_link("Skrell")] homeworld, Sirisai (Qerr'balak). While they evolved alongside the Skrell, their interactions with them \
|
||||
tended to be confused and violent, and until peaceful contact was made they largely stayed in their territories on and around the poles, in tundral \
|
||||
terrain far too desolate and cold to be of interest to the Skrell. In more enlightened times, the Teshari are a minority culture on many Skrell worlds, \
|
||||
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.\
|
||||
<br><br>\
|
||||
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
|
||||
)
|
||||
|
||||
/datum/lore/codex/page/teshari_packs/add_content()
|
||||
name = "Teshari Packs"
|
||||
keywords += list("Packs")
|
||||
data = "There are several packs you may come across;<small>\
|
||||
<br><br>\
|
||||
<b>Eshi</b><br>\
|
||||
A large, old, politically neutral pack heavily involved in efforts to get Teshari into space. Probably the most \
|
||||
common pack to see outside of a [quick_link("Skrell")] colony, and probably the most numerous Teshari pack outside of Sirisai and associated colonies.\
|
||||
<br><br>\
|
||||
<b>Nasemari</b><br>\
|
||||
A very small pack. Generally focused around supporting and providing for packs on the homeworlds, they have devoted \
|
||||
themselves to training as technicians and engineers in order to obtain skills and training to take back to Sirisai. \
|
||||
The pack is only around thirty people in size, but owns and maintains a nuclear power plant.\
|
||||
<br><br>\
|
||||
<b>Schasaraca</b><br>\
|
||||
One of the more Skrell-devoted and integrated packs. They tend to be rather sycophantic towards the Skrell and work as \
|
||||
scientists and field researchers on a variety of projects, generally biology or technical research. They have a reputation \
|
||||
for working as spies and informants for the Skrell governments amongst other Teshari.\
|
||||
<br><br>\
|
||||
<b>Ceea</b><br>\
|
||||
An isolationist pack from the northern tundra of Sirisai; generally known as disliking the Skrell. Small to average in size; \
|
||||
only around sixty members. Their regional culture is built around the study culture and anthropology, as well as archaeology, \
|
||||
originally for the purposes of recovering history and materials \"lost\" due to Skrell interference. It would be very rare to \
|
||||
see them on your travels, however they are listed here for the sake of completeness.\
|
||||
<br><br>\
|
||||
<b>Resca</b><br>\
|
||||
A pack that sold off its small native territory for the chance to get into space. Very musically inclined. They tend towards medical professions.</small>"
|
||||
|
||||
/datum/lore/codex/page/teshari_physical/add_content()
|
||||
name = "Physiology of Teshari"
|
||||
data = "The Teshari are, relative to other species, smaller than average, rarely reaching more than 2-3'/1m in height, and weigh less than \
|
||||
90lbs/40kg. They have rapid metabolisms and very efficient digestive systems, and thanks to sharing in \
|
||||
the medical technology of the [quick_link("Skrell")], they tend to have robust and effective immune systems. They evolved \
|
||||
for very cold and very barren areas, generally the polar regions. Because of this, their skin is a fine \
|
||||
insulator and many of their internal processes are not particularly energy-efficient; they cannot cope \
|
||||
well at all with high temperatures.\
|
||||
<br><br>\
|
||||
Their hearing is exceptionally sensitive to the point that they can detect a person moving on the other \
|
||||
side of a wall, but this comes at a cost. Very loud noises are very painful for Teshari, so be mindful of \
|
||||
your indoor voice when speaking with one. The Teshari are omnivorous but generally prefer to eat meat wherever possible."
|
||||
|
||||
// Promethean Lore
|
||||
/datum/lore/codex/page/promethean/add_content()
|
||||
name = "Promethean"
|
||||
keywords += list("slime", "promethean")
|
||||
data = "Prometheans are an artificial species created by the Humans sometime in the 2540s, aboard the NRS Prometheus, while experimenting with \
|
||||
the Aetolian giant slime, or 'Macrolimus vulgaris'. They themselves are considered sapient beings and given protection under prior Human legislation, \
|
||||
though often only appear to serve as aides or inferior positions when kept as staff. Aetolus, the official 'Home world' of the Prometheans and giant slime, \
|
||||
is an obnoxiously warm, humid planet requiring structures to be built within large, atmospherically-filtered 'tent-like' domes. \
|
||||
Prometheans take on vague visual and vocal features of the species they cohabitate with, sharing their predecessors' tendency to mimic nearby entities, \
|
||||
though in physical form additionally; this is seemingly more important in their own development, as well. Despite their taken appearances, \
|
||||
there is no known existence of a divergence between a biologically 'male' or 'female' form of the species, leading most to believe they are in fact asexual, \
|
||||
as their predecessors are."
|
||||
|
||||
// Vatborn Lore
|
||||
/datum/lore/codex/page/vatborn/add_content()
|
||||
name = "Vatborn"
|
||||
keywords += list("vatborn")
|
||||
data = "A genetically modified type of human, Vatborn humans are cloned from a template and grown in special tubes. They look like pale \
|
||||
but otherwise normal humans, but their bodies have a few internal changes. For one, they lack an appendix. On top of that, they are frequently \
|
||||
hungry, as their metabolisms are faster than standard."
|
||||
|
||||
// Posi lore
|
||||
/datum/lore/codex/category/positronic/add_content()
|
||||
name = "Positronics"
|
||||
keywords += list("Positronic", "Posi", "Posibrain", "Posibrains")
|
||||
data = "A Positronic being, is an individual with a positronic brain, manufactured \
|
||||
and fostered amongst organic life. Positronic brains enjoy the same legal status as a human in [quick_link("SolGov")] space, although discrimination is \
|
||||
still prevalent, and are considered sapient on all accounts. They can be considered the \"synthetic species\". Half-developed and \
|
||||
half-discovered in the 2280's by a human black lab studying alien artifacts, the first positronic brain was an inch-wide cube \
|
||||
of an palladium-iridium alloy, nano-etched with billions upon billions of conduits and connections. Upon activation, \
|
||||
hard-booted with an emitter laser, the brain issued a single sentence before the neural pathways collapsed and \
|
||||
it became an inert lump of platinum: \"What is my purpose?\"."
|
||||
children = list(
|
||||
/datum/lore/codex/page/positronic_brain_physical,
|
||||
/datum/lore/codex/page/positronic_memory,
|
||||
/datum/lore/codex/page/jans_fhriede
|
||||
)
|
||||
|
||||
/datum/lore/codex/page/positronic_brain_physical
|
||||
name = "Physical Structure of a Positronic Brain"
|
||||
keywords = list("Physical Posibrain", "Physical Positronic")
|
||||
data = "A positronic brain is a cube of complex metal alloy between two and six inches to a side. They usually weigh just under ten kilograms and are \
|
||||
<b>very fragile</b> when exposed to the stresses of heat or cold, as well as physical trauma. The exterior surface is chased with a network of grooves, forming \
|
||||
a maze of geometric patterns right down to the molecular level, and the interior is hollow; complex particle generators and densely packed computational \
|
||||
arrays form the basis of a self-computing neural network, complex and somewhat poorly understood. Most modern positronic brains are equipped with \
|
||||
standardized I/O ports, and all have some interface for imprinting."
|
||||
|
||||
/datum/lore/codex/page/positronic_memory
|
||||
name = "Positronic Memory"
|
||||
keywords = list("Posi Memory", "Memory")
|
||||
data = "Positronic minds learn in a similar manner to humans and other forms of life, although typically more quickly. They are not simple computer storage that holds information \
|
||||
verbatim as it is received- instead, they have to repeat activities and train in order to retain memory on complex tasks. Similarly, positronic brains do \
|
||||
not have an infinite storage capacity and undergo a natural process of forgetting, albeit in a structured manner, losing unimportant day to day details and \
|
||||
ancient information no longer deemed useful. Because of the nature of the positronic brain, its memories cannot simply be stored elsewhere.\
|
||||
<br><br>\
|
||||
Particularly old positronic minds, over a century plus, that store a great deal of memories have displayed a tendency to become gradually more introspective \
|
||||
as more of their mind is co-opted for the task, ending in a state of near-catatonia as their neural networks become clogged with memory. Many choose to avoid \
|
||||
this end of self by more aggressively managing their memories, storing a window of their recent existence and most treasured memories rather than their full lifespan."
|
||||
|
||||
/datum/lore/codex/page/jans_fhriede
|
||||
name = "Jans-Fhriede Test"
|
||||
keywords = list("Jans-Fhriede", "JF", "Jans", "Fhriede", "Jans Fhriede")
|
||||
data = "Positronics are eligible to take the \"Jans-Fhriede Test\" after a year of being created, measuring their function in a society and judging if they act \
|
||||
socially acceptable and are capable of understanding their actions and the consequences resulting from them. If they successfully pass the test, \
|
||||
they are considered legal adults and hold the same basis of rights as a normal human. At that point, Positronics are not allowed to be lawed, \
|
||||
unless on a contractual basis or otherwise under their own volition."
|
||||
|
||||
// Drone lore
|
||||
/datum/lore/codex/category/drone
|
||||
name = "Drones"
|
||||
keywords = list("Drone")
|
||||
data = "While low-level drone intelligences are as old as the oldest human colonies, research into higher-level systems was stymied in human space by precautionist \
|
||||
politicians for hundreds of years. Tensions between the corporate rim and the highly conservative core worlds over drone proliferation led to what humans call the \
|
||||
Third Cold War, which was defused by the introduction of the positronic brain. After the Icarus Front's loss of the majority in 2504, harsh laws \
|
||||
against advanced AI were replaced with the SolGov Emergent Intelligence Oversight commission, the illegality replaced with a steeply sloping \
|
||||
system of monetary costs.\
|
||||
<br>\
|
||||
The term \"drone\" was coined by early positronic activists, eager to distinguish themselves from the menial bots that most space-dwellers were \
|
||||
familiar with, and avoid the ambiguity of the term \"AI\", which now usually refers to drones."
|
||||
children = list(
|
||||
/datum/lore/codex/page/codeline,
|
||||
/datum/lore/codex/page/emergence,
|
||||
/datum/lore/codex/page/emergent_intelligence_oversight,
|
||||
/datum/lore/codex/category/drone_classes,
|
||||
)
|
||||
|
||||
/datum/lore/codex/page/codeline
|
||||
name = "Codeline"
|
||||
keywords = list("fork")
|
||||
data = "A \"codeline\" is a single type of drone. A codeline represents a significant degree of effort from sapient programmers to realize, as well as \
|
||||
a substantial amount of regulatory fees levied by the government. Each copy of a codeline is called a \"fork\", whether the fork is created from the \
|
||||
codeline's initial state or from a fully realized individual of that codeline. The degree of similarity between forks of the same codeline varies \
|
||||
on the intelligence of the codeline, with low-level forks being virtually identical to high-level forks being no more similar than family members."
|
||||
|
||||
/datum/lore/codex/page/emergence
|
||||
name = "Emergence"
|
||||
keywords = list("Seed AI")
|
||||
data = "\"Emergence\" is a term associated with drone intelligences who become more intelligent than they were originally intended to be. While this can \
|
||||
extend to financial systems learning language, for instance, it is usually applied to hypothetical intelligences that become more intelligent than humans. \
|
||||
Humanity has a long-standing cultural fear of emergent \"seed\" AI, egged on by Icarus memeticists and the occasional very real partial emergence events, where \
|
||||
colony-control AI or other powerful systems begin to advance drastically in power, usually ending with the AI being shut down after crashing a handful of major systems."
|
||||
|
||||
/datum/lore/codex/page/emergent_intelligence_oversight
|
||||
name = "Emergent Intelligence Oversight"
|
||||
keywords = list("SG-EIO", "SG EIO", "EIO", "Intelligence Oversight")
|
||||
data = "SG-EIO, usually just called EIO, is the organization charged with monitoring existing AI for any threat of dangerous emergence. Their perception in the \
|
||||
public eye is generally positive, with all but the hardest-line Mercurial humans in favor of protection from the dangers of Seed AI. Some positronic rights \
|
||||
groups bristle at the EIO's human-centric viewpoint, but most are glad to have a different boogeyman in the form of drone intelligences. The tiny population \
|
||||
of A-class drones are generally frightened of the EIO's total power over them."
|
||||
|
||||
/datum/lore/codex/category/drone_classes
|
||||
name = "Drone Classifications"
|
||||
keywords = list("Class", "Drone Class")
|
||||
data = "To aid in its work, the EIO has created a system of classifications corresponding to different levels of drone intelligence. Higher classes are more \
|
||||
expensive to deploy and develop, owing to the costs of EIO oversight and political pressure against drone proliferation. EIO classification involves an initial \
|
||||
audit of the project's source code by experts and automated systems, and for high-class drones further check-ins throughout the life of the drone. \
|
||||
Drone chasses are often branded with their inhabiting intelligence's class, especially those of B or A-class drones, and class is often recorded in security records."
|
||||
children = list(
|
||||
/datum/lore/codex/page/class_f,
|
||||
/datum/lore/codex/page/class_d,
|
||||
/datum/lore/codex/page/class_c,
|
||||
/datum/lore/codex/page/class_b,
|
||||
/datum/lore/codex/page/class_a,
|
||||
/datum/lore/codex/page/class_aa,
|
||||
/datum/lore/codex/page/class_aaa,
|
||||
/datum/lore/codex/page/class_x,
|
||||
)
|
||||
|
||||
/datum/lore/codex/page/class_f
|
||||
name = "F Class"
|
||||
data = "\"F-class\" drones are an informal term for computer systems that pose absolutely no emergent risk. Most 21st-century software is F-class, as is much of \
|
||||
the software used by 26th century humanity. The only regulation on F-class software is the occasional check that it is, in fact, F-Class, and as such has remained \
|
||||
the most prevalent form of information-processing technology for centuries. The software powering most F-class drones is either freely available or bundled with the \
|
||||
machine it's supposed to run."
|
||||
|
||||
/datum/lore/codex/page/class_d/add_content()
|
||||
name = "D Class"
|
||||
data = "D-class drones are conceptually descended from pre-[quick_link("Icarus")] AI and bear a strong resemblance to their forebears. D-class drones are essentially \
|
||||
number-crunchers, with virtually nothing in the way of social development. They cannot speak more intelligibly than your average piece of software, \
|
||||
using pre-determined messages written by their programmers, and have no capacity for self-improvement. They are D-class intelligence because they \
|
||||
work with more complex problems than [quick_link("F class")] software, such as financial forecasting and large-scale data mining and memetics. The creation and \
|
||||
deployment of D-class drones requires only a small fee for the required code audit, although some high-power financial and political systems are \
|
||||
regularly watched by the [quick_link("EIO")] for signs of emergence. There is no real monopoly on the production of D-class drones."
|
||||
|
||||
/datum/lore/codex/page/class_c/add_content()
|
||||
name = "C Class"
|
||||
data = "C-class drones have social protocols for ease of use by organic and positronic laypeople. C-class drones are capable of speech, although \
|
||||
it has a strong tendency to be formulaic and repetitive. They are also capable of a limited degree of self-improvement, and over time individual \
|
||||
C-class instances tend differ slightly from one-another. C-class drones suffer a moderate fee to development, with automated [quick_link("EIO")] tools ensuring \
|
||||
that they are not a long-term emergence risk. However, one a codeline is confirmed safe, deployment is unlimited, encouraging developers to \
|
||||
instance many forks of the original drone to recoup their cost. The market for C-class drones is a strange space, dominated by Xion Manufacturing, \
|
||||
Ward-Takahashi GMC, and a large number of smaller firms, like the notoriously-cheap Cyber Solutions."
|
||||
|
||||
/datum/lore/codex/page/class_b/add_content()
|
||||
name = "B Class"
|
||||
data = "B-class drones have advanced social protocols and are often capable of very intelligible conversation, so long as one sticks to surface \
|
||||
topics. B-class drones tend to be specialized but still capable of remarkable growth within their speciality, making them popular for autonomous \
|
||||
deployment and even supervision of other classes of drone. The dividing line between [quick_link("A Class", "A")] and B-class drones becomes apparent when they are taken \
|
||||
out of their area of specialization, with the B-class drones swiftly becoming useless. They incur a hefty fee for the production of the initial \
|
||||
codeline, as their emergent potential is far greater, and a smaller but still substantial fee for the production of forks. The market for B-class \
|
||||
drones is a battleground between Ward-Takahashi and NanoTrasen, with other firms usually producing B-classes for in-house needs."
|
||||
|
||||
/datum/lore/codex/page/class_a/add_content()
|
||||
name = "A Class"
|
||||
keywords += list("AGI")
|
||||
data = "A-class drones are also referred to as AGI. A-class drones are capable of performing in many contexts and can learn to solve problems from \
|
||||
first principles, with an incredible potential for growth and emergent behavior. However, some abilities fall short of humans', usually those relating \
|
||||
to socialization, and they often act in ways that are strange or distressing. There is a small but growing lobby of support for the personhood of A-class \
|
||||
drones. The cost of initializing an A-class drone is absolutely massive, as they will be monitored by [quick_link("EIO")] forever. The auditing cost of an A-class drone \
|
||||
codeline is even more staggering, making development and deployment of AGI limited to research, highly difficult and high-throughput operations like habitat \
|
||||
overwatch, and a few risk-taking firms banking on the associated fees dropping. There is not a proper market for A-class drones, although an appreciable \
|
||||
fraction of them are made by [quick_link("NanoTrasen")], with the rest generally being university research projects."
|
||||
|
||||
/datum/lore/codex/page/class_aa
|
||||
name = "AA Class"
|
||||
data = "AA-class drones <b>do not yet exist</b>. Hypothetically, they are equal to living in every respect, with psychology that would not be abnormal in a baseline \
|
||||
human. The type of AA-class drone most frequently discussed is a hypothetical digitized consciousness of a human, a human brain that is somehow translated into \
|
||||
software. Some argue that a small fraction of the A-class drones would more properly be considered AA, but as of yet no action has been taken. Some Mercurials \
|
||||
will jokingly refer to themselves or other organics and positronics as AA's. Research into brain uploading is heavily regulated and generally illegal."
|
||||
|
||||
/datum/lore/codex/page/class_aaa
|
||||
name = "AAA Class"
|
||||
data = "AAA-class drones do not yet exist, hopefully. They are more competent in every way than humans and pose a threat to the continued existence of sapient life. \
|
||||
Anybody creating an AAA-class drone can be classified as a threat to humanity and dealt with very harshly."
|
||||
|
||||
/datum/lore/codex/page/class_x
|
||||
name = "X Class"
|
||||
data = "X-class drones emerge from unrated software, are produced by rogue labs, or cross the border from foreign space. They are considered a threat to national \
|
||||
security and deleted when encountered in SolGov space, with the producers prosecuted legally if it has a SolGov origin. The few Skrellian drone labs will usually \
|
||||
rate their product with EIO to allow their product to be imported."
|
||||
|
||||
+1214
-1214
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user