mirror of
https://github.com/ptitSeb/Serious-Engine
synced 2024-11-25 11:45:53 +01:00
71 lines
1.7 KiB
C++
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;
|
|
}
|
|
};
|