Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use basic;
- use polsys;
- use util;
- use uo;
- use os;
- use npc;
- use vitals;
- include "ai/new_ai/combat_ai";
- include "include/eventID";
- include "include/attributes";
- include "include/sysEvent";
- include "include/dist";
- include "include/NPCCast";
- include "include/objtype";
- var LAST_BREATH := 0;
- var FLAME_STRENGTH := 0;
- const ZASIEG := 12;
- var idlesnd1;
- var idlesnd2;
- var me := self();
- var opponent := 0;
- var spells := array;
- var m_skill := 0;
- var petla := 0;
- var ble;
- program kill_AI()
- //printtextabove(me, "estel cfel!");
- // kolejny etap, wylaczamy ai, niech stoja jak tloki :P
- ApplyRawDamage(me, GetMaxHp(me)+10);
- dzwieki();
- setup_mob();
- set_event_queue_size(40);
- while(GetObjProperty(self(),"frozen"))
- sleep(60);
- endwhile
- SetWarMode( 0 );
- Detach();
- petla_glowna();
- endprogram
- function petla_glowna()
- var ev;
- var loot := ReadGameClock() + RandomInt(10)+15;
- petla := 0;
- var looper := 0;
- if(GetGlobalProperty("moznawchodzic") != 1)
- petla := 34;
- sleep(120);
- endif
- emaine();
- //PETLA GLOWNA
- while(gethp(me))
- //printtextabove(me, "!!!PETLA!!!");
- // omeg:: POWIELANIE
- if (gethp(me) < getmaxhp(me))
- // if (gethp(me) < getmaxhp(me) && !getobjproperty(me, "kopia"))
- // setobjproperty(me,"kopia",1);
- // opponent := ev.source;
- // printtextabove(me, "dostaje dmg estel cfel");
- tworzkopie();
- // fight();
- endif
- // Fix Buga z HP / drac0
- if(gethp(me) > 6000);
- SetHp(me,100);
- syslog("[HP BUG] ZABIJAM "+me.serial+" / "+me.npctemplate+"");
- SetObjProperty(me, "guardkill", 1);
- Applyrawdamage(me,Gethp(me)+100);
- endif
- petla := petla + 1;
- if((RandomInt(30) > 27) or (self().frozen))
- clear_event_queue();
- endif
- if(is_pcs(0))
- petla := 0;
- endif
- setobjproperty(self(),"petla",petla);
- wander();
- if((ReadGameClock() > loot) and (!(GetObjProperty(me,"noloot"))) and (!(GetObjProperty(me, "summoned"))))
- loot := ReadGameClock() + RandomInt(10)+55;
- looting();
- elseif((idlesnd1) && (idlesnd2) and (RandomInt(5) < 3))
- var s := RandomInt(2);
- case(s)
- 0: PlaySoundEffect(me, idlesnd1);
- 1: PlaySoundEffect(me, idlesnd2);
- endcase
- endif
- if(petla >= 35)
- if(!is_pcs(0))
- petla := 0;
- clear_event_queue();
- looper := 0;
- ev := spij();
- else
- ev := os::wait_for_event(20);
- endif
- elseif(petla > 25)
- ev := os::wait_for_event(10);
- else
- ev:= os::wait_for_event(2);
- endif
- looper := looper + 1;
- if((looper > 100) and (petla < 25))
- restartscript(self());
- endif
- if(!is_pcs(40))
- petla := petla + 3;
- endif
- if(ev)
- // printtextabove(me, "ev: "+ev);
- case(ev.type)
- SYSEVENT_ENTEREDAREA:
- if(ev.source.acctname)
- petla := 0;
- endif
- ble := RandomInt(100);
- if(ble < 1)
- tworzkopie();
- endif
- if(necro_inc_war(ev.source))
- if(!checklineOfSight(self(),ev.source))
- opponent := look_around();
- if((opponent) and (!opponent.dead) and (opponent != 0))
- fight();
- endif
- elseif((ev.source.acctname) or (ev.source.script == "summony") or (ev.source.script == "tamed"))
- opponent := ev.source;
- fight();
- endif
- endif
- SYSEVENT_ENGAGED:
- if((ev.source) and (!ev.source.dead))
- if(checkLineOfSight(me,ev.source))
- opponent := ev.source;
- fight();
- elseif((RandomInt(100) < 10) or (ev.must))
- opponent := ev.source;
- tworzkopie();
- fight();
- endif
- endif
- SYSEVENT_DAMAGED: if((ev.source) and (!ev.source.dead))
- // omeg: nie dziala kurwa, zadne eventy nie dochodza poza entered/left area ;f
- opponent := ev.source;
- // printtextabove(me, "dostaje dmg estel cfel");
- tworzkopie();
- fight();
- endif
- EVID_ENTICE: entice(ev.source);
- endcase
- endif
- opponent := look_around();
- if((opponent) and (!opponent.dead) and (opponent != 0))
- if(necro_inc_war(opponent))
- petla := 0;
- if( (GetObjProperty(self(),"#releasetime")) and (Cint(GetObjProperty(self(),"#releasetime")) < ReadGameClock()))
- EraseObjProperty(self(),"#releasetime");
- endif
- if(GetObjProperty(self(),"#releasetime"))
- if(Cint(GetObjProperty(self(),"last_tamer_serial")) != opponent.serial)
- fight();
- endif
- else
- fight();
- endif
- endif
- endif
- sleepms(5);
- endwhile
- endfunction
- function tworzkopie()
- //printtextabove(me, "jestem w funkcji estel cfel");
- var mecopy := CreateNpcFromTemplate(me.npctemplate, me.x -1, me.y+1, me.z, MOVEOBJECT_FORCELOCATION, me.realm);
- if(mecopy)
- mecopy.color := me.color;
- mecopy.name := me.name;
- PlaySoundEffect(mecopy,0x3EC);
- // printtextabove(me, "zrobilem npc kopie");
- else
- // printtextabove(me, "nie zrobilem kopii npc");
- endif
- sethp(me,getmaxhp(me));
- endfunction
- function CloseDistance( opponent )
- case( Distance( me, opponent ))
- 1:
- 0: return 1;
- default: RunToward( opponent );
- return 0;
- endcase
- endfunction
- function RunToIt(me,item)
- var numsteps;
- for(numsteps := 0; numsteps < 8; numsteps := numsteps +1)
- if(Distance(me, item) < 2)
- return;
- else
- if(RandomInt(5) == 2)
- RunToward(item);
- else
- walktoward(item);
- endif
- endif
- endfor
- endfunction
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement