Skip to content

Commit f0b9c32

Browse files
committed
gamestate: Fix time calculations for applying effects.
1 parent 98f9abf commit f0b9c32

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

libopenage/gamestate/system/apply_effect.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,12 @@ const time::time_t ApplyEffect::apply_effect(const std::shared_ptr<gamestate::Ga
7070
resistances[resistance_type].push_back(resistance_obj);
7171
}
7272

73-
time::time_t end_time = start_time;
73+
time::time_t total_time = 0;
74+
75+
// TODO: Check if delay is necessary
76+
auto delay = effect_ability.get_float("ApplyDiscreteEffect.application_delay");
77+
auto reload_time = effect_ability.get_float("ApplyDiscreteEffect.reload_time");
78+
total_time += delay + reload_time;
7479

7580
// Check for matching effects and resistances
7681
for (auto &effect : effects) {
@@ -91,24 +96,19 @@ const time::time_t ApplyEffect::apply_effect(const std::shared_ptr<gamestate::Ga
9196
auto attribute = attribute_amount.get_object("AttributeAmount.type");
9297
auto applied_value = get_applied_discrete_flac(effect_objs, resistance_objs);
9398

94-
// TODO: Check if delay is necessary
95-
auto delay = effect_ability.get_float("ApplyDiscreteEffect.application_delay");
96-
auto reload_time = effect_ability.get_float("ApplyDiscreteEffect.reload_time");
97-
end_time += delay + reload_time;
98-
9999
// Record the time when the effects were applied
100100
effects_component->set_init_time(start_time + delay);
101-
effects_component->set_last_used(end_time);
101+
effects_component->set_last_used(start_time + total_time);
102102

103103
// Apply the effect to the live component
104-
live_component->set_attribute(end_time, attribute.get_name(), applied_value);
104+
live_component->set_attribute(start_time + delay, attribute.get_name(), applied_value);
105105
} break;
106106
default:
107107
throw Error(MSG(err) << "Effect type not implemented: " << static_cast<int>(effect_type));
108108
}
109109
}
110110

111-
return end_time;
111+
return total_time;
112112
}
113113

114114

0 commit comments

Comments
 (0)