Advertisement
henesua

aa_ai_plc_hb

May 21st, 2012
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.26 KB | None | 0 0
  1. //::///////////////////////////////////////////////
  2. //:: aa_ai_plc_hb
  3. //:://////////////////////////////////////////////
  4. /*
  5.     Special Heartbeat userdef AI for Creatures which have a placeable form
  6.  
  7.  */
  8. //:://////////////////////////////////////////////////
  9. //:: Created: The Magus (2012 may 20)
  10. //:://////////////////////////////////////////////////
  11.  
  12. void storeLocalsOnPlaceable(object oPlace);
  13.  
  14. void storeLocalsOnPlaceable(object oPlace)
  15. {
  16.     SetLocalString(oPlace, "SPAWN", GetResRef(OBJECT_SELF));
  17.     SetLocalString(oPlace, "SPAWN_PLACE", GetLocalString(OBJECT_SELF, "SPAWN_PLACE"));
  18.     SetLocalString(oPlace, "SPAWN_VFX", GetLocalString(OBJECT_SELF, "SPAWN_VFX"));
  19.     SetLocalFloat(oPlace, "SPAWN_DISTANCE", GetLocalFloat(OBJECT_SELF, "SPAWN_DISTANCE"));
  20.     SetLocalInt(oPlace, "SPAWN_APPEAR", GetLocalInt(OBJECT_SELF, "SPAWN_APPEAR"));
  21. }
  22.  
  23. void main()
  24. {
  25.     if(GetLocalInt(OBJECT_SELF, "SPAWNED"))
  26.         return;
  27.  
  28.     float fDist = GetLocalFloat(OBJECT_SELF, "SPAWN_DISTANCE");
  29.     object oPC  = GetNearestCreature(CREATURE_TYPE_PERCEPTION, PERCEPTION_SEEN);
  30.     if ( GetIsObjectValid(oPC) && GetIsPC(oPC))
  31.         if(GetDistanceBetween(oPC,OBJECT_SELF)<fDist)
  32.             return;
  33.  
  34.     SetLocalInt(OBJECT_SELF, "SPAWNED", TRUE);
  35.     object oPlace = CreateObject(   OBJECT_TYPE_PLACEABLE,
  36.                                     GetLocalString(OBJECT_SELF, "SPAWN_PLACE"),
  37.                                     GetLocation(OBJECT_SELF),
  38.                                     GetLocalInt(OBJECT_SELF, "SPAWN_APPEAR")
  39.                                  );
  40.     storeLocalsOnPlaceable(oPlace);
  41.  
  42.     effect eAOE = EffectAreaOfEffect(           GetLocalInt(oPlace, "AOE_ID"),
  43.                                                 GetLocalString(oPlace, "AOE_ENTER"),
  44.                                                 GetLocalString(oPlace, "AOE_HB"),
  45.                                                 GetLocalString(oPlace, "AOE_EXIT")
  46.                                              );
  47.     ApplyEffectAtLocation(DURATION_TYPE_PERMANENT, eAOE, GetLocation(oPlace));
  48.     object oAOE = GetNearestObject(OBJECT_TYPE_AREA_OF_EFFECT, oPlace);
  49.     SetLocalObject(oPlace, "PAIRED", oAOE);
  50.     SetLocalObject(oAOE, "PAIRED", oPlace);
  51.  
  52.  
  53.     DelayCommand(0.1, DestroyObject(OBJECT_SELF));
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement