Commit Graph

58 Commits

Author SHA1 Message Date
Xhuis
527dddd95d Complete Revenant Rewrite (#18522)
I'm unhappy with the way revenants are right now, and my code for them is pretty unsatisfactory in comparison to what I know now. Although revenants will still fill the same role of just being spookier ghosts, they'll be a bit more passive - incapable, for instance, of giving diseases to people. The new revenants will be called umbras and will use vitae instead of essence.

Total change list:

    Revenants have been renamed to umbras. Essence has been renamed to vitae. This may be temporary.
    Umbra spawn events are now weighted higher and spawn an unoccupied umbra. Ghosts are alerted to the umbra's position and may interact with it to take control of it.
    Umbras' health is not based on vitae but has a hard cap at 100.
    Umbras have a passive vitae drain each tick, defaulting at 0.01. If the umbra runs out of vitae, they will die irrevocably. They also slowly regenerate health by doing this.
    When an umbra dies, they leave behind umbral ashes that reform after one minute. They're difficult to see and can be scattered by activating them, although they also have high research levels if you're fast enough.
    Harvesting vitae from critical targets no longer kills them. Harvesting a target in general prohibits them from being harvested until five minutes later, but they can be drained again after that.
    EMPs revitalize umbras and give them hefty amounts of vitae due to their physical nature.
    Umbras have four abilities: Toggle Nightvision, Discordant Whisper, Possess, and Thoughtsteal.
        Toggle Nightvision is self-explanatory.
        Discordant Whisper is identical to the original revenant's transmit.
        Possess allows the umbra to slip into a human's body unnoticed. While in their body, umbras will slowly drain vitae from the human at a tiny rate - not enough to cause harm, but enough to induce adverse effects in the clueless human. These effects intensify over time and eventually lead to the umbra being forced out of their host.
        Thoughtsteal paralyzes a living human for several seconds while the umbra steals their memories. After several seconds, the umbra copies the notes of the target's memories and turns invisible - the hapless victim is stunned for several seconds afterwards and can't be Thoughtstolen by the same umbra again. Umbras have an objective to steal the memories of 25% of the station's population.
    Salt piles have been added, created by salt shaker or just by splashing salt. These piles will prevent an umbra from passing and reveal them briefly if they try.
2016-06-17 10:58:07 +12:00
Cruix
ac0bad5d61 Added priority overlay system. (#18225)
Added priority overlays to atoms, which will not be removed when overlays are cut and will always remain on top when new overlays are added. This requires everyone to use add_overlay() and cut_overlays() instead of overlays += and overlays.Cut(). These procs are found in __HELPERS/icons.dm, and the priority overlay list is found in game/atoms.dm. Everything else is replacing deprecated overlay manipulation.
2016-06-17 10:11:53 +12:00
phil235
3b8af6f5ff Fixes grille/New() not calling ..()
Blood drips icons are now in blood.dmi instead of drip.dmi (which only had the 5 drip sprites).
Moved projectiles, guns, casings and ammo boxes to be in the right files. Please don't put your gun with its projectile, ammo casing and ammo box all the same file.
I split growing.dmi into 5 smaller files so we don't get close to the 512 icon limit again. Each seed has a var to indicate which icon file to use when planted.
Fixes code for heavy pulse laser projectile to be less awful.
2016-06-11 23:18:26 +02:00
phil235
b482764a19 - I made human/handle_blood() less shitty.
- We no longer leave a blood trail if blood_volume is below a certain level which depends on the brute damage received. This way dragging a wounded player does have a bad effect.
- We no longer give humans a second reagents var containing blood, and we don't put exotic blood in the mob's reagents. Now we don't store any blood substance inside the mob, we only have a blood_volume var. When we draw blood with syringe we create the reagent that match the type (blood reagent, or an exotic blood reagent)
- can't draw blood from mob if it's low on blood, so we can't empty a mob of its blood entirely.
- Removed the blood type preference appearing in character setting.
- blood pack automatically show blood type, unless manually labeled.
- removed bloody_hands_mob human var and same name glove var.
- Some animals now have blood (pets, goat, cows)
- hitting and dragging mobs with actual blood in their veins leaves blood on you and a trail on the floor.
- probably other stuff that I'll mention in the PR.
2016-06-04 17:33:16 +02:00
Joan Lung
2cfb2d8eed Layers are now defines (#17949)
* Layers are now defines

* this looks better

* GAS_phil_LAYER

* no message

* remove the three unneeded defines

* no message
2016-05-27 22:16:21 +02:00
c0
240fd5bc05 Plant Refactor: Genesis 2016-03-09 09:29:37 +03:00
Akke
fc88b4d589 changes destroy() to qdel(src) 2016-03-02 00:00:54 +00:00
Akke
72854bd973 Flies can no longer eat.
Flies must eat vomit.
Eating causes vomiting.
Janitors and Janitorborgs rollout.
2016-02-23 00:03:15 +00:00
phil235
8b2708ff9a Replaces holo tape and holo tape projector with holo barrier and holo barrier projector (children of the janitor's holosign creator). 2016-02-19 02:34:57 +01:00
duncathan salt
18b9d67ab5 Merge pull request #14364 from swankcookie/cockroach_guts_fix
Cockroach guts fix
2016-01-06 22:50:15 -06:00
swankcookie
d4c3048a31 Removes redundant anchor tags
Signed-off-by: swankcookie <__X__>
2016-01-06 22:08:17 -06:00
MrStonedOne
b50e8d2a63 removes a bunch of unneeded spawns
spawns have a high overhead.

I only went for easy targets, almost every spawn could be removed with a few subsystems in place to handle delays or cooldowns
2016-01-02 18:23:02 -08:00
KorPhaeron
a47b490d2b That was dumb 2015-12-26 07:00:20 -06:00
KorPhaeron
1a958e83b6 Stacking decals 2015-12-26 06:47:07 -06:00
KorPhaeron
6ad132df53 Stacking decals 2015-12-19 07:41:22 -06:00
MrStonedOne
a1bfb37f0c Tweaks lighting some more.
This should be ready to go.
2015-12-02 07:12:37 -08:00
phil235
d3ee910211 Makes effect system code more OOP.
obj/effect/effect is now renamed obj/effect/particle_effect for better usability.
datum/effect/system and /datum/effect/effect/system are now both /datum/effect_system.
Fixes a bug where wall mounted igniters (and other spark producing objects) didn't produce sparks sometimes.
Moved explosion_particles.dm into the effect_system folder, because it has effect_systems code.
2015-10-21 23:28:29 +02:00
bgobandit
e7555de606 Adds the ability for chemists to turn gibs into soap. Gibs can now be scooped. 2015-10-13 20:01:49 -04:00
phil235
0efb30434a Fixes not being able to move during jaunting if you are cuffed and pulled.
Greenglow decal no longer disappears after 2 minutes.
Fixes runtime with explosive implant activation.
Fixes stunbaton infinite cell charge, the baton now turns off if you try using it after its cell has been deleted somehow.
Fixes bloody pulled mob leaving a blood trail in zero G.
Shortens the guardian battlecry message when attacking to lower chat spam.
Items in Morph now disperses a bit on death instead of being all on the same tile.
After reaching a limit of 50 items, morph swallowing items deletes them instead of putting them inside the morph.
Monkeys can no longer modify the hand labeller's text to communicate.
Fixes carbon,radium,uranium 's reaction_turf creating multiple decal on a tile, it now checks if there's already a decal of the relevant type and (for radium and uranium) only transfers reagent to it if it finds one.
2015-10-08 00:48:00 +02:00
oranges
48f86bc9f5 clean up more non useful comments 2015-09-17 12:23:44 +12:00
Remie Richards
7b6bbbfed1 Further tweaks. 2015-09-13 16:17:50 +01:00
Remie Richards
4bb97067b2 Tweaks amount of footprints, and fixes some bugs related to footprints, adds shoetype tracking to footprints 2015-09-13 15:36:56 +01:00
Remie Richards
ff07337841 Bloody footprints! Human blood, Xeno blood, and Oil can now produce bloody footprints that fade off as the blood on the shoe fades. Affects gibs too. 2015-09-02 01:32:02 +01:00
duncathan
51c09f16bf makes all Destroy()'s return properly 2015-08-31 00:21:01 -06:00
Firecage
4688c2c969 Fixes proc arguments 2015-07-15 23:52:35 +02:00
Cheridan
87cd31c11f Merge pull request #10211 from Ikarrus/burntweaks
Destructible Clothing Tweaks and Fixes
2015-06-29 21:38:20 -05:00
phil235
5f3bcf9eaf Fixes a runtime with cleanable/shreds when it is burnt. 2015-06-28 21:09:54 +02:00
Ikarrus
7894263033 Destructible Clothing Tweaks
- Fixes runtime with burning decals without reagents
- Adjusts some burnable flags
- Removes minimum shred prob()
2015-06-27 13:33:33 -06:00
Ikarrus
8759f56f6f Squashed Commits 2015-06-27 00:09:16 -06:00
Ikarrus
3d5f126779 Destructible Clothing [WIP]
- Clothes can be set on fire and extinguished
  - Any item can technically be set on fire and extinguished now, but only clothes (and paper) actually burn right now
  - All of a mob's clothing are burned if the mob is husked by fire
- Clothes will also have a chance of being shredded if you are caught in a bomb blast
  - The bigger the explosion, the higher the chance they have of being destroyed
  - Outer layer clothing (headgear and exosuits) take the shock first, which absorbs some of the shock for the clothes it covers, according to it's bomb armor
2015-06-25 00:06:47 -06:00
MrStonedOne
bd6d51a0b5 Massive MC and subsystem rewrite
MC:
	No longer tracks a subsystem's cpu usage. This was basically worthless and took up space on the stat panel
	Can calculate wait down to a tenth of a decisecond to make it fps/world.ticklag agnostic
	Now allows subsystems to have a dynamic wait, that is based on a ratio of how long that subsystem has been taking to process(cost). (This system allows for upper and lower bounds, and an changeable cost delta for each subsystem)
	MC can now be told to init a zlevel

All Subsystems:
	Stats panel now allows child subsystems to pass it a message to add to its stats entry. All subsystems have been moved over to this system - This should cut down on subsystems having to copy and paste the stats proc in order to add to it
	All subsystems now properlly handle being given a zlevel in their init proc

Subsystem changes:
	Air:
		Added air to the dynamic wait subsystem. upper bound: 50, lower bound: 5, cost delta: 3 times process cost
		Air now fires 4 times faster when it can do so without lagging things up
		Pipenet has been merged into air
		Atmos machinery now processes with process_atmos(), ticked by air, not machinery.
		Hotspots (the fire object) are now object pooled
	Pipenet:
		Deleted, added to air
	Machinery:
		Moved all atmos calcualtions in all objects's process() to process_atmos().
	Lighting:
		Added Lighting to the dynamic wait subsystem. upper bound: 20, lower bound: 5, cost delta: 3 times process cost
	Ticker:
		Fixed ticker not updating the lobby panel when game start delayed
		Fixed the game start timer updating rapidly from queued fires when game start delay is removed
	Garbage/qdel:
		qdel will now limit its process time to 2ds a fire.
		qdel can now be given hints as a return to Destroy() as to what should be done with the object.
		the options are:
			queue: (default) this is the normal behavior.
			letmelive: old default to non-null/zero. does nothing with the object
			iwillgc: functionally the same as above, mainly to let people working with objects know that the object will not be queued for GC checking
			harddel: this will queue the object to be deleted without storing a soft reference, mainly to save locate() processing time.
			harddel_now: this will del() the object. To allow for a clean removal of every del() not in qdel
		All objects have been updated to the new system, harddel and iwillgc was not added to any new objects.
		Fixed some objects not GCing because they didn't properlly clear references in Destory()
		Fixed some objects getting qdel'ed preventing other objects from getting GCed because they did not null their reference to that object.
2015-04-29 02:00:25 -07:00
Iamgoofball
c06ad7e6b8 moved process() to datum. made /datum/reagents/ process instead of the containers. 2015-04-07 17:13:59 -07:00
Iamgoofball
54154bec12 Merge branch 'master' of https://github.com/tgstation/-tg-station into explosive 2015-04-07 16:21:07 -07:00
phil235
0b403b3b03 Fixes lack of dna in old blood.
Fixes some comments about blood procs in atoms.dm
Small tweak in xeno blood blood_DNA.
2015-03-31 19:48:44 +02:00
Iamgoofball
434265afa0 Reagent Decals 2: Black Powder Boogaloo 2015-03-22 02:04:31 -07:00
Mandurrrh
48daa155d7 Fixes #8116 trails bug 2015-03-04 19:53:11 -05:00
paprka
d6dce069f4 finally actually fixes the blood decals 2015-02-01 00:29:37 -08:00
paprka
0b64a23310 fixes blood drips 2015-01-31 23:40:27 -08:00
paprka
a661e58281 Merge branch 'master' of https://github.com/tgstation/-tg-station into ointmentandshit
Conflicts:
	_maps/map_files/TgStation/tgstation.2.1.3.dmm
2015-01-31 22:03:00 -08:00
paprka
f071655ea4 updates and optimizations 2015-01-24 01:12:57 -08:00
paprka
1cdd5f011f blood for the blood god 2015-01-20 19:17:59 -08:00
Razharas
7758a0afed Ok now explosions shall work properly
Changed severity to target, make items not destroy themselves on
severity lower than 1, all that stuff
2014-12-05 23:21:48 +03:00
Razharas
ff456ebaf4 Unwinded most of shit
Meh
2014-11-19 21:36:45 +03:00
Firecage
22743b77f4 Adds asbolute paths to some effect files. 2014-08-07 18:59:06 +02:00
Cheridan
f83f1932b2 Meteor code uses OOP principles a little better now
Adds new types of meteors with different effects.
Meteors drop some ore when they hit.
2014-04-23 01:37:44 -05:00
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
VistaPOWA
b5fff895ee Makes decals disappear after an explosion
Fixes runes, dirt, blood, etc remaining and floating in space after an
explosion.
Gibs are excluded from this change.
2013-09-30 20:19:41 +02:00
VistaPOWA
881a895bd6 removes extra unused code 2013-09-17 18:03:01 +02:00
VistaPOWA
5a2bb3fbf7 Finalizing blood trails
Makes trail_holder a child of cleanables instead of blood (this is to
allow add_blood turf proc to spawn blood splatter on blood trails, also
other kinds of blood effects), also cleaned up the blood code a bit.

Big props to Aranclanos, Cheridan, Pewtershmitz and all other coders on
#coderbus for making this happen.
2013-09-17 00:57:37 +02:00
VistaPOWA
1da8b659ff blood trails now stack
--DO NOT MERGE STILL WIP--
Makes blood trails use overlays, the overlays are contained in a holder
object. DNA is now properly added to them.

todo: redo light, xeno light and xeno heavy trails. help of spriters is
welcome.
2013-09-12 19:25:21 +02:00