Added in code to debug ZAS tile interactions, currently in the unchecked "Debug" file.
The blasted FloodFill proc now works properly, and zones are connecting right (Should finally fix that damn part of medbay not connecting to the hallway)
Plasma can contaminate again.
The master controller and world startup code has been reworked for faster server boots.
Fixed a runtime originating from a Away Mission map trying to create objects of type "null"
- Added a verb that breaks all airgroups into individually processing tiles and a verb that forces a group-rejoin attempt on all airgroups. Once the verb to break all air groups is used, they will not attempt to recreate until the recreate verb is used. In other words, this is for debugging, not goofing around. Verbs available in debug verbs.
- Some atmos code standardization
- Decreased the pressure resistance of most items by a factor of 10, meaning pressure will finally actually move items around!
I also attempted to speed up air movement, but it caused runtimes and everything moved in checkered patterns and I got scared so I didn't include it in this commit.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5554 316c924e-a436-60f5-8080-3fe189b3f50e
The old one still exists, mainly so the associated admin buttons still work.
At some point I'll add a nice little panel for event stuff and remove the old procs.
event.dm is pretty well commented, and it should be pretty easy to figure it out.
Casualties of the change are space dust (which should probably be implemented separately if we want it back), the black hole event (which was awful), space ninjas (which didn't turn up), ionstorms (the non-admin ones sucked anyway) and CLANG, which I will probably add at some point, if no one else does first.
Also, I removed pierott's throat from the disease outbreak list. f that s.
Thanks to Sukasa and BS12, as my system is loosely based off of theirs.
Thanks Giacom for help with structuring and especially commenting this.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5511 316c924e-a436-60f5-8080-3fe189b3f50e
The next type of mimic is for the staff of animation! They will copy the icon of the object they're copying and will set themselves stats based on the object too. They will not attack the bearer of the staff which made them animated.
Added the option to get the staff on the wizard's spell book.
Added a "friends" var to hostile mobs. It will make the simple animal ignore friends when choosing targets.
Changed the statues from /obj/effect/showcase to /obj/structure/showcase.
Added a new variable to projectiles, "shot_from" is the gun that shot the projectile. It's used to determine what staff animated the mob and it will then add that staff, so it can ignore it when choosing targets.
Added a wander var for simple animals, turning it to 0 will stop the simple animal from moving when idle.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5246 316c924e-a436-60f5-8080-3fe189b3f50e
I did find that your be special preferences, i.e: be alien, be traitor, be changeling and etc, are shared between preferences. I'll ask if this is intentional or not.
-Some minor stuff.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5175 316c924e-a436-60f5-8080-3fe189b3f50e
Removed all the voting-related adminverbs. It's all built into ooc vote verb.
Admins can now make custom votes for literally anything.
If a vote draws it will pick one of the winners at random.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4677 316c924e-a436-60f5-8080-3fe189b3f50e
Failsafe now checks the lighting_controller too. It will restart it if it doesn't progress for 5 cycles (same as MC)
datum/failsafe is now datum/controller/failsafe
The probability of lights breaking after spawn was reduced from tube:10 and bulb:25 to tube:2 bulb:5
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4674 316c924e-a436-60f5-8080-3fe189b3f50e
Things left to do mainly involves stuff interacting with Z8 - counting people as dead, making sure teleports don't work, etc.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4661 316c924e-a436-60f5-8080-3fe189b3f50e
Fixed the failsafe misreporting how long the MC has been dead.
Lighting initialization no longer 'interrupts' the master_controller setup().
Added updated powernet debugging tools. They're in my WIP folder. They are sexy c: It draws the powernet onto the map so you can see what's going on during debugging.
Added tachyon-doppler arrays. They're gonna be something for scientists to measure their bombs with rather than praying for the figures. Nothing spectacular.
Commented out switches, they aren't used and I've been fixing/testing powernets all day. Sorry. If you need them back just PM me and I'll fix them.
Known issues: the merging procs behave silly at intersections. I really tried to fix it but I think I'll make more progress just working on some powernet improvements.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4623 316c924e-a436-60f5-8080-3fe189b3f50e
machine.process() now uses a return value to remove itself from the processing machines list. This is more efficient and will help reduce costs especially at round start where some 5000+ machines were removed from the list using first-find. Now there is no searching involved. Instead of machines.Remove(src) just do .=PROCESS_KILL that will return the flag to the proc which called it (the MC) and trigger its removal from the list. If you're deleting something don't even bother removing it from the machines list, there is no need to.
Simplified the last_processed stuff for the MC. It's now a single variable rather than 3. It is simply a typepath rather than a reference to an object (this is so it works even if said object is deleted)
MC stats in admin status_panels now show the length of the processing lists (indicated by #). I've just realised I forgot to mention what the abbreviations are:
The less obvious ones are: Dis=diseases; Net=pipes; Pnet=powernets; Mch=Machines; Tick=the game-mode ticker.
Beach-water now uses an overlay image rather than a separate object.
Fixed a typo in the shuttle console.
Hydroponics trays no longer use first-find within their process() for checking the plant is in the tray (why is that even there anyway? talk about lazy)
Removed some junk/placeholder procs like organ/proc/process() return
Removed newscasters from the processing machines lists.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4603 316c924e-a436-60f5-8080-3fe189b3f50e
Fixed a problem where TG was using this sequential master_controller but I had removed a spawn where master_controller.process() was called because I was working with the default master_controller. This problem was causing the master_controller to prevent the lighting_controller.process() ever running properly because it was hogging the current thread (thread isn't the right word there, not sure what you call it....stack?)
Added debugging to both the lighting_controller and master_controller. http://filesmelt.com/dl/debugging.png
Both lighting_controller and master_controller may be deleted to terminate their processes (this is done via the restart controller verb. This allows for clean restarts without 'doubling up' (where, for instance, the master_controller would be running more than one instance).
lighting_controller has a prototype recovery proc which is called by the "restart controller - lighting" verb. It's basically an overly paranoid version of process() which will only transfer light_sources to the replacement controller if they don't runtime. It's not needed at the moment as the process() has yet to runtime.
master_controller has the beginnings of self pruning lists. This method using list.Cut(index,index+1) is faster than doing list.Remove(thing) all over the place (the latter iterates through the list to find the thing).
Added more detailed time-measurements for the master_controller. It now displays the processing costs (in real-world seconds) of each part of the master_controller's cycle.
The stat panel only updates for mobs actually -looking- at the stat panel.
Explosion debugging is now hidden behind a if(Debug2). To have it print that data to world.log just click the DebugGame verb
debug controller and restart controller verbs are now both GameAdmin rank. Not sure how they got split up.
Fixed another cause of dark splotchy space turfs. (turf/wall/ex_act was replacing the turf with space and then deleting that new space turf)
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4593 316c924e-a436-60f5-8080-3fe189b3f50e
Comments for lighting:
Like sd_DAL (what we used to use), it changes the shading overlays of areas by splitting each type of area into sub-areas
by using the var/tag variable and moving turfs into the contents list of the correct sub-area.
Unlike sd_DAL however it uses a queueing system. Everytime we call a change to opacity or luminosity
(through SetOpacity() or SetLuminosity()) we are simply updating variables and scheduling certain lights/turfs for an
update. Actual updates are handled periodically by the lighting_controller. This carries additional overheads, however it
means that each thing is changed only once per lighting_controller.processing_interval ticks. Allowing for greater control
over how much priority we'd like lighting updates to have. It also makes it possible for us to simply delay updates by
setting lighting_controller.processing = 0 at say, the start of a large explosion, waiting for it to finish, and then
turning it back on with lighting_controller.processing = 1.
Unlike our old system there is a hardcoded maximum luminosity. This is to discourage coders using large luminosity values
for dynamic lighting, as the cost of lighting grows rapidly at large luminosity levels (especially when changing opacity
at runtime)
Also, in order for the queueing system to work, each light remembers the effect it casts on each turf. This is going to
have larger memory requirements than our previous system but hopefully it's worth the hassle for the greater control we
gain. Besides, there are far far worse uses of needless lists in the game, it'd be worth pruning some of them to offset
costs.
Known Issues/TODO:
admin-spawned turfs will have broken lumcounts. Not willing to fix it at this moment
mob luminosity will be lower than expected when one of multiple light sources is dropped after exceeding the maximum luminosity
Shuttles still do not have support for dynamic lighting (I hope to fix this at some point)
No directional lighting support. Fairly easy to add this and the code is ready.
When opening airlocks etc, lighting does not always update to account for the change in opacity.
Explosions now cause lighting to cease processing temporarily.
Moved controller datums to the code/controllers directory. I plan on standardising them.
"Master","Ticker","Lighting","Air","Jobs","Sun","Radio","Supply Shuttle","Emergency Shuttle","Configuration","pAI" controller datums can be accessed via the debug controller verb (used to be the debug master controller verb)
Supply shuttle now uses a controller datum. Shuttles tend to arrive up to 30 seconds late, this is not a bug.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4537 316c924e-a436-60f5-8080-3fe189b3f50e