Показать сообщение отдельно
Старый 08.04.2005, 12:36   #139
Vam

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

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

// ************************************************** ****************
// Действия, оказываемые заклинаниями, на НПС
// ------------------------------------------------------------------
// Данная функция вызывается только экзешником в состоянии НПС реакции на магию
// self - НПС, против которого применено заклинание
// other - НПС, применивший заклинание
// ************************************************** ****************

const int COLL_DONOTHING * * * * * *= 0; * * * *// воздействие не оказывается
const int COLL_DOEVERYTHING * * * * = 1<<0; * * // полное воздействие
const int COLL_APPLYDAMAGE * * * * *= 1<<1; * * // только физический урон
const int COLL_APPLYHALVEDAMAGE * * = 1<<2; * * // половинный урон
const int COLL_APPLYDOUBLEDAMAGE * *= 1<<3; * * // удвоенный урон
const int COLL_APPLYVICTIMSTATE * * = 1<<4; * * // в зависимости от состояния жертвы
const int COLL_DONTKILL * * * * * * = 1<<5; * * // не убивает


// ================================================== ===========
// Аргументы:
// -------------------------------------------------------------
// spellType - тип заклинания
// --------------------------------------------------------------------
// Возвращаемое значение:
// Тип оказываемого воздействия на НПС.
// ================================================== ===========

