Yes, Kalepian Invasion is made in DBC, as that's all I have right now.
The explosions are made by a textured plain put in place of the enemy when it's health points get shot away. Every time an enemy dies, I delete the enemy and then call a function that I named BlowUpMonster(MonstType,ObjNum) Here's the actual function if you want to look over it. I have object numbers 100 to 199 reserved for explosion effects. Whenever the function is called, it finds one of those objects that isn't in use and makes a plain out of it and textures it with the explosion effect.
Function BlowUpMonster(ObjNum,objType)
for x=100 to 199
if object exist(x)=0
make object plain x,50,50
scale object x,500,500,500
texture object x,4
set object x,1,0,1
ghost object on x
if objType=1
position object x,object position x(objNum),object position y(objNum),object position z(objNum)
endif
if objType=2
position object x,object position x(objNum),object position y(objNum)-50,object position z(objNum)
endif
set object to camera orientation x
Explosions(x-100)=500
exit
endif
next x
if sound playing(4)=0 then play sound 4
MonsterType(objNum-200)=0
Endfunction
Then to make the explosion disappear, I have a subroutine that is called every loop to check on the explosion effects. If the explosion exists, it scales it down until it gets small enough to just delete the object. The way I'm able to get away with using a plain for my explosions is that I always face it toward the player, so it will always look like a 3d object. Here's the _UpdateExplosion sub:
_UpdateExplosions:
for x=0 to 99
if explosions(x)>0 and object exist(x+100)
explosions(x)=explosions(x)-10
scale object x+100,explosions(x),explosions(x),explosions(x)
endif
if explosions(x)<=0 and object exist(x+100)
explosions(x)=0
delete object x+100
endif
next x
`make the explosion effect always face the player.
for x=100 to 199
if object exist(x) then set object to camera orientation x
next x
return
I hope this answers your question. If I need to clarify anything, let me know.