Показать сообщение отдельно
Старый 02.02.2005, 14:23   #91
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: Уроки скриптологии

Реакция людей и монстров на магию.

// ************************************************** ****************
// Функция реакции НПС (людей и монстров) на магию.
// ************************************************** ****************

func void B_AssessMagic ()
{
* *// self - жертва заклинания
* *// Если применено заклинание нападения
* *if(Npc_GetLastHitSpellCat(self) == SPELL_BAD)
* *{
* * * *// всем другим НПС посылается пассивное восприятие, что на НПС self осуществлено нападение
* * * *Npc_SendPassivePerc(self,PERC_ASSESSFIGHTSOUND,se lf,other);
* *};
* *// Если применено заклинание "Смерч"
* *if(Npc_GetLastHitSpellID(self) == SPL_Whirlwind)
* *{
* * * *// очистка AI команд НПС
* * * *Npc_ClearAIQueue(self);
* * * *// очистка восприятий НПС
* * * *B_ClearPerceptions(self);
* * * *// вызов функции реакции на заклинание "Смерч"
* * * *AI_StartState(self,ZS_Whirlwind,0,"");
* * * *return;
* *};
* *// Если применено заклинание "Украсть энергию"
* *if(Npc_GetLastHitSpellID(self) == SPL_SuckEnergy)
* *{
* * * *Npc_ClearAIQueue(self);
* * * *B_ClearPerceptions(self);
* * * *AI_StartState(self,ZS_SuckEnergy,0,"");
* * * *return;
* *};
* *// Если применено заклинание "Зеленые щупальца"
* *if(Npc_GetLastHitSpellID(self) == SPL_Greententacle) * *
* *{
* * * *Npc_ClearAIQueue(self);
* * * *B_ClearPerceptions(self);
* * * *AI_StartState(self,ZS_Greententacle,0,"");
* * * *return;
* *};
* *// Если применено заклинание "Рой"
* *if(Npc_GetLastHitSpellID(self) == SPL_Swarm)
* *{
* * * *Npc_ClearAIQueue(self);
* * * *B_ClearPerceptions(self);
* * * *AI_StartState(self,ZS_Swarm,0,"");
* * * *return;
* *};
* *// Если применено заклинание "Ледяная глыба" или "Ледяная волна"
* *if(Npc_GetLastHitSpellID(self) == SPL_IceCube) ¦¦ (Npc_GetLastHitSpellID(self) == SPL_IceWave)
* *{
* * * *Npc_ClearAIQueue(self);
* * * *B_ClearPerceptions(self);
* * * *AI_StartState(self,ZS_MagicFreeze,0,"");
* * * *return;
* *};
* *// Если применено заклинание "Шаровая молния"
* *if(Npc_GetLastHitSpellID(self) == SPL_ChargeZap)
* *{
* * * *Npc_ClearAIQueue(self);
* * * *B_ClearPerceptions(self);
* * * *AI_StartState(self,ZS_ShortZapped,0,"");
* * * *return;
* *};
* *// Если применено заклинание "Страх"
* *if(Npc_GetLastHitSpellID(self) == SPL_Fear)
* *{
* * * *Npc_ClearAIQueue(self);
* * * *B_ClearPerceptions(self);
* * * *Npc_SetTarget(self,other);
* * * *// если НПС человек и НПС не Маг огня и НПС не Паладин
* * * *if(self.guild < GIL_SEPERATOR_HUM) && (self.guild != GIL_KDF) && (self.guild != GIL_PAL)
* * * *{
* * * * * *AI_StartState(self,ZS_MagicFlee,0,"");
* * * * * *return;
* * * *}
* * * *// иначе, если НПС монстр и не дракон и не троль и не големы
* * * *else if (self.guild > GIL_SEPERATOR_HUM) && (self.guild != GIL_DRAGON) && (self.guild != GIL_TROLL)
* * * *&& (self.guild != GIL_STONEGOLEM) && (self.guild != GIL_ICEGOLEM) && (self.guild != GIL_FIREGOLEM)
* * * *{
* * * * * *AI_StartState(self,ZS_MM_Flee,0,"");
* * * * * *return;
* * * *};
* *};
* *// Если применено заклинание "Огненный дождь"
* *if(Npc_GetLastHitSpellID(self) == SPL_Firerain) * *
* *{ *
* * * *Npc_ClearAIQueue(self);
* * * *AI_StartState(self,ZS_MagicBurnShort,0,"");
* * * *return;
* *};
};

// ************************************************** *
// Объявление функции реакции на магию для ГГ
// У ГГ восприятие PERC_ASSESSMAGIC всегда активно.
// ************************************************** *
// Функция PLAYER_PERC_ASSESSMAGIC вызывается только ядром системы
// ************************************************** *

const func PLAYER_PERC_ASSESSMAGIC = B_AssessMagic; * *

Ответить с цитированием