Commit Graph

8 Commits

Author SHA1 Message Date
sieve32@gmail.com
7bf6788082 -OPTIMIZATION TIME
-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
2012-07-26 03:04:05 +00:00
baloh.matevz
1f9a77c377 Update to feedback gathering:
- Rounds that end in invalid ways will now be logged,
- Round results are logged

- Rounds that don't end with a code-determined reboot will still not log at all (so rounds that end in a crash will not log at all - not even round start or mode.)

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2457 316c924e-a436-60f5-8080-3fe189b3f50e
2011-10-30 18:42:19 +00:00
vageyenaman@gmail.com
eee36e4f7e Okay, this is a pretty big revision!
Viruses:
     The virus system was COMPLETELY reworked.

     Good news, Virologists! This means people can now be infected by multiple viruses at once. Some of the virus-spreading protocols were tweaked to support this change, and as a result, they are now considerably more infectious. I also changed some background reagent variables to better support DNA, blood type, and virus combination.


Turrets:
     Fixed some lingering bugs that would bog down the global event processor.


Changelings:
     People turned into "husks" after being drained of their DNA by changelings can no longer be cloned.


Miscellaneous:
     I tweaked a LOT of mob code. This shouldn't have any noticeable impact on anything, but was required in order support the virus overhaul.



git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1753 316c924e-a436-60f5-8080-3fe189b3f50e
2011-07-02 04:00:25 +00:00
rastaf.zero@gmail.com
d6e0f1cf22 Freaking big GAMEMODES UPDATE.
I have done lots of work to make selecting players for special roles be fair.
- New options preferences: "be traitor", "be changeling" and so on for all special roles.
- Now you can have job of AI/cyborg in preferences and do not lower your chances to become wizard/changeling/etc. And vice-versa: you do not have to select AI in your preferences to have non zero chance to play malf.
- Jobban from syndicate bans player from any special role (including malf AI, cult, etc).
- Fixed bug with changeling round not ending sometimes.
- All special roles were tuned to work better as admin-driven event.
-- All adminmade special characters will be listed at the end of round of any type.
-- All adminmade special characters are fully functional with following exceptions:
--- The ending conditions are determined at round start, i.e. you cannot end revolution by killing wizards and malf AIs (however, with nuke you can end anything).
--- The cultists cannot get their special objectives.
--- The malf AI can hack the APCs but without any profit.
--- The syndicate operatives must obtain the nuke/working code from admins.
--- As before, nuclear explosion ends round. Even if nuke was used in wrong place.
- Fixed thingy like "Not enough players for revolution game mode. Restarting world in 5 seconds."
- Changeling wont get objective "absorb X genomes" when there are less that X players in game.
- proc/equip_if_possible now has return value, procs like equip_revolutionary (giving a flash) should be more reliable.
- There are no fake wizards anymore. The research staff have to kill ALL wizards on order to win, even adminspawned ones. ("give spell" verb works as before, not making a spellcaster to actually be wizard).
- The semi-new game mode: traitor+changeling. Just like regular traitor mode plus one changeling. Round ends when the shuttle reaches centcom. Option for config.txt: "PROBABILITY TRAITORCHAN".
- Successful malf AI now have 60 seconds to choose to explode the station or not (some players still have to rejoin game to have their new verbs shown in Malfunction tab).
- Monkeys mode fixed, monkeys wouldn't randomly cure anymore.

For admins:
- New powerful mind editor oriented to mixed rounds.
-- Setting someone as special character (like wizard) does not equip him/her automatically. You have to do it it next step. Note, that in case of wizards and nuke operatives their old dress will be deleted! If you do not want it you shall use "undress" link.
-- Only operatives, head revs and cultists have their objectives set immediately.
-- You can unemad borgs!
-- You cannot unemag borgs because calling mind editor for nonhumans is blocked atm.
-- many other useful features.
-- you can fix burned out flashes from mind editor.
-- first assign the new malf AI/wizard then demalf/dewizard old one or round will immediately end.
- if delete the nuke bomb during its downcounting round will stuck. Using "edit ticker variables" set ticker.mode.explosion_in_progress = 0.

For coders:
- /datum/game_mode/malfunction/AI_Module renamed to /datum/AI_Module. Reason: What. The. Fuck.

Unrelated fixes:
- Blueprints can create areas up to 300 tiles (was 100).
- Cyborgs wont leave backpacks at spawn point anymore.
- Fixed bug in preferences causing preferences files to be huge.
- Diseases can infect again.
- The option "SQL_ENABLED 0" now works in config.txt.
- fixed critical bug on assassinate objective.

Bugs:
- We have a bug with job distribution for people who haven't any available jobs in their preferences. Players tends to group by jobs.
- For example, if we have 3 players they with hight chances will got same jobs. And probability of having one engineer and one medic _exactly_ equals _zero_.
- I am not sure if my changes made that bug worse. Anyway I MUST do this commit. Bug will be fixed eventually. Maybe.


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1703 316c924e-a436-60f5-8080-3fe189b3f50e
2011-06-21 21:22:23 +00:00
rastaf.zero@gmail.com
2c901c71bb Monkey mode now can be ended by robusting all infected monkeys (including Pun-Pun) along with leaving on the shuttle.
Admins can switch mode to one from modes game actually can run, not from hardcoded list.


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1401 316c924e-a436-60f5-8080-3fe189b3f50e
2011-04-06 20:39:08 +00:00
rastaf.zero@gmail.com
9516507370 People monkeyized by admins/jungle fewer won't loose genetic mutations and diseases.
People bitten my monkey get infected by jungle fewer.
Some other improvements for monkey mode.


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1398 316c924e-a436-60f5-8080-3fe189b3f50e
2011-04-06 18:42:47 +00:00
rastaf.zero@gmail.com
03e677a807 Monkey mode now wont list name->key after the end of round.
Monkeys during monkey mode can use detective's revolver wearing hat and suit (without uniform).
Fixed some runtime errors.
Added ability for admins to disallow connecting for guests.


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1395 316c924e-a436-60f5-8080-3fe189b3f50e
2011-04-06 17:01:58 +00:00
mport2004@gmail.com
706ad091cd The AI/bots now leave hidden fingerprints on things they touch.
The game will not load the empty goon and beta tester files on startup.
Moved modes that are broken/unfinished into the unused section.
Powersinks will eat more power
Firedoors should be fixed now.
Engineering solars moved away from engineering.(there is currently an empty room where one was. I dont have any good ideas for things to put in there atm so if you want to add something go ahead)


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1017 316c924e-a436-60f5-8080-3fe189b3f50e
2011-02-10 23:16:47 +00:00