Files
dsrc/sku.0/sys.server/compiled/game/script/ai/parasite.script
T
2013-09-10 23:17:15 -07:00

68 lines
1.3 KiB
Plaintext

include library.create;
const string SCRIPT_NAME = "ai.parasite";
trigger OnAttach()
{
if(!hasObjVar(self, "host"))
detachScript(self, SCRIPT_NAME);
return SCRIPT_CONTINUE;
}
trigger OnInitialize()
{
if(!hasObjVar(self, "host"))
detachScript(self, SCRIPT_NAME);
return SCRIPT_CONTINUE;
}
trigger OnIncapacitated(obj_id killer)
{
if(!hasObjVar(self, "host"))
return SCRIPT_CONTINUE;
dictionary d = new dictionary();
d.put("killer", killer);
messageTo(self, "handleParasiteExplosion", d, 1.0f, false);
return SCRIPT_CONTINUE;
}
messageHandler handleParasiteExplosion()
{
if(!hasObjVar(self, "host"))
return SCRIPT_CONTINUE;
obj_id killer = params.getObjId("killer");
if(isIdValid(killer))
playClientEffectLoc(killer, "clienteffect/cr_parasite_explosion.cef", getLocation(self), 0.5f);
string parasite = getStringObjVar(self, "host");
int numToSpawn = rand(1, 3);
for(int i = 0; i < numToSpawn; i++)
{
location here = getLocation(self);
int randX = rand(-10, 10);
int randZ = rand(-10, 10);
float rX = ((float)randX)/10f;
float rZ = ((float)randZ)/10f;
here.x += rX;
here.z += rZ;
obj_id critter = create.object(parasite, here);
if(isIdValid(critter) && isIdValid(killer))
{
addHate(critter, killer, 100f);
addHate(killer, critter, 0f);
}
}
return SCRIPT_CONTINUE;
}