Commit Graph

26 Commits

Author SHA1 Message Date
KorPhaeron 7cebbae3f6 Foamed Metal 2016-01-24 19:40:02 -06:00
xxalpha 6aaf9c43a6 Made foam transparent and changed its layer to be above mobs. 2016-01-22 23:57:18 +00: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
phil235 47909d525f Changes smoke to behave more like foam. Each covered tile has one smoke cloud. This makes smoke clouds much less random, especially in terms of reagent application.
Also smoke reaction now uses the TOUCH method instead of VAPOR, to differentiate smoke and foam. Mob without internals or gas masks also ingests reagents in the smoke.
Moved nanofrost smoke code to effects/effect_system/effects_smoke.dm
2015-10-15 21:52:37 +02:00
Razharas ad9fa24d5f Merge pull request #11515 from xxalpha/PLmD_69pXpk
Tweaked foam spread logic, foam layer.
2015-09-01 18:33:22 +03:00
xxalpha d0701c4088 Tweaked foam spread logic, foam layer.
Better

Changelog

PERFORMANCE

get_turf(loc) is still superior
2015-09-01 00:33:33 +01:00
duncathan 51c09f16bf makes all Destroy()'s return properly 2015-08-31 00:21:01 -06:00
phil235 d2a4024e7f reagent reaction() now use more methods. Instead of just INGEST or TOUCH, we now have INGEST (for injection, ingestion), TOUCH (for splashing), PATCH (for patch application and blob attack), and VAPOR (for smoke, foam and spray application).
- TOUCH no longer transfer reagent by default, it's now only used for touch based effect like being flammable when touched by fuel or you and your stuff being acided when touched by acid).

- PATCH does no transfer of its own (but actual patches code do make a transfer) but is used for touch effect that ignore clothes and protection (blob attacks, patches effect going through hardsuits)

- VAPOR does reagent transfer but it takes into account clothing protection

Fixes a typo in humanoid/get_permeability_prot
Fixes acid splashing on objects not destroying it. Fixes acid splashing on turf not destroying objects on the turf.

Changed damp rag smothering code a bit.

Blob Smoke now doesn't do anything.
2015-08-09 14:23:12 +02:00
phil235 6a0be8b9a3 Fixes sleeping smoke never disappearing. Also switching processing.Add(src) to processing |= src.
Makes the empty space on the chem bottles sprites clickable.
Fixes a runtime with reagent_containers/throw_impact()
2015-07-31 15:01:35 +02:00
phil235 3e9ab4e3c1 Merge branch 'master' of https://github.com/tgstation/-tg-station into SmokeFoamBuff
Conflicts:
	code/ATMOSPHERICS/atmospherics.dm
	code/__HELPERS/unsorted.dm
	code/game/objects/items/weapons/tanks/watertank.dm
	code/modules/reagents/Chemistry-Recipes.dm
2015-07-16 14:09:12 +02:00
Firecage 4688c2c969 Fixes proc arguments 2015-07-15 23:52:35 +02:00
phil235 d4cdd8eaa1 iron foam is now blue steel color just like aluminium foam.
Fixes metal foam from backpack firefighter watertank.
Fixes nanofrost not freezing shut vent scrubbers.
Atmos backpack watertank now starts full of water.
Change foam layer to Objlayer +0.1 so that it is above foammetalstructure so it doesn't hide the dissolving animation and also above tables.
Buff foam and smoke: smoke/foam contains four times the amount of reagents that was inserted in them, for balancing.
Add a little more smoke clouds for tear gas grenade.
Removed the no longer needed max_lifetime smoke var.
Reagent_dispensers (watertank) now show how much reagents they have left upon examination.
Fixed some code formatting in reagent_dispensers.
Fixes nanofrost temperature lowering effect that wasn't working.
Adjusted reagent volume in blob spore smoke because of the buff.
Change to sorium and ldm: effect varies with created volume.
If you are close to a powerful vortex you are thrown, otherwise you are just moved instead.
Vortex blobs now only make you step if you are far from it when reaction hits, otherwise it throws you. The vortex blob range gets +1 to compensate. Also the range and effect depends on the reagent volume which means lower effect for blobspore smoke.
2015-07-09 19:49:06 +02:00
phil235 ac63896910 - Foam/moke lifetime is no longer affected by reagents volume.
- Remove show_message argument from blob reagent reaction_mob()'s and remove the if(show_message) send_message(). Now send_message is called directly on each blob strike.
- Changed blob reagent effects to depend on volume so blob spore smoke isn't deadly.
- Breathing smoke now reduces its life expectancy and calls reaction(INGEST) with the accurate amount of reagent.
- Adjusted the effects on mobs of some other reagents.
- Adjusted reagent amounts in chem grenades.
2015-06-24 20:58:22 +02:00
phil235 5242108c4d a few fixes 2015-06-22 01:39:32 +02:00
phil235 b0cd6d34b1 Lots of work on acids, smoke, foam, reagents reaction() proc.
- fixed the fraction argument in reaction(...., INGESTED, fraction) so the proper amounts of each reagent react, not all of it.
- slight optimization of datum/reagents/reaction()
- small optimization /datum/reagent/proc/reaction_mob
- the smoke's reagents no longer do direct transfer upon crossed()/move() but uses "reagents.reaction( mob, TOUCH)" only.
- fixes no ingesting smoke if it's in the dark.
- removed block gas smoke effect flag from clown mask and other non "actual" gas mask.
- refactor how protection against touched chems being absorbed is done. get_permeability_protection() to get that protection. No more

