mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 18:32:03 +00:00
Updated:
Singularity Engine -Recoded some parts, still works mostly the same Welders -Recoded, it works mostly the same but is easier to use in code -Cyborgs have a larger fuel tank -Brought most if not all of the areas that use welders upto spec Moved the changeling chem recharge code into the human life proc New players who log out before spawning in are now deleted New minor Common event Machines around the station use more power, system might need some changes later Likely few other minor changes that I just cant think of atm git-svn-id: http://tgstation13.googlecode.com/svn/trunk@945 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
@@ -12,6 +12,9 @@ Pipelines + Other Objects -> Pipe network
|
||||
|
||||
obj/machinery/atmospherics
|
||||
anchored = 1
|
||||
power_usage = 10
|
||||
power_channel = ENVIRON
|
||||
|
||||
|
||||
var/initialize_directions = 0
|
||||
var/color
|
||||
|
||||
@@ -46,7 +46,6 @@ obj/machinery/atmospherics/binary/pump
|
||||
return
|
||||
if(!on)
|
||||
return 0
|
||||
use_power(5)
|
||||
|
||||
var/output_starting_pressure = air2.return_pressure()
|
||||
|
||||
@@ -69,7 +68,6 @@ obj/machinery/atmospherics/binary/pump
|
||||
if(network2)
|
||||
network2.update = 1
|
||||
|
||||
use_power(round(air2.volume/12))
|
||||
return 1
|
||||
|
||||
//Radio remote control
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
desc = "Has a valve and pump attached to it"
|
||||
|
||||
level = 1
|
||||
var/channel = ENVIRON
|
||||
var/area_uid
|
||||
var/id = null
|
||||
|
||||
@@ -42,7 +41,6 @@
|
||||
name = "Large Air Vent"
|
||||
New()
|
||||
..()
|
||||
channel = EQUIP
|
||||
air_contents.volume = 1000
|
||||
|
||||
update_icon()
|
||||
@@ -66,7 +64,6 @@
|
||||
if(!on)
|
||||
return 0
|
||||
|
||||
use_power(5, channel)
|
||||
if(welded)
|
||||
return 0
|
||||
|
||||
@@ -87,7 +84,6 @@
|
||||
|
||||
var/datum/gas_mixture/removed = air_contents.remove(transfer_moles)
|
||||
|
||||
use_power(round(air_contents.volume/12), channel)
|
||||
loc.assume_air(removed)
|
||||
|
||||
if(network)
|
||||
@@ -108,8 +104,6 @@
|
||||
if (isnull(removed)) //in space
|
||||
return
|
||||
|
||||
|
||||
use_power(round(air_contents.volume/12), channel)
|
||||
air_contents.merge(removed)
|
||||
|
||||
if(network)
|
||||
@@ -228,22 +222,21 @@
|
||||
on = 0
|
||||
return
|
||||
|
||||
attackby(obj/item/W, mob/user) // Added for aliens -- TLE
|
||||
// Stolen from the Emitter welding code of the Singularity
|
||||
if(istype(W, /obj/item/weapon/weldingtool) && W:welding)
|
||||
if (W:get_fuel() < 1)
|
||||
user << "\blue You need more welding fuel to complete this task."
|
||||
return 1
|
||||
W:use_fuel(1)
|
||||
attackby(obj/item/W, mob/user)
|
||||
if(istype(W, /obj/item/weapon/weldingtool))
|
||||
if (W:remove_fuel(2,user))
|
||||
user << "\blue Now welding the vent."
|
||||
if(do_after(user, 20))
|
||||
playsound(src.loc, 'Welder2.ogg', 50, 1)
|
||||
|
||||
if(!welded)
|
||||
user.visible_message("[user] welds the vent shut.", "You weld the vent shut.", "You hear welding.")
|
||||
welded = 1
|
||||
else
|
||||
user.visible_message("[user] unwelds the vent.", "You unweld the vent.", "You hear welding.")
|
||||
welded = 0
|
||||
|
||||
else
|
||||
user << "\blue You need more welding fuel to complete this task."
|
||||
return 1
|
||||
examine()
|
||||
set src in oview(1)
|
||||
..()
|
||||
@@ -251,10 +244,10 @@
|
||||
usr << "It seems welded shut."
|
||||
|
||||
power_change()
|
||||
if(powered(channel))
|
||||
stat &= ~NOPOWER
|
||||
else
|
||||
stat |= NOPOWER
|
||||
// if(powered(EVNIRON))
|
||||
// stat &= ~NOPOWER
|
||||
// else
|
||||
// stat |= NOPOWER
|
||||
update_icon()
|
||||
|
||||
attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
|
||||
|
||||
@@ -97,8 +97,7 @@
|
||||
var/datum/gas_mixture/removed = loc.remove_air(transfer_moles)
|
||||
if (isnull(removed)) //in space
|
||||
return
|
||||
var/power = (scrub_Toxins+scrub_CO2+scrub_N2O)*volume_rate/12
|
||||
use_power(round(power+5), ENVIRON)
|
||||
|
||||
//Filter it
|
||||
var/datum/gas_mixture/filtered_out = new
|
||||
filtered_out.temperature = removed.temperature
|
||||
@@ -130,7 +129,7 @@
|
||||
else //Just siphoning all air
|
||||
if (air_contents.return_pressure()>=50*ONE_ATMOSPHERE)
|
||||
return
|
||||
use_power(round(volume_rate/12)+5, ENVIRON)
|
||||
|
||||
var/transfer_moles = environment.total_moles()*(volume_rate/environment.volume)
|
||||
|
||||
var/datum/gas_mixture/removed = loc.remove_air(transfer_moles)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
obj/machinery/atmospherics/pipe
|
||||
power_usage = 0
|
||||
|
||||
var/datum/gas_mixture/air_temporary //used when reconstructing a pipeline that broke
|
||||
var/datum/pipeline/parent
|
||||
|
||||
@@ -305,11 +305,11 @@
|
||||
return 0
|
||||
|
||||
/proc/do_after(mob/M as mob, time as num)
|
||||
var/turf/T = M.loc
|
||||
var/turf/T = get_turf(M)
|
||||
var/holding = M.equipped()
|
||||
sleep(time)
|
||||
if(M)
|
||||
if ((M.loc == T && M.equipped() == holding && !( M.stat )))
|
||||
if ((get_turf(M) == T && M.equipped() == holding && !( M.stat )))
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
|
||||
@@ -132,18 +132,10 @@
|
||||
|
||||
else if(istype(I, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/W = I
|
||||
if(W.welding)
|
||||
if(W.get_fuel() > 2)
|
||||
W.use_fuel(2)
|
||||
if(W.remove_fuel(2))
|
||||
playsound(src.loc, 'Welder2.ogg', 100, 1)
|
||||
|
||||
// check if anything changed over 2 seconds
|
||||
var/turf/uloc = user.loc
|
||||
var/atom/wloc = W.loc
|
||||
user << "Welding the pipe in place."
|
||||
sleep(20)
|
||||
if(user.loc == uloc && wloc == W.loc)
|
||||
|
||||
if(do_after(user, 20))
|
||||
update()
|
||||
var/pipetype = dpipetype()
|
||||
var/obj/disposalpipe/P = new pipetype(src.loc)
|
||||
@@ -151,14 +143,8 @@
|
||||
P.dir = dir
|
||||
P.dpdir = dpdir
|
||||
P.updateicon()
|
||||
|
||||
del(src)
|
||||
else
|
||||
user << "You must stay still while welding."
|
||||
return
|
||||
|
||||
|
||||
|
||||
else
|
||||
user << "You need more welding fuel to complete this task."
|
||||
return
|
||||
|
||||
@@ -685,17 +685,14 @@
|
||||
var/obj/item/weapon/weldingtool/W = I
|
||||
|
||||
if(W.welding)
|
||||
if(W.get_fuel() > 3)
|
||||
W.use_fuel(3)
|
||||
if(W.remove_fuel(3))
|
||||
playsound(src.loc, 'Welder2.ogg', 100, 1)
|
||||
|
||||
// check if anything changed over 2 seconds
|
||||
var/turf/uloc = user.loc
|
||||
var/atom/wloc = W.loc
|
||||
user << "Slicing the disposal pipe."
|
||||
sleep(30)
|
||||
if(user.loc == uloc && wloc == W.loc)
|
||||
|
||||
welded()
|
||||
else
|
||||
user << "You must stay still while welding the pipe."
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
var/area/master // master area used for power calcluations
|
||||
// (original area before splitting due to sd_DAL)
|
||||
var/list/related // the other areas of the same type as this
|
||||
var/list/lights // list of all lights on this area
|
||||
|
||||
/*Adding a wizard area teleport list because motherfucking lag -- Urist*/
|
||||
/*I am far too lazy to make it a proper list of areas so I'll just make it run the usual telepot routine at the start of the game*/
|
||||
|
||||
@@ -76,6 +76,9 @@ obj
|
||||
/atom/proc/HasProximity(atom/movable/AM as mob|obj)
|
||||
return
|
||||
|
||||
/atom/proc/emp_act(var/severity)
|
||||
return
|
||||
|
||||
/atom/movable/overlay/attackby(a, b)
|
||||
if (src.master)
|
||||
return src.master.attackby(a, b)
|
||||
|
||||
@@ -1,7 +1,13 @@
|
||||
/obj/machinery
|
||||
name = "machinery"
|
||||
icon = 'stationobjs.dmi'
|
||||
var/stat = 0
|
||||
var
|
||||
stat = 0
|
||||
power_usage = 200
|
||||
power_channel = EQUIP
|
||||
//EQUIP,ENVIRON or LIGHT
|
||||
|
||||
|
||||
|
||||
/obj/machinery/alarm
|
||||
name = "alarm"
|
||||
@@ -10,6 +16,7 @@
|
||||
anchored = 1.0
|
||||
var/skipprocess = 0 //Experimenting
|
||||
var/alarm_frequency = "1437"
|
||||
power_usage = 5
|
||||
|
||||
/obj/machinery/autolathe
|
||||
name = "Autolathe"
|
||||
@@ -30,6 +37,7 @@
|
||||
var/hack_wire
|
||||
var/disable_wire
|
||||
var/shock_wire
|
||||
power_usage = 50
|
||||
|
||||
/obj/machinery/camera
|
||||
name = "Security Camera"
|
||||
@@ -43,7 +51,7 @@
|
||||
anchored = 1.0
|
||||
var/invuln = null
|
||||
var/bugged = 0
|
||||
|
||||
power_usage = 5
|
||||
|
||||
|
||||
/obj/machinery/dispenser
|
||||
@@ -55,6 +63,7 @@
|
||||
var/o2tanks = 10.0
|
||||
var/pltanks = 10.0
|
||||
anchored = 1.0
|
||||
power_usage = 10
|
||||
|
||||
/obj/machinery/dna_scanner
|
||||
name = "DNA Scanner/Implanter"
|
||||
@@ -64,6 +73,7 @@
|
||||
var/locked = 0.0
|
||||
var/mob/occupant = null
|
||||
anchored = 1.0
|
||||
power_usage = 200
|
||||
|
||||
/obj/machinery/dna_scannernew
|
||||
name = "DNA Modifier"
|
||||
@@ -73,7 +83,7 @@
|
||||
var/locked = 0.0
|
||||
var/mob/occupant = null
|
||||
anchored = 1.0
|
||||
|
||||
power_usage = 200
|
||||
|
||||
/obj/machinery/firealarm
|
||||
name = "Fire Alarm"
|
||||
@@ -85,6 +95,8 @@
|
||||
var/timing = 0.0
|
||||
var/lockdownbyai = 0
|
||||
anchored = 1.0
|
||||
power_usage = 5
|
||||
power_channel = ENVIRON
|
||||
|
||||
/obj/machinery/partyalarm
|
||||
name = "Party Button"
|
||||
@@ -96,7 +108,7 @@
|
||||
var/timing = 0.0
|
||||
var/lockdownbyai = 0
|
||||
anchored = 1.0
|
||||
|
||||
power_usage = 5
|
||||
|
||||
|
||||
/obj/machinery/hologram_proj
|
||||
@@ -143,6 +155,7 @@
|
||||
var/id = 1.0
|
||||
anchored = 1.0
|
||||
var/drive_range = 50 //this is mostly irrelevant since current mass drivers throw into space, but you could make a lower-range mass driver for interstation transport or something I guess.
|
||||
power_usage = 50
|
||||
|
||||
/obj/machinery/meter
|
||||
name = "meter"
|
||||
@@ -152,6 +165,7 @@
|
||||
anchored = 1.0
|
||||
var/frequency = 0
|
||||
var/id
|
||||
power_usage = 5
|
||||
|
||||
/obj/machinery/nuclearbomb
|
||||
desc = "Uh oh."
|
||||
@@ -169,6 +183,7 @@
|
||||
var/safety = 1.0
|
||||
var/obj/item/weapon/disk/nuclear/auth = null
|
||||
flags = FPRINT
|
||||
power_usage = 0
|
||||
|
||||
/obj/machinery/optable
|
||||
name = "Operating Table"
|
||||
@@ -176,7 +191,7 @@
|
||||
icon_state = "table2-idle"
|
||||
density = 1
|
||||
anchored = 1.0
|
||||
|
||||
power_usage = 40
|
||||
var/mob/living/carbon/human/victim = null
|
||||
var/strapped = 0.0
|
||||
|
||||
@@ -195,6 +210,7 @@
|
||||
var/can_rotate = 1
|
||||
var/can_maximize_speed = 0
|
||||
var/one_person_only = 0
|
||||
power_usage = 0
|
||||
|
||||
/obj/machinery/vehicle/pod
|
||||
name = "Escape Pod"
|
||||
@@ -220,6 +236,7 @@
|
||||
var/locked = 0.0
|
||||
var/mob/occupant = null
|
||||
anchored = 1.0
|
||||
power_usage = 600
|
||||
|
||||
/obj/machinery/scan_console
|
||||
name = "DNA Scanner Access Console"
|
||||
@@ -238,6 +255,7 @@
|
||||
var/temp = null
|
||||
var/obj/machinery/dna_scanner/connected = null
|
||||
anchored = 1.0
|
||||
power_usage = 400
|
||||
|
||||
/obj/machinery/scan_consolenew
|
||||
name = "DNA Modifier Access Console"
|
||||
@@ -272,6 +290,7 @@
|
||||
var/obj/machinery/dna_scanner/connected = null
|
||||
var/obj/item/weapon/disk/data/diskette = null
|
||||
anchored = 1.0
|
||||
power_usage = 400
|
||||
|
||||
/obj/machinery/sec_lock
|
||||
name = "Security Pad"
|
||||
@@ -283,6 +302,7 @@
|
||||
var/obj/machinery/door/d2 = null
|
||||
anchored = 1.0
|
||||
req_access = list(access_brig)
|
||||
power_usage = 5
|
||||
|
||||
/obj/machinery/door_control
|
||||
name = "Remote Door Control"
|
||||
@@ -291,6 +311,7 @@
|
||||
desc = "A remote control switch for a door."
|
||||
var/id = null
|
||||
anchored = 1.0
|
||||
power_usage = 5
|
||||
|
||||
/obj/machinery/driver_button
|
||||
name = "Mass Driver Button"
|
||||
@@ -300,6 +321,7 @@
|
||||
var/id = null
|
||||
var/active = 0
|
||||
anchored = 1.0
|
||||
power_usage = 5
|
||||
|
||||
/obj/machinery/ignition_switch
|
||||
name = "Ignition Switch"
|
||||
@@ -309,10 +331,12 @@
|
||||
var/id = null
|
||||
var/active = 0
|
||||
anchored = 1.0
|
||||
power_usage = 5
|
||||
|
||||
/obj/machinery/shuttle
|
||||
name = "shuttle"
|
||||
icon = 'shuttle.dmi'
|
||||
power_usage = 0
|
||||
|
||||
/obj/machinery/shuttle/engine
|
||||
name = "engine"
|
||||
@@ -358,17 +382,19 @@
|
||||
name = "hub"
|
||||
icon_state = "tele0"
|
||||
var/accurate = 0
|
||||
power_usage = 100
|
||||
|
||||
/obj/machinery/teleport/station
|
||||
name = "station"
|
||||
icon_state = "controller"
|
||||
var/active = 0
|
||||
var/engaged = 0
|
||||
power_usage = 100
|
||||
|
||||
/obj/machinery/wire
|
||||
name = "wire"
|
||||
icon = 'power_cond.dmi'
|
||||
|
||||
power_usage = 1
|
||||
|
||||
/obj/machinery/power
|
||||
name = null
|
||||
@@ -378,6 +404,7 @@
|
||||
var/netnum = 0
|
||||
var/directwired = 1 // by default, power machines are connected by a cable in a neighbouring turf
|
||||
// if set to 0, requires a 0-X cable on this turf
|
||||
power_usage = 0
|
||||
|
||||
/obj/machinery/power/terminal
|
||||
name = "terminal"
|
||||
@@ -420,36 +447,7 @@
|
||||
icon_state = "power"
|
||||
density = 1
|
||||
anchored = 1
|
||||
|
||||
#define SMESMAXCHARGELEVEL 200000
|
||||
#define SMESMAXOUTPUT 200000
|
||||
|
||||
/obj/machinery/power/smes/magical
|
||||
name = "magical power storage unit"
|
||||
desc = "A high-capacity superconducting magnetic energy storage (SMES) unit. Magically produces power."
|
||||
process()
|
||||
capacity = INFINITY
|
||||
charge = INFINITY
|
||||
..()
|
||||
|
||||
/obj/machinery/power/smes
|
||||
name = "power storage unit"
|
||||
desc = "A high-capacity superconducting magnetic energy storage (SMES) unit."
|
||||
icon_state = "smes"
|
||||
density = 1
|
||||
anchored = 1
|
||||
var/output = 30000
|
||||
var/lastout = 0
|
||||
var/loaddemand = 0
|
||||
var/capacity = 5e6
|
||||
var/charge = 1e6
|
||||
var/charging = 0
|
||||
var/chargemode = 0
|
||||
var/chargecount = 0
|
||||
var/chargelevel = 30000
|
||||
var/online = 1
|
||||
var/n_tag = null
|
||||
var/obj/machinery/power/terminal/terminal = null
|
||||
power_usage = 600
|
||||
|
||||
/obj/machinery/power/solar
|
||||
name = "solar panel"
|
||||
@@ -467,6 +465,7 @@
|
||||
var/ndir = SOUTH
|
||||
var/turn_angle = 0
|
||||
var/obj/machinery/power/solar_control/control
|
||||
power_usage = 0
|
||||
|
||||
/obj/machinery/power/solar_control
|
||||
name = "solar panel control"
|
||||
@@ -484,7 +483,7 @@
|
||||
var/trackrate = 600 // 300-900 seconds
|
||||
var/trackdir = 1 // 0 =CCW, 1=CW
|
||||
var/nexttime = 0
|
||||
|
||||
power_usage = 500
|
||||
|
||||
|
||||
/obj/machinery/cell_charger
|
||||
@@ -495,6 +494,7 @@
|
||||
var/obj/item/weapon/cell/charging = null
|
||||
var/chargelevel = -1
|
||||
anchored = 1
|
||||
power_usage = 50
|
||||
|
||||
/obj/machinery/light_switch
|
||||
desc = "A light switch"
|
||||
@@ -525,6 +525,7 @@
|
||||
icon_state = "mw"
|
||||
density = 1
|
||||
anchored = 1
|
||||
power_usage = 100
|
||||
var/egg_amount = 0 //Current number of eggs inside
|
||||
var/flour_amount = 0 //Current amount of flour inside
|
||||
var/water_amount = 0 //Current amount of water inside
|
||||
@@ -563,6 +564,8 @@
|
||||
anchored = 1
|
||||
var/broken = 0
|
||||
var/processing = 0
|
||||
power_usage = 50
|
||||
|
||||
|
||||
/obj/machinery/gibber
|
||||
name = "Gibber"
|
||||
@@ -575,6 +578,7 @@
|
||||
var/dirty = 0 // Does it need cleaning?
|
||||
var/gibtime = 40 // Time from starting until meat appears
|
||||
var/mob/occupant // Mob who has been put inside
|
||||
power_usage = 50
|
||||
|
||||
/obj/machinery/holopad
|
||||
name = "holopad"
|
||||
@@ -583,3 +587,4 @@
|
||||
anchored = 1
|
||||
var/state = "off"
|
||||
var/slave_holo = null
|
||||
power_usage = 50
|
||||
@@ -1126,21 +1126,6 @@ Total SMES charging rate should not exceed total power generation rate, or an ov
|
||||
throw_speed = 4
|
||||
throw_range = 20
|
||||
|
||||
/obj/item/weapon/weldingtool
|
||||
name = "weldingtool"
|
||||
icon = 'items.dmi'
|
||||
icon_state = "welder"
|
||||
var/welding = 0
|
||||
var/status = 0 //flamethrower construction :shobon:
|
||||
flags = FPRINT | TABLEPASS| CONDUCT
|
||||
force = 3.0
|
||||
throwforce = 5.0
|
||||
throw_speed = 1
|
||||
throw_range = 5
|
||||
w_class = 2.0
|
||||
m_amt = 70
|
||||
g_amt = 30
|
||||
|
||||
/obj/item/weapon/wire
|
||||
desc = "This is just a simple piece of regular insulated wire."
|
||||
name = "wire"
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
src.icon = 'alert.dmi'
|
||||
src.layer = 10
|
||||
|
||||
// update_lights()
|
||||
if(name == "Space") // override defaults for space
|
||||
requires_power = 0
|
||||
|
||||
@@ -56,7 +56,15 @@
|
||||
A = A.loc
|
||||
return null
|
||||
*/
|
||||
|
||||
/*
|
||||
/area/proc/update_lights()
|
||||
var/new_power = 0
|
||||
for(var/obj/machinery/light/L in src.contents)
|
||||
if(L.on)
|
||||
new_power += (L.luminosity * 20)
|
||||
lighting_power_usage = new_power
|
||||
return
|
||||
*/
|
||||
/area/proc/poweralert(var/state, var/source)
|
||||
if (state != poweralm)
|
||||
poweralm = state
|
||||
|
||||
@@ -645,7 +645,6 @@
|
||||
/obj/machinery/scan_consolenew/process() //not really used right now
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
use_power(250) // power stuff
|
||||
if (!( src.status )) //remove this
|
||||
return
|
||||
return
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
/proc/start_events()
|
||||
if(prob(50))//Every 120 seconds and prob 50 4-8 weak spacedusts will hit the station
|
||||
spawn(1)
|
||||
dust_swarm("weak")
|
||||
if (!event && prob(eventchance))
|
||||
event()
|
||||
hadevent = 1
|
||||
|
||||
117
code/game/gamemodes/events/dust.dm
Normal file
117
code/game/gamemodes/events/dust.dm
Normal file
@@ -0,0 +1,117 @@
|
||||
/*
|
||||
Space dust
|
||||
Commonish random event that causes small clumps of "space dust" to hit the station at high speeds.
|
||||
No command report on the common version of this event.
|
||||
The "dust" will damage the hull of the station causin minor hull breaches.
|
||||
*/
|
||||
|
||||
/proc/dust_swarm(var/strength = "weak")
|
||||
var/numbers = 1
|
||||
switch(strength)
|
||||
if("weak")
|
||||
numbers = rand(4,8)
|
||||
for(var/i = 0 to numbers)
|
||||
new/obj/space_dust/weak()
|
||||
if("norm")
|
||||
numbers = rand(5,10)
|
||||
for(var/i = 0 to numbers)
|
||||
new/obj/space_dust()
|
||||
if("strong")
|
||||
numbers = rand(10,15)
|
||||
for(var/i = 0 to numbers)
|
||||
new/obj/space_dust/strong()
|
||||
if("super")
|
||||
numbers = rand(15,25)
|
||||
for(var/i = 0 to numbers)
|
||||
new/obj/space_dust/super()
|
||||
return
|
||||
|
||||
|
||||
/obj/space_dust
|
||||
name = "Space Dust"
|
||||
desc = "Dust in space."
|
||||
icon = 'meteor.dmi'
|
||||
icon_state = "space_dust"
|
||||
density = 1
|
||||
anchored = 1
|
||||
var
|
||||
strength = 2 //ex_act severity number
|
||||
life = 2 //how many things we hit before del(src)
|
||||
|
||||
weak
|
||||
strength = 3
|
||||
life = 1
|
||||
|
||||
strong
|
||||
strength = 1
|
||||
life = 6
|
||||
|
||||
super
|
||||
strength = 1
|
||||
life = 40
|
||||
|
||||
|
||||
New()
|
||||
var/startx = 0
|
||||
var/starty = 0
|
||||
var/endy = 0
|
||||
var/endx = 0
|
||||
var/startside = pick(cardinal)
|
||||
|
||||
switch(startside)
|
||||
if(NORTH)
|
||||
starty = world.maxy-1
|
||||
startx = rand(1, world.maxx-1)
|
||||
endy = 1
|
||||
endx = rand(1, world.maxx-1)
|
||||
if(EAST)
|
||||
starty = rand(1,world.maxy-1)
|
||||
startx = world.maxx-1
|
||||
endy = rand(1, world.maxy-1)
|
||||
endx = 1
|
||||
if(SOUTH)
|
||||
starty = 1
|
||||
startx = rand(1, world.maxx-1)
|
||||
endy = world.maxy-1
|
||||
endx = rand(1, world.maxx-1)
|
||||
if(WEST)
|
||||
starty = rand(1, world.maxy-1)
|
||||
startx = 1
|
||||
endy = rand(1,world.maxy-1)
|
||||
endx = world.maxx-1
|
||||
var/goal = locate(endx, endy, src.z)
|
||||
src.x = startx
|
||||
src.y = starty
|
||||
spawn(0)
|
||||
walk_towards(src, goal, 1)
|
||||
return
|
||||
|
||||
|
||||
Bump(atom/A)
|
||||
spawn(0)
|
||||
if(prob(50))
|
||||
for(var/mob/M in range(10, src))
|
||||
if(!M.stat && !istype(M, /mob/living/silicon/ai))
|
||||
shake_camera(M, 3, 1)
|
||||
if (A)
|
||||
playsound(src.loc, 'meteorimpact.ogg', 40, 1)
|
||||
if(ismob(A))
|
||||
A.meteorhit(src)//This should work for now I guess
|
||||
else
|
||||
A.ex_act(strength)
|
||||
life--
|
||||
if(life <= 0)
|
||||
spawn(0)
|
||||
del(src)
|
||||
return 0
|
||||
return
|
||||
|
||||
|
||||
Bumped(atom/A)
|
||||
Bump(A)
|
||||
return
|
||||
|
||||
|
||||
ex_act(severity)
|
||||
del(src)
|
||||
return
|
||||
@@ -1,5 +1,7 @@
|
||||
/obj/machinery/alarm
|
||||
|
||||
power_usage = 5
|
||||
power_channel = ENVIRON
|
||||
var/frequency = 1439
|
||||
var/list/sensors = list()
|
||||
var/list/vents = list()
|
||||
@@ -352,7 +354,6 @@
|
||||
icon_state = "alarmp"
|
||||
return
|
||||
|
||||
use_power(5, ENVIRON)
|
||||
|
||||
if (!( istype(location, /turf) ))
|
||||
return 0
|
||||
@@ -574,8 +575,6 @@
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
|
||||
use_power(10, ENVIRON)
|
||||
|
||||
var/area/A = src.loc
|
||||
A = A.loc
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ the blender or the processor: Processor items are solid objects and Blender resu
|
||||
icon_state = "blender_e"
|
||||
density = 1
|
||||
anchored = 1
|
||||
power_usage = 20
|
||||
flags = OPENCONTAINER //So that you can pour stuff into it.
|
||||
var/processing = 0 //This turns on (1) while it is processing so you don't accidentally get multiples from the same item.
|
||||
var/container = 1 //Is there a jug attached? Could have been done with a for loop but it's less code this way.
|
||||
|
||||
@@ -781,8 +781,7 @@ Auto Patrol: []"},
|
||||
src.icon_state = "ed209_shell"
|
||||
del(W)
|
||||
else if ((istype(W, /obj/item/weapon/weldingtool)) && (src.build_step == 3))
|
||||
if ((W:welding) && (W:get_fuel() >= 1))
|
||||
W:use_fuel(1)
|
||||
if (W:remove_fuel(1,user))
|
||||
src.build_step++
|
||||
src.name = "shielded frame assembly"
|
||||
user << "You welded the vest to [src]!"
|
||||
@@ -864,10 +863,8 @@ Auto Patrol: []"},
|
||||
var/obj/beam/a_laser/A
|
||||
if (src.emagged)
|
||||
A = new /obj/beam/a_laser( loc )
|
||||
use_power(50)
|
||||
else
|
||||
A = new /obj/bullet/electrode( loc )
|
||||
use_power(100)
|
||||
|
||||
if (!( istype(U, /turf) ))
|
||||
//A = null
|
||||
|
||||
@@ -756,8 +756,7 @@ Auto Patrol: []"},
|
||||
|
||||
/obj/item/weapon/secbot_assembly/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if ((istype(W, /obj/item/weapon/weldingtool)) && (!src.build_step))
|
||||
if ((W:welding) && (W:get_fuel() >= 1))
|
||||
W:use_fuel(1)
|
||||
if(W:remove_fuel(1,user))
|
||||
src.build_step++
|
||||
src.overlays += image('aibots.dmi', "hs_hole")
|
||||
user << "You weld a hole in [src]!"
|
||||
|
||||
@@ -143,7 +143,7 @@
|
||||
/obj/machinery/computer/aifixer/process()
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
use_power(500)
|
||||
|
||||
|
||||
src.updateDialog()
|
||||
return
|
||||
|
||||
@@ -800,19 +800,15 @@ About the new airlock wires panel:
|
||||
src.add_fingerprint(user)
|
||||
if ((istype(C, /obj/item/weapon/weldingtool) && !( src.operating ) && src.density))
|
||||
var/obj/item/weapon/weldingtool/W = C
|
||||
if(W.welding)
|
||||
if (W.get_fuel() > 2)
|
||||
W.use_fuel(2)
|
||||
W.eyecheck(user)
|
||||
else
|
||||
user << "Need more welding fuel!"
|
||||
return
|
||||
if(W.remove_fuel(2,user))
|
||||
if (!src.welded)
|
||||
src.welded = 1
|
||||
else
|
||||
src.welded = null
|
||||
src.update_icon()
|
||||
return
|
||||
else
|
||||
return
|
||||
else if (istype(C, /obj/item/weapon/screwdriver))
|
||||
src.p_open = !( src.p_open )
|
||||
src.update_icon()
|
||||
|
||||
@@ -20,19 +20,12 @@
|
||||
src.add_fingerprint(user)
|
||||
if ((istype(C, /obj/item/weapon/weldingtool) && !( src.operating ) && src.density))
|
||||
var/obj/item/weapon/weldingtool/W = C
|
||||
if(W.welding)
|
||||
if (W.get_fuel() > 2)
|
||||
W.use_fuel(2)
|
||||
if (!( src.blocked ))
|
||||
src.blocked = 1
|
||||
else
|
||||
src.blocked = 0
|
||||
if(W.remove_fuel(2, user))
|
||||
src.blocked = !src.blocked
|
||||
user << text("\red You [blocked?"welded":"unwelded"] the [src]")
|
||||
update_icon()
|
||||
|
||||
return
|
||||
if (!( istype(C, /obj/item/weapon/crowbar) ))
|
||||
return
|
||||
|
||||
if (istype(C, /obj/item/weapon/crowbar))
|
||||
if (!src.blocked && !src.operating)
|
||||
if(src.density)
|
||||
spawn( 0 )
|
||||
@@ -58,6 +51,7 @@
|
||||
src.sd_SetOpacity(1)
|
||||
src.operating = 0
|
||||
return
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/machinery/door/firedoor/process()
|
||||
|
||||
@@ -53,8 +53,6 @@
|
||||
src.state = "off"
|
||||
src.icon_state = "holopad0"
|
||||
src.slave_holo = null
|
||||
else
|
||||
use_power(300)
|
||||
if(src.state == "off" && src.slave_holo) //usually happens if the power ran out
|
||||
del(src.slave_holo) //code for returning the control back to the AI is in the mob's del() code
|
||||
src.slave_holo = null
|
||||
|
||||
@@ -3,6 +3,7 @@ obj/machinery/recharger
|
||||
icon = 'stationobjs.dmi'
|
||||
icon_state = "recharger0"
|
||||
name = "recharger"
|
||||
power_usage = 50
|
||||
|
||||
var
|
||||
obj/item/weapon/gun/energy/charging = null
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon_state = "pod_0"
|
||||
density = 1
|
||||
anchored = 1.0
|
||||
|
||||
power_usage = 80
|
||||
var/mob/occupant = null
|
||||
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
var/metal_amount = 0
|
||||
var/operating = 0
|
||||
var/obj/item/robot_parts/being_built = null
|
||||
power_usage = 1000
|
||||
|
||||
/obj/machinery/robotic_fabricator/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
if (istype(O, /obj/item/stack/sheet/metal))
|
||||
@@ -39,8 +40,6 @@
|
||||
if (stat & (NOPOWER | BROKEN))
|
||||
return
|
||||
|
||||
use_power(1000)
|
||||
|
||||
/obj/machinery/robotic_fabricator/attack_paw(user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
var/obj/cable/attached // the attached cable
|
||||
var/storedpower = 0
|
||||
flags = FPRINT | CONDUCT
|
||||
power_usage = 500
|
||||
|
||||
/obj/machinery/shield
|
||||
name = "shield"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -11,7 +11,7 @@
|
||||
name = "status display"
|
||||
anchored = 1
|
||||
density = 1
|
||||
|
||||
power_usage = 250
|
||||
var/mode = 1 // 0 = Blank
|
||||
// 1 = Shuttle timer
|
||||
// 2 = Arbitrary message(s)
|
||||
@@ -49,8 +49,6 @@
|
||||
overlays = null
|
||||
return
|
||||
|
||||
use_power(200)
|
||||
|
||||
update()
|
||||
|
||||
|
||||
@@ -270,8 +268,6 @@
|
||||
overlays = null
|
||||
return
|
||||
|
||||
use_power(200)
|
||||
|
||||
update()
|
||||
|
||||
proc/update()
|
||||
|
||||
@@ -63,6 +63,7 @@
|
||||
var/wasvalid = 0
|
||||
var/lastfired = 0
|
||||
var/shot_delay = 30 //3 seconds between shots
|
||||
power_usage = 100
|
||||
|
||||
/obj/machinery/turretcover
|
||||
name = "pop-up turret cover"
|
||||
@@ -107,7 +108,6 @@
|
||||
lastfired = world.time
|
||||
if (src.cover==null)
|
||||
src.cover = new /obj/machinery/turretcover(src.loc)
|
||||
use_power(50)
|
||||
var/loc = src.loc
|
||||
if (istype(loc, /turf))
|
||||
loc = loc:loc
|
||||
@@ -252,10 +252,10 @@
|
||||
var/obj/beam/a_laser/A
|
||||
if (src.lasers)
|
||||
A = new /obj/beam/a_laser( loc )
|
||||
use_power(50)
|
||||
use_power(500)
|
||||
else
|
||||
A = new /obj/bullet/electrode( loc )
|
||||
use_power(100)
|
||||
use_power(200)
|
||||
|
||||
if (!( istype(U, /turf) ))
|
||||
//A = null
|
||||
|
||||
@@ -127,7 +127,7 @@ var/list/sacrificed = list()
|
||||
M.say("Tok-lyr rqa'nap g'lt-ulotf!")
|
||||
cultist_count += 1
|
||||
if(cultist_count >= 9)
|
||||
var/obj/machinery/the_singularity/S = new /obj/machinery/the_singularity/(src.loc)
|
||||
var/obj/machinery/singularity/S = new /obj/machinery/singularity/(src.loc)
|
||||
S.icon = 'magic_terror.dmi'
|
||||
S.name = "Tear in the Fabric of Reality"
|
||||
S.desc = "Your mind begins to bubble and ooze as it tries to comprehend what it sees."
|
||||
|
||||
@@ -11,6 +11,7 @@ datum/controller/game_controller
|
||||
setup()
|
||||
if(master_controller && (master_controller != src))
|
||||
del(src)
|
||||
return
|
||||
//There can be only one master.
|
||||
|
||||
if(!air_master)
|
||||
@@ -76,9 +77,7 @@ datum/controller/game_controller
|
||||
M.Life()
|
||||
else
|
||||
M.Life()
|
||||
if (M && M.mind) //I think it will be better if author place this under mob/Life() - rastaf0
|
||||
if (M.mind.special_role == "Changeling")
|
||||
M.chem_charges = between(0, (max((0.9 - (M.chem_charges / 50)), 0.1) + M.chem_charges), 50)
|
||||
|
||||
sleep(-1)
|
||||
|
||||
for(var/datum/disease/D in active_diseases)
|
||||
@@ -86,6 +85,9 @@ datum/controller/game_controller
|
||||
|
||||
for(var/obj/machinery/machine in machines)
|
||||
machine.process()
|
||||
if(machine)//Testing this for now, might change it up later - Mport
|
||||
if(machine.power_usage && machine.power_channel)
|
||||
machine.use_power(machine.power_usage,machine.power_channel)
|
||||
|
||||
sleep(-1)
|
||||
sleep(1)
|
||||
|
||||
@@ -705,17 +705,15 @@
|
||||
return
|
||||
|
||||
else if(istype(W, /obj/item/weapon/weldingtool) && W:welding)
|
||||
if (W:get_fuel() < 2)
|
||||
user << "\blue You need more welding fuel to complete this task."
|
||||
return
|
||||
if (W:remove_fuel(1,user))
|
||||
if (src.internal_damage & MECHA_INT_TANK_BREACH)
|
||||
src.internal_damage &= ~MECHA_INT_TANK_BREACH
|
||||
user << "\blue You repair the damaged gas tank."
|
||||
W:use_fuel(1)
|
||||
else
|
||||
return
|
||||
if(src.health<initial(src.health))
|
||||
user << "\blue You repair some damage to [src.name]."
|
||||
src.health += min(20, initial(src.health)-src.health)
|
||||
W:use_fuel(1)
|
||||
else
|
||||
user << "The [src.name] is at full integrity"
|
||||
return
|
||||
|
||||
@@ -139,12 +139,10 @@
|
||||
custom_action(step, atom/used_atom, mob/user)
|
||||
if(istype(used_atom, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/W = used_atom
|
||||
if(W.get_fuel() < 2)
|
||||
user << ("You need more fuel to complete current task")
|
||||
return 0
|
||||
if (W:remove_fuel(2, user))
|
||||
playsound(holder, 'Welder2.ogg', 50, 1)
|
||||
else
|
||||
W.use_fuel(1)
|
||||
playsound(holder, 'Welder.ogg', 50, 1)
|
||||
return 0
|
||||
else if(istype(used_atom, /obj/item/weapon/wrench))
|
||||
playsound(holder, 'Ratchet.ogg', 50, 1)
|
||||
|
||||
|
||||
@@ -26,17 +26,16 @@
|
||||
if(salvage_num <= 0)
|
||||
user << "You can't see anything of value left on this wreck."
|
||||
return
|
||||
if (W:get_fuel() < 2)
|
||||
user << "\blue You need more welding fuel to complete this task."
|
||||
else
|
||||
if (W:remove_fuel(1,user))
|
||||
var/type = prob(70)?pick(welder_salvage):null
|
||||
if(type)
|
||||
var/N = new type(get_turf(user))
|
||||
user.visible_message("[user] cuts [N] from [src]", "You cut [N] from [src]", "You hear a sound of welder nearby")
|
||||
W:use_fuel(1)
|
||||
else
|
||||
user << "You failed to salvage anything valuable from [src]."
|
||||
salvage_num--
|
||||
else
|
||||
user << "\blue You need more welding fuel to complete this task."
|
||||
return
|
||||
if(istype(W, /obj/item/weapon/wirecutters))
|
||||
if(salvage_num <= 0)
|
||||
|
||||
@@ -142,10 +142,9 @@
|
||||
src.MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet
|
||||
|
||||
if (istype(W, /obj/item/weapon/weldingtool) && W:welding)
|
||||
if (W:get_fuel() < 2)
|
||||
if (!W:remove_fuel(1,user))
|
||||
user << "\blue You need more welding fuel to complete this task."
|
||||
return
|
||||
W:use_fuel(1)
|
||||
new /obj/item/stack/sheet/metal(src.loc)
|
||||
for (var/mob/M in viewers(src))
|
||||
M.show_message("\red [src] has been cut apart by [user.name] with the weldingtool.", 3, "\red You hear welding.", 2)
|
||||
@@ -158,11 +157,9 @@
|
||||
W.loc = src.loc
|
||||
|
||||
else if(istype(W, /obj/item/weapon/weldingtool) && W:welding)
|
||||
if (W:get_fuel() < 2)
|
||||
if (!W:remove_fuel(1,user))
|
||||
user << "\blue You need more welding fuel to complete this task."
|
||||
return
|
||||
W:eyecheck(user)
|
||||
W:use_fuel(1)
|
||||
src.welded =! src.welded
|
||||
for(var/mob/M in viewers(src))
|
||||
M.show_message("\red [src] has been [welded?"welded shut":"unwelded"] by [user.name].", 3, "\red You hear welding.", 2)
|
||||
|
||||
@@ -84,20 +84,18 @@ obj/door_assembly
|
||||
|
||||
/obj/door_assembly/attackby(obj/item/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/weldingtool) && W:welding && !anchored )
|
||||
if (W:get_fuel() < 1)
|
||||
user << "\blue You need more welding fuel to dissassemble the airlock assembly."
|
||||
return
|
||||
W:use_fuel(1)
|
||||
if (W:remove_fuel(1,user))
|
||||
user.visible_message("[user] dissassembles the airlock assembly.", "You start to dissassemble the airlock assembly.")
|
||||
playsound(src.loc, 'Welder2.ogg', 50, 1)
|
||||
var/turf/T = get_turf(user)
|
||||
sleep(40)
|
||||
if(get_turf(user) == T)
|
||||
if(do_after(user, 40))
|
||||
user << "\blue You dissasembled the airlock assembly!"
|
||||
new /obj/item/stack/sheet/metal(get_turf(src), 4)
|
||||
if(src.glass==1)
|
||||
new /obj/item/stack/sheet/rglass(get_turf(src))
|
||||
del(src)
|
||||
else
|
||||
user << "\blue You need more welding fuel to dissassemble the airlock assembly."
|
||||
return
|
||||
else if(istype(W, /obj/item/weapon/wrench) && !anchored )
|
||||
playsound(src.loc, 'Ratchet.ogg', 100, 1)
|
||||
var/turf/T = get_turf(user)
|
||||
|
||||
@@ -71,3 +71,9 @@
|
||||
var/rendered = "<span class='game say'><span class='name'>[M.name]: </span> <span class='message'>[text]</span></span>"
|
||||
mo.show_message(rendered, 2)
|
||||
return
|
||||
|
||||
/proc/is_item_in_list(var/list/L, var/atom/A)
|
||||
for(var/atom/O in L)
|
||||
if(O == A)
|
||||
return 1
|
||||
return 0
|
||||
@@ -81,19 +81,40 @@ WELDINGTOOOL
|
||||
|
||||
|
||||
// WELDING TOOL
|
||||
/obj/item/weapon/weldingtool/New()
|
||||
var/datum/reagents/R = new/datum/reagents(20)
|
||||
/obj/item/weapon/weldingtool
|
||||
name = "weldingtool"
|
||||
icon = 'items.dmi'
|
||||
icon_state = "welder"
|
||||
flags = FPRINT | TABLEPASS| CONDUCT
|
||||
force = 3.0
|
||||
throwforce = 5.0
|
||||
throw_speed = 1
|
||||
throw_range = 5
|
||||
w_class = 2.0
|
||||
m_amt = 70
|
||||
g_amt = 30
|
||||
var
|
||||
welding = 0
|
||||
status = 0
|
||||
max_fuel = 20
|
||||
|
||||
|
||||
New()
|
||||
var/random_fuel = min(rand(10,20),max_fuel)
|
||||
var/datum/reagents/R = new/datum/reagents(max_fuel)
|
||||
reagents = R
|
||||
R.my_atom = src
|
||||
R.add_reagent("fuel", 20)
|
||||
R.add_reagent("fuel", random_fuel)
|
||||
return
|
||||
|
||||
/obj/item/weapon/weldingtool/examine()
|
||||
|
||||
examine()
|
||||
set src in usr
|
||||
usr << text("\icon[] [] contains [] units of fuel left!", src, src.name, get_fuel() )
|
||||
usr << text("\icon[] [] contains []/[] units of fuel!", src, src.name, get_fuel(),src.max_fuel )
|
||||
return
|
||||
|
||||
/obj/item/weapon/weldingtool/attackby(obj/item/W as obj, mob/user as mob)
|
||||
|
||||
attackby(obj/item/W as obj, mob/user as mob)
|
||||
if (istype(W,/obj/item/weapon/screwdriver))
|
||||
status = !status
|
||||
if (status)
|
||||
@@ -130,51 +151,114 @@ WELDINGTOOOL
|
||||
else
|
||||
..()
|
||||
|
||||
// helper functions for weldingtool fuel use
|
||||
|
||||
// return fuel amount
|
||||
/obj/item/weapon/weldingtool/proc/get_fuel()
|
||||
return reagents.get_reagent_amount("fuel")
|
||||
|
||||
// remove fuel amount
|
||||
/obj/item/weapon/weldingtool/proc/use_fuel(var/amount)
|
||||
amount = min( get_fuel() , amount)
|
||||
reagents.remove_reagent("fuel", amount)
|
||||
process()
|
||||
if(!welding)
|
||||
processing_items.Remove(src)
|
||||
return
|
||||
var/turf/location = src.loc
|
||||
if(istype(location, /mob/))
|
||||
var/mob/M = location
|
||||
if(M.l_hand == src || M.r_hand == src)
|
||||
location = get_turf(M)
|
||||
if (istype(location, /turf))
|
||||
location.hotspot_expose(700, 5)
|
||||
if(prob(20))//Welders left on now use up fuel, but lets not have them run out quite that fast
|
||||
remove_fuel(1)
|
||||
|
||||
/obj/item/weapon/weldingtool/afterattack(obj/O as obj, mob/user as mob)
|
||||
|
||||
afterattack(obj/O as obj, mob/user as mob)
|
||||
if (istype(O, /obj/reagent_dispensers/fueltank) && get_dist(src,O) <= 1 && !src.welding)
|
||||
O.reagents.trans_to(src, 20)
|
||||
O.reagents.trans_to(src, max_fuel)
|
||||
user << "\blue Welder refueled"
|
||||
playsound(src.loc, 'refill.ogg', 50, 1, -6)
|
||||
|
||||
return
|
||||
else if (istype(O, /obj/reagent_dispensers/fueltank) && get_dist(src,O) <= 1 && src.welding)
|
||||
message_admins("[key_name_admin(user)] triggered a fueltank explosion.")
|
||||
user << "\red That was stupid of you."
|
||||
explosion(O.loc,-1,0,2)
|
||||
if(O)
|
||||
del(O)
|
||||
|
||||
else if (src.welding)
|
||||
use_fuel(1)
|
||||
|
||||
|
||||
if (get_fuel() <= 0)
|
||||
usr << "\blue Need more fuel!"
|
||||
src.welding = 0
|
||||
src.force = 3
|
||||
src.damtype = "brute"
|
||||
src.icon_state = "welder"
|
||||
var/turf/location = user.loc
|
||||
return
|
||||
if (src.welding)
|
||||
remove_fuel(1)
|
||||
var/turf/location = get_turf(user)
|
||||
if (istype(location, /turf))
|
||||
location.hotspot_expose(700, 50, 1)
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/weldingtool/proc/eyecheck(mob/user as mob)
|
||||
attack_self(mob/user as mob)
|
||||
toggle()
|
||||
return
|
||||
|
||||
|
||||
proc
|
||||
|
||||
|
||||
///GET prop for fuel
|
||||
get_fuel()
|
||||
return reagents.get_reagent_amount("fuel")
|
||||
|
||||
|
||||
///SET prop for fuel
|
||||
///Will also turn it off if it is out of fuel
|
||||
///The mob argument is not needed but if included will call eyecheck() on it if the welder is on.
|
||||
remove_fuel(var/amount = 1, var/mob/M = null)
|
||||
if(!welding || !check_status())
|
||||
return 0
|
||||
if(get_fuel() >= amount)
|
||||
reagents.remove_reagent("fuel", amount)
|
||||
check_status()
|
||||
if(M)
|
||||
eyecheck()//TODO:eyecheck should really be in mob not here
|
||||
return 1
|
||||
else
|
||||
if(M)
|
||||
M << "\blue You need more welding fuel to complete this task."
|
||||
return 0
|
||||
|
||||
|
||||
///Quick check to see if we even have any fuel and should shut off
|
||||
///This could use a better name
|
||||
check_status()
|
||||
if((get_fuel() <= 0) && welding)
|
||||
toggle(1)
|
||||
return 0
|
||||
return 1
|
||||
|
||||
|
||||
//toggles the welder off and on
|
||||
toggle(var/message = 0)
|
||||
if(status > 1) return
|
||||
src.welding = !( src.welding )
|
||||
if (src.welding)
|
||||
if (remove_fuel(1))
|
||||
usr << "\blue You switch the [src] on."
|
||||
src.force = 15
|
||||
src.damtype = "fire"
|
||||
src.icon_state = "welder1"
|
||||
processing_items.Add(src)
|
||||
else
|
||||
usr << "\blue Need more fuel!"
|
||||
src.welding = 0
|
||||
return
|
||||
else
|
||||
if(!message)
|
||||
usr << "\blue You switch the [src] off."
|
||||
else
|
||||
usr << "\blue The [src] shuts off!"
|
||||
src.force = 3
|
||||
src.damtype = "brute"
|
||||
src.icon_state = "welder"
|
||||
src.welding = 0
|
||||
|
||||
|
||||
eyecheck(mob/user as mob)//TODO:Move this over to /mob/ where it should be
|
||||
//check eye protection
|
||||
var/safety = null
|
||||
if(!ishuman() && !ismonkey())
|
||||
return 1
|
||||
var/safety = 0
|
||||
if (istype(user, /mob/living/carbon/human))
|
||||
if (istype(user:head, /obj/item/clothing/head/helmet/welding) || istype(user:head, /obj/item/clothing/head/helmet/space))
|
||||
safety = 2
|
||||
@@ -184,8 +268,6 @@ WELDINGTOOOL
|
||||
safety = -1
|
||||
else
|
||||
safety = 0
|
||||
else if(istype(user, /mob/living/carbon))
|
||||
safety = 0
|
||||
switch(safety)
|
||||
if(1)
|
||||
usr << "\red Your eyes sting a little."
|
||||
@@ -213,37 +295,12 @@ WELDINGTOOOL
|
||||
user.disabilities |= 1
|
||||
spawn(100)
|
||||
user.disabilities &= ~1
|
||||
|
||||
/obj/item/weapon/weldingtool/attack_self(mob/user as mob)
|
||||
if(status > 1) return
|
||||
src.welding = !( src.welding )
|
||||
if (src.welding)
|
||||
if (get_fuel() <= 0)
|
||||
user << "\blue Need more fuel!"
|
||||
src.welding = 0
|
||||
return 0
|
||||
user << "\blue You will now weld when you attack."
|
||||
src.force = 15
|
||||
src.damtype = "fire"
|
||||
src.icon_state = "welder1"
|
||||
processing_items.Add(src)
|
||||
else
|
||||
user << "\blue Not welding anymore."
|
||||
src.force = 3
|
||||
src.damtype = "brute"
|
||||
src.icon_state = "welder"
|
||||
return
|
||||
|
||||
/obj/item/weapon/weldingtool/process()
|
||||
if(!welding)
|
||||
processing_items.Remove(src)
|
||||
return
|
||||
|
||||
var/turf/location = src.loc
|
||||
if(istype(location, /mob/))
|
||||
var/mob/M = location
|
||||
if(M.l_hand == src || M.r_hand == src)
|
||||
location = M.loc
|
||||
|
||||
if (istype(location, /turf))
|
||||
location.hotspot_expose(700, 5)
|
||||
/obj/item/weapon/weldingtool/largetank
|
||||
name = "weldingtool"
|
||||
icon = 'items.dmi'
|
||||
icon_state = "welder"
|
||||
max_fuel = 40
|
||||
@@ -15,11 +15,7 @@ FLOOR TILES
|
||||
if(amount < 2)
|
||||
user << "\red You need at least two rods to do this."
|
||||
return
|
||||
if (W:get_fuel() < 3)
|
||||
user << "\red You need more welding fuel to complete this task."
|
||||
return
|
||||
W:eyecheck(user)
|
||||
W:use_fuel(2)
|
||||
if(W:remove_fuel(2,user))
|
||||
var/obj/item/stack/sheet/metal/new_item = new(usr.loc)
|
||||
new_item.add_to_stacks(usr)
|
||||
for (var/mob/M in viewers(src))
|
||||
|
||||
@@ -325,8 +325,7 @@
|
||||
return
|
||||
|
||||
if (istype(W, /obj/item/weapon/weldingtool) && W:welding)
|
||||
W:eyecheck(user)
|
||||
var/turf/T = user.loc
|
||||
var/turf/T = get_turf(user)
|
||||
if (!( istype(T, /turf) ))
|
||||
return
|
||||
|
||||
@@ -346,19 +345,18 @@
|
||||
spawn(100) del(O)
|
||||
return
|
||||
|
||||
if (W:get_fuel() < 5)
|
||||
user << "\blue You need more welding fuel to complete this task."
|
||||
return
|
||||
W:use_fuel(5)
|
||||
|
||||
if (W:remove_fuel(5,user))
|
||||
user << "\blue Now disassembling the outer wall plating."
|
||||
playsound(src.loc, 'Welder.ogg', 100, 1)
|
||||
|
||||
sleep(100)
|
||||
if (istype(src, /turf/simulated/wall))
|
||||
if ((user.loc == T && user.equipped() == W))
|
||||
if ((get_turf(user) == T && user.equipped() == W))
|
||||
user << "\blue You disassembled the outer wall plating."
|
||||
dismantle_wall()
|
||||
else
|
||||
user << "\blue You need more welding fuel to complete this task."
|
||||
return
|
||||
|
||||
else if(istype(W,/obj/item/apc_frame))
|
||||
var/obj/item/apc_frame/AH = W
|
||||
AH.try_build(src)
|
||||
@@ -809,7 +807,7 @@ turf/simulated/floor/proc/update_icon()
|
||||
var/list/y_arr
|
||||
|
||||
if(src.x <= 1)
|
||||
if(istype(A, /obj/meteor))
|
||||
if(istype(A, /obj/meteor)||istype(A, /obj/space_dust))
|
||||
del(A)
|
||||
return
|
||||
|
||||
@@ -884,7 +882,7 @@ turf/simulated/floor/proc/update_icon()
|
||||
A.loc.Entered(A)
|
||||
|
||||
else if (src.y >= world.maxy)
|
||||
if(istype(A, /obj/meteor))
|
||||
if(istype(A, /obj/meteor)||istype(A, /obj/space_dust))
|
||||
del(A)
|
||||
return
|
||||
var/list/cur_pos = src.get_global_map_pos()
|
||||
@@ -914,7 +912,7 @@ turf/simulated/floor/proc/update_icon()
|
||||
|
||||
if (src.x <= 2)
|
||||
if(prob(50))
|
||||
if(istype(A, /obj/meteor))
|
||||
if(istype(A, /obj/meteor)||istype(A, /obj/space_dust))
|
||||
del(A)
|
||||
return
|
||||
if(istype(A,/mob/living/carbon/human))
|
||||
@@ -935,7 +933,7 @@ turf/simulated/floor/proc/update_icon()
|
||||
if ((A && A.loc))
|
||||
A.loc.Entered(A)
|
||||
else
|
||||
if(istype(A, /obj/meteor))
|
||||
if(istype(A, /obj/meteor)||istype(A, /obj/space_dust))
|
||||
del(A)
|
||||
return
|
||||
if(istype(A,/mob/living/carbon/human))
|
||||
@@ -957,7 +955,7 @@ turf/simulated/floor/proc/update_icon()
|
||||
A.loc.Entered(A)
|
||||
else if (A.x >= (world.maxx - 1))
|
||||
if(prob(50))
|
||||
if(istype(A, /obj/meteor))
|
||||
if(istype(A, /obj/meteor)||istype(A, /obj/space_dust))
|
||||
del(A)
|
||||
return
|
||||
if(istype(A,/mob/living/carbon/human))
|
||||
@@ -978,7 +976,7 @@ turf/simulated/floor/proc/update_icon()
|
||||
if ((A && A.loc))
|
||||
A.loc.Entered(A)
|
||||
else
|
||||
if(istype(A, /obj/meteor))
|
||||
if(istype(A, /obj/meteor)||istype(A, /obj/space_dust))
|
||||
del(A)
|
||||
return
|
||||
if(istype(A,/mob/living/carbon/human))
|
||||
@@ -1000,7 +998,7 @@ turf/simulated/floor/proc/update_icon()
|
||||
A.loc.Entered(A)
|
||||
else if (src.y <= 2)
|
||||
if(prob(50))
|
||||
if(istype(A, /obj/meteor))
|
||||
if(istype(A, /obj/meteor)||istype(A, /obj/space_dust))
|
||||
del(A)
|
||||
return
|
||||
if(istype(A,/mob/living/carbon/human))
|
||||
@@ -1021,7 +1019,7 @@ turf/simulated/floor/proc/update_icon()
|
||||
if ((A && A.loc))
|
||||
A.loc.Entered(A)
|
||||
else
|
||||
if(istype(A, /obj/meteor))
|
||||
if(istype(A, /obj/meteor)||istype(A, /obj/space_dust))
|
||||
del(A)
|
||||
return
|
||||
if(istype(A,/mob/living/carbon/human))
|
||||
@@ -1044,7 +1042,7 @@ turf/simulated/floor/proc/update_icon()
|
||||
|
||||
else if (A.y >= (world.maxy - 1))
|
||||
if(prob(50))
|
||||
if(istype(A, /obj/meteor))
|
||||
if(istype(A, /obj/meteor)||istype(A, /obj/space_dust))
|
||||
del(A)
|
||||
return
|
||||
if(istype(A,/mob/living/carbon/human))
|
||||
@@ -1065,7 +1063,7 @@ turf/simulated/floor/proc/update_icon()
|
||||
if ((A && A.loc))
|
||||
A.loc.Entered(A)
|
||||
else
|
||||
if(istype(A, /obj/meteor))
|
||||
if(istype(A, /obj/meteor)||istype(A, /obj/space_dust))
|
||||
del(A)
|
||||
return
|
||||
if(istype(A,/mob/living/carbon/human))
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
src.verbs += /proc/toggle_adminmsg
|
||||
|
||||
src.verbs += /client/proc/triple_ai //triple AIs~ --NEO
|
||||
|
||||
src.verbs += /client/proc/cmd_mass_modify_object_variables
|
||||
// Admin "must have"
|
||||
src.verbs += /client/proc/cmd_admin_list_occ
|
||||
src.verbs += /client/proc/cmd_admin_mute
|
||||
@@ -171,7 +171,7 @@
|
||||
src.verbs += /obj/admins/proc/voteres //toggle votes
|
||||
src.verbs += /client/proc/deadchat //toggles deadchat
|
||||
src.verbs += /proc/toggle_adminmsg
|
||||
|
||||
src.verbs += /client/proc/cmd_mass_modify_object_variables
|
||||
// Admin "must have"
|
||||
src.verbs += /client/proc/cmd_admin_list_occ
|
||||
src.verbs += /client/proc/cmd_admin_mute
|
||||
@@ -1093,7 +1093,7 @@
|
||||
src.verbs -= /client/proc/cmd_admin_prison
|
||||
src.verbs -= /obj/admins/proc/unprison
|
||||
src.verbs -= /proc/togglebuildmode
|
||||
|
||||
src.verbs -= /client/proc/cmd_mass_modify_object_variables
|
||||
// Unnecessary commands
|
||||
src.verbs -= /client/proc/funbutton
|
||||
src.verbs -= /client/proc/make_sound // -- TLE
|
||||
|
||||
223
code/modules/admin/verbs/massmodvar.dm
Normal file
223
code/modules/admin/verbs/massmodvar.dm
Normal file
@@ -0,0 +1,223 @@
|
||||
/client/proc/cmd_mass_modify_object_variables(obj/O as obj|mob|turf|area in world)
|
||||
set category = "Debug"
|
||||
set name = "Mass Edit Variables"
|
||||
set desc="(target) Edit all instances of a target item's variables"
|
||||
src.massmodify_variables(O)
|
||||
|
||||
|
||||
/client/proc/massmodify_variables(var/atom/O)
|
||||
var/list/locked = list("vars", "key", "ckey", "client")
|
||||
|
||||
if(!src.authenticated || !src.holder)
|
||||
src << "Only administrators may use this command."
|
||||
return
|
||||
|
||||
var/list/names = list()
|
||||
for (var/V in O.vars)
|
||||
names += V
|
||||
|
||||
names = sortList(names)
|
||||
|
||||
var/variable = input("Which var?","Var") as null|anything in names
|
||||
if(!variable)
|
||||
return
|
||||
var/default
|
||||
var/var_value = O.vars[variable]
|
||||
var/dir
|
||||
|
||||
if (locked.Find(variable) && !(src.holder.rank in list("Host", "Coder")))
|
||||
return
|
||||
|
||||
if(isnull(var_value))
|
||||
usr << "Unable to determine variable type."
|
||||
|
||||
else if(isnum(var_value))
|
||||
usr << "Variable appears to be <b>NUM</b>."
|
||||
default = "num"
|
||||
dir = 1
|
||||
|
||||
else if(istext(var_value))
|
||||
usr << "Variable appears to be <b>TEXT</b>."
|
||||
default = "text"
|
||||
|
||||
else if(isloc(var_value))
|
||||
usr << "Variable appears to be <b>REFERENCE</b>."
|
||||
default = "reference"
|
||||
|
||||
else if(isicon(var_value))
|
||||
usr << "Variable appears to be <b>ICON</b>."
|
||||
var_value = "\icon[var_value]"
|
||||
default = "icon"
|
||||
|
||||
else if(istype(var_value,/atom) || istype(var_value,/datum))
|
||||
usr << "Variable appears to be <b>TYPE</b>."
|
||||
default = "type"
|
||||
|
||||
else if(istype(var_value,/list))
|
||||
usr << "Variable appears to be <b>LIST</b>."
|
||||
default = "list"
|
||||
|
||||
else if(istype(var_value,/client))
|
||||
usr << "Variable appears to be <b>CLIENT</b>."
|
||||
default = "cancel"
|
||||
|
||||
else
|
||||
usr << "Variable appears to be <b>FILE</b>."
|
||||
default = "file"
|
||||
|
||||
usr << "Variable contains: [var_value]"
|
||||
if(dir)
|
||||
switch(var_value)
|
||||
if(1)
|
||||
dir = "NORTH"
|
||||
if(2)
|
||||
dir = "SOUTH"
|
||||
if(4)
|
||||
dir = "EAST"
|
||||
if(8)
|
||||
dir = "WEST"
|
||||
if(5)
|
||||
dir = "NORTHEAST"
|
||||
if(6)
|
||||
dir = "SOUTHEAST"
|
||||
if(9)
|
||||
dir = "NORTHWEST"
|
||||
if(10)
|
||||
dir = "SOUTHWEST"
|
||||
else
|
||||
dir = null
|
||||
if(dir)
|
||||
usr << "If a direction, direction is: [dir]"
|
||||
|
||||
var/class = input("What kind of variable?","Variable Type",default) as null|anything in list("text",
|
||||
"num","type","icon","file","edit referenced object","restore to default")
|
||||
|
||||
if(!class)
|
||||
return
|
||||
|
||||
var/original_name
|
||||
|
||||
if (!istype(O, /atom))
|
||||
original_name = "\ref[O] ([O])"
|
||||
else
|
||||
original_name = O:name
|
||||
|
||||
switch(class)
|
||||
|
||||
if("restore to default")
|
||||
O.vars[variable] = initial(O.vars[variable])
|
||||
|
||||
if(istype(O, /mob))
|
||||
for(var/mob/M in world)
|
||||
if (M.type == O.type)
|
||||
M.vars[variable] = O.vars[variable]
|
||||
|
||||
else if(istype(O, /obj))
|
||||
for(var/obj/A in world)
|
||||
if (A.type == O.type)
|
||||
A.vars[variable] = O.vars[variable]
|
||||
|
||||
else if(istype(O, /turf))
|
||||
for(var/turf/A in world)
|
||||
if (A.type == O.type)
|
||||
A.vars[variable] = O.vars[variable]
|
||||
|
||||
if("edit referenced object")
|
||||
return .(O.vars[variable])
|
||||
|
||||
if("text")
|
||||
O.vars[variable] = input("Enter new text:","Text",\
|
||||
O.vars[variable]) as text
|
||||
|
||||
if(istype(O, /mob))
|
||||
for(var/mob/M in world)
|
||||
if (M.type == O.type)
|
||||
M.vars[variable] = O.vars[variable]
|
||||
|
||||
else if(istype(O, /obj))
|
||||
for(var/obj/A in world)
|
||||
if (A.type == O.type)
|
||||
A.vars[variable] = O.vars[variable]
|
||||
|
||||
else if(istype(O, /turf))
|
||||
for(var/turf/A in world)
|
||||
if (A.type == O.type)
|
||||
A.vars[variable] = O.vars[variable]
|
||||
|
||||
if("num")
|
||||
O.vars[variable] = input("Enter new number:","Num",\
|
||||
O.vars[variable]) as num
|
||||
|
||||
if(istype(O, /mob))
|
||||
for(var/mob/M in world)
|
||||
if (M.type == O.type)
|
||||
M.vars[variable] = O.vars[variable]
|
||||
|
||||
else if(istype(O, /obj))
|
||||
for(var/obj/A in world)
|
||||
if (A.type == O.type)
|
||||
A.vars[variable] = O.vars[variable]
|
||||
|
||||
else if(istype(O, /turf))
|
||||
for(var/turf/A in world)
|
||||
if (A.type == O.type)
|
||||
A.vars[variable] = O.vars[variable]
|
||||
|
||||
if("type")
|
||||
O.vars[variable] = input("Enter type:","Type",O.vars[variable]) \
|
||||
in typesof(/obj,/mob,/area,/turf)
|
||||
|
||||
if(istype(O, /mob))
|
||||
for(var/mob/M in world)
|
||||
if (M.type == O.type)
|
||||
M.vars[variable] = O.vars[variable]
|
||||
|
||||
else if(istype(O, /obj))
|
||||
for(var/obj/A in world)
|
||||
if (A.type == O.type)
|
||||
A.vars[variable] = O.vars[variable]
|
||||
|
||||
else if(istype(O, /turf))
|
||||
for(var/turf/A in world)
|
||||
if (A.type == O.type)
|
||||
A.vars[variable] = O.vars[variable]
|
||||
|
||||
if("file")
|
||||
O.vars[variable] = input("Pick file:","File",O.vars[variable]) \
|
||||
as file
|
||||
|
||||
if(istype(O, /mob))
|
||||
for(var/mob/M in world)
|
||||
if (M.type == O.type)
|
||||
M.vars[variable] = O.vars[variable]
|
||||
|
||||
else if(istype(O.type, /obj))
|
||||
for(var/obj/A in world)
|
||||
if (A.type == O.type)
|
||||
A.vars[variable] = O.vars[variable]
|
||||
|
||||
else if(istype(O.type, /turf))
|
||||
for(var/turf/A in world)
|
||||
if (A.type == O.type)
|
||||
A.vars[variable] = O.vars[variable]
|
||||
|
||||
if("icon")
|
||||
O.vars[variable] = input("Pick icon:","Icon",O.vars[variable]) \
|
||||
as icon
|
||||
if(istype(O, /mob))
|
||||
for(var/mob/M in world)
|
||||
if (M.type == O.type)
|
||||
M.vars[variable] = O.vars[variable]
|
||||
|
||||
else if(istype(O, /obj))
|
||||
for(var/obj/A in world)
|
||||
if (A.type == O.type)
|
||||
A.vars[variable] = O.vars[variable]
|
||||
|
||||
else if(istype(O, /turf))
|
||||
for(var/turf/A in world)
|
||||
if (A.type == O.type)
|
||||
A.vars[variable] = O.vars[variable]
|
||||
|
||||
log_admin("[key_name(src)] mass modified [original_name]'s [variable] to [O.vars[variable]]")
|
||||
message_admins("[key_name_admin(src)] mass modified [original_name]'s [variable] to [O.vars[variable]]", 1)
|
||||
@@ -41,6 +41,9 @@
|
||||
//Disease Check
|
||||
handle_virus_updates()
|
||||
|
||||
//Changeling things
|
||||
handle_changeling()
|
||||
|
||||
//Handle temperature/pressure differences between body and environment
|
||||
handle_environment(environment)
|
||||
|
||||
@@ -866,6 +869,13 @@
|
||||
if(!M.nodamage)
|
||||
M.bruteloss += 5
|
||||
src.nutrition += 10
|
||||
|
||||
handle_changeling()
|
||||
if (mind)
|
||||
if (mind.special_role == "Changeling")
|
||||
src.chem_charges = between(0, (max((0.9 - (chem_charges / 50)), 0.1) + chem_charges), 50)
|
||||
|
||||
|
||||
/*
|
||||
// Commented out so hunger system won't be such shock
|
||||
// Damage and effects from not eating
|
||||
|
||||
@@ -40,6 +40,9 @@
|
||||
//Disease Check
|
||||
handle_virus_updates()
|
||||
|
||||
//Changeling things
|
||||
handle_changeling()
|
||||
|
||||
//Handle temperature/pressure differences between body and environment
|
||||
if(environment) // More error checking -- TLE
|
||||
handle_environment(environment)
|
||||
@@ -565,3 +568,8 @@
|
||||
src.density = 1
|
||||
else
|
||||
src.density = !src.lying
|
||||
|
||||
handle_changeling()
|
||||
if (mind)
|
||||
if (mind.special_role == "Changeling")
|
||||
src.chem_charges = between(0, (max((0.9 - (chem_charges / 50)), 0.1) + chem_charges), 50)
|
||||
@@ -351,6 +351,7 @@
|
||||
statpanel("Status")
|
||||
stat(null, text("Intent: []", src.a_intent))
|
||||
stat(null, text("Move Mode: []", src.m_intent))
|
||||
if(client && mind)
|
||||
if (src.client.statpanel == "Status")
|
||||
if (src.mind.special_role == "Changeling")
|
||||
stat("Chemical Storage", src.chem_charges)
|
||||
|
||||
@@ -185,18 +185,16 @@
|
||||
|
||||
/mob/living/silicon/hivebot/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if (istype(W, /obj/item/weapon/weldingtool) && W:welding)
|
||||
if (W:get_fuel() > 2)
|
||||
W:use_fuel(1)
|
||||
else
|
||||
user << "Need more welding fuel!"
|
||||
return
|
||||
if (W:remove_fuel(4))
|
||||
src.bruteloss -= 30
|
||||
if(src.bruteloss < 0) src.bruteloss = 0
|
||||
src.updatehealth()
|
||||
src.add_fingerprint(user)
|
||||
for(var/mob/O in viewers(user, null))
|
||||
O.show_message(text("\red [user] has fixed some of the dents on [src]!"), 1)
|
||||
|
||||
else
|
||||
user << "Need more welding fuel!"
|
||||
return
|
||||
|
||||
/mob/living/silicon/hivebot/attack_alien(mob/living/carbon/alien/humanoid/M as mob)
|
||||
|
||||
|
||||
@@ -281,6 +281,7 @@
|
||||
|
||||
process_locks()
|
||||
if(weapon_lock)
|
||||
src.module_active = null
|
||||
src.module_state_1 = null
|
||||
src.module_state_2 = null
|
||||
src.module_state_3 = null
|
||||
|
||||
@@ -348,17 +348,17 @@
|
||||
|
||||
/mob/living/silicon/robot/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if (istype(W, /obj/item/weapon/weldingtool) && W:welding)
|
||||
if (W:get_fuel() > 2)
|
||||
W:use_fuel(1)
|
||||
else
|
||||
user << "Need more welding fuel!"
|
||||
return
|
||||
if (W:remove_fuel(4))
|
||||
src.bruteloss -= 30
|
||||
if(src.bruteloss < 0) src.bruteloss = 0
|
||||
src.updatehealth()
|
||||
src.add_fingerprint(user)
|
||||
for(var/mob/O in viewers(user, null))
|
||||
O.show_message(text("\red [user] has fixed some of the dents on [src]!"), 1)
|
||||
else
|
||||
user << "Need more welding fuel!"
|
||||
return
|
||||
|
||||
|
||||
else if(istype(W, /obj/item/weapon/cable_coil) && wiresexposed)
|
||||
var/obj/item/weapon/cable_coil/coil = W
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
..()
|
||||
src.modules += new /obj/item/weapon/extinguisher(src)
|
||||
src.modules += new /obj/item/weapon/screwdriver(src)
|
||||
src.modules += new /obj/item/weapon/weldingtool(src)
|
||||
src.modules += new /obj/item/weapon/weldingtool/largetank(src)
|
||||
src.modules += new /obj/item/weapon/wrench(src)
|
||||
src.modules += new /obj/item/device/analyzer(src)
|
||||
src.modules += new /obj/item/device/flashlight(src)
|
||||
|
||||
@@ -1381,7 +1381,7 @@
|
||||
namecounts[name] = 1
|
||||
creatures[name] = D
|
||||
|
||||
for (var/obj/machinery/the_singularity/S in world)
|
||||
for (var/obj/machinery/singularity/S in world)
|
||||
var/name = "Singularity"
|
||||
if (name in names)
|
||||
namecounts[name]++
|
||||
|
||||
@@ -3,6 +3,7 @@ mob/new_player
|
||||
|
||||
var/datum/preferences/preferences
|
||||
var/ready = 0
|
||||
var/spawning = 0
|
||||
|
||||
invisibility = 101
|
||||
|
||||
@@ -80,6 +81,8 @@ mob/new_player
|
||||
Logout()
|
||||
ready = 0
|
||||
..()
|
||||
if(!spawning)
|
||||
del(src)
|
||||
return
|
||||
|
||||
verb
|
||||
@@ -142,6 +145,8 @@ mob/new_player
|
||||
if(alert(src,"Are you sure you wish to observe? You will not be able to play this round!","Player Setup","Yes","No") == "Yes")
|
||||
var/mob/dead/observer/observer = new()
|
||||
|
||||
src.spawning = 1
|
||||
|
||||
close_spawn_windows()
|
||||
var/obj/O = locate("landmark*Observer-Start")
|
||||
src << "\blue Now teleporting."
|
||||
@@ -397,6 +402,7 @@ mob/new_player
|
||||
src << browse(dat, "window=latechoices;size=300x640;can_close=0")
|
||||
|
||||
proc/create_character()
|
||||
src.spawning = 1
|
||||
var/mob/living/carbon/human/new_character = new(src.loc)
|
||||
|
||||
close_spawn_windows()
|
||||
|
||||
@@ -366,8 +366,7 @@
|
||||
user << "\blue You need more welding fuel to complete this task."
|
||||
return
|
||||
user << "You start welding APC frame..."
|
||||
W:use_fuel(2)
|
||||
W:eyecheck(user)
|
||||
if(W:remove_fuel(2))
|
||||
playsound(src.loc, 'Welder.ogg', 50, 1)
|
||||
if(do_after(user, 50))
|
||||
if (emagged || malfhack || (stat & BROKEN) || opened==2)
|
||||
@@ -383,6 +382,7 @@
|
||||
"You cut APC frame from the wall.",\
|
||||
"\red You hear welding.")
|
||||
del(src)
|
||||
return
|
||||
else if (istype(W, /obj/item/apc_frame) && opened && emagged)
|
||||
emagged = 0
|
||||
if (opened==2)
|
||||
@@ -810,7 +810,7 @@
|
||||
else
|
||||
malfai << "Hack complete. The APC is now under your exclusive control. Unable to fuse interface due to insufficient cell charge."
|
||||
else
|
||||
malfai << "Hack complete. The APC is now under your exclusive control. Unable to fuse interface due to lack of cell do discharge."
|
||||
malfai << "Hack complete. The APC is now under your exclusive control. Unable to fuse interface due to lack of cell to discharge."
|
||||
|
||||
|
||||
src.updateDialog()
|
||||
|
||||
@@ -19,7 +19,10 @@
|
||||
desc = "A lighting fixture."
|
||||
anchored = 1
|
||||
layer = 5 // They were appearing under mobs which is a little weird - Ostaf
|
||||
power_usage = 0
|
||||
power_channel = LIGHT //Lights are calc'd via area so they dont need to be in the machine list
|
||||
var/on = 0 // 1 if on, 0 if off
|
||||
var/on_gs = 0
|
||||
var/brightness = 8 // luminosity when on, also used in power calculation
|
||||
var/status = LIGHT_OK // LIGHT_OK, _EMPTY, _BURNED or _BROKEN
|
||||
|
||||
@@ -63,9 +66,23 @@
|
||||
// create a new lighting fixture
|
||||
/obj/machinery/light/New()
|
||||
..()
|
||||
|
||||
switch(fitting)
|
||||
if("tube")
|
||||
brightness = rand(6,9)
|
||||
if("bulb")
|
||||
brightness = rand(3,6)
|
||||
spawn(1)
|
||||
update()
|
||||
|
||||
/obj/machinery/light/Del()
|
||||
var/area/A = get_area(src)
|
||||
if(A)
|
||||
on = 0
|
||||
// A.update_lights()
|
||||
..()
|
||||
|
||||
|
||||
// update the icon_state and luminosity of the light depending on its state
|
||||
/obj/machinery/light/proc/update()
|
||||
|
||||
@@ -100,7 +117,12 @@
|
||||
icon_state = "[base_state]-burned"
|
||||
on = 0
|
||||
sd_SetLuminosity(0)
|
||||
|
||||
power_usage = (luminosity * 20)
|
||||
if(on != on_gs)
|
||||
on_gs = on
|
||||
// var/area/A = get_area(src)
|
||||
// if(A)
|
||||
// A.update_lights()
|
||||
|
||||
|
||||
// attempt to set the light's on/off status
|
||||
@@ -129,8 +151,6 @@
|
||||
|
||||
/obj/machinery/light/attackby(obj/item/W, mob/user)
|
||||
|
||||
if (istype(user, /mob/living/silicon))
|
||||
return
|
||||
|
||||
// attempt to insert light
|
||||
if(istype(W, /obj/item/weapon/light))
|
||||
@@ -145,6 +165,7 @@
|
||||
user << "You insert the [L.name]."
|
||||
switchcount = L.switchcount
|
||||
rigged = L.rigged
|
||||
brightness = L.brightness
|
||||
del(L)
|
||||
|
||||
on = has_power()
|
||||
@@ -255,6 +276,7 @@
|
||||
var/obj/item/weapon/light/L = new light_type()
|
||||
L.status = status
|
||||
L.rigged = rigged
|
||||
L.brightness = src.brightness
|
||||
L.loc = usr
|
||||
L.layer = 20
|
||||
if(user.hand)
|
||||
@@ -318,8 +340,9 @@
|
||||
#define LIGHTING_POWER_FACTOR 20 //20W per unit luminosity
|
||||
|
||||
/obj/machinery/light/process()
|
||||
if(on)
|
||||
use_power(luminosity * LIGHTING_POWER_FACTOR, LIGHT)
|
||||
return
|
||||
// if(on)
|
||||
// use_power(luminosity * LIGHTING_POWER_FACTOR, LIGHT)
|
||||
|
||||
// called when area power state changes
|
||||
|
||||
@@ -402,6 +425,7 @@
|
||||
var/switchcount = 0 // number of times switched
|
||||
m_amt = 60
|
||||
var/rigged = 0 // true if rigged to explode
|
||||
var/brightness = 2 //how much light it gives off
|
||||
|
||||
/obj/item/weapon/light/tube
|
||||
name = "light tube"
|
||||
@@ -410,6 +434,7 @@
|
||||
base_state = "ltube"
|
||||
item_state = "c_tube"
|
||||
g_amt = 200
|
||||
brightness = 8
|
||||
|
||||
/obj/item/weapon/light/bulb
|
||||
name = "light bulb"
|
||||
@@ -418,6 +443,7 @@
|
||||
base_state = "lbulb"
|
||||
item_state = "contvapour"
|
||||
g_amt = 100
|
||||
brightness = 5
|
||||
|
||||
// update the icon state and description of the light
|
||||
/obj/item/weapon/light
|
||||
@@ -436,6 +462,11 @@
|
||||
|
||||
/obj/item/weapon/light/New()
|
||||
..()
|
||||
switch(name)
|
||||
if("light tube")
|
||||
brightness = rand(6,9)
|
||||
if("light bulb")
|
||||
brightness = rand(4,6)
|
||||
update()
|
||||
|
||||
|
||||
|
||||
83
code/modules/power/singularity/collector.dm
Normal file
83
code/modules/power/singularity/collector.dm
Normal file
@@ -0,0 +1,83 @@
|
||||
|
||||
/obj/machinery/power/rad_collector
|
||||
name = "Radiation Collector Array"
|
||||
desc = "A device which uses Hawking Radiation and plasma to produce power."
|
||||
icon = 'singularity.dmi'
|
||||
icon_state = "collector"
|
||||
anchored = 1
|
||||
density = 1
|
||||
directwired = 1
|
||||
var
|
||||
obj/item/weapon/tank/plasma/P = null
|
||||
last_power = 0
|
||||
|
||||
process()
|
||||
if(P)
|
||||
if(P.air_contents.toxins <= 0)
|
||||
P.air_contents.toxins = 0
|
||||
eject()
|
||||
else
|
||||
P.air_contents.toxins -= 0.001
|
||||
return
|
||||
|
||||
|
||||
attackby(obj/item/W, mob/user)
|
||||
if(istype(W, /obj/item/device/analyzer))
|
||||
user << "\blue The [W.name] detects that [last_power]W were recently produced."
|
||||
return 1
|
||||
if(istype(W, /obj/item/weapon/tank/plasma))
|
||||
if(!src.anchored)
|
||||
user << "The [src] needs to be secured to the floor first."
|
||||
return 1
|
||||
if(src.P)
|
||||
user << "\red There appears to already be a plasma tank loaded!"
|
||||
return 1
|
||||
icon_state = "collector +p"
|
||||
src.P = W
|
||||
W.loc = src
|
||||
if (user.client)
|
||||
user.client.screen -= W
|
||||
user.u_equip(W)
|
||||
else if(istype(W, /obj/item/weapon/crowbar))
|
||||
if(P)
|
||||
eject()
|
||||
return 1
|
||||
else if(istype(W, /obj/item/weapon/wrench))
|
||||
if(P)
|
||||
user << "\red Remove the plasma tank first."
|
||||
return 1
|
||||
playsound(src.loc, 'Ratchet.ogg', 75, 1)
|
||||
src.anchored = !src.anchored
|
||||
user.visible_message("[user.name] [anchored? "secures":"unsecures"] the [src.name].", \
|
||||
"You [anchored? "secure":"undo"] the external bolts.", \
|
||||
"You hear ratchet")
|
||||
else
|
||||
..()
|
||||
return 1
|
||||
|
||||
|
||||
ex_act(severity)
|
||||
switch(severity)
|
||||
if(2, 3)
|
||||
eject()
|
||||
return ..()
|
||||
|
||||
|
||||
proc
|
||||
eject()
|
||||
var/obj/item/weapon/tank/plasma/Z = src.P
|
||||
if (!Z)
|
||||
return
|
||||
Z.loc = get_turf(src)
|
||||
Z.layer = initial(Z.layer)
|
||||
src.P = null
|
||||
icon_state = "collector"
|
||||
|
||||
receive_pulse(var/pulse_strength)
|
||||
if(P)
|
||||
var/power_produced = 0
|
||||
power_produced = P.air_contents.toxins*pulse_strength*20
|
||||
add_avail(power_produced)
|
||||
last_power = power_produced
|
||||
return
|
||||
return
|
||||
75
code/modules/power/singularity/containment_field.dm
Normal file
75
code/modules/power/singularity/containment_field.dm
Normal file
@@ -0,0 +1,75 @@
|
||||
|
||||
/obj/machinery/containment_field
|
||||
name = "Containment Field"
|
||||
desc = "An energy field."
|
||||
icon = 'singularity.dmi'
|
||||
icon_state = "Contain_F"
|
||||
anchored = 1
|
||||
density = 0
|
||||
unacidable = 1
|
||||
power_usage = 0
|
||||
|
||||
New()
|
||||
spawn(1)
|
||||
src.sd_SetLuminosity(5)
|
||||
|
||||
|
||||
attack_hand(mob/user as mob)
|
||||
if(get_dist(src, user) > 1)
|
||||
return 0
|
||||
else
|
||||
shock(user)
|
||||
return 1
|
||||
|
||||
|
||||
blob_act()
|
||||
return
|
||||
|
||||
|
||||
ex_act(severity)
|
||||
return
|
||||
|
||||
|
||||
HasProximity(atom/movable/AM as mob|obj)
|
||||
if(istype(AM,/mob/living/silicon) && prob(40))
|
||||
shock(AM)
|
||||
return
|
||||
if(istype(AM,/mob/living/carbon) && prob(50))
|
||||
shock(AM)
|
||||
return
|
||||
|
||||
|
||||
proc
|
||||
shock(mob/user as mob)
|
||||
if(iscarbon(user))
|
||||
var/datum/effects/system/spark_spread/s = new /datum/effects/system/spark_spread
|
||||
s.set_up(5, 1, user.loc)
|
||||
s.start()
|
||||
var/shock_damage = min(rand(30,40),rand(30,40))
|
||||
user.burn_skin(shock_damage)
|
||||
user.updatehealth()
|
||||
user.visible_message("\red [user.name] was shocked by the [src.name]!", \
|
||||
"\red <B>You feel a powerful shock course through your body sending you flying!</B>", \
|
||||
"\red You hear a heavy electrical crack")
|
||||
var/stun = min(shock_damage, 15)
|
||||
if(user.stunned < shock_damage) user.stunned = stun
|
||||
if(user.weakened < 10) user.weakened = 10
|
||||
user.updatehealth()
|
||||
var/atom/target = get_edge_target_turf(user, get_dir(src, get_step_away(user, src)))
|
||||
user.throw_at(target, 200, 4)
|
||||
return
|
||||
else if(issilicon(user))
|
||||
var/datum/effects/system/spark_spread/s = new /datum/effects/system/spark_spread
|
||||
s.set_up(5, 1, user.loc)
|
||||
s.start()
|
||||
var/shock_damage = rand(15,30)
|
||||
user.fireloss += shock_damage
|
||||
user.updatehealth()
|
||||
user.visible_message("\red [user.name] was shocked by the [src.name]!", \
|
||||
"\red <B>Energy pulse detected, system damaged!</B>", \
|
||||
"\red You hear an electrical crack")
|
||||
if(prob(20))
|
||||
if(user.stunned < 2)
|
||||
user.stunned = 2
|
||||
return
|
||||
return
|
||||
179
code/modules/power/singularity/emitter.dm
Normal file
179
code/modules/power/singularity/emitter.dm
Normal file
@@ -0,0 +1,179 @@
|
||||
/obj/machinery/emitter
|
||||
name = "Emitter"
|
||||
desc = "A heavy duty industrial laser"
|
||||
icon = 'singularity.dmi'
|
||||
icon_state = "Emitter"
|
||||
anchored = 0
|
||||
density = 1
|
||||
req_access = list(access_engine)
|
||||
var/active = 0
|
||||
var/fire_delay = 100
|
||||
var/last_shot = 0
|
||||
var/shot_number = 0
|
||||
var/state = 0
|
||||
var/locked = 0
|
||||
power_usage = 0
|
||||
|
||||
|
||||
/obj/machinery/emitter/New()
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/emitter/update_icon()
|
||||
if (active && !(stat & (NOPOWER|BROKEN)))
|
||||
icon_state = "Emitter +a"
|
||||
else
|
||||
icon_state = "Emitter"
|
||||
|
||||
|
||||
/obj/machinery/emitter/attack_hand(mob/user as mob)
|
||||
src.add_fingerprint(user)
|
||||
if(state == 2)
|
||||
if(!src.locked || istype(user, /mob/living/silicon))
|
||||
if(src.active==1)
|
||||
src.active = 0
|
||||
user << "You turn off the [src]."
|
||||
src.power_usage = 0
|
||||
else
|
||||
src.active = 1
|
||||
user << "You turn on the [src]."
|
||||
src.shot_number = 0
|
||||
src.fire_delay = 100
|
||||
src.power_usage = 100
|
||||
update_icon()
|
||||
else
|
||||
user << "The controls are locked!"
|
||||
else
|
||||
user << "The [src] needs to be firmly secured to the floor first."
|
||||
return 1
|
||||
|
||||
/obj/machinery/emitter/emp_act()//Emitters are hardened but still might have issues
|
||||
use_power(50)
|
||||
if(prob(1)&&prob(1))
|
||||
if(src.active)
|
||||
src.active = 0
|
||||
src.power_usage = 0
|
||||
return 1
|
||||
|
||||
|
||||
/obj/machinery/emitter/process()
|
||||
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
|
||||
if(src.state != 2)
|
||||
src.active = 0
|
||||
return
|
||||
|
||||
if(((src.last_shot + src.fire_delay) <= world.time) && (src.active == 1))
|
||||
src.last_shot = world.time
|
||||
if(src.shot_number < 3)
|
||||
src.fire_delay = 2
|
||||
src.shot_number ++
|
||||
else
|
||||
src.fire_delay = rand(20,100)
|
||||
src.shot_number = 0
|
||||
|
||||
use_power(1000)
|
||||
var/obj/beam/a_laser/A = new /obj/beam/a_laser( src.loc )
|
||||
A.icon_state = "u_laser"
|
||||
playsound(src.loc, 'emitter.ogg', 75, 1)
|
||||
|
||||
if(prob(35))
|
||||
var/datum/effects/system/spark_spread/s = new /datum/effects/system/spark_spread
|
||||
s.set_up(5, 1, src)
|
||||
s.start()
|
||||
A.dir = src.dir
|
||||
if(src.dir == 1)//Up
|
||||
A.yo = 20
|
||||
A.xo = 0
|
||||
|
||||
else if(src.dir == 2)//Down
|
||||
A.yo = -20
|
||||
A.xo = 0
|
||||
|
||||
else if(src.dir == 4)//Right
|
||||
A.yo = 0
|
||||
A.xo = 20
|
||||
|
||||
else if(src.dir == 8)//Left
|
||||
A.yo = 0
|
||||
A.xo = -20
|
||||
|
||||
else // Any other
|
||||
A.yo = -20
|
||||
A.xo = 0
|
||||
|
||||
A.process()
|
||||
|
||||
|
||||
/obj/machinery/emitter/attackby(obj/item/W, mob/user)
|
||||
if(active)
|
||||
user << "Turn off the [src] first."
|
||||
return
|
||||
|
||||
else if(istype(W, /obj/item/weapon/wrench))
|
||||
switch(state)
|
||||
if(0)
|
||||
state = 1
|
||||
playsound(src.loc, 'Ratchet.ogg', 75, 1)
|
||||
user.visible_message("[user.name] secures [src.name] to the floor.", \
|
||||
"You secure the external reinforcing bolts to the floor.", \
|
||||
"You hear ratchet")
|
||||
src.anchored = 1
|
||||
if(1)
|
||||
state = 0
|
||||
playsound(src.loc, 'Ratchet.ogg', 75, 1)
|
||||
user.visible_message("[user.name] unsecures [src.name] reinforcing bolts from the floor.", \
|
||||
"You undo the external reinforcing bolts.", \
|
||||
"You hear ratchet")
|
||||
src.anchored = 0
|
||||
if(2)
|
||||
user << "\red The [src.name] needs to be unwelded from the floor."
|
||||
return
|
||||
|
||||
else if(istype(W, /obj/item/weapon/weldingtool))
|
||||
switch(state)
|
||||
if(0)
|
||||
user << "\red The [src.name] needs to be wrenched to the floor."
|
||||
return
|
||||
if(1)
|
||||
if (W:remove_fuel(2))
|
||||
playsound(src.loc, 'Welder2.ogg', 50, 1)
|
||||
user.visible_message("[user.name] starts to weld the [src.name] to the floor.", \
|
||||
"You start to weld the [src] to the floor.", \
|
||||
"You hear welding")
|
||||
if (do_after(user,20))
|
||||
state = 2
|
||||
user << "You weld the [src] to the floor."
|
||||
else
|
||||
user << "\blue You need more welding fuel to complete this task."
|
||||
return
|
||||
if(2)
|
||||
if (W:remove_fuel(2))
|
||||
playsound(src.loc, 'Welder2.ogg', 50, 1)
|
||||
user.visible_message("[user.name] starts to cut the [src.name] free from the floor.", \
|
||||
"You start to cut the [src] free from the floor.", \
|
||||
"You hear welding")
|
||||
if (do_after(user,20))
|
||||
state = 1
|
||||
user << "You cut the [src] free from the floor."
|
||||
else
|
||||
user << "\blue You need more welding fuel to complete this task."
|
||||
return
|
||||
else if(istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda))
|
||||
if (src.allowed(user))
|
||||
src.locked = !src.locked
|
||||
user << "Controls are now [src.locked ? "locked." : "unlocked."]"
|
||||
else
|
||||
user << "\red Access denied."
|
||||
return
|
||||
else
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/emitter/power_change()
|
||||
..()
|
||||
update_icon()
|
||||
308
code/modules/power/singularity/field_generator.dm
Normal file
308
code/modules/power/singularity/field_generator.dm
Normal file
@@ -0,0 +1,308 @@
|
||||
|
||||
/////FIELD GEN
|
||||
#define field_generator_max_power 250
|
||||
/obj/machinery/field_generator
|
||||
name = "Field Generator"
|
||||
desc = "A large thermal battery that projects a high amount of energy when powered."
|
||||
icon = 'singularity.dmi'
|
||||
icon_state = "Field_Gen"
|
||||
anchored = 0
|
||||
density = 1
|
||||
req_access = list(access_engine)
|
||||
power_usage = 0
|
||||
var
|
||||
Varedit_start = 0
|
||||
Varpower = 0
|
||||
active = 0
|
||||
power = 20
|
||||
state = 0
|
||||
warming_up = 0
|
||||
powerlevel = 0
|
||||
list/obj/machinery/containment_field/fields
|
||||
list/obj/machinery/field_generator/connected_gens
|
||||
|
||||
|
||||
update_icon()
|
||||
if (!active)
|
||||
icon_state = "Field_Gen"
|
||||
return
|
||||
var/level = 3
|
||||
switch (power)
|
||||
if(0 to 60)
|
||||
level = 1
|
||||
if(61 to 220)
|
||||
level = 2
|
||||
if(221 to INFINITY)
|
||||
level = 3
|
||||
level = min(level,warming_up)
|
||||
if (powerlevel!=level)
|
||||
powerlevel = level
|
||||
icon_state = "Field_Gen +a[powerlevel]"
|
||||
|
||||
|
||||
New()
|
||||
..()
|
||||
fields = list()
|
||||
connected_gens = list()
|
||||
return
|
||||
|
||||
|
||||
process()
|
||||
if(src.Varedit_start == 1)
|
||||
if(src.active == 0)
|
||||
src.active = 1
|
||||
src.state = 2
|
||||
src.power = field_generator_max_power
|
||||
src.anchored = 1
|
||||
src.warming_up = 3
|
||||
turn_on()
|
||||
Varedit_start = 0
|
||||
if(src.active == 2)
|
||||
calc_power()
|
||||
|
||||
return
|
||||
|
||||
|
||||
attack_hand(mob/user as mob)
|
||||
if(state == 2)
|
||||
if(get_dist(src, user) <= 1)//Need to actually touch the thing to turn it on
|
||||
if(src.active >= 1)
|
||||
user << "You are unable to turn off the [src] once it is online."
|
||||
return 1
|
||||
else
|
||||
user.visible_message("[user.name] turns on the [src.name]", \
|
||||
"You turn on the [src].", \
|
||||
"You hear heavy droning")
|
||||
turn_on()
|
||||
src.add_fingerprint(user)
|
||||
else
|
||||
user << "The [src] needs to be firmly secured to the floor first."
|
||||
return
|
||||
|
||||
|
||||
attackby(obj/item/W, mob/user)
|
||||
if(active)
|
||||
user << "The [src] needs to be off."
|
||||
return
|
||||
else if(istype(W, /obj/item/weapon/wrench))
|
||||
switch(state)
|
||||
if(0)
|
||||
state = 1
|
||||
playsound(src.loc, 'Ratchet.ogg', 75, 1)
|
||||
user.visible_message("[user.name] secures [src.name] to the floor.", \
|
||||
"You secure the external reinforcing bolts to the floor.", \
|
||||
"You hear ratchet")
|
||||
src.anchored = 1
|
||||
if(1)
|
||||
state = 0
|
||||
playsound(src.loc, 'Ratchet.ogg', 75, 1)
|
||||
user.visible_message("[user.name] unsecures [src.name] reinforcing bolts from the floor.", \
|
||||
"You undo the external reinforcing bolts.", \
|
||||
"You hear ratchet")
|
||||
src.anchored = 0
|
||||
if(2)
|
||||
user << "\red The [src.name] needs to be unwelded from the floor."
|
||||
return
|
||||
else if(istype(W, /obj/item/weapon/weldingtool))
|
||||
switch(state)
|
||||
if(0)
|
||||
user << "\red The [src.name] needs to be wrenched to the floor."
|
||||
return
|
||||
if(1)
|
||||
if (W:remove_fuel(2,user))
|
||||
playsound(src.loc, 'Welder2.ogg', 50, 1)
|
||||
user.visible_message("[user.name] starts to weld the [src.name] to the floor.", \
|
||||
"You start to weld the [src] to the floor.", \
|
||||
"You hear welding")
|
||||
if (do_after(user,20))
|
||||
state = 2
|
||||
user << "You weld the field generator to the floor."
|
||||
else
|
||||
return
|
||||
if(2)
|
||||
if (W:remove_fuel(2,user))
|
||||
playsound(src.loc, 'Welder2.ogg', 50, 1)
|
||||
user.visible_message("[user.name] starts to cut the [src.name] free from the floor.", \
|
||||
"You start to cut the [src] free from the floor.", \
|
||||
"You hear welding")
|
||||
if (do_after(user,20))
|
||||
state = 1
|
||||
user << "You cut the [src] free from the floor."
|
||||
else
|
||||
return
|
||||
else
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
emp_act()
|
||||
return 0
|
||||
|
||||
|
||||
bullet_act(flag)
|
||||
if (flag == PROJECTILE_BULLET)
|
||||
src.power -= 100
|
||||
else if (flag == PROJECTILE_WEAKBULLET)
|
||||
src.power -= 50
|
||||
else if (flag == PROJECTILE_LASER)
|
||||
src.power += 20
|
||||
else if (flag == PROJECTILE_TASER)
|
||||
src.power += 5
|
||||
else
|
||||
src.power -= 30
|
||||
update_icon()
|
||||
return
|
||||
|
||||
|
||||
Del()
|
||||
src.cleanup()
|
||||
..()
|
||||
|
||||
|
||||
proc
|
||||
turn_off()
|
||||
src.active = 0
|
||||
spawn(1)
|
||||
src.cleanup()
|
||||
update_icon()
|
||||
|
||||
|
||||
turn_on()
|
||||
src.active = 1
|
||||
warming_up = 1
|
||||
powerlevel = 0
|
||||
spawn(1)
|
||||
while (warming_up<3 && active)
|
||||
sleep(50)
|
||||
warming_up++
|
||||
update_icon()
|
||||
if(warming_up >= 3)
|
||||
start_fields()
|
||||
update_icon()
|
||||
|
||||
|
||||
calc_power()
|
||||
if(Varpower)
|
||||
return
|
||||
|
||||
update_icon()
|
||||
if(src.power > field_generator_max_power)
|
||||
src.power = field_generator_max_power
|
||||
|
||||
var/power_draw = 0
|
||||
for (var/obj/machinery/containment_field/F in fields)
|
||||
if (isnull(F))
|
||||
continue
|
||||
power_draw++
|
||||
|
||||
if(draw_power(round(power_draw/2,1)))
|
||||
return 1
|
||||
else
|
||||
for(var/mob/M in viewers(src))
|
||||
M.show_message("\red The [src.name] shuts down!")
|
||||
turn_off()
|
||||
src.power = 0
|
||||
return
|
||||
|
||||
|
||||
draw_power(var/draw = 0,var/obj/machinery/field_generator/G = null, var/obj/machinery/field_generator/last = null)
|
||||
// if(G && G == src)//Loopin, set fail
|
||||
// return 0
|
||||
if(src.power >= draw)//We have enough power
|
||||
src.power -= draw
|
||||
return 1
|
||||
else//Need more power
|
||||
return 0
|
||||
/* draw -= src.power
|
||||
src.power = 0 ill finis this up when not about to pass out
|
||||
for(var/obj/machinery/field_generator/FG in connected_gens)
|
||||
if(isnull(FG))
|
||||
continue
|
||||
if(FG == last)//We just asked you
|
||||
continue
|
||||
if(G)//Another gen is askin for power and we dont have it
|
||||
if(FG.draw_power(draw,G,src))//Can you take the load
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
else//We are askin another for power
|
||||
if(FG.draw_power(draw,src,src))
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
*/
|
||||
|
||||
start_fields()
|
||||
if(!src.state == 2 || !anchored)
|
||||
turn_off()
|
||||
return
|
||||
spawn(1)
|
||||
setup_field(1)
|
||||
spawn(2)
|
||||
setup_field(2)
|
||||
spawn(3)
|
||||
setup_field(4)
|
||||
spawn(4)
|
||||
setup_field(8)
|
||||
src.active = 2
|
||||
|
||||
|
||||
setup_field(var/NSEW)
|
||||
var/turf/T = src.loc
|
||||
var/obj/machinery/field_generator/G
|
||||
var/steps = 0
|
||||
if(!NSEW)//Make sure its ran right
|
||||
return
|
||||
for(var/dist = 0, dist <= 9, dist += 1) // checks out to 8 tiles away for another generator
|
||||
T = get_step(T, NSEW)
|
||||
steps += 1
|
||||
G = locate(/obj/machinery/field_generator) in T
|
||||
if(!isnull(G))
|
||||
steps -= 1
|
||||
if(!G.active)
|
||||
return
|
||||
break
|
||||
if(isnull(G))
|
||||
return
|
||||
T = src.loc
|
||||
for(var/dist = 0, dist < steps, dist += 1) // creates each field tile
|
||||
var/field_dir = get_dir(T,get_step(G.loc, NSEW))
|
||||
T = get_step(T, NSEW)
|
||||
if(!locate(/obj/machinery/containment_field) in T)
|
||||
var/obj/machinery/containment_field/CF = new/obj/machinery/containment_field()
|
||||
fields += CF
|
||||
G.fields += CF
|
||||
CF.loc = T
|
||||
CF.dir = field_dir
|
||||
var/listcheck = 0
|
||||
for(var/obj/machinery/field_generator/FG in connected_gens)
|
||||
if (isnull(FG))
|
||||
continue
|
||||
if(FG == G)
|
||||
listcheck = 1
|
||||
break
|
||||
if(!listcheck)
|
||||
connected_gens.Add(G)
|
||||
listcheck = 0
|
||||
for(var/obj/machinery/field_generator/FG2 in G.connected_gens)
|
||||
if (isnull(FG2))
|
||||
continue
|
||||
if(FG2 == src)
|
||||
listcheck = 1
|
||||
break
|
||||
if(!listcheck)
|
||||
G.connected_gens.Add(src)
|
||||
|
||||
|
||||
cleanup()
|
||||
for (var/obj/machinery/containment_field/F in fields)
|
||||
if (isnull(F))
|
||||
continue
|
||||
del(F)
|
||||
fields = list()
|
||||
for(var/obj/machinery/field_generator/FG in connected_gens)
|
||||
if (isnull(FG))
|
||||
continue
|
||||
FG.connected_gens.Remove(src)
|
||||
connected_gens.Remove(FG)
|
||||
connected_gens = list()
|
||||
42
code/modules/power/singularity/generator.dm
Normal file
42
code/modules/power/singularity/generator.dm
Normal file
@@ -0,0 +1,42 @@
|
||||
|
||||
/////SINGULARITY SPAWNER
|
||||
/obj/machinery/the_singularitygen/
|
||||
name = "Gravitational Singularity Generator"
|
||||
desc = "An Odd Device which produces a Gravitational Singularity when set up."
|
||||
icon = 'singularity.dmi'
|
||||
icon_state = "TheSingGen"
|
||||
anchored = 1
|
||||
density = 1
|
||||
power_usage = 0
|
||||
|
||||
//////////////////////Singularity gen START
|
||||
|
||||
/obj/machinery/the_singularitygen/process()
|
||||
var/turf/T = get_turf(src)
|
||||
if (singularity_is_surrounded(T))
|
||||
new /obj/machinery/singularity/(T, 200)
|
||||
spawn(0)
|
||||
del(src)
|
||||
return
|
||||
|
||||
/obj/machinery/the_singularitygen/attackby(obj/item/W, mob/user)
|
||||
if(istype(W, /obj/item/weapon/wrench))
|
||||
anchored = !anchored
|
||||
playsound(src.loc, 'Ratchet.ogg', 75, 1)
|
||||
if(anchored)
|
||||
user.visible_message("[user.name] secures [src.name] to the floor.", \
|
||||
"You secure the [src.name] to the floor.", \
|
||||
"You hear ratchet")
|
||||
else
|
||||
user.visible_message("[user.name] unsecures [src.name] from the floor.", \
|
||||
"You unsecure the [src.name] from the floor.", \
|
||||
"You hear ratchet")
|
||||
return
|
||||
return ..()
|
||||
|
||||
/proc/singularity_is_surrounded(turf/T)//TODO:Add a timer so we dont need this
|
||||
var/checkpointC = 0
|
||||
for (var/obj/X in orange(4,T)) //TODO: do we need requirement to singularity be actually _surrounded_ by field?
|
||||
if(istype(X, /obj/machinery/containment_field) || istype(X, /obj/machinery/shieldwall))
|
||||
checkpointC ++
|
||||
return checkpointC >= 20
|
||||
269
code/modules/power/singularity/singularity.dm
Normal file
269
code/modules/power/singularity/singularity.dm
Normal file
@@ -0,0 +1,269 @@
|
||||
var/global/list/uneatable = list(
|
||||
/obj/machinery/singularity,
|
||||
/turf/space,/obj/effects,
|
||||
/obj/overlay)
|
||||
|
||||
/obj/machinery/singularity/
|
||||
name = "Gravitational Singularity"
|
||||
desc = "A Gravitational Singularity."
|
||||
icon = '160x160.dmi'
|
||||
icon_state = "Singularity"
|
||||
anchored = 1
|
||||
density = 1
|
||||
layer = 6
|
||||
unacidable = 1 //Don't comment this out.
|
||||
power_usage = 0
|
||||
var
|
||||
active = 0
|
||||
contained = 1 //Are we going to move around?
|
||||
energy = 100 //How strong are we?
|
||||
dissipate = 0 //Do we lose energy over time? TODO:Set this to 1 when/if the feederthing is finished
|
||||
dissipate_delay = 5
|
||||
dissipate_track = 0
|
||||
dissipate_strength = 10 //How much energy do we lose?
|
||||
move_self = 1 //Do we move on our own?
|
||||
grav_pull = 6 //How many tiles out do we pull?
|
||||
event_chance = 15 //Prob for event each tick
|
||||
|
||||
|
||||
New(loc, var/starting_energy = 200, var/temp = 0)
|
||||
src.energy = starting_energy
|
||||
pixel_x = -64
|
||||
pixel_y = -64
|
||||
if(temp)
|
||||
spawn(temp)
|
||||
del(src)
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
Del()
|
||||
//Could have it do something bad when this happens, explode/implode or something
|
||||
..()
|
||||
|
||||
|
||||
attack_hand(mob/user as mob)
|
||||
consume(user)
|
||||
return 1
|
||||
|
||||
|
||||
blob_act(severity)
|
||||
return
|
||||
|
||||
|
||||
ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
if(prob(10))
|
||||
del(src)
|
||||
return
|
||||
if(2.0 to 3.0)
|
||||
return
|
||||
return
|
||||
|
||||
|
||||
Bump(atom/A)
|
||||
consume(A)
|
||||
return
|
||||
|
||||
|
||||
Bumped(atom/A)
|
||||
consume(A)
|
||||
return
|
||||
|
||||
|
||||
process()
|
||||
eat()
|
||||
dissipate()
|
||||
check_energy()
|
||||
move()
|
||||
if(prob(event_chance))//Chance for it to run a special event
|
||||
event()
|
||||
pulse()
|
||||
return
|
||||
|
||||
proc
|
||||
dissipate()
|
||||
if(!dissipate)
|
||||
return
|
||||
if(dissipate_track >= dissipate_delay)
|
||||
src.energy -= dissipate_strength
|
||||
dissipate_track = 0
|
||||
else
|
||||
dissipate_track++
|
||||
|
||||
|
||||
check_energy()
|
||||
if(energy <= 0)
|
||||
del(src)
|
||||
return 0
|
||||
switch(energy)
|
||||
if(1000 to 1999)
|
||||
for(var/obj/machinery/field_generator/F in orange(5,src))
|
||||
F.turn_off()
|
||||
emp_area()
|
||||
toxmob()
|
||||
if(2000 to INFINITY)
|
||||
explosion(src.loc, 4, 8, 15, 0)
|
||||
if(src)
|
||||
del(src)
|
||||
return 0
|
||||
return 1
|
||||
|
||||
|
||||
is_eatable(atom/X)
|
||||
for (var/Type in uneatable)
|
||||
if (istype(X, Type))
|
||||
return 0
|
||||
return 1
|
||||
|
||||
|
||||
eat()
|
||||
for (var/atom/X in orange(grav_pull,src))
|
||||
if(isarea(X))
|
||||
continue
|
||||
if (!is_eatable(X))
|
||||
continue
|
||||
switch(get_dist(src,X))
|
||||
if(0 to 2)
|
||||
consume(X)
|
||||
else if(!isturf(X))
|
||||
if(!X:anchored && !istype(X,/mob/living/carbon/human))//TODO:change the boots to just anchor so we dont have to add this to everything
|
||||
step_towards(X,src)
|
||||
else if(istype(X,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = X
|
||||
if(istype(H.shoes,/obj/item/clothing/shoes/magboots))
|
||||
var/obj/item/clothing/shoes/magboots/M = H.shoes
|
||||
if(M.magpulse)
|
||||
continue
|
||||
step_towards(H,src)
|
||||
return
|
||||
|
||||
|
||||
consume(var/atom/A)
|
||||
var/gain = 0
|
||||
if (!is_eatable(A))
|
||||
return
|
||||
if (istype(A,/mob/living))//Mobs get gibbed
|
||||
gain = 20
|
||||
if(istype(A,/mob/living/carbon/human))
|
||||
if(A:mind)
|
||||
if((A:mind:assigned_role == "Station Engineer") || (A:mind:assigned_role == "Chief Engineer") )
|
||||
gain = 100
|
||||
A:gib()
|
||||
else if(istype(A,/obj/))
|
||||
A:ex_act(1.0)
|
||||
if(A) del(A)
|
||||
gain = 2
|
||||
else if(isturf(A))
|
||||
var/turf/T = A
|
||||
if(T.intact)
|
||||
for(var/obj/O in T.contents)
|
||||
if(O.level != 1)
|
||||
continue
|
||||
if(O.invisibility == 101)
|
||||
src.consume(O)
|
||||
A:ReplaceWithSpace()
|
||||
gain = 2
|
||||
src.energy += gain
|
||||
return
|
||||
|
||||
|
||||
move(var/movement_dir = 0)
|
||||
if(!movement_dir == 1 || !movement_dir == 2 || !movement_dir == 4 || !movement_dir == 8)
|
||||
movement_dir = pick(NORTH, SOUTH, EAST, WEST)
|
||||
var/turf/T = null
|
||||
switch(movement_dir)
|
||||
if(NORTH)
|
||||
T = locate(src.x,src.y+3,src.z)
|
||||
if(SOUTH)
|
||||
T = locate(src.x,src.y-3,src.z)
|
||||
if(EAST)
|
||||
T =locate(src.x+3,src.y,src.z)
|
||||
if(WEST)
|
||||
T = locate(src.x-3,src.y,src.z)
|
||||
if(can_move(T))
|
||||
spawn(0)
|
||||
step(src, movement_dir)
|
||||
|
||||
|
||||
can_move(var/turf/T)
|
||||
if(!T)
|
||||
return 0
|
||||
if(locate(/obj/machinery/containment_field) in T)
|
||||
return 0
|
||||
else if(locate(/obj/machinery/field_generator) in T)
|
||||
var/obj/machinery/field_generator/G = locate(/obj/machinery/field_generator) in T
|
||||
if(G && G.active)
|
||||
return 0
|
||||
return 1
|
||||
|
||||
|
||||
event()
|
||||
var/numb = pick(1,2,3,4,5,6)
|
||||
switch(numb)
|
||||
if(1)//EMP
|
||||
emp_area()
|
||||
if(2,3)//tox damage all carbon mobs in area
|
||||
toxmob()
|
||||
if(4)//Stun mobs who lack optic scanners
|
||||
mezzer()
|
||||
else
|
||||
//do nothing
|
||||
return
|
||||
|
||||
|
||||
toxmob()
|
||||
var/toxrange = 8
|
||||
if (src.energy>100)
|
||||
toxrange+=round((src.energy-100)/100)
|
||||
var/toxloss = 4
|
||||
var/radiation = 5
|
||||
if (src.energy>150)
|
||||
toxloss += round(((src.energy-150)/50)*4,1)
|
||||
radiation += round(((src.energy-150)/50)*5,1)
|
||||
for(var/mob/living/carbon/M in view(toxrange, src.loc))
|
||||
if(istype(M,/mob/living/carbon/human))
|
||||
if(M:wear_suit) //TODO: check for radiation protection
|
||||
toxloss = round(toxloss/2,1)
|
||||
radiation = round(radiation/2,1)
|
||||
M.toxloss += toxloss
|
||||
M.radiation += radiation
|
||||
M.updatehealth()
|
||||
M << "\red You feel odd."
|
||||
return
|
||||
|
||||
|
||||
mezzer()
|
||||
for(var/mob/living/carbon/M in oviewers(8, src))
|
||||
if(istype(M,/mob/living/carbon/human))
|
||||
if(istype(M:glasses,/obj/item/clothing/glasses/meson))
|
||||
M << "\blue You look directly into The [src.name], good thing you had your protective eyewear on!"
|
||||
return
|
||||
M << "\red You look directly into The [src.name] and feel weak."
|
||||
if (M:stunned < 3)
|
||||
M.stunned = 3
|
||||
for(var/mob/O in viewers(M, null))
|
||||
O.show_message(text("\red <B>[] stares blankly at The []!</B>", M, src), 1)
|
||||
return
|
||||
|
||||
|
||||
emp_area()
|
||||
var/turf/myturf = get_turf(src)
|
||||
var/obj/overlay/pulse = new/obj/overlay ( myturf )
|
||||
pulse.icon = 'effects.dmi'
|
||||
pulse.icon_state = "emppulse"
|
||||
pulse.name = "emp pulse"
|
||||
pulse.anchored = 1
|
||||
spawn(20)
|
||||
del(pulse)
|
||||
for (var/atom/X in orange(8,src))
|
||||
X.emp_act()
|
||||
return
|
||||
|
||||
|
||||
pulse()
|
||||
for(var/obj/machinery/power/rad_collector/R in orange(15,src))
|
||||
if(istype(R,/obj/machinery/power/rad_collector))
|
||||
R.receive_pulse(energy)
|
||||
return
|
||||
@@ -1,6 +1,37 @@
|
||||
// the SMES
|
||||
// stores power
|
||||
|
||||
#define SMESMAXCHARGELEVEL 200000
|
||||
#define SMESMAXOUTPUT 200000
|
||||
|
||||
/obj/machinery/power/smes/magical
|
||||
name = "magical power storage unit"
|
||||
desc = "A high-capacity superconducting magnetic energy storage (SMES) unit. Magically produces power."
|
||||
process()
|
||||
capacity = INFINITY
|
||||
charge = INFINITY
|
||||
..()
|
||||
|
||||
/obj/machinery/power/smes
|
||||
name = "power storage unit"
|
||||
desc = "A high-capacity superconducting magnetic energy storage (SMES) unit."
|
||||
icon_state = "smes"
|
||||
density = 1
|
||||
anchored = 1
|
||||
var/output = 50000
|
||||
var/lastout = 0
|
||||
var/loaddemand = 0
|
||||
var/capacity = 5e6
|
||||
var/charge = 1e6
|
||||
var/charging = 0
|
||||
var/chargemode = 0
|
||||
var/chargecount = 0
|
||||
var/chargelevel = 50000
|
||||
var/online = 1
|
||||
var/n_tag = null
|
||||
var/obj/machinery/power/terminal/terminal = null
|
||||
|
||||
|
||||
/obj/machinery/power/smes/New()
|
||||
..()
|
||||
|
||||
|
||||
@@ -43,6 +43,8 @@
|
||||
return
|
||||
|
||||
/obj/machinery/power/solar/proc/update_solar_exposure()
|
||||
if(!sun)
|
||||
return
|
||||
if(obscured)
|
||||
sunfrac = 0
|
||||
return
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 11 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 13 KiB |
File diff suppressed because it is too large
Load Diff
@@ -102,6 +102,7 @@
|
||||
#define FILE_DIR "code/modules/mob/new_player"
|
||||
#define FILE_DIR "code/modules/power"
|
||||
#define FILE_DIR "code/modules/power/antimatter"
|
||||
#define FILE_DIR "code/modules/power/singularity"
|
||||
#define FILE_DIR "code/unused"
|
||||
#define FILE_DIR "code/WorkInProgress"
|
||||
#define FILE_DIR "code/WorkInProgress/computer2"
|
||||
@@ -197,7 +198,6 @@
|
||||
#include "code\datums\diseases\plasmatoid.dm"
|
||||
#include "code\datums\diseases\rhumba_beat.dm"
|
||||
#include "code\datums\diseases\robotic_transformation.dm"
|
||||
#include "code\datums\diseases\t_virus.dm"
|
||||
#include "code\datums\diseases\wizarditis.dm"
|
||||
#include "code\datums\diseases\xeno_transformation.dm"
|
||||
#include "code\datums\spells\blind.dm"
|
||||
@@ -316,6 +316,7 @@
|
||||
#include "code\game\gamemodes\cult\cult.dm"
|
||||
#include "code\game\gamemodes\deathmatch\deathmatch.dm"
|
||||
#include "code\game\gamemodes\events\clang.dm"
|
||||
#include "code\game\gamemodes\events\dust.dm"
|
||||
#include "code\game\gamemodes\extended\extended.dm"
|
||||
#include "code\game\gamemodes\malfunction\Malf_Modules.dm"
|
||||
#include "code\game\gamemodes\malfunction\malfunction.dm"
|
||||
@@ -596,6 +597,7 @@
|
||||
#include "code\modules\admin\verbs\debug.dm"
|
||||
#include "code\modules\admin\verbs\diagnostics.dm"
|
||||
#include "code\modules\admin\verbs\grillify.dm"
|
||||
#include "code\modules\admin\verbs\massmodvar.dm"
|
||||
#include "code\modules\admin\verbs\modifyvariables.dm"
|
||||
#include "code\modules\admin\verbs\onlyone.dm"
|
||||
#include "code\modules\admin\verbs\playsound.dm"
|
||||
@@ -721,6 +723,12 @@
|
||||
#include "code\modules\power\antimatter\computer.dm"
|
||||
#include "code\modules\power\antimatter\engine.dm"
|
||||
#include "code\modules\power\antimatter\fuel.dm"
|
||||
#include "code\modules\power\singularity\collector.dm"
|
||||
#include "code\modules\power\singularity\containment_field.dm"
|
||||
#include "code\modules\power\singularity\emitter.dm"
|
||||
#include "code\modules\power\singularity\field_generator.dm"
|
||||
#include "code\modules\power\singularity\generator.dm"
|
||||
#include "code\modules\power\singularity\singularity.dm"
|
||||
#include "code\WorkInProgress\BrokenInhands.dm"
|
||||
#include "code\WorkInProgress\buildmode.dm"
|
||||
#include "code\WorkInProgress\Cameras.dm"
|
||||
@@ -735,21 +743,6 @@
|
||||
#include "code\WorkInProgress\KeelinsStuff.dm"
|
||||
#include "code\WorkInProgress\mining.dm"
|
||||
#include "code\WorkInProgress\NewBan.dm"
|
||||
#include "code\WorkInProgress\computer2\airlock_control.dm"
|
||||
#include "code\WorkInProgress\computer2\arcade.dm"
|
||||
#include "code\WorkInProgress\computer2\base_program.dm"
|
||||
#include "code\WorkInProgress\computer2\buildandrepair.dm"
|
||||
#include "code\WorkInProgress\computer2\computerII.dm"
|
||||
#include "code\WorkInProgress\computer2\filebrowse.dm"
|
||||
#include "code\WorkInProgress\computer2\med_rec.dm"
|
||||
#include "code\WorkInProgress\computer2\messenger.dm"
|
||||
#include "code\WorkInProgress\computer2\peripherals.dm"
|
||||
#include "code\WorkInProgress\pda2\base_os.dm"
|
||||
#include "code\WorkInProgress\pda2\base_program.dm"
|
||||
#include "code\WorkInProgress\pda2\pda2.dm"
|
||||
#include "code\WorkInProgress\pda2\record_progs.dm"
|
||||
#include "code\WorkInProgress\pda2\scanners.dm"
|
||||
#include "code\WorkInProgress\pda2\smallprogs.dm"
|
||||
#include "code\WorkInProgress\recycling\conveyor.dm"
|
||||
#include "code\WorkInProgress\recycling\disposal-construction.dm"
|
||||
#include "code\WorkInProgress\recycling\disposal.dm"
|
||||
|
||||
Reference in New Issue
Block a user