Guest User

Untitled

a guest
Jun 19th, 2018
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  2. //     CHANGE THESE VARIABLES     //
  3. //{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  4.  
  5.      //-----------------------------//
  6.      //   Character Name Configs    //
  7.      //-----------------------------//
  8.     var leader      = "Vitamins";           //Main Sorc Leader
  9.     var pally       = "iSpun";              //Main Pally
  10.     var pally2  = "WeSpun";     //Helper Pally
  11.     var pally3  = "pally3";     //Helper Pally2
  12.     var barb       = "Lurk";            //Main Barb
  13.     var zon     = "zon";        //Amazon
  14.     var nec     = "iBoNeD";     //Nec
  15.     var sorc    = "sorc";       //Sorc
  16.     var leecher     = "Leecher";        //Passive Leecher
  17.      //--------------//
  18.       //   Settings   //
  19.       //--------------//
  20.     var delay_start = 25000;                //This is in milaseconds.  Sorc delay to give Barb/Pally time to buy.  Set to 0 to disable.
  21.     var boss_only   = true;                 //If true, kills boss first and ignores remaining monsters.
  22.     var own_tp      = true;                 //If true, each character will use their own TP to get to town.
  23.     var pickit_seals = false;               //Do you want helpers to Pickit Seals? 
  24.      //--------------------//
  25.      //   Announcements    //
  26.      //--------------------//
  27.     var announce_active = true;        //If true, sorc will use say commands
  28.     var announce_bo     = "BO";         //BO TP is Up commands
  29.     var announce_viz    = "Viz Up";     //Vizier Up command
  30.     var announce_vizd   = "Viz Down";   //Vizier Dead command  
  31.     var announce_inf    = "Fect Up";    //Infect Up command
  32.     var announce_infd   = "Fect Down";  //Infect Dead command
  33.     var announce_seis   = "Seis Up";    //DeSeis Up command
  34.     var announce_seisd  = "Seis Down";  //DeSeis Dead command
  35.     var announce_d      = "Dia Out";    //Diablo Up command
  36.             //-------------------//
  37.         // Main Pally Config //
  38.         //-------------------//
  39.     var ham_viz = 5;                    //Ammount of pre-hammers for Vizier
  40.     var ham_inf = 10;                   //Ammount of pre-hammers for Infector
  41.     var ham_des = 10;                   //Ammount of pre-hammers for DeSeis
  42.     var pally_Dia = false;              //If true will help kill Diablo
  43.         //---------------------//
  44.          // Helper Pally Config //
  45.          //---------------------//
  46.     var ham2_viz = 5;                    //Ammount of pre-hammers for Vizier
  47.     var ham2_inf = 12;                   //Ammount of pre-hammers for Infector
  48.     var ham2_des = 12;                   //Ammount of pre-hammers for DeSeis
  49.     var pally2_Dia = false;                 //If true will help kill Diablo
  50.         //-----------------//
  51.         //  Amazon Config  //
  52.         //-----------------//
  53.     var zon_Dia = false;                //If true will help kill Diablo
  54.         //--------------------//
  55.             // Necromancer Config //
  56.          //--------------------//
  57.     var nec_Dia = false;                //If true will help kill Diablo
  58.         //----------------------------//
  59.         //  Helper Sorceress Config  //
  60.          //----------------------------//
  61.     var sorc_viz = 5;                   //Number of pre casts for viz
  62.     var sorc_inf = 10;                  //Number of pre casts for inf
  63.     var sorc_des = 10;                  //Number of pre casts for seis
  64.     var sorc_Dia = false;               //If true will help kill Diablo    
  65.          //-------------------//
  66.          // Main Barb Config  //
  67.          //-------------------//
  68.     var tp_howl = false;               //Howl after entering TP's
  69.     var tp_bo   = false;               //BO after entering TP's
  70.     var leap_inf = 7;                  //Ammount of pre-leaps for Infector
  71.     var leap_des = 7;                  //Ammount of pre-leaps for DeSeis
  72.     var barb_Dia = false;               //If true will help kill Diablo
  73.         //-------------------//
  74.         // Main Barb Config  //
  75.         //-------------------//
  76.     var leech_Dia = false;              //If true will Leech Diablo
  77. //}
  78. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  79. //  Global Variables (Dont Touch)  //
  80. //{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  81.     var _MyDT_PreMessage = "";
  82.     var _sealpos = 0;
  83.     var safex;
  84.     var safey;
  85.     var TPx;
  86.     var TPy;
  87.     var prevx;
  88.     var prevy;
  89.     var left_barb = false;
  90.     var left_pally = false;
  91.     var d_spawn = false;
  92. //}
  93. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  94. //                   Main Functions                     //
  95. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  96. function NTMain()
  97. {
  98.     Include("libs/common/NTCommon.ntl");
  99.     NTC_IncludeLibs();
  100.     NTC_IncludeConfig("NTBot/char_configs");
  101.     NT_LoadConfig();
  102.     NTSI_LoadNIPFiles("NTBot/item_configs");
  103.     NTA_Initialize();
  104.    
  105.     if(!NTTM_CheckAct())
  106.     {
  107.         NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
  108.         return;
  109.     }
  110.    
  111.     NTC_Delay(1000);
  112.    
  113.     if(!NTTM_CheckAct(4))
  114.     {
  115.         NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
  116.         return;
  117.     }
  118.    
  119.     RegisterEvent(EVENT_GAMEMSG, quitfunc);
  120.    
  121.     //Empty txt file
  122.     TD_File("NTBot/bots/TeamD.txt", 1);
  123.    
  124.     //Leader Sorc
  125.     if(me.name == leader)
  126.     {
  127.         if(!NTTM_CheckAct(4))
  128.             {
  129.             NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
  130.             return;
  131.             }      
  132.         if(delay_start)
  133.             NTC_Delay(delay_start);    
  134.         NTTMGR_TownManager();  
  135.         TD_Sorcfunc();
  136.     }
  137.    
  138.     //Helpers
  139.     if(me.name == pally || me.name == pally2 || me.name == pally3 || me.name == barb || me.name == zon || me.name == nec || me.name == sorc || me.name == leecher)
  140.     {
  141.         NTTMGR_TownManager();
  142.         NTTM_TownMove("portalspot");
  143.        
  144.         while(1) {
  145.             TD_TeamCommands();
  146.             Delay(200);
  147.         }
  148.     }      
  149.     NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
  150. }
  151. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  152. //                   Main Sorceress                     //
  153. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  154. function TD_Sorcfunc()
  155. {
  156.     NTC_Delay(500);
  157.     if(!NTTM_TownMove("waypoint"))
  158.         {
  159.         NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_TownMove()");
  160.         return;
  161.         }
  162.    
  163.     if(!NTM_TakeWaypoint(107))
  164.         {
  165.         NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeWaypoint()");
  166.         return;
  167.         }  
  168.     NTC_Delay(500);
  169.     NTM_MoveTo(me.areaid, me.x+5, me.y);
  170.     TD_Do_Tp();
  171.    
  172.     //Announce say commands
  173.     if(announce_active)
  174.         Say(announce_bo);
  175.    
  176.     TD_File("NTBot/bots/TeamD.txt", 1, ".bo");
  177.     NTC_Delay(1500);
  178.     //if barb never shows
  179.     var bo_timeout = 0;
  180.     while(!me.GetState(32))
  181.     {
  182.         if(bo_timeout >= 40)
  183.         {
  184.             NTC_Delay(500);
  185.             ExitGame();
  186.         }
  187.        
  188.         NTC_Delay(500);
  189.         bo_timeout++;
  190.     }
  191.    
  192.     NTP_DoPrecast(true);
  193.        
  194.     if(!TD_MoveTo(108, 7802, 5591)) {
  195.         NTC_SendMsgToScript("NTBotGame.ntj", "TD_MoveTo()");
  196.         return;
  197.     }
  198.  
  199.     //Detect layout and move to next position
  200.     if(TD_DetectLayout(1) == 1)
  201.         TD_Sorc_Next(7681, 5296);
  202.     else
  203.         TD_Sorc_Next(7682, 5316);
  204.    
  205.    
  206.     //Announce say commands
  207.     if(announce_active)
  208.         Say(announce_viz);
  209.        
  210.     //Write to file
  211.     TD_File("NTBot/bots/TeamD.txt", 1, ".s1"); //vizier
  212.    
  213.     if(!TD_VizierSeal())
  214.     {
  215.         NTC_SendMsgToScript("NTBotGame.ntj", "Seal opening");
  216.         return;
  217.     }
  218.    
  219.     var _msg = TD_File("NTBot/bots/TeamD.txt", 0);
  220.     var msg2 = _msg.substring(_msg.indexOf("/") + 1);
  221.    
  222.     //Sorc attack rotation for seals.
  223.     NTM_MoveTo(me.areaid, TPx, TPy);
  224.    
  225.         var _viz = NTC_FindUnit(NTC_UNIT_MONSTER, GetLocaleString(2851), 120);
  226.     if(_viz && _viz.GetStat(43) > 100) // ci viz
  227.     {
  228.         if (!CheckCollision(me, _viz, 1))
  229.         {
  230.             var _pos = me.GetOptimalAttackPos(_viz.areaid, _viz.x, _viz.y, 6, 1);
  231.             Print("Can't attack Viz. Moving.");
  232.             _pos ? NTM_MoveTo(_viz.areaid, _pos[0], _pos[1], 0) : NTM_MoveTo(_viz.areaid, _viz.x, _viz.y, 0);
  233.         }      
  234.         while (_viz && _viz.hp > 0 && _viz.mode != 0  && _viz.mode != 12)
  235.         {
  236.             NTC_CastSkill(59, NTC_HAND_RIGHT, _viz);
  237.             while (me.GetSkillStatus(59) == 8)
  238.                 NTC_CastSkill(55, NTC_HAND_RIGHT, _viz);  // glacial
  239.                 //NTC_CastSkill(42, NTC_HAND_LEFT, _inf);  // blast
  240.             _viz = NTC_FindUnit(NTC_UNIT_MONSTER, GetLocaleString(2851), 120);
  241.         }  
  242.     }
  243.     else
  244.     {
  245.         Print("*Rawr* i are agressive sorc!");
  246.         while (_viz && _viz.hp > 0 && _viz.mode != 0  && _viz.mode != 12)
  247.         {
  248.             if (me.GetSkillStatus(59) != 8)
  249.                 NTC_CastSkill(59, NTC_HAND_RIGHT, _viz);
  250.             if (GetDistance(me, _viz) > 5)
  251.                 NTM_MoveTo(_viz.areaid, _viz.x, _viz.y);
  252.             NTC_CastSkill(55, NTC_HAND_RIGHT, _viz);   
  253.             while (me.GetSkillStatus(59) == 8)
  254.                 NTC_CastSkill(45, NTC_HAND_RIGHT, _viz);  // ib
  255.             _viz = NTC_FindUnit(NTC_UNIT_MONSTER, GetLocaleString(2851), 120);
  256.         }      
  257.     }
  258.     NTSI_PickItems();
  259.    
  260.     //Write to file
  261.     NT_File("NTBot/bots/TeamD.txt", 1, ".s1d"); //Vizier Dead
  262.    
  263.     //New Check safe
  264.     if(NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe))
  265.     {
  266.         NTTMGR_VisitTown();
  267.     }
  268.    
  269.     NTP_DoPrecast(true);
  270.    
  271.     //Detect layout and move to next position
  272.     if(TD_DetectLayout(3) == 1)
  273.         TD_Sorc_Next(7917, 5294);
  274.     else
  275.         TD_Sorc_Next(7909, 5276);
  276.    
  277.     //Announce say commands
  278.     if(announce_active)
  279.         Say(announce_inf);
  280.        
  281.     //Write command to file for other chars
  282.     TD_File("NTBot/bots/TeamD.txt", 1, ".s3"); //infector
  283.  
  284.     //Open infect seal
  285.     if(!TD_InfectorSeal())
  286.     {
  287.         NTC_SendMsgToScript("NTBotGame.ntj", "Seal opening");
  288.         return;
  289.     }
  290.  
  291.     //Sorc attack rotation infector seal.
  292.     NTM_MoveTo(me.areaid, TPx, TPy);
  293.     var _inf = NTC_FindUnit(NTC_UNIT_MONSTER, GetLocaleString(2853), 20);
  294.         while (_inf && _inf.hp  > 0 && _inf.mode != 0  && _inf.mode != 12)
  295.             {
  296.             NTC_CastSkill(59, NTC_HAND_RIGHT, _inf);
  297.             while (me.GetSkillStatus(59) == 8)
  298.                 NTC_CastSkill(55, NTC_HAND_LEFT, _inf);
  299.                 NTC_CastSkill(42, NTC_HAND_LEFT, _inf);
  300.             _inf = NTC_FindUnit(NTC_UNIT_MONSTER, GetLocaleString(2853), 50);
  301.             }
  302.         NTSI_PickItems();
  303.    
  304.     NT_File("NTBot/bots/TeamD.txt", 1, ".s3d"); //Infector Dead
  305.    
  306.     //Detect layout and move to next position
  307.     if(TD_DetectLayout(2) == 1)
  308.         TD_Sorc_Next(7776, 5230);
  309.     else
  310.         TD_Sorc_Next(7779, 5200);
  311.  
  312.     //Announce say commands
  313.     if(announce_active)
  314.         Say(announce_seis);
  315.    
  316.     //Write command to file for other chars
  317.     TD_File("NTBot/bots/TeamD.txt", 1, ".s2"); //de seis
  318.  
  319.     if(!TD_DeSeisSeal())
  320.     {
  321.         NTC_SendMsgToScript("NTBotGame.ntj", "Seal opening");
  322.         return;
  323.     }
  324.        
  325.     //Sorc attack rotation DeSeis seals.
  326.     NTM_MoveTo(me.areaid, TPx, TPy);   
  327.         var _Seis = NTC_FindUnit(NTC_UNIT_MONSTER, GetLocaleString(2852), 25);
  328.             while(_Seis && _Seis.mode != 12)
  329.                 {
  330.                 NTA_ClearPosition(10);
  331.                 NTA_KillMonster(GetLocaleString(2852));
  332.                 NTSI_PickItems()
  333.                 }
  334.                
  335.     NT_File("NTBot/bots/TeamD.txt", 1, ".s2d"); //De Seis Dead
  336.        
  337.     //Sorc Leecher TP  
  338.         TD_MoveTo(me.areaid, 7763, 5267);
  339.         TD_Deploy(7763, 5267, 0, 0, 10, 10);
  340.         if(NTM_MakeTP())
  341.             Say("Leech TP up")
  342.             NTC_Delay(750);
  343.    
  344.     NTP_DoPrecast(true);
  345.    
  346.     if(!NTM_MoveTo(me.areaid, 7792, 5292))
  347.     {
  348.         NTC_SendMsgToScript("NTBotGame.ntj", "NTM_MoveTo()");
  349.         return;
  350.     }
  351.  
  352.     NTM_MakeTP();
  353.    
  354.     //Announce say commands
  355.     if(announce_active)
  356.         Say(announce_d);
  357.        
  358.     d_spawn = true;
  359.     TD_File("NTBot/bots/TeamD.txt", 1, ".d");
  360.    
  361.     NTC_Delay(1500);
  362.     NTC_FindUnit(NTC_UNIT_MONSTER, 243, 100);
  363.     if(!NTA_KillMonster(243))
  364.     {
  365.         NTC_SendMsgToScript("NTBotGame.ntj", "NTA_KillMonster()");
  366.         return;
  367.     }
  368.    
  369.     NTSI_PickItems();
  370.     NTC_Delay(100);
  371. }
  372. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  373. //                   Main Team                          //
  374. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  375. function TD_TeamCommands()
  376. {
  377.     var _msg = TD_File("NTBot/bots/TeamD.txt", 0);
  378.  
  379.     if (_msg && _msg != _MyDT_PreMessage) {
  380.         _MyDT_PreMessage = _msg;
  381.  
  382.         switch (_msg.substring(_msg.indexOf("/") + 1)) {
  383.         //{BO
  384.         case ".bo":
  385.             if(me.name == pally || me.name == pally2 || me.name == pally3 || me.name == zon || me.name == nec || me.name == sorc || me.name == leecher) { //Team's BO
  386.                 NTM_UsePortal("BluePortal", 107, leader);
  387.                 NTC_Delay(500);
  388.                     NTP_DoPrecast(true);
  389.                 NTC_Delay(3500);               
  390.                 if(!NTM_UsePortal("BluePortal", 103, leader)) //or make my own?
  391.                     NTTM_CheckAct();
  392.             }          
  393.             if(me.name == barb) { //Barbarian
  394.                 NTM_UsePortal("BluePortal", 107, leader);
  395.                 while(!me.GetState(32))
  396.                     NTP_DoPrecast(true);
  397.                     NTP_DoPrecast(true);
  398.                 if(!NTM_UsePortal("BluePortal", 103, leader)) //or make my own?
  399.                     NTTM_CheckAct();
  400.             }          
  401.             break;
  402.             //}
  403.         //{vizier          
  404.         case ".s1":
  405.             if(me.name == pally) { //Main Hammerdin
  406.                 NTM_UsePortal("BluePortal", 108, leader);
  407.                 TD_Preattack(GetLocaleString(2851), ham_viz);
  408.                 TD_KillViz();
  409.             }
  410.             if(me.name == pally2 || me.name == pally3) { //Helper Hammerdin
  411.                 NTM_UsePortal("BluePortal", 108, leader);
  412.                 TD_Preattack(GetLocaleString(2851), ham2_viz);
  413.                 TD_KillViz();
  414.             }
  415.             if(me.name == zon) { //Amazon
  416.                 NTM_UsePortal("BluePortal", 108, leader);
  417.                 //NTC_Delay(2000);
  418.                 TD_zonattack(GetLocaleString(2851), 1);
  419.                 TD_KillViz();
  420.  
  421.             }
  422.             if(me.name == nec) { //Necromancer
  423.                 NTM_UsePortal("BluePortal", 108, leader);
  424.                 TD_necattack(GetLocaleString(2851), 1);
  425.                 attackNec(2851);
  426.                 if(announce_active)
  427.                     Say(announce_vizd);                
  428.                 if(pickit_seals)
  429.                     NTSI_PickItems();
  430.             }
  431.             if(me.name == sorc) { //Sorceress
  432.                 NTM_UsePortal("BluePortal", 108, leader);
  433.                 //NTC_Delay(2000);
  434.                 TD_sorcattack(GetLocaleString(2851), sorc_viz);
  435.                 TD_KillViz();
  436.             }                  
  437.             if(me.name == barb) { //Barbarian
  438.                 NTM_UsePortal("BluePortal", 108, leader);
  439.                 babaprecast();         
  440.                 NTC_CastSkill(130, NTC_HAND_RIGHT);
  441.                 NTC_Delay(200);
  442.                 NTC_CastSkill(130, NTC_HAND_RIGHT);
  443.                 TD_Take_TP()               
  444.             }
  445.             if(me.name == leecher) { //Passive Leecher
  446.                 NTM_UsePortal("BluePortal", 108, leader);
  447.             }
  448.             break;             
  449.         case ".s1d":
  450.             if(me.name == pally || me.name == pally2 || me.name == pally3 || me.name == zon || me.name == nec || me.name == sorc || me.name == leecher)
  451.             {
  452.                 if(announce_active)
  453.                     Say(announce_vizd);
  454.                 TD_Take_TP()
  455.             }  
  456.             break;         
  457.         //{de seis
  458.         case ".s2":
  459.             if(me.name == pally) { //Main Hammerdin
  460.                 NTM_UsePortal("BluePortal", 108, leader);              
  461.                 TD_Preattack(GetLocaleString(2852), ham_des);
  462.                 TD_KillSeis(); 
  463.             }
  464.             if(me.name == pally2 || me.name == pally3) { //Helper Hammerdin
  465.                 NTM_UsePortal("BluePortal", 108, leader);              
  466.                 TD_Preattack(GetLocaleString(2852), ham2_des);
  467.                 TD_KillSeis();     
  468.             }
  469.             if(me.name == zon) { //Amazon
  470.                 NTM_UsePortal("BluePortal", 108, leader);
  471.                 //NTC_Delay(2000);             
  472.                 TD_zonattack(GetLocaleString(2852), 1);
  473.                 TD_KillSeis();     
  474.             }
  475.             if(me.name == nec) { //Necromancer
  476.                 NTM_UsePortal("BluePortal", 108, leader);
  477.                 TD_necattack(GetLocaleString(2852), 1);
  478.                 attackNec(2852);
  479.                 if(announce_active)
  480.                     Say(announce_seisd);                                           
  481.                 if(pickit_seals)
  482.                     NTSI_PickItems();
  483.             }
  484.             if(me.name == sorc) { //Sorceress
  485.                 NTM_UsePortal("BluePortal", 108, leader);
  486.                 //NTC_Delay(2000);
  487.                 TD_sorcattack(GetLocaleString(2852), sorc_des);
  488.                 TD_KillSeis();         
  489.             }
  490.             if(me.name == barb){ //Barbarian
  491.                 NTM_UsePortal("BluePortal", 108, leader);
  492.                 babaprecast(); 
  493.                 preAttackBarbLeap(GetLocaleString(2852), leap_des);
  494.                 TD_KillSeis();                 
  495.             }  
  496.             if(me.name == leecher) { //Passive Leecher
  497.                 NTM_UsePortal("BluePortal", 108, leader);
  498.             }          
  499.             break;
  500.         case ".s2d":
  501.             if(me.name == pally || me.name == pally2 || me.name == pally3 || me.name == barb || me.name == zon || me.name == nec || me.name == sorc || me.name == leecher)
  502.             {
  503.                 if(announce_active)
  504.                     Say(announce_seisd);
  505.                 TD_Take_TP()
  506.             }  
  507.             break; 
  508.             //}
  509.         //{infector
  510.         case ".s3":
  511.             if(me.name == pally) { //Main Hammerdin
  512.                 NTM_UsePortal("BluePortal", 108, leader);
  513.                 TD_Preattack(GetLocaleString(2853), ham_inf);
  514.                 TD_KillFect(); 
  515.             }
  516.             if(me.name == pally2 || me.name == pally3) { //Helper Hammerdin
  517.                 NTM_UsePortal("BluePortal", 108, leader);
  518.                 TD_Preattack(GetLocaleString(2853), ham2_inf);
  519.                 TD_KillFect();         
  520.             }
  521.             if(me.name == zon) {//Amazon
  522.                 NTM_UsePortal("BluePortal", 108, leader);
  523.                 //NTC_Delay(2000);
  524.                 TD_zonattack(GetLocaleString(2853), 1);
  525.                 TD_KillFect();         
  526.             }
  527.         if(me.name == nec) { //Necromancer
  528.                 NTM_UsePortal("BluePortal", 108, leader);
  529.                 TD_necattack(GetLocaleString(2853), 1);
  530.                 attackNec(2853);
  531.                 if(announce_active)
  532.                     Say(announce_infd);                    
  533.                 if(pickit_seals)
  534.                     NTSI_PickItems();      
  535.             }
  536.             if(me.name == sorc) { //Sorceress
  537.                 NTM_UsePortal("BluePortal", 108, leader);
  538.                 //NTC_Delay(2000);
  539.                 TD_sorcattack(GetLocaleString(2853), sorc_inf);
  540.                 TD_KillFect(); 
  541.             }                  
  542.             if(me.name == barb){ //Barbarian
  543.                 NTM_UsePortal("BluePortal", 108, leader);
  544.                 babaprecast();                 
  545.                 preAttackBarbLeap(GetLocaleString(2853), leap_inf);
  546.                 TD_KillFect();                     
  547.             }
  548.             if(me.name == leecher) { //Passive Leecher
  549.                 NTM_UsePortal("BluePortal", 108, leader);
  550.                 }
  551.             break;
  552.         case ".s3d":
  553.             if(me.name == pally || me.name == pally2 || me.name == pally3 || me.name == barb || me.name == zon || me.name == nec || me.name == sorc || me.name == leecher)
  554.             {
  555.                 if(announce_active)
  556.                     Say(announce_infd);
  557.                 TD_Take_TP()
  558.             }  
  559.             break; 
  560.             //}    
  561.         //{Diablo
  562.         case ".d":
  563.             if(me.name == pally) { //Main Hammerdin
  564.             if(pally_Dia){         
  565.                 NTM_UsePortal("BluePortal", 108, leader);
  566.                 NTC_FindUnit(NTC_UNIT_MONSTER, 243, 100);
  567.                 if(!TD_KillMonster(243)) {
  568.                     NTC_SendMsgToScript("NTBotGame.ntj", "TD_KillMonster()");
  569.                     return;
  570.                 }
  571.                 NTSI_PickItems();
  572.                 }
  573.             }
  574.             if(me.name == pally2 || me.name == pally3) { //Helper Hammerdin
  575.             if(pally2_Dia){
  576.                 NTM_UsePortal("BluePortal", 108, leader);
  577.                 NTC_FindUnit(NTC_UNIT_MONSTER, 243, 100);
  578.                 if(!TD_KillMonster(243)) {
  579.                     NTC_SendMsgToScript("NTBotGame.ntj", "TD_KillMonster()");
  580.                     return;
  581.                 }
  582.                 NTSI_PickItems();
  583.                 }
  584.             }
  585.             if(me.name == zon) { //Amazon
  586.             if(zon_Dia){
  587.                 NTM_UsePortal("BluePortal", 108, leader);
  588.                 NTC_FindUnit(NTC_UNIT_MONSTER, 243, 100);
  589.                 if(!TD_KillMonster(243)) {
  590.                     NTC_SendMsgToScript("NTBotGame.ntj", "TD_KillMonster()");
  591.                     return;
  592.                 }
  593.                 NTSI_PickItems();
  594.                 }
  595.             }
  596.             if(me.name == nec) { //Necromancer
  597.             if(nec_Dia){
  598.                 NTM_UsePortal("BluePortal", 108, leader);
  599.                 NTC_FindUnit(NTC_UNIT_MONSTER, 243, 100);
  600.                 if(!TD_KillMonster(243)) {
  601.                     NTC_SendMsgToScript("NTBotGame.ntj", "TD_KillMonster()");
  602.                     return;
  603.                 }
  604.                 NTSI_PickItems();
  605.                 }
  606.             }
  607.             if(me.name == sorc) { //Sorceress
  608.             if(sorc_Dia){
  609.                 NTM_UsePortal("BluePortal", 108, leader);
  610.                 NTC_FindUnit(NTC_UNIT_MONSTER, 243, 100);
  611.                 if(!TD_KillMonster(243)) {
  612.                     NTC_SendMsgToScript("NTBotGame.ntj", "TD_KillMonster()");
  613.                     return;
  614.                 }
  615.                 }
  616.             }  
  617.             if(me.name == barb) { //Barbarian
  618.             if(barb_Dia){
  619.                 NTM_UsePortal("BluePortal", 108, leader);              
  620.                 if(tp_howl)
  621.                     NTC_CastSkill(130, NTC_HAND_RIGHT);
  622.                 if(tp_bo)
  623.                     NTP_DoPrecast(true);
  624.                 NTA_ClearPosition(20);             
  625.                 var _diablo = NTC_FindUnit(NTC_UNIT_MONSTER, 243)
  626.                 while(_diablo && _diablo.hp > 0)
  627.                 {
  628.                     NTSI_PickItems();
  629.                     NTC_Delay(500);
  630.                 }
  631.                 }
  632.             }
  633.             if(me.name == leecher) { //Passive Leecher
  634.                 if(leech_Dia){
  635.                     NTM_UsePortal("BluePortal", 108, leader);
  636.                 }
  637.             }
  638.             break;
  639.             //}
  640.         }
  641.     }
  642. }
  643. //----------------------------------------------//
  644. //          SORC INTERNAL FUNCTIONS             //
  645. //----------------------------------------------//
  646. //{
  647. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  648. //           Move To Next       //
  649. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  650. function TD_Sorc_Next(nextx, nexty)
  651. {
  652.     TPx = nextx;
  653.     TPy = nexty;
  654.     TD_MoveTo(me.areaid, TPx, TPy);
  655.     TD_Do_Tp();
  656. }
  657. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  658. //           Create TP          //
  659. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  660. function TD_Do_Tp()
  661. {
  662.     for(var i = 0 ; i < 5 ; i++)
  663.     {
  664.         if(NTM_MakeTP())
  665.             break;
  666.     }
  667. }
  668. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  669. //       Find Seal Layout       //
  670. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  671. function TD_DetectLayout(seal)
  672. {
  673.     switch(seal) {
  674.     case 1:
  675.         _sealpos = GetPresetUnits(me.areaid, NTC_UNIT_OBJECT);
  676.         for(var i = 0 ; i < _sealpos.length ; i++) {
  677.             if(_sealpos[i].id == 396) {
  678.                 if(_sealpos[i].roomy*5 + _sealpos[i].y == 5275)
  679.                     return 1;
  680.                 else
  681.                     return 2;
  682.  
  683.                 break;
  684.             }
  685.         }
  686.         break;
  687.     case 2:
  688.         _sealpos = GetPresetUnits(me.areaid, NTC_UNIT_OBJECT);
  689.         for(i = 0 ; i < _sealpos.length ; i++) {
  690.             if(_sealpos[i].id == 394) {
  691.                 if(_sealpos[i].roomx*5 + _sealpos[i].x == 7773)
  692.                     return 1;
  693.                 else
  694.                     return 2;
  695.  
  696.                 break;
  697.             }
  698.         }
  699.         break; 
  700.     case 3:
  701.         _sealpos = GetPresetUnits(me.areaid, NTC_UNIT_OBJECT);
  702.         for(i = 0 ; i < _sealpos.length ; i++) {
  703.             if(_sealpos[i].id == 392) {
  704.                 if(_sealpos[i].roomx*5 + _sealpos[i].x == 7893)
  705.                     return 1;
  706.                 else
  707.                     return 2;
  708.  
  709.                 break;
  710.             }
  711.         }
  712.         break;
  713.     }
  714. }
  715. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  716. //      Sorc Vizier Seal        //
  717. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  718. function TD_VizierSeal()
  719. {
  720.     for(var i = 0 ; i < 5 ; i++){
  721.         NTM_MoveToPresetUnit(me.areaid, 2, 395);
  722.         var _seal = NTC_FindUnit(NTC_UNIT_OBJECT, 395, 5);
  723.         NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _seal);
  724.        
  725.         NTC_Delay(350);
  726.        
  727.         if(_seal.mode <= 0)
  728.             NTM_MoveTo(me.areaid, safex, safey);
  729.         else
  730.             break;
  731.            
  732.         NTC_Delay(250);
  733.        
  734.         if(i == 4 && _seal.mode <= 0)
  735.             return false;
  736.     }
  737.     for(i = 0 ; i < 5 ; i++){
  738.         NTM_MoveToPresetUnit(me.areaid, 2, 396);
  739.         _seal = NTC_FindUnit(NTC_UNIT_OBJECT, 396, 5);
  740.         NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _seal);
  741.        
  742.         NTC_Delay(350);
  743.        
  744.         if(_seal.mode <= 0)
  745.             NTM_MoveTo(me.areaid, safex, safey);
  746.         else
  747.             break;
  748.            
  749.         NTC_Delay(250);
  750.        
  751.         if(i == 4 && _seal.mode <= 0)
  752.             return false;
  753.     }
  754.     return true;
  755. }
  756. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  757. //       Sorc Seis Seal         //
  758. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  759. function TD_DeSeisSeal()
  760. {
  761.     for(var i = 0 ; i < 5 ; i++){
  762.         NTM_MoveToPresetUnit(me.areaid, 2, 394);
  763.         _seal = NTC_FindUnit(NTC_UNIT_OBJECT, 394, 5);
  764.         NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _seal);
  765.        
  766.         NTC_Delay(350);
  767.        
  768.         if(_seal.mode <= 0)
  769.             NTM_MoveTo(me.areaid, safex, safey);
  770.         else
  771.             break;
  772.            
  773.         NTC_Delay(250);
  774.        
  775.         if(i == 4 && _seal.mode <= 0)
  776.             return false;
  777.     }
  778.     return true;
  779. }
  780. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  781. //     Sorc Infector Seal       //
  782. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  783. function TD_InfectorSeal()
  784. {
  785.     for(var i = 0 ; i < 5 ; i++){
  786.         NTM_MoveToPresetUnit(me.areaid, 2, 393);
  787.         _seal = NTC_FindUnit(NTC_UNIT_OBJECT, 393, 5);
  788.         NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _seal);
  789.    
  790.         NTC_Delay(350);
  791.    
  792.         if(_seal.mode <= 0)
  793.             NTM_MoveTo(me.areaid, safex, safey);
  794.         else
  795.             break;
  796.            
  797.         NTC_Delay(250);
  798.        
  799.         if(i == 4 && _seal.mode <= 0)
  800.             return false;
  801.     }
  802.     for(i = 0 ; i < 5 ; i++){
  803.         NTM_MoveToPresetUnit(me.areaid, 2, 392);
  804.         _seal = NTC_FindUnit(NTC_UNIT_OBJECT, 392, 5);
  805.         NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _seal);
  806.        
  807.         NTC_Delay(350);
  808.    
  809.         if(_seal.mode <= 0)
  810.             NTM_MoveTo(me.areaid, safex, safey);
  811.         else
  812.             break;
  813.            
  814.         NTC_Delay(250);
  815.        
  816.         if(i == 4 && _seal.mode <= 0)
  817.             return false;
  818.     }
  819.     return true;
  820. }
  821. //}
  822. //----------------------------------------------//
  823. //          TEAM INTERNAL FUNCTIONS             //
  824. //----------------------------------------------//
  825. //{
  826. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  827. //       Quit Functions         //
  828. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  829. function quitfunc(msg, type)
  830. {
  831.     if(msg.indexOf(leader) != -1 && (msg.indexOf("weaken") != -1 || msg.indexOf("timeout") != -1))
  832.     {
  833.         NTC_Delay(500);
  834.         ExitGame();
  835.     }
  836.     /*Second Computer Setting
  837.     if (msg.indexOf(leader) != -1  && msg.indexOf("Fect Up") != -1)
  838.         TD_File("NTBot/bots/TeamD.txt", 1, ".s2", 50);
  839.     if (msg.indexOf(leader) != -1  && msg.indexOf("Viz Up") != -1)
  840.         TD_File("NTBot/bots/TeamD.txt", 1, ".s1", 50);
  841.     if (msg.indexOf(leader) != -1  && msg.indexOf("Seis Up") != -1)
  842.         TD_File("NTBot/bots/TeamD.txt", 1, ".s3", 50);
  843.     if (msg.indexOf(leader) != -1  && msg.indexOf("Dia Out") != -1)
  844.         TD_File("NTBot/bots/TeamD.txt", 1, ".d", 50);
  845.     if (msg.indexOf(leader) != -1  && msg.indexOf("Leech Dia Up") != -1)
  846.         TD_File("NTBot/bots/TeamD.txt", 1, ".filler", 50); 
  847.     if (msg.indexOf(leader) != -1  && msg.indexOf("BO") != -1)
  848.         TD_File("NTBot/bots/TeamD.txt", 1, ".bo", 50);
  849.     */
  850.     else if(msg.indexOf(pally) != -1 && (msg.indexOf("weaken") != -1 || msg.indexOf("timeout") != -1))
  851.     {
  852.         left_pally = true;
  853.     }
  854.     else if(msg.indexOf(barb) != -1 && (msg.indexOf("weaken") != -1 || msg.indexOf("timeout") != -1))
  855.     {
  856.         left_barb = true;
  857.     }  
  858.     //Chicken if both barb and pally have left
  859.     if(left_barb == true && left_pally == true)
  860.     {
  861.         NTC_Delay(500);
  862.         ExitGame();
  863.     }
  864. }
  865. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  866. //           Take TP            //
  867. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  868. function TD_Take_TP()
  869. {
  870.     if(own_tp)
  871.         {
  872.         NTTM_CheckAct();
  873.         }
  874.     else
  875.         {
  876.         if(!NTM_UsePortal("BluePortal", 103, leader)) //or make my own?
  877.         NTTM_CheckAct();
  878.         }
  879. }
  880. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  881. //       Barb Pre-Cast          //
  882. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  883. function babaprecast()
  884. {
  885.     if(tp_howl)
  886.         NTC_CastSkill(130, NTC_HAND_RIGHT);
  887.     if(tp_bo)
  888.         NTP_DoPrecast(true);
  889. }  
  890. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  891. //       Barb Pre-Leap          //
  892. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  893. function preAttackBarbLeap(classid, extraLeap)
  894. {          
  895.     var preX = me.x;
  896.     var preY = me.y;
  897.    
  898.     var _boss;
  899.     var _count = 0;
  900.    
  901.     while (1)
  902.     {
  903.         if (NTC_CastSkill(132, NTC_HAND_RIGHT, me.x, me.y) && NTC_CastSkill(132, NTC_HAND_RIGHT, preX, preY))
  904.             _count++;
  905.  
  906.         _boss = NTC_FindUnit(NTC_UNIT_MONSTER, classid);
  907.                        
  908.         if (_boss || _count >= 10)
  909.             break;
  910.     }  
  911.     for(var i = 0 ; i < extraLeap ; i++)
  912.     {
  913.         _boss = NTC_FindUnit(NTC_UNIT_MONSTER, classid);
  914.         if (_boss && _boss.hp > 0 && _boss.mode != 0  && _boss.mode != 12)
  915.             NTC_CastSkill(154, NTC_HAND_RIGHT, preX, preY); // leap
  916.         else
  917.             break;
  918.     }
  919.    
  920.     return;
  921. }
  922. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  923. //       Helpers Kill Viz       //
  924. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  925. function TD_KillViz()
  926. {
  927.     if(!boss_only)
  928.         NTA_ClearPosition(10);
  929.     if(TD_KillMonster(GetLocaleString(2851)))
  930.         TD_File("NTBot/bots/TeamD.txt", 1, ".s1d"); //vizier dead  
  931.     if(pickit_seals)
  932.         NTSI_PickItems();
  933. }
  934. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  935. //       Helpers Kill Seis      //
  936. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  937. function TD_KillSeis()
  938. {
  939.     if(!boss_only)
  940.         NTA_ClearPosition(10);
  941.     if(TD_KillMonster(GetLocaleString(2852)))
  942.         TD_File("NTBot/bots/TeamD.txt", 1, ".s2d"); //Seis dead
  943.     if(pickit_seals)
  944.         NTSI_PickItems();
  945. }
  946. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  947. //       Helpers Kill Fect      //
  948. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  949. function TD_KillFect()
  950. {
  951.     if(!boss_only)
  952.         NTA_ClearPosition(10);
  953.     if(TD_KillMonster(GetLocaleString(2853)))
  954.         TD_File("NTBot/bots/TeamD.txt", 1, ".s3d"); //Infector dead
  955.     if(pickit_seals)
  956.         NTSI_PickItems();
  957. }
  958. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  959. //       Precast Hammers        //
  960. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  961. function TD_Preattack(classid, extrahammers)
  962. {
  963.     NTC_PutSkill(NTConfig_AttackSkill[4], NTC_HAND_RIGHT);
  964.     while(!NTC_FindUnit(NTC_UNIT_MONSTER, classid))
  965.         NTC_CastSkill(NTConfig_AttackSkill[3], 2);
  966.     for(var i = 0 ; i < extrahammers ; i++) {
  967.         NTC_CastSkill(NTConfig_AttackSkill[3], 2);
  968.     }
  969. }
  970. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  971. //       Precast Amazon         //
  972. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  973. function TD_zonattack(classid, attacking)
  974. {
  975.     while(!NTC_FindUnit(NTC_UNIT_MONSTER, classid))
  976.         NTA_ClearPosition(10);
  977.     for(var i = 0 ; i < attacking ; i++) {
  978.         NTC_CastSkill(NTConfig_AttackSkill[0], 2);
  979.     }
  980. }
  981. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  982. //       Precast Sorc           //
  983. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  984. function TD_sorcattack(classid, casting)
  985. {
  986.     while(!NTC_FindUnit(NTC_UNIT_MONSTER, classid))
  987.         NTC_CastSkill(NTConfig_AttackSkill[0], 2);
  988.     for(var i = 0 ; i < casting ; i++) {
  989.         NTC_CastSkill(NTConfig_AttackSkill[1], 2);
  990.     }
  991. }
  992. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  993. //     Nec Corpse Explosion     //
  994. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  995. function attackNec(classid)
  996. {
  997.     var _boss = NTC_FindUnit(NTC_UNIT_MONSTER, GetLocaleString(classid), 120);
  998.     Print("boss");
  999.     while (_boss && _boss.hp > 0 && _boss.mode != 0  && _boss.mode != 12)
  1000.     {
  1001.         _count = MyUn_CountCorpse(_boss, 9);
  1002.         (_count == 1) ? Say("!" + _count + " corpse.") : Say("!" + _count + " corpses.");
  1003.         _count = MyUn_CountCorpse(_boss, 9);
  1004.         if (_count == 0)
  1005.             NTC_CastSkill(84, NTC_HAND_RIGHT, _boss);
  1006.         else
  1007.             NTC_CastSkill(74, NTC_HAND_RIGHT, _boss);
  1008.         _boss = NTC_FindUnit(NTC_UNIT_MONSTER, GetLocaleString(classid), 120);
  1009.     }
  1010.                      
  1011.     return;
  1012. }
  1013. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  1014. //       Nec Count Corpses      //
  1015. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  1016. function MyUn_CountCorpse(target, range, count)
  1017. {
  1018.     var _target;
  1019.     var _nCorpse = 0;
  1020.  
  1021.     if (arguments.length < 3)
  1022.         count = -1;
  1023.  
  1024.     _target = NTC_FindUnit(NTC_UNIT_MONSTER);
  1025.     if (_target)
  1026.     {
  1027.         do
  1028.         {
  1029.             if (GetDistance(_target, target) <= range && MyUn_IsCorpse(_target, 0))
  1030.             {
  1031.                 _nCorpse++;
  1032.  
  1033.                 if (count > -1 && _nCorpse >= count)
  1034.                     return _nCorpse;
  1035.             }
  1036.         } while (_target.GetNext());
  1037.     }
  1038.  
  1039.     return _nCorpse;
  1040. }
  1041. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  1042. //       Nec Find Corpses       //
  1043. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  1044. function MyUn_IsCorpse(unit, mode)
  1045. {
  1046.     return ((unit.hp < 1 || unit.mode == 0 || unit.mode == 12) &&
  1047.             !unit.GetState(1) &&
  1048.             !unit.GetState(96) &&
  1049.             !unit.GetState(99) &&
  1050.             !unit.GetState(104) &&
  1051.             !unit.GetState(107) &&
  1052.             !unit.GetState(118) &&
  1053.             GetBaseStat("monstats2.txt", unit.classid, (mode == 0) ? 95 : 97));
  1054. }
  1055. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  1056. //       Nec Precast            //
  1057. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  1058. function TD_necattack(classid, extraCurse)
  1059. {          
  1060.     var preX = me.x;
  1061.     var preY = me.y;  
  1062.     var _boss;
  1063.     var _count = 0;    
  1064.     while (1)
  1065.         {
  1066.         if (NTC_CastSkill(71, NTC_HAND_RIGHT, me.x, me.y)) //Dim Vis Precast
  1067.             NTC_Delay(100);
  1068.             _count++;
  1069.             _boss = NTC_FindUnit(NTC_UNIT_MONSTER, classid);                      
  1070.         if (_boss || _count >= 10)
  1071.             break;
  1072.         }  
  1073.     for(var i = 0 ; i < extraCurse ; i++)
  1074.         {
  1075.         _boss = NTC_FindUnit(NTC_UNIT_MONSTER, classid);
  1076.         if (_boss && _boss.hp > 0 && _boss.mode != 0  && _boss.mode != 12)
  1077.             NTC_CastSkill(66, NTC_HAND_RIGHT, preX, preY); // Amp Damage Seal Boss
  1078.         else
  1079.             break;
  1080.         }
  1081.    
  1082.     return;
  1083. }
  1084. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  1085. //       Find Our Pally         //
  1086. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  1087. function TD_PallyInParty()
  1088. {
  1089.     var _player;
  1090.  
  1091.     _player = GetPlayerUnit();
  1092.  
  1093.     do {
  1094.         if(_player.name == pally)
  1095.         {
  1096.             return true;
  1097.             NTC_Delay(100);
  1098.         }
  1099.  
  1100.     } while(_player.GetNext());
  1101.    
  1102.     return false;  
  1103. }
  1104. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  1105. //       Players in Town?       //
  1106. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  1107. function TD_IsPlayerOut(area) { //
  1108.     var _player;
  1109.     var _myPartyId;
  1110.  
  1111.     _player = GetPlayerUnit();
  1112.     _myPartyId = _player.partyid;
  1113.  
  1114.     if(arguments.length < 1)
  1115.         _area = me.areaid;
  1116.     else
  1117.         _area = area;
  1118.  
  1119.     do {
  1120.         if(_player.name == pally || _player.name == barb)
  1121.         {
  1122.             if(_player.areaid == _area && _myPartyId == _player.partyid)
  1123.                 return false;
  1124.  
  1125.             NTC_Delay(100);
  1126.         }
  1127.  
  1128.     } while(_player.GetNext());
  1129.    
  1130.     return true;   
  1131. }
  1132. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  1133. //       Find TD File           //
  1134. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  1135. function TD_File(path, mode, msg, delay) {
  1136.     var _msg  = "";
  1137.     var _line = "";
  1138.     var _fileHandle;
  1139.     var _isFileCheck = false;
  1140.  
  1141.     if (arguments.length < 3) msg   = "";
  1142.     if (arguments.length < 4) delay = (mode > 0) ? 5 : 2;
  1143.  
  1144.     while (delay--) {
  1145.         if (mode == 2 && !_isFileCheck) {
  1146.             _fileHandle = FileOpen(path, 0);
  1147.             if (!_fileHandle)
  1148.                 _fileHandle = FileOpen(path, 1);
  1149.  
  1150.             if (_fileHandle)
  1151.                 _fileHandle.Close();
  1152.  
  1153.             _isFileCheck = true;
  1154.         }
  1155.  
  1156.         _fileHandle = FileOpen(path, mode);
  1157.         if (_fileHandle)
  1158.             break;
  1159.  
  1160.         if (delay)
  1161.             Delay(200);
  1162.     }
  1163.  
  1164.     if (_fileHandle) {
  1165.         if (mode == 0) {
  1166.             while (!_fileHandle.eof) {
  1167.                 _line = _fileHandle.ReadLine();
  1168.                 if (_line || !_fileHandle.eof)
  1169.                     _msg += _line + msg;
  1170.             }
  1171.         }
  1172.         else if (msg)
  1173.             _fileHandle.WriteLine(msg);
  1174.  
  1175.         _fileHandle.Close();
  1176.     }
  1177.  
  1178.     return _msg;
  1179. }
  1180. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  1181. //       Walk Functions         //
  1182. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  1183. function TD_MoveTo(areaid, x, y, retry, clearpath)
  1184. {
  1185.     var i, n;
  1186.     var _teleport;
  1187.     var _path;
  1188.     var _retry = 0;
  1189.  
  1190.     if(x == me.x && y == me.y)
  1191.         return true;
  1192.  
  1193.     if(arguments.length < 4)
  1194.         retry = 3;
  1195.  
  1196.     if(arguments.length < 5)
  1197.         clearpath = false;
  1198.  
  1199.     if(NTC_InTown() || NTC_GetSkillLevel(54) < 1)
  1200.         _teleport = false;
  1201.     else
  1202.         _teleport = true;
  1203.  
  1204.     _path = GetPath(areaid, me.x, me.y, x, y, _teleport);
  1205.  
  1206.     if(!_path)
  1207.         return false;
  1208.  
  1209.     for(i = 0 ; i < _path.length ; i++)
  1210.     {
  1211.         for(n = 0 ; n < 2 ; n++)
  1212.         {
  1213.             if(_teleport)
  1214.             {
  1215.                 if(NTM_TeleportTo(_path[i][0], _path[i][1])){
  1216.                         break;
  1217.                 }
  1218.             }
  1219.             else
  1220.             {
  1221.                 if(NTM_WalkTo(_path[i][0], _path[i][1]))
  1222.                     break;
  1223.             }
  1224.         }
  1225.        
  1226.         if(n < 2)
  1227.         {  
  1228.             if(clearpath)
  1229.             {
  1230.                 if(!NTA_ClearPosition(20, true, 2))
  1231.                     return false;
  1232.  
  1233.                 NTP_DoPrecast(false);
  1234.  
  1235.                 NTM_MoveTo(me.areaid, _path[i][0], _path[i][1], 1);
  1236.             }
  1237.         }
  1238.         else if(_retry < retry)
  1239.         {
  1240.             _path = GetPath(areaid, me.x, me.y, x, y, _teleport);
  1241.  
  1242.             if(!_path)
  1243.                 return false;
  1244.  
  1245.             i = -1;
  1246.             _retry++;
  1247.         }
  1248.         else
  1249.             return false;
  1250.     }
  1251.  
  1252.     return true;
  1253. }
  1254. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  1255. //      Kill Monster            //
  1256. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  1257. function TD_KillMonster(classid)
  1258. {
  1259. //}
  1260.     var _target;
  1261.  
  1262.     if(NTConfig_AttackSkill[1] < 1)
  1263.         return false;
  1264.  
  1265.     _target = NTC_FindUnit(NTC_UNIT_MONSTER, classid, 5);
  1266.  
  1267.     if(!_target)
  1268.         return false;
  1269.  
  1270.     if(_target.IsAttackable())
  1271.     {
  1272.         var _attackcount = 0;
  1273.  
  1274.         while(_attackcount < 300 && NTA_IsValidMonster(_target))
  1275.         {
  1276.             if(NTA_Attack(_target, (_attackcount%30) == 0) < 2)
  1277.                 break;
  1278.            
  1279.             if((_attackcount%10) == 5)
  1280.                 NTM_MoveTo(me.areaid, _target.x+5, _target.y);
  1281.             else if((_attackcount%10) == 0)
  1282.                 NTM_MoveTo(me.areaid, _target.x, _target.y+5);
  1283.            
  1284.             _attackcount++;
  1285.         }
  1286.     }
  1287.  
  1288.     return (_target.hp <= 0 || _target.mode == 0 || _target.mode == 12);
  1289. }
Add Comment
Please, Sign In to add comment