Serious-Engine/Sources/Entities/Acid.es
2016-04-08 00:11:36 +02:00

71 lines
1.7 KiB
C++

509
%{
#include "Entities/StdH/StdH.h"
%}
// input parameter for acid
event EAcid {
CEntityPointer penOwner, // entity which owns it
CEntityPointer penTarget, // target entity which receive damage
};
class CAcid : CMovableModelEntity {
name "Acid";
thumbnail "";
properties:
1 CEntityPointer m_penOwner, // entity which owns it
2 CEntityPointer m_penTarget, // target entity which receive damage
5 BOOL m_bLoop = FALSE, // internal for loops
components:
functions:
/************************************************************
* P R O C E D U R E S *
************************************************************/
procedures:
// --->>> MAIN
Main(EAcid ea) {
// attach to parent (another entity)
ASSERT(ea.penOwner!=NULL);
ASSERT(ea.penTarget!=NULL);
m_penOwner = ea.penOwner;
m_penTarget = ea.penTarget;
// initialization
InitAsVoid();
SetPhysicsFlags(EPF_MODEL_IMMATERIAL);
SetCollisionFlags(ECF_IMMATERIAL);
// acid damage
SpawnReminder(this, 10.0f, 0);
m_bLoop = TRUE;
while(m_bLoop) {
wait(0.25f) {
// damage to parent
on (EBegin) : {
// inflict damage to parent
if (m_penTarget!=NULL && !(m_penTarget->GetFlags()&ENF_DELETED)) {
m_penTarget->InflictDirectDamage(m_penTarget, m_penOwner, DMT_ACID, 0.25f, FLOAT3D(0, 0, 0), FLOAT3D(0, 0, 0));
// stop existing
} else {
m_bLoop = FALSE;
stop;
}
resume;
}
on (ETimer) : { stop; }
on (EReminder) : {
m_bLoop = FALSE;
stop;
}
}
}
// cease to exist
Destroy();
return;
}
};