mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-13 11:43:31 +00:00
Merge branch 'dev' of https://github.com/Baystation12/Baystation12 into dev-freeze
This commit is contained in:
@@ -176,6 +176,7 @@
|
|||||||
#include "code\datums\wires\radio.dm"
|
#include "code\datums\wires\radio.dm"
|
||||||
#include "code\datums\wires\robot.dm"
|
#include "code\datums\wires\robot.dm"
|
||||||
#include "code\datums\wires\smartfridge.dm"
|
#include "code\datums\wires\smartfridge.dm"
|
||||||
|
#include "code\datums\wires\smes.dm"
|
||||||
#include "code\datums\wires\suit_storage_unit.dm"
|
#include "code\datums\wires\suit_storage_unit.dm"
|
||||||
#include "code\datums\wires\vending.dm"
|
#include "code\datums\wires\vending.dm"
|
||||||
#include "code\datums\wires\wires.dm"
|
#include "code\datums\wires\wires.dm"
|
||||||
@@ -387,12 +388,14 @@
|
|||||||
#include "code\game\machinery\computer\pod.dm"
|
#include "code\game\machinery\computer\pod.dm"
|
||||||
#include "code\game\machinery\computer\prisoner.dm"
|
#include "code\game\machinery\computer\prisoner.dm"
|
||||||
#include "code\game\machinery\computer\prisonshuttle.dm"
|
#include "code\game\machinery\computer\prisonshuttle.dm"
|
||||||
|
#include "code\game\machinery\computer\RCON_Console.dm"
|
||||||
#include "code\game\machinery\computer\robot.dm"
|
#include "code\game\machinery\computer\robot.dm"
|
||||||
#include "code\game\machinery\computer\security.dm"
|
#include "code\game\machinery\computer\security.dm"
|
||||||
#include "code\game\machinery\computer\shuttle.dm"
|
#include "code\game\machinery\computer\shuttle.dm"
|
||||||
#include "code\game\machinery\computer\skills.dm"
|
#include "code\game\machinery\computer\skills.dm"
|
||||||
#include "code\game\machinery\computer\specops_shuttle.dm"
|
#include "code\game\machinery\computer\specops_shuttle.dm"
|
||||||
#include "code\game\machinery\computer\station_alert.dm"
|
#include "code\game\machinery\computer\station_alert.dm"
|
||||||
|
#include "code\game\machinery\computer\supply.dm"
|
||||||
#include "code\game\machinery\computer\syndicate_specops_shuttle.dm"
|
#include "code\game\machinery\computer\syndicate_specops_shuttle.dm"
|
||||||
#include "code\game\machinery\doors\airlock.dm"
|
#include "code\game\machinery\doors\airlock.dm"
|
||||||
#include "code\game\machinery\doors\airlock_control.dm"
|
#include "code\game\machinery\doors\airlock_control.dm"
|
||||||
@@ -583,6 +586,23 @@
|
|||||||
#include "code\game\objects\items\weapons\twohanded.dm"
|
#include "code\game\objects\items\weapons\twohanded.dm"
|
||||||
#include "code\game\objects\items\weapons\weaponry.dm"
|
#include "code\game\objects\items\weapons\weaponry.dm"
|
||||||
#include "code\game\objects\items\weapons\wires.dm"
|
#include "code\game\objects\items\weapons\wires.dm"
|
||||||
|
#include "code\game\objects\items\weapons\circuitboards\broken.dm"
|
||||||
|
#include "code\game\objects\items\weapons\circuitboards\circuitboard.dm"
|
||||||
|
#include "code\game\objects\items\weapons\circuitboards\mecha.dm"
|
||||||
|
#include "code\game\objects\items\weapons\circuitboards\other.dm"
|
||||||
|
#include "code\game\objects\items\weapons\circuitboards\computer\air_management.dm"
|
||||||
|
#include "code\game\objects\items\weapons\circuitboards\computer\camera_monitor.dm"
|
||||||
|
#include "code\game\objects\items\weapons\circuitboards\computer\computer.dm"
|
||||||
|
#include "code\game\objects\items\weapons\circuitboards\computer\research.dm"
|
||||||
|
#include "code\game\objects\items\weapons\circuitboards\computer\supply.dm"
|
||||||
|
#include "code\game\objects\items\weapons\circuitboards\computer\telecomms.dm"
|
||||||
|
#include "code\game\objects\items\weapons\circuitboards\machinery\cloning.dm"
|
||||||
|
#include "code\game\objects\items\weapons\circuitboards\machinery\pacman.dm"
|
||||||
|
#include "code\game\objects\items\weapons\circuitboards\machinery\power.dm"
|
||||||
|
#include "code\game\objects\items\weapons\circuitboards\machinery\research.dm"
|
||||||
|
#include "code\game\objects\items\weapons\circuitboards\machinery\shieldgen.dm"
|
||||||
|
#include "code\game\objects\items\weapons\circuitboards\machinery\telecomms.dm"
|
||||||
|
#include "code\game\objects\items\weapons\circuitboards\machinery\unary_atmos.dm"
|
||||||
#include "code\game\objects\items\weapons\grenades\chem_grenade.dm"
|
#include "code\game\objects\items\weapons\grenades\chem_grenade.dm"
|
||||||
#include "code\game\objects\items\weapons\grenades\emgrenade.dm"
|
#include "code\game\objects\items\weapons\grenades\emgrenade.dm"
|
||||||
#include "code\game\objects\items\weapons\grenades\flashbang.dm"
|
#include "code\game\objects\items\weapons\grenades\flashbang.dm"
|
||||||
@@ -1370,7 +1390,6 @@
|
|||||||
#include "code\modules\scripting\Scanner\Tokens.dm"
|
#include "code\modules\scripting\Scanner\Tokens.dm"
|
||||||
#include "code\modules\security levels\keycard authentication.dm"
|
#include "code\modules\security levels\keycard authentication.dm"
|
||||||
#include "code\modules\security levels\security levels.dm"
|
#include "code\modules\security levels\security levels.dm"
|
||||||
#include "code\modules\shieldgen\circuits_and_designs.dm"
|
|
||||||
#include "code\modules\shieldgen\emergency_shield.dm"
|
#include "code\modules\shieldgen\emergency_shield.dm"
|
||||||
#include "code\modules\shieldgen\energy_field.dm"
|
#include "code\modules\shieldgen\energy_field.dm"
|
||||||
#include "code\modules\shieldgen\sheldwallgen.dm"
|
#include "code\modules\shieldgen\sheldwallgen.dm"
|
||||||
|
|||||||
@@ -316,4 +316,8 @@
|
|||||||
"\blue You have unfastened \the [src].", \
|
"\blue You have unfastened \the [src].", \
|
||||||
"You hear ratchet.")
|
"You hear ratchet.")
|
||||||
new /obj/item/pipe(loc, make_from=src)
|
new /obj/item/pipe(loc, make_from=src)
|
||||||
del(src)
|
del(src)
|
||||||
|
|
||||||
|
/obj/machinery/atmospherics/valve/examine(mob/user)
|
||||||
|
..()
|
||||||
|
user << "It is [open ? "open" : "closed"]."
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
//Engine control and monitoring console
|
//Engine control and monitoring console
|
||||||
|
|
||||||
/obj/machinery/computer/engines
|
/obj/machinery/computer/engines
|
||||||
name = "engines control console"
|
name = "engine control console"
|
||||||
icon_state = "id"
|
icon_state = "id"
|
||||||
var/state = "status"
|
var/state = "status"
|
||||||
var/list/engines = list()
|
var/list/engines = list()
|
||||||
|
|||||||
@@ -106,9 +106,10 @@ var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel", "Satchel Al
|
|||||||
|
|
||||||
for (var/language_name in all_languages)
|
for (var/language_name in all_languages)
|
||||||
var/datum/language/L = all_languages[language_name]
|
var/datum/language/L = all_languages[language_name]
|
||||||
language_keys[":[lowertext(L.key)]"] = L
|
if(!(L.flags & NONGLOBAL))
|
||||||
language_keys[".[lowertext(L.key)]"] = L
|
language_keys[":[lowertext(L.key)]"] = L
|
||||||
language_keys["#[lowertext(L.key)]"] = L
|
language_keys[".[lowertext(L.key)]"] = L
|
||||||
|
language_keys["#[lowertext(L.key)]"] = L
|
||||||
|
|
||||||
var/rkey = 0
|
var/rkey = 0
|
||||||
paths = typesof(/datum/species)-/datum/species
|
paths = typesof(/datum/species)-/datum/species
|
||||||
|
|||||||
@@ -38,8 +38,18 @@ proc/random_facial_hair_style(gender, species = "Human")
|
|||||||
return f_style
|
return f_style
|
||||||
|
|
||||||
proc/random_name(gender, species = "Human")
|
proc/random_name(gender, species = "Human")
|
||||||
if(gender==FEMALE) return capitalize(pick(first_names_female)) + " " + capitalize(pick(last_names))
|
|
||||||
else return capitalize(pick(first_names_male)) + " " + capitalize(pick(last_names))
|
var/datum/species/current_species
|
||||||
|
if(species)
|
||||||
|
current_species = all_species[species]
|
||||||
|
|
||||||
|
if(!current_species)
|
||||||
|
if(gender==FEMALE)
|
||||||
|
return capitalize(pick(first_names_female)) + " " + capitalize(pick(last_names))
|
||||||
|
else
|
||||||
|
return capitalize(pick(first_names_male)) + " " + capitalize(pick(last_names))
|
||||||
|
else
|
||||||
|
return current_species.get_random_name(gender)
|
||||||
|
|
||||||
proc/random_skin_tone()
|
proc/random_skin_tone()
|
||||||
switch(pick(60;"caucasian", 15;"afroamerican", 10;"african", 10;"latino", 5;"albino"))
|
switch(pick(60;"caucasian", 15;"afroamerican", 10;"african", 10;"latino", 5;"albino"))
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ datum/controller/lighting/proc/process()
|
|||||||
//Does not loop. Should be run prior to process() being called for the first time.
|
//Does not loop. Should be run prior to process() being called for the first time.
|
||||||
//Note: if we get additional z-levels at runtime (e.g. if the gateway thin ever gets finished) we can initialize specific
|
//Note: if we get additional z-levels at runtime (e.g. if the gateway thin ever gets finished) we can initialize specific
|
||||||
//z-levels with the z_level argument
|
//z-levels with the z_level argument
|
||||||
datum/controller/lighting/proc/Initialize(var/z_level)
|
datum/controller/lighting/proc/initializeLighting(var/z_level)
|
||||||
processing = 0
|
processing = 0
|
||||||
spawn(-1)
|
spawn(-1)
|
||||||
set background = 1
|
set background = 1
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ datum/controller/game_controller/proc/setup()
|
|||||||
if(ticker)
|
if(ticker)
|
||||||
ticker.pregame()
|
ticker.pregame()
|
||||||
|
|
||||||
lighting_controller.Initialize()
|
lighting_controller.initializeLighting()
|
||||||
|
|
||||||
|
|
||||||
datum/controller/game_controller/proc/setup_objects()
|
datum/controller/game_controller/proc/setup_objects()
|
||||||
|
|||||||
@@ -16,11 +16,11 @@
|
|||||||
|
|
||||||
New(ateleatom, adestination, aprecision=0, afteleport=1, aeffectin=null, aeffectout=null, asoundin=null, asoundout=null)
|
New(ateleatom, adestination, aprecision=0, afteleport=1, aeffectin=null, aeffectout=null, asoundin=null, asoundout=null)
|
||||||
..()
|
..()
|
||||||
if(!Init(arglist(args)))
|
if(!initTeleport(arglist(args)))
|
||||||
return 0
|
return 0
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
proc/Init(ateleatom,adestination,aprecision,afteleport,aeffectin,aeffectout,asoundin,asoundout)
|
proc/initTeleport(ateleatom,adestination,aprecision,afteleport,aeffectin,aeffectout,asoundin,asoundout)
|
||||||
if(!setTeleatom(ateleatom))
|
if(!setTeleatom(ateleatom))
|
||||||
return 0
|
return 0
|
||||||
if(!setDestination(adestination))
|
if(!setDestination(adestination))
|
||||||
|
|||||||
60
code/datums/wires/smes.dm
Normal file
60
code/datums/wires/smes.dm
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
/datum/wires/smes
|
||||||
|
holder_type = /obj/machinery/power/smes/buildable
|
||||||
|
wire_count = 5
|
||||||
|
|
||||||
|
var/const/SMES_WIRE_RCON = 1 // Remote control (AI and consoles), cut to disable
|
||||||
|
var/const/SMES_WIRE_INPUT = 2 // Input wire, cut to disable input, pulse to disable for 60s
|
||||||
|
var/const/SMES_WIRE_OUTPUT = 4 // Output wire, cut to disable output, pulse to disable for 60s
|
||||||
|
var/const/SMES_WIRE_GROUNDING = 8 // Cut to quickly discharge causing sparks, pulse to only create few sparks
|
||||||
|
var/const/SMES_WIRE_FAILSAFES = 16 // Cut to disable failsafes, mend to reenable
|
||||||
|
|
||||||
|
|
||||||
|
/datum/wires/smes/CanUse(var/mob/living/L)
|
||||||
|
var/obj/machinery/power/smes/buildable/S = holder
|
||||||
|
if(S.open_hatch)
|
||||||
|
return 1
|
||||||
|
return 0
|
||||||
|
|
||||||
|
|
||||||
|
/datum/wires/smes/GetInteractWindow()
|
||||||
|
var/obj/machinery/power/smes/buildable/S = holder
|
||||||
|
. += ..()
|
||||||
|
. += "The green light is [(S.input_cut || S.input_pulsed || S.output_cut || S.output_pulsed) ? "off" : "on"]<br>"
|
||||||
|
. += "The red light is [(S.safeties_enabled || S.grounding) ? "off" : "blinking"]<br>"
|
||||||
|
. += "The blue light is [S.RCon ? "on" : "off"]"
|
||||||
|
|
||||||
|
|
||||||
|
/datum/wires/smes/UpdateCut(var/index, var/mended)
|
||||||
|
var/obj/machinery/power/smes/buildable/S = holder
|
||||||
|
switch(index)
|
||||||
|
if(SMES_WIRE_RCON)
|
||||||
|
S.RCon = mended
|
||||||
|
if(SMES_WIRE_INPUT)
|
||||||
|
S.input_cut = !mended
|
||||||
|
if(SMES_WIRE_OUTPUT)
|
||||||
|
S.output_cut = !mended
|
||||||
|
if(SMES_WIRE_GROUNDING)
|
||||||
|
S.grounding = mended
|
||||||
|
if(SMES_WIRE_FAILSAFES)
|
||||||
|
S.safeties_enabled = mended
|
||||||
|
|
||||||
|
|
||||||
|
/datum/wires/smes/UpdatePulsed(var/index)
|
||||||
|
var/obj/machinery/power/smes/buildable/S = holder
|
||||||
|
switch(index)
|
||||||
|
if(SMES_WIRE_RCON)
|
||||||
|
if(S.RCon)
|
||||||
|
S.RCon = 0
|
||||||
|
spawn(10)
|
||||||
|
S.RCon = 1
|
||||||
|
if(SMES_WIRE_INPUT)
|
||||||
|
S.toggle_input()
|
||||||
|
if(SMES_WIRE_OUTPUT)
|
||||||
|
S.toggle_output()
|
||||||
|
if(SMES_WIRE_GROUNDING)
|
||||||
|
S.grounding = 0
|
||||||
|
if(SMES_WIRE_FAILSAFES)
|
||||||
|
if(S.safeties_enabled)
|
||||||
|
S.safeties_enabled = 0
|
||||||
|
spawn(10)
|
||||||
|
S.safeties_enabled = 1
|
||||||
@@ -629,9 +629,9 @@
|
|||||||
icon = 'icons/obj/wizard.dmi'
|
icon = 'icons/obj/wizard.dmi'
|
||||||
icon_state = "ectoplasm"
|
icon_state = "ectoplasm"
|
||||||
|
|
||||||
/obj/item/weapon/research//Makes testing much less of a pain -Sieve
|
/obj/item/weapon/research
|
||||||
name = "research"
|
name = "research debugging device"
|
||||||
|
desc = "Instant research tool. For testing purposes only."
|
||||||
icon = 'icons/obj/stock_parts.dmi'
|
icon = 'icons/obj/stock_parts.dmi'
|
||||||
icon_state = "capacitor"
|
icon_state = "smes_coil"
|
||||||
desc = "A debug item for research."
|
origin_tech = "materials=19;programming=19;magnets=19;powerstorage=19;bluespace=19;combat=19;biotech=19;syndicate=19;phorontech=19;engineering=19"
|
||||||
origin_tech = "materials=8;programming=8;magnets=8;powerstorage=8;bluespace=8;combat=8;biotech=8;syndicate=8;phorontech=8;engineering=8"
|
|
||||||
|
|||||||
@@ -38,148 +38,144 @@ length to avoid portals or something i guess?? Not that they're counted right no
|
|||||||
|
|
||||||
|
|
||||||
PriorityQueue
|
PriorityQueue
|
||||||
var/L[]
|
var/list/queue
|
||||||
var/cmp
|
var/proc/comparison_function
|
||||||
|
|
||||||
New(compare)
|
New(compare)
|
||||||
L = new()
|
queue = list()
|
||||||
cmp = compare
|
comparison_function = compare
|
||||||
proc
|
|
||||||
IsEmpty()
|
|
||||||
return !L.len
|
|
||||||
Enqueue(d)
|
|
||||||
var/i
|
|
||||||
var/j
|
|
||||||
L.Add(d)
|
|
||||||
i = L.len
|
|
||||||
j = i>>1
|
|
||||||
while(i > 1 && call(cmp)(L[j],L[i]) > 0)
|
|
||||||
L.Swap(i,j)
|
|
||||||
i = j
|
|
||||||
j >>= 1
|
|
||||||
|
|
||||||
Dequeue()
|
proc/IsEmpty()
|
||||||
if(!L.len) return 0
|
return !queue.len
|
||||||
. = L[1]
|
|
||||||
Remove(1)
|
|
||||||
|
|
||||||
Remove(i)
|
proc/Enqueue(var/data)
|
||||||
if(i > L.len) return 0
|
queue.Add(data)
|
||||||
L.Swap(i,L.len)
|
var/index = queue.len
|
||||||
L.Cut(L.len)
|
|
||||||
if(i < L.len)
|
|
||||||
_Fix(i)
|
|
||||||
_Fix(i)
|
|
||||||
var/child = i + i
|
|
||||||
var/item = L[i]
|
|
||||||
while(child <= L.len)
|
|
||||||
if(child + 1 <= L.len && call(cmp)(L[child],L[child + 1]) > 0)
|
|
||||||
child++
|
|
||||||
if(call(cmp)(item,L[child]) > 0)
|
|
||||||
L[i] = L[child]
|
|
||||||
i = child
|
|
||||||
else
|
|
||||||
break
|
|
||||||
child = i + i
|
|
||||||
L[i] = item
|
|
||||||
List()
|
|
||||||
var/ret[] = new()
|
|
||||||
var/copy = L.Copy()
|
|
||||||
while(!IsEmpty())
|
|
||||||
ret.Add(Dequeue())
|
|
||||||
L = copy
|
|
||||||
return ret
|
|
||||||
RemoveItem(i)
|
|
||||||
var/ind = L.Find(i)
|
|
||||||
if(ind)
|
|
||||||
Remove(ind)
|
|
||||||
PathNode
|
|
||||||
var/datum/source
|
|
||||||
var/PathNode/prevNode
|
|
||||||
var/f
|
|
||||||
var/g
|
|
||||||
var/h
|
|
||||||
var/nt // Nodes traversed
|
|
||||||
New(s,p,pg,ph,pnt)
|
|
||||||
source = s
|
|
||||||
prevNode = p
|
|
||||||
g = pg
|
|
||||||
h = ph
|
|
||||||
f = g + h
|
|
||||||
source.bestF = f
|
|
||||||
nt = pnt
|
|
||||||
|
|
||||||
datum
|
//From what I can tell, this automagically sorts the added data into the correct location.
|
||||||
var/bestF
|
while(index > 2 && call(comparison_function)(queue[index / 2], queue[index]) > 0)
|
||||||
proc
|
queue.Swap(index, index / 2)
|
||||||
PathWeightCompare(PathNode/a, PathNode/b)
|
index /= 2
|
||||||
return a.f - b.f
|
|
||||||
|
|
||||||
AStar(start,end,adjacent,dist,maxnodes,maxnodedepth = 30,mintargetdist,minnodedist,id=null, var/turf/exclude=null)
|
proc/Dequeue()
|
||||||
|
if(!queue.len)
|
||||||
|
return 0
|
||||||
|
return Remove(1)
|
||||||
|
|
||||||
// world << "A*: [start] [end] [adjacent] [dist] [maxnodes] [maxnodedepth] [mintargetdist], [minnodedist] [id]"
|
proc/Remove(var/index)
|
||||||
var/PriorityQueue/open = new /PriorityQueue(/proc/PathWeightCompare)
|
if(index > queue.len)
|
||||||
var/closed[] = new()
|
return 0
|
||||||
var/path[]
|
|
||||||
start = get_turf(start)
|
|
||||||
if(!start) return 0
|
|
||||||
|
|
||||||
open.Enqueue(new /PathNode(start,null,0,call(start,dist)(end)))
|
var/thing = queue[index]
|
||||||
|
queue.Swap(index, queue.len)
|
||||||
|
queue.Cut(queue.len)
|
||||||
|
if(index < queue.len)
|
||||||
|
FixQueue(index)
|
||||||
|
return thing
|
||||||
|
|
||||||
while(!open.IsEmpty() && !path)
|
proc/FixQueue(var/index)
|
||||||
{
|
var/child = 2 * index
|
||||||
var/PathNode/cur = open.Dequeue()
|
var/item = queue[index]
|
||||||
closed.Add(cur.source)
|
|
||||||
|
|
||||||
var/closeenough
|
while(child <= queue.len)
|
||||||
if(mintargetdist)
|
if(child < queue.len && call(comparison_function)(queue[child], queue[child + 1]) > 0)
|
||||||
closeenough = call(cur.source,dist)(end) <= mintargetdist
|
child++
|
||||||
|
if(call(comparison_function)(item, queue[child]) > 0)
|
||||||
if(cur.source == end || closeenough)
|
queue[index] = queue[child]
|
||||||
path = new()
|
index = child
|
||||||
path.Add(cur.source)
|
else
|
||||||
while(cur.prevNode)
|
|
||||||
cur = cur.prevNode
|
|
||||||
path.Add(cur.source)
|
|
||||||
break
|
break
|
||||||
|
child = 2 * index
|
||||||
|
queue[index] = item
|
||||||
|
|
||||||
var/L[] = call(cur.source,adjacent)(id)
|
proc/List()
|
||||||
if(minnodedist && maxnodedepth)
|
return queue.Copy()
|
||||||
if(call(cur.source,minnodedist)(end) + cur.nt >= maxnodedepth)
|
|
||||||
continue
|
|
||||||
else if(maxnodedepth)
|
|
||||||
if(cur.nt >= maxnodedepth)
|
|
||||||
continue
|
|
||||||
|
|
||||||
for(var/datum/d in L)
|
proc/Length()
|
||||||
if(d == exclude)
|
return queue.len
|
||||||
continue
|
|
||||||
var/ng = cur.g + call(cur.source,dist)(d)
|
proc/RemoveItem(data)
|
||||||
if(d.bestF)
|
var/index = queue.Find(data)
|
||||||
if(ng + call(d,dist)(end) < d.bestF)
|
if(index)
|
||||||
for(var/i = 1; i <= open.L.len; i++)
|
return Remove(index)
|
||||||
var/PathNode/n = open.L[i]
|
|
||||||
if(n.source == d)
|
PathNode
|
||||||
open.Remove(i)
|
var/datum/position
|
||||||
break
|
var/PathNode/previous_node
|
||||||
|
|
||||||
|
var/best_estimated_cost
|
||||||
|
var/estimated_cost
|
||||||
|
var/known_cost
|
||||||
|
var/cost
|
||||||
|
var/nodes_traversed
|
||||||
|
|
||||||
|
New(_position, _previous_node, _known_cost, _cost, _nodes_traversed)
|
||||||
|
position = _position
|
||||||
|
previous_node = _previous_node
|
||||||
|
|
||||||
|
known_cost = _known_cost
|
||||||
|
cost = _cost
|
||||||
|
estimated_cost = cost + known_cost
|
||||||
|
|
||||||
|
best_estimated_cost = estimated_cost
|
||||||
|
nodes_traversed = _nodes_traversed
|
||||||
|
|
||||||
|
proc/PathWeightCompare(PathNode/a, PathNode/b)
|
||||||
|
return a.estimated_cost - b.estimated_cost
|
||||||
|
|
||||||
|
proc/AStar(var/start, var/end, var/proc/adjacent, var/proc/dist, var/max_nodes, var/max_node_depth = 30, var/min_target_dist = 0, var/min_node_dist, var/id, var/datum/exclude)
|
||||||
|
var/PriorityQueue/open = new /PriorityQueue(/proc/PathWeightCompare)
|
||||||
|
var/list/closed = list()
|
||||||
|
var/list/path
|
||||||
|
var/list/path_node_by_position = list()
|
||||||
|
start = get_turf(start)
|
||||||
|
if(!start)
|
||||||
|
return 0
|
||||||
|
|
||||||
|
open.Enqueue(new /PathNode(start, null, 0, call(start, dist)(end), 0))
|
||||||
|
|
||||||
|
while(!open.IsEmpty() && !path)
|
||||||
|
var/PathNode/current = open.Dequeue()
|
||||||
|
closed.Add(current.position)
|
||||||
|
|
||||||
|
if(current.position == end || call(current.position, dist)(end) <= min_target_dist)
|
||||||
|
path = new /list(current.nodes_traversed + 1)
|
||||||
|
path[path.len] = current.position
|
||||||
|
var/index = path.len - 1
|
||||||
|
|
||||||
|
while(current.previous_node)
|
||||||
|
current = current.previous_node
|
||||||
|
path[index--] = current.position
|
||||||
|
break
|
||||||
|
|
||||||
|
if(min_node_dist && max_node_depth)
|
||||||
|
if(call(current.position, min_node_dist)(end) + current.nodes_traversed >= max_node_depth)
|
||||||
|
continue
|
||||||
|
|
||||||
|
if(max_node_depth)
|
||||||
|
if(current.nodes_traversed >= max_node_depth)
|
||||||
|
continue
|
||||||
|
|
||||||
|
for(var/datum/datum in call(current.position, adjacent)(id))
|
||||||
|
if(datum == exclude)
|
||||||
|
continue
|
||||||
|
|
||||||
|
var/best_estimated_cost = current.estimated_cost + call(current.position, dist)(datum)
|
||||||
|
|
||||||
|
//handle removal of sub-par positions
|
||||||
|
if(datum in path_node_by_position)
|
||||||
|
var/PathNode/target = path_node_by_position[datum]
|
||||||
|
if(target.best_estimated_cost)
|
||||||
|
if(best_estimated_cost + call(datum, dist)(end) < target.best_estimated_cost)
|
||||||
|
open.RemoveItem(target)
|
||||||
else
|
else
|
||||||
continue
|
continue
|
||||||
|
|
||||||
open.Enqueue(new /PathNode(d,cur,ng,call(d,dist)(end),cur.nt+1))
|
var/PathNode/next_node = new (datum, current, best_estimated_cost, call(datum, dist)(end), current.nodes_traversed + 1)
|
||||||
if(maxnodes && open.L.len > maxnodes)
|
path_node_by_position[datum] = next_node
|
||||||
open.L.Cut(open.L.len)
|
open.Enqueue(next_node)
|
||||||
}
|
|
||||||
|
|
||||||
var/PathNode/temp
|
if(max_nodes && open.Length() > max_nodes)
|
||||||
while(!open.IsEmpty())
|
open.Remove(open.Length())
|
||||||
temp = open.Dequeue()
|
|
||||||
temp.source.bestF = 0
|
|
||||||
while(closed.len)
|
|
||||||
temp = closed[closed.len]
|
|
||||||
temp.bestF = 0
|
|
||||||
closed.Cut(closed.len)
|
|
||||||
|
|
||||||
if(path)
|
return path
|
||||||
for(var/i = 1; i <= path.len/2; i++)
|
|
||||||
path.Swap(i,path.len-i+1)
|
|
||||||
|
|
||||||
return path
|
|
||||||
|
|||||||
@@ -770,9 +770,16 @@ var/list/ghostteleportlocs = list()
|
|||||||
/area/maintenance/substation/engineering // Probably will be connected to engineering SMES room, as wires cannot be crossed properly without them sharing powernets.
|
/area/maintenance/substation/engineering // Probably will be connected to engineering SMES room, as wires cannot be crossed properly without them sharing powernets.
|
||||||
name = "Engineering Substation"
|
name = "Engineering Substation"
|
||||||
|
|
||||||
|
// No longer used:
|
||||||
/area/maintenance/substation/medical_science // Medbay and Science. Each has it's own separated machinery, but it originates from the same room.
|
/area/maintenance/substation/medical_science // Medbay and Science. Each has it's own separated machinery, but it originates from the same room.
|
||||||
name = "Medical Research Substation"
|
name = "Medical Research Substation"
|
||||||
|
|
||||||
|
/area/maintenance/substation/medical // Medbay
|
||||||
|
name = "Medical Substation"
|
||||||
|
|
||||||
|
/area/maintenance/substation/research // Research
|
||||||
|
name = "Research Substation"
|
||||||
|
|
||||||
/area/maintenance/substation/civilian_east // Bar, kitchen, dorms, ...
|
/area/maintenance/substation/civilian_east // Bar, kitchen, dorms, ...
|
||||||
name = "Civilian East Substation"
|
name = "Civilian East Substation"
|
||||||
|
|
||||||
@@ -1040,6 +1047,7 @@ var/list/ghostteleportlocs = list()
|
|||||||
|
|
||||||
/area/holodeck/source_space
|
/area/holodeck/source_space
|
||||||
name = "\improper Holodeck - Space"
|
name = "\improper Holodeck - Space"
|
||||||
|
has_gravity = 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -56,7 +56,7 @@
|
|||||||
"Devices and Tools" = list(
|
"Devices and Tools" = list(
|
||||||
new/datum/uplink_item(/obj/item/weapon/card/emag, 3, "Cryptographic Sequencer", "EC"),
|
new/datum/uplink_item(/obj/item/weapon/card/emag, 3, "Cryptographic Sequencer", "EC"),
|
||||||
new/datum/uplink_item(/obj/item/weapon/storage/toolbox/syndicate, 1, "Fully Loaded Toolbox", "ST"),
|
new/datum/uplink_item(/obj/item/weapon/storage/toolbox/syndicate, 1, "Fully Loaded Toolbox", "ST"),
|
||||||
new/datum/uplink_item(/obj/item/weapon/stamp/chameleon, 3, "Morphic Chameleon Stmap", "CS"),
|
new/datum/uplink_item(/obj/item/weapon/storage/box/syndie_kit/clerical, 3, "Morphic Clerical Kit", "CK"),
|
||||||
new/datum/uplink_item(/obj/item/weapon/storage/box/syndie_kit/space, 3, "Space Suit", "SS"),
|
new/datum/uplink_item(/obj/item/weapon/storage/box/syndie_kit/space, 3, "Space Suit", "SS"),
|
||||||
new/datum/uplink_item(/obj/item/clothing/glasses/thermal/syndi, 3, "Thermal Imaging Glasses", "TM"),
|
new/datum/uplink_item(/obj/item/clothing/glasses/thermal/syndi, 3, "Thermal Imaging Glasses", "TM"),
|
||||||
new/datum/uplink_item(/obj/item/device/encryptionkey/binary, 3, "Binary Translator Key", "BT"),
|
new/datum/uplink_item(/obj/item/device/encryptionkey/binary, 3, "Binary Translator Key", "BT"),
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
var/datum/dna2/record/buf=null
|
var/datum/dna2/record/buf=null
|
||||||
var/read_only = 0 //Well,it's still a floppy disk
|
var/read_only = 0 //Well,it's still a floppy disk
|
||||||
|
|
||||||
/obj/item/weapon/disk/data/proc/Initialize()
|
/obj/item/weapon/disk/data/proc/initializeDisk()
|
||||||
buf = new
|
buf = new
|
||||||
buf.dna=new
|
buf.dna=new
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@
|
|||||||
read_only = 1
|
read_only = 1
|
||||||
|
|
||||||
New()
|
New()
|
||||||
Initialize()
|
initializeDisk()
|
||||||
buf.types=DNA2_BUF_UE|DNA2_BUF_UI
|
buf.types=DNA2_BUF_UE|DNA2_BUF_UI
|
||||||
//data = "066000033000000000AF00330660FF4DB002690"
|
//data = "066000033000000000AF00330660FF4DB002690"
|
||||||
//data = "0C80C80C80C80C80C8000000000000161FBDDEF" - Farmer Jeff
|
//data = "0C80C80C80C80C80C8000000000000161FBDDEF" - Farmer Jeff
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
read_only = 1
|
read_only = 1
|
||||||
|
|
||||||
New()
|
New()
|
||||||
Initialize()
|
initializeDisk()
|
||||||
buf.types=DNA2_BUF_SE
|
buf.types=DNA2_BUF_SE
|
||||||
var/list/new_SE=list(0x098,0x3E8,0x403,0x44C,0x39F,0x4B0,0x59D,0x514,0x5FC,0x578,0x5DC,0x640,0x6A4)
|
var/list/new_SE=list(0x098,0x3E8,0x403,0x44C,0x39F,0x4B0,0x59D,0x514,0x5FC,0x578,0x5DC,0x640,0x6A4)
|
||||||
for(var/i=new_SE.len;i<=DNA_SE_LENGTH;i++)
|
for(var/i=new_SE.len;i<=DNA_SE_LENGTH;i++)
|
||||||
|
|||||||
@@ -16,14 +16,22 @@ var/global/list/holodeck_programs = list(
|
|||||||
)
|
)
|
||||||
|
|
||||||
/obj/machinery/computer/HolodeckControl
|
/obj/machinery/computer/HolodeckControl
|
||||||
name = "Holodeck Control Computer"
|
name = "holodeck control console"
|
||||||
desc = "A computer used to control a nearby holodeck."
|
desc = "A computer used to control a nearby holodeck."
|
||||||
icon_state = "holocontrol"
|
icon_state = "holocontrol"
|
||||||
|
|
||||||
|
use_power = 1
|
||||||
|
active_power_usage = 8000 //8kW for the scenery + 500W per holoitem
|
||||||
|
var/item_power_usage = 500
|
||||||
|
|
||||||
var/area/linkedholodeck = null
|
var/area/linkedholodeck = null
|
||||||
var/area/target = null
|
var/area/target = null
|
||||||
var/active = 0
|
var/active = 0
|
||||||
var/list/holographic_items = list()
|
var/list/holographic_items = list()
|
||||||
|
var/list/holographic_mobs = list()
|
||||||
var/damaged = 0
|
var/damaged = 0
|
||||||
|
var/safety_disabled = 0
|
||||||
|
var/mob/last_to_emag = null
|
||||||
var/last_change = 0
|
var/last_change = 0
|
||||||
var/list/supported_programs = list( \
|
var/list/supported_programs = list( \
|
||||||
"Empty Court" = "emptycourt", \
|
"Empty Court" = "emptycourt", \
|
||||||
@@ -38,84 +46,111 @@ var/global/list/holodeck_programs = list(
|
|||||||
"Theatre" = "theatre", \
|
"Theatre" = "theatre", \
|
||||||
"Meeting Hall" = "meetinghall" \
|
"Meeting Hall" = "meetinghall" \
|
||||||
)
|
)
|
||||||
var/list/restricted_programs = list("Atmospheric Burn Simulation" = "burntest", "ildlife Simulation" = "wildlifecarp")
|
var/list/restricted_programs = list("Atmospheric Burn Simulation" = "burntest", "Wildlife Simulation" = "wildlifecarp")
|
||||||
|
|
||||||
attack_ai(var/mob/user as mob)
|
/obj/machinery/computer/HolodeckControl/attack_ai(var/mob/user as mob)
|
||||||
return src.attack_hand(user)
|
return src.attack_hand(user)
|
||||||
|
|
||||||
attack_hand(var/mob/user as mob)
|
/obj/machinery/computer/HolodeckControl/attack_hand(var/mob/user as mob)
|
||||||
|
|
||||||
if(..())
|
if(..())
|
||||||
return
|
return
|
||||||
user.set_machine(src)
|
user.set_machine(src)
|
||||||
var/dat
|
var/dat
|
||||||
|
|
||||||
dat += "<B>Holodeck Control System</B><BR>"
|
dat += "<B>Holodeck Control System</B><BR>"
|
||||||
dat += "<HR>Current Loaded Programs:<BR>"
|
dat += "<HR>Current Loaded Programs:<BR>"
|
||||||
for(var/prog in supported_programs)
|
for(var/prog in supported_programs)
|
||||||
dat += "<A href='?src=\ref[src];program=[supported_programs[prog]]'>(([prog]))</A><BR>"
|
dat += "<A href='?src=\ref[src];program=[supported_programs[prog]]'>(([prog]))</A><BR>"
|
||||||
|
|
||||||
dat += "Please ensure that only holographic weapons are used in the holodeck if a combat simulation has been loaded.<BR>"
|
dat += "Please ensure that only holographic weapons are used in the holodeck if a combat simulation has been loaded.<BR>"
|
||||||
|
|
||||||
if(issilicon(user))
|
if(issilicon(user))
|
||||||
if(emagged)
|
if(safety_disabled)
|
||||||
dat += "<A href='?src=\ref[src];AIoverride=1'>(<font color=green>Re-Enable Safety Protocols?</font>)</A><BR>"
|
if (emagged)
|
||||||
|
dat += "<font color=red><b>ERROR</b>: Cannot re-enable Safety Protocols.</font><BR>"
|
||||||
else
|
else
|
||||||
dat += "<A href='?src=\ref[src];AIoverride=1'>(<font color=red>Override Safety Protocols?</font>)</A><BR>"
|
dat += "<A href='?src=\ref[src];AIoverride=1'>(<font color=green>Re-Enable Safety Protocols?</font>)</A><BR>"
|
||||||
|
|
||||||
if(emagged)
|
|
||||||
for(var/prog in restricted_programs)
|
|
||||||
dat += "<A href='?src=\ref[src];program=[restricted_programs[prog]]'>(<font color=red>Begin [prog]</font>)</A><BR>"
|
|
||||||
dat += "Ensure the holodeck is empty before testing.<BR>"
|
|
||||||
dat += "<BR>"
|
|
||||||
dat += "Safety Protocols are <font color=red> DISABLED </font><BR>"
|
|
||||||
else
|
else
|
||||||
dat += "Safety Protocols are <font color=green> ENABLED </font><BR>"
|
dat += "<A href='?src=\ref[src];AIoverride=1'>(<font color=red>Override Safety Protocols?</font>)</A><BR>"
|
||||||
|
|
||||||
user << browse(dat, "window=computer;size=400x500")
|
if(safety_disabled)
|
||||||
onclose(user, "computer")
|
for(var/prog in restricted_programs)
|
||||||
|
dat += "<A href='?src=\ref[src];program=[restricted_programs[prog]]'>(<font color=red>Begin [prog]</font>)</A><BR>"
|
||||||
|
dat += "Ensure the holodeck is empty before testing.<BR>"
|
||||||
|
dat += "<BR>"
|
||||||
|
dat += "Safety Protocols are <font color=red> DISABLED </font><BR>"
|
||||||
|
else
|
||||||
|
dat += "Safety Protocols are <font color=green> ENABLED </font><BR>"
|
||||||
|
|
||||||
|
user << browse(dat, "window=computer;size=400x500")
|
||||||
|
onclose(user, "computer")
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/computer/HolodeckControl/Topic(href, href_list)
|
||||||
|
if(..())
|
||||||
return
|
return
|
||||||
|
if((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
|
||||||
|
usr.set_machine(src)
|
||||||
|
|
||||||
|
if(href_list["program"])
|
||||||
|
var/prog = href_list["program"]
|
||||||
|
if(prog in holodeck_programs)
|
||||||
|
target = locate(holodeck_programs[prog])
|
||||||
|
if(target)
|
||||||
|
loadProgram(target)
|
||||||
|
|
||||||
Topic(href, href_list)
|
else if(href_list["AIoverride"])
|
||||||
if(..())
|
if(!issilicon(usr))
|
||||||
return
|
return
|
||||||
if((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
|
|
||||||
usr.set_machine(src)
|
if(safety_disabled && emagged)
|
||||||
|
return //if a traitor has gone through the trouble to emag the thing, let them keep it.
|
||||||
|
|
||||||
|
safety_disabled = !safety_disabled
|
||||||
|
update_projections()
|
||||||
|
if(safety_disabled)
|
||||||
|
message_admins("[key_name_admin(usr)] overrode the holodeck's safeties")
|
||||||
|
log_game("[key_name(usr)] overrided the holodeck's safeties")
|
||||||
|
else
|
||||||
|
message_admins("[key_name_admin(usr)] restored the holodeck's safeties")
|
||||||
|
log_game("[key_name(usr)] restored the holodeck's safeties")
|
||||||
|
|
||||||
if(href_list["program"])
|
src.add_fingerprint(usr)
|
||||||
var/prog = href_list["program"]
|
|
||||||
if(prog in holodeck_programs)
|
|
||||||
target = locate(holodeck_programs[prog])
|
|
||||||
if(target)
|
|
||||||
loadProgram(target)
|
|
||||||
|
|
||||||
else if(href_list["AIoverride"])
|
|
||||||
if(!issilicon(usr)) return
|
|
||||||
emagged = !emagged
|
|
||||||
if(emagged)
|
|
||||||
message_admins("[key_name_admin(usr)] overrode the holodeck's safeties")
|
|
||||||
log_game("[key_name(usr)] overrided the holodeck's safeties")
|
|
||||||
else
|
|
||||||
message_admins("[key_name_admin(usr)] restored the holodeck's safeties")
|
|
||||||
log_game("[key_name(usr)] restored the holodeck's safeties")
|
|
||||||
|
|
||||||
src.add_fingerprint(usr)
|
|
||||||
src.updateUsrDialog()
|
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/HolodeckControl/attackby(var/obj/item/weapon/D as obj, var/mob/user as mob)
|
|
||||||
if(istype(D, /obj/item/weapon/card/emag) && !emagged)
|
|
||||||
playsound(src.loc, 'sound/effects/sparks4.ogg', 75, 1)
|
|
||||||
emagged = 1
|
|
||||||
user << "\blue You vastly increase projector power and override the safety and security protocols."
|
|
||||||
user << "Warning. Automatic shutoff and derezing protocols have been corrupted. Please call Nanotrasen maintenance and do not use the simulator."
|
|
||||||
log_game("[key_name(usr)] emagged the Holodeck Control Computer")
|
|
||||||
src.updateUsrDialog()
|
src.updateUsrDialog()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
/obj/machinery/computer/HolodeckControl/attackby(var/obj/item/weapon/D as obj, var/mob/user as mob)
|
||||||
|
if(istype(D, /obj/item/weapon/card/emag))
|
||||||
|
playsound(src.loc, 'sound/effects/sparks4.ogg', 75, 1)
|
||||||
|
last_to_emag = user //emag again to change the owner
|
||||||
|
if (!emagged)
|
||||||
|
emagged = 1
|
||||||
|
safety_disabled = 1
|
||||||
|
update_projections()
|
||||||
|
user << "<span class='notice'>You vastly increase projector power and override the safety and security protocols.</span>"
|
||||||
|
user << "Warning. Automatic shutoff and derezing protocols have been corrupted. Please call Nanotrasen maintenance and do not use the simulator."
|
||||||
|
log_game("[key_name(usr)] emagged the Holodeck Control Computer")
|
||||||
|
src.updateUsrDialog()
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/machinery/computer/HolodeckControl/proc/update_projections()
|
||||||
|
if (safety_disabled)
|
||||||
|
item_power_usage = 2500
|
||||||
|
for(var/obj/item/weapon/holo/esword/H in linkedholodeck)
|
||||||
|
H.damtype = BRUTE
|
||||||
|
else
|
||||||
|
item_power_usage = initial(item_power_usage)
|
||||||
|
for(var/obj/item/weapon/holo/esword/H in linkedholodeck)
|
||||||
|
H.damtype = initial(H.damtype)
|
||||||
|
|
||||||
|
for(var/mob/living/simple_animal/hostile/carp/holodeck/C in holographic_mobs)
|
||||||
|
C.set_safety(!safety_disabled)
|
||||||
|
if (last_to_emag)
|
||||||
|
C.friends = list(last_to_emag)
|
||||||
|
|
||||||
/obj/machinery/computer/HolodeckControl/New()
|
/obj/machinery/computer/HolodeckControl/New()
|
||||||
..()
|
..()
|
||||||
linkedholodeck = locate(/area/holodeck/alphadeck)
|
linkedholodeck = locate(/area/holodeck/alphadeck)
|
||||||
@@ -148,14 +183,27 @@ var/global/list/holodeck_programs = list(
|
|||||||
emergencyShutdown()
|
emergencyShutdown()
|
||||||
..()
|
..()
|
||||||
|
|
||||||
|
/obj/machinery/computer/HolodeckControl/power_change()
|
||||||
|
var/oldstat
|
||||||
|
..()
|
||||||
|
if (stat != oldstat && active && (stat & NOPOWER))
|
||||||
|
emergencyShutdown()
|
||||||
|
|
||||||
/obj/machinery/computer/HolodeckControl/process()
|
/obj/machinery/computer/HolodeckControl/process()
|
||||||
for(var/item in holographic_items) // do this first, to make sure people don't take items out when power is down.
|
for(var/item in holographic_items) // do this first, to make sure people don't take items out when power is down.
|
||||||
if(!(get_turf(item) in linkedholodeck))
|
if(!(get_turf(item) in linkedholodeck))
|
||||||
derez(item, 0)
|
derez(item, 0)
|
||||||
|
|
||||||
|
if (!safety_disabled)
|
||||||
|
for(var/mob/living/simple_animal/hostile/carp/holodeck/C in holographic_mobs)
|
||||||
|
if (get_area(C.loc) != linkedholodeck)
|
||||||
|
holographic_mobs -= C
|
||||||
|
C.derez()
|
||||||
|
|
||||||
if(!..())
|
if(!..())
|
||||||
return
|
return
|
||||||
if(active)
|
if(active)
|
||||||
|
use_power(item_power_usage * (holographic_items.len + holographic_mobs.len))
|
||||||
|
|
||||||
if(!checkInteg(linkedholodeck))
|
if(!checkInteg(linkedholodeck))
|
||||||
damaged = 1
|
damaged = 1
|
||||||
@@ -163,6 +211,7 @@ var/global/list/holodeck_programs = list(
|
|||||||
if(target)
|
if(target)
|
||||||
loadProgram(target)
|
loadProgram(target)
|
||||||
active = 0
|
active = 0
|
||||||
|
use_power = 1
|
||||||
for(var/mob/M in range(10,src))
|
for(var/mob/M in range(10,src))
|
||||||
M.show_message("The holodeck overloads!")
|
M.show_message("The holodeck overloads!")
|
||||||
|
|
||||||
@@ -199,6 +248,7 @@ var/global/list/holodeck_programs = list(
|
|||||||
|
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
//Why is it called toggle if it doesn't toggle?
|
||||||
/obj/machinery/computer/HolodeckControl/proc/togglePower(var/toggleOn = 0)
|
/obj/machinery/computer/HolodeckControl/proc/togglePower(var/toggleOn = 0)
|
||||||
|
|
||||||
if(toggleOn)
|
if(toggleOn)
|
||||||
@@ -218,12 +268,14 @@ var/global/list/holodeck_programs = list(
|
|||||||
T.hotspot_expose(50000,50000,1)
|
T.hotspot_expose(50000,50000,1)
|
||||||
|
|
||||||
active = 1
|
active = 1
|
||||||
|
use_power = 2
|
||||||
else
|
else
|
||||||
for(var/item in holographic_items)
|
for(var/item in holographic_items)
|
||||||
derez(item)
|
derez(item)
|
||||||
var/area/targetsource = locate(/area/holodeck/source_plating)
|
var/area/targetsource = locate(/area/holodeck/source_plating)
|
||||||
targetsource.copy_contents_to(linkedholodeck , 1)
|
targetsource.copy_contents_to(linkedholodeck , 1)
|
||||||
active = 0
|
active = 0
|
||||||
|
use_power = 1
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/HolodeckControl/proc/loadProgram(var/area/A)
|
/obj/machinery/computer/HolodeckControl/proc/loadProgram(var/area/A)
|
||||||
@@ -238,22 +290,20 @@ var/global/list/holodeck_programs = list(
|
|||||||
|
|
||||||
last_change = world.time
|
last_change = world.time
|
||||||
active = 1
|
active = 1
|
||||||
|
use_power = 2
|
||||||
|
|
||||||
for(var/item in holographic_items)
|
for(var/item in holographic_items)
|
||||||
derez(item)
|
derez(item)
|
||||||
|
|
||||||
|
for(var/mob/living/simple_animal/hostile/carp/holodeck/C in holographic_mobs)
|
||||||
|
holographic_mobs -= C
|
||||||
|
C.derez()
|
||||||
|
|
||||||
for(var/obj/effect/decal/cleanable/blood/B in linkedholodeck)
|
for(var/obj/effect/decal/cleanable/blood/B in linkedholodeck)
|
||||||
del(B)
|
del(B)
|
||||||
|
|
||||||
for(var/mob/living/simple_animal/hostile/carp/C in linkedholodeck)
|
|
||||||
del(C)
|
|
||||||
|
|
||||||
holographic_items = A.copy_contents_to(linkedholodeck , 1)
|
holographic_items = A.copy_contents_to(linkedholodeck , 1)
|
||||||
|
|
||||||
if(emagged)
|
|
||||||
for(var/obj/item/weapon/holo/esword/H in linkedholodeck)
|
|
||||||
H.damtype = BRUTE
|
|
||||||
|
|
||||||
spawn(30)
|
spawn(30)
|
||||||
for(var/obj/effect/landmark/L in linkedholodeck)
|
for(var/obj/effect/landmark/L in linkedholodeck)
|
||||||
if(L.name=="Atmospheric Test Start")
|
if(L.name=="Atmospheric Test Start")
|
||||||
@@ -266,13 +316,22 @@ var/global/list/holodeck_programs = list(
|
|||||||
T.temperature = 5000
|
T.temperature = 5000
|
||||||
T.hotspot_expose(50000,50000,1)
|
T.hotspot_expose(50000,50000,1)
|
||||||
if(L.name=="Holocarp Spawn")
|
if(L.name=="Holocarp Spawn")
|
||||||
new /mob/living/simple_animal/hostile/carp(L.loc)
|
holographic_mobs += new /mob/living/simple_animal/hostile/carp/holodeck(L.loc)
|
||||||
|
|
||||||
|
if(L.name=="Holocarp Spawn Random")
|
||||||
|
if (prob(4)) //With 4 spawn points, carp should only appear 15% of the time.
|
||||||
|
holographic_mobs += new /mob/living/simple_animal/hostile/carp/holodeck(L.loc)
|
||||||
|
|
||||||
|
update_projections()
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/HolodeckControl/proc/emergencyShutdown()
|
/obj/machinery/computer/HolodeckControl/proc/emergencyShutdown()
|
||||||
//Get rid of any items
|
//Get rid of any items
|
||||||
for(var/item in holographic_items)
|
for(var/item in holographic_items)
|
||||||
derez(item)
|
derez(item)
|
||||||
|
for(var/mob/living/simple_animal/hostile/carp/holodeck/C in holographic_mobs)
|
||||||
|
holographic_mobs -= C
|
||||||
|
C.derez()
|
||||||
//Turn it back to the regular non-holographic room
|
//Turn it back to the regular non-holographic room
|
||||||
target = locate(/area/holodeck/source_plating)
|
target = locate(/area/holodeck/source_plating)
|
||||||
if(target)
|
if(target)
|
||||||
@@ -281,6 +340,7 @@ var/global/list/holodeck_programs = list(
|
|||||||
var/area/targetsource = locate(/area/holodeck/source_plating)
|
var/area/targetsource = locate(/area/holodeck/source_plating)
|
||||||
targetsource.copy_contents_to(linkedholodeck , 1)
|
targetsource.copy_contents_to(linkedholodeck , 1)
|
||||||
active = 0
|
active = 0
|
||||||
|
use_power = 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -327,17 +387,6 @@ var/global/list/holodeck_programs = list(
|
|||||||
|
|
||||||
|
|
||||||
/obj/structure/table/holotable/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
/obj/structure/table/holotable/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||||
if (istype(W, /obj/item/weapon/grab) && get_dist(src,user)<2)
|
|
||||||
var/obj/item/weapon/grab/G = W
|
|
||||||
if(G.state<2)
|
|
||||||
user << "\red You need a better grip to do that!"
|
|
||||||
return
|
|
||||||
G.affecting.loc = src.loc
|
|
||||||
G.affecting.Weaken(5)
|
|
||||||
visible_message("\red [G.assailant] puts [G.affecting] on the table.")
|
|
||||||
del(W)
|
|
||||||
return
|
|
||||||
|
|
||||||
if (istype(W, /obj/item/weapon/wrench))
|
if (istype(W, /obj/item/weapon/wrench))
|
||||||
user << "It's a holotable! There are no bolts!"
|
user << "It's a holotable! There are no bolts!"
|
||||||
return
|
return
|
||||||
@@ -424,13 +473,13 @@ var/global/list/holodeck_programs = list(
|
|||||||
icon_state = "sword[item_color]"
|
icon_state = "sword[item_color]"
|
||||||
w_class = 4
|
w_class = 4
|
||||||
playsound(user, 'sound/weapons/saberon.ogg', 50, 1)
|
playsound(user, 'sound/weapons/saberon.ogg', 50, 1)
|
||||||
user << "\blue [src] is now active."
|
user << "<span class='notice'>[src] is now active.</span>"
|
||||||
else
|
else
|
||||||
force = 3
|
force = 3
|
||||||
icon_state = "sword0"
|
icon_state = "sword0"
|
||||||
w_class = 2
|
w_class = 2
|
||||||
playsound(user, 'sound/weapons/saberoff.ogg', 50, 1)
|
playsound(user, 'sound/weapons/saberoff.ogg', 50, 1)
|
||||||
user << "\blue [src] can now be concealed."
|
user << "<span class='notice'>[src] can now be concealed.</span>"
|
||||||
|
|
||||||
if(istype(user,/mob/living/carbon/human))
|
if(istype(user,/mob/living/carbon/human))
|
||||||
var/mob/living/carbon/human/H = user
|
var/mob/living/carbon/human/H = user
|
||||||
@@ -463,16 +512,16 @@ var/global/list/holodeck_programs = list(
|
|||||||
if (istype(W, /obj/item/weapon/grab) && get_dist(src,user)<2)
|
if (istype(W, /obj/item/weapon/grab) && get_dist(src,user)<2)
|
||||||
var/obj/item/weapon/grab/G = W
|
var/obj/item/weapon/grab/G = W
|
||||||
if(G.state<2)
|
if(G.state<2)
|
||||||
user << "\red You need a better grip to do that!"
|
user << "<span class='warning'>You need a better grip to do that!</span>"
|
||||||
return
|
return
|
||||||
G.affecting.loc = src.loc
|
G.affecting.loc = src.loc
|
||||||
G.affecting.Weaken(5)
|
G.affecting.Weaken(5)
|
||||||
visible_message("\red [G.assailant] dunks [G.affecting] into the [src]!", 3)
|
visible_message("<span class='warning'>[G.assailant] dunks [G.affecting] into the [src]!</span>", 3)
|
||||||
del(W)
|
del(W)
|
||||||
return
|
return
|
||||||
else if (istype(W, /obj/item) && get_dist(src,user)<2)
|
else if (istype(W, /obj/item) && get_dist(src,user)<2)
|
||||||
user.drop_item(src)
|
user.drop_item(src)
|
||||||
visible_message("\blue [user] dunks [W] into the [src]!", 3)
|
visible_message("<span class='notice'>[user] dunks [W] into the [src]!</span>", 3)
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/structure/holohoop/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
/obj/structure/holohoop/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||||
@@ -482,9 +531,9 @@ var/global/list/holodeck_programs = list(
|
|||||||
return
|
return
|
||||||
if(prob(50))
|
if(prob(50))
|
||||||
I.loc = src.loc
|
I.loc = src.loc
|
||||||
visible_message("\blue Swish! \the [I] lands in \the [src].", 3)
|
visible_message("<span class='notice'>Swish! \the [I] lands in \the [src].</span>", 3)
|
||||||
else
|
else
|
||||||
visible_message("\red \the [I] bounces off of \the [src]'s rim!", 3)
|
visible_message("<span class='warning'>\The [I] bounces off of \the [src]'s rim!</span>", 3)
|
||||||
return 0
|
return 0
|
||||||
else
|
else
|
||||||
return ..(mover, target, height, air_group)
|
return ..(mover, target, height, air_group)
|
||||||
@@ -578,3 +627,39 @@ var/global/list/holodeck_programs = list(
|
|||||||
if (istype(W, /obj/item/weapon/wrench))
|
if (istype(W, /obj/item/weapon/wrench))
|
||||||
user << "It's a holorack! You can't unwrench it!"
|
user << "It's a holorack! You can't unwrench it!"
|
||||||
return
|
return
|
||||||
|
|
||||||
|
//Holocarp
|
||||||
|
|
||||||
|
/mob/living/simple_animal/hostile/carp/holodeck
|
||||||
|
icon = 'icons/mob/AI.dmi'
|
||||||
|
icon_state = "holo4"
|
||||||
|
icon_living = "holo4"
|
||||||
|
icon_dead = "holo4"
|
||||||
|
icon_gib = null
|
||||||
|
meat_amount = 0
|
||||||
|
meat_type = null
|
||||||
|
|
||||||
|
/mob/living/simple_animal/hostile/carp/holodeck/proc/set_safety(var/safe)
|
||||||
|
if (safe)
|
||||||
|
faction = "neutral"
|
||||||
|
melee_damage_lower = 0
|
||||||
|
melee_damage_upper = 0
|
||||||
|
wall_smash = 0
|
||||||
|
destroy_surroundings = 0
|
||||||
|
else
|
||||||
|
faction = "carp"
|
||||||
|
melee_damage_lower = initial(melee_damage_lower)
|
||||||
|
melee_damage_upper = initial(melee_damage_upper)
|
||||||
|
wall_smash = initial(wall_smash)
|
||||||
|
destroy_surroundings = initial(destroy_surroundings)
|
||||||
|
|
||||||
|
/mob/living/simple_animal/hostile/carp/holodeck/gib()
|
||||||
|
derez() //holograms can't gib
|
||||||
|
|
||||||
|
/mob/living/simple_animal/hostile/carp/holodeck/death()
|
||||||
|
..()
|
||||||
|
derez()
|
||||||
|
|
||||||
|
/mob/living/simple_animal/hostile/carp/holodeck/proc/derez()
|
||||||
|
visible_message("<span class='notice'>\The [src] fades away!</span>")
|
||||||
|
del(src)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
||||||
|
|
||||||
/obj/machinery/computer/operating
|
/obj/machinery/computer/operating
|
||||||
name = "Operating Computer"
|
name = "patient monitoring console"
|
||||||
density = 1
|
density = 1
|
||||||
anchored = 1.0
|
anchored = 1.0
|
||||||
icon_state = "operating"
|
icon_state = "operating"
|
||||||
|
|||||||
107
code/game/machinery/computer/RCON_Console.dm
Normal file
107
code/game/machinery/computer/RCON_Console.dm
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
/obj/machinery/computer/rcon
|
||||||
|
name = "\improper RCON remote control console"
|
||||||
|
desc = "Console used to remotely control machinery on the station."
|
||||||
|
icon = 'icons/obj/computer.dmi'
|
||||||
|
icon_state = "ai-fixer"
|
||||||
|
circuit = /obj/item/weapon/circuitboard/rcon_console
|
||||||
|
req_one_access = list(access_engine)
|
||||||
|
var/current_tag = null
|
||||||
|
var/list/known_SMESs = null
|
||||||
|
var/list/known_breakers = null
|
||||||
|
|
||||||
|
/obj/machinery/computer/rcon/attack_ai(var/mob/user as mob)
|
||||||
|
return attack_hand(user)
|
||||||
|
|
||||||
|
/obj/machinery/computer/rcon/attack_hand(var/mob/user as mob)
|
||||||
|
..()
|
||||||
|
ui_interact(user)
|
||||||
|
|
||||||
|
/obj/machinery/computer/rcon/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
|
FindDevices() // Update our devices list
|
||||||
|
var/data[0]
|
||||||
|
|
||||||
|
// SMES DATA (simplified view)
|
||||||
|
var/list/smeslist[0]
|
||||||
|
for(var/obj/machinery/power/smes/buildable/SMES in known_SMESs)
|
||||||
|
smeslist.Add(list(list(
|
||||||
|
"charge" = round(SMES.Percentage()),
|
||||||
|
"input_set" = SMES.input_attempt,
|
||||||
|
"input_val" = round(SMES.input_level),
|
||||||
|
"output_set" = SMES.output_attempt,
|
||||||
|
"output_val" = round(SMES.output_level),
|
||||||
|
"output_load" = round(SMES.output_used),
|
||||||
|
"RCON_tag" = SMES.RCon_tag
|
||||||
|
)))
|
||||||
|
data["smes_info"] = smeslist
|
||||||
|
|
||||||
|
// BREAKER DATA (simplified view)
|
||||||
|
var/list/breakerlist[0]
|
||||||
|
for(var/obj/machinery/power/breakerbox/BR in known_breakers)
|
||||||
|
breakerlist.Add(list(list(
|
||||||
|
"RCON_tag" = BR.RCon_tag,
|
||||||
|
"enabled" = BR.on
|
||||||
|
)))
|
||||||
|
data["breaker_info"] = breakerlist
|
||||||
|
|
||||||
|
// update the ui if it exists, returns null if no ui is passed/found
|
||||||
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
|
if (!ui)
|
||||||
|
// the ui does not exist, so we'll create a new() one
|
||||||
|
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
||||||
|
ui = new(user, src, ui_key, "rcon.tmpl", "RCON Control Console", 600, 400)
|
||||||
|
// when the ui is first opened this is the data it will use
|
||||||
|
ui.set_initial_data(data)
|
||||||
|
// open the new ui window
|
||||||
|
ui.open()
|
||||||
|
// auto update every Master Controller tick
|
||||||
|
ui.set_auto_update(1)
|
||||||
|
|
||||||
|
/obj/machinery/computer/rcon/Topic(href, href_list)
|
||||||
|
if(href_list["smes_in_toggle"])
|
||||||
|
var/obj/machinery/power/smes/buildable/SMES = GetSMESByTag(href_list["smes_in_toggle"])
|
||||||
|
if(SMES)
|
||||||
|
SMES.toggle_input()
|
||||||
|
if(href_list["smes_out_toggle"])
|
||||||
|
var/obj/machinery/power/smes/buildable/SMES = GetSMESByTag(href_list["smes_out_toggle"])
|
||||||
|
if(SMES)
|
||||||
|
SMES.toggle_output()
|
||||||
|
if(href_list["smes_in_set"])
|
||||||
|
var/obj/machinery/power/smes/buildable/SMES = GetSMESByTag(href_list["smes_in_set"])
|
||||||
|
if(SMES)
|
||||||
|
var/inputset = input(usr, "Enter new input level (0-[SMES.input_level_max])", "SMES Input Power Control") as num
|
||||||
|
SMES.set_input(inputset)
|
||||||
|
if(href_list["smes_out_set"])
|
||||||
|
var/obj/machinery/power/smes/buildable/SMES = GetSMESByTag(href_list["smes_out_set"])
|
||||||
|
if(SMES)
|
||||||
|
var/outputset = input(usr, "Enter new output level (0-[SMES.output_level_max])", "SMES Input Power Control") as num
|
||||||
|
SMES.set_output(outputset)
|
||||||
|
|
||||||
|
if(href_list["toggle_breaker"])
|
||||||
|
var/obj/machinery/power/breakerbox/toggle = null
|
||||||
|
for(var/obj/machinery/power/breakerbox/breaker in known_breakers)
|
||||||
|
if(breaker.RCon_tag == href_list["toggle_breaker"])
|
||||||
|
toggle = breaker
|
||||||
|
if(toggle)
|
||||||
|
if(toggle.update_locked)
|
||||||
|
usr << "The breaker box was recently toggled. Please wait before toggling it again."
|
||||||
|
else
|
||||||
|
toggle.auto_toggle()
|
||||||
|
|
||||||
|
/obj/machinery/computer/rcon/proc/GetSMESByTag(var/tag)
|
||||||
|
if(!tag)
|
||||||
|
return
|
||||||
|
|
||||||
|
for(var/obj/machinery/power/smes/buildable/S in known_SMESs)
|
||||||
|
if(S.RCon_tag == tag)
|
||||||
|
return S
|
||||||
|
|
||||||
|
/obj/machinery/computer/rcon/proc/FindDevices()
|
||||||
|
known_SMESs = new /list()
|
||||||
|
for(var/obj/machinery/power/smes/buildable/SMES in machines)
|
||||||
|
if(SMES.RCon_tag && (SMES.RCon_tag != "NO_TAG") && SMES.RCon)
|
||||||
|
known_SMESs.Add(SMES)
|
||||||
|
|
||||||
|
known_breakers = new /list()
|
||||||
|
for(var/obj/machinery/power/breakerbox/breaker in machines)
|
||||||
|
if(breaker.RCon_tag != "NO_TAG")
|
||||||
|
known_breakers.Add(breaker)
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
/obj/structure/AIcore
|
/obj/structure/AIcore
|
||||||
density = 1
|
density = 1
|
||||||
anchored = 0
|
anchored = 0
|
||||||
name = "AI core"
|
name = "\improper AI core"
|
||||||
icon = 'icons/mob/AI.dmi'
|
icon = 'icons/mob/AI.dmi'
|
||||||
icon_state = "0"
|
icon_state = "0"
|
||||||
var/state = 0
|
var/state = 0
|
||||||
@@ -175,7 +175,7 @@
|
|||||||
del(src)
|
del(src)
|
||||||
|
|
||||||
/obj/structure/AIcore/deactivated
|
/obj/structure/AIcore/deactivated
|
||||||
name = "Inactive AI"
|
name = "inactive AI"
|
||||||
icon = 'icons/mob/AI.dmi'
|
icon = 'icons/mob/AI.dmi'
|
||||||
icon_state = "ai-empty"
|
icon_state = "ai-empty"
|
||||||
anchored = 1
|
anchored = 1
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/obj/machinery/computer/aifixer
|
/obj/machinery/computer/aifixer
|
||||||
name = "AI System Integrity Restorer"
|
name = "\improper AI system integrity restorer"
|
||||||
icon = 'icons/obj/computer.dmi'
|
icon = 'icons/obj/computer.dmi'
|
||||||
icon_state = "ai-fixer"
|
icon_state = "ai-fixer"
|
||||||
circuit = /obj/item/weapon/circuitboard/aifixer
|
circuit = /obj/item/weapon/circuitboard/aifixer
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/atmos_alert
|
/obj/machinery/computer/atmos_alert
|
||||||
name = "Atmospheric Alert Computer"
|
name = "atmospheric alert computer"
|
||||||
desc = "Used to access the station's atmospheric sensors."
|
desc = "Used to access the station's atmospheric sensors."
|
||||||
circuit = "/obj/item/weapon/circuitboard/atmos_alert"
|
circuit = "/obj/item/weapon/circuitboard/atmos_alert"
|
||||||
icon_state = "alert:0"
|
icon_state = "alert:0"
|
||||||
|
|||||||
@@ -3,363 +3,13 @@
|
|||||||
/obj/structure/computerframe
|
/obj/structure/computerframe
|
||||||
density = 1
|
density = 1
|
||||||
anchored = 0
|
anchored = 0
|
||||||
name = "Computer-frame"
|
name = "computer frame"
|
||||||
icon = 'icons/obj/stock_parts.dmi'
|
icon = 'icons/obj/stock_parts.dmi'
|
||||||
icon_state = "0"
|
icon_state = "0"
|
||||||
var/state = 0
|
var/state = 0
|
||||||
var/obj/item/weapon/circuitboard/circuit = null
|
var/obj/item/weapon/circuitboard/circuit = null
|
||||||
// weight = 1.0E8
|
// weight = 1.0E8
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard
|
|
||||||
density = 0
|
|
||||||
anchored = 0
|
|
||||||
w_class = 2.0
|
|
||||||
name = "Circuit board"
|
|
||||||
icon = 'icons/obj/module.dmi'
|
|
||||||
icon_state = "id_mod"
|
|
||||||
item_state = "electronic"
|
|
||||||
origin_tech = "programming=2"
|
|
||||||
var/build_path = null
|
|
||||||
var/board_type = "computer"
|
|
||||||
var/list/req_components = null
|
|
||||||
var/frame_desc = null
|
|
||||||
var/contain_parts = 1
|
|
||||||
|
|
||||||
//Not sure where else to put this
|
|
||||||
/obj/item/weapon/circuitboard/broken
|
|
||||||
name = "broken electronics"
|
|
||||||
icon = 'icons/obj/doors/door_assembly.dmi'
|
|
||||||
icon_state = "door_electronics_smoked"
|
|
||||||
origin_tech = null
|
|
||||||
board_type = "other"
|
|
||||||
|
|
||||||
//Called when the circuitboard is used to contruct a new machine.
|
|
||||||
/obj/item/weapon/circuitboard/proc/construct(var/obj/machinery/M)
|
|
||||||
if (istype(M, build_path))
|
|
||||||
return 1
|
|
||||||
return 0
|
|
||||||
|
|
||||||
//Called when a computer is deconstructed to produce a circuitboard.
|
|
||||||
//Only used by computers, as other machines store their circuitboard instance.
|
|
||||||
/obj/item/weapon/circuitboard/proc/deconstruct(var/obj/machinery/M)
|
|
||||||
if (istype(M, build_path))
|
|
||||||
return 1
|
|
||||||
return 0
|
|
||||||
|
|
||||||
/*
|
|
||||||
Circuit Board Definitions
|
|
||||||
*/
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/message_monitor
|
|
||||||
name = "Circuit board (Message Monitor)"
|
|
||||||
build_path = /obj/machinery/computer/message_monitor
|
|
||||||
origin_tech = "programming=3"
|
|
||||||
|
|
||||||
//TODO: Move these into computer/camera.dm
|
|
||||||
/obj/item/weapon/circuitboard/security
|
|
||||||
name = "Circuit board (Security Camera Monitor)"
|
|
||||||
build_path = /obj/machinery/computer/security
|
|
||||||
var/network = list("SS13")
|
|
||||||
req_access = list(access_security)
|
|
||||||
var/locked = 1
|
|
||||||
var/emagged = 0
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/security/construct(var/obj/machinery/computer/security/C)
|
|
||||||
if (..(C))
|
|
||||||
C.network = network
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/security/deconstruct(var/obj/machinery/computer/security/C)
|
|
||||||
if (..(C))
|
|
||||||
network = C.network
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/security/engineering
|
|
||||||
name = "Circuit board (Engineering Camera Monitor)"
|
|
||||||
build_path = /obj/machinery/computer/security/engineering
|
|
||||||
network = list("Engineering","Power Alarms","Atmosphere Alarms","Fire Alarms")
|
|
||||||
req_access = list()
|
|
||||||
/obj/item/weapon/circuitboard/security/mining
|
|
||||||
name = "Circuit board (Mining Camera Monitor)"
|
|
||||||
build_path = /obj/machinery/computer/security/mining
|
|
||||||
network = list("MINE")
|
|
||||||
req_access = list()
|
|
||||||
/obj/item/weapon/circuitboard/aicore
|
|
||||||
name = "Circuit board (AI Core)"
|
|
||||||
origin_tech = "programming=4;biotech=2"
|
|
||||||
board_type = "other"
|
|
||||||
/obj/item/weapon/circuitboard/aiupload
|
|
||||||
name = "Circuit board (AI Upload)"
|
|
||||||
build_path = /obj/machinery/computer/aiupload
|
|
||||||
origin_tech = "programming=4"
|
|
||||||
/obj/item/weapon/circuitboard/borgupload
|
|
||||||
name = "Circuit board (Cyborg Upload)"
|
|
||||||
build_path = /obj/machinery/computer/borgupload
|
|
||||||
origin_tech = "programming=4"
|
|
||||||
/obj/item/weapon/circuitboard/med_data
|
|
||||||
name = "Circuit board (Medical Records)"
|
|
||||||
build_path = /obj/machinery/computer/med_data
|
|
||||||
/obj/item/weapon/circuitboard/pandemic
|
|
||||||
name = "Circuit board (PanD.E.M.I.C. 2200)"
|
|
||||||
build_path = /obj/machinery/computer/pandemic
|
|
||||||
origin_tech = "programming=2;biotech=2"
|
|
||||||
/obj/item/weapon/circuitboard/scan_consolenew
|
|
||||||
name = "Circuit board (DNA Machine)"
|
|
||||||
build_path = /obj/machinery/computer/scan_consolenew
|
|
||||||
origin_tech = "programming=2;biotech=2"
|
|
||||||
/obj/item/weapon/circuitboard/communications
|
|
||||||
name = "Circuit board (Communications)"
|
|
||||||
build_path = /obj/machinery/computer/communications
|
|
||||||
origin_tech = "programming=2;magnets=2"
|
|
||||||
/obj/item/weapon/circuitboard/card
|
|
||||||
name = "Circuit board (ID Computer)"
|
|
||||||
build_path = /obj/machinery/computer/card
|
|
||||||
/obj/item/weapon/circuitboard/card/centcom
|
|
||||||
name = "Circuit board (CentCom ID Computer)"
|
|
||||||
build_path = /obj/machinery/computer/card/centcom
|
|
||||||
//obj/item/weapon/circuitboard/shield
|
|
||||||
// name = "Circuit board (Shield Control)"
|
|
||||||
// build_path = "/obj/machinery/computer/stationshield"
|
|
||||||
/obj/item/weapon/circuitboard/teleporter
|
|
||||||
name = "Circuit board (Teleporter)"
|
|
||||||
build_path = /obj/machinery/computer/teleporter
|
|
||||||
origin_tech = "programming=2;bluespace=2"
|
|
||||||
/obj/item/weapon/circuitboard/secure_data
|
|
||||||
name = "Circuit board (Security Records)"
|
|
||||||
build_path = /obj/machinery/computer/secure_data
|
|
||||||
/obj/item/weapon/circuitboard/skills
|
|
||||||
name = "Circuit board (Employment Records)"
|
|
||||||
build_path = /obj/machinery/computer/skills
|
|
||||||
/obj/item/weapon/circuitboard/stationalert
|
|
||||||
name = "Circuit board (Station Alerts)"
|
|
||||||
build_path = /obj/machinery/computer/station_alert
|
|
||||||
///obj/item/weapon/circuitboard/atmospheresiphonswitch
|
|
||||||
// name = "Circuit board (Atmosphere Siphon Control)"
|
|
||||||
// build_path = /obj/machinery/computer/atmosphere/siphonswitch
|
|
||||||
/obj/item/weapon/circuitboard/air_management
|
|
||||||
name = "Circuit board (Atmospheric Monitor)"
|
|
||||||
build_path = /obj/machinery/computer/general_air_control
|
|
||||||
var/frequency = 1439
|
|
||||||
/obj/item/weapon/circuitboard/air_management/tank_control
|
|
||||||
name = "Circuit board (Tank Control)"
|
|
||||||
build_path = /obj/machinery/computer/general_air_control/large_tank_control
|
|
||||||
frequency = 1441
|
|
||||||
/obj/item/weapon/circuitboard/air_management/supermatter_core
|
|
||||||
name = "Circuit board (Core Control)"
|
|
||||||
build_path = /obj/machinery/computer/general_air_control/supermatter_core
|
|
||||||
frequency = 1438
|
|
||||||
/obj/item/weapon/circuitboard/air_management/injector_control
|
|
||||||
name = "Circuit board (Injector Control)"
|
|
||||||
build_path = /obj/machinery/computer/general_air_control/fuel_injection
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/air_management/construct(var/obj/machinery/computer/general_air_control/C)
|
|
||||||
if (..(C))
|
|
||||||
C.frequency = frequency
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/air_management/deconstruct(var/obj/machinery/computer/general_air_control/C)
|
|
||||||
if (..(C))
|
|
||||||
frequency = C.frequency
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/atmos_alert
|
|
||||||
name = "Circuit board (Atmospheric Alert)"
|
|
||||||
build_path = /obj/machinery/computer/atmos_alert
|
|
||||||
/obj/item/weapon/circuitboard/pod
|
|
||||||
name = "Circuit board (Massdriver control)"
|
|
||||||
build_path = /obj/machinery/computer/pod
|
|
||||||
/obj/item/weapon/circuitboard/robotics
|
|
||||||
name = "Circuit board (Robotics Control)"
|
|
||||||
build_path = /obj/machinery/computer/robotics
|
|
||||||
origin_tech = "programming=3"
|
|
||||||
/obj/item/weapon/circuitboard/drone_control
|
|
||||||
name = "Circuit board (Drone Control)"
|
|
||||||
build_path = /obj/machinery/computer/drone_control
|
|
||||||
origin_tech = "programming=3"
|
|
||||||
/obj/item/weapon/circuitboard/cloning
|
|
||||||
name = "Circuit board (Cloning)"
|
|
||||||
build_path = /obj/machinery/computer/cloning
|
|
||||||
origin_tech = "programming=3;biotech=3"
|
|
||||||
/obj/item/weapon/circuitboard/arcade
|
|
||||||
name = "Circuit board (Arcade)"
|
|
||||||
build_path = /obj/machinery/computer/arcade
|
|
||||||
origin_tech = "programming=1"
|
|
||||||
/obj/item/weapon/circuitboard/turbine_control
|
|
||||||
name = "Circuit board (Turbine control)"
|
|
||||||
build_path = /obj/machinery/computer/turbine_computer
|
|
||||||
/obj/item/weapon/circuitboard/solar_control
|
|
||||||
name = "Circuit board (Solar Control)"
|
|
||||||
build_path = /obj/machinery/power/solar_control
|
|
||||||
origin_tech = "programming=2;powerstorage=2"
|
|
||||||
/obj/item/weapon/circuitboard/powermonitor
|
|
||||||
name = "Circuit board (Power Monitor)"
|
|
||||||
build_path = /obj/machinery/computer/power_monitor
|
|
||||||
/obj/item/weapon/circuitboard/olddoor
|
|
||||||
name = "Circuit board (DoorMex)"
|
|
||||||
build_path = /obj/machinery/computer/pod/old
|
|
||||||
/obj/item/weapon/circuitboard/syndicatedoor
|
|
||||||
name = "Circuit board (ProComp Executive)"
|
|
||||||
build_path = /obj/machinery/computer/pod/old/syndicate
|
|
||||||
/obj/item/weapon/circuitboard/swfdoor
|
|
||||||
name = "Circuit board (Magix)"
|
|
||||||
build_path = /obj/machinery/computer/pod/old/swf
|
|
||||||
/obj/item/weapon/circuitboard/prisoner
|
|
||||||
name = "Circuit board (Prisoner Management)"
|
|
||||||
build_path = /obj/machinery/computer/prisoner
|
|
||||||
/obj/item/weapon/circuitboard/rdconsole
|
|
||||||
name = "Circuit Board (RD Console)"
|
|
||||||
build_path = /obj/machinery/computer/rdconsole/core
|
|
||||||
/obj/item/weapon/circuitboard/mecha_control
|
|
||||||
name = "Circuit Board (Exosuit Control Console)"
|
|
||||||
build_path = /obj/machinery/computer/mecha
|
|
||||||
/obj/item/weapon/circuitboard/rdservercontrol
|
|
||||||
name = "Circuit Board (R&D Server Control)"
|
|
||||||
build_path = /obj/machinery/computer/rdservercontrol
|
|
||||||
/obj/item/weapon/circuitboard/crew
|
|
||||||
name = "Circuit board (Crew monitoring computer)"
|
|
||||||
build_path = /obj/machinery/computer/crew
|
|
||||||
origin_tech = "programming=3;biotech=2;magnets=2"
|
|
||||||
/obj/item/weapon/circuitboard/mech_bay_power_console
|
|
||||||
name = "Circuit board (Mech Bay Power Control Console)"
|
|
||||||
build_path = /obj/machinery/computer/mech_bay_power_console
|
|
||||||
origin_tech = "programming=2;powerstorage=3"
|
|
||||||
/obj/item/weapon/circuitboard/ordercomp
|
|
||||||
name = "Circuit board (Supply ordering console)"
|
|
||||||
build_path = /obj/machinery/computer/ordercomp
|
|
||||||
origin_tech = "programming=2"
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/supplycomp
|
|
||||||
name = "Circuit board (Supply shuttle console)"
|
|
||||||
build_path = /obj/machinery/computer/supplycomp
|
|
||||||
origin_tech = "programming=3"
|
|
||||||
var/contraband_enabled = 0
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/supplycomp/construct(var/obj/machinery/computer/supplycomp/SC)
|
|
||||||
if (..(SC))
|
|
||||||
SC.can_order_contraband = contraband_enabled
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/supplycomp/deconstruct(var/obj/machinery/computer/supplycomp/SC)
|
|
||||||
if (..(SC))
|
|
||||||
contraband_enabled = SC.can_order_contraband
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/operating
|
|
||||||
name = "Circuit board (Operating Computer)"
|
|
||||||
build_path = /obj/machinery/computer/operating
|
|
||||||
origin_tech = "programming=2;biotech=2"
|
|
||||||
/obj/item/weapon/circuitboard/comm_monitor
|
|
||||||
name = "Circuit board (Telecommunications Monitor)"
|
|
||||||
build_path = /obj/machinery/computer/telecomms/monitor
|
|
||||||
origin_tech = "programming=3"
|
|
||||||
/obj/item/weapon/circuitboard/comm_server
|
|
||||||
name = "Circuit board (Telecommunications Server Monitor)"
|
|
||||||
build_path = /obj/machinery/computer/telecomms/server
|
|
||||||
origin_tech = "programming=3"
|
|
||||||
/obj/item/weapon/circuitboard/comm_traffic
|
|
||||||
name = "Circuitboard (Telecommunications Traffic Control)"
|
|
||||||
build_path = /obj/machinery/computer/telecomms/traffic
|
|
||||||
origin_tech = "programming=3"
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/curefab
|
|
||||||
name = "Circuit board (Cure fab)"
|
|
||||||
build_path = /obj/machinery/computer/curer
|
|
||||||
/obj/item/weapon/circuitboard/splicer
|
|
||||||
name = "Circuit board (Disease Splicer)"
|
|
||||||
build_path = /obj/machinery/computer/diseasesplicer
|
|
||||||
/obj/item/weapon/circuitboard/mining_shuttle
|
|
||||||
name = "Circuit board (Mining Shuttle)"
|
|
||||||
build_path = /obj/machinery/computer/shuttle_control/mining
|
|
||||||
origin_tech = "programming=2"
|
|
||||||
/obj/item/weapon/circuitboard/engineering_shuttle
|
|
||||||
name = "Circuit board (Engineering Shuttle)"
|
|
||||||
build_path = /obj/machinery/computer/shuttle_control/engineering
|
|
||||||
origin_tech = "programming=2"
|
|
||||||
/obj/item/weapon/circuitboard/research_shuttle
|
|
||||||
name = "Circuit board (Research Shuttle)"
|
|
||||||
build_path = /obj/machinery/computer/shuttle_control/research
|
|
||||||
origin_tech = "programming=2"
|
|
||||||
/obj/item/weapon/circuitboard/HolodeckControl // Not going to let people get this, but it's just here for future
|
|
||||||
name = "Circuit board (Holodeck Control)"
|
|
||||||
build_path = /obj/machinery/computer/HolodeckControl
|
|
||||||
origin_tech = "programming=4"
|
|
||||||
/obj/item/weapon/circuitboard/aifixer
|
|
||||||
name = "Circuit board (AI Integrity Restorer)"
|
|
||||||
build_path = /obj/machinery/computer/aifixer
|
|
||||||
origin_tech = "programming=3;biotech=2"
|
|
||||||
/obj/item/weapon/circuitboard/area_atmos
|
|
||||||
name = "Circuit board (Area Air Control)"
|
|
||||||
build_path = /obj/machinery/computer/area_atmos
|
|
||||||
origin_tech = "programming=2"
|
|
||||||
/obj/item/weapon/circuitboard/prison_shuttle
|
|
||||||
name = "Circuit board (Prison Shuttle)"
|
|
||||||
build_path = /obj/machinery/computer/prison_shuttle
|
|
||||||
origin_tech = "programming=2"
|
|
||||||
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/supplycomp/attackby(obj/item/I as obj, mob/user as mob)
|
|
||||||
if(istype(I,/obj/item/device/multitool))
|
|
||||||
var/catastasis = src.contraband_enabled
|
|
||||||
var/opposite_catastasis
|
|
||||||
if(catastasis)
|
|
||||||
opposite_catastasis = "STANDARD"
|
|
||||||
catastasis = "BROAD"
|
|
||||||
else
|
|
||||||
opposite_catastasis = "BROAD"
|
|
||||||
catastasis = "STANDARD"
|
|
||||||
|
|
||||||
switch( alert("Current receiver spectrum is set to: [catastasis]","Multitool-Circuitboard interface","Switch to [opposite_catastasis]","Cancel") )
|
|
||||||
//switch( alert("Current receiver spectrum is set to: " {(src.contraband_enabled) ? ("BROAD") : ("STANDARD")} , "Multitool-Circuitboard interface" , "Switch to " {(src.contraband_enabled) ? ("STANDARD") : ("BROAD")}, "Cancel") )
|
|
||||||
if("Switch to STANDARD","Switch to BROAD")
|
|
||||||
src.contraband_enabled = !src.contraband_enabled
|
|
||||||
|
|
||||||
if("Cancel")
|
|
||||||
return
|
|
||||||
else
|
|
||||||
user << "DERP! BUG! Report this (And what you were doing to cause it) to Agouri"
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/security/attackby(obj/item/I as obj, mob/user as mob)
|
|
||||||
if(istype(I,/obj/item/weapon/card/emag))
|
|
||||||
if(emagged)
|
|
||||||
user << "Circuit lock is already removed."
|
|
||||||
return
|
|
||||||
user << "\blue You override the circuit lock and open controls."
|
|
||||||
emagged = 1
|
|
||||||
locked = 0
|
|
||||||
else if(istype(I,/obj/item/weapon/card/id))
|
|
||||||
if(emagged)
|
|
||||||
user << "\red Circuit lock does not respond."
|
|
||||||
return
|
|
||||||
if(check_access(I))
|
|
||||||
locked = !locked
|
|
||||||
user << "\blue You [locked ? "" : "un"]lock the circuit controls."
|
|
||||||
else
|
|
||||||
user << "\red Access denied."
|
|
||||||
else if(istype(I,/obj/item/device/multitool))
|
|
||||||
if(locked)
|
|
||||||
user << "\red Circuit controls are locked."
|
|
||||||
return
|
|
||||||
var/existing_networks = list2text(network,",")
|
|
||||||
var/input = strip_html(input(usr, "Which networks would you like to connect this camera console circuit to? Seperate networks with a comma. No Spaces!\nFor example: SS13,Security,Secret ", "Multitool-Circuitboard interface", existing_networks))
|
|
||||||
if(!input)
|
|
||||||
usr << "No input found please hang up and try your call again."
|
|
||||||
return
|
|
||||||
var/list/tempnetwork = text2list(input, ",")
|
|
||||||
tempnetwork = difflist(tempnetwork,RESTRICTED_CAMERA_NETWORKS,1)
|
|
||||||
if(tempnetwork.len < 1)
|
|
||||||
usr << "No network found please hang up and try your call again."
|
|
||||||
return
|
|
||||||
network = tempnetwork
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/rdconsole/attackby(obj/item/I as obj, mob/user as mob)
|
|
||||||
if(istype(I,/obj/item/weapon/screwdriver))
|
|
||||||
user.visible_message("\blue \the [user] adjusts the jumper on the [src]'s access protocol pins.", "\blue You adjust the jumper on the access protocol pins.")
|
|
||||||
if(src.build_path == /obj/machinery/computer/rdconsole/core)
|
|
||||||
src.name = "Circuit Board (RD Console - Robotics)"
|
|
||||||
src.build_path = /obj/machinery/computer/rdconsole/robotics
|
|
||||||
user << "\blue Access protocols set to robotics."
|
|
||||||
else
|
|
||||||
src.name = "Circuit Board (RD Console)"
|
|
||||||
src.build_path = /obj/machinery/computer/rdconsole/core
|
|
||||||
user << "\blue Access protocols set to default."
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/structure/computerframe/attackby(obj/item/P as obj, mob/user as mob)
|
/obj/structure/computerframe/attackby(obj/item/P as obj, mob/user as mob)
|
||||||
switch(state)
|
switch(state)
|
||||||
if(0)
|
if(0)
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/security
|
/obj/machinery/computer/security
|
||||||
name = "Security Cameras"
|
name = "security camera monitor"
|
||||||
desc = "Used to access the various cameras on the station."
|
desc = "Used to access the various cameras on the station."
|
||||||
icon_state = "cameras"
|
icon_state = "cameras"
|
||||||
var/obj/machinery/camera/current = null
|
var/obj/machinery/camera/current = null
|
||||||
@@ -23,6 +23,69 @@
|
|||||||
user.reset_view(current)
|
user.reset_view(current)
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1)
|
||||||
|
if(src.z > 6) return
|
||||||
|
if(stat & (NOPOWER|BROKEN)) return
|
||||||
|
if(user.stat) return
|
||||||
|
|
||||||
|
var/data[0]
|
||||||
|
|
||||||
|
data["current"] = null
|
||||||
|
|
||||||
|
var/list/L = list()
|
||||||
|
for (var/obj/machinery/camera/C in cameranet.cameras)
|
||||||
|
if(can_access_camera(C))
|
||||||
|
L.Add(C)
|
||||||
|
|
||||||
|
camera_sort(L)
|
||||||
|
|
||||||
|
var/cameras[0]
|
||||||
|
for(var/obj/machinery/camera/C in L)
|
||||||
|
var/cam[0]
|
||||||
|
cam["name"] = C.c_tag
|
||||||
|
cam["deact"] = !C.can_use()
|
||||||
|
cam["camera"] = "\ref[C]"
|
||||||
|
cam["x"] = C.x
|
||||||
|
cam["y"] = C.y
|
||||||
|
cam["z"] = C.z
|
||||||
|
|
||||||
|
cameras[++cameras.len] = cam
|
||||||
|
|
||||||
|
if(C == current)
|
||||||
|
data["current"] = cam
|
||||||
|
|
||||||
|
data["cameras"] = cameras
|
||||||
|
|
||||||
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
|
if (!ui)
|
||||||
|
ui = new(user, src, ui_key, "sec_camera.tmpl", "Camera Console", 900, 800)
|
||||||
|
|
||||||
|
// adding a template with the key "mapContent" enables the map ui functionality
|
||||||
|
ui.add_template("mapContent", "sec_camera_map_content.tmpl")
|
||||||
|
// adding a template with the key "mapHeader" replaces the map header content
|
||||||
|
ui.add_template("mapHeader", "sec_camera_map_header.tmpl")
|
||||||
|
|
||||||
|
ui.set_initial_data(data)
|
||||||
|
ui.open()
|
||||||
|
ui.set_auto_update(1)
|
||||||
|
|
||||||
|
Topic(href, href_list)
|
||||||
|
if(href_list["switchTo"])
|
||||||
|
if(src.z>6 || stat&(NOPOWER|BROKEN)) return
|
||||||
|
if(usr.stat || ((get_dist(usr, src) > 1 || !( usr.canmove ) || usr.blinded) && !istype(usr, /mob/living/silicon))) return
|
||||||
|
var/obj/machinery/camera/C = locate(href_list["switchTo"]) in cameranet.cameras
|
||||||
|
if(!C) return
|
||||||
|
|
||||||
|
switch_to_camera(usr, C)
|
||||||
|
return 1
|
||||||
|
else if(href_list["reset"])
|
||||||
|
if(src.z>6 || stat&(NOPOWER|BROKEN)) return
|
||||||
|
if(usr.stat || ((get_dist(usr, src) > 1 || !( usr.canmove ) || usr.blinded) && !istype(usr, /mob/living/silicon))) return
|
||||||
|
current = null
|
||||||
|
usr.check_eye(current)
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
. = ..()
|
||||||
|
|
||||||
attack_hand(var/mob/user as mob)
|
attack_hand(var/mob/user as mob)
|
||||||
if (src.z > 6)
|
if (src.z > 6)
|
||||||
@@ -32,35 +95,7 @@
|
|||||||
|
|
||||||
if(!isAI(user))
|
if(!isAI(user))
|
||||||
user.set_machine(src)
|
user.set_machine(src)
|
||||||
|
ui_interact(user)
|
||||||
var/list/L = list()
|
|
||||||
for (var/obj/machinery/camera/C in cameranet.cameras)
|
|
||||||
L.Add(C)
|
|
||||||
|
|
||||||
camera_sort(L)
|
|
||||||
|
|
||||||
var/list/D = list()
|
|
||||||
D["Cancel"] = "Cancel"
|
|
||||||
for(var/obj/machinery/camera/C in L)
|
|
||||||
if(can_access_camera(C))
|
|
||||||
D[text("[][]", C.c_tag, (C.can_use() ? null : " (Deactivated)"))] = C
|
|
||||||
|
|
||||||
var/t = input(user, "Which camera should you change to?") as null|anything in D
|
|
||||||
if(!t)
|
|
||||||
user.unset_machine()
|
|
||||||
return 0
|
|
||||||
|
|
||||||
var/obj/machinery/camera/C = D[t]
|
|
||||||
|
|
||||||
if(t == "Cancel")
|
|
||||||
user.unset_machine()
|
|
||||||
return 0
|
|
||||||
|
|
||||||
if(C)
|
|
||||||
switch_to_camera(user, C)
|
|
||||||
spawn(5)
|
|
||||||
attack_hand(user)
|
|
||||||
return
|
|
||||||
|
|
||||||
proc/can_access_camera(var/obj/machinery/camera/C)
|
proc/can_access_camera(var/obj/machinery/camera/C)
|
||||||
var/list/shared_networks = src.network & C.network
|
var/list/shared_networks = src.network & C.network
|
||||||
@@ -79,6 +114,7 @@
|
|||||||
if (!C.can_use() || user.stat || (get_dist(user, src) > 1 || user.machine != src || user.blinded || !( user.canmove ) && !istype(user, /mob/living/silicon)))
|
if (!C.can_use() || user.stat || (get_dist(user, src) > 1 || user.machine != src || user.blinded || !( user.canmove ) && !istype(user, /mob/living/silicon)))
|
||||||
return 0
|
return 0
|
||||||
src.current = C
|
src.current = C
|
||||||
|
check_eye(user)
|
||||||
use_power(50)
|
use_power(50)
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
@@ -151,28 +187,28 @@
|
|||||||
circuit = null
|
circuit = null
|
||||||
|
|
||||||
/obj/machinery/computer/security/wooden_tv
|
/obj/machinery/computer/security/wooden_tv
|
||||||
name = "Security Cameras"
|
name = "security camera monitor"
|
||||||
desc = "An old TV hooked into the stations camera network."
|
desc = "An old TV hooked into the stations camera network."
|
||||||
icon_state = "security_det"
|
icon_state = "security_det"
|
||||||
circuit = null
|
circuit = null
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/security/mining
|
/obj/machinery/computer/security/mining
|
||||||
name = "Outpost Cameras"
|
name = "outpost camera monitor"
|
||||||
desc = "Used to access the various cameras on the outpost."
|
desc = "Used to access the various cameras on the outpost."
|
||||||
icon_state = "miningcameras"
|
icon_state = "miningcameras"
|
||||||
network = list("MINE")
|
network = list("MINE")
|
||||||
circuit = /obj/item/weapon/circuitboard/security/mining
|
circuit = /obj/item/weapon/circuitboard/security/mining
|
||||||
|
|
||||||
/obj/machinery/computer/security/engineering
|
/obj/machinery/computer/security/engineering
|
||||||
name = "Engineering Cameras"
|
name = "engineering camera monitor"
|
||||||
desc = "Used to monitor fires and breaches."
|
desc = "Used to monitor fires and breaches."
|
||||||
icon_state = "engineeringcameras"
|
icon_state = "engineeringcameras"
|
||||||
network = list("Engineering","Power Alarms","Atmosphere Alarms","Fire Alarms")
|
network = list("Engineering","Power Alarms","Atmosphere Alarms","Fire Alarms")
|
||||||
circuit = /obj/item/weapon/circuitboard/security/engineering
|
circuit = /obj/item/weapon/circuitboard/security/engineering
|
||||||
|
|
||||||
/obj/machinery/computer/security/nuclear
|
/obj/machinery/computer/security/nuclear
|
||||||
name = "Mission Monitor"
|
name = "head mounted camera monitor"
|
||||||
desc = "Used to access the built-in cameras in helmets."
|
desc = "Used to access the built-in cameras in helmets."
|
||||||
icon_state = "syndicam"
|
icon_state = "syndicam"
|
||||||
network = list("NUKE")
|
network = list("NUKE")
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
||||||
|
|
||||||
/obj/machinery/computer/card
|
/obj/machinery/computer/card
|
||||||
name = "Identification Computer"
|
name = "\improper ID card modification console"
|
||||||
desc = "Terminal for programming NanoTrasen employee ID cards to access parts of the station."
|
desc = "Terminal for programming NanoTrasen employee ID cards to access parts of the station."
|
||||||
icon_state = "id"
|
icon_state = "id"
|
||||||
req_access = list(access_change_ids)
|
req_access = list(access_change_ids)
|
||||||
@@ -282,7 +282,7 @@
|
|||||||
return 1
|
return 1
|
||||||
|
|
||||||
/obj/machinery/computer/card/centcom
|
/obj/machinery/computer/card/centcom
|
||||||
name = "CentCom Identification Computer"
|
name = "\improper CentCom ID card modification console"
|
||||||
circuit = "/obj/item/weapon/circuitboard/card/centcom"
|
circuit = "/obj/item/weapon/circuitboard/card/centcom"
|
||||||
req_access = list(access_cent_captain)
|
req_access = list(access_cent_captain)
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/obj/machinery/computer/cloning
|
/obj/machinery/computer/cloning
|
||||||
name = "Cloning console"
|
name = "cloning control console"
|
||||||
icon = 'icons/obj/computer.dmi'
|
icon = 'icons/obj/computer.dmi'
|
||||||
icon_state = "dna"
|
icon_state = "dna"
|
||||||
circuit = "/obj/item/weapon/circuitboard/cloning"
|
circuit = "/obj/item/weapon/circuitboard/cloning"
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
// The communications computer
|
// The communications computer
|
||||||
/obj/machinery/computer/communications
|
/obj/machinery/computer/communications
|
||||||
name = "Communications Console"
|
name = "command and communications console"
|
||||||
desc = "This can be used for various important functions. Still under developement."
|
desc = "Used to command and control the station. Can relay long-range communications."
|
||||||
icon_state = "comm"
|
icon_state = "comm"
|
||||||
req_access = list(access_heads)
|
req_access = list(access_heads)
|
||||||
circuit = "/obj/item/weapon/circuitboard/communications"
|
circuit = "/obj/item/weapon/circuitboard/communications"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/obj/machinery/computer/crew
|
/obj/machinery/computer/crew
|
||||||
name = "Crew monitoring computer"
|
name = "crew monitoring computer"
|
||||||
desc = "Used to monitor active health sensors built into most of the crew's uniforms."
|
desc = "Used to monitor active health sensors built into most of the crew's uniforms."
|
||||||
icon_state = "crew"
|
icon_state = "crew"
|
||||||
use_power = 1
|
use_power = 1
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
||||||
|
|
||||||
/obj/machinery/computer/hologram_comp
|
/obj/machinery/computer/hologram_comp
|
||||||
name = "Hologram Computer"
|
name = "hologram computer"
|
||||||
desc = "Rumoured to control holograms."
|
desc = "Rumoured to control holograms."
|
||||||
icon = 'icons/obj/stationobjs.dmi'
|
icon = 'icons/obj/stationobjs.dmi'
|
||||||
icon_state = "holo_console0"
|
icon_state = "holo_console0"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
||||||
|
|
||||||
/obj/machinery/computer/aiupload
|
/obj/machinery/computer/aiupload
|
||||||
name = "AI Upload"
|
name = "\improper AI upload console"
|
||||||
desc = "Used to upload laws to the AI."
|
desc = "Used to upload laws to the AI."
|
||||||
icon_state = "command"
|
icon_state = "command"
|
||||||
circuit = "/obj/item/weapon/circuitboard/aiupload"
|
circuit = "/obj/item/weapon/circuitboard/aiupload"
|
||||||
@@ -54,7 +54,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/borgupload
|
/obj/machinery/computer/borgupload
|
||||||
name = "Cyborg Upload"
|
name = "cyborg upload console"
|
||||||
desc = "Used to upload laws to Cyborgs."
|
desc = "Used to upload laws to Cyborgs."
|
||||||
icon_state = "command"
|
icon_state = "command"
|
||||||
circuit = "/obj/item/weapon/circuitboard/borgupload"
|
circuit = "/obj/item/weapon/circuitboard/borgupload"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
/obj/machinery/computer/lockdown
|
/obj/machinery/computer/lockdown
|
||||||
//for reference
|
//for reference
|
||||||
/*name = "Lockdown Control"
|
/*name = "lockdown control"
|
||||||
desc = "Used to control blast doors."
|
desc = "Used to control blast doors."
|
||||||
icon_state = "lockdown"
|
icon_state = "lockdown"
|
||||||
circuit = "/obj/item/weapon/circuitboard/lockdown"
|
circuit = "/obj/item/weapon/circuitboard/lockdown"
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
||||||
|
|
||||||
/obj/machinery/computer/med_data//TODO:SANITY
|
/obj/machinery/computer/med_data//TODO:SANITY
|
||||||
name = "Medical Records"
|
name = "medical records console"
|
||||||
desc = "This can be used to check medical records."
|
desc = "Used to view, edit and maintain medical records."
|
||||||
icon_state = "medcomp"
|
icon_state = "medcomp"
|
||||||
req_one_access = list(access_medical, access_forensics_lockers)
|
req_one_access = list(access_medical, access_forensics_lockers)
|
||||||
circuit = "/obj/item/weapon/circuitboard/med_data"
|
circuit = "/obj/item/weapon/circuitboard/med_data"
|
||||||
@@ -551,4 +551,4 @@
|
|||||||
/obj/machinery/computer/med_data/laptop
|
/obj/machinery/computer/med_data/laptop
|
||||||
name = "Medical Laptop"
|
name = "Medical Laptop"
|
||||||
desc = "Cheap Nanotrasen Laptop."
|
desc = "Cheap Nanotrasen Laptop."
|
||||||
icon_state = "medlaptop"
|
icon_state = "medlaptop"
|
||||||
|
|||||||
@@ -1,12 +1,8 @@
|
|||||||
|
|
||||||
// Allows you to monitor messages that passes the server.
|
// Allows you to monitor messages that passes the server.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/message_monitor
|
/obj/machinery/computer/message_monitor
|
||||||
name = "Message Monitor Console"
|
name = "messaging monitor console"
|
||||||
desc = "Used to Monitor the crew's messages, that are sent via PDA. Can also be used to view Request Console messages."
|
desc = "Used to access and maintain data on messaging servers. Allows you to view PDA and request console messages."
|
||||||
icon_state = "comm_logs"
|
icon_state = "comm_logs"
|
||||||
var/hack_icon = "comm_logsc"
|
var/hack_icon = "comm_logsc"
|
||||||
var/normal_icon = "comm_logs"
|
var/normal_icon = "comm_logs"
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
||||||
|
|
||||||
/obj/machinery/computer/pod
|
/obj/machinery/computer/pod
|
||||||
name = "Pod Launch Control"
|
name = "pod launch control console"
|
||||||
desc = "A controll for launching pods. Some people prefer firing Mechas."
|
desc = "A control console for launching pods. Some people prefer firing Mechas."
|
||||||
icon_state = "computer_generic"
|
icon_state = "computer_generic"
|
||||||
circuit = /obj/item/weapon/circuitboard/pod
|
circuit = /obj/item/weapon/circuitboard/pod
|
||||||
var/id = 1.0
|
var/id = 1.0
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
||||||
|
|
||||||
/obj/machinery/computer/prisoner
|
/obj/machinery/computer/prisoner
|
||||||
name = "Prisoner Management"
|
name = "prisoner management console"
|
||||||
icon = 'icons/obj/computer.dmi'
|
icon = 'icons/obj/computer.dmi'
|
||||||
icon_state = "explosive"
|
icon_state = "explosive"
|
||||||
req_access = list(access_armory)
|
req_access = list(access_armory)
|
||||||
@@ -100,5 +100,3 @@
|
|||||||
src.add_fingerprint(usr)
|
src.add_fingerprint(usr)
|
||||||
src.updateUsrDialog()
|
src.updateUsrDialog()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ var/prison_shuttle_time = 0
|
|||||||
var/prison_shuttle_timeleft = 0
|
var/prison_shuttle_timeleft = 0
|
||||||
|
|
||||||
/obj/machinery/computer/prison_shuttle
|
/obj/machinery/computer/prison_shuttle
|
||||||
name = "Prison Shuttle Console"
|
name = "prison shuttle control console"
|
||||||
icon = 'icons/obj/computer.dmi'
|
icon = 'icons/obj/computer.dmi'
|
||||||
icon_state = "shuttle"
|
icon_state = "shuttle"
|
||||||
req_access = list(access_security)
|
req_access = list(access_security)
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/robotics
|
/obj/machinery/computer/robotics
|
||||||
name = "Robotics Control"
|
name = "robotics control console"
|
||||||
desc = "Used to remotely lockdown or detonate linked Cyborgs."
|
desc = "Used to remotely lockdown or detonate linked cyborgs."
|
||||||
icon = 'icons/obj/computer.dmi'
|
icon = 'icons/obj/computer.dmi'
|
||||||
icon_state = "robot"
|
icon_state = "robot"
|
||||||
req_access = list(access_robotics)
|
req_access = list(access_robotics)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
||||||
|
|
||||||
/obj/machinery/computer/secure_data//TODO:SANITY
|
/obj/machinery/computer/secure_data//TODO:SANITY
|
||||||
name = "Security Records"
|
name = "security records console"
|
||||||
desc = "Used to view and edit personnel's security records"
|
desc = "Used to view, edit and maintain security records"
|
||||||
icon_state = "security"
|
icon_state = "security"
|
||||||
req_one_access = list(access_security, access_forensics_lockers)
|
req_one_access = list(access_security, access_forensics_lockers)
|
||||||
circuit = "/obj/item/weapon/circuitboard/secure_data"
|
circuit = "/obj/item/weapon/circuitboard/secure_data"
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
||||||
|
|
||||||
/obj/machinery/computer/skills//TODO:SANITY
|
/obj/machinery/computer/skills//TODO:SANITY
|
||||||
name = "Employment Records"
|
name = "employment records console"
|
||||||
desc = "Used to view personnel's employment records"
|
desc = "Used to view, edit and maintain employment records."
|
||||||
icon_state = "medlaptop"
|
icon_state = "medlaptop"
|
||||||
req_one_access = list(access_heads)
|
req_one_access = list(access_heads)
|
||||||
circuit = "/obj/item/weapon/circuitboard/skills"
|
circuit = "/obj/item/weapon/circuitboard/skills"
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ var/specops_shuttle_time = 0
|
|||||||
var/specops_shuttle_timeleft = 0
|
var/specops_shuttle_timeleft = 0
|
||||||
|
|
||||||
/obj/machinery/computer/specops_shuttle
|
/obj/machinery/computer/specops_shuttle
|
||||||
name = "Spec. Ops. Shuttle Console"
|
name = "special operations shuttle control console"
|
||||||
icon = 'icons/obj/computer.dmi'
|
icon = 'icons/obj/computer.dmi'
|
||||||
icon_state = "shuttle"
|
icon_state = "shuttle"
|
||||||
req_access = list(access_cent_specops)
|
req_access = list(access_cent_specops)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
/obj/machinery/computer/station_alert
|
/obj/machinery/computer/station_alert
|
||||||
name = "Station Alert Computer"
|
name = "Station Alert Console"
|
||||||
desc = "Used to access the station's automated alert system."
|
desc = "Used to access the station's automated alert system."
|
||||||
icon_state = "alert:0"
|
icon_state = "alert:0"
|
||||||
circuit = "/obj/item/weapon/circuitboard/stationalert"
|
circuit = "/obj/item/weapon/circuitboard/stationalert"
|
||||||
|
|||||||
416
code/game/machinery/computer/supply.dm
Normal file
416
code/game/machinery/computer/supply.dm
Normal file
@@ -0,0 +1,416 @@
|
|||||||
|
/obj/machinery/computer/supplycomp
|
||||||
|
name = "supply control console"
|
||||||
|
icon = 'icons/obj/computer.dmi'
|
||||||
|
icon_state = "supply"
|
||||||
|
req_access = list(access_cargo)
|
||||||
|
circuit = "/obj/item/weapon/circuitboard/supplycomp"
|
||||||
|
var/temp = null
|
||||||
|
var/reqtime = 0 //Cooldown for requisitions - Quarxink
|
||||||
|
var/hacked = 0
|
||||||
|
var/can_order_contraband = 0
|
||||||
|
var/last_viewed_group = "categories"
|
||||||
|
|
||||||
|
/obj/machinery/computer/ordercomp
|
||||||
|
name = "supply ordering console"
|
||||||
|
icon = 'icons/obj/computer.dmi'
|
||||||
|
icon_state = "request"
|
||||||
|
circuit = "/obj/item/weapon/circuitboard/ordercomp"
|
||||||
|
var/temp = null
|
||||||
|
var/reqtime = 0 //Cooldown for requisitions - Quarxink
|
||||||
|
var/last_viewed_group = "categories"
|
||||||
|
|
||||||
|
/obj/machinery/computer/ordercomp/attack_ai(var/mob/user as mob)
|
||||||
|
return attack_hand(user)
|
||||||
|
|
||||||
|
/obj/machinery/computer/supplycomp/attack_ai(var/mob/user as mob)
|
||||||
|
return attack_hand(user)
|
||||||
|
|
||||||
|
/obj/machinery/computer/ordercomp/attack_hand(var/mob/user as mob)
|
||||||
|
if(..())
|
||||||
|
return
|
||||||
|
user.set_machine(src)
|
||||||
|
var/dat
|
||||||
|
if(temp)
|
||||||
|
dat = temp
|
||||||
|
else
|
||||||
|
var/datum/shuttle/ferry/supply/shuttle = supply_controller.shuttle
|
||||||
|
if (shuttle)
|
||||||
|
dat += {"<BR><B>Supply shuttle</B><HR>
|
||||||
|
Location: [shuttle.has_arrive_time() ? "Moving to station ([shuttle.eta_minutes()] Mins.)":shuttle.at_station() ? "Docked":"Away"]<BR>
|
||||||
|
<HR>Supply points: [supply_controller.points]<BR>
|
||||||
|
<BR>\n<A href='?src=\ref[src];order=categories'>Request items</A><BR><BR>
|
||||||
|
<A href='?src=\ref[src];vieworders=1'>View approved orders</A><BR><BR>
|
||||||
|
<A href='?src=\ref[src];viewrequests=1'>View requests</A><BR><BR>
|
||||||
|
<A href='?src=\ref[user];mach_close=computer'>Close</A>"}
|
||||||
|
|
||||||
|
user << browse(dat, "window=computer;size=575x450")
|
||||||
|
onclose(user, "computer")
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/machinery/computer/ordercomp/Topic(href, href_list)
|
||||||
|
if(..())
|
||||||
|
return
|
||||||
|
|
||||||
|
if( isturf(loc) && (in_range(src, usr) || istype(usr, /mob/living/silicon)) )
|
||||||
|
usr.set_machine(src)
|
||||||
|
|
||||||
|
if(href_list["order"])
|
||||||
|
if(href_list["order"] == "categories")
|
||||||
|
//all_supply_groups
|
||||||
|
//Request what?
|
||||||
|
last_viewed_group = "categories"
|
||||||
|
temp = "<b>Supply points: [supply_controller.points]</b><BR>"
|
||||||
|
temp += "<A href='?src=\ref[src];mainmenu=1'>Main Menu</A><HR><BR><BR>"
|
||||||
|
temp += "<b>Select a category</b><BR><BR>"
|
||||||
|
for(var/supply_group_name in all_supply_groups )
|
||||||
|
temp += "<A href='?src=\ref[src];order=[supply_group_name]'>[supply_group_name]</A><BR>"
|
||||||
|
else
|
||||||
|
last_viewed_group = href_list["order"]
|
||||||
|
temp = "<b>Supply points: [supply_controller.points]</b><BR>"
|
||||||
|
temp += "<A href='?src=\ref[src];order=categories'>Back to all categories</A><HR><BR><BR>"
|
||||||
|
temp += "<b>Request from: [last_viewed_group]</b><BR><BR>"
|
||||||
|
for(var/supply_name in supply_controller.supply_packs )
|
||||||
|
var/datum/supply_packs/N = supply_controller.supply_packs[supply_name]
|
||||||
|
if(N.hidden || N.contraband || N.group != last_viewed_group) continue //Have to send the type instead of a reference to
|
||||||
|
temp += "<A href='?src=\ref[src];doorder=[supply_name]'>[supply_name]</A> Cost: [N.cost]<BR>" //the obj because it would get caught by the garbage
|
||||||
|
|
||||||
|
else if (href_list["doorder"])
|
||||||
|
if(world.time < reqtime)
|
||||||
|
for(var/mob/V in hearers(src))
|
||||||
|
V.show_message("<b>[src]</b>'s monitor flashes, \"[world.time - reqtime] seconds remaining until another requisition form may be printed.\"")
|
||||||
|
return
|
||||||
|
|
||||||
|
//Find the correct supply_pack datum
|
||||||
|
var/datum/supply_packs/P = supply_controller.supply_packs[href_list["doorder"]]
|
||||||
|
if(!istype(P)) return
|
||||||
|
|
||||||
|
var/timeout = world.time + 600
|
||||||
|
var/reason = copytext(sanitize(input(usr,"Reason:","Why do you require this item?","") as null|text),1,MAX_MESSAGE_LEN)
|
||||||
|
if(world.time > timeout) return
|
||||||
|
if(!reason) return
|
||||||
|
|
||||||
|
var/idname = "*None Provided*"
|
||||||
|
var/idrank = "*None Provided*"
|
||||||
|
if(ishuman(usr))
|
||||||
|
var/mob/living/carbon/human/H = usr
|
||||||
|
idname = H.get_authentification_name()
|
||||||
|
idrank = H.get_assignment()
|
||||||
|
else if(issilicon(usr))
|
||||||
|
idname = usr.real_name
|
||||||
|
|
||||||
|
supply_controller.ordernum++
|
||||||
|
var/obj/item/weapon/paper/reqform = new /obj/item/weapon/paper(loc)
|
||||||
|
reqform.name = "Requisition Form - [P.name]"
|
||||||
|
reqform.info += "<h3>[station_name] Supply Requisition Form</h3><hr>"
|
||||||
|
reqform.info += "INDEX: #[supply_controller.ordernum]<br>"
|
||||||
|
reqform.info += "REQUESTED BY: [idname]<br>"
|
||||||
|
reqform.info += "RANK: [idrank]<br>"
|
||||||
|
reqform.info += "REASON: [reason]<br>"
|
||||||
|
reqform.info += "SUPPLY CRATE TYPE: [P.name]<br>"
|
||||||
|
reqform.info += "ACCESS RESTRICTION: [replacetext(get_access_desc(P.access))]<br>"
|
||||||
|
reqform.info += "CONTENTS:<br>"
|
||||||
|
reqform.info += P.manifest
|
||||||
|
reqform.info += "<hr>"
|
||||||
|
reqform.info += "STAMP BELOW TO APPROVE THIS REQUISITION:<br>"
|
||||||
|
|
||||||
|
reqform.update_icon() //Fix for appearing blank when printed.
|
||||||
|
reqtime = (world.time + 5) % 1e5
|
||||||
|
|
||||||
|
//make our supply_order datum
|
||||||
|
var/datum/supply_order/O = new /datum/supply_order()
|
||||||
|
O.ordernum = supply_controller.ordernum
|
||||||
|
O.object = P
|
||||||
|
O.orderedby = idname
|
||||||
|
supply_controller.requestlist += O
|
||||||
|
|
||||||
|
temp = "Thanks for your request. The cargo team will process it as soon as possible.<BR>"
|
||||||
|
temp += "<BR><A href='?src=\ref[src];order=[last_viewed_group]'>Back</A> <A href='?src=\ref[src];mainmenu=1'>Main Menu</A>"
|
||||||
|
|
||||||
|
else if (href_list["vieworders"])
|
||||||
|
temp = "Current approved orders: <BR><BR>"
|
||||||
|
for(var/S in supply_controller.shoppinglist)
|
||||||
|
var/datum/supply_order/SO = S
|
||||||
|
temp += "[SO.object.name] approved by [SO.orderedby] [SO.comment ? "([SO.comment])":""]<BR>"
|
||||||
|
temp += "<BR><A href='?src=\ref[src];mainmenu=1'>OK</A>"
|
||||||
|
|
||||||
|
else if (href_list["viewrequests"])
|
||||||
|
temp = "Current requests: <BR><BR>"
|
||||||
|
for(var/S in supply_controller.requestlist)
|
||||||
|
var/datum/supply_order/SO = S
|
||||||
|
temp += "#[SO.ordernum] - [SO.object.name] requested by [SO.orderedby]<BR>"
|
||||||
|
temp += "<BR><A href='?src=\ref[src];mainmenu=1'>OK</A>"
|
||||||
|
|
||||||
|
else if (href_list["mainmenu"])
|
||||||
|
temp = null
|
||||||
|
|
||||||
|
add_fingerprint(usr)
|
||||||
|
updateUsrDialog()
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/machinery/computer/supplycomp/attack_hand(var/mob/user as mob)
|
||||||
|
if(!allowed(user))
|
||||||
|
user << "\red Access Denied."
|
||||||
|
return
|
||||||
|
|
||||||
|
if(..())
|
||||||
|
return
|
||||||
|
user.set_machine(src)
|
||||||
|
post_signal("supply")
|
||||||
|
var/dat
|
||||||
|
if (temp)
|
||||||
|
dat = temp
|
||||||
|
else
|
||||||
|
var/datum/shuttle/ferry/supply/shuttle = supply_controller.shuttle
|
||||||
|
if (shuttle)
|
||||||
|
dat += "<BR><B>Supply shuttle</B><HR>"
|
||||||
|
dat += "\nLocation: "
|
||||||
|
if (shuttle.has_arrive_time())
|
||||||
|
dat += "In transit ([shuttle.eta_minutes()] Mins.)<BR>"
|
||||||
|
else
|
||||||
|
if (shuttle.at_station())
|
||||||
|
if (shuttle.docking_controller)
|
||||||
|
switch(shuttle.docking_controller.get_docking_status())
|
||||||
|
if ("docked") dat += "Docked at station<BR>"
|
||||||
|
if ("undocked") dat += "Undocked from station<BR>"
|
||||||
|
if ("docking") dat += "Docking with station [shuttle.can_force()? "<span class='warning'><A href='?src=\ref[src];force_send=1'>Force Launch</A></span>" : ""]<BR>"
|
||||||
|
if ("undocking") dat += "Undocking from station [shuttle.can_force()? "<span class='warning'><A href='?src=\ref[src];force_send=1'>Force Launch</A></span>" : ""]<BR>"
|
||||||
|
else
|
||||||
|
dat += "Station<BR>"
|
||||||
|
|
||||||
|
if (shuttle.can_launch())
|
||||||
|
dat += "<A href='?src=\ref[src];send=1'>Send away</A>"
|
||||||
|
else if (shuttle.can_cancel())
|
||||||
|
dat += "<A href='?src=\ref[src];cancel_send=1'>Cancel launch</A>"
|
||||||
|
else
|
||||||
|
dat += "*Shuttle is busy*"
|
||||||
|
dat += "<BR>\n<BR>"
|
||||||
|
else
|
||||||
|
dat += "Away<BR>"
|
||||||
|
if (shuttle.can_launch())
|
||||||
|
dat += "<A href='?src=\ref[src];send=1'>Request supply shuttle</A>"
|
||||||
|
else if (shuttle.can_cancel())
|
||||||
|
dat += "<A href='?src=\ref[src];cancel_send=1'>Cancel request</A>"
|
||||||
|
else
|
||||||
|
dat += "*Shuttle is busy*"
|
||||||
|
dat += "<BR>\n<BR>"
|
||||||
|
|
||||||
|
|
||||||
|
dat += {"<HR>\nSupply points: [supply_controller.points]<BR>\n<BR>
|
||||||
|
\n<A href='?src=\ref[src];order=categories'>Order items</A><BR>\n<BR>
|
||||||
|
\n<A href='?src=\ref[src];viewrequests=1'>View requests</A><BR>\n<BR>
|
||||||
|
\n<A href='?src=\ref[src];vieworders=1'>View orders</A><BR>\n<BR>
|
||||||
|
\n<A href='?src=\ref[user];mach_close=computer'>Close</A>"}
|
||||||
|
|
||||||
|
|
||||||
|
user << browse(dat, "window=computer;size=575x450")
|
||||||
|
onclose(user, "computer")
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/machinery/computer/supplycomp/attackby(I as obj, user as mob)
|
||||||
|
if(istype(I,/obj/item/weapon/card/emag) && !hacked)
|
||||||
|
user << "\blue Special supplies unlocked."
|
||||||
|
hacked = 1
|
||||||
|
return
|
||||||
|
else
|
||||||
|
..()
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/machinery/computer/supplycomp/Topic(href, href_list)
|
||||||
|
if(!supply_controller)
|
||||||
|
world.log << "## ERROR: Eek. The supply_controller controller datum is missing somehow."
|
||||||
|
return
|
||||||
|
var/datum/shuttle/ferry/supply/shuttle = supply_controller.shuttle
|
||||||
|
if (!shuttle)
|
||||||
|
world.log << "## ERROR: Eek. The supply/shuttle datum is missing somehow."
|
||||||
|
return
|
||||||
|
if(..())
|
||||||
|
return
|
||||||
|
|
||||||
|
if(isturf(loc) && ( in_range(src, usr) || istype(usr, /mob/living/silicon) ) )
|
||||||
|
usr.set_machine(src)
|
||||||
|
|
||||||
|
//Calling the shuttle
|
||||||
|
if(href_list["send"])
|
||||||
|
if(shuttle.at_station())
|
||||||
|
if (shuttle.forbidden_atoms_check())
|
||||||
|
temp = "For safety reasons the automated supply shuttle cannot transport live organisms, classified nuclear weaponry or homing beacons.<BR><BR><A href='?src=\ref[src];mainmenu=1'>OK</A>"
|
||||||
|
else
|
||||||
|
shuttle.launch(src)
|
||||||
|
temp = "Initiating launch sequence. \[<span class='warning'><A href='?src=\ref[src];force_send=1'>Force Launch</A></span>\]<BR><BR><A href='?src=\ref[src];mainmenu=1'>OK</A>"
|
||||||
|
else
|
||||||
|
shuttle.launch(src)
|
||||||
|
temp = "The supply shuttle has been called and will arrive in approximately [round(supply_controller.movetime/600,1)] minutes.<BR><BR><A href='?src=\ref[src];mainmenu=1'>OK</A>"
|
||||||
|
post_signal("supply")
|
||||||
|
|
||||||
|
if (href_list["force_send"])
|
||||||
|
shuttle.force_launch(src)
|
||||||
|
|
||||||
|
if (href_list["cancel_send"])
|
||||||
|
shuttle.cancel_launch(src)
|
||||||
|
|
||||||
|
else if (href_list["order"])
|
||||||
|
//if(!shuttle.idle()) return //this shouldn't be necessary it seems
|
||||||
|
if(href_list["order"] == "categories")
|
||||||
|
//all_supply_groups
|
||||||
|
//Request what?
|
||||||
|
last_viewed_group = "categories"
|
||||||
|
temp = "<b>Supply points: [supply_controller.points]</b><BR>"
|
||||||
|
temp += "<A href='?src=\ref[src];mainmenu=1'>Main Menu</A><HR><BR><BR>"
|
||||||
|
temp += "<b>Select a category</b><BR><BR>"
|
||||||
|
for(var/supply_group_name in all_supply_groups )
|
||||||
|
temp += "<A href='?src=\ref[src];order=[supply_group_name]'>[supply_group_name]</A><BR>"
|
||||||
|
else
|
||||||
|
last_viewed_group = href_list["order"]
|
||||||
|
temp = "<b>Supply points: [supply_controller.points]</b><BR>"
|
||||||
|
temp += "<A href='?src=\ref[src];order=categories'>Back to all categories</A><HR><BR><BR>"
|
||||||
|
temp += "<b>Request from: [last_viewed_group]</b><BR><BR>"
|
||||||
|
for(var/supply_name in supply_controller.supply_packs )
|
||||||
|
var/datum/supply_packs/N = supply_controller.supply_packs[supply_name]
|
||||||
|
if((N.hidden && !hacked) || (N.contraband && !can_order_contraband) || N.group != last_viewed_group) continue //Have to send the type instead of a reference to
|
||||||
|
temp += "<A href='?src=\ref[src];doorder=[supply_name]'>[supply_name]</A> Cost: [N.cost]<BR>" //the obj because it would get caught by the garbage
|
||||||
|
|
||||||
|
/*temp = "Supply points: [supply_controller.points]<BR><HR><BR>Request what?<BR><BR>"
|
||||||
|
|
||||||
|
for(var/supply_name in supply_controller.supply_packs )
|
||||||
|
var/datum/supply_packs/N = supply_controller.supply_packs[supply_name]
|
||||||
|
if(N.hidden && !hacked) continue
|
||||||
|
if(N.contraband && !can_order_contraband) continue
|
||||||
|
temp += "<A href='?src=\ref[src];doorder=[supply_name]'>[supply_name]</A> Cost: [N.cost]<BR>" //the obj because it would get caught by the garbage
|
||||||
|
temp += "<BR><A href='?src=\ref[src];mainmenu=1'>OK</A>"*/
|
||||||
|
|
||||||
|
else if (href_list["doorder"])
|
||||||
|
if(world.time < reqtime)
|
||||||
|
for(var/mob/V in hearers(src))
|
||||||
|
V.show_message("<b>[src]</b>'s monitor flashes, \"[world.time - reqtime] seconds remaining until another requisition form may be printed.\"")
|
||||||
|
return
|
||||||
|
|
||||||
|
//Find the correct supply_pack datum
|
||||||
|
var/datum/supply_packs/P = supply_controller.supply_packs[href_list["doorder"]]
|
||||||
|
if(!istype(P)) return
|
||||||
|
|
||||||
|
var/timeout = world.time + 600
|
||||||
|
var/reason = copytext(sanitize(input(usr,"Reason:","Why do you require this item?","") as null|text),1,MAX_MESSAGE_LEN)
|
||||||
|
if(world.time > timeout) return
|
||||||
|
if(!reason) return
|
||||||
|
|
||||||
|
var/idname = "*None Provided*"
|
||||||
|
var/idrank = "*None Provided*"
|
||||||
|
if(ishuman(usr))
|
||||||
|
var/mob/living/carbon/human/H = usr
|
||||||
|
idname = H.get_authentification_name()
|
||||||
|
idrank = H.get_assignment()
|
||||||
|
else if(issilicon(usr))
|
||||||
|
idname = usr.real_name
|
||||||
|
|
||||||
|
supply_controller.ordernum++
|
||||||
|
var/obj/item/weapon/paper/reqform = new /obj/item/weapon/paper(loc)
|
||||||
|
reqform.name = "Requisition Form - [P.name]"
|
||||||
|
reqform.info += "<h3>[station_name] Supply Requisition Form</h3><hr>"
|
||||||
|
reqform.info += "INDEX: #[supply_controller.ordernum]<br>"
|
||||||
|
reqform.info += "REQUESTED BY: [idname]<br>"
|
||||||
|
reqform.info += "RANK: [idrank]<br>"
|
||||||
|
reqform.info += "REASON: [reason]<br>"
|
||||||
|
reqform.info += "SUPPLY CRATE TYPE: [P.name]<br>"
|
||||||
|
reqform.info += "ACCESS RESTRICTION: [replacetext(get_access_desc(P.access))]<br>"
|
||||||
|
reqform.info += "CONTENTS:<br>"
|
||||||
|
reqform.info += P.manifest
|
||||||
|
reqform.info += "<hr>"
|
||||||
|
reqform.info += "STAMP BELOW TO APPROVE THIS REQUISITION:<br>"
|
||||||
|
|
||||||
|
reqform.update_icon() //Fix for appearing blank when printed.
|
||||||
|
reqtime = (world.time + 5) % 1e5
|
||||||
|
|
||||||
|
//make our supply_order datum
|
||||||
|
var/datum/supply_order/O = new /datum/supply_order()
|
||||||
|
O.ordernum = supply_controller.ordernum
|
||||||
|
O.object = P
|
||||||
|
O.orderedby = idname
|
||||||
|
supply_controller.requestlist += O
|
||||||
|
|
||||||
|
temp = "Order request placed.<BR>"
|
||||||
|
temp += "<BR><A href='?src=\ref[src];order=[last_viewed_group]'>Back</A> | <A href='?src=\ref[src];mainmenu=1'>Main Menu</A> | <A href='?src=\ref[src];confirmorder=[O.ordernum]'>Authorize Order</A>"
|
||||||
|
|
||||||
|
else if(href_list["confirmorder"])
|
||||||
|
//Find the correct supply_order datum
|
||||||
|
var/ordernum = text2num(href_list["confirmorder"])
|
||||||
|
var/datum/supply_order/O
|
||||||
|
var/datum/supply_packs/P
|
||||||
|
temp = "Invalid Request"
|
||||||
|
for(var/i=1, i<=supply_controller.requestlist.len, i++)
|
||||||
|
var/datum/supply_order/SO = supply_controller.requestlist[i]
|
||||||
|
if(SO.ordernum == ordernum)
|
||||||
|
O = SO
|
||||||
|
P = O.object
|
||||||
|
if(supply_controller.points >= P.cost)
|
||||||
|
supply_controller.requestlist.Cut(i,i+1)
|
||||||
|
supply_controller.points -= P.cost
|
||||||
|
supply_controller.shoppinglist += O
|
||||||
|
temp = "Thanks for your order.<BR>"
|
||||||
|
temp += "<BR><A href='?src=\ref[src];viewrequests=1'>Back</A> <A href='?src=\ref[src];mainmenu=1'>Main Menu</A>"
|
||||||
|
else
|
||||||
|
temp = "Not enough supply points.<BR>"
|
||||||
|
temp += "<BR><A href='?src=\ref[src];viewrequests=1'>Back</A> <A href='?src=\ref[src];mainmenu=1'>Main Menu</A>"
|
||||||
|
break
|
||||||
|
|
||||||
|
else if (href_list["vieworders"])
|
||||||
|
temp = "Current approved orders: <BR><BR>"
|
||||||
|
for(var/S in supply_controller.shoppinglist)
|
||||||
|
var/datum/supply_order/SO = S
|
||||||
|
temp += "#[SO.ordernum] - [SO.object.name] approved by [SO.orderedby][SO.comment ? " ([SO.comment])":""]<BR>"// <A href='?src=\ref[src];cancelorder=[S]'>(Cancel)</A><BR>"
|
||||||
|
temp += "<BR><A href='?src=\ref[src];mainmenu=1'>OK</A>"
|
||||||
|
/*
|
||||||
|
else if (href_list["cancelorder"])
|
||||||
|
var/datum/supply_order/remove_supply = href_list["cancelorder"]
|
||||||
|
supply_shuttle_shoppinglist -= remove_supply
|
||||||
|
supply_shuttle_points += remove_supply.object.cost
|
||||||
|
temp += "Canceled: [remove_supply.object.name]<BR><BR><BR>"
|
||||||
|
|
||||||
|
for(var/S in supply_shuttle_shoppinglist)
|
||||||
|
var/datum/supply_order/SO = S
|
||||||
|
temp += "[SO.object.name] approved by [SO.orderedby][SO.comment ? " ([SO.comment])":""] <A href='?src=\ref[src];cancelorder=[S]'>(Cancel)</A><BR>"
|
||||||
|
temp += "<BR><A href='?src=\ref[src];mainmenu=1'>OK</A>"
|
||||||
|
*/
|
||||||
|
else if (href_list["viewrequests"])
|
||||||
|
temp = "Current requests: <BR><BR>"
|
||||||
|
for(var/S in supply_controller.requestlist)
|
||||||
|
var/datum/supply_order/SO = S
|
||||||
|
temp += "#[SO.ordernum] - [SO.object.name] requested by [SO.orderedby] <A href='?src=\ref[src];confirmorder=[SO.ordernum]'>Approve</A> <A href='?src=\ref[src];rreq=[SO.ordernum]'>Remove</A><BR>"
|
||||||
|
|
||||||
|
temp += "<BR><A href='?src=\ref[src];clearreq=1'>Clear list</A>"
|
||||||
|
temp += "<BR><A href='?src=\ref[src];mainmenu=1'>OK</A>"
|
||||||
|
|
||||||
|
else if (href_list["rreq"])
|
||||||
|
var/ordernum = text2num(href_list["rreq"])
|
||||||
|
temp = "Invalid Request.<BR>"
|
||||||
|
for(var/i=1, i<=supply_controller.requestlist.len, i++)
|
||||||
|
var/datum/supply_order/SO = supply_controller.requestlist[i]
|
||||||
|
if(SO.ordernum == ordernum)
|
||||||
|
supply_controller.requestlist.Cut(i,i+1)
|
||||||
|
temp = "Request removed.<BR>"
|
||||||
|
break
|
||||||
|
temp += "<BR><A href='?src=\ref[src];viewrequests=1'>Back</A> <A href='?src=\ref[src];mainmenu=1'>Main Menu</A>"
|
||||||
|
|
||||||
|
else if (href_list["clearreq"])
|
||||||
|
supply_controller.requestlist.Cut()
|
||||||
|
temp = "List cleared.<BR>"
|
||||||
|
temp += "<BR><A href='?src=\ref[src];mainmenu=1'>OK</A>"
|
||||||
|
|
||||||
|
else if (href_list["mainmenu"])
|
||||||
|
temp = null
|
||||||
|
|
||||||
|
add_fingerprint(usr)
|
||||||
|
updateUsrDialog()
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/machinery/computer/supplycomp/proc/post_signal(var/command)
|
||||||
|
|
||||||
|
var/datum/radio_frequency/frequency = radio_controller.return_frequency(1435)
|
||||||
|
|
||||||
|
if(!frequency) return
|
||||||
|
|
||||||
|
var/datum/signal/status_signal = new
|
||||||
|
status_signal.source = src
|
||||||
|
status_signal.transmission_method = 1
|
||||||
|
status_signal.data["command"] = command
|
||||||
|
|
||||||
|
frequency.post_signal(src, status_signal)
|
||||||
@@ -11,7 +11,7 @@ var/syndicate_elite_shuttle_time = 0
|
|||||||
var/syndicate_elite_shuttle_timeleft = 0
|
var/syndicate_elite_shuttle_timeleft = 0
|
||||||
|
|
||||||
/obj/machinery/computer/syndicate_elite_shuttle
|
/obj/machinery/computer/syndicate_elite_shuttle
|
||||||
name = "Elite Syndicate Squad Shuttle Console"
|
name = "elite syndicate squad shuttle control console"
|
||||||
icon = 'icons/obj/computer.dmi'
|
icon = 'icons/obj/computer.dmi'
|
||||||
icon_state = "syndishuttle"
|
icon_state = "syndishuttle"
|
||||||
req_access = list(access_cent_specops)
|
req_access = list(access_cent_specops)
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
||||||
|
|
||||||
|
//Circuit boards are in /code/game/objects/items/weapons/circuitboards/machinery/
|
||||||
|
|
||||||
/obj/machinery/constructable_frame //Made into a seperate type to make future revisions easier.
|
/obj/machinery/constructable_frame //Made into a seperate type to make future revisions easier.
|
||||||
name = "machine frame"
|
name = "machine frame"
|
||||||
icon = 'icons/obj/stock_parts.dmi'
|
icon = 'icons/obj/stock_parts.dmi'
|
||||||
@@ -113,7 +115,7 @@
|
|||||||
break
|
break
|
||||||
if(component_check)
|
if(component_check)
|
||||||
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
|
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||||
var/obj/machinery/new_machine = new src.circuit.build_path(src.loc)
|
var/obj/machinery/new_machine = new src.circuit.build_path(src.loc, src.dir)
|
||||||
new_machine.component_parts.Cut()
|
new_machine.component_parts.Cut()
|
||||||
src.circuit.construct(new_machine)
|
src.circuit.construct(new_machine)
|
||||||
for(var/obj/O in src)
|
for(var/obj/O in src)
|
||||||
@@ -154,260 +156,3 @@
|
|||||||
user << desc
|
user << desc
|
||||||
if(P && P.loc != src && !istype(P, /obj/item/stack/cable_coil))
|
if(P && P.loc != src && !istype(P, /obj/item/stack/cable_coil))
|
||||||
user << "\red You cannot add that component to the machine!"
|
user << "\red You cannot add that component to the machine!"
|
||||||
|
|
||||||
|
|
||||||
//Machine Frame Circuit Boards
|
|
||||||
/*Common Parts: Parts List: Ignitor, Timer, Infra-red laser, Infra-red sensor, t_scanner, Capacitor, Valve, sensor unit,
|
|
||||||
micro-manipulator, console screen, beaker, Microlaser, matter bin, power cells.
|
|
||||||
Note: Once everything is added to the public areas, will add materials to circuit boards since autolathe won't be able
|
|
||||||
to destroy them and players will be able to make replacements.
|
|
||||||
*/
|
|
||||||
/obj/item/weapon/circuitboard/destructive_analyzer
|
|
||||||
name = "Circuit board (Destructive Analyzer)"
|
|
||||||
build_path = "/obj/machinery/r_n_d/destructive_analyzer"
|
|
||||||
board_type = "machine"
|
|
||||||
origin_tech = "magnets=2;engineering=2;programming=2"
|
|
||||||
frame_desc = "Requires 1 Scanning Module, 1 Micro Manipulator, and 1 Micro-Laser."
|
|
||||||
req_components = list(
|
|
||||||
"/obj/item/weapon/stock_parts/scanning_module" = 1,
|
|
||||||
"/obj/item/weapon/stock_parts/manipulator" = 1,
|
|
||||||
"/obj/item/weapon/stock_parts/micro_laser" = 1)
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/autolathe
|
|
||||||
name = "Circuit board (Autolathe)"
|
|
||||||
build_path = "/obj/machinery/autolathe"
|
|
||||||
board_type = "machine"
|
|
||||||
origin_tech = "engineering=2;programming=2"
|
|
||||||
frame_desc = "Requires 3 Matter Bins, 1 Micro Manipulator, and 1 Console Screen."
|
|
||||||
req_components = list(
|
|
||||||
"/obj/item/weapon/stock_parts/matter_bin" = 3,
|
|
||||||
"/obj/item/weapon/stock_parts/manipulator" = 1,
|
|
||||||
"/obj/item/weapon/stock_parts/console_screen" = 1)
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/protolathe
|
|
||||||
name = "Circuit board (Protolathe)"
|
|
||||||
build_path = "/obj/machinery/r_n_d/protolathe"
|
|
||||||
board_type = "machine"
|
|
||||||
origin_tech = "engineering=2;programming=2"
|
|
||||||
frame_desc = "Requires 2 Matter Bins, 2 Micro Manipulators, and 2 Beakers."
|
|
||||||
req_components = list(
|
|
||||||
"/obj/item/weapon/stock_parts/matter_bin" = 2,
|
|
||||||
"/obj/item/weapon/stock_parts/manipulator" = 2,
|
|
||||||
"/obj/item/weapon/reagent_containers/glass/beaker" = 2)
|
|
||||||
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/circuit_imprinter
|
|
||||||
name = "Circuit board (Circuit Imprinter)"
|
|
||||||
build_path = "/obj/machinery/r_n_d/circuit_imprinter"
|
|
||||||
board_type = "machine"
|
|
||||||
origin_tech = "engineering=2;programming=2"
|
|
||||||
frame_desc = "Requires 1 Matter Bin, 1 Micro Manipulator, and 2 Beakers."
|
|
||||||
req_components = list(
|
|
||||||
"/obj/item/weapon/stock_parts/matter_bin" = 1,
|
|
||||||
"/obj/item/weapon/stock_parts/manipulator" = 1,
|
|
||||||
"/obj/item/weapon/reagent_containers/glass/beaker" = 2)
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/pacman
|
|
||||||
name = "Circuit Board (PACMAN-type Generator)"
|
|
||||||
build_path = "/obj/machinery/power/port_gen/pacman"
|
|
||||||
board_type = "machine"
|
|
||||||
origin_tech = "programming=3;powerstorage=3;phorontech=3;engineering=3"
|
|
||||||
frame_desc = "Requires 1 Matter Bin, 1 Micro-Laser, 2 Pieces of Cable, and 1 Capacitor."
|
|
||||||
req_components = list(
|
|
||||||
"/obj/item/weapon/stock_parts/matter_bin" = 1,
|
|
||||||
"/obj/item/weapon/stock_parts/micro_laser" = 1,
|
|
||||||
"/obj/item/stack/cable_coil" = 2,
|
|
||||||
"/obj/item/weapon/stock_parts/capacitor" = 1)
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/pacman/super
|
|
||||||
name = "Circuit Board (SUPERPACMAN-type Generator)"
|
|
||||||
build_path = "/obj/machinery/power/port_gen/pacman/super"
|
|
||||||
origin_tech = "programming=3;powerstorage=4;engineering=4"
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/pacman/mrs
|
|
||||||
name = "Circuit Board (MRSPACMAN-type Generator)"
|
|
||||||
build_path = "/obj/machinery/power/port_gen/pacman/mrs"
|
|
||||||
origin_tech = "programming=3;powerstorage=5;engineering=5"
|
|
||||||
|
|
||||||
obj/item/weapon/circuitboard/rdserver
|
|
||||||
name = "Circuit Board (R&D Server)"
|
|
||||||
build_path = "/obj/machinery/r_n_d/server"
|
|
||||||
board_type = "machine"
|
|
||||||
origin_tech = "programming=3"
|
|
||||||
frame_desc = "Requires 2 pieces of cable, and 1 Scanning Module."
|
|
||||||
req_components = list(
|
|
||||||
"/obj/item/stack/cable_coil" = 2,
|
|
||||||
"/obj/item/weapon/stock_parts/scanning_module" = 1)
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/mechfab
|
|
||||||
name = "Circuit board (Exosuit Fabricator)"
|
|
||||||
build_path = "/obj/machinery/mecha_part_fabricator"
|
|
||||||
board_type = "machine"
|
|
||||||
origin_tech = "programming=3;engineering=3"
|
|
||||||
frame_desc = "Requires 2 Matter Bins, 1 Micro Manipulator, 1 Micro-Laser and 1 Console Screen."
|
|
||||||
req_components = list(
|
|
||||||
"/obj/item/weapon/stock_parts/matter_bin" = 2,
|
|
||||||
"/obj/item/weapon/stock_parts/manipulator" = 1,
|
|
||||||
"/obj/item/weapon/stock_parts/micro_laser" = 1,
|
|
||||||
"/obj/item/weapon/stock_parts/console_screen" = 1)
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/clonepod
|
|
||||||
name = "Circuit board (Clone Pod)"
|
|
||||||
build_path = "/obj/machinery/clonepod"
|
|
||||||
board_type = "machine"
|
|
||||||
origin_tech = "programming=3;biotech=3"
|
|
||||||
frame_desc = "Requires 2 Manipulator, 2 Scanning Module, 2 pieces of cable and 1 Console Screen."
|
|
||||||
req_components = list(
|
|
||||||
"/obj/item/stack/cable_coil" = 2,
|
|
||||||
"/obj/item/weapon/stock_parts/scanning_module" = 2,
|
|
||||||
"/obj/item/weapon/stock_parts/manipulator" = 2,
|
|
||||||
"/obj/item/weapon/stock_parts/console_screen" = 1)
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/clonescanner
|
|
||||||
name = "Circuit board (Cloning Scanner)"
|
|
||||||
build_path = "/obj/machinery/dna_scannernew"
|
|
||||||
board_type = "machine"
|
|
||||||
origin_tech = "programming=2;biotech=2"
|
|
||||||
frame_desc = "Requires 1 Scanning module, 1 Micro Manipulator, 1 Micro-Laser, 2 pieces of cable and 1 Console Screen."
|
|
||||||
req_components = list(
|
|
||||||
"/obj/item/weapon/stock_parts/scanning_module" = 1,
|
|
||||||
"/obj/item/weapon/stock_parts/manipulator" = 1,
|
|
||||||
"/obj/item/weapon/stock_parts/micro_laser" = 1,
|
|
||||||
"/obj/item/weapon/stock_parts/console_screen" = 1,
|
|
||||||
"/obj/item/stack/cable_coil" = 2,)
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/unary_atmos
|
|
||||||
board_type = "machine"
|
|
||||||
var/machine_dir = SOUTH
|
|
||||||
var/init_dirs = SOUTH
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/unary_atmos/attackby(obj/item/I as obj, mob/user as mob)
|
|
||||||
if(istype(I,/obj/item/weapon/screwdriver))
|
|
||||||
machine_dir = turn(machine_dir, 90)
|
|
||||||
init_dirs = machine_dir
|
|
||||||
user.visible_message("\blue \The [user] adjusts the jumper on the [src]'s port configuration pins.", "\blue You adjust the jumper on the port configuration pins. Now set to [dir2text(machine_dir)].")
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/unary_atmos/examine(mob/user)
|
|
||||||
..(user)
|
|
||||||
user << "The jumper is connecting the [dir2text(machine_dir)] pins."
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/unary_atmos/construct(var/obj/machinery/atmospherics/unary/U)
|
|
||||||
//TODO: Move this stuff into the relevant constructor when pipe/construction.dm is cleaned up.
|
|
||||||
U.set_dir(src.machine_dir)
|
|
||||||
U.initialize_directions = src.init_dirs
|
|
||||||
U.initialize()
|
|
||||||
U.build_network()
|
|
||||||
if (U.node)
|
|
||||||
U.node.initialize()
|
|
||||||
U.node.build_network()
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/unary_atmos/heater
|
|
||||||
name = "Circuit Board (Gas Heating System)"
|
|
||||||
build_path = "/obj/machinery/atmospherics/unary/heater"
|
|
||||||
origin_tech = "powerstorage=2;engineering=1"
|
|
||||||
frame_desc = "Requires 5 Pieces of Cable, 1 Matter Bin, and 2 Capacitors."
|
|
||||||
req_components = list(
|
|
||||||
"/obj/item/stack/cable_coil" = 5,
|
|
||||||
"/obj/item/weapon/stock_parts/matter_bin" = 1,
|
|
||||||
"/obj/item/weapon/stock_parts/capacitor" = 2)
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/unary_atmos/cooler
|
|
||||||
name = "Circuit Board (Gas Cooling System)"
|
|
||||||
build_path = "/obj/machinery/atmospherics/unary/freezer"
|
|
||||||
origin_tech = "magnets=2;engineering=2"
|
|
||||||
frame_desc = "Requires 2 Pieces of Cable, 1 Matter Bin, 1 Micro Manipulator, and 2 Capacitors."
|
|
||||||
req_components = list(
|
|
||||||
"/obj/item/stack/cable_coil" = 2,
|
|
||||||
"/obj/item/weapon/stock_parts/matter_bin" = 1,
|
|
||||||
"/obj/item/weapon/stock_parts/capacitor" = 2,
|
|
||||||
"/obj/item/weapon/stock_parts/manipulator" = 1)
|
|
||||||
|
|
||||||
// Telecomms circuit boards:
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/telecomms/receiver
|
|
||||||
name = "Circuit Board (Subspace Receiver)"
|
|
||||||
build_path = "/obj/machinery/telecomms/receiver"
|
|
||||||
board_type = "machine"
|
|
||||||
origin_tech = "programming=4;engineering=3;bluespace=2"
|
|
||||||
frame_desc = "Requires 1 Subspace Ansible, 1 Hyperwave Filter, 2 Micro Manipulators, and 1 Micro-Laser."
|
|
||||||
req_components = list(
|
|
||||||
"/obj/item/weapon/stock_parts/subspace/ansible" = 1,
|
|
||||||
"/obj/item/weapon/stock_parts/subspace/filter" = 1,
|
|
||||||
"/obj/item/weapon/stock_parts/manipulator" = 2,
|
|
||||||
"/obj/item/weapon/stock_parts/micro_laser" = 1)
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/telecomms/hub
|
|
||||||
name = "Circuit Board (Hub Mainframe)"
|
|
||||||
build_path = "/obj/machinery/telecomms/hub"
|
|
||||||
board_type = "machine"
|
|
||||||
origin_tech = "programming=4;engineering=4"
|
|
||||||
frame_desc = "Requires 2 Micro Manipulators, 2 Cable Coil and 2 Hyperwave Filter."
|
|
||||||
req_components = list(
|
|
||||||
"/obj/item/weapon/stock_parts/manipulator" = 2,
|
|
||||||
"/obj/item/stack/cable_coil" = 2,
|
|
||||||
"/obj/item/weapon/stock_parts/subspace/filter" = 2)
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/telecomms/relay
|
|
||||||
name = "Circuit Board (Relay Mainframe)"
|
|
||||||
build_path = "/obj/machinery/telecomms/relay"
|
|
||||||
board_type = "machine"
|
|
||||||
origin_tech = "programming=3;engineering=4;bluespace=3"
|
|
||||||
frame_desc = "Requires 2 Micro Manipulators, 2 Cable Coil and 2 Hyperwave Filters."
|
|
||||||
req_components = list(
|
|
||||||
"/obj/item/weapon/stock_parts/manipulator" = 2,
|
|
||||||
"/obj/item/stack/cable_coil" = 2,
|
|
||||||
"/obj/item/weapon/stock_parts/subspace/filter" = 2)
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/telecomms/bus
|
|
||||||
name = "Circuit Board (Bus Mainframe)"
|
|
||||||
build_path = "/obj/machinery/telecomms/bus"
|
|
||||||
board_type = "machine"
|
|
||||||
origin_tech = "programming=4;engineering=4"
|
|
||||||
frame_desc = "Requires 2 Micro Manipulators, 1 Cable Coil and 1 Hyperwave Filter."
|
|
||||||
req_components = list(
|
|
||||||
"/obj/item/weapon/stock_parts/manipulator" = 2,
|
|
||||||
"/obj/item/stack/cable_coil" = 1,
|
|
||||||
"/obj/item/weapon/stock_parts/subspace/filter" = 1)
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/telecomms/processor
|
|
||||||
name = "Circuit Board (Processor Unit)"
|
|
||||||
build_path = "/obj/machinery/telecomms/processor"
|
|
||||||
board_type = "machine"
|
|
||||||
origin_tech = "programming=4;engineering=4"
|
|
||||||
frame_desc = "Requires 3 Micro Manipulators, 1 Hyperwave Filter, 2 Treatment Disks, 1 Wavelength Analyzer, 2 Cable Coils and 1 Subspace Amplifier."
|
|
||||||
req_components = list(
|
|
||||||
"/obj/item/weapon/stock_parts/manipulator" = 3,
|
|
||||||
"/obj/item/weapon/stock_parts/subspace/filter" = 1,
|
|
||||||
"/obj/item/weapon/stock_parts/subspace/treatment" = 2,
|
|
||||||
"/obj/item/weapon/stock_parts/subspace/analyzer" = 1,
|
|
||||||
"/obj/item/stack/cable_coil" = 2,
|
|
||||||
"/obj/item/weapon/stock_parts/subspace/amplifier" = 1)
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/telecomms/server
|
|
||||||
name = "Circuit Board (Telecommunication Server)"
|
|
||||||
build_path = "/obj/machinery/telecomms/server"
|
|
||||||
board_type = "machine"
|
|
||||||
origin_tech = "programming=4;engineering=4"
|
|
||||||
frame_desc = "Requires 2 Micro Manipulators, 1 Cable Coil and 1 Hyperwave Filter."
|
|
||||||
req_components = list(
|
|
||||||
"/obj/item/weapon/stock_parts/manipulator" = 2,
|
|
||||||
"/obj/item/stack/cable_coil" = 1,
|
|
||||||
"/obj/item/weapon/stock_parts/subspace/filter" = 1)
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/telecomms/broadcaster
|
|
||||||
name = "Circuit Board (Subspace Broadcaster)"
|
|
||||||
build_path = "/obj/machinery/telecomms/broadcaster"
|
|
||||||
board_type = "machine"
|
|
||||||
origin_tech = "programming=4;engineering=4;bluespace=2"
|
|
||||||
frame_desc = "Requires 2 Micro Manipulators, 1 Cable Coil, 1 Hyperwave Filter, 1 Ansible Crystal and 2 High-Powered Micro-Lasers. "
|
|
||||||
req_components = list(
|
|
||||||
"/obj/item/weapon/stock_parts/manipulator" = 2,
|
|
||||||
"/obj/item/stack/cable_coil" = 1,
|
|
||||||
"/obj/item/weapon/stock_parts/subspace/filter" = 1,
|
|
||||||
"/obj/item/weapon/stock_parts/subspace/crystal" = 1,
|
|
||||||
"/obj/item/weapon/stock_parts/micro_laser/high" = 2)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -381,7 +381,7 @@
|
|||||||
// Delete the mob.
|
// Delete the mob.
|
||||||
del(occupant)
|
del(occupant)
|
||||||
occupant = null
|
occupant = null
|
||||||
|
name = initial(name)
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -442,7 +442,6 @@
|
|||||||
src.add_fingerprint(M)
|
src.add_fingerprint(M)
|
||||||
|
|
||||||
/obj/machinery/cryopod/verb/eject()
|
/obj/machinery/cryopod/verb/eject()
|
||||||
|
|
||||||
set name = "Eject Pod"
|
set name = "Eject Pod"
|
||||||
set category = "Object"
|
set category = "Object"
|
||||||
set src in oview(1)
|
set src in oview(1)
|
||||||
@@ -464,6 +463,8 @@
|
|||||||
|
|
||||||
src.go_out()
|
src.go_out()
|
||||||
add_fingerprint(usr)
|
add_fingerprint(usr)
|
||||||
|
|
||||||
|
name = initial(name)
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/machinery/cryopod/verb/move_inside()
|
/obj/machinery/cryopod/verb/move_inside()
|
||||||
@@ -511,6 +512,7 @@
|
|||||||
time_entered = world.time
|
time_entered = world.time
|
||||||
|
|
||||||
src.add_fingerprint(usr)
|
src.add_fingerprint(usr)
|
||||||
|
name = "[name] ([usr.name])"
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
@@ -913,9 +913,9 @@ About the new airlock wires panel:
|
|||||||
if(operating == -1)
|
if(operating == -1)
|
||||||
new /obj/item/weapon/circuitboard/broken(src.loc)
|
new /obj/item/weapon/circuitboard/broken(src.loc)
|
||||||
operating = 0
|
operating = 0
|
||||||
else
|
else
|
||||||
if (!electronics) create_electronics()
|
if (!electronics) create_electronics()
|
||||||
|
|
||||||
electronics.loc = src.loc
|
electronics.loc = src.loc
|
||||||
electronics = null
|
electronics = null
|
||||||
|
|
||||||
@@ -1059,13 +1059,17 @@ About the new airlock wires panel:
|
|||||||
/obj/machinery/door/airlock/New(var/newloc, var/obj/structure/door_assembly/assembly=null)
|
/obj/machinery/door/airlock/New(var/newloc, var/obj/structure/door_assembly/assembly=null)
|
||||||
..()
|
..()
|
||||||
|
|
||||||
|
//High-sec airlocks are much harder to completely break by emitters.
|
||||||
|
if(secured_wires)
|
||||||
|
emitter_resistance *= 3
|
||||||
|
|
||||||
//if assembly is given, create the new door from the assembly
|
//if assembly is given, create the new door from the assembly
|
||||||
if (assembly)
|
if (assembly)
|
||||||
assembly_type = assembly.type
|
assembly_type = assembly.type
|
||||||
|
|
||||||
electronics = assembly.electronics
|
electronics = assembly.electronics
|
||||||
electronics.loc = src
|
electronics.loc = src
|
||||||
|
|
||||||
//update the door's access to match the electronics'
|
//update the door's access to match the electronics'
|
||||||
secured_wires = electronics.secure
|
secured_wires = electronics.secure
|
||||||
if(electronics.one_access)
|
if(electronics.one_access)
|
||||||
@@ -1073,7 +1077,7 @@ About the new airlock wires panel:
|
|||||||
req_one_access = src.electronics.conf_access
|
req_one_access = src.electronics.conf_access
|
||||||
else
|
else
|
||||||
req_access = src.electronics.conf_access
|
req_access = src.electronics.conf_access
|
||||||
|
|
||||||
//get the name from the assembly
|
//get the name from the assembly
|
||||||
if(assembly.created_name)
|
if(assembly.created_name)
|
||||||
name = assembly.created_name
|
name = assembly.created_name
|
||||||
@@ -1093,8 +1097,8 @@ About the new airlock wires panel:
|
|||||||
src.closeOther = A
|
src.closeOther = A
|
||||||
break
|
break
|
||||||
|
|
||||||
// Most doors will never be deconstructed over the course of a round,
|
// Most doors will never be deconstructed over the course of a round,
|
||||||
// so as an optimization defer the creation of electronics until
|
// so as an optimization defer the creation of electronics until
|
||||||
// the airlock is deconstructed
|
// the airlock is deconstructed
|
||||||
/obj/machinery/door/airlock/proc/create_electronics()
|
/obj/machinery/door/airlock/proc/create_electronics()
|
||||||
//create new electronics
|
//create new electronics
|
||||||
@@ -1102,7 +1106,7 @@ About the new airlock wires panel:
|
|||||||
src.electronics = new/obj/item/weapon/airlock_electronics/secure( src.loc )
|
src.electronics = new/obj/item/weapon/airlock_electronics/secure( src.loc )
|
||||||
else
|
else
|
||||||
src.electronics = new/obj/item/weapon/airlock_electronics( src.loc )
|
src.electronics = new/obj/item/weapon/airlock_electronics( src.loc )
|
||||||
|
|
||||||
//update the electronics to match the door's access
|
//update the electronics to match the door's access
|
||||||
if(!src.req_access)
|
if(!src.req_access)
|
||||||
src.check_access()
|
src.check_access()
|
||||||
|
|||||||
@@ -25,6 +25,8 @@
|
|||||||
var/air_properties_vary_with_direction = 0
|
var/air_properties_vary_with_direction = 0
|
||||||
var/maxhealth = 300
|
var/maxhealth = 300
|
||||||
var/health
|
var/health
|
||||||
|
var/emitter_hits = 0 // For use when tracking amount of emitter hits taken.
|
||||||
|
var/emitter_resistance = 10 // Amount of emitter hits doors whistand
|
||||||
var/min_force = 10 //minimum amount of force needed to damage the door with a melee weapon
|
var/min_force = 10 //minimum amount of force needed to damage the door with a melee weapon
|
||||||
var/hitsound = 'sound/weapons/smash.ogg' //sound door makes when hit with a weapon
|
var/hitsound = 'sound/weapons/smash.ogg' //sound door makes when hit with a weapon
|
||||||
|
|
||||||
@@ -133,9 +135,22 @@
|
|||||||
if(!(Proj.damage_type == BRUTE || Proj.damage_type == BURN))
|
if(!(Proj.damage_type == BRUTE || Proj.damage_type == BURN))
|
||||||
return
|
return
|
||||||
|
|
||||||
|
// Emitter Blasts - these will eventually completely destroy the door, given enough time.
|
||||||
|
if (istype(Proj, /obj/item/projectile/beam/emitter))
|
||||||
|
if(health > 0)
|
||||||
|
Proj.damage /= 4
|
||||||
|
else
|
||||||
|
emitter_hits ++
|
||||||
|
if(emitter_hits >= emitter_resistance)
|
||||||
|
visible_message("\red <B>[src.name] breaks apart!</B>", 1)
|
||||||
|
new /obj/effect/decal/cleanable/ash(src.loc) // Turn it to ashes!
|
||||||
|
del(src)
|
||||||
|
|
||||||
if(Proj.damage)
|
if(Proj.damage)
|
||||||
take_damage(Proj.damage)
|
take_damage(Proj.damage)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/door/hitby(AM as mob|obj)
|
/obj/machinery/door/hitby(AM as mob|obj)
|
||||||
|
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
var/id = 1.0
|
var/id = 1.0
|
||||||
dir = 1
|
dir = 1
|
||||||
explosion_resistance = 25
|
explosion_resistance = 25
|
||||||
|
emitter_resistance = 50 // Lots of emitter blasts, it's blast door after all.
|
||||||
|
|
||||||
/obj/machinery/door/poddoor/New()
|
/obj/machinery/door/poddoor/New()
|
||||||
. = ..()
|
. = ..()
|
||||||
@@ -28,6 +29,7 @@
|
|||||||
icon_state = "pdoor0"
|
icon_state = "pdoor0"
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/door/poddoor/attackby(obj/item/weapon/C as obj, mob/user as mob)
|
/obj/machinery/door/poddoor/attackby(obj/item/weapon/C as obj, mob/user as mob)
|
||||||
src.add_fingerprint(user)
|
src.add_fingerprint(user)
|
||||||
if (!( istype(C, /obj/item/weapon/crowbar) || (istype(C, /obj/item/weapon/twohanded/fireaxe) && C:wielded == 1) ))
|
if (!( istype(C, /obj/item/weapon/crowbar) || (istype(C, /obj/item/weapon/twohanded/fireaxe) && C:wielded == 1) ))
|
||||||
|
|||||||
@@ -81,13 +81,28 @@ var/const/HOLOPAD_MODE = 0
|
|||||||
|
|
||||||
/*This is the proc for special two-way communication between AI and holopad/people talking near holopad.
|
/*This is the proc for special two-way communication between AI and holopad/people talking near holopad.
|
||||||
For the other part of the code, check silicon say.dm. Particularly robot talk.*/
|
For the other part of the code, check silicon say.dm. Particularly robot talk.*/
|
||||||
/obj/machinery/hologram/holopad/hear_talk(mob/living/M, text, verb)
|
/obj/machinery/hologram/holopad/hear_talk(mob/living/M, text, verb, datum/language/speaking)
|
||||||
if(M&&hologram&&master)//Master is mostly a safety in case lag hits or something.
|
if(M&&hologram&&master)//Master is mostly a safety in case lag hits or something.
|
||||||
if(!master.say_understands(M))//The AI will be able to understand most mobs talking through the holopad.
|
if(!master.say_understands(M, speaking))//The AI will be able to understand most mobs talking through the holopad.
|
||||||
text = stars(text)
|
if(speaking)
|
||||||
|
text = speaking.scramble(text)
|
||||||
|
else
|
||||||
|
text = stars(text)
|
||||||
var/name_used = M.GetVoice()
|
var/name_used = M.GetVoice()
|
||||||
//This communication is imperfect because the holopad "filters" voices and is only designed to connect to the master only.
|
//This communication is imperfect because the holopad "filters" voices and is only designed to connect to the master only.
|
||||||
var/rendered = "<i><span class='game say'>Holopad received, <span class='name'>[name_used]</span> [verb], <span class='message'>\"[text]\"</span></span></i>"
|
var/rendered
|
||||||
|
if(speaking)
|
||||||
|
rendered = "<i><span class='game say'>Holopad received, <span class='name'>[name_used]</span> [speaking.format_message(text, verb)]</span></i>"
|
||||||
|
else
|
||||||
|
rendered = "<i><span class='game say'>Holopad received, <span class='name'>[name_used]</span> [verb], <span class='message'>\"[text]\"</span></span></i>"
|
||||||
|
master.show_message(rendered, 2)
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/machinery/hologram/holopad/see_emote(mob/living/M, text)
|
||||||
|
if(M && hologram && master)
|
||||||
|
//var/name_used = M.GetVoice()
|
||||||
|
var/rendered = "<i><span class='game say'>Holopad received, <span class='message'>[text]</span></span></i>"
|
||||||
|
//The lack of name_used is needed, because message already contains a name. This is needed for simple mobs to emote properly.
|
||||||
master.show_message(rendered, 2)
|
master.show_message(rendered, 2)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
@@ -129,8 +129,10 @@ Class Procs:
|
|||||||
return 0
|
return 0
|
||||||
return apc.drain_power()
|
return apc.drain_power()
|
||||||
|
|
||||||
/obj/machinery/New()
|
/obj/machinery/New(l, d=0)
|
||||||
..()
|
..(l)
|
||||||
|
if(d)
|
||||||
|
set_dir(d)
|
||||||
if(!machinery_sort_required && ticker)
|
if(!machinery_sort_required && ticker)
|
||||||
dd_insertObjectList(machines, src)
|
dd_insertObjectList(machines, src)
|
||||||
else
|
else
|
||||||
@@ -335,6 +337,7 @@ Class Procs:
|
|||||||
/obj/machinery/proc/dismantle()
|
/obj/machinery/proc/dismantle()
|
||||||
playsound(loc, 'sound/items/Crowbar.ogg', 50, 1)
|
playsound(loc, 'sound/items/Crowbar.ogg', 50, 1)
|
||||||
var/obj/machinery/constructable_frame/machine_frame/M = new /obj/machinery/constructable_frame/machine_frame(loc)
|
var/obj/machinery/constructable_frame/machine_frame/M = new /obj/machinery/constructable_frame/machine_frame(loc)
|
||||||
|
M.set_dir(src.dir)
|
||||||
M.state = 2
|
M.state = 2
|
||||||
M.icon_state = "box_1"
|
M.icon_state = "box_1"
|
||||||
for(var/obj/I in component_parts)
|
for(var/obj/I in component_parts)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/obj/machinery/computer/teleporter
|
/obj/machinery/computer/teleporter
|
||||||
name = "Teleporter"
|
name = "Teleporter Control Console"
|
||||||
desc = "Used to control a linked teleportation Hub and Station."
|
desc = "Used to control a linked teleportation Hub and Station."
|
||||||
icon_state = "teleport"
|
icon_state = "teleport"
|
||||||
circuit = "/obj/item/weapon/circuitboard/teleporter"
|
circuit = "/obj/item/weapon/circuitboard/teleporter"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/obj/item/mecha_parts/mecha_equipment/tool/sleeper
|
/obj/item/mecha_parts/mecha_equipment/tool/sleeper
|
||||||
name = "Mounted Sleeper"
|
name = "mounted sleeper"
|
||||||
desc = "Mounted Sleeper. (Can be attached to: Medical Exosuits)"
|
desc = "A sleeper. Mountable to an exosuit. (Can be attached to: Medical Exosuits)"
|
||||||
icon = 'icons/obj/Cryogenic2.dmi'
|
icon = 'icons/obj/Cryogenic2.dmi'
|
||||||
icon_state = "sleeper_0"
|
icon_state = "sleeper_0"
|
||||||
origin_tech = "programming=2;biotech=3"
|
origin_tech = "programming=2;biotech=3"
|
||||||
@@ -373,7 +373,7 @@
|
|||||||
return 1
|
return 1
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun
|
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun
|
||||||
name = "Syringe Gun"
|
name = "syringe gun"
|
||||||
desc = "Exosuit-mounted chem synthesizer with syringe gun. Reagents inside are held in stasis, so no reactions will occur. (Can be attached to: Medical Exosuits)"
|
desc = "Exosuit-mounted chem synthesizer with syringe gun. Reagents inside are held in stasis, so no reactions will occur. (Can be attached to: Medical Exosuits)"
|
||||||
icon = 'icons/obj/gun.dmi'
|
icon = 'icons/obj/gun.dmi'
|
||||||
icon_state = "syringegun"
|
icon_state = "syringegun"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp
|
/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp
|
||||||
name = "Hydraulic Clamp"
|
name = "hydraulic clamp"
|
||||||
icon_state = "mecha_clamp"
|
icon_state = "mecha_clamp"
|
||||||
equip_cooldown = 15
|
equip_cooldown = 15
|
||||||
energy_drain = 10
|
energy_drain = 10
|
||||||
@@ -64,7 +64,7 @@
|
|||||||
return 1
|
return 1
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/tool/drill
|
/obj/item/mecha_parts/mecha_equipment/tool/drill
|
||||||
name = "Drill"
|
name = "drill"
|
||||||
desc = "This is the drill that'll pierce the heavens! (Can be attached to: Combat and Engineering Exosuits)"
|
desc = "This is the drill that'll pierce the heavens! (Can be attached to: Combat and Engineering Exosuits)"
|
||||||
icon_state = "mecha_drill"
|
icon_state = "mecha_drill"
|
||||||
equip_cooldown = 30
|
equip_cooldown = 30
|
||||||
@@ -115,7 +115,7 @@
|
|||||||
return 1
|
return 1
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill
|
/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill
|
||||||
name = "Diamond Drill"
|
name = "diamond drill"
|
||||||
desc = "This is an upgraded version of the drill that'll pierce the heavens! (Can be attached to: Combat and Engineering Exosuits)"
|
desc = "This is an upgraded version of the drill that'll pierce the heavens! (Can be attached to: Combat and Engineering Exosuits)"
|
||||||
icon_state = "mecha_diamond_drill"
|
icon_state = "mecha_diamond_drill"
|
||||||
origin_tech = "materials=4;engineering=3"
|
origin_tech = "materials=4;engineering=3"
|
||||||
@@ -166,7 +166,7 @@
|
|||||||
return 1
|
return 1
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/tool/extinguisher
|
/obj/item/mecha_parts/mecha_equipment/tool/extinguisher
|
||||||
name = "Extinguisher"
|
name = "extinguisher"
|
||||||
desc = "Exosuit-mounted extinguisher (Can be attached to: Engineering exosuits)"
|
desc = "Exosuit-mounted extinguisher (Can be attached to: Engineering exosuits)"
|
||||||
icon_state = "mecha_exting"
|
icon_state = "mecha_exting"
|
||||||
equip_cooldown = 5
|
equip_cooldown = 5
|
||||||
@@ -240,7 +240,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/tool/rcd
|
/obj/item/mecha_parts/mecha_equipment/tool/rcd
|
||||||
name = "Mounted RCD"
|
name = "mounted RCD"
|
||||||
desc = "An exosuit-mounted Rapid Construction Device. (Can be attached to: Any exosuit)"
|
desc = "An exosuit-mounted Rapid Construction Device. (Can be attached to: Any exosuit)"
|
||||||
icon_state = "mecha_rcd"
|
icon_state = "mecha_rcd"
|
||||||
origin_tech = "materials=4;bluespace=3;magnets=4;powerstorage=4"
|
origin_tech = "materials=4;bluespace=3;magnets=4;powerstorage=4"
|
||||||
@@ -345,7 +345,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/teleporter
|
/obj/item/mecha_parts/mecha_equipment/teleporter
|
||||||
name = "Teleporter"
|
name = "teleporter"
|
||||||
desc = "An exosuit module that allows exosuits to teleport to any position in view."
|
desc = "An exosuit module that allows exosuits to teleport to any position in view."
|
||||||
icon_state = "mecha_teleport"
|
icon_state = "mecha_teleport"
|
||||||
origin_tech = "bluespace=10"
|
origin_tech = "bluespace=10"
|
||||||
@@ -365,7 +365,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/wormhole_generator
|
/obj/item/mecha_parts/mecha_equipment/wormhole_generator
|
||||||
name = "Wormhole Generator"
|
name = "wormhole generator"
|
||||||
desc = "An exosuit module that allows generating of small quasi-stable wormholes."
|
desc = "An exosuit module that allows generating of small quasi-stable wormholes."
|
||||||
icon_state = "mecha_wholegen"
|
icon_state = "mecha_wholegen"
|
||||||
origin_tech = "bluespace=3"
|
origin_tech = "bluespace=3"
|
||||||
@@ -415,7 +415,7 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/gravcatapult
|
/obj/item/mecha_parts/mecha_equipment/gravcatapult
|
||||||
name = "Gravitational Catapult"
|
name = "gravitational catapult"
|
||||||
desc = "An exosuit mounted Gravitational Catapult."
|
desc = "An exosuit mounted Gravitational Catapult."
|
||||||
icon_state = "mecha_teleport"
|
icon_state = "mecha_teleport"
|
||||||
origin_tech = "bluespace=2;magnets=3"
|
origin_tech = "bluespace=2;magnets=3"
|
||||||
@@ -491,8 +491,8 @@
|
|||||||
|
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster //what is that noise? A BAWWW from TK mutants.
|
/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster //what is that noise? A BAWWW from TK mutants.
|
||||||
name = "Armor Booster Module (Close Combat Weaponry)"
|
name = "\improper CCW armor booster"
|
||||||
desc = "Boosts exosuit armor against armed melee attacks. Requires energy to operate."
|
desc = "Close-combat armor booster. Boosts exosuit armor against armed melee attacks. Requires energy to operate."
|
||||||
icon_state = "mecha_abooster_ccw"
|
icon_state = "mecha_abooster_ccw"
|
||||||
origin_tech = "materials=3"
|
origin_tech = "materials=3"
|
||||||
equip_cooldown = 10
|
equip_cooldown = 10
|
||||||
@@ -541,8 +541,8 @@
|
|||||||
|
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster
|
/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster
|
||||||
name = "Armor Booster Module (Ranged Weaponry)"
|
name = "\improper RW armor booster"
|
||||||
desc = "Boosts exosuit armor against ranged attacks. Completely blocks taser shots. Requires energy to operate."
|
desc = "Ranged-weaponry armor booster. Boosts exosuit armor against ranged attacks. Completely blocks taser shots, but requires energy to operate."
|
||||||
icon_state = "mecha_abooster_proj"
|
icon_state = "mecha_abooster_proj"
|
||||||
origin_tech = "materials=4"
|
origin_tech = "materials=4"
|
||||||
equip_cooldown = 10
|
equip_cooldown = 10
|
||||||
@@ -612,8 +612,8 @@
|
|||||||
|
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/repair_droid
|
/obj/item/mecha_parts/mecha_equipment/repair_droid
|
||||||
name = "Repair Droid"
|
name = "repair droid"
|
||||||
desc = "Automated repair droid. Scans exosuit for damage and repairs it. Can fix almost all types of external or internal damage."
|
desc = "Automated repair droid. Scans exosuit for damage and repairs it. Can fix almost any type of external or internal damage."
|
||||||
icon_state = "repair_droid"
|
icon_state = "repair_droid"
|
||||||
origin_tech = "magnets=3;programming=3"
|
origin_tech = "magnets=3;programming=3"
|
||||||
equip_cooldown = 20
|
equip_cooldown = 20
|
||||||
@@ -702,7 +702,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay
|
/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay
|
||||||
name = "Energy Relay"
|
name = "energy relay"
|
||||||
desc = "Wirelessly drains energy from any available power channel in area. The performance index is quite low."
|
desc = "Wirelessly drains energy from any available power channel in area. The performance index is quite low."
|
||||||
icon_state = "tesla"
|
icon_state = "tesla"
|
||||||
origin_tech = "magnets=4;syndicate=2"
|
origin_tech = "magnets=4;syndicate=2"
|
||||||
@@ -814,7 +814,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/generator
|
/obj/item/mecha_parts/mecha_equipment/generator
|
||||||
name = "Phoron Generator"
|
name = "phoron generator"
|
||||||
desc = "Generates power using solid phoron as fuel. Pollutes the environment."
|
desc = "Generates power using solid phoron as fuel. Pollutes the environment."
|
||||||
icon_state = "tesla"
|
icon_state = "tesla"
|
||||||
origin_tech = "phorontech=2;powerstorage=2;engineering=1"
|
origin_tech = "phorontech=2;powerstorage=2;engineering=1"
|
||||||
@@ -952,7 +952,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/generator/nuclear
|
/obj/item/mecha_parts/mecha_equipment/generator/nuclear
|
||||||
name = "ExoNuclear Reactor"
|
name = "\improper ExoNuclear reactor"
|
||||||
desc = "Generates power using uranium. Pollutes the environment."
|
desc = "Generates power using uranium. Pollutes the environment."
|
||||||
icon_state = "tesla"
|
icon_state = "tesla"
|
||||||
origin_tech = "powerstorage=3;engineering=3"
|
origin_tech = "powerstorage=3;engineering=3"
|
||||||
@@ -989,7 +989,7 @@
|
|||||||
|
|
||||||
//This is pretty much just for the death-ripley so that it is harmless
|
//This is pretty much just for the death-ripley so that it is harmless
|
||||||
/obj/item/mecha_parts/mecha_equipment/tool/safety_clamp
|
/obj/item/mecha_parts/mecha_equipment/tool/safety_clamp
|
||||||
name = "KILL CLAMP"
|
name = "\improper KILL CLAMP"
|
||||||
icon_state = "mecha_clamp"
|
icon_state = "mecha_clamp"
|
||||||
equip_cooldown = 15
|
equip_cooldown = 15
|
||||||
energy_drain = 0
|
energy_drain = 0
|
||||||
@@ -1208,4 +1208,4 @@
|
|||||||
if (OCCUPIED|LOCKED)
|
if (OCCUPIED|LOCKED)
|
||||||
usr << "\red All of the passenger compartments are already occupied or locked!"
|
usr << "\red All of the passenger compartments are already occupied or locked!"
|
||||||
if (0)
|
if (0)
|
||||||
usr << "\red \The [src] doesn't have a passenger compartment."
|
usr << "\red \The [src] doesn't have a passenger compartment."
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
//NEEDS SPRITE! (When this gets ticked in search for 'TODO MECHA JETPACK SPRITE MISSING' through code to uncomment the place where it's missing.)
|
//NEEDS SPRITE! (When this gets ticked in search for 'TODO MECHA JETPACK SPRITE MISSING' through code to uncomment the place where it's missing.)
|
||||||
/obj/item/mecha_parts/mecha_equipment/jetpack
|
/obj/item/mecha_parts/mecha_equipment/jetpack
|
||||||
name = "Jetpack"
|
name = "jetpack"
|
||||||
desc = "Using directed ion bursts and cunning solar wind reflection technique, this device enables controlled space flight."
|
desc = "Using directed ion bursts and cunning solar wind reflection technique, this device enables controlled space flight."
|
||||||
icon_state = "mecha_equip"
|
icon_state = "mecha_equip"
|
||||||
equip_cooldown = 5
|
equip_cooldown = 5
|
||||||
@@ -108,7 +108,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/defence_shocker
|
/obj/item/mecha_parts/mecha_equipment/defence_shocker
|
||||||
name = "Exosuit Defence Shocker"
|
name = "exosuit defence shocker"
|
||||||
desc = ""
|
desc = ""
|
||||||
icon_state = "mecha_teleport"
|
icon_state = "mecha_teleport"
|
||||||
equip_cooldown = 10
|
equip_cooldown = 10
|
||||||
|
|||||||
@@ -58,12 +58,12 @@
|
|||||||
P.process()
|
P.process()
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/weapon/energy
|
/obj/item/mecha_parts/mecha_equipment/weapon/energy
|
||||||
name = "General Energy Weapon"
|
name = "general energy weapon"
|
||||||
auto_rearm = 1
|
auto_rearm = 1
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser
|
/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser
|
||||||
equip_cooldown = 8
|
equip_cooldown = 8
|
||||||
name = "CH-PS \"Immolator\" Laser"
|
name = "\improper CH-PS \"Immolator\" laser"
|
||||||
icon_state = "mecha_laser"
|
icon_state = "mecha_laser"
|
||||||
energy_drain = 30
|
energy_drain = 30
|
||||||
projectile = /obj/item/projectile/beam
|
projectile = /obj/item/projectile/beam
|
||||||
@@ -71,7 +71,7 @@
|
|||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/weapon/energy/riggedlaser
|
/obj/item/mecha_parts/mecha_equipment/weapon/energy/riggedlaser
|
||||||
equip_cooldown = 30
|
equip_cooldown = 30
|
||||||
name = "Jury-rigged Welder-Laser"
|
name = "jury-rigged welder-laser"
|
||||||
desc = "While not regulation, this inefficient weapon can be attached to working exo-suits in desperate, or malicious, times."
|
desc = "While not regulation, this inefficient weapon can be attached to working exo-suits in desperate, or malicious, times."
|
||||||
icon_state = "mecha_laser"
|
icon_state = "mecha_laser"
|
||||||
energy_drain = 80
|
energy_drain = 80
|
||||||
@@ -81,7 +81,7 @@
|
|||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy
|
/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy
|
||||||
equip_cooldown = 15
|
equip_cooldown = 15
|
||||||
name = "CH-LC \"Solaris\" Laser Cannon"
|
name = "\improper CH-LC \"Solaris\" laser cannon"
|
||||||
icon_state = "mecha_laser"
|
icon_state = "mecha_laser"
|
||||||
energy_drain = 60
|
energy_drain = 60
|
||||||
projectile = /obj/item/projectile/beam/heavylaser
|
projectile = /obj/item/projectile/beam/heavylaser
|
||||||
@@ -89,7 +89,7 @@
|
|||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/weapon/energy/ion
|
/obj/item/mecha_parts/mecha_equipment/weapon/energy/ion
|
||||||
equip_cooldown = 40
|
equip_cooldown = 40
|
||||||
name = "mkIV Ion Heavy Cannon"
|
name = "mkIV ion heavy cannon"
|
||||||
icon_state = "mecha_ion"
|
icon_state = "mecha_ion"
|
||||||
energy_drain = 120
|
energy_drain = 120
|
||||||
projectile = /obj/item/projectile/ion
|
projectile = /obj/item/projectile/ion
|
||||||
@@ -97,7 +97,7 @@
|
|||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/weapon/energy/pulse
|
/obj/item/mecha_parts/mecha_equipment/weapon/energy/pulse
|
||||||
equip_cooldown = 30
|
equip_cooldown = 30
|
||||||
name = "eZ-13 mk2 Heavy pulse rifle"
|
name = "eZ-13 mk2 heavy pulse rifle"
|
||||||
icon_state = "mecha_pulse"
|
icon_state = "mecha_pulse"
|
||||||
energy_drain = 120
|
energy_drain = 120
|
||||||
origin_tech = "materials=3;combat=6;powerstorage=4"
|
origin_tech = "materials=3;combat=6;powerstorage=4"
|
||||||
@@ -117,7 +117,7 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/weapon/energy/taser
|
/obj/item/mecha_parts/mecha_equipment/weapon/energy/taser
|
||||||
name = "PBT \"Pacifier\" Mounted Taser"
|
name = "\improper PBT \"Pacifier\" mounted taser"
|
||||||
icon_state = "mecha_taser"
|
icon_state = "mecha_taser"
|
||||||
energy_drain = 20
|
energy_drain = 20
|
||||||
equip_cooldown = 8
|
equip_cooldown = 8
|
||||||
@@ -126,7 +126,7 @@
|
|||||||
|
|
||||||
/* Commenting this out rather than removing it because it may be useful for reference.
|
/* Commenting this out rather than removing it because it may be useful for reference.
|
||||||
/obj/item/mecha_parts/mecha_equipment/weapon/honker
|
/obj/item/mecha_parts/mecha_equipment/weapon/honker
|
||||||
name = "HoNkER BlAsT 5000"
|
name = "\improper HoNkER BlAsT 5000"
|
||||||
icon_state = "mecha_honker"
|
icon_state = "mecha_honker"
|
||||||
energy_drain = 200
|
energy_drain = 200
|
||||||
equip_cooldown = 150
|
equip_cooldown = 150
|
||||||
@@ -164,17 +164,6 @@
|
|||||||
M.Paralyse(4)
|
M.Paralyse(4)
|
||||||
else
|
else
|
||||||
M.make_jittery(500)
|
M.make_jittery(500)
|
||||||
/* //else the mousetraps are useless
|
|
||||||
if(istype(M, /mob/living/carbon/human))
|
|
||||||
var/mob/living/carbon/human/H = M
|
|
||||||
if(isobj(H.shoes))
|
|
||||||
var/thingy = H.shoes
|
|
||||||
H.drop_from_inventory(H.shoes)
|
|
||||||
walk_away(thingy,chassis,15,2)
|
|
||||||
spawn(20)
|
|
||||||
if(thingy)
|
|
||||||
walk(thingy,0)
|
|
||||||
*/
|
|
||||||
chassis.use_power(energy_drain)
|
chassis.use_power(energy_drain)
|
||||||
log_message("Honked from [src.name]. HONK!")
|
log_message("Honked from [src.name]. HONK!")
|
||||||
do_after_cooldown()
|
do_after_cooldown()
|
||||||
@@ -182,7 +171,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic
|
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic
|
||||||
name = "General Ballisic Weapon"
|
name = "general ballisic weapon"
|
||||||
var/projectile_energy_cost
|
var/projectile_energy_cost
|
||||||
|
|
||||||
get_equip_info()
|
get_equip_info()
|
||||||
@@ -207,7 +196,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot
|
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot
|
||||||
name = "LBX AC 10 \"Scattershot\""
|
name = "\improper LBX AC 10 \"Scattershot\""
|
||||||
icon_state = "mecha_scatter"
|
icon_state = "mecha_scatter"
|
||||||
equip_cooldown = 20
|
equip_cooldown = 20
|
||||||
projectile = /obj/item/projectile/bullet/midbullet
|
projectile = /obj/item/projectile/bullet/midbullet
|
||||||
@@ -219,7 +208,7 @@
|
|||||||
projectile_energy_cost = 25
|
projectile_energy_cost = 25
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg
|
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg
|
||||||
name = "Ultra AC 2"
|
name = "\improper Ultra AC 2"
|
||||||
icon_state = "mecha_uac2"
|
icon_state = "mecha_uac2"
|
||||||
equip_cooldown = 10
|
equip_cooldown = 10
|
||||||
projectile = /obj/item/projectile/bullet/weakbullet
|
projectile = /obj/item/projectile/bullet/weakbullet
|
||||||
@@ -238,7 +227,7 @@
|
|||||||
AM.throw_at(target,missile_range, missile_speed, chassis)
|
AM.throw_at(target,missile_range, missile_speed, chassis)
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive
|
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive
|
||||||
name = "SRM-8 Missile Rack"
|
name = "\improper SRM-8 missile rack"
|
||||||
icon_state = "mecha_missilerack"
|
icon_state = "mecha_missilerack"
|
||||||
projectile = /obj/item/missile
|
projectile = /obj/item/missile
|
||||||
fire_sound = 'sound/effects/bang.ogg'
|
fire_sound = 'sound/effects/bang.ogg'
|
||||||
@@ -266,7 +255,7 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang
|
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang
|
||||||
name = "SGL-6 Grenade Launcher"
|
name = "\improper SGL-6 grenade launcher"
|
||||||
icon_state = "mecha_grenadelnchr"
|
icon_state = "mecha_grenadelnchr"
|
||||||
projectile = /obj/item/weapon/grenade/flashbang
|
projectile = /obj/item/weapon/grenade/flashbang
|
||||||
fire_sound = 'sound/effects/bang.ogg'
|
fire_sound = 'sound/effects/bang.ogg'
|
||||||
@@ -283,7 +272,7 @@
|
|||||||
F.prime()
|
F.prime()
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang//Because I am a heartless bastard -Sieve
|
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang//Because I am a heartless bastard -Sieve
|
||||||
name = "SOP-6 Grenade Launcher"
|
name = "\improper SOP-6 grenade launcher"
|
||||||
projectile = /obj/item/weapon/grenade/flashbang/clusterbang
|
projectile = /obj/item/weapon/grenade/flashbang/clusterbang
|
||||||
construction_cost = list("metal"=20000,"gold"=6000,"uranium"=6000)
|
construction_cost = list("metal"=20000,"gold"=6000,"uranium"=6000)
|
||||||
|
|
||||||
|
|||||||
@@ -46,8 +46,8 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
// temporary fix for broken icon until somebody gets around to make these player-buildable
|
// temporary fix for broken icon until somebody gets around to make these player-buildable
|
||||||
/turf/simulated/floor/mech_bay_recharge_floor/attackby(obj/item/C as obj, mob/user as mob)
|
/turf/simulated/floor/mech_bay_recharge_floor/attackby(obj/item/C as obj, mob/user as mob)
|
||||||
..()
|
..()
|
||||||
if(floor_type)
|
if(floor_type)
|
||||||
icon_state = "recharge_floor"
|
icon_state = "recharge_floor"
|
||||||
else
|
else
|
||||||
@@ -190,45 +190,28 @@
|
|||||||
var/turf/simulated/floor/mech_bay_recharge_floor/F = locate() in range(1,src)
|
var/turf/simulated/floor/mech_bay_recharge_floor/F = locate() in range(1,src)
|
||||||
if(F)
|
if(F)
|
||||||
F.init_devices()
|
F.init_devices()
|
||||||
|
ui_interact(user)
|
||||||
var/output = "<html><head><title>[src.name]</title></head><body>"
|
|
||||||
if(!recharge_floor)
|
/obj/machinery/computer/mech_bay_power_console/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
output += "<font color='red'>Mech Bay Recharge Station not initialized.</font><br>"
|
var/list/data = list()
|
||||||
|
data["has_floor"] = recharge_floor
|
||||||
|
data["has_port"] = recharge_port
|
||||||
|
if(recharge_floor && recharge_floor.recharging_mecha && recharge_floor.recharging_mecha.cell)
|
||||||
|
data["has_mech"] = 1
|
||||||
|
data["mecha_name"] = recharge_floor.recharging_mecha || "None"
|
||||||
|
data["mecha_charge"] = isnull(recharge_floor.recharging_mecha) ? 0 : recharge_floor.recharging_mecha.cell.charge
|
||||||
|
data["mecha_maxcharge"] = isnull(recharge_floor.recharging_mecha) ? 0 : recharge_floor.recharging_mecha.cell.maxcharge
|
||||||
|
data["mecha_charge_percentage"] = isnull(recharge_floor.recharging_mecha) ? 0 : round(recharge_floor.recharging_mecha.cell.percent())
|
||||||
else
|
else
|
||||||
output += {"<b>Mech Bay Recharge Station Data:</b><div style='margin-left: 15px;'>
|
data["has_mech"] = 0
|
||||||
<b>Mecha: </b>[recharge_floor.recharging_mecha||"None"]<br>"}
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
if(recharge_floor.recharging_mecha)
|
if (!ui)
|
||||||
var/cell_charge = recharge_floor.recharging_mecha.get_charge()
|
// the ui does not exist, so we'll create a new() one
|
||||||
output += "<b>Cell charge: </b>[isnull(cell_charge)?"No powercell found":"[recharge_floor.recharging_mecha.cell.charge]/[recharge_floor.recharging_mecha.cell.maxcharge]"]<br>"
|
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
||||||
output += "</div>"
|
ui = new(user, src, ui_key, "mech_bay_console.tmpl", "Mech Bay Control Console", 500, 325)
|
||||||
if(!recharge_port)
|
// when the ui is first opened this is the data it will use
|
||||||
output += "<font color='red'>Mech Bay Power Port not initialized.</font><br>"
|
ui.set_initial_data(data)
|
||||||
else
|
// open the new ui window
|
||||||
output += "<b>Mech Bay Power Port Status: </b>[recharge_port.active()?"Now charging":"On hold"]<br>"
|
ui.open()
|
||||||
|
// auto update every Master Controller tick
|
||||||
/*
|
ui.set_auto_update(1)
|
||||||
output += {"<hr>
|
|
||||||
<b>Settings:</b>
|
|
||||||
<div style='margin-left: 15px;'>
|
|
||||||
<b>Start sequence on succesful init: </b><a href='?src=\ref[src];autostart=1'>[autostart?"On":"Off"]</a><br>
|
|
||||||
<b>Recharge Port Voltage: </b><a href='?src=\ref[src];voltage=30'>Low</a> - <a href='?src=\ref[src];voltage=45'>Medium</a> - <a href='?src=\ref[src];voltage=60'>High</a><br>
|
|
||||||
</div>"}
|
|
||||||
*/
|
|
||||||
|
|
||||||
output += "</ body></html>"
|
|
||||||
user << browse(output, "window=mech_bay_console")
|
|
||||||
onclose(user, "mech_bay_console")
|
|
||||||
return
|
|
||||||
|
|
||||||
// unused at the moment, also lacks any kind of exploit prevention
|
|
||||||
/*
|
|
||||||
/obj/machinery/computer/mech_bay_power_console/Topic(href, href_list)
|
|
||||||
if(href_list["autostart"])
|
|
||||||
autostart = !autostart
|
|
||||||
if(href_list["voltage"])
|
|
||||||
voltage = text2num(href_list["voltage"])
|
|
||||||
if(recharge_port)
|
|
||||||
recharge_port.set_voltage(voltage)
|
|
||||||
updateUsrDialog()
|
|
||||||
return
|
|
||||||
*/
|
|
||||||
@@ -203,6 +203,12 @@
|
|||||||
radio.talk_into(M, text)
|
radio.talk_into(M, text)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
/obj/mecha/see_emote(mob/living/M, text)
|
||||||
|
if(occupant && occupant.client)
|
||||||
|
var/rendered = "<span class='message'>[text]</span>"
|
||||||
|
occupant.show_message(rendered, 2)
|
||||||
|
..()
|
||||||
|
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
///// Action processing ////
|
///// Action processing ////
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
////// Mecha Parts //////
|
////// Mecha Parts //////
|
||||||
/////////////////////////
|
/////////////////////////
|
||||||
|
|
||||||
|
// Mecha circuitboards can be found in /code/game/objects/items/weapons/circuitboards/mecha.dm
|
||||||
|
|
||||||
/obj/item/mecha_parts
|
/obj/item/mecha_parts
|
||||||
name = "mecha part"
|
name = "mecha part"
|
||||||
icon = 'icons/mecha/mech_construct.dmi'
|
icon = 'icons/mecha/mech_construct.dmi'
|
||||||
@@ -347,90 +349,3 @@
|
|||||||
origin_tech = "materials=3;engineering=3"
|
origin_tech = "materials=3;engineering=3"
|
||||||
construction_time = 200
|
construction_time = 200
|
||||||
construction_cost = list("metal"=15000)*/
|
construction_cost = list("metal"=15000)*/
|
||||||
|
|
||||||
|
|
||||||
///////// Circuitboards
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/mecha
|
|
||||||
name = "Exosuit Circuit board"
|
|
||||||
icon = 'icons/obj/module.dmi'
|
|
||||||
icon_state = "std_mod"
|
|
||||||
item_state = "electronic"
|
|
||||||
board_type = "other"
|
|
||||||
flags = FPRINT | TABLEPASS | CONDUCT
|
|
||||||
force = 5.0
|
|
||||||
w_class = 2.0
|
|
||||||
throwforce = 5.0
|
|
||||||
throw_speed = 3
|
|
||||||
throw_range = 15
|
|
||||||
|
|
||||||
ripley
|
|
||||||
origin_tech = "programming=3"
|
|
||||||
|
|
||||||
ripley/peripherals
|
|
||||||
name = "Circuit board (Ripley Peripherals Control module)"
|
|
||||||
icon_state = "mcontroller"
|
|
||||||
|
|
||||||
ripley/main
|
|
||||||
name = "Circuit board (Ripley Central Control module)"
|
|
||||||
icon_state = "mainboard"
|
|
||||||
|
|
||||||
gygax
|
|
||||||
origin_tech = "programming=4"
|
|
||||||
|
|
||||||
gygax/peripherals
|
|
||||||
name = "Circuit board (Gygax Peripherals Control module)"
|
|
||||||
icon_state = "mcontroller"
|
|
||||||
|
|
||||||
gygax/targeting
|
|
||||||
name = "Circuit board (Gygax Weapon Control and Targeting module)"
|
|
||||||
icon_state = "mcontroller"
|
|
||||||
origin_tech = "programming=4;combat=4"
|
|
||||||
|
|
||||||
gygax/main
|
|
||||||
name = "Circuit board (Gygax Central Control module)"
|
|
||||||
icon_state = "mainboard"
|
|
||||||
|
|
||||||
durand
|
|
||||||
origin_tech = "programming=4"
|
|
||||||
|
|
||||||
durand/peripherals
|
|
||||||
name = "Circuit board (Durand Peripherals Control module)"
|
|
||||||
icon_state = "mcontroller"
|
|
||||||
|
|
||||||
durand/targeting
|
|
||||||
name = "Circuit board (Durand Weapon Control and Targeting module)"
|
|
||||||
icon_state = "mcontroller"
|
|
||||||
origin_tech = "programming=4;combat=4"
|
|
||||||
|
|
||||||
durand/main
|
|
||||||
name = "Circuit board (Durand Central Control module)"
|
|
||||||
icon_state = "mainboard"
|
|
||||||
|
|
||||||
honker
|
|
||||||
origin_tech = "programming=4"
|
|
||||||
|
|
||||||
honker/peripherals
|
|
||||||
name = "Circuit board (H.O.N.K Peripherals Control module)"
|
|
||||||
icon_state = "mcontroller"
|
|
||||||
|
|
||||||
honker/targeting
|
|
||||||
name = "Circuit board (H.O.N.K Weapon Control and Targeting module)"
|
|
||||||
icon_state = "mcontroller"
|
|
||||||
|
|
||||||
honker/main
|
|
||||||
name = "Circuit board (H.O.N.K Central Control module)"
|
|
||||||
icon_state = "mainboard"
|
|
||||||
|
|
||||||
odysseus
|
|
||||||
origin_tech = "programming=3"
|
|
||||||
|
|
||||||
odysseus/peripherals
|
|
||||||
name = "Circuit board (Odysseus Peripherals Control module)"
|
|
||||||
icon_state = "mcontroller"
|
|
||||||
|
|
||||||
odysseus/main
|
|
||||||
name = "Circuit board (Odysseus Central Control module)"
|
|
||||||
icon_state = "mainboard"
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,23 +1,28 @@
|
|||||||
/obj/effect/decal/remains/human
|
/obj/effect/decal/remains
|
||||||
name = "remains"
|
name = "remains"
|
||||||
desc = "They look like human remains. They have a strange aura about them."
|
|
||||||
gender = PLURAL
|
gender = PLURAL
|
||||||
icon = 'icons/effects/blood.dmi'
|
icon = 'icons/effects/blood.dmi'
|
||||||
icon_state = "remains"
|
icon_state = "remains"
|
||||||
anchored = 1
|
anchored = 0
|
||||||
|
|
||||||
|
/obj/effect/decal/remains/human
|
||||||
|
desc = "They look like human remains. They have a strange aura about them."
|
||||||
|
|
||||||
/obj/effect/decal/remains/xeno
|
/obj/effect/decal/remains/xeno
|
||||||
name = "remains"
|
|
||||||
desc = "They look like the remains of something... alien. They have a strange aura about them."
|
desc = "They look like the remains of something... alien. They have a strange aura about them."
|
||||||
gender = PLURAL
|
|
||||||
icon = 'icons/effects/blood.dmi'
|
|
||||||
icon_state = "remainsxeno"
|
icon_state = "remainsxeno"
|
||||||
anchored = 1
|
|
||||||
|
|
||||||
/obj/effect/decal/remains/robot
|
/obj/effect/decal/remains/robot
|
||||||
name = "remains"
|
|
||||||
desc = "They look like the remains of something mechanical. They have a strange aura about them."
|
desc = "They look like the remains of something mechanical. They have a strange aura about them."
|
||||||
gender = PLURAL
|
|
||||||
icon = 'icons/mob/robots.dmi'
|
icon = 'icons/mob/robots.dmi'
|
||||||
icon_state = "remainsrobot"
|
icon_state = "remainsrobot"
|
||||||
anchored = 1
|
|
||||||
|
/obj/effect/decal/remains/attack_hand(mob/user as mob)
|
||||||
|
user << "<span class='notice'>[src] sinks together into a pile of ash.</span>"
|
||||||
|
var/turf/simulated/floor/F = get_turf(src)
|
||||||
|
if (istype(F))
|
||||||
|
new /obj/effect/decal/cleanable/ash(F)
|
||||||
|
del(src)
|
||||||
|
|
||||||
|
/obj/effect/decal/remains/robot/attack_hand(mob/user as mob)
|
||||||
|
return
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
// APC HULL
|
// APC HULL
|
||||||
|
|
||||||
/obj/item/apc_frame
|
/obj/item/apc_frame
|
||||||
name = "APC frame"
|
name = "\improper APC frame"
|
||||||
desc = "Used for repairing or building APCs"
|
desc = "Used for repairing or building APCs"
|
||||||
icon = 'icons/obj/apc_repair.dmi'
|
icon = 'icons/obj/apc_repair.dmi'
|
||||||
icon_state = "apc_frame"
|
icon_state = "apc_frame"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
//Illicit drugs~
|
//Illicit drugs~
|
||||||
/obj/item/weapon/storage/pill_bottle/happy
|
/obj/item/weapon/storage/pill_bottle/happy
|
||||||
name = "Happy pills"
|
name = "bottle of Happy pills"
|
||||||
desc = "Highly illegal drug. When you want to see the rainbow."
|
desc = "Highly illegal drug. When you want to see the rainbow."
|
||||||
|
|
||||||
/obj/item/weapon/storage/pill_bottle/happy/New()
|
/obj/item/weapon/storage/pill_bottle/happy/New()
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
new /obj/item/weapon/reagent_containers/pill/happy( src )
|
new /obj/item/weapon/reagent_containers/pill/happy( src )
|
||||||
|
|
||||||
/obj/item/weapon/storage/pill_bottle/zoom
|
/obj/item/weapon/storage/pill_bottle/zoom
|
||||||
name = "Zoom pills"
|
name = "bottle of Zoom pills"
|
||||||
desc = "Highly illegal drug. Trade brain for speed."
|
desc = "Highly illegal drug. Trade brain for speed."
|
||||||
|
|
||||||
/obj/item/weapon/storage/pill_bottle/zoom/New()
|
/obj/item/weapon/storage/pill_bottle/zoom/New()
|
||||||
@@ -27,4 +27,4 @@
|
|||||||
new /obj/item/weapon/reagent_containers/pill/zoom( src )
|
new /obj/item/weapon/reagent_containers/pill/zoom( src )
|
||||||
new /obj/item/weapon/reagent_containers/pill/zoom( src )
|
new /obj/item/weapon/reagent_containers/pill/zoom( src )
|
||||||
new /obj/item/weapon/reagent_containers/pill/zoom( src )
|
new /obj/item/weapon/reagent_containers/pill/zoom( src )
|
||||||
new /obj/item/weapon/reagent_containers/pill/zoom( src )
|
new /obj/item/weapon/reagent_containers/pill/zoom( src )
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
var/global/list/obj/item/device/pda/PDAs = list()
|
var/global/list/obj/item/device/pda/PDAs = list()
|
||||||
|
|
||||||
/obj/item/device/pda
|
/obj/item/device/pda
|
||||||
name = "PDA"
|
name = "\improper PDA"
|
||||||
desc = "A portable microcomputer by Thinktronic Systems, LTD. Functionality determined by a preprogrammed ROM cartridge."
|
desc = "A portable microcomputer by Thinktronic Systems, LTD. Functionality determined by a preprogrammed ROM cartridge."
|
||||||
icon = 'icons/obj/pda.dmi'
|
icon = 'icons/obj/pda.dmi'
|
||||||
icon_state = "pda"
|
icon_state = "pda"
|
||||||
@@ -1391,7 +1391,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
|
|
||||||
//Some spare PDAs in a box
|
//Some spare PDAs in a box
|
||||||
/obj/item/weapon/storage/box/PDAs
|
/obj/item/weapon/storage/box/PDAs
|
||||||
name = "spare PDAs"
|
name = "box of spare PDAs"
|
||||||
desc = "A box of spare PDA microcomputers."
|
desc = "A box of spare PDA microcomputers."
|
||||||
icon = 'icons/obj/pda.dmi'
|
icon = 'icons/obj/pda.dmi'
|
||||||
icon_state = "pdabox"
|
icon_state = "pdabox"
|
||||||
@@ -1414,4 +1414,4 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
// Pass along the pulse to atoms in contents, largely added so pAIs are vulnerable to EMP
|
// Pass along the pulse to atoms in contents, largely added so pAIs are vulnerable to EMP
|
||||||
/obj/item/device/pda/emp_act(severity)
|
/obj/item/device/pda/emp_act(severity)
|
||||||
for(var/atom/A in src)
|
for(var/atom/A in src)
|
||||||
A.emp_act(severity)
|
A.emp_act(severity)
|
||||||
|
|||||||
@@ -35,27 +35,27 @@
|
|||||||
var/list/stored_data = list()
|
var/list/stored_data = list()
|
||||||
|
|
||||||
/obj/item/weapon/cartridge/engineering
|
/obj/item/weapon/cartridge/engineering
|
||||||
name = "Power-ON Cartridge"
|
name = "\improper Power-ON cartridge"
|
||||||
icon_state = "cart-e"
|
icon_state = "cart-e"
|
||||||
access_engine = 1
|
access_engine = 1
|
||||||
|
|
||||||
/obj/item/weapon/cartridge/atmos
|
/obj/item/weapon/cartridge/atmos
|
||||||
name = "BreatheDeep Cartridge"
|
name = "\improper BreatheDeep cartridge"
|
||||||
icon_state = "cart-a"
|
icon_state = "cart-a"
|
||||||
access_atmos = 1
|
access_atmos = 1
|
||||||
|
|
||||||
/obj/item/weapon/cartridge/medical
|
/obj/item/weapon/cartridge/medical
|
||||||
name = "Med-U Cartridge"
|
name = "\improper Med-U cartridge"
|
||||||
icon_state = "cart-m"
|
icon_state = "cart-m"
|
||||||
access_medical = 1
|
access_medical = 1
|
||||||
|
|
||||||
/obj/item/weapon/cartridge/chemistry
|
/obj/item/weapon/cartridge/chemistry
|
||||||
name = "ChemWhiz Cartridge"
|
name = "\improper ChemWhiz cartridge"
|
||||||
icon_state = "cart-chem"
|
icon_state = "cart-chem"
|
||||||
access_reagent_scanner = 1
|
access_reagent_scanner = 1
|
||||||
|
|
||||||
/obj/item/weapon/cartridge/security
|
/obj/item/weapon/cartridge/security
|
||||||
name = "R.O.B.U.S.T. Cartridge"
|
name = "\improper R.O.B.U.S.T. cartridge"
|
||||||
icon_state = "cart-s"
|
icon_state = "cart-s"
|
||||||
access_security = 1
|
access_security = 1
|
||||||
|
|
||||||
@@ -65,31 +65,31 @@
|
|||||||
radio = new /obj/item/radio/integrated/beepsky(src)
|
radio = new /obj/item/radio/integrated/beepsky(src)
|
||||||
|
|
||||||
/obj/item/weapon/cartridge/detective
|
/obj/item/weapon/cartridge/detective
|
||||||
name = "D.E.T.E.C.T. Cartridge"
|
name = "\improper D.E.T.E.C.T. cartridge"
|
||||||
icon_state = "cart-s"
|
icon_state = "cart-s"
|
||||||
access_security = 1
|
access_security = 1
|
||||||
access_medical = 1
|
access_medical = 1
|
||||||
|
|
||||||
|
|
||||||
/obj/item/weapon/cartridge/janitor
|
/obj/item/weapon/cartridge/janitor
|
||||||
name = "CustodiPRO Cartridge"
|
name = "\improper CustodiPRO cartridge"
|
||||||
desc = "The ultimate in clean-room design."
|
desc = "The ultimate in clean-room design."
|
||||||
icon_state = "cart-j"
|
icon_state = "cart-j"
|
||||||
access_janitor = 1
|
access_janitor = 1
|
||||||
|
|
||||||
/obj/item/weapon/cartridge/lawyer
|
/obj/item/weapon/cartridge/lawyer
|
||||||
name = "P.R.O.V.E. Cartridge"
|
name = "\improper P.R.O.V.E. cartridge"
|
||||||
icon_state = "cart-s"
|
icon_state = "cart-s"
|
||||||
access_security = 1
|
access_security = 1
|
||||||
|
|
||||||
/obj/item/weapon/cartridge/clown
|
/obj/item/weapon/cartridge/clown
|
||||||
name = "Honkworks 5.0"
|
name = "\improper Honkworks 5.0 cartridge"
|
||||||
icon_state = "cart-clown"
|
icon_state = "cart-clown"
|
||||||
access_clown = 1
|
access_clown = 1
|
||||||
charges = 5
|
charges = 5
|
||||||
|
|
||||||
/obj/item/weapon/cartridge/mime
|
/obj/item/weapon/cartridge/mime
|
||||||
name = "Gestur-O 1000"
|
name = "\improper Gestur-O 1000 cartridge"
|
||||||
icon_state = "cart-mi"
|
icon_state = "cart-mi"
|
||||||
access_mime = 1
|
access_mime = 1
|
||||||
charges = 5
|
charges = 5
|
||||||
@@ -105,7 +105,7 @@
|
|||||||
desc = "A data cartridge with an integrated radio signaler module."
|
desc = "A data cartridge with an integrated radio signaler module."
|
||||||
|
|
||||||
/obj/item/weapon/cartridge/signal/science
|
/obj/item/weapon/cartridge/signal/science
|
||||||
name = "Signal Ace 2"
|
name = "\improper Signal Ace 2 cartridge"
|
||||||
desc = "Complete with integrated radio signaler!"
|
desc = "Complete with integrated radio signaler!"
|
||||||
icon_state = "cart-tox"
|
icon_state = "cart-tox"
|
||||||
access_reagent_scanner = 1
|
access_reagent_scanner = 1
|
||||||
@@ -119,7 +119,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/obj/item/weapon/cartridge/quartermaster
|
/obj/item/weapon/cartridge/quartermaster
|
||||||
name = "Space Parts & Space Vendors Cartridge"
|
name = "\improper Space Parts & Space Vendors cartridge"
|
||||||
desc = "Perfect for the Quartermaster on the go!"
|
desc = "Perfect for the Quartermaster on the go!"
|
||||||
icon_state = "cart-q"
|
icon_state = "cart-q"
|
||||||
access_quartermaster = 1
|
access_quartermaster = 1
|
||||||
@@ -130,12 +130,12 @@
|
|||||||
radio = new /obj/item/radio/integrated/mule(src)
|
radio = new /obj/item/radio/integrated/mule(src)
|
||||||
|
|
||||||
/obj/item/weapon/cartridge/head
|
/obj/item/weapon/cartridge/head
|
||||||
name = "Easy-Record DELUXE"
|
name = "\improper Easy-Record DELUXE"
|
||||||
icon_state = "cart-h"
|
icon_state = "cart-h"
|
||||||
access_status_display = 1
|
access_status_display = 1
|
||||||
|
|
||||||
/obj/item/weapon/cartridge/hop
|
/obj/item/weapon/cartridge/hop
|
||||||
name = "HumanResources9001"
|
name = "\improper HumanResources9001 cartridge"
|
||||||
icon_state = "cart-h"
|
icon_state = "cart-h"
|
||||||
access_status_display = 1
|
access_status_display = 1
|
||||||
access_quartermaster = 1
|
access_quartermaster = 1
|
||||||
@@ -148,7 +148,7 @@
|
|||||||
radio = new /obj/item/radio/integrated/mule(src)
|
radio = new /obj/item/radio/integrated/mule(src)
|
||||||
|
|
||||||
/obj/item/weapon/cartridge/hos
|
/obj/item/weapon/cartridge/hos
|
||||||
name = "R.O.B.U.S.T. DELUXE"
|
name = "\improper R.O.B.U.S.T. DELUXE"
|
||||||
icon_state = "cart-hos"
|
icon_state = "cart-hos"
|
||||||
access_status_display = 1
|
access_status_display = 1
|
||||||
access_security = 1
|
access_security = 1
|
||||||
@@ -159,21 +159,21 @@
|
|||||||
radio = new /obj/item/radio/integrated/beepsky(src)
|
radio = new /obj/item/radio/integrated/beepsky(src)
|
||||||
|
|
||||||
/obj/item/weapon/cartridge/ce
|
/obj/item/weapon/cartridge/ce
|
||||||
name = "Power-On DELUXE"
|
name = "\improper Power-On DELUXE"
|
||||||
icon_state = "cart-ce"
|
icon_state = "cart-ce"
|
||||||
access_status_display = 1
|
access_status_display = 1
|
||||||
access_engine = 1
|
access_engine = 1
|
||||||
access_atmos = 1
|
access_atmos = 1
|
||||||
|
|
||||||
/obj/item/weapon/cartridge/cmo
|
/obj/item/weapon/cartridge/cmo
|
||||||
name = "Med-U DELUXE"
|
name = "\improper Med-U DELUXE"
|
||||||
icon_state = "cart-cmo"
|
icon_state = "cart-cmo"
|
||||||
access_status_display = 1
|
access_status_display = 1
|
||||||
access_reagent_scanner = 1
|
access_reagent_scanner = 1
|
||||||
access_medical = 1
|
access_medical = 1
|
||||||
|
|
||||||
/obj/item/weapon/cartridge/rd
|
/obj/item/weapon/cartridge/rd
|
||||||
name = "Signal Ace DELUXE"
|
name = "\improper Signal Ace DELUXE"
|
||||||
icon_state = "cart-rd"
|
icon_state = "cart-rd"
|
||||||
access_status_display = 1
|
access_status_display = 1
|
||||||
access_reagent_scanner = 1
|
access_reagent_scanner = 1
|
||||||
@@ -185,7 +185,7 @@
|
|||||||
radio = new /obj/item/radio/integrated/signal(src)
|
radio = new /obj/item/radio/integrated/signal(src)
|
||||||
|
|
||||||
/obj/item/weapon/cartridge/captain
|
/obj/item/weapon/cartridge/captain
|
||||||
name = "Value-PAK Cartridge"
|
name = "\improper Value-PAK cartridge"
|
||||||
desc = "Now with 200% more value!"
|
desc = "Now with 200% more value!"
|
||||||
icon_state = "cart-c"
|
icon_state = "cart-c"
|
||||||
access_quartermaster = 1
|
access_quartermaster = 1
|
||||||
@@ -198,7 +198,7 @@
|
|||||||
access_atmos = 1
|
access_atmos = 1
|
||||||
|
|
||||||
/obj/item/weapon/cartridge/syndicate
|
/obj/item/weapon/cartridge/syndicate
|
||||||
name = "Detomatix Cartridge"
|
name = "\improper Detomatix cartridge"
|
||||||
icon_state = "cart"
|
icon_state = "cart"
|
||||||
access_remote_door = 1
|
access_remote_door = 1
|
||||||
access_detonate_pda = 1
|
access_detonate_pda = 1
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/obj/item/radio/integrated
|
/obj/item/radio/integrated
|
||||||
name = "PDA radio module"
|
name = "\improper PDA radio module"
|
||||||
desc = "An electronic radio system of nanotrasen origin."
|
desc = "An electronic radio system of nanotrasen origin."
|
||||||
icon = 'icons/obj/module.dmi'
|
icon = 'icons/obj/module.dmi'
|
||||||
icon_state = "power_mod"
|
icon_state = "power_mod"
|
||||||
|
|||||||
@@ -9,6 +9,8 @@
|
|||||||
var/flush = null
|
var/flush = null
|
||||||
origin_tech = "programming=4;materials=4"
|
origin_tech = "programming=4;materials=4"
|
||||||
|
|
||||||
|
var/mob/living/silicon/ai/carded_ai
|
||||||
|
|
||||||
/obj/item/device/aicard/attack(mob/living/silicon/decoy/M as mob, mob/user as mob)
|
/obj/item/device/aicard/attack(mob/living/silicon/decoy/M as mob, mob/user as mob)
|
||||||
if (!istype (M, /mob/living/silicon/decoy))
|
if (!istype (M, /mob/living/silicon/decoy))
|
||||||
return ..()
|
return ..()
|
||||||
@@ -151,6 +153,8 @@
|
|||||||
ai.control_disabled = 1
|
ai.control_disabled = 1
|
||||||
ai.aiRestorePowerRoutine = 0
|
ai.aiRestorePowerRoutine = 0
|
||||||
ai.aiRadio.disabledAi = 1
|
ai.aiRadio.disabledAi = 1
|
||||||
|
carded_ai = ai
|
||||||
|
|
||||||
|
|
||||||
ai.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been carded with [src.name] by [user.name] ([user.ckey])</font>")
|
ai.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been carded with [src.name] by [user.name] ([user.ckey])</font>")
|
||||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to card [ai.name] ([ai.ckey])</font>")
|
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to card [ai.name] ([ai.ckey])</font>")
|
||||||
@@ -166,11 +170,18 @@
|
|||||||
|
|
||||||
/obj/item/device/aicard/proc/clear()
|
/obj/item/device/aicard/proc/clear()
|
||||||
name = "inteliCard"
|
name = "inteliCard"
|
||||||
|
carded_ai = null
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
|
/obj/item/device/aicard/see_emote(mob/living/M, text)
|
||||||
|
if(carded_ai && carded_ai.client)
|
||||||
|
var/rendered = "<span class='message'>[text]</span>"
|
||||||
|
carded_ai.show_message(rendered, 2)
|
||||||
|
..()
|
||||||
/*
|
/*
|
||||||
/obj/item/device/aicard/relaymove(var/mob/user, var/direction)
|
/obj/item/device/aicard/relaymove(var/mob/user, var/direction)
|
||||||
if(src.loc && istype(src.loc.loc, /obj/item/rig_module))
|
if(src.loc && istype(src.loc.loc, /obj/item/rig_module))
|
||||||
var/obj/item/rig_module/module = src.loc.loc
|
var/obj/item/rig_module/module = src.loc.loc
|
||||||
if(!module.holder || !direction)
|
if(!module.holder || !direction)
|
||||||
return
|
return
|
||||||
module.holder.forced_move(direction)*/
|
module.holder.forced_move(direction)*/
|
||||||
|
|||||||
@@ -15,4 +15,4 @@
|
|||||||
|
|
||||||
|
|
||||||
/obj/item/device/binoculars/attack_self(mob/user)
|
/obj/item/device/binoculars/attack_self(mob/user)
|
||||||
zoom()
|
zoom()
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/obj/item/device/chameleon
|
/obj/item/device/chameleon
|
||||||
name = "chameleon-projector"
|
name = "chameleon projector"
|
||||||
icon_state = "shield0"
|
icon_state = "shield0"
|
||||||
flags = FPRINT | TABLEPASS| CONDUCT
|
flags = FPRINT | TABLEPASS| CONDUCT
|
||||||
slot_flags = SLOT_BELT
|
slot_flags = SLOT_BELT
|
||||||
@@ -142,4 +142,4 @@
|
|||||||
|
|
||||||
/obj/effect/dummy/chameleon/Del()
|
/obj/effect/dummy/chameleon/Del()
|
||||||
master.disrupt(0)
|
master.disrupt(0)
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -5,9 +5,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/obj/item/device/debugger
|
/obj/item/device/debugger
|
||||||
icon = 'icons/obj/hacktool.dmi'
|
|
||||||
name = "debugger"
|
name = "debugger"
|
||||||
desc = "Used to debug electronic equipment."
|
desc = "Used to debug electronic equipment."
|
||||||
|
icon = 'icons/obj/hacktool.dmi'
|
||||||
icon_state = "hacktool-g"
|
icon_state = "hacktool-g"
|
||||||
flags = FPRINT | TABLEPASS| CONDUCT
|
flags = FPRINT | TABLEPASS| CONDUCT
|
||||||
force = 5.0
|
force = 5.0
|
||||||
@@ -43,4 +43,4 @@
|
|||||||
user << "\red There is a software error with the device."
|
user << "\red There is a software error with the device."
|
||||||
else
|
else
|
||||||
user << "\blue The device's software appears to be fine."
|
user << "\blue The device's software appears to be fine."
|
||||||
return 1
|
return 1
|
||||||
|
|||||||
@@ -223,4 +223,4 @@
|
|||||||
icon_state = initial(icon_state)
|
icon_state = initial(icon_state)
|
||||||
|
|
||||||
/obj/item/device/flashlight/slime/attack_self(mob/user)
|
/obj/item/device/flashlight/slime/attack_self(mob/user)
|
||||||
return //Bio-luminescence does not toggle.
|
return //Bio-luminescence does not toggle.
|
||||||
|
|||||||
@@ -191,4 +191,4 @@
|
|||||||
#undef LIGHT_OK
|
#undef LIGHT_OK
|
||||||
#undef LIGHT_EMPTY
|
#undef LIGHT_EMPTY
|
||||||
#undef LIGHT_BROKEN
|
#undef LIGHT_BROKEN
|
||||||
#undef LIGHT_BURNED
|
#undef LIGHT_BURNED
|
||||||
|
|||||||
@@ -52,4 +52,4 @@
|
|||||||
emagged = 1
|
emagged = 1
|
||||||
insults = rand(1, 3)//to prevent dickflooding
|
insults = rand(1, 3)//to prevent dickflooding
|
||||||
return
|
return
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -69,4 +69,4 @@
|
|||||||
/obj/item/device/modkit/tajaran
|
/obj/item/device/modkit/tajaran
|
||||||
name = "tajaran hardsuit modification kit"
|
name = "tajaran hardsuit modification kit"
|
||||||
desc = "A kit containing all the needed tools and parts to modify a hardsuit for another user. This one looks like it's meant for Tajaran."
|
desc = "A kit containing all the needed tools and parts to modify a hardsuit for another user. This one looks like it's meant for Tajaran."
|
||||||
target_species = "Tajara"
|
target_species = "Tajara"
|
||||||
|
|||||||
@@ -19,4 +19,4 @@
|
|||||||
matter = list("metal" = 50,"glass" = 20)
|
matter = list("metal" = 50,"glass" = 20)
|
||||||
|
|
||||||
origin_tech = "magnets=1;engineering=1"
|
origin_tech = "magnets=1;engineering=1"
|
||||||
var/obj/machinery/telecomms/buffer // simple machine buffer for device linkage
|
var/obj/machinery/telecomms/buffer // simple machine buffer for device linkage
|
||||||
|
|||||||
@@ -304,10 +304,15 @@
|
|||||||
/obj/item/device/paicard/emp_act(severity)
|
/obj/item/device/paicard/emp_act(severity)
|
||||||
for(var/mob/M in src)
|
for(var/mob/M in src)
|
||||||
M.emp_act(severity)
|
M.emp_act(severity)
|
||||||
..()
|
|
||||||
|
|
||||||
/obj/item/device/paicard/ex_act(severity)
|
/obj/item/device/paicard/ex_act(severity)
|
||||||
if(pai)
|
if(pai)
|
||||||
pai.ex_act(severity)
|
pai.ex_act(severity)
|
||||||
else
|
else
|
||||||
del(src)
|
del(src)
|
||||||
|
|
||||||
|
/obj/item/device/paicard/see_emote(mob/living/M, text)
|
||||||
|
if(pai && pai.client)
|
||||||
|
var/rendered = "<span class='message'>[text]</span>"
|
||||||
|
pai.show_message(rendered, 2)
|
||||||
|
..()
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
// Powersink - used to drain station power
|
// Powersink - used to drain station power
|
||||||
|
|
||||||
/obj/item/device/powersink
|
/obj/item/device/powersink
|
||||||
desc = "A nulling power sink which drains energy from electrical systems."
|
|
||||||
name = "power sink"
|
name = "power sink"
|
||||||
|
desc = "A nulling power sink which drains energy from electrical systems."
|
||||||
icon_state = "powersink0"
|
icon_state = "powersink0"
|
||||||
item_state = "electronic"
|
item_state = "electronic"
|
||||||
w_class = 4.0
|
w_class = 4.0
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/obj/item/device/radio/beacon
|
/obj/item/device/radio/beacon
|
||||||
name = "Tracking Beacon"
|
name = "tracking beacon"
|
||||||
desc = "A beacon used by a teleporter."
|
desc = "A beacon used by a teleporter."
|
||||||
icon_state = "beacon"
|
icon_state = "beacon"
|
||||||
item_state = "signaler"
|
item_state = "signaler"
|
||||||
@@ -46,4 +46,4 @@
|
|||||||
new /obj/machinery/power/singularity_beacon/syndicate( user.loc )
|
new /obj/machinery/power/singularity_beacon/syndicate( user.loc )
|
||||||
playsound(src, 'sound/effects/pop.ogg', 100, 1, 1)
|
playsound(src, 'sound/effects/pop.ogg', 100, 1, 1)
|
||||||
del(src)
|
del(src)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
/obj/item/device/encryptionkey/
|
/obj/item/device/encryptionkey/
|
||||||
name = "Standard Encrpytion Key"
|
name = "standard encrpytion key"
|
||||||
desc = "An encryption key for a radio headset. Contains cypherkeys."
|
desc = "An encryption key for a radio headset. Contains cypherkeys."
|
||||||
icon = 'icons/obj/radio.dmi'
|
icon = 'icons/obj/radio.dmi'
|
||||||
icon_state = "cypherkey"
|
icon_state = "cypherkey"
|
||||||
@@ -28,96 +28,96 @@
|
|||||||
origin_tech = "syndicate=3"
|
origin_tech = "syndicate=3"
|
||||||
|
|
||||||
/obj/item/device/encryptionkey/headset_sec
|
/obj/item/device/encryptionkey/headset_sec
|
||||||
name = "Security Radio Encryption Key"
|
name = "security radio encryption key"
|
||||||
icon_state = "sec_cypherkey"
|
icon_state = "sec_cypherkey"
|
||||||
channels = list("Security" = 1)
|
channels = list("Security" = 1)
|
||||||
|
|
||||||
/obj/item/device/encryptionkey/headset_eng
|
/obj/item/device/encryptionkey/headset_eng
|
||||||
name = "Engineering Radio Encryption Key"
|
name = "engineering radio encryption key"
|
||||||
icon_state = "eng_cypherkey"
|
icon_state = "eng_cypherkey"
|
||||||
channels = list("Engineering" = 1)
|
channels = list("Engineering" = 1)
|
||||||
|
|
||||||
/obj/item/device/encryptionkey/headset_rob
|
/obj/item/device/encryptionkey/headset_rob
|
||||||
name = "Robotics Radio Encryption Key"
|
name = "robotics radio encryption key"
|
||||||
icon_state = "rob_cypherkey"
|
icon_state = "rob_cypherkey"
|
||||||
channels = list("Engineering" = 1, "Science" = 1)
|
channels = list("Engineering" = 1, "Science" = 1)
|
||||||
|
|
||||||
/obj/item/device/encryptionkey/headset_med
|
/obj/item/device/encryptionkey/headset_med
|
||||||
name = "Medical Radio Encryption Key"
|
name = "medical radio encryption key"
|
||||||
icon_state = "med_cypherkey"
|
icon_state = "med_cypherkey"
|
||||||
channels = list("Medical" = 1)
|
channels = list("Medical" = 1)
|
||||||
|
|
||||||
/obj/item/device/encryptionkey/headset_sci
|
/obj/item/device/encryptionkey/headset_sci
|
||||||
name = "Science Radio Encryption Key"
|
name = "science radio encryption key"
|
||||||
icon_state = "sci_cypherkey"
|
icon_state = "sci_cypherkey"
|
||||||
channels = list("Science" = 1)
|
channels = list("Science" = 1)
|
||||||
|
|
||||||
/obj/item/device/encryptionkey/headset_medsci
|
/obj/item/device/encryptionkey/headset_medsci
|
||||||
name = "Medical Research Radio Encryption Key"
|
name = "medical research radio encryption key"
|
||||||
icon_state = "medsci_cypherkey"
|
icon_state = "medsci_cypherkey"
|
||||||
channels = list("Medical" = 1, "Science" = 1)
|
channels = list("Medical" = 1, "Science" = 1)
|
||||||
|
|
||||||
/obj/item/device/encryptionkey/headset_com
|
/obj/item/device/encryptionkey/headset_com
|
||||||
name = "Command Radio Encryption Key"
|
name = "command radio encryption key"
|
||||||
icon_state = "com_cypherkey"
|
icon_state = "com_cypherkey"
|
||||||
channels = list("Command" = 1)
|
channels = list("Command" = 1)
|
||||||
|
|
||||||
/obj/item/device/encryptionkey/heads/captain
|
/obj/item/device/encryptionkey/heads/captain
|
||||||
name = "Captain's Encryption Key"
|
name = "captain's encryption key"
|
||||||
icon_state = "cap_cypherkey"
|
icon_state = "cap_cypherkey"
|
||||||
channels = list("Command" = 1, "Security" = 1, "Engineering" = 0, "Science" = 0, "Medical" = 0, "Supply" = 0, "Service" = 0)
|
channels = list("Command" = 1, "Security" = 1, "Engineering" = 0, "Science" = 0, "Medical" = 0, "Supply" = 0, "Service" = 0)
|
||||||
|
|
||||||
/obj/item/device/encryptionkey/heads/ai_integrated
|
/obj/item/device/encryptionkey/heads/ai_integrated
|
||||||
name = "AI Integrated Encryption Key"
|
name = "ai integrated encryption key"
|
||||||
desc = "Integrated encryption key"
|
desc = "Integrated encryption key"
|
||||||
icon_state = "cap_cypherkey"
|
icon_state = "cap_cypherkey"
|
||||||
channels = list("Command" = 1, "Security" = 1, "Engineering" = 1, "Science" = 1, "Medical" = 1, "Supply" = 1, "Service" = 1, "AI Private" = 1)
|
channels = list("Command" = 1, "Security" = 1, "Engineering" = 1, "Science" = 1, "Medical" = 1, "Supply" = 1, "Service" = 1, "AI Private" = 1)
|
||||||
|
|
||||||
/obj/item/device/encryptionkey/heads/rd
|
/obj/item/device/encryptionkey/heads/rd
|
||||||
name = "Research Director's Encryption Key"
|
name = "research director's encryption key"
|
||||||
icon_state = "rd_cypherkey"
|
icon_state = "rd_cypherkey"
|
||||||
channels = list("Science" = 1, "Command" = 1)
|
channels = list("Science" = 1, "Command" = 1)
|
||||||
|
|
||||||
/obj/item/device/encryptionkey/heads/hos
|
/obj/item/device/encryptionkey/heads/hos
|
||||||
name = "Head of Security's Encryption Key"
|
name = "head of security's encryption key"
|
||||||
icon_state = "hos_cypherkey"
|
icon_state = "hos_cypherkey"
|
||||||
channels = list("Security" = 1, "Command" = 1)
|
channels = list("Security" = 1, "Command" = 1)
|
||||||
|
|
||||||
/obj/item/device/encryptionkey/heads/ce
|
/obj/item/device/encryptionkey/heads/ce
|
||||||
name = "Chief Engineer's Encryption Key"
|
name = "chief engineer's encryption key"
|
||||||
icon_state = "ce_cypherkey"
|
icon_state = "ce_cypherkey"
|
||||||
channels = list("Engineering" = 1, "Command" = 1)
|
channels = list("Engineering" = 1, "Command" = 1)
|
||||||
|
|
||||||
/obj/item/device/encryptionkey/heads/cmo
|
/obj/item/device/encryptionkey/heads/cmo
|
||||||
name = "Chief Medical Officer's Encryption Key"
|
name = "chief medical officer's encryption key"
|
||||||
icon_state = "cmo_cypherkey"
|
icon_state = "cmo_cypherkey"
|
||||||
channels = list("Medical" = 1, "Command" = 1)
|
channels = list("Medical" = 1, "Command" = 1)
|
||||||
|
|
||||||
/obj/item/device/encryptionkey/heads/hop
|
/obj/item/device/encryptionkey/heads/hop
|
||||||
name = "Head of Personnel's Encryption Key"
|
name = "head of personnel's encryption key"
|
||||||
icon_state = "hop_cypherkey"
|
icon_state = "hop_cypherkey"
|
||||||
channels = list("Supply" = 1, "Service" = 1, "Command" = 1, "Security" = 0)
|
channels = list("Supply" = 1, "Service" = 1, "Command" = 1, "Security" = 0)
|
||||||
/*
|
/*
|
||||||
/obj/item/device/encryptionkey/headset_mine
|
/obj/item/device/encryptionkey/headset_mine
|
||||||
name = "Mining Radio Encryption Key"
|
name = "mining radio encryption key"
|
||||||
icon_state = "mine_cypherkey"
|
icon_state = "mine_cypherkey"
|
||||||
channels = list("Mining" = 1)
|
channels = list("Mining" = 1)
|
||||||
|
|
||||||
/obj/item/device/encryptionkey/heads/qm
|
/obj/item/device/encryptionkey/heads/qm
|
||||||
name = "Quartermaster's Encryption Key"
|
name = "quartermaster's encryption key"
|
||||||
icon_state = "qm_cypherkey"
|
icon_state = "qm_cypherkey"
|
||||||
channels = list("Cargo" = 1, "Mining" = 1)
|
channels = list("Cargo" = 1, "Mining" = 1)
|
||||||
*/
|
*/
|
||||||
/obj/item/device/encryptionkey/headset_cargo
|
/obj/item/device/encryptionkey/headset_cargo
|
||||||
name = "Supply Radio Encryption Key"
|
name = "supply radio encryption key"
|
||||||
icon_state = "cargo_cypherkey"
|
icon_state = "cargo_cypherkey"
|
||||||
channels = list("Supply" = 1)
|
channels = list("Supply" = 1)
|
||||||
|
|
||||||
/obj/item/device/encryptionkey/headset_service
|
/obj/item/device/encryptionkey/headset_service
|
||||||
name = "Service Radio Encryption Key"
|
name = "service radio encryption key"
|
||||||
icon_state = "srv_cypherkey"
|
icon_state = "srv_cypherkey"
|
||||||
channels = list("Service" = 1)
|
channels = list("Service" = 1)
|
||||||
|
|
||||||
/obj/item/device/encryptionkey/ert
|
/obj/item/device/encryptionkey/ert
|
||||||
name = "NanoTrasen ERT Radio Encryption Key"
|
name = "\improper NanoTrasen ERT radio encryption key"
|
||||||
channels = list("Response Team" = 1, "Science" = 1, "Command" = 1, "Medical" = 1, "Engineering" = 1, "Security" = 1, "Supply" = 1, "Service" = 1)
|
channels = list("Response Team" = 1, "Science" = 1, "Command" = 1, "Medical" = 1, "Engineering" = 1, "Security" = 1, "Supply" = 1, "Service" = 1)
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
user << "The following channels are built-in:"
|
user << "The following channels are built-in:"
|
||||||
user << radio_desc
|
user << radio_desc
|
||||||
|
|
||||||
/obj/item/device/radio/headset/handle_message_mode(mob/living/M as mob, message, channel)
|
/obj/item/device/radio/headset/handle_message_mode(mob/living/M as mob, message, channel)
|
||||||
if (channel == "special")
|
if (channel == "special")
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
|
|
||||||
/obj/item/device/radio/headset/binary
|
/obj/item/device/radio/headset/binary
|
||||||
origin_tech = "syndicate=3"
|
origin_tech = "syndicate=3"
|
||||||
ks1type = /obj/item/device/encryptionkey/binary
|
ks1type = /obj/item/device/encryptionkey/binary
|
||||||
|
|
||||||
/obj/item/device/radio/headset/headset_sec
|
/obj/item/device/radio/headset/headset_sec
|
||||||
name = "security radio headset"
|
name = "security radio headset"
|
||||||
@@ -120,7 +120,7 @@
|
|||||||
ks2type = /obj/item/device/encryptionkey/heads/captain
|
ks2type = /obj/item/device/encryptionkey/heads/captain
|
||||||
|
|
||||||
/obj/item/device/radio/headset/heads/ai_integrated //No need to care about icons, it should be hidden inside the AI anyway.
|
/obj/item/device/radio/headset/heads/ai_integrated //No need to care about icons, it should be hidden inside the AI anyway.
|
||||||
name = "AI Subspace Transceiver"
|
name = "\improper AI subspace transceiver"
|
||||||
desc = "Integrated AI radio transceiver."
|
desc = "Integrated AI radio transceiver."
|
||||||
icon = 'icons/obj/robot_component.dmi'
|
icon = 'icons/obj/robot_component.dmi'
|
||||||
icon_state = "radio"
|
icon_state = "radio"
|
||||||
@@ -135,7 +135,7 @@
|
|||||||
return ..(freq, level, 1)
|
return ..(freq, level, 1)
|
||||||
|
|
||||||
/obj/item/device/radio/headset/heads/rd
|
/obj/item/device/radio/headset/heads/rd
|
||||||
name = "Research Director's headset"
|
name = "research director's headset"
|
||||||
desc = "Headset of the researching God."
|
desc = "Headset of the researching God."
|
||||||
icon_state = "com_headset"
|
icon_state = "com_headset"
|
||||||
item_state = "headset"
|
item_state = "headset"
|
||||||
@@ -198,7 +198,7 @@
|
|||||||
ks2type = /obj/item/device/encryptionkey/headset_service
|
ks2type = /obj/item/device/encryptionkey/headset_service
|
||||||
|
|
||||||
/obj/item/device/radio/headset/ert
|
/obj/item/device/radio/headset/ert
|
||||||
name = "CentCom Response Team headset"
|
name = "emergency response team radio headset"
|
||||||
desc = "The headset of the boss's boss."
|
desc = "The headset of the boss's boss."
|
||||||
icon_state = "com_headset"
|
icon_state = "com_headset"
|
||||||
item_state = "headset"
|
item_state = "headset"
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ MASS SPECTROMETER
|
|||||||
REAGENT SCANNER
|
REAGENT SCANNER
|
||||||
*/
|
*/
|
||||||
/obj/item/device/t_scanner
|
/obj/item/device/t_scanner
|
||||||
name = "T-ray scanner"
|
name = "\improper T-ray scanner"
|
||||||
desc = "A terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes."
|
desc = "A terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes."
|
||||||
icon_state = "t-ray0"
|
icon_state = "t-ray0"
|
||||||
var/on = 0
|
var/on = 0
|
||||||
@@ -65,10 +65,10 @@ REAGENT SCANNER
|
|||||||
|
|
||||||
|
|
||||||
/obj/item/device/healthanalyzer
|
/obj/item/device/healthanalyzer
|
||||||
name = "Health Analyzer"
|
name = "health analyzer"
|
||||||
|
desc = "A hand-held body scanner able to distinguish vital signs of the subject."
|
||||||
icon_state = "health"
|
icon_state = "health"
|
||||||
item_state = "analyzer"
|
item_state = "analyzer"
|
||||||
desc = "A hand-held body scanner able to distinguish vital signs of the subject."
|
|
||||||
flags = FPRINT | TABLEPASS | CONDUCT
|
flags = FPRINT | TABLEPASS | CONDUCT
|
||||||
slot_flags = SLOT_BELT
|
slot_flags = SLOT_BELT
|
||||||
throwforce = 3
|
throwforce = 3
|
||||||
@@ -227,8 +227,8 @@ REAGENT SCANNER
|
|||||||
|
|
||||||
|
|
||||||
/obj/item/device/analyzer
|
/obj/item/device/analyzer
|
||||||
desc = "A hand-held environmental scanner which reports current gas levels."
|
|
||||||
name = "analyzer"
|
name = "analyzer"
|
||||||
|
desc = "A hand-held environmental scanner which reports current gas levels."
|
||||||
icon_state = "atmos"
|
icon_state = "atmos"
|
||||||
item_state = "analyzer"
|
item_state = "analyzer"
|
||||||
w_class = 2.0
|
w_class = 2.0
|
||||||
@@ -274,8 +274,8 @@ REAGENT SCANNER
|
|||||||
return
|
return
|
||||||
|
|
||||||
/obj/item/device/mass_spectrometer
|
/obj/item/device/mass_spectrometer
|
||||||
|
name = "mass spectrometer"
|
||||||
desc = "A hand-held mass spectrometer which identifies trace chemicals in a blood sample."
|
desc = "A hand-held mass spectrometer which identifies trace chemicals in a blood sample."
|
||||||
name = "mass-spectrometer"
|
|
||||||
icon_state = "spectrometer"
|
icon_state = "spectrometer"
|
||||||
item_state = "analyzer"
|
item_state = "analyzer"
|
||||||
w_class = 2.0
|
w_class = 2.0
|
||||||
@@ -342,7 +342,7 @@ REAGENT SCANNER
|
|||||||
return
|
return
|
||||||
|
|
||||||
/obj/item/device/mass_spectrometer/adv
|
/obj/item/device/mass_spectrometer/adv
|
||||||
name = "advanced mass-spectrometer"
|
name = "advanced mass spectrometer"
|
||||||
icon_state = "adv_spectrometer"
|
icon_state = "adv_spectrometer"
|
||||||
details = 1
|
details = 1
|
||||||
origin_tech = "magnets=4;biotech=2"
|
origin_tech = "magnets=4;biotech=2"
|
||||||
|
|||||||
@@ -182,4 +182,4 @@
|
|||||||
if (cell)
|
if (cell)
|
||||||
user << "The charge meter reads [round(cell.percent())]%."
|
user << "The charge meter reads [round(cell.percent())]%."
|
||||||
else
|
else
|
||||||
user << "It doesn't have a power cell installed."
|
user << "It doesn't have a power cell installed."
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/obj/item/device/taperecorder
|
/obj/item/device/taperecorder
|
||||||
desc = "A device that can record up to an hour of dialogue and play it back. It automatically translates the content in playback."
|
|
||||||
name = "universal recorder"
|
name = "universal recorder"
|
||||||
|
desc = "A device that can record up to an hour of dialogue and play it back. It automatically translates the content in playback."
|
||||||
icon_state = "taperecorderidle"
|
icon_state = "taperecorderidle"
|
||||||
item_state = "analyzer"
|
item_state = "analyzer"
|
||||||
w_class = 2.0
|
w_class = 2.0
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ effective or pretty fucking useless.
|
|||||||
var/times_used = 0 //Number of times it's been used.
|
var/times_used = 0 //Number of times it's been used.
|
||||||
var/max_uses = 2
|
var/max_uses = 2
|
||||||
|
|
||||||
|
|
||||||
/obj/item/device/batterer/attack_self(mob/living/carbon/user as mob, flag = 0, emp = 0)
|
/obj/item/device/batterer/attack_self(mob/living/carbon/user as mob, flag = 0, emp = 0)
|
||||||
if(!user) return
|
if(!user) return
|
||||||
if(times_used >= max_uses)
|
if(times_used >= max_uses)
|
||||||
@@ -55,7 +54,3 @@ effective or pretty fucking useless.
|
|||||||
times_used += 1
|
times_used += 1
|
||||||
if(times_used >= max_uses)
|
if(times_used >= max_uses)
|
||||||
icon_state = "battererburnt"
|
icon_state = "battererburnt"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
/obj/item/device/transfer_valve
|
/obj/item/device/transfer_valve
|
||||||
icon = 'icons/obj/assemblies.dmi'
|
|
||||||
name = "tank transfer valve"
|
name = "tank transfer valve"
|
||||||
icon_state = "valve_1"
|
|
||||||
desc = "Regulates the transfer of air between two tanks"
|
desc = "Regulates the transfer of air between two tanks"
|
||||||
|
icon = 'icons/obj/assemblies.dmi'
|
||||||
|
icon_state = "valve_1"
|
||||||
var/obj/item/weapon/tank/tank_one
|
var/obj/item/weapon/tank/tank_one
|
||||||
var/obj/item/weapon/tank/tank_two
|
var/obj/item/weapon/tank/tank_two
|
||||||
var/obj/item/device/attached_device
|
var/obj/item/device/attached_device
|
||||||
@@ -210,4 +210,4 @@
|
|||||||
// this doesn't do anything but the timer etc. expects it to be here
|
// this doesn't do anything but the timer etc. expects it to be here
|
||||||
// eventually maybe have it update icon to show state (timer, prox etc.) like old bombs
|
// eventually maybe have it update icon to show state (timer, prox etc.) like old bombs
|
||||||
/obj/item/device/transfer_valve/proc/c_state()
|
/obj/item/device/transfer_valve/proc/c_state()
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -146,7 +146,7 @@ datum/nano_item_lists
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/obj/item/device/uplink/hidden
|
/obj/item/device/uplink/hidden
|
||||||
name = "Hidden Uplink."
|
name = "hidden uplink"
|
||||||
desc = "There is something wrong if you're examining this."
|
desc = "There is something wrong if you're examining this."
|
||||||
var/active = 0
|
var/active = 0
|
||||||
|
|
||||||
|
|||||||
@@ -390,4 +390,4 @@
|
|||||||
for(var/mob/M in viewers(1, loc))
|
for(var/mob/M in viewers(1, loc))
|
||||||
if((M.client && M.machine == src))
|
if((M.client && M.machine == src))
|
||||||
attack_self(M)
|
attack_self(M)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -35,4 +35,4 @@
|
|||||||
emagged = 1
|
emagged = 1
|
||||||
insults = rand(1, 3)//to prevent dickflooding
|
insults = rand(1, 3)//to prevent dickflooding
|
||||||
return
|
return
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/obj/item/latexballon
|
/obj/item/latexballon
|
||||||
name = "Latex glove"
|
name = "latex glove"
|
||||||
desc = "" //todo
|
desc = "A latex glove, usually used as a balloon."
|
||||||
icon_state = "latexballon"
|
icon_state = "latexballon"
|
||||||
item_state = "lgloves"
|
item_state = "lgloves"
|
||||||
force = 0
|
force = 0
|
||||||
@@ -45,4 +45,4 @@
|
|||||||
|
|
||||||
/obj/item/latexballon/attackby(obj/item/W as obj, mob/user as mob)
|
/obj/item/latexballon/attackby(obj/item/W as obj, mob/user as mob)
|
||||||
if (can_puncture(W))
|
if (can_puncture(W))
|
||||||
burst()
|
burst()
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/obj/item/borg/sight/xray
|
/obj/item/borg/sight/xray
|
||||||
name = "\proper x-ray Vision"
|
name = "\proper x-ray vision"
|
||||||
sight_mode = BORGXRAY
|
sight_mode = BORGXRAY
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -178,4 +178,4 @@
|
|||||||
b2y1 = pixel_y + pick(1,1,1,1,2,2,3,3,4)
|
b2y1 = pixel_y + pick(1,1,1,1,2,2,3,3,4)
|
||||||
b2y2 = pixel_y - pick(1,1,1,1,2,2,3,3,4)
|
b2y2 = pixel_y - pick(1,1,1,1,2,2,3,3,4)
|
||||||
|
|
||||||
Target.bulletholes.Add(src)
|
Target.bulletholes.Add(src)
|
||||||
|
|||||||
@@ -259,4 +259,4 @@
|
|||||||
return
|
return
|
||||||
affecting.status |= ORGAN_SPLINTED
|
affecting.status |= ORGAN_SPLINTED
|
||||||
use(1)
|
use(1)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -42,4 +42,4 @@
|
|||||||
if (do_surgery(H,user,src))
|
if (do_surgery(H,user,src))
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
user << "<span class='notice'>Nothing to fix in here.</span>"
|
user << "<span class='notice'>Nothing to fix in here.</span>"
|
||||||
|
|||||||
@@ -133,4 +133,4 @@
|
|||||||
var/obj/item/stack/sheet/leather/HS = new(src.loc)
|
var/obj/item/stack/sheet/leather/HS = new(src.loc)
|
||||||
HS.amount = 1
|
HS.amount = 1
|
||||||
wetness = initial(wetness)
|
wetness = initial(wetness)
|
||||||
src.use(1)
|
src.use(1)
|
||||||
|
|||||||
@@ -200,4 +200,4 @@ obj/item/stack/sheet/mineral/iron/New()
|
|||||||
sheettype = "osmium"
|
sheettype = "osmium"
|
||||||
origin_tech = "materials=5"
|
origin_tech = "materials=5"
|
||||||
color = "#9999FF"
|
color = "#9999FF"
|
||||||
perunit = 2000
|
perunit = 2000
|
||||||
|
|||||||
@@ -200,4 +200,4 @@ var/global/list/datum/stack_recipe/cardboard_recipes = list ( \
|
|||||||
|
|
||||||
/obj/item/stack/sheet/cardboard/New(var/loc, var/amount=null)
|
/obj/item/stack/sheet/cardboard/New(var/loc, var/amount=null)
|
||||||
recipes = cardboard_recipes
|
recipes = cardboard_recipes
|
||||||
return ..()
|
return ..()
|
||||||
|
|||||||
@@ -23,4 +23,4 @@
|
|||||||
else
|
else
|
||||||
for (var/obj/item/stack/sheet/stack in locate(src.x,src.y,src.z))
|
for (var/obj/item/stack/sheet/stack in locate(src.x,src.y,src.z))
|
||||||
S.add(stack,user)
|
S.add(stack,user)
|
||||||
..()*/
|
..()*/
|
||||||
|
|||||||
@@ -265,4 +265,4 @@
|
|||||||
New(title, recipes, req_amount = 1)
|
New(title, recipes, req_amount = 1)
|
||||||
src.title = title
|
src.title = title
|
||||||
src.recipes = recipes
|
src.recipes = recipes
|
||||||
src.req_amount = req_amount
|
src.req_amount = req_amount
|
||||||
|
|||||||
@@ -33,4 +33,4 @@
|
|||||||
new/obj/item/stack/light_w(user.loc)
|
new/obj/item/stack/light_w(user.loc)
|
||||||
if(amount <= 0)
|
if(amount <= 0)
|
||||||
user.drop_from_inventory(src)
|
user.drop_from_inventory(src)
|
||||||
del(src)
|
del(src)
|
||||||
|
|||||||
@@ -113,7 +113,7 @@
|
|||||||
* Fake singularity
|
* Fake singularity
|
||||||
*/
|
*/
|
||||||
/obj/item/toy/spinningtoy
|
/obj/item/toy/spinningtoy
|
||||||
name = "Gravitational Singularity"
|
name = "gravitational singularity"
|
||||||
desc = "\"Singulo\" brand spinning toy."
|
desc = "\"Singulo\" brand spinning toy."
|
||||||
icon = 'icons/obj/singularity.dmi'
|
icon = 'icons/obj/singularity.dmi'
|
||||||
icon_state = "singularity_s1"
|
icon_state = "singularity_s1"
|
||||||
@@ -420,7 +420,7 @@
|
|||||||
* Water flower
|
* Water flower
|
||||||
*/
|
*/
|
||||||
/obj/item/toy/waterflower
|
/obj/item/toy/waterflower
|
||||||
name = "Water Flower"
|
name = "water flower"
|
||||||
desc = "A seemingly innocent sunflower...with a twist."
|
desc = "A seemingly innocent sunflower...with a twist."
|
||||||
icon = 'icons/obj/harvest.dmi'
|
icon = 'icons/obj/harvest.dmi'
|
||||||
icon_state = "sunflower"
|
icon_state = "sunflower"
|
||||||
@@ -645,4 +645,4 @@
|
|||||||
item_state = "inflatable"
|
item_state = "inflatable"
|
||||||
flags = FPRINT | TABLEPASS
|
flags = FPRINT | TABLEPASS
|
||||||
icon = 'icons/obj/clothing/belts.dmi'
|
icon = 'icons/obj/clothing/belts.dmi'
|
||||||
slot_flags = SLOT_BELT
|
slot_flags = SLOT_BELT
|
||||||
|
|||||||
@@ -6,52 +6,67 @@
|
|||||||
icon = 'icons/obj/trash.dmi'
|
icon = 'icons/obj/trash.dmi'
|
||||||
w_class = 2.0
|
w_class = 2.0
|
||||||
desc = "This is rubbish."
|
desc = "This is rubbish."
|
||||||
raisins
|
|
||||||
name = "4no raisins"
|
/obj/item/trash/raisins
|
||||||
icon_state= "4no_raisins"
|
name = "\improper 4no raisins"
|
||||||
candy
|
icon_state= "4no_raisins"
|
||||||
name = "Candy"
|
|
||||||
icon_state= "candy"
|
/obj/item/trash/candy
|
||||||
cheesie
|
name = "candy"
|
||||||
name = "Cheesie honkers"
|
icon_state= "candy"
|
||||||
icon_state = "cheesie_honkers"
|
|
||||||
chips
|
/obj/item/trash/cheesie
|
||||||
name = "Chips"
|
name = "\improper Cheesie Honkers"
|
||||||
icon_state = "chips"
|
icon_state = "cheesie_honkers"
|
||||||
popcorn
|
|
||||||
name = "Popcorn"
|
/obj/item/trash/chips
|
||||||
icon_state = "popcorn"
|
name = "chips"
|
||||||
sosjerky
|
icon_state = "chips"
|
||||||
name = "Scaredy's Private Reserve Beef Jerky"
|
|
||||||
icon_state = "sosjerky"
|
/obj/item/trash/popcorn
|
||||||
syndi_cakes
|
name = "popcorn"
|
||||||
name = "Syndi cakes"
|
icon_state = "popcorn"
|
||||||
icon_state = "syndi_cakes"
|
|
||||||
waffles
|
/obj/item/trash/sosjerky
|
||||||
name = "Waffles"
|
name = "Scaredy's Private Reserve Beef Jerky"
|
||||||
icon_state = "waffles"
|
icon_state = "sosjerky"
|
||||||
plate
|
|
||||||
name = "Plate"
|
/obj/item/trash/syndi_cakes
|
||||||
icon_state = "plate"
|
name = "syndi cakes"
|
||||||
snack_bowl
|
icon_state = "syndi_cakes"
|
||||||
name = "Snack bowl"
|
|
||||||
icon_state = "snack_bowl"
|
/obj/item/trash/waffles
|
||||||
pistachios
|
name = "waffles"
|
||||||
name = "Pistachios pack"
|
icon_state = "waffles"
|
||||||
icon_state = "pistachios_pack"
|
|
||||||
semki
|
/obj/item/trash/plate
|
||||||
name = "Semki pack"
|
name = "plate"
|
||||||
icon_state = "semki_pack"
|
icon_state = "plate"
|
||||||
tray
|
|
||||||
name = "Tray"
|
/obj/item/trash/snack_bowl
|
||||||
icon_state = "tray"
|
name = "snack bowl"
|
||||||
candle
|
icon_state = "snack_bowl"
|
||||||
name = "candle"
|
|
||||||
icon = 'icons/obj/candle.dmi'
|
/obj/item/trash/pistachios
|
||||||
icon_state = "candle4"
|
name = "pistachios pack"
|
||||||
liquidfood
|
icon_state = "pistachios_pack"
|
||||||
name = "\improper \"LiquidFood\" ration"
|
|
||||||
icon_state = "liquidfood"
|
/obj/item/trash/semki
|
||||||
|
name = "semki pack"
|
||||||
|
icon_state = "semki_pack"
|
||||||
|
|
||||||
|
/obj/item/trash/tray
|
||||||
|
name = "tray"
|
||||||
|
icon_state = "tray"
|
||||||
|
|
||||||
|
/obj/item/trash/candle
|
||||||
|
name = "candle"
|
||||||
|
icon = 'icons/obj/candle.dmi'
|
||||||
|
icon_state = "candle4"
|
||||||
|
|
||||||
|
/obj/item/trash/liquidfood
|
||||||
|
name = "\improper \"LiquidFood\" ration"
|
||||||
|
icon_state = "liquidfood"
|
||||||
|
|
||||||
/obj/item/trash/attack(mob/M as mob, mob/living/user as mob)
|
/obj/item/trash/attack(mob/M as mob, mob/living/user as mob)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
//Contains the rapid construction device.
|
//Contains the rapid construction device.
|
||||||
/obj/item/weapon/rcd
|
/obj/item/weapon/rcd
|
||||||
name = "rapid-construction-device (RCD)"
|
name = "rapid construction device (RCD)"
|
||||||
desc = "A device used to rapidly build walls and floors."
|
desc = "A device used to rapidly build walls and floors."
|
||||||
icon = 'icons/obj/items.dmi'
|
icon = 'icons/obj/items.dmi'
|
||||||
icon_state = "rcd"
|
icon_state = "rcd"
|
||||||
@@ -174,4 +174,4 @@
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
/obj/item/weapon/rcd/mounted/attackby()
|
/obj/item/weapon/rcd/mounted/attackby()
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -112,4 +112,4 @@ RSF
|
|||||||
R.cell.use(used_energy)
|
R.cell.use(used_energy)
|
||||||
else
|
else
|
||||||
stored_matter--
|
stored_matter--
|
||||||
user << "The RSF now holds [stored_matter]/30 fabrication-units."
|
user << "The RSF now holds [stored_matter]/30 fabrication-units."
|
||||||
|
|||||||
6
code/game/objects/items/weapons/circuitboards/broken.dm
Normal file
6
code/game/objects/items/weapons/circuitboards/broken.dm
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
/obj/item/weapon/circuitboard/broken
|
||||||
|
name = "broken electronics"
|
||||||
|
icon = 'icons/obj/doors/door_assembly.dmi'
|
||||||
|
icon_state = "door_electronics_smoked"
|
||||||
|
origin_tech = null
|
||||||
|
board_type = "other"
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user