@@ -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