Advertisement
Guest User

Untitled

a guest
Nov 28th, 2014
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.64 KB | None | 0 0
  1.  
  2. use basic;
  3. use polsys;
  4. use util;
  5. use uo;
  6. use os;
  7. use npc;
  8. use vitals;
  9.  
  10. include "ai/new_ai/combat_ai";
  11. include "include/eventID";
  12. include "include/attributes";
  13. include "include/sysEvent";
  14. include "include/dist";
  15. include "include/NPCCast";
  16. include "include/objtype";
  17.  
  18.  
  19.  
  20. var LAST_BREATH := 0;
  21. var FLAME_STRENGTH := 0;
  22.  
  23.  
  24. const ZASIEG := 12;
  25.  
  26. var idlesnd1;
  27. var idlesnd2;
  28. var me := self();
  29. var opponent := 0;
  30. var spells := array;
  31. var m_skill := 0;
  32. var petla := 0;
  33.  
  34.  
  35.  
  36.  
  37. var ble;
  38.  
  39. program kill_AI()
  40. //printtextabove(me, "estel cfel!");
  41. // kolejny etap, wylaczamy ai, niech stoja jak tloki :P
  42. ApplyRawDamage(me, GetMaxHp(me)+10);
  43. dzwieki();
  44. setup_mob();
  45. set_event_queue_size(40);
  46. while(GetObjProperty(self(),"frozen"))
  47. sleep(60);
  48. endwhile
  49.  
  50. SetWarMode( 0 );
  51. Detach();
  52. petla_glowna();
  53. endprogram
  54.  
  55.  
  56.  
  57.  
  58.  
  59. function petla_glowna()
  60. var ev;
  61. var loot := ReadGameClock() + RandomInt(10)+15;
  62. petla := 0;
  63. var looper := 0;
  64.  
  65. if(GetGlobalProperty("moznawchodzic") != 1)
  66. petla := 34;
  67. sleep(120);
  68. endif
  69.  
  70. emaine();
  71.  
  72.  
  73. //PETLA GLOWNA
  74. while(gethp(me))
  75. //printtextabove(me, "!!!PETLA!!!");
  76.  
  77. // omeg:: POWIELANIE
  78. if (gethp(me) < getmaxhp(me))
  79. // if (gethp(me) < getmaxhp(me) && !getobjproperty(me, "kopia"))
  80. // setobjproperty(me,"kopia",1);
  81. // opponent := ev.source;
  82. // printtextabove(me, "dostaje dmg estel cfel");
  83. tworzkopie();
  84. // fight();
  85. endif
  86.  
  87. // Fix Buga z HP / drac0
  88. if(gethp(me) > 6000);
  89. SetHp(me,100);
  90. syslog("[HP BUG] ZABIJAM "+me.serial+" / "+me.npctemplate+"");
  91. SetObjProperty(me, "guardkill", 1);
  92. Applyrawdamage(me,Gethp(me)+100);
  93. endif
  94.  
  95.  
  96. petla := petla + 1;
  97. if((RandomInt(30) > 27) or (self().frozen))
  98. clear_event_queue();
  99. endif
  100. if(is_pcs(0))
  101. petla := 0;
  102. endif
  103. setobjproperty(self(),"petla",petla);
  104. wander();
  105.  
  106.  
  107. if((ReadGameClock() > loot) and (!(GetObjProperty(me,"noloot"))) and (!(GetObjProperty(me, "summoned"))))
  108. loot := ReadGameClock() + RandomInt(10)+55;
  109. looting();
  110. elseif((idlesnd1) && (idlesnd2) and (RandomInt(5) < 3))
  111. var s := RandomInt(2);
  112. case(s)
  113. 0: PlaySoundEffect(me, idlesnd1);
  114. 1: PlaySoundEffect(me, idlesnd2);
  115. endcase
  116. endif
  117.  
  118.  
  119. if(petla >= 35)
  120. if(!is_pcs(0))
  121. petla := 0;
  122. clear_event_queue();
  123. looper := 0;
  124. ev := spij();
  125. else
  126. ev := os::wait_for_event(20);
  127. endif
  128. elseif(petla > 25)
  129. ev := os::wait_for_event(10);
  130. else
  131. ev:= os::wait_for_event(2);
  132. endif
  133. looper := looper + 1;
  134. if((looper > 100) and (petla < 25))
  135. restartscript(self());
  136. endif
  137. if(!is_pcs(40))
  138. petla := petla + 3;
  139. endif
  140.  
  141. if(ev)
  142. // printtextabove(me, "ev: "+ev);
  143. case(ev.type)
  144. SYSEVENT_ENTEREDAREA:
  145. if(ev.source.acctname)
  146. petla := 0;
  147. endif
  148. ble := RandomInt(100);
  149. if(ble < 1)
  150. tworzkopie();
  151. endif
  152. if(necro_inc_war(ev.source))
  153. if(!checklineOfSight(self(),ev.source))
  154. opponent := look_around();
  155. if((opponent) and (!opponent.dead) and (opponent != 0))
  156. fight();
  157. endif
  158. elseif((ev.source.acctname) or (ev.source.script == "summony") or (ev.source.script == "tamed"))
  159. opponent := ev.source;
  160. fight();
  161. endif
  162. endif
  163. SYSEVENT_ENGAGED:
  164. if((ev.source) and (!ev.source.dead))
  165. if(checkLineOfSight(me,ev.source))
  166. opponent := ev.source;
  167. fight();
  168. elseif((RandomInt(100) < 10) or (ev.must))
  169. opponent := ev.source;
  170. tworzkopie();
  171. fight();
  172. endif
  173. endif
  174. SYSEVENT_DAMAGED: if((ev.source) and (!ev.source.dead))
  175. // omeg: nie dziala kurwa, zadne eventy nie dochodza poza entered/left area ;f
  176. opponent := ev.source;
  177. // printtextabove(me, "dostaje dmg estel cfel");
  178. tworzkopie();
  179. fight();
  180. endif
  181. EVID_ENTICE: entice(ev.source);
  182.  
  183. endcase
  184. endif
  185.  
  186.  
  187. opponent := look_around();
  188. if((opponent) and (!opponent.dead) and (opponent != 0))
  189. if(necro_inc_war(opponent))
  190. petla := 0;
  191. if( (GetObjProperty(self(),"#releasetime")) and (Cint(GetObjProperty(self(),"#releasetime")) < ReadGameClock()))
  192. EraseObjProperty(self(),"#releasetime");
  193. endif
  194. if(GetObjProperty(self(),"#releasetime"))
  195. if(Cint(GetObjProperty(self(),"last_tamer_serial")) != opponent.serial)
  196. fight();
  197. endif
  198. else
  199. fight();
  200. endif
  201. endif
  202. endif
  203. sleepms(5);
  204. endwhile
  205.  
  206.  
  207. endfunction
  208.  
  209.  
  210. function tworzkopie()
  211. //printtextabove(me, "jestem w funkcji estel cfel");
  212. var mecopy := CreateNpcFromTemplate(me.npctemplate, me.x -1, me.y+1, me.z, MOVEOBJECT_FORCELOCATION, me.realm);
  213.  
  214. if(mecopy)
  215. mecopy.color := me.color;
  216. mecopy.name := me.name;
  217. PlaySoundEffect(mecopy,0x3EC);
  218. // printtextabove(me, "zrobilem npc kopie");
  219. else
  220. // printtextabove(me, "nie zrobilem kopii npc");
  221. endif
  222. sethp(me,getmaxhp(me));
  223. endfunction
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232. function CloseDistance( opponent )
  233. case( Distance( me, opponent ))
  234. 1:
  235. 0: return 1;
  236. default: RunToward( opponent );
  237. return 0;
  238. endcase
  239. endfunction
  240.  
  241.  
  242. function RunToIt(me,item)
  243. var numsteps;
  244. for(numsteps := 0; numsteps < 8; numsteps := numsteps +1)
  245. if(Distance(me, item) < 2)
  246. return;
  247. else
  248. if(RandomInt(5) == 2)
  249. RunToward(item);
  250. else
  251. walktoward(item);
  252. endif
  253. endif
  254. endfor
  255. endfunction
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement