Commit Graph

42 Commits

Author SHA1 Message Date
Fox-McCloud
8f89792c2a preventative measures 2015-07-16 03:00:40 -04:00
Fox-McCloud
5740d2e945 runtime fix 2015-07-16 01:26:20 -04:00
Fox-McCloud
71d2557f78 runtime+bug fix 2015-07-12 22:26:52 -04:00
Fox-McCloud
a1c0a9ce70 fixes 2015-07-12 18:06:48 -04:00
Fox-McCloud
04511d3f0b Blob Mode Major Overhaul 2015-07-12 02:45:40 -04:00
Fox-McCloud
0dbea7621f The Great Del() Cull of 2015 2015-07-09 02:48:34 -04:00
Fox-McCloud
6e87b96501 Pass 3 2015-07-08 01:34:53 -04:00
Tigercat2000
3a45d52fe0 Fix remaining non-returning Destroys()
Plus a little refactor to mining flaps and spacepod doors- they now use
CanAtmosPass instead of manually setting the turf to no-atmos-passing
2015-07-06 09:20:39 -07:00
Tigercat2000
d20298e996 -tg- atom pooling system, qdel changes
This commit first and foremost ports the -tg- atom pooling system, and
removes the old experimental system entirely.

Secondly, this PR modifies the qdel system to use a -tg- lookalike
"destroy hint" system, which means that individual objects can tell qdel
what to do with them beyond taking care of things they need to delete.
This ties into the atom pooling system via a new hint define,
QDEL_HINT_PUTINPOOL, which will place the atom in the pool instead of
deleting it as per standard.

Emitter beams are now fully pooled.

Qdel now has semi-compatibility with all datum types, however it is not
the same as -tg-'s "Queue everything!" system. It simply passes it through
the GC immediately and adds it to the "hard del" lists. This means that
reagents can be qdel'ed, but there is no purpose as of yet, as it is more
or less the same as just deleting them, with the added effect of adding
logs of them being deleted to the garbage collector.
2015-06-21 15:47:57 -07:00
Robertha89
4366f5f819 Updating Resource to /tg/ standars along with factory
title, makes resource nodes far better. should pick up the drag that is costing resources to send blob to corpse.
2015-05-10 02:24:12 +02:00
Fox-McCloud
a8ead35ea5 Fixes Blob Zombies 2015-05-07 17:35:43 -04:00
Fox-McCloud
d1932c0f64 [Goonchem] Transition to Goonchem 2015-03-27 05:41:45 -04:00
Markolie
3f80f66411 Simplify get_candidates, minor adjustment to antag ages 2015-02-12 19:09:05 +01:00
Markolie
74e97188c6 Fix blob jobban oversight 2015-02-01 22:16:17 +01:00
Markolie
c4f11b6693 Extra jobban checks 2015-02-01 16:38:17 +01:00
Markolie
8fb90212b8 Blob event fixes, toggle preferences age check, jobban check 2015-02-01 14:19:11 +01:00
Markolie
37b86cd8f1 Xenos gamemode rework 2014-12-13 02:08:22 +01:00
ZomgPonies
64554340f4 Modifed faction system to use a list instead. Mobs can belong to multiple factions at once. 2014-07-19 13:26:55 -04:00
alex-gh
8f66499931 Blob reagents rebalance.
Blob mobs now spawn a FUN reagent mix on death instead of blob spores.
2014-06-18 02:27:36 +02:00
alex-gh
f0c7296b5d Blob balance tweaks.
Blob will now eat items placed on it.
Blob does not produce light anymore (take that dionas)
Shield blobs now have same brute resist as normal blobs
Attempted to lower the CPU load of the "Pulse" proc.
2014-03-24 02:46:47 +01:00
ZomgPonies
950b5bf8d7 Make blob actually vulnerable to fire sometimes maybe? 2014-03-06 22:20:29 -05:00
ZomgPonies
1ab8df4b13 Garbage collection fixes 2014-02-19 20:24:31 -05:00
ZomgPonies
85de812986 Blob zombie fix 2014-01-25 18:58:49 -05:00
Incoming
1ad02af888 Blob Zombies!
Blob spores that pass over the dead will now couple with the corpses to create blob zombies that are stronger and more resiliant than the spore alone. Should the blob zombie fall the original corpse is recovered and just as cloneable as it was before infection. These are simple animals not under the control of anyone.

