Commit Graph

62 Commits

Author SHA1 Message Date
MrPerson
9eee3e5067 First pass at a qdel() garbage collection system for tgstation
Works pretty well. If it can't GC something, it'll just del() it and be done.
Speed is amazing, holy shit.

New procs you should be aware of:
qdel(atom/movable) - sets up an object for garbage collection. Call this rather than del(atom/movable).
atom/movable/Destroy() - called right before the object is GC'd, so it still has a loc. Also called if the object is del()'d.
new controller - garbage.dm has all the details on this. Basically it nulls all references on GC'd objects and force del() them if necessary.
Generally speaking, objects should use Destroy() for behavior prior to deletion rather than Del(). You should also always call the parent so the object gets the right gc_destroyed var set.

ISSUES:
Tries to GC mobs atm. This actually works for new players, not so much for humans/monkies/simple_animals/anything. I'm guessing it needs to clear out their mind and HUD and maybe other things.
Gibbing is really bugged. It works, but the overlays just sit there for awhile and ugh. I'm very tempted just to del() mob/living and mob/camera and call it a day.
qdel() equipment doesn't unequip the item.
Pipes don't generally GC correctly. Debugging suggests they get referenced in many pipenets and that isn't cleared properly. However some do work fine. Need assistance here.
Bots don't GC, probably in the radio controller.
Lots of other shit doesn't GC but it's hard to find them because of the pipe spam.
I think I'm calling Destroy() twice by accident.
2014-02-23 14:55:12 -08:00
Giacomand
0824bbd599 * Tidied up the code.
* Changed some code to use the teleport datum features.
 * Fixed a broken check in the teleport datum.
2013-11-12 19:49:36 +00:00
Ikarrus
1518d285e7 Standardized spelling of all instances of "Centcom"
Centcomm/CentComm -> Centcom
centcomm -> centcom
2013-06-17 20:49:01 -06:00
giacomand@gmail.com
4989c88a22 Committing carn's modifications to events and other things. Full details below.
http://forums.nanotrasen.com/viewtopic.php?f=16&t=12245#p189186

Ported all the random events to Pete/Gia's event system:
>Event system now supports weighting. default is 10. a weight of 5 is half as likely as default, 20 twice as likely....etc.
>Increased the frequency of events (dust happens over 60% of the time though)
>tidied up some ninja code: ninjas now get ~5 objectives. So they are hardmode.
>made the gravity toggle into a random event
>event system now supports round-start events
>event system now supports holiday events
>event system now supports events which can only happen after the round has lasted a certain number of ticks
>event system now supports max_occurrences for events. Setting any event's max_occurrences to 0 will stop it randomly occurring
>events now support being fed associative lists inside new(). This allows you to override their variables easily.
>wormhole events no longer cause loads of lag. They are extremely deadly. wormholes should be avoided

Other:
>replaced the procs for fetching candidates for ninjas and aliums with /proc/get_candidates(be_special_flag), it returns a list of active clients with that be_special preference enabled.
>minor fixes to minds
>your memories are displayed to you at Login()
>removed aliens_allowed
>removed ninjas_allowed
>pick_n_take() is now more efficient (uses Cut() rather than Remove()


Things I added:

 - Made the pandemic call ..() instead of doing the checks itself.
 - Made the staff of animation use more charge.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5720 316c924e-a436-60f5-8080-3fe189b3f50e
2013-02-17 11:44:37 +00:00
johnsonmt88@gmail.com
b86d90c6c2 Couple of bugfixes:
Wizards can no longer cast spells when muzzled. Fixes issue 843.

You can no longer take bags of holding or mechs to the clown planet. Fixes issue 1061.

Removed the infared sensor from the autolathe construct list. Fixes issue 1092.
- The infared sensor already does nothing, the code for it seems to have been removed ages ago, so there's no harm in doing this.
- Commenting out the define caused a few problems that I couldn't quite figure out. I'll leave it for now with a warning.

Removed the ability for pAI's to set arrest status. Dead players really shouldn't be allowed to grief people like that. Fixes issue 1093.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5060 316c924e-a436-60f5-8080-3fe189b3f50e
2012-11-14 01:17:40 +00:00
petethegoat@gmail.com
8a7e4e4ed5 A little bit more away mission work. It should technically be playable.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4663 316c924e-a436-60f5-8080-3fe189b3f50e
2012-09-09 01:29:05 +00:00
elly1989@rocketmail.com
6e274cd395 New lighting, it's essentially just the old DAL system with a queue.
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
2012-08-25 16:06:57 +00:00
baloh.matevz
f0f803407a - Fixed a potential problem where the random teleportation thing that teleporters have a chance of doing would teleport you to a tile that is behind the transition edge.
- Fixed issue 470. You can now teleport while using the chameleon projector.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4466 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-17 07:05:03 +00:00
VivianFoxfoot@gmail.com
f1696eb47c Adds the framework for randomlly loading an additional external z-level at server start. Loading during the game should also be possible.
Fixes assorted bugs

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3559 316c924e-a436-60f5-8080-3fe189b3f50e
2012-05-06 18:04:31 +00:00
vageyenaman@gmail.com
f292079363 Bugfixes and stuff.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3394 316c924e-a436-60f5-8080-3fe189b3f50e
2012-04-02 23:39:53 +00:00
panurgomatic
32b2be1b5a - Simple event dispatch system.
- atom.forceMove() proc. Ignores density and other Move() restrictions, but calls Exited() and Entered()
- var/emagged moved to /obj/machinery class
- anyprob() helper proc.
- Mecha internal damage vars encapsulated.
- Mech Fabricators now require robotics ID to operate. Emag removes this restriction.
- Added Odysseus Medical Exosuit and it's parts. Has integrated Medical Hud and ability to mount medical modules.
- Added Sleeper Medical module for medical exosuits. Similar to common sleepers, but no ability to inject reagents.
- Added Cable Layer module for exosuits. Load with cable (attack cable with it), activate, walk over dismantled floor.
- Added another exosuit internal damage type - short circuit. Short-circuited exosuits will drain powercell charge and power relay won't work.
- You should be able to send messages to exosuit operators using Exosuit Control Console
- Gygax armour and module capacity nerfed.
- Exosuit weapon recharge time raised.
- Bugfix: EMP actually drains exosuit cell and damages it

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2780 316c924e-a436-60f5-8080-3fe189b3f50e
2011-12-23 10:54:23 +00:00
panurgomatic
3517810d11 - Added atom/proc/search_contents_for. Recursively searches through all contents of all atoms inside specified one for matches, returns a list of found atoms.
- Added teleporter datum. do_teleport proc is now just a wrapper for it.
- Added damage absorption to mechs.
- Added mecha step and turn sounds.
- Cleaned effects code a bit.
- Metal foam should now block air movement.
- Since sd_ lightning library chops areas into pieces, turrets now work with master area.
- Tried to optimize DesignHasReqs proc.
- Added plasma converter and laser cannon mecha equipment.
- Other cosmetic changes.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2463 316c924e-a436-60f5-8080-3fe189b3f50e
2011-10-31 22:09:36 +00:00