Вот такую ошибку кидает при ударах.
7:42:CRITICALe_npc.scp,184)Error Pri=2, Code=-1073741676, Desc='Exception', in CObjBase::Verb() #1 "DAMAGE"
07:42EBUG:command 'DAMAGE' args '37' [0671d330]
а вот скрипт.
Код
[EVENTS e_npcs]
ON=@Click
IF (<TAG0.NAME.HUE>)
LOCAL.COLOR=<TAG0.NAME.HUE>
ELIF ((((<REGION.FLAGS>®ion_flag_guarded) || (<REGION.FLAGS>®ion_flag_safe)) && ((<BODY>==c_man) || (<BODY>==c_woman) || (<ISVENDOR>))) || (<FLAGS>&statf_invul))
LOCAL.COLOR=04ac
ELIF (<ISPK>)
LOCAL.COLOR=0eb
ELIF (<ISCRIMINAL>)
LOCAL.COLOR=946
ELSE
LOCAL.COLOR=88
ENDIF
LOCAL.REALNAME=<NAME>
IF (STRMATCH(* the*,<SERV.CHARDEF.<BASEID>.NAME>)) && !(STRMATCH(* the*,<NAME>))
LOCAL.REALNAME .= , <STRSUB <HVAL (StrIndexOf(<SERV.CHARDEF.<BASEID>.NAME>,the,0))> 99 <SERV.CHARDEF.<BASEID>.NAME>>
ENDIF
MESSAGE @<LOCAL.COLOR>,3,1 <LOCAL.REALNAME>
RETURN 1
ON=@Attack
IF (<SRC.ISEVENT.e_young>)
IF !(<SRC.TAG0.EVENT.ID>)
IF !(0<SRC.ISFIGHTINGME <UID>>)
ACTION -1
RETURN 1
ENDIF
ENDIF
ENDIF
ON=@NpcActFollow
IF !(<ISVENDOR>)
IF (<DISTANCE> > 6)
IF (<MAGERY>)
IF !(<R25>)
GO <SRC.P>
MOVEBACK
ENDIF
ENDIF
IF (<ARCHERY>)
IF !(<FINDLAYER.2>)
LOCAL.BOW=<FINDTYPE.T_WEAPON_BOW>
LOCAL.XBOW=<FINDTYPE.T_WEAPON_XBOW>
IF (<LOCAL.BOW>)
EQUIP <LOCAL.BOW>
ELIF (<LOCAL.XBOW>)
EQUIP <LOCAL.XBOW>
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ON=@DEATH
LOCAL.TMP=<OBJ>
OBJ=<MEMORYFINDTYPE.memory_ispawned.LINK>
OBJ.TIMER=<HVAL {<OBJ.MOREX> <OBJ.MOREY>}*60>
NEWGOLD <HVAL (<maxhits>/4)+(<dex>/4)+(<int>/4)>
OBJ=<LOCAL.TMP>
IF (<ACT>)
FORCHARMEMORYTYPE MEMORY_FIGHT
COLOR |= <DEF.memory_harmedby>
ENDFOR
IF (<ACT.ISPLAYER>)
IF (0<R<ACT.LUCK>> > <R200,2700>)
RANDMAGICITEM
ENDIF
ENDIF
IF !(STRCMPI(Doom,<REGION.NAME>))
NEWLOOT i_reag_daemon_bone,<HVAL (<maxhits>/17)+(<dex>/13)+(<int>/12)>
ENDIF
IF (<act.isplayer>)
IF !(<ISTEVENT.e_champion>) && !(<ISEVENT.e_champion_minion>) && (STRCMPI(Doom,<REGION.NAME>))
IF (<MAP> > 1) || ((<P.X> > 5104) && (<P.Y> > 2216))
IF (<MAXHITS> > 200)
IF !(<R25>)
SERV.NEWNPC=<BASEID>
NEW.HOME=<NEW.P>
NEW.HOMEDIST=6
NEW.COLOR=04ac
NEW.NAME .= (Paragon)
NEW.STR *= 3
NEW.DEX *= 2
NEW.INT *= 3
NEW.MAXHITS += <HVAL <NEW.MAXHITS>/3>
NEW.HITS=<NEW.MAXHITS>
NEW.STAM=<NEW.MAXSTAM>
NEW.MANA=<NEW.MAXMANA>
NEW.KARMA -9000
NEW.FAME *= 2
NEW.NPC brain_monster
OBJ=<NEW>
NEW.ADDGOLD <HVAL <RESCOUNT i_gold>*3>
OBJ.REMOVETIMER <HVAL 60*15>
OBJ.RANDMAGICITEM
OBJ.RANDMAGICITEM
IF !(<R20>)
NEWLOOT={minorartis}
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ON=@DeathCorpse
IF !(<ISEMPTY <TAG.LOOTRIGHTLIST>>)
TRY UID.<ARGO.UID>.TAG0.LOOTRIGHTLIST=<TAG0.LOOTRIGHTLIST>
ENDIF
TAG.LOOTRIGHTLIST
if (<magery>)
NEWLOOT i_reag_eye_of_newt,<HVAL ((<MAGERY>*2)+100)/100>
endif
IF !(<R3>)
NEWLOOT i_reag_bone
ENDIF
IF (<act.isplayer>)
IF (<ISPK>)
IF (<maxhits> > 50) || (<dex> > 50) || (<int> > 50)
NEWLOOT i_silver_coin,<HVAL (<maxhits>/6)+(<dex>/4)+(<int>/4)>,<argo.uid>
ENDIF
ENDIF
ENDIF
ON=@GetHit
IF (<src>!=<uid>)
IF !(<TAG0.GOTHIT>)
IF (<SRC.NPC>==brain_dragon) && !(<SRC.FLAGS>&statf_pet) && !(<FLAGS>&statf_pet)
RETURN 1
ENDIF
IF (<SRC.ISPLAYER>)
IF (((<REGION.FLAGS>®ion_flag_guarded) && ((<BODY>==c_man) || (<BODY>==c_woman))) || ((<ISVENDOR>) && !(<KARMA> < -1000)))
ARGN1=1
HITS += 1
RETURN 0
ENDIF
IF (<SRC.REGION.FLAGS>®ion_flag_guarded) && !(<REGION.FLAGS>®ion_flag_guarded)
GO <HOME>
SPELLEFFECT S_CURE,1000
SPELLEFFECT S_DISPEL,1000
RETURN 1
ENDIF
IF (<SRC.ISEVENT.e_young>)
IF !(0<SRC.ISFIGHTINGME <UID>>)
SRC.ATTACK <UID>
ENDIF
ENDIF
IF ((<FINDLAYER.2.TYPE>==T_WEAPON_BOW) || (<FINDLAYER.2.TYPE>==T_WEAPON_XBOW)) && (<DISTANCE> < 2)
UNEQUIP <FINDLAYER.2>
ENDIF
IF (<ARGN2>&DAM_MAGIC)
IF (<SRC.FINDLAYER.1.TAG0.MAGICDAMINCREASE>)
ARGN1 += <HVAL (<ARGN1>*<SRC.FINDLAYER.1.TAG0.MAGICDAMINCREASE>)/100>
ENDIF
ENDIF
ENDIF
IF (<FLAGS>&STATF_POISONED)
IF !(<R7>)
SPELLEFFECT S_CURE,<MAGERY>,<UID>
ENDIF
ENDIF
IF (<SRC.FLAGS>&statf_conjured)
IF !(<R20>)
SRC.SPELLEFFECT S_DISPEL,1000,<UID>
ENDIF
ENDIF
IF !(<R20>)
SPELLEFFECT S_GREATER_HEAL,<QVAL <MAGERY> ? <MAGERY>:500>,<UID>
ENDIF
LOCAL.DEFEND=<AC>
IF (<LOCAL.DEFEND> > 85)
LOCAL.DEFEND=85
ENDIF
ARGN1 -= <HVAL (<ARGN1>*<LOCAL.DEFEND>)/100>
TAG.GOTHIT=1
FINDID.i_rune_paralyze.TIMERD=1
IF (<FLAGS>&statf_freeze)
FLAGS &= ~statf_freeze
ENDIF
IF ((STRMATCH(*t_weapon*,<SRC.FINDLAYER.1.TYPE>)) || (STRMATCH(*t_weapon*,<SRC.FINDLAYER.2.TYPE>)) || (<SRC.ACTION> == SKILL_WRESTLING))
SRC.SKILLGAIN <SERV.SKILL.<SRC.ACTION>.KEY> 10
ENDIF
DAMAGE <ARGN1> <DEF.DAM_GOD> <SRC>
RETURN 1
ELSE
TAG.GOTHIT
ENDIF
ENDIF
ON=@SpellEffect
IF (<src>!=<UID>)
IF !(<serv.spell.<argn1>.flags>&SPELLFLAG_GOOD)
LOCAL.CIRCLE=<SPELLCIRCLE <ARGN1>>
IF (<OBODY>!=C_ELF_MALE) && (<OBODY>!=C_ELF_FEMALE)
LOCAL.CHANCE=<HVAL <LOCAL.CIRCLE>+6>
LOCAL.CHANCE2=<HVAL <LOCAL.CIRCLE>+6>
ELSE
LOCAL.CHANCE=<HVAL <LOCAL.CIRCLE>+8>
LOCAL.CHANCE2=<HVAL <LOCAL.CIRCLE>+8>
ENDIF
IF (<LOCAL.CIRCLE>==1)
LOCAL.CHANCE=5
LOCAL.CHANCE2=2
ENDIF
IF (<R<HVAL <MagicResistance>/<LOCAL.CHANCE>>> > <R<HVAL <ARGN2>*2>>)
effect 3,i_fx_glow,16,20
RETURN 1
ENDIF
ENDIF
ENDIF
ON=@HitTry
IF (<SRC.FINDLAYER.2.TYPE>==T_SHIELD)
IF (<SRC.FINDLAYER.2.TAG0.HITCHANCEDECREASE>)
IF (<ACTDIFF> > 0)
ACTDIFF -= <EVAL (<ACTDIFF>*<SRC.FINDLAYER.2.TAG0.HITCHANCEDECREASE>)/100>
ENDIF
ENDIF
ENDIF
IF (<ARGN1> < 20)
ARGN1=20
ENDIF
ON=@Hit
IF (<SRC.FINDLAYER.2.TYPE>==T_SHIELD)
LOCAL.BASEPARRYCHANCE=<HVAL (<SRC.PARRYING>-<SRC.BUSHIDO>)/40>
IF (<LOCAL.BASEPARRYCHANCE> < 0)
LOCAL.BASEPARRYCHANCE=0
ENDIF
ELIF (STRMATCH(*t_weapon*,<SRC.FINDLAYER.1.TYPE>))
IF !(<SRC.FINDLAYER.1.TWOHANDS>)
LOCAL.PARRYNEW=<HVAL (<SRC.PARRYING>*<SRC.BUSHIDO>)/48000>
LOCAL.PARRYLEGACY=<HVAL <SRC.PARRYING>/80>
IF (<LOCAL.PARRYNEW> > <LOCAL.PARRYLEGACY>)
LOCAL.BASEPARRYCHANCE=<LOCAL.PARRYNEW>
ELSE
LOCAL.BASEPARRYCHANCE=<LOCAL.PARRYLEGACY>
ENDIF
ENDIF
ELIF (STRMATCH(*t_weapon*,<SRC.FINDLAYER.2.TYPE>)) && (<FINDLAYER.2.TYPE>!=t_weapon_bow) && (<FINDLAYER.2.TYPE>!=t_weapon_xbow)
IF (<SRC.FINDLAYER.2.TWOHANDS>)
LOCAL.PARRYNEW=<HVAL (<SRC.PARRYING>*<SRC.BUSHIDO>)/41140>
LOCAL.PARRYLEGACY=<HVAL <SRC.PARRYING>/80>
IF (<LOCAL.PARRYNEW> > <LOCAL.PARRYLEGACY>)
LOCAL.BASEPARRYCHANCE=<LOCAL.PARRYNEW>
ELSE
LOCAL.BASEPARRYCHANCE=<LOCAL.PARRYLEGACY>
ENDIF
ENDIF
ENDIF
IF (<LOCAL.BASEPARRYCHANCE>)
SRC.SKILLGAIN 45 Parrying
SRC.SKILLGAIN 60 Bushido
IF (<SRC.PARRYING> >= 100.0) || (<SRC.BUSHIDO> >= 100.0)
LOCAL.BASEPARRYCHANCE += 5
ENDIF
IF (<R<LOCAL.BASEPARRYCHANCE>> > <R100>)
SRC.SYSMESSAGELOC 946,3,1063353
SRC.SKILLGAIN 20 Parrying
SRC.SKILLGAIN 35 Bushido
RETURN 1
ENDIF
ENDIF
[EOF]