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; }