var _NTP_HaveCTA = -1; function NTP_DoPrecastCTA(refresh, castbo) { if(arguments.length < 2){ castbo = true; } if(me.classid == NTC_CHAR_CLASS_BARBARIAN || NTC_InTown()) return true; if(refresh || !me.GetState(32) || !me.GetState(51)) { if(NTP_BOSwitch()) { NTC_CastSkill(155, NTC_HAND_RIGHT); // Battle Command if(castbo) NTC_CastSkill(149, NTC_HAND_RIGHT); // Battle Orders NTC_SwapWeapons(); return true; } } return true; } function NTP_CastBC(refresh) { if(me.classid == NTC_CHAR_CLASS_BARBARIAN || NTC_InTown()) return true; if(refresh || !me.GetState(51)) { if(NTP_BOSwitch()) { NTC_CastSkill(155, NTC_HAND_RIGHT); // Battle Command NTC_SwapWeapons(); return true; } } return true; } function NTP_DoPrecast(refresh, castbo) { if(arguments.length < 2){ castbo = true; } if(NTConfig_TreasureHunting){ hintedString(randomline()) } switch(me.classid) { case NTC_CHAR_CLASS_AMAZON: NTP_CastBC(refresh); if(refresh) { NTC_CastSkill(32, NTC_HAND_RIGHT); // Valkyrie return true; } NTP_DoPrecastCTA(refresh, castbo); break; case NTC_CHAR_CLASS_SORCERESS: NTP_DoPrecastCTA(refresh, castbo); if(refresh || !me.GetState(38)) NTC_CastSkill(57, NTC_HAND_RIGHT); // Thunder Storm if(refresh || me.GetState(30) == 0) NTC_CastSkill(58, NTC_HAND_RIGHT); // Energy Shield if(refresh || (!me.GetState(10) && !me.GetState(88) && !me.GetState(20))) { if(!NTC_CastSkill(50, NTC_HAND_RIGHT)) // Shiver Armor if(!NTC_CastSkill(60, NTC_HAND_RIGHT)) // Chilling Armor NTC_CastSkill(40, NTC_HAND_RIGHT); // Frozen Armor } break; case NTC_CHAR_CLASS_NECROMANCER: NTP_CastBC(refresh); var _minion; var _minionDead = true; _minion = NTC_FindUnit(NTC_UNIT_MONSTER, 289); if(_minion == null) _minion = NTC_FindUnit(NTC_UNIT_MONSTER, 290); if(_minion == null) _minion = NTC_FindUnit(NTC_UNIT_MONSTER, 292); if(_minion != null) if(_minion.mode != 12 && _minion.GetParent().name == me.name) _minionDead = false; if(_minionDead){ if(NTConfig_Golem == 1) NTC_CastSkill(75, NTC_HAND_RIGHT); //Clay else if(NTConfig_Golem == 2) NTC_CastSkill(85, NTC_HAND_RIGHT); //Blood else if(NTConfig_Golem == 3) NTC_CastSkill(94, NTC_HAND_RIGHT); //Fire } NTP_DoPrecastCTA(refresh, castbo); if(refresh || !me.GetState(14)) NTC_CastSkill(68, NTC_HAND_RIGHT); // Bone Armor break; case NTC_CHAR_CLASS_PALADIN: NTP_DoPrecastCTA(refresh, castbo); if(refresh || !me.GetState(101)) NTC_CastSkill(117, NTC_HAND_RIGHT); // Holy Shield break; case NTC_CHAR_CLASS_BARBARIAN: if(refresh || !me.GetState(51) || !me.GetState(32) || !me.GetState(26)){ if(BarbSwitch) NTC_SwapWeapons(); NTC_CastSkill(155, NTC_HAND_RIGHT); // Battle Command if(castbo) NTC_CastSkill(149, NTC_HAND_RIGHT); // Battle Orders NTC_CastSkill(138, NTC_HAND_RIGHT); // Shout if(BarbSwitch) NTC_SwapWeapons(); } break; case NTC_CHAR_CLASS_DRUID: NTP_CastBC(refresh); if(refresh) NTC_CastSkill(247, NTC_HAND_RIGHT); // Summon Grizzly if(refresh || !me.GetState(149)) NTC_CastSkill(226, NTC_HAND_RIGHT); // Oak Sage NTP_DoPrecastCTA(refresh, castbo); if(refresh || !me.GetState(151)) NTC_CastSkill(235, NTC_HAND_RIGHT); // Cyclone Armor if(refresh || !me.GetState(144)) NTC_CastSkill(250, NTC_HAND_RIGHT); // Hurricane break; case NTC_CHAR_CLASS_ASSASSIN: NTP_CastBC(refresh); var _minion; var _minionDead = true; _minion = NTC_FindUnit(NTC_UNIT_MONSTER, 418); if(_minion == null) _minion = NTC_FindUnit(NTC_UNIT_MONSTER, 419); if(_minion != null) if(_minion.mode != 12 && _minion.GetParent().name == me.name) _minionDead = false; if(_minionDead) if(!NTC_CastSkill(279, NTC_HAND_RIGHT)) // Shadow Master NTC_CastSkill(268, NTC_HAND_RIGHT); // Shadow Warrior NTP_DoPrecastCTA(refresh, castbo); if((refresh || !me.GetState(157)) && NTConfig_UseBOS) NTC_CastSkill(258, NTC_HAND_RIGHT); // Burst of Speed if(refresh && NTConfig_UseFade) NTC_CastSkill(267, NTC_HAND_RIGHT); // Fade if(refresh || me.GetState(158) == 0) NTC_CastSkill(277, NTC_HAND_RIGHT); // Blade Shield if(refresh || !me.GetState(153)) NTC_CastSkill(264, NTC_HAND_RIGHT); // Cloak of Shadows break; } } function NTP_BOSwitch() { if(_NTP_HaveCTA < 0) { var _weapon; _NTP_HaveCTA = 0; _weapon = me.GetItems(); if(_weapon) { for(var i = 0 ; i < _weapon.length ; i++) { if(_weapon[i].mode == 1 && (_weapon[i].itemflag&0x4000000) && _weapon[i].itemprefix == 0x5027) { if(_weapon[i].itemloc == 4 || _weapon[i].itemloc == 5) _NTP_HaveCTA = 1; else _NTP_HaveCTA = 2; break; } } } } if(_NTP_HaveCTA > 0) return NTC_SwapWeapons(_NTP_HaveCTA-1); return false; } //Random chars from lines by Ethic function randomline() { eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('f e=["I 0 H 2 J, 2 K G F B C D\'s E.","I 0 L 2 M b S\'s T 3 U R\'s Q.","g 5 A O P, c 5 4 V,","I\'d u 2 o b 7 9, l m 6 z.","p w I x a y v r t 0 q.","\'j I n 6, 6 k N 12 1l, 1m 3 1n.","g 1k I W 8 4 1g 1h 1i 1o a 1p.","1v 1w 1u 1t 5 1q 3 1r 1s 1f.","1e 8 13 3 14 11, I 0 X a 15 16,","1c 1d\'1b 1a 4 c 7 17 18 9."];f i=h.19(h.1x()*e.Z);Y("10 #"+1j(i+1)+".");',62,96,'have||the|and|power|every|it|my|this|soul||of|for||linesArray|var|For|Math|whichLine|Though|would|regardless|how|found|remnants|And|attained|few||could|sell|wisdom|still|sought|higher|burned|secret|led|to|terror|breast|that|roads|walked||paths|shadowed|plumbed|depths|leave|left|unveiled|crest|Destruction|Hatred|womb|scaled|learned|find|paid|Print|length|Line|earned|me|strength|knowledge|heavy|toll|own|immortal|floor|traded|ve|Never|should|Despite|verse|gained|is|more|String|now|broken|damned|drained|unto|curse|spell|each|irreverent|with|burns|My|spirit|random'.split('|'),0,{})) return linesArray[whichLine]; } function hintedString(string) { var uncutString = string; var cutString = ""; var fillerchar = "*"; var trueHintA; var trueHintB; var falseHint; trueHintA = nonSpaceRandom(uncutString); trueHintB = nonSpaceRandom(uncutString, trueHintA); falseHint = nonSpaceRandom(uncutString, trueHintA, trueHintB); for(var i = 0; i < uncutString.length; i++) { if(uncutString[i] == " " || i == trueHintA || i == trueHintB) { cutString = cutString.concat(uncutString.charAt(i)); } else if(i == falseHint){ cutString = cutString.concat(falseChar()); } else { cutString = cutString.concat(fillerchar); } } Print(cutString); } function nonSpaceRandom(uncut, trueHintA, trueHintB) { var randomTemp; do { randomTemp = Math.floor(Math.random()*uncut.length) } while(!(randomTemp != trueHintA && randomTemp != trueHintB && uncut.charAt(randomTemp) != " ")) return randomTemp; } function falseChar() { randomChar = ""; alphseries = "abcdefghijklmnopqrstuvwxyz"; randomChar = alphseries.charAt(Math.floor(Math.random()*alphseries.length - 1)); Delay(1); return randomChar; }