void fnControlledBy(object oMaster) { // PURPOSE: Possessive controlling function object oMe=OBJECT_SELF; if (GetIsDead(oMaster)||!GetIsObjectValid(oMaster)) { // control is over ChangeToStandardFaction(oMe,STANDARD_FACTION_HOSTILE); DeleteLocalString(oMe,"sTeamID"); SetAILevel(oMe,AI_LEVEL_DEFAULT); } // control is over else { // control continues if (GetDistanceBetween(oMe,oMaster)>60.0||GetArea(oMe)!=GetArea(oMaster)&&!GetIsDMPossessed(oMe)) { // forced follow AssignCommand(oMe,ClearAllActions(TRUE)); AssignCommand(oMe,JumpToObject(oMaster)); } // forced follow else if (GetDistanceBetween(oMe,oMaster)>9.0&&!GetIsInCombat(oMe)&&!GetIsDMPossessed(oMe)) { // get closer AssignCommand(oMe,ClearAllActions()); AssignCommand(oMe,ActionMoveToObject(oMaster,TRUE,7.0)); } // get closer DelayCommand(8.0,fnControlledBy(oMaster)); } // control continues } // fnControlledBy() /////////////////////////////////////////////////////////////[ MAIN ]/////////// void main() { object oPC=GetItemActivator(); object oItem=GetItemActivated(); location lLoc=GetItemActivatedTargetLocation(); string sTag=GetTag(oItem); if (sTag=="it_grpotion_s") { // create green slime object oSlime=CreateObject(OBJECT_TYPE_CREATURE,"slime_green",lLoc); } // create green slime else { // control ooze int nN=1; string sTeamID=GetLocalString(oPC,"sTeamID"); object oProxy=GetObjectByTag(sTeamID+"_PROXY"); object oCr=GetNearestCreature(CREATURE_TYPE_IS_ALIVE,TRUE,oPC,nN); effect eVFX=EffectVisualEffect(VFX_DUR_AURA_PULSE_GREEN_BLACK); while(GetIsObjectValid(oCr)&&GetDistanceBetween(oCr,oPC)<=15.0) { // control if (GetRacialType(oCr)==RACIAL_TYPE_OOZE) { // control AssignCommand(oCr,ClearAllActions(TRUE)); SetLocalString(oCr,"sTeamID",sTeamID); ChangeFaction(oCr,oProxy); SetIsTemporaryFriend(oPC,oCr); SetIsTemporaryFriend(oCr,oPC); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVFX,oCr,4.0); SetAILevel(oCr,AI_LEVEL_NORMAL); AssignCommand(oCr,fnControlledBy(oPC)); } // control nN++; oCr=GetNearestCreature(CREATURE_TYPE_IS_ALIVE,TRUE,oPC,nN); } // control } // control ooze } /////////////////////////////////////////////////////////////[ MAIN ]///////////