Phoenix Rod FX2
This is the Tome of power version of the Phoenix Rod shot aka the flame thrower.
note i can't do anything about the white light any help on that part would be greatfull.
note i can't do anything about the white light any help on that part would be greatfull.
State {
ID = "PHOENIXFX2_1";
Sprite = "FX09";
Frame = 32768;
Tics = 2;
Next state = "PHOENIXFX2_2";
}
State {
ID = "PHOENIXFX2_2";
Sprite = "FX09";
Frame = 32769;
Tics = 2;
Next state = "PHOENIXFX2_3";
}
State {
ID = "PHOENIXFX2_3";
Sprite = "FX09";
Frame = 32768;
Tics = 2;
Next state = "PHOENIXFX2_4";
}
State {
ID = "PHOENIXFX2_4";
Sprite = "FX09";
Frame = 32769;
Tics = 2;
Next state = "PHOENIXFX2_5";
}
State {
ID = "PHOENIXFX2_5";
Sprite = "FX09";
Frame = 32768;
Tics = 2;
Next state = "PHOENIXFX2_6";
}
State {
ID = "PHOENIXFX2_6";
Sprite = "FX09";
Frame = 32769;
Tics = 2;
Action = "A_FlameEnd";
Next state = "PHOENIXFX2_7";
}
State {
ID = "PHOENIXFX2_7";
Sprite = "FX09";
Frame = 32770;
Tics = 2;
Next state = "PHOENIXFX2_8";
}
State {
ID = "PHOENIXFX2_8";
Sprite = "FX09";
Frame = 32771;
Tics = 2;
Next state = "PHOENIXFX2_9";
}
State {
ID = "PHOENIXFX2_9";
Sprite = "FX09";
Frame = 32772;
Tics = 2;
Next state = "PHOENIXFX2_10";
}
State {
ID = "PHOENIXFX2_10";
Sprite = "FX09";
Frame = 32773;
Tics = 2;
Next state = "NULL";
}
State {
ID = "PHOENIXFXI2_1";
Sprite = "FX09";
Frame = 32774;
Tics = 3;
Next state = "PHOENIXFXI2_2";
}
State {
ID = "PHOENIXFXI2_2";
Sprite = "FX09";
Frame = 32775;
Tics = 3;
Action = "A_FloatPuff";
Next state = "PHOENIXFXI2_3";
}
State {
ID = "PHOENIXFXI2_3";
Sprite = "FX09";
Frame = 32776;
Tics = 4;
Next state = "PHOENIXFXI2_4";
}
State {
ID = "PHOENIXFXI2_4";
Sprite = "FX09";
Frame = 32777;
Tics = 5;
Next state = "PHOENIXFXI2_5";
}
State {
ID = "PHOENIXFXI2_5";
Sprite = "FX09";
Frame = 32778;
Tics = 5;
Next state = "NULL";
}
Model {
State = "PHOENIXFX2_1"
Scale = 0
Offset = 0
Flags = alignpitch | alignyaw
Md2{
File = ""
}
}
Copy Model {
State = "PHOENIXFX2_1"
Inter = 0
Md2{
Frame = "2"
Skin = 2
}
}
Copy Model {
State = "PHOENIXFX2_2"
Inter = 0.33
Md2{
Frame = "3"
Skin = 3
}
}
Copy Model {
State = "PHOENIXFX2_3"
Inter = 0.66
Md2{
Frame = "4"
Skin = 4
}
}
Copy Model {
State = "PHOENIXFX2_4"
Inter = 0
Md2{
Frame = "5"
Skin = 5
}
}
Copy Model {
State = "PHOENIXFX2_5"
Inter = 0.33
Md2{
Frame = "6"
Skin = 6
}
}
Copy Model {
State = "PHOENIXFX2_6"
Inter = 0
Md2{
Frame = "2"
Skin = 2
}
}
Copy Model {
State = "PHOENIXFX2_7"
Inter = 0.33
Md2{
Frame = "3"
Skin = 3
}
}
Copy Model {
State = "PHOENIXFX2_8"
Inter = 0.66
Md2{
Frame = "4"
Skin = 4
}
}
Copy Model {
State = "PHOENIXFX2_9"
Inter = 0
Md2{
Frame = "5"
Skin = 5
}
}
Copy Model {
State = "PHOENIXFX2_10"
Inter = 0.33
Md2{
Frame = "6"
Skin = 6
}
}
Model {
State = "PHOENIXFXI2_1"
Scale = 0
Offset = 0
Flags = alignpitch | alignyaw
Md2{
File = ""
}
}
Copy Model {
State = "PHOENIXFXI2_1"
Inter = 0
Md2{
Frame = "2"
Skin = 2
}
}
Copy Model {
State = "PHOENIXFXI2_2"
Inter = 0.33
Md2{
Frame = "3"
Skin = 3
}
}
Copy Model {
State = "PHOENIXFXI2_3"
Inter = 0.66
Md2{
Frame = "4"
Skin = 4
}
}
Copy Model {
State = "PHOENIXFXI2_4"
Inter = 0
Md2{
Frame = "5"
Skin = 5
}
}
Copy Model {
State = "PHOENIXFXI2_5"
Inter = 0.33
Md2{
Frame = "6"
Skin = 6
}
}
Generator {
State = "PHOENIXFX2_1"
Flags = srcvel | srcdir | blend
Center { -4 0 0 }
Speed = -1
Speed rnd = 0.2
Spawn radius = 5.8
Spawn age = 1
Max age = -1
Particles = 3000
Spawn rate = 20
Vector rnd = 3
Stage {
Type = "pt_point";
Flags = "ptf_bright";
Tics = 5;
Radius = 4;
Resistance = .1;
Color { 1 .2 0 .2 };
};
}
Generator {
State = "PHOENIXFX2_2"
Flags = srcvel | srcdir | blend
Center { -4 0 0 }
Speed = -1
Speed rnd = 0.2
Spawn radius = 5.8
Spawn age = 1
Max age = -1
Particles = 3000
Spawn rate = 20
Vector rnd = 3
Stage {
Type = "pt_point";
Flags = "ptf_bright";
Tics = 5;
Radius = 4;
Resistance = .1;
Color { 1 .2 0 .2 };
};
}
Generator {
State = "PHOENIXFX2_3"
Flags = srcvel | srcdir | blend
Center { -4 0 0 }
Speed = -1
Speed rnd = 0.2
Spawn radius = 5.8
Spawn age = 1
Max age = -1
Particles = 3000
Spawn rate = 20
Vector rnd = 3
Stage {
Type = "pt_point";
Flags = "ptf_bright";
Tics = 5;
Radius = 4;
Resistance = .1;
Color { 1 .2 0 .2 };
};
}
Generator {
State = "PHOENIXFX2_4"
Flags = srcvel | srcdir | blend
Center { -4 0 0 }
Speed = -1
Speed rnd = 0.2
Spawn radius = 5.8
Spawn age = 1
Max age = -1
Particles = 3000
Spawn rate = 20
Vector rnd = 3
Stage {
Type = "pt_point";
Flags = "ptf_bright";
Tics = 5;
Radius = 4;
Resistance = .1;
Color { 1 .2 0 .2 };
};
}
Generator {
State = "PHOENIXFX2_5"
Flags = srcvel | srcdir | blend
Center { -4 0 0 }
Speed = -1
Speed rnd = 0.2
Spawn radius = 5.8
Spawn age = 1
Max age = -1
Particles = 3000
Spawn rate = 20
Vector rnd = 3
Stage {
Type = "pt_point";
Flags = "ptf_bright";
Tics = 5;
Radius = 4;
Resistance = .1;
Color { 1 .2 0 .2 };
};
}
Generator {
State = "PHOENIXFX2_6"
Flags = srcvel | srcdir | blend
Center { -4 0 0 }
Speed = -1
Speed rnd = 0.2
Spawn radius = 5.8
Spawn age = 1
Max age = -1
Particles = 3000
Spawn rate = 20
Vector rnd = 3
Stage {
Type = "pt_point";
Flags = "ptf_bright";
Tics = 5;
Radius = 4;
Resistance = .1;
Color { 1 .2 0 .2 };
};
}
Generator {
State = "PHOENIXFX2_7"
Flags = srcvel | srcdir | blend
Center { -4 0 0 }
Speed = -1
Speed rnd = 0.2
Spawn radius = 5.8
Spawn age = 1
Max age = -1
Particles = 3000
Spawn rate = 20
Vector rnd = 3
Stage {
Type = "pt_point";
Flags = "ptf_bright";
Tics = 5;
Radius = 4;
Resistance = .1;
Color { 1 .2 0 .2 };
};
}
Generator {
State = "PHOENIXFX2_8"
Flags = srcvel | srcdir | blend
Center { -4 0 0 }
Speed = -1
Speed rnd = 0.2
Spawn radius = 5.8
Spawn age = 1
Max age = -1
Particles = 3000
Spawn rate = 20
Vector rnd = 3
Stage {
Type = "pt_point";
Flags = "ptf_bright";
Tics = 5;
Radius = 4;
Resistance = .1;
Color { 1 .2 0 .2 };
};
}
Generator {
State = "PHOENIXFX2_9"
Flags = srcvel | srcdir | blend
Center { -4 0 0 }
Speed = -1
Speed rnd = 0.2
Spawn radius = 5.8
Spawn age = 1
Max age = -1
Particles = 3000
Spawn rate = 20
Vector rnd = 3
Stage {
Type = "pt_point";
Flags = "ptf_bright";
Tics = 5;
Radius = 4;
Resistance = .1;
Color { 1 .2 0 .2 };
};
}
Generator {
State = "PHOENIXFX2_10"
Flags = srcvel | srcdir | blend
Center { -4 0 0 }
Speed = -1
Speed rnd = 0.2
Spawn radius = 5.8
Spawn age = 1
Max age = -1
Particles = 3000
Spawn rate = 20
Vector rnd = 3
Stage {
Type = "pt_point";
Flags = "ptf_bright";
Tics = 5;
Radius = 4;
Resistance = .1;
Color { 1 .2 0 .2 };
};
}
#END
Generator {
State = "PHOENIXFXI2_1"
Flags = blend
Center { -4 0 0 }
Speed = -1
Speed rnd = 0.2
Spawn radius = 5
Spawn age = 1
Max age = -1
Particles = 3000
Spawn rate = 20
Vector rnd = 3
Stage {
Type = "pt_point";
Flags = "ptf_bright";
Tics = 5;
Radius = 5;
Resistance = .1;
Color { 1 .2 0 .2 };
};
}
Generator {
State = "PHOENIXFXI2_2"
Flags = blend
Center { -4 0 0 }
Speed = -1
Speed rnd = 0.2
Spawn radius = 5
Spawn age = 1
Max age = -1
Particles = 3000
Spawn rate = 20
Vector rnd = 3
Stage {
Type = "pt_point";
Flags = "ptf_bright";
Tics = 5;
Radius = 4;
Resistance = .1;
Color { 1 .2 0 .2 };
};
}
Generator {
State = "PHOENIXFXI2_3"
Flags = blend
Center { -4 0 0 }
Speed = -1
Speed rnd = 0.2
Spawn radius = 5
Spawn age = 1
Max age = -1
Particles = 3000
Spawn rate = 20
Vector rnd = 3
Stage {
Type = "pt_point";
Flags = "ptf_bright";
Tics = 5;
Radius = 3;
Resistance = .1;
Color { 1 .2 0 .2 };
};
}
Generator {
State = "PHOENIXFXI2_4"
Flags = blend
Center { -4 0 0 }
Speed = -1
Speed rnd = 0.2
Spawn radius = 5
Spawn age = 1
Max age = -1
Particles = 3000
Spawn rate = 20
Vector rnd = 3
Stage {
Type = "pt_point";
Flags = "ptf_bright";
Tics = 5;
Radius = 2;
Resistance = .1;
Color { 1 .2 0 .2 };
};
}
Generator {
State = "PHOENIXFXI2_5"
Flags = blend
Center { -4 0 0 }
Speed = -1
Speed rnd = 0.2
Spawn radius = 5
Spawn age = 1
Max age = -1
Particles = 3000
Spawn rate = 20
Vector rnd = 3
Stage {
Type = "pt_point";
Flags = "ptf_bright";
Tics = 5;
Radius = 1;
Resistance = .1;
Color { 1 .2 0 .2 };
};
}
Comments
Unless it's defined elsewhere in the pack, you're using, then the white is just all the particles additively blending together until they come to pure white!
as i have not seen it in the objects ded
That's kind of dumb, 'cause I can't actually find the definitions for them, so they're probably in the actual engine like you said... I checked to see if it's in the bug reports, and it's not, so I'm gonna add it there!
EDIT: A fix to this is to either turn the default dynamic light off by eliminating the brightness, or adding a new light, thus replacing the old one. Try putting either of these at the beginning of your DED file:
The first one seems to look better, as there's still a dynamic light for the whole series of frames.
Just tested it and it fixes it!
Dday has an algorithm that automatically places a dynamic light on any mobj state that is full bright and doesn't have an external light definition. It "looks" at the sprite used in the state and automatically picks where the centre of the dynamic light should be, what colour is should be, its size etc.
Naturally, the algorithm doesn't always get it right; for instance in 1.8.6 it picked a pixel off the stem of the Doom's tall red fire torch mobj, over a pixel of the flame, in some of the mobj's states. The algorithm was improved at some point in 1.9 betas so it no longer makes this mistake in the latest 1.9 betas.
I was starting to suspect it, but I didn't think the last two sprites had turned grey until when I checked the sprites out for myself. I guess it's supposed to be smoke and all... Applied to the right generator, it might actually look good!
this had no or virtually no dynamic lights on the end bit and it's now smoke
There are 3,000 particles (!!!) called for EACH FRAME of the flame, each in its own, single Generator per frame. There are 15 frames altogether, for 45,000 separate particles being cached for each single flame that comes out and hits something. You've got more than 10 at a time on-screen when in full stream, so that's more than 450,000 particles that have to be cached in more than 75 generators! Since they aren't being released until something else comes along that makes the generators hit their limit of 128 (because of the -1 max age which doesn't allow the generator to time out on its own, because -1 is akin to "forever" in the definition for time), once you shoot out a stream, there has to be that many particles in memory until they get replaced by something else. It's extremely inefficient, and so that's one reason why I was saying go with mobj-based. Since you're using state-based, and if you were to stick with your approach, and since it's 20 particles (spawn rate of 20 and spawn age of 1), then there only needs to be Particles = 20, since that's all that's actually needed to be reserved for that generator.
On the main dengine.net page, you ought to click on the Wiki link, then go to References > Definitions > Generators to get the best reference on this stuff.
Here's how I would do it, and it would look pretty much the same, except for the end part which might be slightly different, but should be able to be calibrated to look how you want it:
PS - there's a problem at the very end, because for some reason it generates a frame's worth of particles AFTER the end state...
I'd make the smoke given off at the end a lighter grey and also reduce the size of the dlight given off by the flame; it produces a way too huge a halo that pratically covers the screen.
If it were me, I would probably make a series of particles or models or both in order to get the fire and smoke down.
I think it looks good now except for the little problem witch i can't solve