View Issue Details

IDProjectCategoryView StatusLast Update
0004201The Dark ModCodingpublic30.09.2015 20:05
ReporterVanishedOne Assigned ToSteveL  
PrioritynormalSeveritynormalReproducibilityalways
Status resolvedResolutionfixed 
Product VersionTDM 2.03 
Target VersionTDM 2.04Fixed in VersionTDM 2.04 
Summary0004201: Fire arrows extinguish existing fires, even on a direct hit
DescriptionIf a fire is already lit, the blast from a fire arrow will extinguish it. This is supposed to happen for nearby flames (the blast of air from the explosion), but it happens even on a direct hit.

http://forums.thedarkmod.com/topic/16951-tdm-203-glitchesbugs/?p=375883
Steps To ReproduceStand by a bonfire repeatedly firing fire arrows at it. The flame gets alternately turned on and off.
TagsNo tags attached.

Activities

Springheel

Springheel

27.08.2015 14:36

administrator   ~0007746

I would think that only the smallest flames (candles) would be extinguished by the blast of a fire arrow. Fireplaces, torches, etc, should not be extinguished at all.
SteveL

SteveL

06.09.2015 13:38

reporter   ~0007754

@Springheel: That's probably best handled in a spawnarg don't you think? Rather than trying to do it automatically based on erm... the size of the attached particle effect or something. Blowing out flames was new in 2.03 anyway so we can tweak it. We can have a "canBeBlownOut" spawnarg that defaults to 0, and set it to 1 on the parent defs of candles.

That still leaves us with fire arrow blasts on non-movable candles. Moveables will get hurled about by the blast anyway, so it doesn't matter that they go out on a direct hit, but non-moving candles should probably not go out if they are close enough to the blast that they'd be ignited by it.
tels

tels

25.09.2015 11:54

reporter   ~0007798

Technically, the blast would extinguish any flame in it's area, and then the heat would re-ignite any of them that are still in the heat area (which might be smaller than the blast radius).

So maybe would it help to simply split the process into two phases: extinguish, then a few ms later ignite any flames still in the area (if blown away, they get ignored).

The spawnarg might still be an idea, so the mapper can build huge bonfires you can't blow out even with a direct hit.
SteveL

SteveL

26.09.2015 18:51

reporter   ~0007800

I agree, the best way to fix it is to change the order of events: perform the blow-out, then allow the fire stim to reignite anything within reach. Currently the fire stim is happening before the blow-out.

The spawnarg is easy, but the fire and the blast are probably activated by very different parts of the code, and might or might not be easy to reorder.
SteveL

SteveL

27.09.2015 15:05

reporter   ~0007806

Last edited: 27.09.2015 15:29

No need to change the order of events: the fire stim lasts 250ms, so it outlasts the instant blow-out effect in any case. The toggling effect was down to a design choice in the radius dowsing effect: lights couldn't be relit by a fire stim until their smoking effect had completed. If we remove that constraint (from tdm_lights.script, light_moving_ext::response_extinguish), then flames doused by a (very nearby) blast go out but immediately reignite, which looks quite realistic. Lights further away just get blown out.

SteveL

SteveL

27.09.2015 15:40

reporter   ~0007807

The spawnarg. The area dowsing effect will work on flame lights, which generally don't get placed directly by mappers. They are def-attachments of the light holder entities that mappers place in DR. It would be nice if mappers can override canBeBlownOut with a spawnarg on the light holder that they place in DR, even if I can't hink of any use cases right now. We could have the light check its bindmaster and teammaster entities for the spawnarg too -- I'm hoping one of those will be the light holder entity -- and add a default spawnarg "canBeBlownOut" that shows up on light holders in DR so that mappers are aware of it.
SteveL

SteveL

29.09.2015 17:42

reporter   ~0007809

Correction: there's no need for complicated checking of bindmasters. I was forgetting the "set spawnarg on flame" mechanism for def-attachments.
SteveL

SteveL

29.09.2015 18:48

reporter   ~0007810

Committed at rev 6542

/trunk/game/Game_local.cpp
/trunk/game/Game_local.h

And at rev 14393
/trunk/def/tdm_lights.def
/trunk/def/tdm_moveable_candles.def
/trunk/script/tdm_lights.script

Issue History

Date Modified Username Field Change
18.08.2015 12:53 VanishedOne New Issue
27.08.2015 14:36 Springheel Note Added: 0007746
06.09.2015 13:38 SteveL Note Added: 0007754
15.09.2015 19:04 SteveL Assigned To => SteveL
15.09.2015 19:04 SteveL Status new => assigned
25.09.2015 11:54 tels Note Added: 0007798
26.09.2015 18:51 SteveL Note Added: 0007800
27.09.2015 15:05 SteveL Note Added: 0007806
27.09.2015 15:29 SteveL Note Edited: 0007806
27.09.2015 15:40 SteveL Note Added: 0007807
29.09.2015 17:42 SteveL Note Added: 0007809
29.09.2015 18:48 SteveL Note Added: 0007810
29.09.2015 18:48 SteveL Status assigned => resolved
29.09.2015 18:48 SteveL Fixed in Version => TDM 2.04
29.09.2015 18:48 SteveL Resolution open => fixed
30.09.2015 19:02 SteveL Target Version => TDM 2.04