Newmap - SMC, Openturf, Arrivals Controller, and Mine Turf Improvements (#1958)

* Replace SSingulo with SScalamity; processing cleanup
- SScalamity now handles blobs as well as singularity-types.
- Processing subtypes have been simplified to not require a stop_processing definition.

* this is probably important

* Remove cascade disabling SSgarbage

* Fixed a bug where dust() did not qdel the target mob

* Misc fixes

* Fix decals surviving break-to-plating

* Subsystem flag tweaks

* Apparently subsystems are new'd before config is.

* Fix paper icons

* Speculative fix for insane lag

* Better machinery stat

* Make organs not use SSoverlay

* Misc bugfixes & tweaks

* Nightmode fixes

* Changelog for SMC

* Port /tg/'s improved MC crash handling

* Add some more SS Recover() procs

* supply_controller -> SScargo

* More New() -> Initialize()

* pAI and robot construction overlays

* Fix cargo unit tests

* Merge the DMM Suite's atom/New() into atoms_init

* Lighting pre-baking

* Lighting initialization logging

* Fix some bad SS init orders

* Fix SSlighting logging; rename Processes to MC

* Speculative fix for insane GC lag

* Prebaked openturf/icon_smooth & fix lighting prebake

* SS init status; SSatoms LATEQDEL

* Fix bug with MC init stat panel

* Fix parallax

* Misc

* Ignore SS_NO_DISPLAY during init

* apparently this is important

* REEEEEE

* Image GC fixes; broadcaster radio-new sanity

* RCON Cleanup

* Move pAI recruiter into subsystem

* Move global solars list into sun subsystem

* Make chickens not use a global

* Demote SSdisposals to SS_BACKGROUND; garbage-debug cleanup

* Speed up space init a little

* Fix bad timer flags on floor drying

* Subsystem panic-restart verb for mins

* Explosion speedup

* Minor subsystem & MC logging tweaks

* SSopenturf improvements

* Make pipenet actually initialize (whoops)

* Minor tweaks

* Implement lighting rounding

* comments are hard okay

* Minor lattice tweaks

* Fix some timer issues & better closet init

* Timer sanity

* Request console tweaks + Storage init sanity

* Minor SSmachiner RCON improvements

* Further reduce world-start timer count

* Standardize subsystem logging

* Garbage hard delete profiling from /tg/

* Timer hang detection & recovery

* Log machines that sleep in process() and fuck up SSmachinery

* Fix an issue with external airlocks sleeping in process()

* Failsafe logging

* Minor tweaks

* Revert "Request console tweaks + Storage init sanity"

This reverts commit 98d3579e35.

* Re-implement RC changes

* Fix SQL FT saving

* Fix SSmachinery sleep in disposals

* Minor SS tweaks

* Paper fixes

* Blood drying fixes

* Merge gameticker and SSticker

* Minor global list init cleanup

* Lagcheck biogenerator & bags

* Tweak SScargo init order; RIG Initialize()

* Caching tweaks

* Remove rogue comma

* Initialize fixes

* Lighting destroy cleanup

* Fix emagging airlocks

* Initial SSicon implementation

* Tweaks & Fixes

* Fire + Air alarm queued icon updates

* Overlays + Queued icon cleanup

* Runtime & background fixes

* Kill some meaningless set statements

* Kill some image qdels

* Bump up lighting rounding val

* Fix adv. scanner destroy runtimes

* Remove unneeded icon update limiting

* Move icon smoothing into helpers

* Show a warning if DM 510 compiles without memory leak hack enabled

* Re-organize subsystems & MC defines a little

* Airlock SFX

* Log of Changes

* Make SSicon_update disable itself when not doing anything

* Fix respawn verb runtime when used early in server-init

* Add more information to MC's stat_entry()

* Replace direct refernces to gcDestroyed with QDEL* macros

* plant_controller -> SSplants

* More plant tweaks

* Add more humor to changelog

* Move parallax globals into SSparallax

* Lighting responsiveness tweaks

* Fix parallax init order & better MC init panel stat

* Make mobs GC

* More overlays + Remove intercom spawn()

* SSfast_process; make pinpointers not use spawn-recursion to process
Also made the SM Cascade beach process with SSprocessing instead of a spawn loop.

* Update changelog

* Mob GC tweaks

* Del() cleanup

* Fix insomniac ZAS connection edges

* Minor pAI cleanup

* Convert more things to SSoverlay; fix duplicated overlay in field gens

* SM Bluespace turf tweaks

* Update SSgarbage debug globals list

* Human-type qdel tweaks

* Subsystem suspension; stat_entry improvements

* SQL Statistics cleanup

* Fix runtimes with ambrosia

* More disable() -> suspend(); fix nightmode again

* Human qdel fix; minor tweaks

* Update turbolift to work with StonedMC

* Make lifts use timers instead of a subsystem

* Make SSassets start earlier

* Convert the radio controller into a subsystem

* Fix some missing CHECK_TICKs in asteroid generation

* MC stat tweaks; make shouldnt_see a typecache

* Kill some redundant debug-controller entries

* radio_controller -> SSradio

* Better SSgarbage hard-del logging from /tg/ upstream

* Logging tweaks + GELF

* Misc client caching improvements

* Slime SSoverlay

* Oven icon fixes

* Implant fixes
- Death implants will no longer spam Common on death of user.
- Death implants should handle a deleted user better.

* Holder tweaks + Welding tool Initialize()

* Fix some bad subsystem logging

* Fix suit cooling units spawning without cells

* Starlight tweaks

* Gibber infinite gib fix

* More SSoverlay stuff

* Make crates use CUT_OVERLAY_IN

* Make SSarrivals suspend instead of disable

* Make openturf use split/phased tick checks

* Speculative fix for unwet timer runtimes

* Blood overlay tweaks/fixes

* Update crusher to play nice with SMC + SSoverlay

* Openturf improvements and fixes

* Minor turbolift tweaks

* Lighting performance improvements + ChangeTurf tweaks

* this is probably important

* Fix wall weld noises on changeturf

* More ChangeTurf tweaks

* Explosion tweaks

* Pre-game lobby tweaks

* Openturf tweaks

* Prevent admins from starting the game before init finishes

* Fix Travis

* Kill an unused var

* Fix ChangeTurf runtimes on openturfs

* Fixes

* Browser datum fixes, asset caching

* Update changelog

* Changelog

* Lobby tweaks

* Ticker tweaks; kill ticker var

* Further lobby tweaks

* Cascade tweaks

* air_master -> SSair

* Reduce overhead from radio autosay

* alarm_manager -> SSalarm

* bomb_processor -> SSexplosives

* corp_regs -> SSlaw

* ZAS overlay fixes

* Small wall icon optimization

* Fix effects master

* Assembly tweaks

* Megavend fixes

* Shuttle fixes

* Camera alert performance improvements

* Fix some world.log spam from lighting overlays

* Fix some Initialize() procs

* Openspace responsiveness tweaks

* Make HE pipes animate through openturfs

* Kill a spawn
This commit is contained in:
Lohikar
2017-05-02 14:40:40 -04:00
committed by LordFowl
parent 9dbf27a0f4
commit f6dc33a465
872 changed files with 17767 additions and 13417 deletions
+4 -4
View File
@@ -23,7 +23,7 @@ var/global/list/rad_collectors = list()
/obj/machinery/power/rad_collector/Destroy()
rad_collectors -= src
..()
return ..()
/obj/machinery/power/rad_collector/process()
//so that we don't zero out the meter if the SM is processed first.
@@ -134,13 +134,13 @@ var/global/list/rad_collectors = list()
/obj/machinery/power/rad_collector/proc/update_icons()
overlays.Cut()
cut_overlays()
if(P)
overlays += image('icons/obj/singularity.dmi', "ptank")
add_overlay("ptank")
if(stat & (NOPOWER|BROKEN))
return
if(active)
overlays += image('icons/obj/singularity.dmi', "on")
add_overlay("on")
/obj/machinery/power/rad_collector/proc/toggle_power()
@@ -20,7 +20,7 @@
FG1.cleanup()
if(FG2 && !FG2.clean_up)
FG2.cleanup()
..()
return ..()
/obj/machinery/containment_field/attack_hand(mob/user as mob)
if(get_dist(src, user) > 1)
+3 -6
View File
@@ -29,10 +29,6 @@
var/datum/effect_system/sparks/spark_system
/obj/machinery/power/emitter/New()
..()
spark_system = bind_spark(src, 5, alldirs)
/obj/machinery/power/emitter/Destroy()
QDEL_NULL(spark_system)
return ..()
@@ -48,8 +44,9 @@
src.set_dir(turn(src.dir, 90))
return 1
/obj/machinery/power/emitter/initialize()
..()
/obj/machinery/power/emitter/Initialize()
. = ..()
spark_system = bind_spark(src, 5, alldirs)
if(state == 2 && anchored)
connect_to_network()
if(_wifi_id)
@@ -38,22 +38,19 @@ field_generator power level display
/obj/machinery/field_generator/update_icon()
overlays.Cut()
cut_overlays()
if(!active)
if(warming_up)
overlays += "+a[warming_up]"
add_overlay("+a[warming_up]")
if(fields.len)
overlays += "+on"
add_overlay("+on")
// Power level indicator
// Scale % power to % num_power_levels and truncate value
var/level = round(num_power_levels * power / field_generator_max_power)
// Clamp between 0 and num_power_levels for out of range power values
level = between(0, level, num_power_levels)
if(level)
overlays += "+p[level]"
return
add_overlay("+p[level]")
/obj/machinery/field_generator/New()
..()
@@ -133,7 +130,7 @@ field_generator power level display
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))
if (do_after(user,20, act_target = src))
if(!src || !WT.isOn()) return
state = 2
user << "You weld the field generator to the floor."
@@ -145,7 +142,7 @@ field_generator power level display
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))
if (do_after(user,20, act_target = src))
if(!src || !WT.isOn()) return
state = 1
user << "You cut the [src] free from the floor."
@@ -168,14 +165,11 @@ field_generator power level display
/obj/machinery/field_generator/Destroy()
src.cleanup()
..()
return ..()
/obj/machinery/field_generator/proc/turn_off()
active = 0
spawn(1)
src.cleanup()
addtimer(CALLBACK(src, .proc/cleanup), 1)
update_icon()
/obj/machinery/field_generator/proc/turn_on()
@@ -190,7 +184,6 @@ field_generator power level display
start_fields()
update_icon()
/obj/machinery/field_generator/proc/calc_power()
if(Varpower)
return 1
@@ -210,9 +203,7 @@ field_generator power level display
if(draw_power(round(power_draw)) >= power_draw)
return 1
else
for(var/mob/M in viewers(src))
M.show_message("\red \The [src] shuts down!")
turn_off()
visible_message(span("alert", "\The [src] shuts down!"))
investigate_log("ran out of power and <font color='red'>deactivated</font>","singulo")
src.power = 0
return 0
@@ -242,32 +233,27 @@ field_generator power level display
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)
addtimer(CALLBACK(src, .proc/setup_field, 1), 1)
addtimer(CALLBACK(src, .proc/setup_field, 2), 2)
addtimer(CALLBACK(src, .proc/setup_field, 4), 3)
addtimer(CALLBACK(src, .proc/setup_field, 8), 4)
src.active = 2
/obj/machinery/field_generator/proc/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
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)
if(T.density)//We cant shoot a field though this
if(T.density) //We cant shoot a field though this
return 0
for(var/atom/A in T.contents)
if(ismob(A))
continue
if(!istype(A,/obj/machinery/field_generator))
if((istype(A,/obj/machinery/door)||istype(A,/obj/machinery/the_singularitygen))&&(A.density))
if((istype(A,/obj/machinery/door) || istype(A,/obj/machinery/the_singularitygen)) && (A.density))
return 0
steps += 1
G = locate(/obj/machinery/field_generator) in T
@@ -308,16 +294,15 @@ field_generator power level display
if(!listcheck)
G.connected_gens.Add(src)
/obj/machinery/field_generator/proc/cleanup()
clean_up = 1
for (var/obj/machinery/containment_field/F in fields)
if (isnull(F))
if (QDELETED(F))
continue
qdel(F)
fields = list()
for(var/obj/machinery/field_generator/FG in connected_gens)
if (isnull(FG))
if (QDELETED(FG))
continue
FG.connected_gens.Remove(src)
if(!FG.clean_up)//Makes the other gens clean up as well
@@ -76,7 +76,7 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin
construction_state = 0
if(master)
master.part_scan()
..()
return ..()
/obj/structure/particle_accelerator/end_cap
name = "Alpha Particle Generation Array"
@@ -60,7 +60,7 @@
/obj/machinery/particle_accelerator/control_box/update_icon()
if(active)
icon_state = "[reference]p1"
icon_state = "[reference]p[strength]"
else
if(use_power)
if(assembled)
@@ -115,6 +115,8 @@
part.strength = strength
part.update_icon()
update_icon()
/obj/machinery/particle_accelerator/control_box/proc/add_strength(var/s)
if(assembled)
strength++
+20 -18
View File
@@ -35,19 +35,18 @@
energy = starting_energy
if (temp)
spawn (temp)
qdel(src)
QDEL_IN(src, temp)
..()
processing_objects += src
START_PROCESSING(SScalamity, src)
for(var/obj/machinery/power/singularity_beacon/singubeacon in machines)
if(singubeacon.active)
target = singubeacon
break
/obj/singularity/Destroy()
processing_objects -= src
..()
STOP_PROCESSING(SScalamity, src)
return ..()
/obj/singularity/attack_hand(mob/user as mob)
consume(user)
@@ -267,19 +266,22 @@
return 1
/obj/singularity/proc/eat()
for(var/atom/X in orange(grav_pull, src))
var/dist = get_dist(X, src)
var/obj/singularity/S = src
if(!istype(src))
return
if(dist > consume_range)
X.singularity_pull(S, current_size)
else if(dist <= consume_range)
consume(X)
//for (var/turf/T in trange(grav_pull, src)) //TODO: Create a similar trange for orange to prevent snowflake of self check.
// consume(T)
for(var/tile in spiral_range_turfs(grav_pull, src))
var/turf/T = tile
if(!T || !isturf(loc))
continue
if(get_dist(T, src) > consume_range)
T.singularity_pull(src, current_size)
else
consume(T)
for(var/thing in T)
if(isturf(loc) && thing != src)
var/atom/movable/X = thing
if(get_dist(X, src) > consume_range)
X.singularity_pull(src, current_size)
else
consume(X)
CHECK_TICK
return
/obj/singularity/proc/consume(const/atom/A)