simple RNG get touched or not, now the amount that touches you depends on your protection and the volume in question.
- changes acid_act to take volume into account.
- chem_smoke now uses process() just like foam, we remove the reaction from crossed() and Move(), it's only done in process() now.
- optimization of effect/smoke, OOP! And now all smoke effects use objprocessing instead of shitty sleep/spawn
- removed mob var/coughedtime.
- add a volume check to item/acid_act(), there's a threshold to be able to melt and then a probability to melt (acidpwr&volume).
- greatly lowered the amount of reagent in the smoke from dead blobspore (so the volume isn't enough for melting)
- human/acid_act(): damage to limbs depends on acidpwr&volume.
- fixes metalfoam not working.
- smoke powder: only one start() call.
- Amound of smoke objects depends on amount of smoke recipe created.
- Adds an argument to add_reagent() to block automatic call of handle_reaction()
- When using reagents/proc/trans_to(), reactions are now only handled after every reagent is transfered and not before.
- Amount of smoke objects depends on amount of smoke reagent created.
- radius of foam reaction depends on amount of foam reagent created.
- The amount of other reagents inside the smoke/foam decides the life expectancy of the effect.
- The amount of reagents in each small smoke cloud/foam cell depends on the amount of other reagents in the initial reaction but also

how much smoke/foam was created (more smoke means dilution of the reagents).
- smoke/foam's reagent reaction on mob decreases the life expectancy of the effect (to avoid reagent duplication)
- The amount of reagent reacting with atoms is less if the life expectancy is high.(to avoid reagent duplication)
- The amount of movement from the smoke now depends on the number of smoke clouds created.
- removing some useless code in chem_grenade/prime().
- When calling human/acid_act(), item acid melting chance lowers after each each successful melt in the list, some of the acid is

"used" to melt that item so the next items have a lower chance to melt (to make melting every clothing harder).
- remove the banned reagent list from sprays, not needed anymore now that acid is nerfed.
- chem_grenade reaction, if there's no reagent left after reaction (smoke/foam/etc, reagents cleared) you don't get the steam effect

and immediate reaction with all atoms around the grenade explosion. (Fixes foam cleaner grenade deleting bloodstains around it as soon

as the grenade explodes, even if the foam hasn't reached the tile yet).
- melted storage items now drop their content instead of deleting everything.
2015-06-22 00:35:24 +02:00
Jordie0608 7357a10f68 more fixes 2015-05-11 20:27:16 +10:00
kingofkosmos 72749392d8 span classes removed from visible.messages 2015-04-24 20:50:51 +03:00
MrPerson 94c0c1598d Fixes cleaner grenades
Fixes #8757
Default for locate is "in world"!
2015-04-05 16:55:17 -07:00
MrPerson b6c71dc50d Effect pooling
obj/effect/effect all pool themselves.
PoolOrNew() can now be passed a type and a list instead of a type and a location. In that case, the list will be passed to New() via arglist().
RCD's now delete their spark system and properly garbage collect.
2015-03-24 11:44:49 -07:00
Iamgoofball e5a3694c0f Adds Napalm as a reagent and merges old napalm into Phlog. Fixes some foam stuff. 2015-03-08 19:43:17 -07:00
Iamgoofball 3964cb3126 Adds heart attacks properly. 2015-03-02 20:50:48 -08:00
Remie Richards 5fc7af7fbf attackby() now has an argument containing the parameters of the click that called it. Items placed on tables now center their icon where the user clicked. this is NOT true for racks, since racks look organised in their sprite.
Items reset their pixel_x and pixel_y values on pickup.
2015-02-19 13:02:43 +00:00
Cheridan 85ec168881 Foam spreading now respects type. 2015-02-14 13:32:32 -06:00
Cheridan 69b856f373 Saving before I ruin everything
Lightning works too
Cleans up old shit from Chemistry-Recipes.dm
2015-02-14 11:46:20 -06:00
Cheridan 284223102e Reagent foam works
TODO: Make metal foam work
2015-01-26 00:17:15 -06:00
Cheridan aa3b7d9a75 Splits effect_system.dm into individual files. 2015-01-25 13:57:45 -06:00