|
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; * *
|