Если это хорошо применять, то нпс будет играть лучше плеера.
Код
//Отступление (@GETHIT)
[FUNCTION MOB_RUNAWAY]
IF (<SRC.DIR> == 0)
RUN n
RUN n
RUN n
RUN n
ELIF (<SRC.DIR> == 1)
RUN ne
RUN ne
RUN ne
RUN ne
ELIF (<SRC.DIR> == 2)
RUN e
RUN e
RUN e
RUN e
ELIF (<SRC.DIR> == 3)
RUN se
RUN se
RUN se
RUN se
ELIF (<SRC.DIR> == 4)
RUN s
RUN s
RUN s
RUN s
ELIF (<SRC.DIR> == 5)
RUN sw
RUN sw
RUN sw
RUN sw
ELIF (<SRC.DIR> == 6)
RUN w
RUN w
RUN w
RUN w
ELIF (<SRC.DIR> == 7)
RUN nw
RUN nw
RUN nw
RUN nw
ENDIF
//Наступление (@GETHIT)
[FUNCTION MOB_CHARGE]
IF (<DISTANCE> > 1)
SRC.GO = <P>
ENDIF
//Проверка маны
[FUNCTION MANA_CHECK]
IF (<MANA> < <ARGN> )
RETURN 1
ENDIF
//Кастование монстром
[FUNCTION MOB_CAST]
IF (<ARGN> <= 8)
MANA_CHECK 5
ELIF (<ARGN> > 8) && (<ARGN> <= 16)
MANA_CHECK 10
ELIF (<ARGN> > 16) && (<ARGN> <= 24)
MANA_CHECK 15
ELIF (<ARGN> > 24) && (<ARGN> <= 32)
MANA_CHECK 20
ELIF (<ARGN> > 32) && (<ARGN> <= 40)
MANA_CHECK 25
ELIF (<ARGN> > 40) && (<ARGN> <= 48)
MANA_CHECK 30
ELIF (<ARGN> > 48) && (<ARGN> <= 56)
MANA_CHECK 35
ELIF (<ARGN> > 56) && (<ARGN> <= 64)
MANA_CHECK 50
ENDIF
IF (<ARGN> == 7) //Reactive armor
SAY In Vas Mani
ELIF (<ARGN> == 15) //Great Heal
SAY In Vas Mani
ELIF (<ARGN> == 30) //Paralyze
SAY In Vas Mani
ELIF (<ARGN> == 31) //Lighting
SAY In Vas Mani
ELIF (<ARGN> == 41) //Dispel
SAY An Ort
ENDIF
NEWITEM m_mobcast
ACT.EQUIP
VAR.SPELL = <ARGN>
VAR.FIZZLE = 0
EVENTS = +e_cast_events
[EVENTS e_cast_events]
ON=@GETHIT
VAR.FIZZLE = 1
ON=@SPELLEFFECT
VAR.FIZZLE = 1
[ITEMDEF m_mobcast]
TYPE = t_eq_script
LAYER = layer_special
ON=@CREATE
ATTR = attr_invis
ON=@EQUIP
TIMER = 2
ON=@TIMER
IF !(<VAR.FIZZLE> )
CONT.ANIM 2
IF (<EVAL <VAR.SPELL>> == 31)
CONT.SPELLEFFECT s_greater_heal, <CONT.MAGERY>
CONT.MANA = <CONT.MANA> + -15
ELIF (<EVAL <VAR.SPELL>> == 30)
CONT.SPELLEFFECT s_greater_heal, <CONT.MAGERY>
CONT.MANA = <CONT.MANA> + -15
ENDIF
ELSE
CONT.ANIM 17
CONT.MANA = <CONT.MANA> + -5
ENDIF
CONT.EVENTS = -e_cast_events
REMOVE
RETURN 1
//Лечении бутылями, если хиты меньше <ARGN> (@GETHIT)
[FUNCTION MOB_HEALING]
IF (<HITPOINTS> < <ARGN> )
IF (<RESTEST 1 i_potion_healgreat> )
SPELLEFFECT s_greater_heal,100.0
CONSUME i_potion_healgreat
ENDIF
ENDIF
//Лечении спелом, если хиты меньше <ARGN> (@GETHIT)
[FUNCTION MOB_HEALING_SPELL]
IF (<HITPOINTS> < <ARGN> ) && (<MANA> > 15)
MOB_RUNAWAY
MOB_CAST 15 //Great heal
ENDIF
//Подготовка к атаке (@NPCSEENEWPLAYER)
[FUNCTION MOB_MAGIC_PREPARE]
IF !(<FLAGS> & statf_reactive)
MOB_CAST 7 //reactive armor
ENDIF
ATTACK
//Диспел спелов с игрока (@HITTRY)
[FUNCTION MOB_DISPEL]
IF (<SRC.FLAGS> & statf_conjured)
MOB_CAST 41 // Dispel
ENDIF
//Лут трупа игрока и одевает на себя его лучшие вещи... (@ItemStep)
[FUNCTION MOB_LOOT]
IF (<ACT.BASEID> == i_corpse)
SRC.SAY Corpse looted
LOOT_COPRSE
EQUIPWEAPON
EQUIPARMOR
ENDIF
[FUNCTION LOOT_CORPSE]
IF (0<ACT.FINDCONT(0).UID>==0)
RETURN 1
ENDIF
ACT.FINDCONT(0).CONT = <FINDLAYER(21).UID>
LOOT_CORPSE
RETURN 1
//Одевание оружия (@GETHIT/ItemStep)
[FUNCTION MOB_EQUIP_SWORD]
//findid(i_jail_sword).cont=<uid>
IF (FINDLAYER(21).FINDTYPE.T_WEAPON_SWORD.UID)
FINDLAYER(21).FINDTYPE.T_WEAPON_SWORD.CONT = <UID>
ENDIF
//Одевание лука или арбалета (@GETHIT/ItemStep)
[FUNCTION MOB_EQUIP_BOW]
IF (FINDLAYER(21).FINDTYPE.T_WEAPON_BOW.UID)
FINDLAYER(21).FINDTYPE.T_WEAPON_BOW.CONT = <UID>
ENDIF
//Одевание брони (@GETHIT/ItemStep)
[FUNCTION MOB_EQUIP_ARMOR]
EQUIPARMOR
//Ивент для мага
[EVENTS e_npc_sorc]
ON=@NPCSEENEWPLAYER
MOB_MAGIC_PREPARE
ON=@GETHIT
// Смена лука / меча
IF (<SRC.DISTANCE> < 2)
MOB_EQUIP_SWORD
MOB_EQUIP_ARMOR
ATTACK
ELSE
MOB_EQUIP_BOW
ATTACK
ENDIF
MOB_HEALING_SPELL 40
MOB_HEALING 20
ON=@HIT
// Добивание лайтнингами или паралайз
IF (<SRC.HITS> < 10)
MOB_CAST 37
ENDIF
IF (<HITS> > <SRC.HITS> ) && (<HITS> < <STR>/2)
MOB_CAST 30
ENDIF
// Смена лука / меча
IF (<SRC.DISTANCE> < 2)
MOB_EQUIP_SWORD
MOB_EQUIP_ARMOR
ATTACK
ELSE
MOB_EQUIP_BOW
ATTACK
ENDIF
ON=@SPELLEFFECT
IF (<ARGN> == 20) // Poison
MOB_RUNAWAY
MOB_CAST 11
ENDIF
IF (<ARGN> == 38) // Paralyze
MOB_RUNAWAY
MOB_CAST 5
ENDIF
ON=@SPELLCAST
RETURN 1
Скрипт НЕ мой. Я непомню автора.