NPC - po stronie NPC Servera:
- ma zapisane unikalne ID tego NPC
- posiada wszystkie dane
- ustala pozycje gdzie mob ma sie pojawic (spawnlista)
- nadzoruje jego zachowanie - AI
- Posiada pozycje x,y,z -> Jezeli mob wykonuje ruch na zlecenie NPC Servera, Server zwraca Pakiet informujacy o zakonczeniu Ruchu i pozycji koncowej,
w ten sposob Pozycja po stronie NPC Servera sie updatuje, Jezeli mob nie moze wykonac ruchu (np sciana na drodze ktorej nieda sie ominac) Server informuje o niepowodzeniu -> wtedy w NPC Serverze zwieksza sie ilosc nie udanych prob dojscia
do celu -> AI moze zadecydowac ze np ten NPC ma zostac teleportowany odrazu do Celu (ktory oszukuje uzywajac bugow terenu)
- tu jest trzymana AgroLista, Checi uzycia Ataku lub Skila z ich wartosciami
- to tu odbywa sie podejmowanie decyzji kogo atakowac i czym
NPC rozszerza L2Object - Po stronie Servera
- ma zapisane unikalne ID - to samo co w NPC server -> to jest "graficzna" interpretacja tego moba co jest w NPC serverze
- posiada podstawowe statsy takie jak HP MP itd -> sa one synchronizowane z NPC Serverem za pomoca pakietu - Tylko w tej klasie moze nastapic zmiana tych danych, kazda zmiana danych = pakiet do NPC Servera
- Tutaj siedzi kalkulator statsow i tu sa dokonywane obliczenia ich
- Posiada pozycje, ktora jest dynamicznie zmieniana wciagu ruchu -> nie ma sensu ta zmiana zawalac NPC Server - jemu wystarczy pozycja po zakonczonym ruchu (tak czy siak musi otrzymac pakiet ze dany ruch zostal zakonczony,
wiec ten pakiet takze bedzie posiadal dane o pozycji gdzie npc zakonczyl ruch)
- Ta klasa nadzoruje dzialanie roznych Effektow np Sleep -> kiedy takie cos zajdzie zostaje wyslany pakiet do NPC Servera informujacy go o tym zajsciu,
tak aby AI wiedzialo ze NPC jest uspiony
- Tutaj sa funkcje DoCast, DoAttack - szybka funkcja bez zadnego sprawdzania (to czy NPC ma MP i takie tam sprawdzane jest po stronie NPC Servera) - NPC Server rozkazuje rzucic taki czar to on musi zostac rzucony,
Server musi sam sie zajasc np podejsciem do celu, sciganiem celu itp -> kiedy atak zostanie zakonczony NPC Server jest o tym informowany, wrazie niepowodzenia takze
- Jezeli np ten NPC zostanie zaatakowany przez gracza -> wmomencie leci pakiet do NPC Servera informujacy go o tym - AI w NPC Serverze podejmie decyzje co robic -> np wysle pakiet aby NPC rozpoczol atak
- Ta klasa jest tym samym co aktualnie w L2j z tym ze pozbawiona wiekszosci danych, AI, Dropa -> ktore sa w NPC Serverze
- Jezeli NPC zginie NPC Server jest o tym informowany, nastepuje Event AI Event_Dead -> Ktory rozdaje Drop itp (wysylajac pakiet z ID i iloscia itemkow ktore dropnely a Server to Interpretuje)
- To tutaj siedzi knownlista -> powiedzmy ze w momencie jej updatowania przelatujemy przez wszystkie widzialne obiekty i wysylamy pakiet zawierajacy podstawowe dane tych obiektow np
(int a = ilosc obiektow: dla kazdego obiektu -> int b = id, int c = typ (np 1-pc 2-summon 3-npc) -> NPC Server to wysyla do AI jako Event_See_Creature z kazdym z tych oiektow.