Blob zombies will occur automatically if a blob finds a corpse under it and it's not already a zombie. Blob zombies have a base 80 health (normal blobs have 40) and gain additional health if the host body is wearing armor. They don't however actually gain the normal benefits of wearing the armor.

Blob zombies attack for 10 to 15 damage per strike, as opposed to the paltry 2 to 4 a hostless spore does.

Why this is good for the overmind:
The overmind cannot directly command the creation of zombies but can rally spores to a corpse's location to largely assure it will happen by itself. Blob zombies still follow rally spore commands and still count towards a factory blobs spore limit. As previously shown they're far more robust than spores and also deny the crew the ability to clone the victim until the zombie is defeated.

Why this is good for the crew:
Remember when the warden kamakazied the blob at the start of the round only to be engulfed and killed with the entire armory in his backpack? You can get those guns back now, because the warden's corpse will soon be moving to a very recoverable location! This also promotes not letting people die pointlessly to the blob or at least dragging corpses away from the blob (and hopefully to genetics) so they can't be infected.

Conflicts:
	code/game/gamemodes/blob/blobs/factory.dm
	icons/mob/blob.dmi
2014-01-25 18:35:16 -05:00
ZomgPonies
031f67110b Fixes some sounds 2014-01-16 05:23:32 -05:00
alex-gh
1386fc143e Doubled blob spore production rate 2014-01-13 06:36:31 +01:00
alex-gh
5206f508c1 Slowed down blobspore generation by 3 times 2014-01-03 19:45:39 +01:00
alex-gh
8c7dd0e691 Halved blob ressource generation 2014-01-03 19:43:48 +01:00
ZomgPonies
ab993274e6 blob balancing 2013-12-28 10:49:22 -05:00
alex-gh
0c52a6ba25 Rebalanced the blob to improve chances of the crew. 2013-12-23 07:08:14 +01:00
ZomgPonies
86ce80d9e1 New respawn system is in yay! 2013-11-28 16:44:48 -05:00
ZomgPonies
e3556791a7 Fancy Alt-Clicking for blob and others 2013-09-24 20:12:12 -04:00
ZomgPonies
a935863200 Made blob gamemode work, removed ninjas because needs overhaul, optimized some strings 2013-09-08 11:39:33 -04:00
Kortgstation@gmail.com
a55b8b6ad7 Ported the last of the critters to simple_animal.
Removed all critter code/replaced it with their simple animal paths where applicable.

Replaced the critters on the maps with simple_animal versions.

If I missed any vars/icons/etc when I ported them over, let me know.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5210 316c924e-a436-60f5-8080-3fe189b3f50e
2012-11-27 19:06:15 +00:00
elly1989@rocketmail.com
27a53e211b removed client/var/be_alien and client/var/be_pai, everything now uses client.prefs.be_special
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5126 316c924e-a436-60f5-8080-3fe189b3f50e
2012-11-19 18:35:14 +00:00
elly1989@rocketmail.com
4073ac9b00 Replaced all 'file.extension' references with 'relativepath/file.extension' using a script by thvortex of ss13-daedalus.
All credits to the author for this handy little script.
I Committed the modified python script to tool directory. Although it needs to be in the root folder of your repo to work.

To notice the improved compile times, in dreammaker go to Build > Preferences > and untick "automatically set file_dir for subfolders"

If this commit inteferes with any large projects just revert it, do your thing, then rerun the script. Easy-peasy.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4488 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-18 16:33:40 +00:00
elly1989@rocketmail.com
81bff7c5f5 Important!
Minds part2 - Carn loses her mind.

The way datum/mind stuff works has been changed a lot. I really can't explain everything. If you have any questions it'd just be easier if you leave a comment or ask me in coderbus.
Generally, minds now represent IC characters rather than following a client around constantly. Minds can change owners, mobs, (names WIP).

Technical babble:
The var/current and var/original variables of the mind datum must always be of type mob/living (or null). Please do not mind.transfer_to(ghost_mob). If you want to ghost somebody use ghostize()! It will do all the technical stuff for you.

mob/dead/observer/var/corpse was removed. mob/dead/observer/var/mind is now used as a reference to the last mind the player had (so respawning code has something to reference), but also because mind.current is a far more useful way of tracking a corpse. If somebody triggers a mind.transfer_to() call on your corpse, your mind will be tranfered to another mob/living or something...that will then be considered your corpse. This could allow for more interesting mind_transfers. For instance, the "raise corpse" rune ghostizes any player in the corpse to be raised and selectes a random dead player to take possesion of their character! The person possesing them will have all of their memories, objectives, etc. The poor guy who was originally the owner cannot re-enter body if there is another player in his body...but if that player is ghosted he can once again return. Exorcisms anybody?