func int C_CanNpcCollideWithSpell(var int spellType)
{
* *// если заклинание "Смерч"
* *if(spellType == SPL_Whirlwind)
* *{
* * * *// если НПС обездвижен или
* * * *if (C_NpcIsDown(self))
* * * *¦¦ (C_BodyStateContains(self,BS_SWIM)) *// плывет
* * * *¦¦ (C_BodyStateContains(self,BS_DIVE)) *// или ныряет
* * * *¦¦ (self.guild == GIL_STONEGOLEM) * * * // или Каменный голем
* * * *¦¦ (self.guild == GIL_ICEGOLEM) * * * * // или Ледяной голем
* * * *¦¦ (self.guild == GIL_FIREGOLEM) * * * *// или Каменный голем
* * * *¦¦ (self.guild == GIL_SUMMONED_GOLEM) * // или Вызванный голем
* * * *¦¦ (self.guild == GIL_DEMON) * * * * * *// или Демон
* * * *¦¦ (self.guild == GIL_SUMMONED_DEMON) * // или Вызванный демон
* * * *¦¦ (self.guild == GIL_TROLL) * * * * * *// или Троль
* * * *¦¦ (self.guild == GIL_SUMMONED_GOLEM) * // повтор (убрать!)
* * * *¦¦ (self.guild == GIL_DRAGON) * * * * * // или Дракон
* * * *¦¦ (self.guild == GIL_STONEGUARDIAN) * *// или Каменный страж
* * * *¦¦ (self.flags == NPC_FLAG_IMMORTAL) * *// или неубиваем
* * * *¦¦ (self.guild == GIL_SHADOWBEAST) * * *// или Мракорис
* * * *¦¦ (self.guild == GIL_GARGOYLE) * * * * // или Огненный дух мракориса
* * * *{
* * * * * *return COLL_DONOTHING;
* * * *};
* * * *// если НПС охраняет ворота
* * * *if(C_NpcIsGateGuard(self) == TRUE)
* * * *{
* * * * * *return COLL_APPLYDAMAGE;
* * * *};
* * * *return COLL_DOEVERYTHING;
* *};
* *// если заклинание "Ледяное копье"
* *if(spellType == SPL_Icelance)
* *{
* * * *// если НПС обездвижен или плывет или ныряет
* * * *if(C_NpcIsDown(self)) ¦¦ (C_BodyStateContains(self,BS_SWIM)) ¦¦ (C_BodyStateContains(self,BS_DIVE))
* * * *{
* * * * * *return COLL_DONOTHING;
* * * *};
* * * *// если НПС Ледяной голем или Ледяной волк или Ледяной дракон
* * * *if(self.guild == GIL_ICEGOLEM) ¦¦ (self.aivar[AIV_MM_REAL_ID] == ID_Icewolf) ¦¦ (self.aivar[AIV_MM_REAL_ID] == ID_DRAGON_ICE) * * *
* * * *{
* * * * * *return COLL_APPLYHALVEDAMAGE;
* * * *};
* * * *// если НПС Огненный голем или
* * * *if (self.guild == GIL_FIREGOLEM)
* * * *¦¦ (self.aivar[AIV_MM_REAL_ID] == ID_FIREWARAN) * * // Огненная ящерица
* * * *¦¦ (self.aivar[AIV_MM_REAL_ID] == ID_DRAGON_FIRE) * // или Огненный дракон
* * * *¦¦ (self.guild == GIL_GARGOYLE) * * * * * * * * * * // или Огненный дух мракориса
* * * *{
* * * * * *return COLL_APPLYDOUBLEDAMAGE;
* * * *};
* * * *return COLL_APPLYDAMAGE;
* *};
* *// если заклинание "Шторм"
* *if (spellType == SPL_Thunderstorm)
* *{
* * * *// если НПС обездвижен или плывет или ныряет
* * * *if(C_NpcIsDown(self)) ¦¦ (C_BodyStateContains(self,BS_SWIM)) ¦¦ (C_BodyStateContains(self,BS_DIVE))
* * * *{
* * * * * *return COLL_DONOTHING;
* * * *};
* * * *// если НПС Ледяной голем или Ледяной волк или Ледяной дракон
* * * *if(self.guild == GIL_ICEGOLEM) ¦¦ (self.aivar[AIV_MM_REAL_ID] == ID_Icewolf) ¦¦ (self.aivar[AIV_MM_REAL_ID] == ID_DRAGON_ICE) * * *
* * * *{
* * * * * *return COLL_APPLYHALVEDAMAGE;
* * * *};
* * * *// если НПС Огненный голем или
* * * *if (self.guild == GIL_FIREGOLEM)
* * * *¦¦ (self.aivar[AIV_MM_REAL_ID] == ID_FIREWARAN) * * // Огненная ящерица
* * * *¦¦ (self.aivar[AIV_MM_REAL_ID] == ID_DRAGON_FIRE) * // или Огненный дракон
* * * *¦¦ (self.guild == GIL_GARGOYLE) * * * * * * * * * * // или Огненный дух мракориса
* * * *{
* * * * * *return COLL_APPLYDOUBLEDAMAGE;
* * * *};
* * * *return COLL_DOEVERYTHING;
* *};
* *// если заклинание "Гейзер"
* *if(spellType == SPL_Geyser)
* *{
* * * *// если НПС обездвижен
* * * *if (C_NpcIsDown(self))
* * * *¦¦ (C_BodyStateContains(self,BS_SWIM)) *// или плывет
* * * *¦¦ (C_BodyStateContains(self,BS_DIVE)) *// или ныряет
* * * *¦¦ (self.guild == GIL_STONEGOLEM) * * * // или Каменный голем
* * * *¦¦ (self.guild == GIL_ICEGOLEM) * * * * // или Ледяной голем
* * * *¦¦ (self.guild == GIL_FIREGOLEM) * * * *// или Огненный голем
* * * *¦¦ (self.guild == GIL_SUMMONED_GOLEM) * // или Вызванный голем
* * * *¦¦ (self.guild == GIL_DEMON) * * * * * *// или Демон
* * * *¦¦ (self.guild == GIL_SUMMONED_DEMON) * // или Вызванный демон
* * * *¦¦ (self.guild == GIL_TROLL) * * * * * *// или Троль
* * * *¦¦ (self.guild == GIL_SUMMONED_GOLEM) * // повтор (убрать!)
* * * *¦¦ (self.guild == GIL_DRAGON) * * * * * // или Дракон
* * * *¦¦ (self.guild == GIL_STONEGUARDIAN) * *// или Каменный страж
* * * *{
* * * * * *return COLL_DONOTHING;
* * * *};
* * * *return COLL_APPLYDAMAGE ¦ COLL_DONTKILL;
* *};
* *// если заклинание "Кулак воды"
* *if(spellType == SPL_Waterfist)
* *{
* * * *// если НПС обездвижен или плывет или ныряет
* * * *if(C_NpcIsDown(self)) ¦¦ (C_BodyStateContains(self,BS_SWIM)) ¦¦ (C_BodyStateContains(self,BS_DIVE))
* * * *{
* * * * * *return COLL_DONOTHING;
* * * *};
* * * *// если НПС Дракон или Троль
* * * *if(self.guild == GIL_DRAGON) ¦¦ (self.guild == GIL_TROLL)
* * * *{
* * * * * *return COLL_APPLYHALVEDAMAGE;
* * * *};
* * * *// если НПС Огненный голем или Огненная ящерица или Огненный дух мракориса
* * * *if(self.guild == GIL_FIREGOLEM) ¦¦ (self.aivar[AIV_MM_REAL_ID] == ID_FIREWARAN) ¦¦ (self.guild == GIL_GARGOYLE)
* * * *{
* * * * * *return COLL_APPLYDOUBLEDAMAGE;
* * * *};
* * * *return COLL_APPLYDAMAGE ¦ COLL_DONTKILL;
* *};
* *// если заклинание "Шар энергии"
* *if(spellType == SPL_EnergyBall)
* *{
* * * *// если НПС обездвижен или плывет или ныряет
* * * *if(C_NpcIsDown(self)) ¦¦ (C_BodyStateContains(self,BS_SWIM)) ¦¦ (C_BodyStateContains(self,BS_DIVE))
* * * *{
* * * * * *return COLL_DONOTHING;
* * * *};
* * * *// если НПС нежить
* * * *if(C_NpcIsUndead(self))
* * * *{
* * * * * *return COLL_APPLYHALVEDAMAGE;
* * * *};
* * * *return COLL_DOEVERYTHING;
* *};
* *// если заклинание "Украсть энергию"
* *if(spellType == SPL_SuckEnergy)
* *{
* * * *// если НПС обездвижен или
* * * *if (C_NpcIsDown(self))
* * * *¦¦ (C_BodyStateContains(self,BS_SWIM)) * * *// плывет
* * * *¦¦ (C_BodyStateContains(self,BS_DIVE)) * * *// или ныряет
* * * *¦¦ (self.guild > GIL_SEPERATOR_HUM) * * * * // или монстр
* * * *¦¦ (self.flags == NPC_FLAG_IMMORTAL) * * * *// или неубиваем
* * * *¦¦ (Npc_GetDistToNpc(self,other) > 1000) * *// или расстояние между НПС > 10м
* * * *¦¦ (self.guild == GIL_DMT) * * * * * * * * *// или Черный маг
* * * *{
* * * * * *return COLL_DONOTHING;
* * * *};
* * * *return COLL_DOEVERYTHING;
* *};
* *// если заклинание "Зеленые щупальца"
* *if(spellType == SPL_GreenTentacle)
* *{
* * * *// если НПС обездвижен или
* * * *if (C_NpcIsDown(self))
* * * *¦¦ (C_BodyStateContains(self,BS_SWIM)) * * * * * * * * *// плывет
* * * *¦¦ (C_BodyStateContains(self,BS_DIVE)) * * * * * * * * *// или ныряет
* * * *¦¦ (C_NpcIsGateGuard(self)== TRUE) * * * * * * * * * * *// или охраняет ворота
* * * *¦¦ (self.guild == GIL_BLOODFLY) * * * * * * * * * * * * // или Кровяной шершень
* * * *¦¦ (self.guild == GIL_DEMON) * * * * * * * * * * * * * *// или Демон
* * * *¦¦ (self.guild == GIL_TROLL) * * * * * * * * * * * * * *// или Троль
* * * *¦¦ (self.guild == GIL_DRAGON) * * * * * * * * * * * * * // или Дракон
* * * *¦¦ (self.guild == GIL_HARPY) * * * * * * * * * * * * * *// или Гарпия
* * * *¦¦ (self.aivar[AIV_MM_REAL_ID] == ID_SKELETON_MAGE) * * // или Маг скелетов
* * * *¦¦ (self.guild == GIL_Gargoyle) * * * * * * * * * * * * // или Огненный дух мракориса
* * * *{
* * * * * *return COLL_DONOTHING;
* * * *};
* * * *return COLL_DOEVERYTHING;
* *};
* *// если заклинание "Рой"
* *if(spellType == SPL_Swarm)
* *{
* * * *// если НПС обездвижен или
* * * *if (C_NpcIsDown(self))
* * * *¦¦ (C_BodyStateContains(self,BS_SWIM)) *// плывет
* * * *¦¦ (C_BodyStateContains(self,BS_DIVE)) *// или ныряет
* * * *¦¦ (self.guild == GIL_STONEGOLEM) * * * // или Каменный голем
* * * *¦¦ (self.guild == GIL_ICEGOLEM) * * * * // или Ледяной голем
* * * *¦¦ (self.guild == GIL_FIREGOLEM) * * * *// или Огненный голем
* * * *¦¦ (self.guild == GIL_SUMMONED_GOLEM) * // или Вызванный голем
* * * *¦¦ (self.guild == GIL_DEMON) * * * * * *// или Демон
* * * *¦¦ (self.guild == GIL_SUMMONED_DEMON) * // или Вызванный демон
* * * *¦¦ (self.guild == GIL_TROLL) * * * * * *// или Троль
* * * *¦¦ (self.guild == GIL_BLOODFLY) * * * * // или Кровяной шершень
* * * *¦¦ (self.guild == GIL_DRAGON) * * * * * // или Дракон
* * * *¦¦ (self.guild == GIL_Gargoyle) * * * * // или Огненный дух мракориса
* * * *¦¦ (self.guild == GIL_DMT) * * * * * * *// или Черный маг
* * * *¦¦ (self.guild == GIL_STONEGUARDIAN) * *// или Каменный страж
* * * *¦¦ (C_NPCIsUndead(self) == TRUE) * * * *// или нежить
* * * *{
* * * * * *return COLL_DONOTHING; *
* * * *};
* * * *// если НПС монстр или охраняет ворота
* * * *if(self.guild > GIL_SEPERATOR_HUM) ¦¦ (C_NpcIsGateGuard(self) == TRUE)
* * * *{
* * * * * *return COLL_APPLYDAMAGE;
* * * *};
* * * *return COLL_DOEVERYTHING;
* *};
* *// если заклинание "Крик мертвых"
* *if(spellType == SPL_Skull)
* *{
* * * *// если НПС обездвижен или плывет или ныряет или нежить
* * * *if(C_NpcIsDown(self)) ¦¦ (C_BodyStateContains(self,BS_SWIM)) ¦¦ (C_BodyStateContains(self,BS_DIVE)) ¦¦ (C_NpcIsUndead(self))
* * * *{
* * * * * *return COLL_DONOTHING;
* * * *};
* * * *return COLL_DOEVERYTHING;
* *};
* *// если заклинание "Порыв ветра"
* *if(spellType == SPL_WINDFIST)
* *{
* * * *// если расстояние между НПС > 10м
* * * *if(Npc_GetDistToNpc(other,self) >= 1000)
* * * *{
* * * * * *return COLL_DONOTHING;
* * * *};
* * * *return COLL_DOEVERYTHING;
* *};
* *// если заклинание "Молния" или "Шаровая молния" или "Стрела сотрясения"
* *if(spellType == SPL_Zap) ¦¦ (spellType == SPL_ChargeZap) ¦¦ (spellType == SPL_Concussionbolt)
* *{
* * * *// если НПС обездвижен
* * * *if(C_NpcIsDown(self))
* * * *{
* * * * * *return COLL_DONOTHING;
* * * *};
* * * *return COLL_APPLYDAMAGE ¦ COLL_DONTKILL;
* *};
* *// если нападающий Черный маг
* *if(other.guild == GIL_DMT)
* *{
* * * *// если заклинание "Огненный дождь" или "Шторм" или "Удар молнии"
* * * *if(spellType == SPL_Firerain) ¦¦ (spellType == SPL_Thunderstorm) ¦¦ (spellType == SPL_LightningFlash)
* * * *{
* * * * * *// если НПС Черный маг
* * * * * *if(self.guild == GIL_DMT)
* * * * * *{
* * * * * * * *return COLL_DONOTHING;
* * * * * *}
* * * * * *// если НПС ГГ
* * * * * *else if(Hlp_GetInstanceID(self) == Hlp_GetInstanceID(hero))
* * * * * *{
* * * * * * * *return COLL_APPLYHALVEDAMAGE;
* * * * * *};
* * * *};
* * * *// если заклинание Большая огненная буря и НПС Черный маг
* * * *if(spellType == SPL_Firestorm) && (self.guild == GIL_DMT)
* * * *{
* * * * * *return COLL_DONOTHING;
* * * *};
* *};
* *// если заклинание Большой огненный шар или
* *if (spellType == SPL_ChargeFireball)
* *¦¦ (spellType == SPL_InstantFireball) * // или Огненный шар
* *¦¦ (spellType == SPL_Firerain) * * * * *// или Огненный дождь
* *¦¦ (spellType == SPL_Firebolt) * * * * *// или Огненная стрела
* *¦¦ (spellType == SPL_Firestorm) * * * * // или Большая огненная буря
* *¦¦ (spellType == SPL_Pyrokinesis) * * * // или Малая огненная буря
* *¦¦ (spellType == SPL_Deathbolt) * * * * // или Стрела смерти
* *¦¦ (spellType == SPL_Deathball) * * * * // или Шар смерти
* *{
* * * *// если НПС обездвижен или плывет или ныряет
* * * *if(C_NpcIsDown(self)) ¦¦ (C_BodyStateContains(self,BS_SWIM)) ¦¦ (C_BodyStateContains(self,BS_DIVE))
* * * *{
* * * * * *return COLL_DONOTHING;
* * * *};
* * * *// если НПС Огненный голем или
* * * *if (self.guild == GIL_FIREGOLEM) * * * *
* * * *¦¦ (self.aivar[AIV_MM_REAL_ID] == ID_FIREWARAN) * * // Огненная ящерица
* * * *¦¦ (self.guild == GIL_GARGOYLE) * * * * * * * * * * // или Огненный дух мракориса
* * * *¦¦ (self.aivar[AIV_MM_REAL_ID] == ID_DRAGON_FIRE) * // или Огненный дракон
* * * *{
* * * * * *return COLL_APPLYHALVEDAMAGE;
* * * *}
* * * *// если НПС Ледяной голем или
* * * *if (self.guild == GIL_ICEGOLEM)
* * * *¦¦ (self.aivar[AIV_MM_REAL_ID] == ID_DRAGON_ICE) * *// Ледяной дракон
* * * *¦¦ (self.aivar[AIV_MM_REAL_ID] == ID_ICEWOLF) * * * // или Ледяной волк
* * * *{
* * * * * *return COLL_APPLYDOUBLEDAMAGE;
* * * *};
* * * *// если НПС Каменный голем или
* * * *if (self.guild == GIL_STONEGOLEM)
* * * *¦¦ (self.guild == GIL_SUMMONED_GOLEM) * // Вызванный голем
* * * *¦¦ (self.guild == GIL_DEMON) * * * * * *// или Демон
* * * *¦¦ (self.guild == GIL_SUMMONED_DEMON) * // или Вызванный демон
* * * *¦¦ (self.guild == GIL_TROLL) * * * * * *// или Троль
* * * *¦¦ (self.guild == GIL_DRAGON) * * * * * // или Дракон
* * * *{ *
* * * * * *return COLL_APPLYDAMAGE;
* * * *};
* * * *return COLL_DOEVERYTHING;
* *};
* *// если заклинание Ледяная глыба или Ледяная волна или Ледяная стрела
* *if(spellType *== SPL_IceCube) ¦¦ (spellTYpe *== SPL_IceWave) ¦¦ (spelltype *== SPL_Icebolt)
* *{
* * * *// если НПС обездвижен или плывет или ныряет
* * * *if(C_NpcIsDown(self)) ¦¦ (C_BodyStateContains(self,BS_SWIM)) ¦¦ (C_BodyStateContains(self,BS_DIVE))
* * * *{
* * * * * *return COLL_DONOTHING;
* * * *};
* * * *// если НПС Огненный голем или
* * * *if (self.guild == GIL_FIREGOLEM)
* * * *¦¦ (self.aivar[AIV_MM_REAL_ID] == ID_FIREWARAN) * * // Огненная ящерица
* * * *¦¦ (self.guild == GIL_GARGOYLE) * * * * * * * * * * // или Огненный дух мракориса
* * * *¦¦ (self.aivar[AIV_MM_REAL_ID] == ID_DRAGON_FIRE) * // или Огненный дракон
* * * *{
* * * * * *return COLL_APPLYDOUBLEDAMAGE;
* * * *};
* * * *// если НПС Ледяной голем или
* * * *if (self.guild == GIL_ICEGOLEM)
* * * *¦¦ (self.aivar[AIV_MM_REAL_ID] == ID_DRAGON_ICE) * *// Ледяной дракон
* * * *¦¦ (self.aivar[AIV_MM_REAL_ID] == ID_ICEWOLF) * * * // или Ледяной волк
* * * *{
* * * * * *return COLL_APPLYHALVEDAMAGE;
* * * *};
* * * *// если НПС Каменный голем или
* * * *if (self.guild == GIL_STONEGOLEM)
* * * *¦¦ (self.guild == GIL_SUMMONED_GOLEM) * // Вызванный голем
* * * *¦¦ (self.guild == GIL_DEMON) * * * * * *// или Демон
* * * *¦¦ (self.guild == GIL_SUMMONED_DEMON) * // или Вызванный демон
* * * *¦¦ (self.guild == GIL_TROLL) * * * * * *// или Троль
* * * *¦¦ (self.guild == GIL_DRAGON) * * * * * // или Дракон
* * * *{
* * * * * *return COLL_APPLYDAMAGE;
* * * *};
* * * *return COLL_DOEVERYTHING;
* *};
* *// если заклинание Удар молнии
* *if (spellType == SPL_LightningFlash)
* *{
* * * *// если НПС обездвижен
* * * *if(C_NpcIsDown(self))
* * * *{
* * * * * *return COLL_DONOTHING; *
* * * *};
* * * *// если НПС плывет или ныряет
* * * *if(C_BodyStateContains(self,BS_SWIM)) ¦¦ (C_BodyStateContains(self,BS_DIVE))
* * * *{
* * * * * *COLL_APPLYDOUBLEDAMAGE;
* * * *};
* * * *return COLL_DOEVERYTHING; *
* *};
* *// если заклинание Страх
* *if(spellType == SPL_Fear)
* *{
* * * *// если НПС не Огненный голем и
* * * *if (self.guild != GIL_FIREGOLEM)
* * * *&& (self.guild != GIL_ICEGOLEM) * * * * // не Ледяной голем
* * * *&& (self.guild != GIL_STONEGOLEM) * * * // и не Каменный голем
* * * *&& (self.guild != GIL_SUMMONED_GOLEM) * // и не Вызванный голем
* * * *&& (self.guild != GIL_SWAMPSHARK) * * * // и не Болотный голем
* * * *&& (self.guild != GIL_TROLL) * * * * * *// и не Троль
* * * *&& (!C_NpcIsEvil(self)) * * * * * * * * // и не источник зла
* * * *&& (C_NpcIsGateGuard(self) == FALSE) * *// и не охранник ворот
* * * *{
* * * * * *return COLL_DOEVERYTHING;
* * * *};
* * * *return COLL_DONOTHING;
* *};
* *// если заклинание Уничтожить нежить
* *if(spellType == SPL_DestroyUndead)
* *{
* * * *// если НПС нежить и жизнь НПС <= урону заклинания
* * * *if(C_NpcIsUndead(self)) && (self.attribute[ATR_HITPOINTS_MAX] <= SPL_Damage_DESTROYUNDEAD)
* * * *{ *
* * * * * *return COLL_DOEVERYTHING;
* * * *};
* * * *return COLL_DONOTHING;
* *};
* *// если заклинание Дым смерти
* *if(spellType == SPL_BreathOfDeath)
* *{
* * * *// если расстояние между НПС < 10м и НПС не нежить
* * * *if(Npc_GetDistToNpc(other,self) < 1000) && (!C_NpcIsUndead(self))
* * * *{
* * * * * *// если НПС дракон или НПС не ГГ
* * * * * *if(self.guild == GIL_DRAGON) ¦¦ (Hlp_GetInstanceID(self) != Hlp_GetInstanceID(hero)) * *
* * * * * *{
* * * * * * * *return COLL_APPLYHALVEDAMAGE;
* * * * * *};
* * * * * *return COLL_DOEVERYTHING;
* * * *};
* * * *return COLL_DONOTHING;
* *};
* *// если заклинание Волна смерти
* *if(spellType == SPL_MassDeath)
* *{
* * * *// если НПС не нежить
* * * *if(!C_NpcIsUndead(self)) * *
* * * *{
* * * * * *// если НПС дракон
* * * * * *if(self.guild == GIL_DRAGON)
* * * * * *{
* * * * * * * *return COLL_APPLYHALVEDAMAGE;
* * * * * *};
* * * * * *return COLL_DOEVERYTHING;
* * * *};
* * * *return COLL_DONOTHING;
* *};
* *// если заклинание Святой удар
* *if(spellType == SPL_MasterOfDisaster)
* *{
* * * *// если НПС не обездвижен и не плывет и не ныряет и нежить
* * * *if(!C_NpcIsDown(self)) && (!C_BodyStateContains(self,BS_SWIM)) && (!C_BodyStateContains(self,BS_DIVE)) && (C_NpcIsEvil(self))
* * * *{
* * * * * *return COLL_DOEVERYTHING;
* * * *};
* * * *return COLL_DONOTHING;
* *};
* *// если заклинание Уменьшить монстра
* *if(spellType == SPL_Shrink)
* *{
* * * *// если НПС обездвижен или плывет или ныряет или дракон
* * * *if(C_NpcIsDown(self)) ¦¦ (C_BodyStateContains(self,BS_SWIM)) ¦¦ (C_BodyStateContains(self,BS_DIVE)) ¦¦ (self.guild == GIL_DRAGON)
* * * *{
* * * * * *return COLL_DONOTHING;
* * * *};
* * * *return COLL_DOEVERYTHING;
* *};
* *// если заклинание Святая стрела
* *if(spellType == SPL_PalHolyBolt)
* *{
* * * *// если НПС источник зла
* * * *if(C_NpcIsEvil(self))
* * * *{
* * * * * *return COLL_DOEVERYTHING;
* * * *};
* * * *return COLL_DONOTHING;
* *}
* *// если заклинание Разогнать дьяволов
* *else if(spellType == SPL_PalRepelEvil)
* *{
* * * *// если НПС источник зла
* * * *if(C_NpcIsEvil(self))
* * * *{
* * * * * *// если жизнь НПС <= ущербу заклинания
* * * * * *if(self.attribute[ATR_HITPOINTS_MAX] <= SPL_Damage_PalRepelEvil)
* * * * * *{
* * * * * * * *return COLL_DOEVERYTHING;
* * * * * *}
* * * * * *else
* * * * * *{
* * * * * * * *return COLL_APPLYHALVEDAMAGE;
* * * * * *};
* * * *};
* * * *return COLL_DONOTHING;
* *}
* *// если заклинание Уничтожить дьяволов
* *else if(spellType == SPL_PalDestroyEvil)
* *{
* * * *// если НПС источник зла и жизнь НПС <= ущербу заклинания
* * * *if(C_NpcIsEvil(self)) && (self.attribute[ATR_HITPOINTS_MAX] <= SPL_Damage_PalDestroyEvil)
* * * *{
* * * * * *return COLL_DOEVERYTHING;
* * * *};
* * * *return COLL_DONOTHING;
* *};
* *return COLL_DOEVERYTHING;
};

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