class ai_guardian_manager : default_npc
{
parameter:
int Max_Spawn_Roaming = 3;
int Spawn_Interval = 1800;
int Course1_Check_Timer = 7734;
int Course2_Check_Timer = 7735;
int Course3_Check_Timer = 7736;
int Course4_Check_Timer = 7737;
int SuperPointMethod = 0;
int SuperPointDesire = 2000;
int SpawnPosX_1_1 = 140641;
int SpawnPosY_1_1 = 114525;
int SpawnPosZ_1_1 = -3752;
int SpawnPosX_2_1 = 143789;
int SpawnPosY_2_1 = 110205;
int SpawnPosZ_2_1 = -3968;
int SpawnPosX_3_1 = 146466;
int SpawnPosY_3_1 = 109789;
int SpawnPosZ_3_1 = -3440;
int SpawnPosX_4_1 = 145482;
int SpawnPosY_4_1 = 120250;
int SpawnPosZ_4_1 = -3944;
handler:
EventHandler DEBUG_AI(creature, reply)
{
if( reply == 1 )
{
myself::Whisper(creature, "Course1 Roam Number : " + myself.i_ai0 + " ");
if( myself.i_ai0 <= Max_Spawn_Roaming )
{
myself::CreateOnePrivateEx(1022857, "guardian_of_antaras", 0, 0, SpawnPosX_1_1, SpawnPosY_1_1, SpawnPosZ_1_1, 0, 1, 0, 0);
myself.i_ai0 = myself.i_ai0 + 1;
}
else
{
myself::Whisper(creature, "Course1 Roam Number Max");
}
}
else if( reply == 2 )
{
myself::Whisper(creature, "Course2 Roam Number : " + myself.i_ai1 + " ");
if( myself.i_ai1 <= Max_Spawn_Roaming )
{
myself::CreateOnePrivateEx(1022857, "guardian_of_antaras", 0, 0, SpawnPosX_2_1, SpawnPosY_2_1, SpawnPosZ_2_1, 0, 2, 0, 0);
myself.i_ai1 = myself.i_ai1 + 1;
}
else
{
myself::Whisper(creature, "Course2 Roam Number Max");
}
}
else if( reply == 3 )
{
myself::Whisper(creature, "Course3 Roam Number : " + myself.i_ai2 + " ");
if( myself.i_ai2 <= Max_Spawn_Roaming )
{
myself::CreateOnePrivateEx(1022857, "guardian_of_antaras", 0, 0, SpawnPosX_3_1, SpawnPosY_3_1, SpawnPosZ_3_1, 0, 3, 0, 0);
myself.i_ai2 = myself.i_ai2 + 1;
}
else
{
myself::Whisper(creature, "Course3 Roam Number Max");
}
}
else if( reply == 4 )
{
myself::Whisper(creature, "Course4 Roam Number : " + myself.i_ai3 + " ");
if( myself.i_ai3 <= Max_Spawn_Roaming )
{
myself::CreateOnePrivateEx(1022857, "guardian_of_antaras", 0, 0, SpawnPosX_4_1, SpawnPosY_4_1, SpawnPosZ_4_1, 0, 4, 0, 0);
myself.i_ai3 = myself.i_ai3 + 1;
}
else
{
myself::Whisper(creature, "Course4 Roam Number Max");
}
}
}
EventHandler CREATED()
{
myself::AddTimerEx(Course1_Check_Timer, gg::Rand(10000));
myself::AddTimerEx(Course2_Check_Timer, gg::Rand(10000));
myself::AddTimerEx(Course3_Check_Timer, gg::Rand(10000));
myself::AddTimerEx(Course4_Check_Timer, gg::Rand(10000));
myself.i_ai0 = 0;
myself.i_ai1 = 0;
myself.i_ai2 = 0;
myself.i_ai3 = 0;
myself.i_ai4 = 0;
}
EventHandler TIMER_FIRED_EX(timer_id)
{
if( timer_id == Course1_Check_Timer )
{
if( myself.i_ai0 < Max_Spawn_Roaming )
{
myself::CreateOnePrivateEx(1022857, "guardian_of_antaras", 0, 0, SpawnPosX_1_1, SpawnPosY_1_1, SpawnPosZ_1_1, 0, 1, 0, 0);
myself.i_ai0 = myself.i_ai0 + 1;
}
myself::AddTimerEx(Course1_Check_Timer, Spawn_Interval * 1000);
}
else if( timer_id == Course2_Check_Timer )
{
if( myself.i_ai1 < Max_Spawn_Roaming )
{
myself::CreateOnePrivateEx(1022857, "guardian_of_antaras", 0, 0, SpawnPosX_2_1, SpawnPosY_2_1, SpawnPosZ_2_1, 0, 2, 0, 0);
myself.i_ai1 = myself.i_ai1 + 1;
}
myself::AddTimerEx(Course2_Check_Timer, Spawn_Interval * 1000);
}
else if( timer_id == Course3_Check_Timer )
{
if( myself.i_ai2 < Max_Spawn_Roaming )
{
myself::CreateOnePrivateEx(1022857, "guardian_of_antaras", 0, 0, SpawnPosX_3_1, SpawnPosY_3_1, SpawnPosZ_3_1, 0, 3, 0, 0);
myself.i_ai2 = myself.i_ai2 + 1;
}
myself::AddTimerEx(Course3_Check_Timer, Spawn_Interval * 1000);
}
else if( timer_id == Course4_Check_Timer )
{
if( myself.i_ai3 < Max_Spawn_Roaming )
{
myself::CreateOnePrivateEx(1022857, "guardian_of_antaras", 0, 0, SpawnPosX_4_1, SpawnPosY_4_1, SpawnPosZ_4_1, 0, 4, 0, 0);
myself.i_ai3 = myself.i_ai3 + 1;
}
myself::AddTimerEx(Course4_Check_Timer, Spawn_Interval * 1000);
}
}
EventHandler SCRIPT_EVENT(script_event_arg1, script_event_arg2)
{
if( script_event_arg1 == 20100501 )
{
if( script_event_arg2 == 1 )
{
if( myself.i_ai0 > 0 )
{
myself.i_ai0 = myself.i_ai0 - 1;
}
}
else if( script_event_arg2 == 2 )
{
if( myself.i_ai1 > 0 )
{
myself.i_ai1 = myself.i_ai1 - 1;
}
}
else if( script_event_arg2 == 3 )
{
if( myself.i_ai2 > 0 )
{
myself.i_ai2 = myself.i_ai2 - 1;
}
}
else if( script_event_arg2 == 4 )
{
if( myself.i_ai3 > 0 )
{
myself.i_ai3 = myself.i_ai3 - 1;
}
}
}
super;
}
}
class ai_guardian_of_antaras : warrior_basic
{
parameter:
string SuperPointName1 = "24_21_course1";
string SuperPointName2 = "24_21_course2";
string SuperPointName3 = "24_21_course3";
string SuperPointName4 = "24_21_course4";
int SuperPointDesire = 10;
int SuperPointMethod1 = 0;
int SuperPointMethod2 = 1;
int SuperPointMethod3 = 2;
int SuperPointMethod4 = 3;
int ACTIVATION_TIMER = 2010;
int ACTIVATION_INTERVAL_1 = 60;
int ACTIVATION_INTERVAL_2 = 60;
int ACTIVATION_INTERVAL_3 = 60;
int ACTIVATION_INTERVAL_4 = 60;
int Skill01_ID = 442171393;
int Skill01_Target = 0;
int Skill01_Probablity = 333;
int Skill02_ID = 441974785;
int Skill02_Target = 0;
int Skill01_Probablity = 333;
int Skill03_ID = 458752001;
int SpecialSkill01_ID = 441909249;
int max_desire = 10000000;
int isChasePC = 3000;
handler:
EventHandler CREATED(i0)
{
myself::SetVisible(0);
myself::AddTimerEx(1001, 60 * 1000);
myself.i_ai2 = 0;
myself.i_ai1 = 0;
myself.i_ai0 = myself.sm.param1;
myself.i_ai4 = gg::FloatToInt(myself.sm.x);
myself.i_ai5 = gg::FloatToInt(myself.sm.y);
myself.i_ai6 = gg::FloatToInt(myself.sm.z);
if( myself.i_ai0 == 1 )
{
if( myself::IsNullString(SuperPointName1) != 1 )
{
myself.i_ai3 = gg::Rand(28) + 1;
myself::AddMoveSuperPointDesire(SuperPointName1, SuperPointMethod1, SuperPointDesire);
}
}
else if( myself.i_ai0 == 2 )
{
if( myself::IsNullString(SuperPointName2) != 1 )
{
myself.i_ai3 = gg::Rand(26) + 1;
myself::AddMoveSuperPointDesire(SuperPointName2, SuperPointMethod1, SuperPointDesire);
}
}
else if( myself.i_ai0 == 3 )
{
if( myself::IsNullString(SuperPointName3) != 1 )
{
myself.i_ai3 = gg::Rand(26) + 1;
myself::AddMoveSuperPointDesire(SuperPointName3, SuperPointMethod1, SuperPointDesire);
}
}
else if( myself.i_ai0 == 4 )
{
if( myself::IsNullString(SuperPointName4) != 1 )
{
myself.i_ai3 = gg::Rand(16) + 1;
myself::AddMoveSuperPointDesire(SuperPointName4, SuperPointMethod1, SuperPointDesire);
}
}
super;
}
EventHandler TIMER_FIRED_EX(timer_id, c0)
{
if( timer_id == 1001 )
{
if( myself::IsNullCreature(myself.top_desire_target) == 1 && myself.i_ai1 == 1 )
{
if( myself.i_ai4 == gg::FloatToInt(myself.sm.x) && myself.i_ai5 == gg::FloatToInt(myself.sm.y) && myself.i_ai6 == gg::FloatToInt(myself.sm.z) )
{
gg::SendScriptEvent(myself.boss, 20100501, myself.i_ai0);
}
}
myself::AddTimerEx(1001, 60 * 1000);
myself.i_ai4 = gg::FloatToInt(myself.sm.x);
myself.i_ai5 = gg::FloatToInt(myself.sm.y);
myself.i_ai6 = gg::FloatToInt(myself.sm.z);
}
}
EventHandler ABNORMAL_STATUS_CHANGED(speller, skill_id, skill_level, skill_name_id, s0, i0)
{
if( skill_level > 0 )
{
if( myself::Skill_GetAbnormalType(6029313) == myself::Skill_GetAbnormalType(skill_name_id) && gg::GetAbnormalLevel(myself.sm, myself::Skill_GetAbnormalType(6029313)) > 0 )
{
myself::Dispel(myself.sm, myself::Skill_GetAbnormalType(6029313));
}
else if( myself::Skill_GetAbnormalType(91357185) == myself::Skill_GetAbnormalType(skill_name_id) && gg::GetAbnormalLevel(myself.sm, myself::Skill_GetAbnormalType(91357185)) > 0 )
{
myself::Dispel(myself.sm, myself::Skill_GetAbnormalType(91357185));
}
else if( myself::Skill_GetAbnormalType(18284545) == myself::Skill_GetAbnormalType(skill_name_id) && gg::GetAbnormalLevel(myself.sm, myself::Skill_GetAbnormalType(18284545)) > 0 )
{
myself::Dispel(myself.sm, myself::Skill_GetAbnormalType(18284545));
}
else if( myself::Skill_GetAbnormalType(24051713) == myself::Skill_GetAbnormalType(skill_name_id) && gg::GetAbnormalLevel(myself.sm, myself::Skill_GetAbnormalType(24051713)) > 0 )
{
myself::Dispel(myself.sm, myself::Skill_GetAbnormalType(24051713));
}
else if( myself::Skill_GetAbnormalType(76611585) == myself::Skill_GetAbnormalType(skill_name_id) && gg::GetAbnormalLevel(myself.sm, myself::Skill_GetAbnormalType(76611585)) > 0 )
{
myself::Dispel(myself.sm, myself::Skill_GetAbnormalType(76611585));
}
else if( myself::Skill_GetAbnormalType(78708737) == myself::Skill_GetAbnormalType(skill_name_id) && gg::GetAbnormalLevel(myself.sm, myself::Skill_GetAbnormalType(78708737)) > 0 )
{
myself::Dispel(myself.sm, myself::Skill_GetAbnormalType(78708737));
}
else if( myself::Skill_GetAbnormalType(26411009) == myself::Skill_GetAbnormalType(skill_name_id) && gg::GetAbnormalLevel(myself.sm, myself::Skill_GetAbnormalType(26411009)) > 0 )
{
myself::Dispel(myself.sm, myself::Skill_GetAbnormalType(26411009));
}
}
}
EventHandler ATTACKED(attacker, party0, damage, i10, skill_name_id, i0, i1, i2, i3, i4, i5)
{
if( myself::DistFromMe(attacker) > 250 )
{
if( myself::IsInCategory(70, attacker.occupation) == 1 || myself::IsInCategory(2, attacker.occupation) == 1 )
{
if( gg::Rand(100) < 10 )
{
myself::AddUseSkillDesire(attacker, SpecialSkill01_ID, 0, 1, max_desire * max_desire);
}
if( gg::Rand(100) < 5 )
{
myself::CreateOnePrivateEx(1018967, "guardian_helper", 0, 0, gg::FloatToInt(myself.sm.x), gg::FloatToInt(myself.sm.y), gg::FloatToInt(myself.sm.z), 0, 1, 0, 0);
myself::CreateOnePrivateEx(1018967, "guardian_helper", 0, 0, gg::FloatToInt(myself.sm.x), gg::FloatToInt(myself.sm.y), gg::FloatToInt(myself.sm.z), 0, 2, 0, 0);
}
}
}
super;
}
EventHandler SEE_CREATURE(creature, i0, f0, c0)
{
if( myself.i_ai2 == 0 )
{
}
else
{
myself.i_ai1 = 1;
myself::AddAttackDesire(creature, 1, 100);
}
super;
}
EventHandler NODE_ARRIVED(script_event_arg1, script_event_arg2, script_event_arg3, state, success)
{
if( myself.i_ai0 == 1 )
{
if( myself::IsNullString(SuperPointName1) != 1 )
{
if( script_event_arg1 == myself.i_ai3 && myself.i_ai2 < 1 )
{
myself::SetVisible(1);
myself.i_ai2 = 1;
myself::ShoutFStr(1811137, "", "", "", "", "");
}
}
}
else if( myself.i_ai0 == 2 )
{
if( myself::IsNullString(SuperPointName2) != 1 )
{
if( script_event_arg1 == myself.i_ai3 && myself.i_ai2 < 1 )
{
myself::SetVisible(1);
myself.i_ai2 = 1;
myself::ShoutFStr(1811137, "", "", "", "", "");
}
}
}
else if( myself.i_ai0 == 3 )
{
if( myself::IsNullString(SuperPointName3) != 1 )
{
if( script_event_arg1 == myself.i_ai3 && myself.i_ai2 < 1 )
{
myself::SetVisible(1);
myself.i_ai2 = 1;
myself::ShoutFStr(1811137, "", "", "", "", "");
}
}
}
else if( myself.i_ai0 == 4 )
{
if( myself::IsNullString(SuperPointName4) != 1 )
{
if( script_event_arg1 == myself.i_ai3 && myself.i_ai2 < 1 )
{
myself::SetVisible(1);
myself.i_ai2 = 1;
myself::ShoutFStr(1811137, "", "", "", "", "");
}
}
}
}
EventHandler MY_DYING()
{
gg::SendScriptEvent(myself.boss, 20100501, myself.i_ai0);
super;
}
}
...Кроме них в этой локации можно встретить Knorix, Patrolmen of the Earth Dragon, которые патрулируют всю территорию локации. По сравнению с другими монстрами эти мобы имеют повышенные статы. Имеют высокий радиус агрессии и при встрече с пати игроков тут же их атакует. Игрокам рекомендуется следить за тем как они патрулируют и по возможности их не атаковать держа на себе других мобов. Иногда Knorix ходят группами по 2-3. Периодически они используют дебаффы понижающие скорость каста на 90% и скорость атаки на 30%, которые нельзя снять.Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками Вход или Регистрация
К слову о этих гадах - npc_begin warrior 22857 [guardian_of_antaras], он же Konoriks. А точнее о его (или не его) скиле - skill id="6743" level="1"/><!-- Dark Wind\Рана Тьмы. Вот тут его вроде как бы и нет
А если верить этим "товарищам" - l2db.info,skill_list={
@s_npc_prop_race_humanoid; skill_id = 4416 level = 6
@s_npc_prop_attribute_unholy1; skill_id = 5467 level = 1
@s_npc_prop_hp_lv_p0; skill_id = 4408 level = 1
@s_npc_prop_mp_lv_p0; skill_id = 4409 level = 1
@s_npc_prop_pa_lv_p6; skill_id = 4410 level = 17
@s_npc_prop_ma_lv_p2; skill_id = 4411 level = 13
@s_npc_prop_pd_lv_p4; skill_id = 4412 level = 15
@s_npc_prop_md_lv_n6; skill_id = 4413 level = 5
@s_npc_prop_armor_type_n; skill_id = 4414 level = 2
@s_npc_prop_weapon_type_sword; skill_id = 4415 level = 3
@s_full_magic_defence; skill_id = 4045 level = 1
@s_npc_resist_ston12} skill_id = 5598 level = 12Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками Вход или Регистрация,Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками Вход или Регистрацияон как бы и есть... Кому\чему верить? Или он прописан ещё в каком фале, а не только в npcdata.txt?
Берем в руки ai.obj и смотрим в нем это указано, вам дали информацию и сказали смотреть в офф скриптах.А можно для тех кто в танке, т.е. мне, показать где тут - 441909249 = skillId: 6743, level: 1 указано, что этот скилл использует конорикс ). Ну или каким иным образом указано, что он использует этот скилл... )
npc_ai={[guardian_of_antaras]}А можно для тех кто в танке, т.е. мне, показать где тут - 441909249 = skillId: 6743, level: 1 указано, что этот скилл использует конорикс ). Ну или каким иным образом указано, что он использует этот скилл... )
БАзару нуль, ток в архиве его не было )))Берем в руки ai.obj и смотрим в нем это указано, вам дали информацию и сказали смотреть в офф скриптах.
Возьми ГоД АИБАзару нуль, ток в архиве его не было )))
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?