Changes to cloning and hydroponics. I will likely have to rework these later as they're hacky as hell right now.

A lot of stuff is now handled by Login/Logout rather than in hundreds of different places. One such example, mind datums get their variables updated at Login and Logout.

Fixed a few minor bugs. I'll update the issues manually in a bit because I literally cannot think atm.

TL;DR guide:
-If you want to make somebody a ghost use ghostize(). Or you will need to find a doctor to stitch your bits back on. :)
-You don't have to worry about making minds. Simply doing key="carnwennan" or whatever will either: A) make a new mind and initialise it if there isn't one or B) take possession of the mind currently attached to the mob.
-It's safe to transfer a mind even if a key isn't in-body (e.g. they are ghosted/admin-observing etc!) Minds have an active variable which tracks whether they are currently synced with a key. This is to avoid dragging ghosts back into their bodies when say, a wizard mind_transfers them.
-Transferring a mind whilst var/active=1 will cause the following: mob.key = mind.key. So no need to do that separately (in fact you'll lag things if you do, so don't)
-If you do want to initialize a mind manually, say if you don't have a client to login to the mob yet, simply do new_mob.mind_initialize(). Simple! When someody is logged into that mob they will take ownership of the mind and it will sync up.

NOTE: a lot is probably broken since this is a pretty massive change. Please let me know asap (with actual info! Shouting at me, "IT BORKED HALP", doesn't help)

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4342 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-08 20:51:55 +00:00
elly1989@rocketmail.com
fb600f9bce Ok, part 1 of this huge mind datum fix. I need to run over the next part again because I've made a lot inconsistencies in it. This is sort of all the misc stuff that got tidied up whilst I was trying to get my head around how everything related to eachother.
This part focuses on:
-structuring the way silicon mobs initialise upon login (there was some hideous copypasta in Login() and New() which used spawn() to change the order of the calls so it was all jumbled up. I think I've got it sorted now.
-Borgs var/real_name was not initialising as "Cyborg". Meaning the name checks were kind of borked.
-Ghosts are now deleted at logout if they no longer have a key. This will stop unneeded ghosts being left lying around. It will not delete ghosts with keys assigned (so people can't respawn or anything). Removed all the del(ghost_ref) stuff I could find. Generally movign the key from a ghost should be the last thing you do as the ghost will be deleted by Logout. However I've put it in a spawn() to hopefully avoid coders accisentally using it in a way which causes runtimes.
-Fixed clone-plants spawning dud potato-people left, right and centre. They'll now dump seeds if it fails for whatever reason.
-Cultist and Rev status are removed at mob/living/silicon/Login() rather than having to be called on a special-case basis everywhere. This may not be necessary when this stuff is finished.
-Removed a bunch of :
-Commented mob/living/Login() with the rest of the antag-indicator code from cloning.dm and hydroponics.dm for any coders whom feel brave/suicidal to fix the related issues

Next on the agenda, replacing mob/var/original_name with datum/mind/var/name to fix the ticker runtimes
Then, fixing mind/proc/transfer_to(mob) once and for all. (There are issues with duplicate minds, role updates, inconsistent initialisation etc etc *yawn*

There's probably a few obscure bugs in there somewhere. Might want to hold off on the updates for a bit. Coderbus will likely spot them all by the end of the week.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4322 316c924e-a436-60f5-8080-3fe189b3f50e
2012-08-05 15:29:15 +00:00
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
sieve32@gmail.com
459c558898 -Make holodeck eswords a child of obj/item/weapon/holo instead of regular eswords, clumsy check removed as a result, and you can no longer do things like cutting through walls or doors or what have you. (Fixes Issue 665)
-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
2012-07-23 00:48:51 +00:00
mport2004@gmail.com
88c867ea25 Fixed a supply shuttle runtime due to the stamping missing a null check.
Added a null check to cleanbots and new player preferences.
Did a bit of blob and antimatter work.


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3919 316c924e-a436-60f5-8080-3fe189b3f50e
2012-06-26 01:20:19 +00:00
mport2004@gmail.com
69753b0190 Worked on blob mode a bit
Readded the AM stuff to the dme
Added another explosion edit from Willox


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3903 316c924e-a436-60f5-8080-3fe189b3f50e
2012-06-24 00:03:31 +00:00