Commit Graph

744 Commits

Author SHA1 Message Date
Lohikar
b8bb48ef76 Convert clothing to initialize (#3263)
changes:

Converted all clothing types to Initialize.
Added some missing destroys to some custom items.
Char setup now forcibly initializes the mannequin's contents if SSatoms has not finished yet.
/obj/item/clothing/under no longer does in icon_states() in New().
2017-08-13 23:32:07 +03:00
Alberyk
d1c3a58c87 Adds the merchant station, the shuttle and the station's dock (#3254)
This pr adds the second essential part of the merchant's implementation, mapping the merchant's shuttle, base and the dock. And more merchant related fixes and tweaks.
2017-08-13 23:31:50 +03:00
Lohikar
5b97803904 update icons performance tweaks (#3259)
A collection of misc. micro-optimizations to the various human update-icons procs.

changes to human update icons:

Removed some unused human layers.
Merged the l_ear and r_ear layers into one layer.
Minor optimizations to update_ears (optimized for only one ear in use)
update_collar() no longer creates an icon each time it runs just to check icon_states.
update_collar() now uses a cached assoc list of icon_states for comparison instead of in IconStates().
Human body types are now cached on first access so the proc doesn't need to be called all the time.
Contained icons now involve less temporary strings.
Manual tail swish now uses client-time timers instead of server-time timers.
2017-08-09 20:27:50 +03:00
skull132
81bb348a42 Merge branch 'master' into development 2017-08-06 22:09:41 +03:00
Ron
ad96a34dd8 Removes some in worlds (#3227)
Removes some in worlds and some commented out code that I don't think will ever be used.
2017-08-06 19:50:53 +03:00
Erki
a50820a574 Fixes a bug with default values. (#3237) 2017-08-05 22:36:14 +03:00
skull132
1784bf4669 Merge branch 'master' into development
# Conflicts:
#	maps/aurora/aurora-3_sublevel.dmm
2017-08-04 22:10:58 +03:00
Alberyk
b4fa4a8b3a Baystation12 merchant port (#3155)
Port of the merchant mechanics from baystation12.
All of the trader, prices and most essential system are done, as well the job datum and the like. Mapping the shuttle, the base and a new dock will be done in a later pr.
Also adds phazon construction and several other items used in this pr.
The chance of the merchant slow being open at round start can be changed via the config, it is 20% by default.
2017-08-04 21:36:04 +03:00
Lohikar
880d9cb5b4 Fix MC crash handling (#3222)
Ports a fix from /tg/ upstream - previously failure strikes did not distinguish between subsystems when they should've.
2017-08-04 21:24:41 +03:00
skull132
0f072e15e9 Merge branch 'master' into development 2017-08-02 23:56:29 +03:00
Lohikar
1ee2203b01 clean up some legacy code (#3211)
changes:

/obj/effect/list_container/mobl has been replaced with /datum/mobl.
/obj/effect/stop has been removed as it is unused.
/obj/effect/shut_controller has been removed as it is unused.
Uristrunes now cache in SSicon_cache.
2017-08-02 19:53:23 +03:00
Ron
0a760075ee Adds the gravity generator (#3183)
Works like it did in old code with some minor additions. The sprite is the one TG uses.
2017-08-02 19:48:54 +03:00
Lohikar
2fb9387988 More Openturf fixes (#3198)
Fixes a bug where openturf would unexpectedly delete an overlay if it was updated via. update_above() when it was already queued for update. Also fixes #3191 and includes some minor performance optimizations.
2017-07-31 21:49:51 +03:00
Lohikar
a6a9a6ab7b Fix Autodrobes again (#3190)
changes:

Autodrobes no longer steal your clothes if you had an oversuit on but not a custom jumpsuit.
Late Miscellaneous Init (LMI) no longer uses silent init logging.
equip_to_slot_or_del() will now equip even if the target slot would normally be inaccessible.
May fix #2826.
Fixes #2512.
2017-07-31 21:49:23 +03:00
Lohikar
523b203273 Faster (?) Garbage SS (#3184)
changes:

The GC now truncates its lists using a single Cut() call per run instead of one cut call per item removed.
Nar-sie and Supermatter Cascades now disable the GC to reduce lag during these events - round is ending in 5 minutes anyways, so enforcing deletes is not important.
Garbage's MC status panel now displays how many objects are awaiting queueing.
2017-07-31 20:26:28 +03:00
Lohikar
f8cdcd013c More initialize tweaks (#2971)
changes:

Organs now use Initialize().
The observe message now shows the configured respawn delay instead of always 30 minutes.
Seed datums no longer have a timer in New().
External organs no longer have a timer in New()/Initialize()
Converted some spawns in organs to timers.
Floor init no longer breaks to plating first for mapped in tiles.
Added the INITIALIZE_IMMEDIATE macro to make Initialize() not wait for SSatoms init.
Mannequins now use INITIALIZE_IMMEDIATE instead of a custom-defined New().
Mannequins (from get_mannequin) now delete themselves if unused for 5 minutes or longer.
2017-07-28 12:00:36 +03:00
Lohikar
cfb7357c6f Area cleanup, Minor BST tweaks, Nuke Fixes, Explosion fixes (#3164)
changes:

Ported some timer fixes from /tg/ (timerid overflow fix, invalid deltimer logging)
Removed pointless air alarm elections.
Cleaned up some area code and moved area var definitions into areas.dm.
The nuke now only destroys Zs connected to the Z it detonates on. (Fixes #2552)
The nuke no longer destroys CC.
Nukes now dust mobs.
Cascades now dust all mobs on all non-admin levels.
Fixed a bug where SSexplosives would not honor the is_rec var.
Improved the efficiency of /proc/random_station_area().
Bluespace Bugs can now teleport out again.
Bluespace Technicians can now turn off their x-ray vision without needing to remove their glasses.
Human-types no longer make footstep sounds when lying down, unconscious, or dead.
2017-07-27 18:10:38 +03:00
Lohikar
ff5cd35ef8 More Openturf Tweaks (#3137)
changes:

Openturfs now darken the lower level less (0.4 lighting multiplier vs. 0.25).
You can now examine human-types and other objects with special examine behavior through Z-levels. (OOs proxy examine())
Fixed a bug where shadower updates caused by LO updates caused visual inconsistencies.
2017-07-23 12:40:44 +03:00
Lohikar
64e33fab83 Human icon tweaks (#3131)
Mostly efficiency changes to human icons, little bit of code deduplication in head icons.
The human overlay list has been changed to accept /list so that multiple items can be added to a layer without having to resort to adding overlays to an intermediary object like an /image.

changes:

Human skin color (not tone) is now stored as a hex string instead of a 3-value list.
Human body hair color (resomi only) is now stored as a hex string instead of a 3-value list.
Body markings now play nice with the human icon cache (Fixes #3110)
Hair properly uses its cache now in all cases.
Merged head organs and human icon's implementations of hair icon gen into a proc on human.
Replaced the individual hair and beard caches with a shared composited hair cache used by both head icon and mob icons.
Lists in the human overlay list are now flattened out onto the human, allowing for multiple objects within a single human icon layer without using an intermediary image.
Removed some unused caching lists.
Damage overlays no longer utilize overlays on a blank image for drawing, instead using a list in the human overlay list.
Shoe overlays no longer utilize overlays on the shoe image, instead using a list in the human overlay list.
Surgery overlays no longer utilize overlays on a blank image, instead using a list in the human overlay list.
2017-07-23 01:03:00 +03:00
Lohikar
8fcad605ee More icon caching (#3078)
changes:

Human-type hair (facial & head), eyes, and lips are now cached in SSicon_cache.
Underwear, undershirts, and socks are now cached in SSicon_cache.
Removed forced icon regen for update_body - if this actually did anything, the cache key for these icons needs to be made more detailed.
Organs now fully use SSoverlays to apply overlays (previously they partially used it, which may have caused bugs).
A couple of hair styles (bald, shaved) are pretty common, so this should remove/reduce the overhead of constantly regenerating their icons. Also means that BST's icons only really need to be generated once.
2017-07-18 12:22:01 +03:00
Ron
ef582313d1 Removes some unneeded debug logs (#3070)
Removes some unneeded debug logs.
2017-07-16 21:57:52 +03:00
skull132
0fc67f2cb9 Remove a whole bunch of in world loops and rework machinery global lists (#3053)
Removes a whole bunch of in world loops.
Reworks SSmachinery to hold two lists: all_machines and processing_machines. all_machines contains all machines 5ever. All of them. Literally. Forever. And ever. processing_machines only contains machines that process with the SSmachinery controller.

I checked most types at runtime on the live server to see whether they're in processing_machines or in all_machines, and did debug to ensure that most machinery ends up and stays in all_machines.

Includes a basic UT to make sure all mapped in machinery types remain within the all_machines list post-init.
2017-07-16 20:32:33 +03:00
Lohikar
4e0057daa0 Minor storage & SSair init fixes (#3049)
changes:

Storage objects can now defer shrinkwrapping of contents until the next stackframe if things are being put in them without using fill() (such as autodrobes & BSTs)
SSair init properly yells at the admins when it's done.
2017-07-16 02:06:00 +03:00
Lohikar
687e56a8e0 Replace a bunch of overlay calls (#3005)
changes:

Converts a bunch of manual overlay manipulation to SSoverlay calls.
Moved more cache lists to SSicon_cache.
2017-07-13 21:12:53 +03:00
Lohikar
216039eb2e Add weakrefs, because just two types of ref wasn't confusing enough (#3020)
Ports a new type of reference from bay: weakrefs.

They validate type like hard-refs, but don't block GC like soft-refs. Performance-wise are worse than both, but generally more convenient than softrefs.
2017-07-13 21:04:19 +03:00
Lohikar
5876fa338c Better timer debug (#2968)
Ports improved SStimer debug logging from /tg/ + adds a bit of extra info.
2017-07-12 02:45:02 +03:00
Lohikar
617ace5609 Update globals (#3014)
Updates the garbage-debug globals list.
2017-07-12 02:00:07 +03:00
Lohikar
606a9c7541 Icon caching & human icon tweaks (#3000)
changes:

Body marking icons are now cached in SSicon_cache.
Renamed the body-hair cache (used only by Resomi) to make it more clear what it is.
Humans now use SSoverlay for applying overlays, though they force-compile instead of waiting for it to tick.
Fixed a bug where getFlatIcon() did not work properly with SSoverlay overlays.
2017-07-10 20:09:52 +03:00
Lohikar
6d69abbd47 Fix an oversight (#2980)
Fixes a bug where lighting copy done by SSopenturf would not propagate updates to above openturfs.
2017-07-09 19:34:18 +03:00
Lohikar
83426c8f20 Make SSnightlight actually obey its config (#2981)
Whoops.

Fixes #2960.
2017-07-09 19:33:54 +03:00
Lohikar
33c61f9f1e Remove some world loops (#2965)
changes:

Replaces a lot of in-world loops with more specific lists.
Recipes are now copied in SSmachinery/Recover()
Fixed bad sorting on all_areas list.
Added skeleton Destroy() to SMESes as they did not have one and are failing to GC.
Seems to shorten SSatoms init a bit, maybe from removal of in-world in MULEs?
2017-07-09 00:24:28 +03:00
Lohikar
219fa07bc9 More SSoverlays micro-optimizations (#2972)
Ports some more SSoverlay micro-optimizations from upstream /tg/.
2017-07-09 00:23:48 +03:00
Lohikar
a0ed9a393e Character spawning fixes (#2975)
changes:

Fixed a bug where non-clothing custom loadout items would not spawn.
Fixed a bug where latejoining AIs would spawn at CC / Cryo instead of the core.
Added more SSjob debug statements.
Fixes #2942.
2017-07-08 01:39:06 +03:00
Lohikar
dbc70d9f49 Openturf & Lighting Improvements (#2961)
changes:

Openturf now uses ~200 MB less memory when sunlight is enabled.
Openturf now handles recursive OO copy better.
Lighting objects now update their existing color list if they can instead of creating a new one each time.
The sun can no longer fall out of the sky.
Openturfs should be a little gentler on clients.
Openturf darkening factor can be more easily changed.
Reset-Openturfs no longer hangs SSgarbage.
2017-07-06 23:40:16 +03:00
Lohikar
fd225cf97e Improved observ efficiency (#2958)
changes:

Lists are no longer created every time a movable moves (!)
Lists are no longer created every time a datum is destroyed (!)
Observation events now properly clean up references.
Removed the unused task_triggered event.
2017-07-06 23:39:33 +03:00
Lohikar
8af0051fd6 More macros (#2955)
changes:

Holomaps now use an area flag instead of a proc to determine which areas do not draw on the holomap.
The supply shuttle once more has a roof.
The supply shuttle's landing zone is now dynamically lit.
Turfs only generate visibility updates on Initialize() after mapload - visualnet is not initialized by then anyways.
Merged /datum/gas_mixture/(init) into /datum/gas_mixture/New().
Converted a ZAS proc into a macro.
Made ZAS attempt to remove a turf from a zone instead of always rebuilding it in a certain case.
Macroized two misc procs.
Fixes #2947.
2017-07-06 23:37:58 +03:00
Lohikar
9c010f92d1 isopenturf() macro, update_above improvements (#2931)
changes:

Added a isopenturf() macro, equivalent to istype(thing, /turf/simulated/open).
Converted most/all instances of istype(/turf/simulated/open) to isopenturf().
Made update_above()' aware of queue status & inlined a proc-call.
2017-07-03 12:04:18 +03:00
skull132
b886ef644a Implement mixed secret (#2849)
Implements mixed secret as a gamemode. It's another snowflake mode which taps into more snowflake functions. :ree:

Went over all references to "secret" and swapped them for a macro where applicable. SSticker.hide_mode now holds a reference to which type of secret was picked. "random" gamemode will now pick from both secret lists for added randomness!

Implementation of https://forums.aurorastation.org/viewtopic.php?f=18&t=8253
2017-07-02 02:38:00 +03:00
Lohikar
f885bffdae More tweaks (#2889)
changes:

Clipboard overlays are now a little gentler on SSoverlays.
Ported potential performance improvements for getFlatIcon and listclearnulls from /tg/.
Icon smoothing now clears the base icon by default; SMOOTH_NO_CLEAR_ICON disables this behavior.
Potential SSoverlays performance improvement from /tg/.
Speculative fix for #2826.
2017-07-01 23:09:10 +03:00
Lohikar
42f91d8117 Remove privacy poll & other tweaks/fixes (#2863)
changes:

Removed the privacy poll as it is unused.
Observing no longer creates a new mannequin, instead fetching one from SSmobs.
Observer ghosts now have a description again.
Converted new_player.dm to absolute pathing.
Fixed a bad init on holomaps.
Removed a sleep from light fixture Initialize().
Added a queue length stat to the MC panel for Icon Smoothing.
Halved time taken to create lighting overlay objects.
Species & body marking lists are now sorted alphabetically.
Commented out calls to lighting profiler to remove overhead of string interpolation in some procs.
Blood dries instantly if present during mapload instead of setting a timer.
2017-07-01 21:53:39 +03:00
Lohikar
27251ee9ee Remove the datum pool (#2873)
Removes the datum pool.

New-qdel is faster than pooling, and we didn't use it anyways.
2017-06-30 13:10:14 +03:00
Lohikar
1e965826d5 Fix a stupid mistake (#2861)
AAAAAAAAAAAAAAAAAAAAAAAaaaaaaaaaaaaaaaAAAAAAAAAAAAAAA
2017-06-29 01:32:53 +03:00
Lohikar
ce54f5a76c Significantly speed up testing server boot (#2846)
Dramatically speeds up boot with testing (MC_TICKLIMIT_INIT > 100) configs; stoplag() would penalize procs that go over 100% tick-usage by delaying them further. This is not required during server boot & the lobby, and resulted in significantly longer boot times.

This PR ports a fix from /tg/ that forces stoplag() only sleep 1 tick if it sleeps during server boot, as well as adjusting the example config to be more suited for testing.
2017-06-29 00:20:14 +03:00
Lohikar
ea7b9b56b7 Fix loadout overwrite issues (#2854)
changes:

Fixed a bug where items overflowing from EquipCustomDeferred would not be passed to EquipItemsStorage.
Added debug lines to EquipCustom, EquipCustomDeferred, and EquipItemsStorage.
Fixes #2762.
2017-06-28 14:37:00 +03:00
Lohikar
16322d55d9 Beam tweaks (#2852)
Speculative fix for #2769.
2017-06-28 14:35:51 +03:00
Lohikar
300f238111 vg Holomaps (#2844)
Ports vorestation's implementation of /vg/'s holomaps.

Holomaps are an in-game object that shows a map of (most) of the station with departments highlighted, to aid in navigation around the station. Maintenance, high-security, and asteroid areas are excluded from the maps.

Adds approximately 1.5 seconds to server boot to generate maps.

Holomaps were added at:

Arrivals shuttle dock, north of checkpoint.
Surface level lift.
By entrance to security on main level.
North of the kitchen.
South of Engineering, near tech storage.
Beside the IA office.
Near the lift on each sub-level department.
2017-06-27 20:40:40 +03:00
Lohikar
b071bbf0d2 Parallax-related performance tweaks (#2810)
Experimental tweaks to how parallax's movement hooks work; the current ones appear to be fairly expensive for all movable movement, doing locate(/mob) in src on every forceMove(). This PR creates a new lazylist (contained_mobs) containing a list of every mob directly contained by an object. contained_mobs is updated on mob/forceMove().

Not sure how to handle mobs located deeper than directly inside an object.

Only alternative to this I see is to make SSparallax tick.
2017-06-26 12:05:17 +03:00
Lohikar
b7dce5ba66 Track round-start setup time (#2791)
Adds a debug log to track round-start setup time for diagnostic purposes.
2017-06-23 15:56:19 +03:00
Lohikar
05cceb7a1a Queued icon update tweaks (#2787)
changes:

Queued icon updates now update the atom's associated openspace overlay or openturf.
update_oo() renamed to update_above(), and moved up to /atom. Only meaningful on /turf (updates above openturf if present) and /atom/movable (updates associated OO if present).
Demoted SSfalling to a regular subsystem (1ds tickrate).
Increased SSlighting's tickrate from 2 ds to 1 ds.
2017-06-22 13:23:30 +03:00
Lohikar
bcccd88fd4 Fastboot (#2761)
Adds a config option that disables some time consuming bootup steps that aren't generally required for debugging.
2017-06-22 13:15:20 +03:00