Skip to content

Commit cca2e8b

Browse files
committed
fix some spell effects
1 parent d8790df commit cca2e8b

4 files changed

Lines changed: 14 additions & 5 deletions

File tree

game/graphics/effect.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,12 @@ void Effect::syncAttachesSingle(const Matrix4x4& inPos) {
175175
}
176176

177177
auto p = inPos;
178-
if(true || emTrjMode != VisualFx::Trajectory::TrajectoryNone) {
178+
if((emTrjMode & VisualFx::Trajectory::Target)==VisualFx::Trajectory::Target && target!=nullptr) {
179+
// NOTE: needed for shrink-spell, light-spell
180+
p.identity();
181+
p.translate(target->mapBone(nodeSlot));
182+
}
183+
else if(true || emTrjMode != VisualFx::Trajectory::TrajectoryNone) {
179184
if(pose!=nullptr && boneId<pose->boneCount())
180185
p = pose->bone(boneId);
181186
else if(target!=nullptr)

game/graphics/mdlvisual.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ void MdlVisual::setAmmoItem(MeshObjects::Mesh&& a, std::string_view bone) {
177177
void MdlVisual::setMagicWeapon(Effect&& spell, World& owner) {
178178
auto n = std::move(pfx.view);
179179
n.setLooped(false);
180+
n.setActive(false);
180181
startEffect(owner,std::move(n),0,true);
181182

182183
pfx.view = std::move(spell);

game/graphics/pfx/particlefx.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -155,9 +155,12 @@ uint64_t ParticleFx::maxLifetime() const {
155155
}
156156

157157
uint64_t ParticleFx::effectPrefferedTime() const {
158-
auto v0 = prefferedTime;
159-
auto v1 = ppsCreateEm==nullptr ? 0 : ppsCreateEmDelay+ppsCreateEm->effectPrefferedTime();
160-
return std::max(v0,v1);
158+
auto v0 = prefferedTime;
159+
auto v1 = ppsCreateEm==nullptr ? 0 : ppsCreateEmDelay+ppsCreateEm->effectPrefferedTime();
160+
auto time = std::max(v0,v1);
161+
162+
time = std::max<uint64_t>(1,time); // sleep spell has pfx burst effect with zero life span
163+
return time;
161164
}
162165

163166
float ParticleFx::maxPps() const {

0 commit comments

Comments
 (0)