stop the pills (#18703)

* RedPills Processing

Now you have to use START_PROCESSING(SSname, thing) (and STOP_PROCESSING)

* Fixes a minor bug.
This commit is contained in:
Kyle Spier-Swenson
2016-06-20 03:07:44 -07:00
committed by AnturK
parent c480ad71ee
commit 0d6bbbb412
90 changed files with 424 additions and 416 deletions

View File

@@ -5,6 +5,9 @@
#define MC_AVERAGE_SLOW(average, current) (0.9 * (average) + 0.1 * (current))
#define NEW_SS_GLOBAL(varname) if(varname != src){if(istype(varname)){Recover();qdel(varname);}varname = src;}
#define START_PROCESSING(Processor, Datum) if (!Datum.isprocessing) Datum.isprocessing = 1;Processor.processing += Datum
#define STOP_PROCESSING(Processor, Datum) if (Datum.isprocessing) Datum.isprocessing = 0;Processor.processing -= Datum
//SubSystem flags (Please design any new flags so that the default is off, to make adding flags to subsystems easier)
//subsystem should fire during pre-game lobby.

View File

@@ -51,7 +51,9 @@ var/datum/subsystem/machines/SSmachine
if(thing:use_power)
thing:auto_use_power() //add back the power state
else
processing.Remove(thing)
processing -= thing
if (thing)
thing.isprocessing = 0
if (MC_TICK_CHECK)
return

View File

@@ -1,8 +1,9 @@
var/datum/subsystem/objects/SSobj
/datum/var/isprocessing = 0
/datum/proc/process()
set waitfor = 0
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
return 0
/datum/subsystem/objects
@@ -50,7 +51,7 @@ var/datum/subsystem/objects/SSobj
if(thing)
thing.process(wait)
else
SSobj.processing.Remove(thing)
SSobj.processing -= thing
if (MC_TICK_CHECK)
return

View File

@@ -17,7 +17,7 @@
/obj/effect/blob/core/New(loc, client/new_overmind = null, new_rate = 2, placed = 0)
blob_cores += src
SSobj.processing |= src
START_PROCESSING(SSobj, src)
poi_list |= src
update_icon() //so it atleast appears
if(!placed && !overmind)
@@ -45,7 +45,7 @@
if(overmind)
overmind.blob_core = null
overmind = null
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
poi_list -= src
return ..()

View File

@@ -12,7 +12,7 @@
/obj/effect/blob/node/New(loc, var/h = 100)
blob_nodes += src
SSobj.processing |= src
START_PROCESSING(SSobj, src)
..(loc, h)
/obj/effect/blob/node/scannerreport()
@@ -33,7 +33,7 @@
/obj/effect/blob/node/Destroy()
blob_nodes -= src
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
return ..()
/obj/effect/blob/node/Life()

View File

@@ -16,10 +16,10 @@
/obj/effect/proc_holder/changeling/fleshmend/New()
..()
SSobj.processing.Add(src)
START_PROCESSING(SSobj, src)
/obj/effect/proc_holder/changeling/fleshmend/Destroy()
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
..()
/obj/effect/proc_holder/changeling/fleshmend/process()

View File

@@ -284,7 +284,7 @@
..()
if(ismob(loc))
loc.visible_message("<span class='warning'>[loc.name]\'s flesh rapidly inflates, forming a bloated mass around their body!</span>", "<span class='warning'>We inflate our flesh, creating a spaceproof suit!</span>", "<span class='italics'>You hear organic matter ripping and tearing!</span>")
SSobj.processing += src
START_PROCESSING(SSobj, src)
/obj/item/clothing/suit/space/changeling/process()
if(ishuman(loc))

View File

@@ -55,16 +55,16 @@
/obj/item/clockwork/slab/New()
..()
SSobj.processing += src
START_PROCESSING(SSobj, src)
production_time = world.time + SLAB_PRODUCTION_TIME
/obj/item/clockwork/slab/Destroy()
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
return ..()
/obj/item/clockwork/slab/process()
if(!produces_components)
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
return
if(production_time > world.time)
return
@@ -396,10 +396,10 @@
/obj/item/clothing/glasses/wraith_spectacles/New()
..()
SSobj.processing += src
START_PROCESSING(SSobj, src)
/obj/item/clothing/glasses/wraith_spectacles/Destroy()
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
return ..()
/obj/item/clothing/glasses/wraith_spectacles/process()
@@ -770,11 +770,11 @@
/obj/item/clockwork/tinkerers_daemon/New()
..()
SSobj.processing += src
START_PROCESSING(SSobj, src)
clockwork_daemons++
/obj/item/clockwork/tinkerers_daemon/Destroy()
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
clockwork_daemons--
return ..()

View File

@@ -34,13 +34,15 @@
if(active)
icon_state = active_icon
if(fast_process)
SSfastprocess.processing |= src
START_PROCESSING(SSfastprocess, src)
else
SSobj.processing |= src
START_PROCESSING(SSobj, src)
else
icon_state = inactive_icon
SSfastprocess.processing -= src
SSobj.processing -= src
if(fast_process)
STOP_PROCESSING(SSfastprocess, src)
else
STOP_PROCESSING(SSobj, src)
/obj/structure/clockwork/powered/proc/total_accessable_power() //how much power we have and can use

View File

@@ -37,7 +37,7 @@
countdown = new(src)
countdown.start()
SSshuttle.emergencyNoEscape = TRUE
SSobj.processing += src
START_PROCESSING(SSobj, src)
var/area/gate_area = get_area(src)
for(var/M in mob_list)
if(is_servant_of_ratvar(M) || isobserver(M))
@@ -50,7 +50,7 @@
SSshuttle.emergency.timer = world.time
if(!purpose_fulfilled)
priority_announce("Hostile enviroment resolved. You have 3 minutes to board the Emergency Shuttle.", null, 'sound/AI/shuttledock.ogg', "Priority")
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
if(!purpose_fulfilled)
var/area/gate_area = get_area(src)
for(var/M in mob_list)
@@ -190,7 +190,7 @@
ratvar_awakens = TRUE
for(var/obj/item/clockwork/ratvarian_spear/R in all_clockwork_objects)
R.update_force()
SSobj.processing += src
START_PROCESSING(SSobj, src)
world << "<span class='heavy_brass'><font size=6>\"BAPR NTNVA ZL YVTUG FUNYY FUVAR NPEBFF GUVF CNGURGVP ERNYZ!!\"</font></span>"
world << 'sound/effects/ratvar_reveal.ogg'
var/image/alert_overlay = image('icons/effects/clockwork_effects.dmi', "ratvar_alert")
@@ -204,7 +204,7 @@
ratvar_awakens = FALSE
for(var/obj/item/clockwork/ratvarian_spear/R in all_clockwork_objects)
R.update_force()
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
world << "<span class='heavy_brass'><font size=6>\"NO! I will not... be...</font> <font size=5>banished...</font> <font size=4>again...\"</font></span>"
return ..()

View File

@@ -147,12 +147,12 @@
/obj/structure/clockwork/cache/New()
..()
SSobj.processing += src
START_PROCESSING(SSobj, src)
clockwork_caches++
/obj/structure/clockwork/cache/Destroy()
clockwork_caches--
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
return ..()
/obj/structure/clockwork/cache/destroyed()
@@ -324,10 +324,10 @@
/obj/structure/clockwork/ocular_warden/New()
..()
SSfastprocess.processing += src
START_PROCESSING(SSfastprocess, src)
/obj/structure/clockwork/ocular_warden/Destroy()
SSfastprocess.processing -= src
STOP_PROCESSING(SSfastprocess, src)
return ..()
/obj/structure/clockwork/ocular_warden/examine(mob/user)

View File

@@ -110,11 +110,11 @@ var/list/blacklisted_pylon_turfs = typecacheof(list(
var/last_corrupt = 0
/obj/structure/cult/pylon/New()
SSfastprocess.processing |= src
START_PROCESSING(SSfastprocess, src)
..()
/obj/structure/cult/pylon/Destroy()
SSfastprocess.processing.Remove(src)
STOP_PROCESSING(SSfastprocess, src)
return ..()
/obj/structure/cult/pylon/process()

View File

@@ -55,7 +55,7 @@
if(G != gang)
G.message_gangtools("WARNING: [gang.name] Gang takeover imminent. Their dominator at [domloc.map_name] must be destroyed!",1,1)
else
SSmachine.processing -= src
STOP_PROCESSING(SSmachine, src)
/obj/machinery/dominator/take_damage(damage, damage_type = BRUTE, sound_effect = 1)
switch(damage_type)
@@ -115,7 +115,7 @@
cut_overlays()
operating = 0
stat |= BROKEN
SSmachine.processing -= src
STOP_PROCESSING(SSmachine, src)
/obj/machinery/dominator/Destroy()
if(!(stat & BROKEN))
@@ -125,7 +125,7 @@
qdel(spark_system)
qdel(countdown)
countdown = null
SSmachine.processing -= src
STOP_PROCESSING(SSmachine, src)
return ..()
/obj/machinery/dominator/emp_act(severity)
@@ -199,7 +199,7 @@
countdown.start()
SetLuminosity(3)
SSmachine.processing += src
START_PROCESSING(SSmachine, src)
gang.message_gangtools("Hostile takeover in progress: Estimated [time] minutes until victory.[gang.dom_attempts ? "" : " This is your final attempt."]")
for(var/datum/gang/G in ticker.mode.gangs)

View File

@@ -289,7 +289,7 @@ var/list/gang_colors_pool = list("red","orange","yellow","green","blue","purple"
/datum/gang_points/New()
next_point_time = world.time + next_point_interval
SSobj.processing += src
START_PROCESSING(SSobj, src)
/datum/gang_points/process(seconds)
var/list/winners = list() //stores the winners if there are any

View File

@@ -275,7 +275,7 @@
/obj/structure/divine/nexus/New()
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/obj/structure/divine/nexus/process()
@@ -287,7 +287,7 @@
/obj/structure/divine/nexus/Destroy()
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
return ..()

View File

@@ -105,12 +105,12 @@
M.SetStunned(0)
M.SetWeakened(0)
combat_cooldown = 0
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/obj/item/clothing/suit/armor/abductor/vest/process()
combat_cooldown++
if(combat_cooldown==initial(combat_cooldown))
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
/obj/item/device/abductor/proc/AbductorCheck(user)
if(isabductor(user))
@@ -262,7 +262,7 @@
if(cooldown == initial(cooldown))
home.Retrieve(imp_in,1)
cooldown = 0
SSobj.processing |= src
START_PROCESSING(SSobj, src)
else
imp_in << "<span class='warning'>You must wait [30 - cooldown] seconds to use [src] again!</span>"
return
@@ -271,7 +271,7 @@
if(cooldown < initial(cooldown))
cooldown++
if(cooldown == initial(cooldown))
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
/obj/item/weapon/implant/abductor/implant(var/mob/source, var/mob/user)
if(..())

View File

@@ -230,11 +230,11 @@
/obj/effect/cocoon/abductor/proc/Start()
hatch_time = world.time + 600
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/obj/effect/cocoon/abductor/process()
if(world.time > hatch_time)
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
for(var/mob/M in contents)
src.visible_message("<span class='warning'>[src] hatches!</span>")
M.loc = src.loc

View File

@@ -40,7 +40,7 @@ var/bomb_set
countdown = new(src)
nuke_list += src
core = new /obj/item/nuke_core(src)
SSobj.processing -= core
STOP_PROCESSING(SSobj, core)
update_icon()
poi_list |= src
previous_level = get_security_level()
@@ -118,7 +118,7 @@ var/bomb_set
user << "<span class='notice'>You pry off [src]'s inner plate. You can see the core's green glow!</span>"
deconstruction_state = NUKESTATE_CORE_EXPOSED
update_icon()
SSobj.processing += core
START_PROCESSING(SSobj, core)
return
if(NUKESTATE_CORE_EXPOSED)
if(istype(I, /obj/item/nuke_core_container))
@@ -141,7 +141,7 @@ var/bomb_set
if(M.use(20))
user << "<span class='notice'>You repair [src]'s inner metal plate. The radiation is contained.</span>"
deconstruction_state = NUKESTATE_PANEL_REMOVED
SSobj.processing -= core
STOP_PROCESSING(SSobj, core)
update_icon()
else
user << "<span class='warning'>You need more metal to do that!</span>"
@@ -434,7 +434,7 @@ This is here to make the tiles around the station mininuke change when it's arme
/obj/item/weapon/disk/nuclear/New()
..()
poi_list |= src
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/obj/item/weapon/disk/nuclear/process()
var/turf/disk_loc = get_turf(src)

View File

@@ -45,7 +45,7 @@
src.spawn_amt_left = spawn_amt
src.desc = desc
src.spawn_fast = spawn_fast
SSobj.processing |= src
START_PROCESSING(SSobj, src)
return
/obj/effect/rend/process()

View File

@@ -73,7 +73,7 @@
if(beaker)
usr.visible_message("<span class='warning'>[usr] attaches \the [src] to \the [target].</span>", "<span class='notice'>You attach \the [src] to \the [target].</span>")
attached = target
SSmachine.processing.Add(src)
START_PROCESSING(SSmachine, src)
update_icon()
else
usr << "<span class='warning'>There's nothing attached to the IV drip!</span>"

View File

@@ -124,17 +124,17 @@ Class Procs:
..()
machines += src
if(!speed_process)
SSmachine.processing += src
START_PROCESSING(SSmachine, src)
else
SSfastprocess.processing += src
START_PROCESSING(SSfastprocess, src)
power_change()
/obj/machinery/Destroy()
machines.Remove(src)
if(!speed_process)
SSmachine.processing -= src
STOP_PROCESSING(SSmachine, src)
else
SSfastprocess.processing -= src
STOP_PROCESSING(SSfastprocess, src)
dropContents()
return ..()

View File

@@ -4,7 +4,7 @@
/obj/item/mecha_parts/mecha_equipment/medical/New()
..()
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/obj/item/mecha_parts/mecha_equipment/medical/can_attach(obj/mecha/medical/M)
@@ -14,19 +14,19 @@
/obj/item/mecha_parts/mecha_equipment/medical/attach(obj/mecha/M)
..()
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/obj/item/mecha_parts/mecha_equipment/medical/Destroy()
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
return ..()
/obj/item/mecha_parts/mecha_equipment/medical/process()
if(!chassis)
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
return 1
/obj/item/mecha_parts/mecha_equipment/medical/mechmedbeam/detach()
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
return ..()
/obj/item/mecha_parts/mecha_equipment/medical/sleeper
@@ -67,7 +67,7 @@
return
target.forceMove(src)
patient = target
SSobj.processing |= src
START_PROCESSING(SSobj, src)
update_equip_info()
occupant_message("<span class='notice'>[target] successfully loaded into [src]. Life support functions engaged.</span>")
chassis.visible_message("<span class='warning'>[chassis] loads [target] into [src].</span>")
@@ -91,7 +91,7 @@
patient.forceMove(get_turf(src))
occupant_message("[patient] ejected. Life support functions disabled.")
log_message("[patient] ejected. Life support functions disabled.")
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
patient = null
update_equip_info()
@@ -99,7 +99,7 @@
if(patient)
occupant_message("<span class='warning'>Unable to detach [src] - equipment occupied!</span>")
return
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
return ..()
/obj/item/mecha_parts/mecha_equipment/medical/sleeper/get_equip_info()
@@ -222,7 +222,7 @@
set_ready_state(1)
log_message("Deactivated.")
occupant_message("[src] deactivated - no power.")
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
return
var/mob/living/carbon/M = patient
if(!M)
@@ -270,11 +270,11 @@
processed_reagents = new
/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/detach()
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
return ..()
/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/Destroy()
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
return ..()
/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/critfail()
@@ -381,7 +381,7 @@
m++
if(processed_reagents.len)
message += " added to production"
SSobj.processing |= src
START_PROCESSING(SSobj, src)
occupant_message(message)
occupant_message("Reagent processing started.")
log_message("Reagent processing started.")
@@ -520,7 +520,7 @@
if(!processed_reagents.len || reagents.total_volume >= reagents.maximum_volume || !chassis.has_charge(energy_drain))
occupant_message("<span class=\"alert\">Reagent processing stopped.</a>")
log_message("Reagent processing stopped.")
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
return
var/amount = synth_speed / processed_reagents.len
for(var/reagent in processed_reagents)
@@ -559,6 +559,6 @@
/obj/item/mecha_parts/mecha_equipment/medical/mechmedbeam/detach()
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
medigun.LoseTarget()
return ..()

View File

@@ -114,7 +114,7 @@
var/scanning = 0
/obj/item/mecha_parts/mecha_equipment/mining_scanner/New()
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/obj/item/mecha_parts/mecha_equipment/mining_scanner/attach(obj/mecha/M)
..()
@@ -130,7 +130,7 @@
/obj/item/mecha_parts/mecha_equipment/mining_scanner/process()
if(!loc)
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
qdel(src)
if(scanning)
return

View File

@@ -195,7 +195,7 @@
selectable = 0
/obj/item/mecha_parts/mecha_equipment/repair_droid/Destroy()
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
if(chassis)
chassis.overlays -= droid_overlay
return ..()
@@ -207,7 +207,7 @@
/obj/item/mecha_parts/mecha_equipment/repair_droid/detach()
chassis.overlays -= droid_overlay
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
..()
/obj/item/mecha_parts/mecha_equipment/repair_droid/get_equip_info()
@@ -220,12 +220,12 @@
if(href_list["toggle_repairs"])
chassis.overlays -= droid_overlay
if(equip_ready)
SSobj.processing |= src
START_PROCESSING(SSobj, src)
droid_overlay = new(src.icon, icon_state = "repair_droid_a")
log_message("Activated.")
set_ready_state(0)
else
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
droid_overlay = new(src.icon, icon_state = "repair_droid")
log_message("Deactivated.")
set_ready_state(1)
@@ -235,7 +235,7 @@
/obj/item/mecha_parts/mecha_equipment/repair_droid/process()
if(!chassis)
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
set_ready_state(1)
return
var/h_boost = health_boost
@@ -253,10 +253,10 @@
repaired = 1
if(repaired)
if(!chassis.use_power(energy_drain))
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
set_ready_state(1)
else //no repair needed, we turn off
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
set_ready_state(1)
chassis.overlays -= droid_overlay
droid_overlay = new(src.icon, icon_state = "repair_droid")
@@ -279,11 +279,11 @@
selectable = 0
/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/Destroy()
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
return ..()
/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/detach()
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
..()
return
@@ -309,11 +309,11 @@
..()
if(href_list["toggle_relay"])
if(equip_ready) //inactive
SSobj.processing |= src
START_PROCESSING(SSobj, src)
set_ready_state(0)
log_message("Activated.")
else
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
set_ready_state(1)
log_message("Deactivated.")
@@ -324,12 +324,12 @@
/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/process()
if(!chassis || chassis.internal_damage & MECHA_INT_SHORT_CIRCUIT)
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
set_ready_state(1)
return
var/cur_charge = chassis.get_charge()
if(isnull(cur_charge) || !chassis.cell)
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
set_ready_state(1)
occupant_message("No powercell detected.")
return
@@ -370,7 +370,7 @@
generator_init()
/obj/item/mecha_parts/mecha_equipment/generator/Destroy()
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
return ..()
/obj/item/mecha_parts/mecha_equipment/generator/proc/generator_init()
@@ -378,7 +378,7 @@
fuel.amount = 0
/obj/item/mecha_parts/mecha_equipment/generator/detach()
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
..()
/obj/item/mecha_parts/mecha_equipment/generator/Topic(href, href_list)
@@ -386,11 +386,11 @@
if(href_list["toggle"])
if(equip_ready) //inactive
set_ready_state(0)
SSobj.processing |= src
START_PROCESSING(SSobj, src)
log_message("Activated.")
else
set_ready_state(1)
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
log_message("Deactivated.")
/obj/item/mecha_parts/mecha_equipment/generator/get_equip_info()
@@ -444,11 +444,11 @@
/obj/item/mecha_parts/mecha_equipment/generator/process()
if(!chassis)
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
set_ready_state(1)
return
if(fuel.amount<=0)
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
log_message("Deactivated - no fuel.")
set_ready_state(1)
return
@@ -457,7 +457,7 @@
set_ready_state(1)
occupant_message("No powercell detected.")
log_message("Deactivated.")
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
return
var/use_fuel = fuel_per_cycle_idle
if(cur_charge < chassis.cell.maxcharge)

View File

@@ -127,7 +127,7 @@
smoke_system.set_up(3, src)
smoke_system.attach(src)
add_cell()
SSobj.processing |= src
START_PROCESSING(SSobj, src)
poi_list |= src
log_message("[src.name] created.")
mechas_list += src //global mech list
@@ -176,7 +176,7 @@
qdel(cell)
if(internal_tank)
qdel(internal_tank)
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
poi_list.Remove(src)
equipment.Cut()
cell = null

View File

@@ -29,16 +29,16 @@
/obj/effect/particle_effect/foam/New(loc)
..(loc)
create_reagents(1000) //limited by the size of the reagent holder anyway.
SSfastprocess.processing |= src
START_PROCESSING(SSfastprocess, src)
playsound(src, 'sound/effects/bubbles2.ogg', 80, 1, -3)
/obj/effect/particle_effect/foam/Destroy()
SSfastprocess.processing.Remove(src)
STOP_PROCESSING(SSfastprocess, src)
return ..()
/obj/effect/particle_effect/foam/proc/kill_foam()
SSfastprocess.processing.Remove(src)
STOP_PROCESSING(SSfastprocess, src)
if(metal)
var/obj/structure/foamedmetal/M = new(src.loc)
M.metal = metal

View File

@@ -30,15 +30,15 @@
/obj/effect/particle_effect/smoke/New()
..()
create_reagents(500)
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/obj/effect/particle_effect/smoke/Destroy()
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
return ..()
/obj/effect/particle_effect/smoke/proc/kill_smoke()
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
spawn(0)
fade_out()
spawn(10)

View File

@@ -27,10 +27,10 @@
/obj/effect/forcefield/mime/New()
..()
last_process = world.time
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/obj/effect/forcefield/mime/process()
timeleft -= (world.time - last_process)
if(timeleft <= 0)
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
qdel(src)

View File

@@ -78,7 +78,7 @@
/obj/effect/spider/eggcluster/New()
pixel_x = rand(3,-3)
pixel_y = rand(3,-3)
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/obj/effect/spider/eggcluster/process()
amount_grown += rand(0,2)
@@ -112,7 +112,7 @@
/obj/effect/spider/spiderling/New()
pixel_x = rand(6,-6)
pixel_y = rand(6,-6)
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/obj/effect/spider/spiderling/Bump(atom/user)
if(istype(user, /obj/structure/table))

View File

@@ -18,13 +18,13 @@
/obj/item/organ/body_egg/Insert(var/mob/living/carbon/M, special = 0)
..()
owner.status_flags |= XENO_HOST
SSobj.processing |= src
START_PROCESSING(SSobj, src)
owner.med_hud_set_status()
spawn(0)
AddInfectionImages(owner)
/obj/item/organ/body_egg/Remove(var/mob/living/carbon/M, special = 0)
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
if(owner)
owner.status_flags &= ~(XENO_HOST)
owner.med_hud_set_status()

View File

@@ -65,7 +65,7 @@
usr.visible_message(
"<span class='danger'>[usr] lights the [name].</span>")
SetLuminosity(CANDLE_LUMINOSITY)
SSobj.processing |= src
START_PROCESSING(SSobj, src)
update_icon()

View File

@@ -34,7 +34,7 @@
/obj/item/device/camera_bug/New()
..()
SSobj.processing += src
START_PROCESSING(SSobj, src)
/obj/item/device/camera_bug/Destroy()
get_cameras()

View File

@@ -207,7 +207,7 @@ obj/item/device/flashlight/lamp/bananalamp
turn_off()
if(!fuel)
icon_state = "[initial(icon_state)]-empty"
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
/obj/item/device/flashlight/flare/proc/turn_off()
on = 0
@@ -241,7 +241,7 @@ obj/item/device/flashlight/lamp/bananalamp
user.visible_message("<span class='notice'>[user] lights \the [src].</span>", "<span class='notice'>You light \the [src]!</span>")
force = on_damage
damtype = "fire"
SSobj.processing += src
START_PROCESSING(SSobj, src)
/obj/item/device/flashlight/flare/is_hot()
return on * heat
@@ -285,10 +285,10 @@ obj/item/device/flashlight/lamp/bananalamp
/obj/item/device/flashlight/emp/New()
..()
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/obj/item/device/flashlight/emp/Destroy()
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
return ..()
/obj/item/device/flashlight/emp/process()

View File

@@ -18,10 +18,10 @@
/obj/item/device/geiger_counter/New()
..()
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/obj/item/device/geiger_counter/Destroy()
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
..()
/obj/item/device/geiger_counter/process()

View File

@@ -154,7 +154,7 @@
if(energy <= max_energy)
if(!recharging)
recharging = 1
SSobj.processing |= src
START_PROCESSING(SSobj, src)
if(energy <= 0)
user << "<span class='warning'>[src]'s battery is overused, it needs time to recharge!</span>"
recharge_locked = 1

View File

@@ -37,10 +37,10 @@
/obj/item/device/multitool/ai_detect/New()
..()
SSobj.processing += src
START_PROCESSING(SSobj, src)
/obj/item/device/multitool/ai_detect/Destroy()
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
return ..()
/obj/item/device/multitool/ai_detect/process()

View File

@@ -34,20 +34,20 @@
if(DISCONNECTED)
attached = null
if(mode == OPERATING)
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
anchored = 0
if(CLAMPED_OFF)
if(!attached)
return
if(mode == OPERATING)
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
anchored = 1
if(OPERATING)
if(!attached)
return
SSobj.processing |= src
START_PROCESSING(SSobj, src)
anchored = 1
mode = value
@@ -140,6 +140,6 @@
playsound(src, 'sound/effects/screech.ogg', 100, 1, 1)
if(power_drained >= max_power)
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
explosion(src.loc, 4,8,16,32)
qdel(src)

View File

@@ -13,10 +13,10 @@
/obj/item/device/radio/intercom/New()
..()
SSobj.processing += src
START_PROCESSING(SSobj, src)
/obj/item/device/radio/intercom/Destroy()
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
return ..()
/obj/item/device/radio/intercom/attack_ai(mob/user)

View File

@@ -25,7 +25,7 @@ MASS SPECTROMETER
icon_state = copytext(icon_state, 1, length(icon_state))+"[on]"
if(on)
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/obj/item/device/t_scanner/proc/flick_sonar(obj/pipe)
var/image/I = image('icons/effects/effects.dmi', pipe, "blip", pipe.layer+1)
@@ -38,7 +38,7 @@ MASS SPECTROMETER
/obj/item/device/t_scanner/process()
if(!on)
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
return null
scan()

View File

@@ -194,13 +194,13 @@ effective or pretty fucking useless.
return
user << "<span class='notice'>You activate [src].</span>"
src.user = user
SSobj.processing |= src
START_PROCESSING(SSobj, src)
old_alpha = user.alpha
on = 1
/obj/item/device/shadowcloak/proc/Deactivate()
user << "<span class='notice'>You deactivate [src].</span>"
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
if(user)
user.alpha = old_alpha
on = 0

View File

@@ -12,7 +12,7 @@
/obj/item/nuke_core/New()
..()
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/obj/item/nuke_core/attackby(obj/item/nuke_core_container/container, mob/user)
if(istype(container))
@@ -47,7 +47,7 @@
/obj/item/nuke_core_container/proc/seal()
if(istype(core))
SSobj.processing -= core
STOP_PROCESSING(SSobj, core)
icon_state = "core_container_sealed"
playsound(loc, 'sound/items/Deconstruct.ogg', 60, 1)
if(ismob(loc))

View File

@@ -280,10 +280,10 @@
on = !on
if(on)
cyborg << "<span class='notice'>You activate the self-repair module.</span>"
SSobj.processing |= src
START_PROCESSING(SSobj, src)
else
cyborg << "<span class='notice'>You deactivate the self-repair module.</span>"
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
update_icon()
/obj/item/borg/upgrade/selfrepair/update_icon()
@@ -296,7 +296,7 @@
icon_state = "cyborg_upgrade5"
/obj/item/borg/upgrade/selfrepair/proc/deactivate()
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
on = FALSE
update_icon()

View File

@@ -178,7 +178,7 @@
update_icon()
desc = initial(desc) + "<br><span class='info'>It appears to contain [target.name].</span>"
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/obj/effect/chrono_field/Destroy()
if(gun && gun.field_check(src))

View File

@@ -50,7 +50,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
name = "lit match"
desc = "A match. This one is lit."
attack_verb = list("burnt","singed")
SSobj.processing |= src
START_PROCESSING(SSobj, src)
update_icon()
return
@@ -64,7 +64,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
name = "burnt match"
desc = "A match. This one has seen better days."
attack_verb = null
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
/obj/item/weapon/match/dropped(mob/user)
matchburnout()
@@ -130,7 +130,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
/obj/item/clothing/mask/cigarette/Destroy()
if(reagents)
qdel(reagents)
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
. = ..()
/obj/item/clothing/mask/cigarette/attackby(obj/item/weapon/W, mob/user, params)
@@ -214,7 +214,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
if(flavor_text)
var/turf/T = get_turf(src)
T.visible_message(flavor_text)
SSobj.processing |= src
START_PROCESSING(SSobj, src)
//can't think of any other way to update the overlays :<
if(ismob(loc))
@@ -385,7 +385,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
/obj/item/clothing/mask/cigarette/pipe/Destroy()
if(reagents)
qdel(reagents)
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
. = ..()
/obj/item/clothing/mask/cigarette/pipe/process()
@@ -402,7 +402,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
M.update_inv_wear_mask()
packeditem = 0
name = "empty [initial(name)]"
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
return
open_flame()
if(reagents && reagents.total_volume) // check if it has any reagents at all
@@ -443,7 +443,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
lit = 0
icon_state = icon_off
item_state = icon_off
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
return
if(!lit && smoketime > 0)
user << "<span class='notice'>You empty [src] onto [location].</span>"
@@ -512,7 +512,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
user.visible_message("<span class='warning'>After a few attempts, [user] manages to light [src] - they however burn their finger in the process.</span>", "<span class='warning'>You burn yourself while lighting the lighter!</span>")
user.AddLuminosity(1)
SSobj.processing |= src
START_PROCESSING(SSobj, src)
else
lit = 0
update_icon()
@@ -524,7 +524,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
else
user.visible_message("[user] quietly shuts off [src].", "<span class='notice'>You quietly shut off [src].")
user.AddLuminosity(-1)
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
else
return ..()
return

View File

@@ -34,7 +34,7 @@
/obj/item/weapon/flamethrower/process()
if(!lit)
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
return null
var/turf/location = loc
if(istype(location, /mob/))
@@ -149,7 +149,7 @@
return
lit = !lit
if(lit)
SSobj.processing |= src
START_PROCESSING(SSobj, src)
if(!warned_admins)
message_admins("[key_name_admin(usr)]<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A> (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[usr]'>FLW</A>) has lit a flamethrower.")
warned_admins = 1

View File

@@ -351,10 +351,10 @@
/obj/item/weapon/nullrod/tribal_knife/New()
..()
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/obj/item/weapon/nullrod/tribal_knife/Destroy()
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
return ..()
/obj/item/weapon/nullrod/tribal_knife/process()

View File

@@ -148,7 +148,7 @@
/obj/item/weapon/melee/supermatter_sword/New()
..()
shard = new /obj/machinery/power/supermatter_shard(src)
SSobj.processing += src
START_PROCESSING(SSobj, src)
visible_message("<span class='warning'>\The [src] appears, balanced ever so perfectly on its hilt. This isn't ominous at all.</span>")
/obj/item/weapon/melee/supermatter_sword/process()

View File

@@ -15,10 +15,10 @@
/obj/item/weapon/twohanded/singularityhammer/New()
..()
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/obj/item/weapon/twohanded/singularityhammer/Destroy()
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
return ..()
/obj/item/weapon/twohanded/singularityhammer/process()

View File

@@ -120,7 +120,7 @@
/obj/item/weapon/tank/jetpack/suit/New()
..()
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
air_contents = null
/obj/item/weapon/tank/jetpack/suit/cycle(mob/user)
@@ -136,13 +136,13 @@
var/mob/living/carbon/human/H = loc.loc
tank = H.s_store
air_contents = tank.air_contents
SSobj.processing |= src
START_PROCESSING(SSobj, src)
..()
/obj/item/weapon/tank/jetpack/suit/turn_off()
tank = null
air_contents = null
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
..()
/obj/item/weapon/tank/jetpack/suit/process()
@@ -173,4 +173,4 @@
if(!istype(J) && istype(wear_suit, /obj/item/clothing/suit/space/hardsuit))
var/obj/item/clothing/suit/space/hardsuit/C = wear_suit
J = C.jetpack
return J
return J

View File

@@ -53,13 +53,13 @@
air_contents = new(volume) //liters
air_contents.temperature = T20C
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/obj/item/weapon/tank/Destroy()
if(air_contents)
qdel(air_contents)
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
return ..()
/obj/item/weapon/tank/examine(mob/user)

View File

@@ -413,13 +413,13 @@
/obj/item/weapon/reagent_containers/chemtank/proc/turn_on()
on = 1
SSobj.processing |= src
START_PROCESSING(SSobj, src)
if(ismob(loc))
loc << "<span class='notice'>[src] turns on.</span>"
/obj/item/weapon/reagent_containers/chemtank/proc/turn_off()
on = 0
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
if(ismob(loc))
loc << "<span class='notice'>[src] turns off.</span>"

View File

@@ -295,7 +295,7 @@
damtype = "brute"
update_icon()
if(!can_off_process)
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
return
//Welders left on now use up fuel, but lets not have them run out quite that fast
if(1)
@@ -382,7 +382,7 @@
damtype = "fire"
hitsound = 'sound/items/welder.ogg'
update_icon()
SSobj.processing |= src
START_PROCESSING(SSobj, src)
else
user << "<span class='warning'>You need more fuel!</span>"
welding = 0

View File

@@ -30,7 +30,7 @@
/obj/Destroy()
if(!istype(src, /obj/machinery))
SSobj.processing.Remove(src) // TODO: Have a processing bitflag to reduce on unnecessary loops through the processing lists
STOP_PROCESSING(SSobj, src) // TODO: Have a processing bitflag to reduce on unnecessary loops through the processing lists
SStgui.close_uis(src)
return ..()

View File

@@ -46,7 +46,7 @@
qdel(src)
return
SSobj.processing |= src
START_PROCESSING(SSobj, src)
..()
icon = L.icon
icon_state = L.icon_state
@@ -63,7 +63,7 @@
M.Stun(1) //So they can't do anything while petrified
if(timer <= 0)
dump_contents()
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
qdel(src)
/obj/structure/closet/statue/dump_contents()

View File

@@ -19,10 +19,10 @@
/obj/structure/transit_tube/station/New()
..()
SSobj.processing += src
START_PROCESSING(SSobj, src)
/obj/structure/transit_tube/station/Destroy()
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
return ..()
// Stations which will send the tube in the opposite direction after their stop.

View File

@@ -126,17 +126,17 @@
clockwork_construction_value++
/turf/open/floor/clockwork/Destroy()
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
clockwork_construction_value--
return ..()
/turf/open/floor/clockwork/Entered(atom/movable/AM)
..()
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/turf/open/floor/clockwork/process()
if(!healservants())
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
/turf/open/floor/clockwork/proc/healservants()
for(var/mob/living/L in src)

View File

@@ -224,12 +224,12 @@
burn_stuff()
if(!processing)
processing = 1
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/turf/open/floor/plating/lava/process()
if(!burn_stuff())
processing = 0
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
/turf/open/floor/plating/lava/make_plating()
return

View File

@@ -22,10 +22,10 @@
/obj/item/device/assembly/health/toggle_secure()
secured = !secured
if(secured && scanning)
SSobj.processing |= src
START_PROCESSING(SSobj, src)
else
scanning = 0
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
update_icon()
return secured
@@ -67,9 +67,9 @@
return 0
scanning = !scanning
if(scanning)
SSobj.processing |= src
START_PROCESSING(SSobj, src)
else
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
return
/obj/item/device/assembly/health/interact(mob/user as mob)//TODO: Change this to the wires thingy

View File

@@ -13,7 +13,7 @@
/obj/item/device/assembly/infra/New()
..()
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/obj/item/device/assembly/infra/Destroy()
if(first)
@@ -33,12 +33,12 @@
/obj/item/device/assembly/infra/toggle_secure()
secured = !secured
if(secured)
SSobj.processing |= src
START_PROCESSING(SSobj, src)
else
on = 0
if(first)
qdel(first)
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
update_icon()
return secured

View File

@@ -21,7 +21,7 @@
/obj/item/device/assembly/prox_sensor/New()
..()
SSobj.processing |= src
START_PROCESSING(SSobj, src)
oldloc = loc
/obj/item/device/assembly/prox_sensor/describe()

View File

@@ -14,7 +14,7 @@
/obj/item/device/assembly/timer/New()
..()
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/obj/item/device/assembly/timer/describe()
if(timing)
@@ -33,10 +33,10 @@
/obj/item/device/assembly/timer/toggle_secure()
secured = !secured
if(secured)
SSobj.processing |= src
START_PROCESSING(SSobj, src)
else
timing = 0
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
update_icon()
return secured

View File

@@ -39,7 +39,7 @@
var/area/mob_area = get_area(M)
if(istype(mob_area, /area/ctf))
M << "<span class='userdanger'>\The [src] has been returned to base!</span>"
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
/obj/item/weapon/twohanded/required/ctf/attack_hand(mob/living/user)
if (!user)
@@ -59,12 +59,12 @@
var/area/mob_area = get_area(M)
if(istype(mob_area, /area/ctf))
M << "<span class='userdanger'>\The [src] has been taken!</span>"
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
/obj/item/weapon/twohanded/required/ctf/dropped(mob/user)
..()
reset_cooldown = world.time + 200 //20 seconds
SSobj.processing |= src
START_PROCESSING(SSobj, src)
for(var/mob/M in player_list)
var/area/mob_area = get_area(M)
if(istype(mob_area, /area/ctf))

View File

@@ -66,7 +66,7 @@
var/braindead_check = 0
/obj/structure/academy_wizard_spawner/New()
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/obj/structure/academy_wizard_spawner/process()
if(next_check < world.time)
@@ -131,7 +131,7 @@
if(health<0)
visible_message("<span class='warning'>[src] breaks down!</span>")
icon_state = "forge_off"
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
broken = 1
/obj/structure/academy_wizard_spawner/attackby(obj/item/weapon/W, mob/living/user, params)

View File

@@ -15,13 +15,13 @@
mode = !mode
if(mode)
SSobj.processing |= src
START_PROCESSING(SSobj, src)
vision_flags = 0
darkness_view = 2
invis_view = SEE_INVISIBLE_LIVING
user << "<span class='notice'>You toggle the goggles' scanning mode to \[T-Ray].</span>"
else
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
vision_flags = SEE_TURFS
darkness_view = 1
invis_view = SEE_INVISIBLE_MINIMUM
@@ -121,10 +121,10 @@
on = !on
if(on)
SSobj.processing |= src
START_PROCESSING(SSobj, src)
user << "<span class='notice'>You turn the goggles on.</span>"
else
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
user << "<span class='notice'>You turn the goggles off.</span>"
invis_update()

View File

@@ -72,7 +72,7 @@
throwforce = 15
damtype = BURN
hitsound = 'sound/items/Welder.ogg'
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/obj/item/clothing/head/hardhat/cakehat/turn_off()
..()
@@ -80,7 +80,7 @@
throwforce = 0
damtype = BRUTE
hitsound = 'sound/weapons/tap.ogg'
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
/obj/item/clothing/head/hardhat/cakehat/is_hot()
return on * heat

View File

@@ -185,7 +185,7 @@
else
new_camera(user)
else
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
/obj/item/clothing/suit/space/chronos/proc/activate()
if(!activating && !activated && !teleporting)
@@ -206,7 +206,7 @@
user << "\[ <span style='color: #00ff00;'>ok</span> \] Starting ui display driver"
user << "\[ <span style='color: #00ff00;'>ok</span> \] Initializing chronowalk4-view"
new_camera(user)
SSobj.processing |= src
START_PROCESSING(SSobj, src)
activated = 1
else
user << "\[ <span style='color: #ff0000;'>fail</span> \] Mounting /dev/helmet"

View File

@@ -492,7 +492,7 @@
owner.visible_message("<span class='danger'>[owner]'s shields deflect [attack_text] in a shower of sparks!</span>")
current_charges--
recharge_cooldown = world.time + recharge_delay
SSobj.processing |= src
START_PROCESSING(SSobj, src)
if(current_charges <= 0)
owner.visible_message("[owner]'s shield overloads!")
shield_state = "broken"
@@ -502,7 +502,7 @@
/obj/item/clothing/suit/space/hardsuit/shielded/Destroy()
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
return ..()
/obj/item/clothing/suit/space/hardsuit/shielded/process()
@@ -511,7 +511,7 @@
playsound(loc, 'sound/magic/Charge.ogg', 50, 1)
if(current_charges == max_charges)
playsound(loc, 'sound/machines/ding.ogg', 50, 1)
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
shield_state = "[shield_on]"
if(istype(loc, /mob/living/carbon/human))
var/mob/living/carbon/human/C = loc

View File

@@ -24,13 +24,13 @@
/obj/effect/countdown/proc/start()
if(!started)
SSfastprocess.processing |= src
START_PROCESSING(SSfastprocess, src)
started = TRUE
/obj/effect/countdown/proc/stop()
if(started)
overlays.Cut()
SSfastprocess.processing -= src
STOP_PROCESSING(SSfastprocess, src)
started = FALSE
/obj/effect/countdown/proc/get_value()
@@ -59,7 +59,7 @@
/obj/effect/countdown/Destroy()
attached_to = null
SSfastprocess.processing -= src
STOP_PROCESSING(SSfastprocess, src)
. = ..()
/obj/effect/countdown/syndicatebomb

View File

@@ -437,7 +437,7 @@
/obj/effect/spacevine_controller/New(loc, list/muts, mttv, spreading)
spawn_spacevine_piece(loc, , muts)
SSobj.processing |= src
START_PROCESSING(SSobj, src)
init_subtypes(/datum/spacevine_mutation/, mutations_list)
if(mttv != null)
mutativness = mttv / 10
@@ -455,7 +455,7 @@
return
/obj/effect/spacevine_controller/Destroy()
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
return ..()
/obj/effect/spacevine_controller/proc/spawn_spacevine_piece(turf/location, obj/effect/spacevine/parent, list/muts)

View File

@@ -45,7 +45,7 @@
if(!(user in color_altered_mobs))
color_altered_mobs += user
user.color = "#00FF00"
SSobj.processing |= src
START_PROCESSING(SSobj, src)
..()
/obj/item/weapon/greentext/dropped(mob/living/user as mob)
@@ -54,7 +54,7 @@
user.color = "#FF0000" //ya blew it
last_holder = null
new_holder = null
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
..()
/obj/item/weapon/greentext/process()

View File

@@ -132,7 +132,7 @@ Gunshots/explosions/opening doors/less rare audio (done)
flood_turfs += get_turf(src.loc)
if(target.client) target.client.images |= flood_images
next_expand = world.time + FAKE_FLOOD_EXPAND_TIME
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/obj/effect/hallucination/fake_flood/process()
if(next_expand <= world.time)
@@ -153,7 +153,7 @@ Gunshots/explosions/opening doors/less rare audio (done)
target.client.images |= flood_images
/obj/effect/hallucination/fake_flood/Destroy()
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
qdel(flood_turfs)
flood_turfs = list()
if(target.client)

View File

@@ -80,7 +80,7 @@
if(open && !bomb_defused)
audible_message("<span class='warning'>\icon[src] *beep*</span>")
bomb_active = TRUE
SSobj.processing |= src
START_PROCESSING(SSobj, src)
update_icon()
/obj/item/pizzabox/attack_hand(mob/user)
@@ -196,7 +196,7 @@
return
/obj/item/pizzabox/proc/unprocess()
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
qdel(wires)
wires = null
update_icon()

View File

@@ -39,11 +39,11 @@
/obj/structure/beebox/New()
..()
SSobj.processing += src
START_PROCESSING(SSobj, src)
/obj/structure/beebox/Destroy()
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
bees.Cut()
bees = null
honeycombs.Cut()

View File

@@ -79,7 +79,7 @@
..()
if( istype(src.loc, /mob) )
held_mob = src.loc
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/obj/item/weapon/reagent_containers/food/snacks/grown/ghost_chili/process()
if(held_mob && src.loc == held_mob)

View File

@@ -488,14 +488,14 @@
/obj/item/weapon/melee/ghost_sword/New()
..()
spirits = list()
SSobj.processing += src
START_PROCESSING(SSobj, src)
poi_list |= src
/obj/item/weapon/melee/ghost_sword/Destroy()
for(var/mob/dead/observer/G in spirits)
G.invisibility = initial(G.invisibility)
spirits.Cut()
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
poi_list -= src
. = ..()

View File

@@ -276,7 +276,7 @@ var/global/chicken_count = 0
E.pixel_y = rand(-6,6)
if(eggsFertile)
if(chicken_count < MAX_CHICKENS && prob(25))
SSobj.processing |= E
START_PROCESSING(SSobj, E)
/obj/item/weapon/reagent_containers/food/snacks/egg/var/amount_grown = 0
/obj/item/weapon/reagent_containers/food/snacks/egg/process()
@@ -285,10 +285,10 @@ var/global/chicken_count = 0
if(amount_grown >= 100)
visible_message("[src] hatches with a quiet cracking sound.")
new /mob/living/simple_animal/chick(get_turf(src))
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
qdel(src)
else
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
/obj/item/udder

View File

@@ -176,7 +176,7 @@
/obj/machinery/am_shielding/proc/setup_core()
processing = 1
machines |= src
SSmachine.processing |= src
START_PROCESSING(SSmachine, src)
if(!control_unit)
return
control_unit.linked_cores.Add(src)

View File

@@ -20,22 +20,22 @@
/obj/item/weapon/stock_parts/cell/New()
..()
SSobj.processing |= src
START_PROCESSING(SSobj, src)
charge = maxcharge
ratingdesc = " This one has a power rating of [maxcharge], and you should not swallow it."
desc = desc + ratingdesc
updateicon()
/obj/item/weapon/stock_parts/cell/Destroy()
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
return ..()
/obj/item/weapon/stock_parts/cell/on_varedit(modified_var)
if(modified_var == "self_recharge")
if(self_recharge)
SSobj.processing |= src
START_PROCESSING(SSobj, src)
else
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
..()
/obj/item/weapon/stock_parts/cell/process()

View File

@@ -34,7 +34,7 @@
src.energy = starting_energy
..()
SSobj.processing |= src
START_PROCESSING(SSobj, src)
poi_list |= src
for(var/obj/machinery/power/singularity_beacon/singubeacon in machines)
if(singubeacon.active)
@@ -43,7 +43,7 @@
return
/obj/singularity/Destroy()
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
poi_list.Remove(src)
return ..()

View File

@@ -38,12 +38,12 @@
fire_sound = shot.fire_sound
fire_delay = shot.delay
if(selfcharge)
SSobj.processing |= src
START_PROCESSING(SSobj, src)
update_icon()
return
/obj/item/weapon/gun/energy/Destroy()
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
return ..()
/obj/item/weapon/gun/energy/process()
@@ -161,12 +161,12 @@
/obj/item/weapon/gun/energy/on_varedit(modified_var)
if(modified_var == "selfcharge")
if(selfcharge)
SSobj.processing |= src
START_PROCESSING(SSobj, src)
else
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
..()
/obj/item/weapon/gun/energy/burn()
if(power_supply)
qdel(power_supply)
.=..()
.=..()

View File

@@ -51,12 +51,12 @@
charges = max_charges
chambered = new ammo_type(src)
if(can_charge)
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/obj/item/weapon/gun/magic/Destroy()
if(can_charge)
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
return ..()

View File

@@ -18,7 +18,7 @@
/obj/item/weapon/gun/medbeam/New()
..()
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/obj/item/weapon/gun/medbeam/dropped(mob/user)
..()
@@ -125,4 +125,4 @@
/obj/item/weapon/gun/medbeam/mech/New()
..()
SSobj.processing -= src //Mech mediguns do not process until installed, and are controlled by the holder obj
STOP_PROCESSING(SSobj, src) //Mech mediguns do not process until installed, and are controlled by the holder obj

View File

@@ -17,11 +17,11 @@
/obj/item/weapon/minigunpack/New()
gun = new(src)
SSobj.processing += src
START_PROCESSING(SSobj, src)
..()
/obj/item/weapon/minigunpack/Destroy()
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
..()
/obj/item/weapon/minigunpack/process()

View File

@@ -23,7 +23,7 @@ var/const/INJECT = 5 //injection
maximum_volume = maximum
if(!(flags & REAGENT_NOREACT))
SSobj.processing |= src
START_PROCESSING(SSobj, src)
//I dislike having these here but map-objects are initialised before world/New() is called. >_>
if(!chemical_reagents_list)
@@ -60,7 +60,7 @@ var/const/INJECT = 5 //injection
/datum/reagents/Destroy()
. = ..()
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
for(var/reagent in reagent_list)
var/datum/reagent/R = reagent
qdel(R)
@@ -293,7 +293,7 @@ var/const/INJECT = 5 //injection
/datum/reagents/process()
if(flags & REAGENT_NOREACT)
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
return
for(var/reagent in reagent_list)
@@ -305,9 +305,9 @@ var/const/INJECT = 5 //injection
// Order is important, process() can remove from processing if
// the flag is present
flags &= ~(REAGENT_NOREACT)
SSobj.processing |= src
START_PROCESSING(SSobj, src)
else
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
flags |= REAGENT_NOREACT
/datum/reagents/proc/conditional_update_move(atom/A, Running = 0)

View File

@@ -38,11 +38,11 @@ Borg Hypospray
modes[R] = iteration
iteration++
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/obj/item/weapon/reagent_containers/borghypo/Destroy()
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
return ..()

View File

@@ -455,7 +455,7 @@
/obj/effect/golemrune/New()
..()
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/obj/effect/golemrune/process()
var/mob/dead/observer/ghost

View File

@@ -66,10 +66,10 @@
/obj/structure/table/abductor/wabbajack/New()
. = ..()
SSobj.processing += src
START_PROCESSING(SSobj, src)
/obj/structure/table/abductor/wabbajack/Destroy()
SSobj.processing -= src
STOP_PROCESSING(SSobj, src)
. = ..()
/obj/structure/table/abductor/wabbajack/process()

View File

@@ -1,171 +1,171 @@
/datum/stockMarket
var/list/stocks = list()
var/list/balances = list()
var/list/last_read = list()
var/list/stockBrokers = list()
var/list/logs = list()
/datum/stockMarket/New()
..()
generateBrokers()
generateStocks()
SSobj.processing.Add(src)
/datum/stockMarket/proc/balanceLog(var/whose, var/net)
if (!(whose in balances))
balances[whose] = net
else
balances[whose] += net
/datum/stockMarket/proc/generateBrokers()
stockBrokers = list()
var/list/fnames = list("Goldman", "Edward", "James", "Luis", "Alexander", "Walter", "Eugene", "Mary", "Morgan", "Jane", "Elizabeth", "Xavier", "Hayden", "Samuel", "Lee")
var/list/names = list("Johnson", "Rothschild", "Sachs", "Stanley", "Hepburn", "Brown", "McColl", "Fischer", "Edwards", "Becker", "Witter", "Walker", "Lambert", "Smith", "Montgomery", "Lynch", "Roosevelt", "Lehman")
var/list/locations = list("Earth", "Luna", "Mars", "Saturn", "Jupiter", "Uranus", "Pluto", "Europa", "Io", "Phobos", "Deimos", "Space", "Venus", "Neptune", "Mercury", "Kalliope", "Ganymede", "Callisto", "Amalthea", "Himalia", "Sybil", "Basil", "Badger", "Terry", "Artyom")
var/list/first = list("The", "First", "Premier", "Finest", "Prime")
var/list/company = list("Investments", "Securities", "Corporation", "Bank", "Brokerage", "& Co.", "Brothers", "& Sons", "Investement Firm", "Union", "Partners", "Capital", "Trade", "Holdings")
for(var/i in 1 to 5)
var/pname = ""
switch (rand(1,5))
if (1)
pname = "[prob(10) ? pick(first) + " " : null][pick(names)] [pick(company)]"
if (2)
pname = "[pick(names)] & [pick(names)][prob(25) ? " " + pick(company) : null]"
if (3)
pname = "[prob(45) ? pick(first) + " " : null][pick(locations)] [pick(company)]"
if (4)
pname = "[prob(10) ? "The " : null][pick(names)] [pick(locations)] [pick(company)]"
if (5)
pname = "[prob(10) ? "The " : null][pick(fnames)] [pick(names)][prob(10) ? " " + pick(company) : null]"
if (pname in stockBrokers)
i--
continue
stockBrokers += pname
/datum/stockMarket/proc/generateDesignation(var/name)
if (length(name) <= 4)
return uppertext(name)
var/list/w = splittext(name, " ")
if (w.len >= 2)
var/d = ""
for(var/i in 1 to min(5, w.len))
d += uppertext(ascii2text(text2ascii(w[i], 1)))
return d
else
var/d = uppertext(ascii2text(text2ascii(name, 1)))
for(var/i in 2 to length(name))
if (prob(100 / i))
d += uppertext(ascii2text(text2ascii(name, i)))
return d
/datum/stockMarket/proc/generateStocks(var/amt = 15)
var/list/fruits = list("Banana", "Mimana", "Watermelon", "Ambrosia", "Pomegranate", "Reishi", "Papaya", "Mango", "Tomato", "Conkerberry", "Wood", "Lychee", "Mandarin", "Harebell", "Pumpkin", "Rhubarb", "Tamarillo", "Yantok", "Ziziphus", "Oranges", "Gatfruit", "Daisy", "Kudzu")
var/list/tech_prefix = list("Nano", "Cyber", "Funk", "Astro", "Fusion", "Tera", "Exo", "Star", "Virtual", "Plasma", "Robust", "Bit", "Future", "Hugbox", "Carbon", "Nerf", "Buff", "Nova", "Space", "Meta", "Cyber")
var/list/tech_short = list("soft", "tech", "prog", "tec", "tek", "ware", "", "gadgets", "nics", "tric", "trasen", "tronic", "coin")
var/list/random_nouns = list("Johnson", "Cluwne", "General", "Specific", "Master", "King", "Queen", "Table", "Rupture", "Dynamic", "Massive", "Mega", "Giga", "Certain", "Singulo", "State", "National", "International", "Interplanetary", "Sector", "Planet", "Burn", "Robust", "Exotic", "Solar", "Lunar", "Chelp", "Corgi", "Lag", "Lizard")
var/list/company = list("Company", "Factory", "Incorporated", "Industries", "Group", "Consolidated", "GmbH", "LLC", "Ltd", "Inc.", "Association", "Limited", "Software", "Technology", "Programming", "IT Group", "Electronics", "Nanotechnology", "Farms", "Stores", "Mobile", "Motors", "Electric", "Designs", "Energy", "Pharmaceuticals", "Communications", "Wholesale", "Holding", "Health", "Machines", "Astrotech", "Gadgets", "Kinetics")
for (var/i = 1, i <= amt, i++)
var/datum/stock/S = new
var/sname = ""
switch (rand(1,6))
if(1)
while (sname == "" || sname == "FAG") // honestly it's a 0.6% chance per round this happens - or once in 166 rounds - so i'm accounting for it before someone yells at me
sname = "[consonant()][vowel()][consonant()]"
if (2)
sname = "[pick(tech_prefix)][pick(tech_short)][prob(20) ? " " + pick(company) : null]"
if (3 to 4)
var/fruit = pick(fruits)
fruits -= fruit
sname = "[prob(10) ? "The " : null][fruit][prob(40) ? " " + pick(company): null]"
if (5 to 6)
var/pname = pick(random_nouns)
random_nouns -= pname
switch (rand(1,3))
if (1)
sname = "[pname] & [pname]"
if (2)
sname = "[pname] [pick(company)]"
if (3)
sname = "[pname]"
S.name = sname
S.short_name = generateDesignation(S.name)
S.current_value = rand(10, 125)
var/dv = rand(10, 40) / 10
S.fluctuational_coefficient = prob(50) ? (1 / dv) : dv
S.average_optimism = rand(-10, 10) / 100
S.optimism = S.average_optimism + (rand(-40, 40) / 100)
S.current_trend = rand(-200, 200) / 10
S.last_trend = S.current_trend
S.disp_value_change = rand(-1, 1)
S.speculation = rand(-20, 20)
S.average_shares = round(rand(500, 10000) / 10)
S.outside_shareholders = rand(1000, 30000)
S.available_shares = rand(200000, 800000)
S.fluctuation_rate = rand(6, 20)
S.generateIndustry()
S.generateEvents()
stocks += S
last_read[S] = list()
/datum/stockMarket/process()
for (var/stock in stocks)
var/datum/stock/S = stock
S.process()
/datum/stockMarket/proc/add_log(var/log_type, var/user, var/company_name, var/stocks, var/shareprice, var/money)
var/datum/stock_log/L = new log_type
L.user_name = user
L.company_name = company_name
L.stocks = stocks
L.shareprice = shareprice
L.money = money
L.time = time2text(world.timeofday, "hh:mm")
logs += L
var/global/datum/stockMarket/stockExchange = new
/proc/plotBarGraph(var/list/points, var/base_text, var/width=400, var/height=400)
var/output = "<table style='border:1px solid black; border-collapse: collapse; width: [width]px; height: [height]px'>"
if (points.len && height > 20 && width > 20)
var/min = points[1]
var/max = points[1]
for (var/v in points)
if (v < min)
min = v
if (v > max)
max = v
var/cells = (height - 20) / 20
if (cells > round(cells))
cells = round(cells) + 1
var/diff = max - min
var/ost = diff / cells
if (min > 0)
min = max(min - ost, 0)
diff = max - min
ost = diff / cells
var/cval = max
var/cwid = width / (points.len + 1)
for (var/y = cells, y > 0, y--)
if (y == cells)
output += "<tr>"
else
output += "<tr style='border:none; border-top:1px solid #00ff00; height: 20px'>"
for (var/x = 0, x <= points.len, x++)
if (x == 0)
output += "<td style='border:none; height: 20px; width: [cwid]px; font-size:10px; color:#00ff00; background:black; text-align:right; vertical-align:bottom'>[round(cval - ost)]</td>"
else
var/v = points[x]
if (v >= cval)
output += "<td style='border:none; height: 20px; width: [cwid]px; background:#0000ff'>&nbsp;</td>"
else
output += "<td style='border:none; height: 20px; width: [cwid]px; background:black'>&nbsp;</td>"
output += "</tr>"
cval -= ost
output += "<tr><td style='font-size:10px; height: 20px; width: 100%; background:black; color:green; text-align:center' colspan='[points.len + 1]'>[base_text]</td></tr>"
else
output += "<tr><td style='width:[width]px; height:[height]px; background: black'></td></tr>"
output += "<tr><td style='font-size:10px; background:black; color:green; text-align:center'>[base_text]</td></tr>"
return "[output]</table>"
/datum/stockMarket
var/list/stocks = list()
var/list/balances = list()
var/list/last_read = list()
var/list/stockBrokers = list()
var/list/logs = list()
/datum/stockMarket/New()
..()
generateBrokers()
generateStocks()
START_PROCESSING(SSobj, src)
/datum/stockMarket/proc/balanceLog(var/whose, var/net)
if (!(whose in balances))
balances[whose] = net
else
balances[whose] += net
/datum/stockMarket/proc/generateBrokers()
stockBrokers = list()
var/list/fnames = list("Goldman", "Edward", "James", "Luis", "Alexander", "Walter", "Eugene", "Mary", "Morgan", "Jane", "Elizabeth", "Xavier", "Hayden", "Samuel", "Lee")
var/list/names = list("Johnson", "Rothschild", "Sachs", "Stanley", "Hepburn", "Brown", "McColl", "Fischer", "Edwards", "Becker", "Witter", "Walker", "Lambert", "Smith", "Montgomery", "Lynch", "Roosevelt", "Lehman")
var/list/locations = list("Earth", "Luna", "Mars", "Saturn", "Jupiter", "Uranus", "Pluto", "Europa", "Io", "Phobos", "Deimos", "Space", "Venus", "Neptune", "Mercury", "Kalliope", "Ganymede", "Callisto", "Amalthea", "Himalia", "Sybil", "Basil", "Badger", "Terry", "Artyom")
var/list/first = list("The", "First", "Premier", "Finest", "Prime")
var/list/company = list("Investments", "Securities", "Corporation", "Bank", "Brokerage", "& Co.", "Brothers", "& Sons", "Investement Firm", "Union", "Partners", "Capital", "Trade", "Holdings")
for(var/i in 1 to 5)
var/pname = ""
switch (rand(1,5))
if (1)
pname = "[prob(10) ? pick(first) + " " : null][pick(names)] [pick(company)]"
if (2)
pname = "[pick(names)] & [pick(names)][prob(25) ? " " + pick(company) : null]"
if (3)
pname = "[prob(45) ? pick(first) + " " : null][pick(locations)] [pick(company)]"
if (4)
pname = "[prob(10) ? "The " : null][pick(names)] [pick(locations)] [pick(company)]"
if (5)
pname = "[prob(10) ? "The " : null][pick(fnames)] [pick(names)][prob(10) ? " " + pick(company) : null]"
if (pname in stockBrokers)
i--
continue
stockBrokers += pname
/datum/stockMarket/proc/generateDesignation(var/name)
if (length(name) <= 4)
return uppertext(name)
var/list/w = splittext(name, " ")
if (w.len >= 2)
var/d = ""
for(var/i in 1 to min(5, w.len))
d += uppertext(ascii2text(text2ascii(w[i], 1)))
return d
else
var/d = uppertext(ascii2text(text2ascii(name, 1)))
for(var/i in 2 to length(name))
if (prob(100 / i))
d += uppertext(ascii2text(text2ascii(name, i)))
return d
/datum/stockMarket/proc/generateStocks(var/amt = 15)
var/list/fruits = list("Banana", "Mimana", "Watermelon", "Ambrosia", "Pomegranate", "Reishi", "Papaya", "Mango", "Tomato", "Conkerberry", "Wood", "Lychee", "Mandarin", "Harebell", "Pumpkin", "Rhubarb", "Tamarillo", "Yantok", "Ziziphus", "Oranges", "Gatfruit", "Daisy", "Kudzu")
var/list/tech_prefix = list("Nano", "Cyber", "Funk", "Astro", "Fusion", "Tera", "Exo", "Star", "Virtual", "Plasma", "Robust", "Bit", "Future", "Hugbox", "Carbon", "Nerf", "Buff", "Nova", "Space", "Meta", "Cyber")
var/list/tech_short = list("soft", "tech", "prog", "tec", "tek", "ware", "", "gadgets", "nics", "tric", "trasen", "tronic", "coin")
var/list/random_nouns = list("Johnson", "Cluwne", "General", "Specific", "Master", "King", "Queen", "Table", "Rupture", "Dynamic", "Massive", "Mega", "Giga", "Certain", "Singulo", "State", "National", "International", "Interplanetary", "Sector", "Planet", "Burn", "Robust", "Exotic", "Solar", "Lunar", "Chelp", "Corgi", "Lag", "Lizard")
var/list/company = list("Company", "Factory", "Incorporated", "Industries", "Group", "Consolidated", "GmbH", "LLC", "Ltd", "Inc.", "Association", "Limited", "Software", "Technology", "Programming", "IT Group", "Electronics", "Nanotechnology", "Farms", "Stores", "Mobile", "Motors", "Electric", "Designs", "Energy", "Pharmaceuticals", "Communications", "Wholesale", "Holding", "Health", "Machines", "Astrotech", "Gadgets", "Kinetics")
for (var/i = 1, i <= amt, i++)
var/datum/stock/S = new
var/sname = ""
switch (rand(1,6))
if(1)
while (sname == "" || sname == "FAG") // honestly it's a 0.6% chance per round this happens - or once in 166 rounds - so i'm accounting for it before someone yells at me
sname = "[consonant()][vowel()][consonant()]"
if (2)
sname = "[pick(tech_prefix)][pick(tech_short)][prob(20) ? " " + pick(company) : null]"
if (3 to 4)
var/fruit = pick(fruits)
fruits -= fruit
sname = "[prob(10) ? "The " : null][fruit][prob(40) ? " " + pick(company): null]"
if (5 to 6)
var/pname = pick(random_nouns)
random_nouns -= pname
switch (rand(1,3))
if (1)
sname = "[pname] & [pname]"
if (2)
sname = "[pname] [pick(company)]"
if (3)
sname = "[pname]"
S.name = sname
S.short_name = generateDesignation(S.name)
S.current_value = rand(10, 125)
var/dv = rand(10, 40) / 10
S.fluctuational_coefficient = prob(50) ? (1 / dv) : dv
S.average_optimism = rand(-10, 10) / 100
S.optimism = S.average_optimism + (rand(-40, 40) / 100)
S.current_trend = rand(-200, 200) / 10
S.last_trend = S.current_trend
S.disp_value_change = rand(-1, 1)
S.speculation = rand(-20, 20)
S.average_shares = round(rand(500, 10000) / 10)
S.outside_shareholders = rand(1000, 30000)
S.available_shares = rand(200000, 800000)
S.fluctuation_rate = rand(6, 20)
S.generateIndustry()
S.generateEvents()
stocks += S
last_read[S] = list()
/datum/stockMarket/process()
for (var/stock in stocks)
var/datum/stock/S = stock
S.process()
/datum/stockMarket/proc/add_log(var/log_type, var/user, var/company_name, var/stocks, var/shareprice, var/money)
var/datum/stock_log/L = new log_type
L.user_name = user
L.company_name = company_name
L.stocks = stocks
L.shareprice = shareprice
L.money = money
L.time = time2text(world.timeofday, "hh:mm")
logs += L
var/global/datum/stockMarket/stockExchange = new
/proc/plotBarGraph(var/list/points, var/base_text, var/width=400, var/height=400)
var/output = "<table style='border:1px solid black; border-collapse: collapse; width: [width]px; height: [height]px'>"
if (points.len && height > 20 && width > 20)
var/min = points[1]
var/max = points[1]
for (var/v in points)
if (v < min)
min = v
if (v > max)
max = v
var/cells = (height - 20) / 20
if (cells > round(cells))
cells = round(cells) + 1
var/diff = max - min
var/ost = diff / cells
if (min > 0)
min = max(min - ost, 0)
diff = max - min
ost = diff / cells
var/cval = max
var/cwid = width / (points.len + 1)
for (var/y = cells, y > 0, y--)
if (y == cells)
output += "<tr>"
else
output += "<tr style='border:none; border-top:1px solid #00ff00; height: 20px'>"
for (var/x = 0, x <= points.len, x++)
if (x == 0)
output += "<td style='border:none; height: 20px; width: [cwid]px; font-size:10px; color:#00ff00; background:black; text-align:right; vertical-align:bottom'>[round(cval - ost)]</td>"
else
var/v = points[x]
if (v >= cval)
output += "<td style='border:none; height: 20px; width: [cwid]px; background:#0000ff'>&nbsp;</td>"
else
output += "<td style='border:none; height: 20px; width: [cwid]px; background:black'>&nbsp;</td>"
output += "</tr>"
cval -= ost
output += "<tr><td style='font-size:10px; height: 20px; width: 100%; background:black; color:green; text-align:center' colspan='[points.len + 1]'>[base_text]</td></tr>"
else
output += "<tr><td style='width:[width]px; height:[height]px; background: black'></td></tr>"
output += "<tr><td style='font-size:10px; background:black; color:green; text-align:center'>[base_text]</td></tr>"
return "[output]</table>"

View File

@@ -446,10 +446,10 @@
/obj/item/organ/shadowtumor/New()
..()
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/obj/item/organ/shadowtumor/Destroy()
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
..()
/obj/item/organ/shadowtumor/process()

View File

@@ -136,14 +136,14 @@
/obj/item/weapon/rcs/New()
..()
SSobj.processing |= src
START_PROCESSING(SSobj, src)
/obj/item/weapon/rcs/examine(mob/user)
..()
user << "There are [rcharges] charge\s left."
/obj/item/weapon/rcs/Destroy()
SSobj.processing.Remove(src)
STOP_PROCESSING(SSobj, src)
return ..()
/obj/item/weapon/rcs/process()
if(rcharges > 10)