home *** CD-ROM | disk | FTP | other *** search
/ PC Zone 125 / DPPCZ0203B.7z / DPPCZ0203B.ISO / Demos / Neverwinter / data1.cab / override / nw_ch_ac1.nss < prev    next >
Text File  |  2002-09-10  |  7KB  |  150 lines

  1. //::///////////////////////////////////////////////
  2. //:: Associate: Heartbeat
  3. //:: NW_CH_AC1.nss
  4. //:: Copyright (c) 2001 Bioware Corp.
  5. //:://////////////////////////////////////////////
  6. /*
  7.     Move towards master or wait for him
  8. */
  9. //:://////////////////////////////////////////////
  10. //:: Created By: Preston Watamaniuk
  11. //:: Created On: Nov 21, 2001
  12. //:://////////////////////////////////////////////
  13. #include "NW_I0_GENERIC"
  14.  
  15. void main()
  16. {
  17.     if(!GetAssociateState(NW_ASC_IS_BUSY))
  18.     {
  19.         object oMaster = GetMaster();
  20.         //Seek out and disable undisabled traps
  21.         object oTrap = GetNearestTrapToObject();
  22.         if(GetIsObjectValid(oTrap) && GetDistanceToObject(oTrap) < 15.0 && GetDistanceToObject(oTrap) > 0.0)
  23.         {
  24.             object oTrapSaved = GetLocalObject(OBJECT_SELF, "NW_ASSOCIATES_LAST_TRAP");
  25.             int nTrapDC = GetTrapDisarmDC(oTrap);
  26.             int nSkill = GetSkillRank(SKILL_DISABLE_TRAP);
  27.             nSkill = nSkill + 20 - nTrapDC;
  28.             
  29.             if(nSkill > 0 && GetSkillRank(SKILL_DISABLE_TRAP) > 0)
  30.             {
  31.                 if( GetIsObjectValid(oMaster)
  32.                     && nSkill > 0
  33.                     && !IsInConversation(OBJECT_SELF)
  34.                     && !GetIsInCombat()
  35.                     && GetCurrentAction(OBJECT_SELF) != ACTION_REST
  36.                     && GetCurrentAction(OBJECT_SELF) != ACTION_DISABLETRAP)
  37.                 {
  38.                     ClearAllActions();
  39.                     ActionUseSkill(SKILL_DISABLE_TRAP, oTrap);
  40.                     ActionDoCommand(SetCommandable(TRUE));
  41.                     ActionDoCommand(PlayVoiceChat(VOICE_CHAT_TASKCOMPLETE));
  42.                     SetCommandable(FALSE);
  43.                     return;
  44.                 }
  45.             }
  46.             else if(oTrap != oTrapSaved && GetSkillRank(SKILL_DISABLE_TRAP) > 0)
  47.             {
  48.                 PlayVoiceChat(VOICE_CHAT_CANTDO);
  49.                 SetLocalObject(OBJECT_SELF, "NW_ASSOCIATES_LAST_TRAP", oTrap);
  50.             }
  51.         }
  52.         if(GetIsObjectValid(oMaster) &&
  53.             GetCurrentAction(OBJECT_SELF) != ACTION_FOLLOW &&
  54.             GetCurrentAction(OBJECT_SELF) != ACTION_DISABLETRAP &&
  55.             GetCurrentAction(OBJECT_SELF) != ACTION_OPENLOCK &&
  56.             GetCurrentAction(OBJECT_SELF) != ACTION_REST &&
  57.             GetCurrentAction(OBJECT_SELF) != ACTION_ATTACKOBJECT)
  58.         {
  59.             if(
  60.                !GetIsObjectValid(GetAttackTarget()) &&
  61.                !GetIsObjectValid(GetAttemptedSpellTarget()) &&
  62.                !GetIsObjectValid(GetAttemptedAttackTarget()) &&
  63.                !GetIsObjectValid(GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY, OBJECT_SELF, 1, CREATURE_TYPE_PERCEPTION, PERCEPTION_SEEN))
  64.               )
  65.             {
  66.                 if(GetDistanceToObject(GetMaster()) > 6.0)
  67.                 {
  68.                     if(GetAssociateState(NW_ASC_HAVE_MASTER))
  69.                     {
  70.                         if(!GetIsFighting(OBJECT_SELF))
  71.                         {
  72.                             if(!GetAssociateState(NW_ASC_MODE_STAND_GROUND))
  73.                             {
  74.                                 if(GetDistanceToObject(GetMaster()) > GetFollowDistance())
  75.                                 {
  76.                                     ClearAllActions();
  77.                                     if(GetAssociateState(NW_ASC_AGGRESSIVE_STEALTH) || GetAssociateState(NW_ASC_AGGRESSIVE_SEARCH))
  78.                                     {
  79.                                          if(GetAssociateState(NW_ASC_AGGRESSIVE_STEALTH))
  80.                                          {
  81.                                             //ActionUseSkill(SKILL_HIDE, OBJECT_SELF);
  82.                                             //ActionUseSkill(SKILL_MOVE_SILENTLY,OBJECT_SELF);
  83.                                          }
  84.                                          if(GetAssociateState(NW_ASC_AGGRESSIVE_SEARCH))
  85.                                          {
  86.                                             ActionUseSkill(SKILL_SEARCH, OBJECT_SELF);
  87.                                          }
  88.                                          MyPrintString("GENERIC SCRIPT DEBUG STRING ********** " + "Assigning Force Follow Command with Search and/or Stealth");
  89.                                          ActionForceFollowObject(oMaster, GetFollowDistance());
  90.                                     }
  91.                                     else
  92.                                     {
  93.                                          MyPrintString("GENERIC SCRIPT DEBUG STRING ********** " + "Assigning Force Follow Normal");
  94.                                          ActionForceFollowObject(oMaster, GetFollowDistance());
  95.                                          //ActionForceMoveToObject(GetMaster(), TRUE, GetFollowDistance(), 5.0);
  96.                                     }
  97.                                 }
  98.                             }
  99.                         }
  100.                     }
  101.                 }
  102.                 else if(!GetAssociateState(NW_ASC_MODE_STAND_GROUND))
  103.                 {
  104.                     if(GetIsObjectValid(oMaster))
  105.                     {
  106.                         if(GetCurrentAction(oMaster) != ACTION_REST)
  107.                         {
  108.                             ClearAllActions();
  109.                             if(GetAssociateState(NW_ASC_AGGRESSIVE_STEALTH) || GetAssociateState(NW_ASC_AGGRESSIVE_SEARCH))
  110.                             {
  111.                                  if(GetAssociateState(NW_ASC_AGGRESSIVE_STEALTH))
  112.                                  {
  113.                                     //ActionUseSkill(SKILL_HIDE, OBJECT_SELF);
  114.                                     //ActionUseSkill(SKILL_MOVE_SILENTLY,OBJECT_SELF);
  115.                                  }
  116.                                  if(GetAssociateState(NW_ASC_AGGRESSIVE_SEARCH))
  117.                                  {
  118.                                     ActionUseSkill(SKILL_SEARCH, OBJECT_SELF);
  119.                                  }
  120.                                  MyPrintString("GENERIC SCRIPT DEBUG STRING ********** " + "Assigning Force Follow Command with Search and/or Stealth");
  121.                                  ActionForceFollowObject(oMaster, GetFollowDistance());
  122.                             }
  123.                             else
  124.                             {
  125.                                  MyPrintString("GENERIC SCRIPT DEBUG STRING ********** " + "Assigning Force Follow Normal");
  126.                                  ActionForceFollowObject(oMaster, GetFollowDistance());
  127.                             }
  128.                         }
  129.                     }
  130.                 }
  131.             }
  132.             else if(!GetIsObjectValid(GetAttackTarget()) &&
  133.                !GetIsObjectValid(GetAttemptedSpellTarget()) &&
  134.                !GetIsObjectValid(GetAttemptedAttackTarget()) &&
  135.                !GetAssociateState(NW_ASC_MODE_STAND_GROUND))
  136.             {
  137.                 //DetermineCombatRound();
  138.             }
  139.  
  140.         }
  141.         if(GetSpawnInCondition(NW_FLAG_HEARTBEAT_EVENT))
  142.         {
  143.             SignalEvent(OBJECT_SELF, EventUserDefined(1001));
  144.         }
  145.     }
  146. }
  147.  
  148.  
  149.  
  150.