@@ -101,7 +101,7 @@ local function low_violence_collect_deferred_corpses(enemy_manager)
101101
102102 for key , corpse_data in pairs (corpses ) do
103103 if corpse_data .low_violence_deferred_disposal then
104- if corpse_data .no_dispose and alive (corpse_data .unit ) then
104+ if corpse_data .no_disposal and alive (corpse_data .unit ) then
105105 deferred_corpses [# deferred_corpses + 1 ] = {
106106 key = key ,
107107 data = corpse_data ,
@@ -131,7 +131,7 @@ local function low_violence_release_deferred_corpse(enemy_manager, corpse_data)
131131 return false
132132 end
133133
134- if not corpse_data .no_dispose or not alive (corpse_unit ) or not enemy_manager .enable_disposal_on_corpse then
134+ if not corpse_data .no_disposal or not alive (corpse_unit ) or not enemy_manager .enable_disposal_on_corpse then
135135 corpse_data .low_violence_deferred_disposal = nil
136136 corpse_data .low_violence_deferred_mode = nil
137137 return false
@@ -140,6 +140,7 @@ local function low_violence_release_deferred_corpse(enemy_manager, corpse_data)
140140 corpse_data .low_violence_deferred_disposal = nil
141141 corpse_data .low_violence_deferred_mode = nil
142142 enemy_manager :enable_disposal_on_corpse (corpse_unit )
143+ enemy_manager ._corpse_disposal_t = low_violence_now () or enemy_manager ._corpse_disposal_t
143144
144145 return true
145146end
@@ -183,17 +184,15 @@ EnemyManagerFeature.ApplyDeferredCorpsePolicy = function(enemy_manager)
183184 end
184185end
185186
186- local function low_violence_unqueue_corpse_disposal_if_unneeded (enemy_manager )
187- local corpse_disposal_id = enemy_manager and enemy_manager ._corpse_disposal_id
187+ local function low_violence_cancel_corpse_disposal_if_unneeded (enemy_manager )
188188 local enemy_data = enemy_manager and enemy_manager ._enemy_data
189189
190- if not corpse_disposal_id or not enemy_data then
190+ if not enemy_data then
191191 return
192192 end
193193
194194 if numeric_or (enemy_data .nr_corpses , 0 ) <= enemy_manager :corpse_limit () then
195- enemy_manager ._corpse_disposal_id = nil
196- pcall (enemy_manager .unqueue_task , enemy_manager , corpse_disposal_id )
195+ enemy_manager ._corpse_disposal_t = nil
197196 end
198197end
199198
@@ -204,23 +203,28 @@ local function low_violence_defer_corpse_disposal(enemy_manager, dead_unit)
204203 local corpse_key = low_violence_unit_key (dead_unit )
205204 local mode = LowViolenceMode :GetMode (" corpsesMode" )
206205
206+ if LowViolenceMode :IsEnabled (" blockCorpses" ) and mode == " timer" and LowViolenceMode :GetNumber (" corpseTimerSeconds" ) == 0 then
207+ enemy_manager ._corpse_disposal_t = low_violence_now () or enemy_manager ._corpse_disposal_t
208+ return
209+ end
210+
207211 if not low_violence_should_defer_corpse () or not corpse_key then
208212 return
209213 end
210214
211215 local enemy_data = enemy_manager and enemy_manager ._enemy_data
212216 local corpse_data = low_violence_corpse_data_by_key (enemy_manager , corpse_key )
213217
214- if not enemy_data or not corpse_data or corpse_data .no_dispose then
218+ if not enemy_data or not corpse_data or corpse_data .no_disposal then
215219 return
216220 end
217221
218- corpse_data .no_dispose = true
222+ corpse_data .no_disposal = true
219223 corpse_data .low_violence_deferred_disposal = true
220224 corpse_data .low_violence_deferred_mode = mode
221225 enemy_data .nr_corpses = math.max (numeric_or (enemy_data .nr_corpses , 0 ) - 1 , 0 )
222226
223- low_violence_unqueue_corpse_disposal_if_unneeded (enemy_manager )
227+ low_violence_cancel_corpse_disposal_if_unneeded (enemy_manager )
224228 if mode == " after_ragdoll" and low_violence_schedule_deferred_corpse_fallback then
225229 low_violence_schedule_deferred_corpse_fallback (enemy_manager , corpse_key )
226230 elseif mode == " timer" and low_violence_schedule_timer_corpse_release then
0 commit comments