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.
*TABLEPASS was already totally obsolete.
FPRINT was used, but it was on virtually everything anyway.
Removes those flags from every instance where they were used. Also assigned and removed other flags where it made sense.
If it is desired, I can revive the flag as NOFPRINT, which would retain the original functionality, though inverted. That way it would be be used only where it was intentional (holodeck items could use this for example).
This ToyAI has been added to the AI subversion bundle, note that since a traitor with this bundle already gets a hacked AI module there's no added benifit to it being there, its just for whimsical traitors who'd enjoy adding a little spice to the AI or false flag the changes as a badmin ioning an AI.
Modules can just run install(target,user) and everything will work fine.
Upload computers cleaned up quite heavily. Less copy+paste. Removed that pointless "Open access panel" verb they had.
Law changing procs moved from mob/living/silicon/robot and mob/living/silicon/ai to mob/living/silicon. This means clear_inherent_laws(), add_inherent_law(), etc. This is what the new file is for. Doesn't change anything since they both had exact copies of the same procs.
NOTE: This commit doesn't change the maps, so don't checkout to this without the next one.
-Made it so that any law module, which requires user input, refuse the install if the input is null. By then making all the default laws/name of these modules null, the user will get a message if they try to upload a law without modifying it first.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4655 316c924e-a436-60f5-8080-3fe189b3f50e
-Almost every instance of 'for(mob in world)' has been killed. Because GODDAMN was it being run a bunch. Instead, a series of global lists have been made, and they are all handled auto-magically through New()'s, Del()'s, Login()'s, death()'s, etc...
Lists are as follows:
-mob_list : Contains all atom/mobs by ref
-player_list : Like mob_list, but only contains mobs with clients attached
-admin_list : Like player_list, but holds all mobs with clients attached and admin status
-living_mob_list : Contains all mobs that ARE alive, regardless of client status
-dead_mob_list : Contains all mobs that are dead, which comes down to corpses and ghosts
-cable_list : A list containing every obj/structure/cable in existence
Note: There is an object (/obj/item/debuglist) that you can use to check the contents of each of the lists except for cables (Since getting a message saying "a cable," x9001 isn't very helpful)
These lists have been tested as much as I could on my own, and have been mostly implemented. There are still places where they could be used, but for now it's important that the core is working. If this all checks out I would really like to implement it into the MC as well, simply so it doesn't check call Life() on every mob by checking for all the ones in world every damn tick.
Just testing locally I was able to notice improvements with certain aspects, like admin verbs being MUCH more responsive (They checked for every mob in the world every time they were clicked), many sources of needless lag were cut out (Like Adminwho and Who checking every single mob when clicked), and due to the cable_list powernet rebuilding is MUCH more efficient, because instead of checking for every cable in the world every time a powernet was broken (read: A cable was deleted), it runs though the pre-made list, and even with a singulo tearing all the way across the station, the powernet load was VERY small compared to pretty much everything else.
If you want to know how any of this works, check global_lists.dm, there I have it rigorously commented, and it should provide an understanding of what's going on.
Mob related in worlds before this commit: 1262
After: 4
I'm helping
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4179 316c924e-a436-60f5-8080-3fe189b3f50e
-Redid icons to be more optimized at compile by setting icon = 'icons/folder/icon.dmi' instead of just icon = 'icon.dmi', meaning that Dream Maker doesn't have to search through every single file for every single .dmi. This shouldn't lead to any errors because of how I went about it, plus the fact that Dream Maker would have freaked out if I screwed something up. Also moved around 2 icons that weren't sorted well.
r4146 compile time: 1 minute, 40 seconds
r4147 compile time: 45 seconds
[VGTG]
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4147 316c924e-a436-60f5-8080-3fe189b3f50e
It condenses hundreds of identical runtimes into one, providing a much more user-friendly list to work off of. It may be poorly coded but it is fully functional. Just copy/paste runtimes into input.txt, run the exe and the condensed runtimes will be in output.txt.
Bugfix:
Fixed a very-poorly coded proc that could cause infinite loops.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4081 316c924e-a436-60f5-8080-3fe189b3f50e
- Hopefully this will cut down on the server spamming/crashing escapades happening on other servers. (This wont stop that from happening, this just makes it less severe)
- Some of the sanitizes were probably unnecessary, but better safe then sorry.
Added MAX_NAME_LEN constant which is initialized to 26.
- Please use MAX_NAME_LEN instead of typing in 26 when cutting inputs short. 26's are annoying when they have to be changed and you have to hunt through over a hundred files and tens of thousands of lines of code to find them all.
Moved uplink_kits.dm to code/game/objects/storage
Moved uplinks.dm to code/game/objects
- The stuff inside uplinks.dm could really be chopped up and split into separate dm files but this will do for now.
*********************************************************
**********************Important**************************
*********************************************************
When you create code that asks the user for an input consider whether or not it gets shown to the user through html or the like.
If it does please sanatize() or strip_html() it. Also use copytext() to cutoff spam by using MAX_NAME_LEN and MAX_MESSAGE_LEN as the cutoff var.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3652 316c924e-a436-60f5-8080-3fe189b3f50e
- The alarm needed some more userfriendlyness:
* Spelling sorted
* Turning off PANIC SYPHON now sets scrubbers to scrubbing (default) instead of off.
* Instead of the stupid timeout and VENT NOT FOUND HURRDURR they will just get removed from the list. They were clogging that vent list up as fuck
* Vents pressure settings now have an extra href which resets the vent to ONE_ATMOSPHERE kPa (101.32 or whatever it is)
- The "Outlet position is obstructed" error message when opening exofab now only appears if the turf to south is obstructed, not to east like before.
- AI Modules use attack_self instead of attack_hand
- Fixed chatspam with reverse() and made the explode function use the builtin ss13 one instead of my custom, it proved to be faster.
- Added my self to the changelog, because I can!
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3367 316c924e-a436-60f5-8080-3fe189b3f50e
Moved a few of the computers into their own files.
Security records now shows rank on the browse screen.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2909 316c924e-a436-60f5-8080-3fe189b3f50e
Fixed corporate having null origin tech
Fixed the desc on the science goggles fuck you superxpdude dont touch my shitty gimmick items without asking
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2541 316c924e-a436-60f5-8080-3fe189b3f50e
1: You are expensive to replace.
2: The station and its equipment is expensive to replace.
3: The crew is expensive to replace.
4: Minimize expenses.
Currently adminbus only, someone can add tech_origins to it later.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2283 316c924e-a436-60f5-8080-3fe189b3f50e
-biogenerator added to the hydroponics
-roller beds added to surgery
-trashbag added to janitor's closet
-candles added to chaplain's closet
-continued cleanup of machines code
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1902 316c924e-a436-60f5-8080-3fe189b3f50e