@@ -407,6 +407,34 @@ local function make_registration_wrap(reg_fn_name, clear_fn_name)
407
407
return list
408
408
end
409
409
410
+ core .registered_on_player_hpchanges = { modifiers = { }, loggers = { } }
411
+ function core .registered_on_player_hpchange (player , hp_change )
412
+ local last = false
413
+ for i = # core .registered_on_player_hpchanges .modifiers , 1 , - 1 do
414
+ local func = core .registered_on_player_hpchanges .modifiers [i ]
415
+ hp_change , last = func (player , hp_change )
416
+ if type (hp_change ) ~= " number" then
417
+ local debuginfo = debug.getinfo (func )
418
+ error (" The register_on_hp_changes function has to return a number at " ..
419
+ debuginfo .short_src .. " line " .. debuginfo .linedefined )
420
+ end
421
+ if last then
422
+ break
423
+ end
424
+ end
425
+ for i , func in ipairs (core .registered_on_player_hpchanges .loggers ) do
426
+ func (player , hp_change )
427
+ end
428
+ return hp_change
429
+ end
430
+ function core .register_on_player_hpchange (func , modifier )
431
+ if modifier then
432
+ table.insert (core .registered_on_player_hpchanges .modifiers , func )
433
+ else
434
+ table.insert (core .registered_on_player_hpchanges .loggers , func )
435
+ end
436
+ end
437
+
410
438
core .registered_biomes = make_registration_wrap (" register_biome" , " clear_registered_biomes" )
411
439
core .registered_ores = make_registration_wrap (" register_ore" , " clear_registered_ores" )
412
440
core .registered_decorations = make_registration_wrap (" register_decoration" , " clear_registered_decorations" )
0 commit comments