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