Дополнительные удары при бое:
Backstab 33% - Шанс нанести удар со спины (+75% от урона)
Critical 1/50 - Шанс нанести критический удар (+135% от урона)
Бонусные переменные могут быть использованны на любов виде предмета который можно одеть на себя. Типы Бонусов:
Evasion % - Шанс увернуться от удара
ResistPhysical % - Сопративляемость к физическому урону
DamageIncreas % - увеличение урона
DamageSpeed % - увеличение скорости ударов
QuickCast % - Увеличение скорости магии
ManaRequirement % - Уменьшение потери маны при касте магии.
ResistMagic % - Сопративляемость к любому магическому урону
ResistFire % - Сопративляемость к огненному урону
ResistEnergy % - Сопративляемость к энергетическому урону
ResistPoison % - Сопративляемость к отравляющему урону
?ResistCold % - Сопративляемость к замаражевающему урону
? - Данное свойство откюченно в связи с тем что перепись действия этого эффекта должна производиться в тригере ON=@SpellEffect где указывается время действия данного спелла т.е при 0 сопротивляемости - 10 сек, при 100% сопративляемости - 0 сек.
PS: Возможно для кого то система ещё сырая.. но система работает на ура. Собственно в скрипте всё рассписанно что да где... так что легко подлежит изменениям... Спасибо...
Код
[FUNCTION GetCombatEffect]
LOCAL.Result="0"
FOR 1 24
IF (<LOCAL._FOR>!=9) && (<LOCAL._FOR>!=11) && (<LOCAL._FOR>!=15) && (<LOCAL._FOR>!=16) && (<LOCAL._FOR>!=21)
LOCAL.Result = "<EVAL (<LOCAL.Result> + <FINDLAYER.<EVAL <LOCAL._FOR>>.TAG0.<ARGS>>)>"
ENDIF
ENDFOR
RETURN <LOCAL.Result>
[FUNCTION DamageEquipedArmor]
OBJ=<UID>
FORCONT <UID>
IF StrMatch("t_armor*","<TYPE>") || StrMatch("t_shield*","<TYPE>") || StrMatch("t_clothing","<TYPE>")
IF (<OBJ.FINDLAYER.<LAYER>.UID>==<UID>) && !(<ATTR>&attr_magic) && (RAND(100) < 50)
DAMAGE 100.0
RETURN 1
ENDIF
ENDIF
ENDFOR
RETURN 0
[FUNCTION DamageEquipedWeapon]
OBJ=<UID>
FORCONT <UID>
IF StrMatch("t_weapon_*","<TYPE>")
IF (<OBJ.FINDLAYER.<LAYER>.UID>==<UID>) && !(<ATTR>&attr_magic) && (RAND(100) < 25)
DAMAGE 100.0
RETURN 1
ENDIF
ENDIF
ENDFOR
RETURN 0
[EVENTS e_PvP]
//<------------------------------------------------------------------------------------->
//<------------------------------------------------------------------------------------->
//<- Magic Combat ---------------------------------------------------------------------->
//<------------------------------------------------------------------------------------->
//<------------------------------------------------------------------------------------->
//<------------------------------------------------------------------------------------->
//< TRIGGER: SpellCast >
//<------------------------------------------------------------------------------------->
ON=@SpellCast
IF (<SRC.IsGM>) //(<SRC.ACCOUNT.PLEVEL> > 1)
ARGN3=0.1
ELSE
//<[MOD] ------------- Вычисление модификации скорости магии со скроллов --------------->
IF StrMatch("t_scroll","<ARGO.TYPE>")
ARGN3 = <ARGN3> - <FVAL (<ARGN>*45)/100>
SRC.TAG.IsScroll="1"
ENDIF
//<[MOD] ---------------- Увеличение скорости магии бонусом QuickCast ------------------>
ARGN3 -= <EVAL (<ARGN3>*<SRC.GetCombatEffect QuickCast>)/100>
ENDIF
SRC.SYSMESSAGE @73, Cast speed: <FVAL <ARGN3>> sec.
//<------------------------------------------------------------------------------------->
//< TRIGGER: SpellEffect >
//<------------------------------------------------------------------------------------->
ON=@SpellEffect
IF (<FLAGS>&statf_invul)
EFFECT 3,037b9,10,20
RETURN 1
//<[FIX] --------- Не применять формулы на спеллы которых нет в Spellbook-е ------------>
ELIF (<ARGN> >= 65)
SERV.LOG @WARNING: <NAME> [<ACCOUNT>] using not aviable spell <ARGN>
//<[FIX] --------------------------- Применение Cure спелла ---------------------------->
ELIF (<ARGN>==11)
TRY FINDID.i_memory_poison.REMOVE
EFFECT 3,i_fx_heal_effect,15,25
RETURN 1
//<[FIX] -------------------------- Применение Dispel спелла --------------------------->
ELIF (<ARGN>==41) || (<ARGN>==54)
TRY FINDID.i_memory_poison.REMOVE
TRY FINDID.i_memory_incognito.REMOVE
TRY FINDID.i_memory_spell_stats.REMOVE
//<[MOD] ------------ Система отражения магии от спелла (Magic Reflection) ------------->
ELIF (<FINDID.i_rune_magic_reflection.UID>) && (<SERV.SPELL.<ARGN>.FLAGS>&spellflag_harm)
EFFECT=3,i_fx_bless_EFFECT,15,15
FINDID.i_rune_magic_reflection.REMOVE
FLAGS=<FLAGS>&~statf_reflection
IF (<UID>!=<SRC.UID>)
SRC.SPELLEFFECT <ARGN>, <MAGERY>
IF (0)
ELIF (<ARGN>==5) // s_magic_arrow
SRC.EFFECT 0,036e4,4,16,6
ELIF (<ARGN>==18) // s_fireball
SRC.EFFECT 0,036d4,4,16,6
ELIF (<ARGN>==30) // s_lightning
EFFECT 1,i_fx_curse,4,16,6
ELIF (<ARGN>==49) // s_chain_lightning
EFFECT 1,i_fx_curse,4,16,6
ELIF (<ARGN>==51) // s_flamestrike
SRC.EFFECT 3,03709,4,16,6
ENDIF
ENDIF
RETURN 1
ELSE
//<[MOD] ----------------- Восстановление/сохранение значений спелла ------------------->
IF (<VAR0.Spell_<ARGN>_Effect>)
SERV.SPELL.<ARGN>.EFFECT = "<VAR0.Spell_<ARGN>_Effect>"
ELSE
VAR0.Spell_<ARGN>_Effect = "<SERV.SPELL.<ARGN>.EFFECT>"
ENDIF
IF (<VAR0.Spell_<ARGN>_Duration>)
SERV.SPELL.<ARGN>.DURATION = "<VAR0.Spell_<ARGN>_Duration>"
ELSE
VAR0.Spell_<ARGN>_Duration = "<SERV.SPELL.<ARGN>.DURATION>"
ENDIF
IF (<VAR0.Spell_<ARGN>_ManaUse>)
SERV.SPELL.<ARGN>.MANAUSE = "<VAR0.Spell_<ARGN>_ManaUse>"
ELSE
VAR0.Spell_<ARGN>_ManaUse = "<SERV.SPELL.<ARGN>.MANAUSE>"
ENDIF
//<[MOD] ------------ Уменьшение затрат маны бонусом ManaRequirement ------------------->
SERV.SPELL.<ARGN>.MANAUSE -= <EVAL (<SERV.SPELL.<ARGN>.MANAUSE>*<SRC.GetCombatEffect ManaRequirement>)/100>
//<[MOD] -------------------- Вычисление модификации сил магии ------------------------->
LOCAL.SpellDiff = "<QVAL (<SRC.INT> < 100) ?-<EVAL (100-<SRC.INT>)>:<EVAL (<SRC.INT>-100)> >"
//<[MOD] -------------------- Увеличение/уменьшение сил магии -------------------------->
IF (<SERV.SPELL.<ARGN>.MANAUSE>) // Если есть значение затрат маны
SERV.SPELL.<ARGN>.MANAUSE -= <EVAL (<SERV.SPELL.<ARGN>.MANAUSE>*<SRC.GetCombatEffect ManaRequirement>)/100>
IF (<SERV.SPELL.<ARGN>.MANAUSE> < 0)
SERV.SPELL.<ARGN>.MANAUSE = 0
ENDIF
ENDIF
IF (<SERV.SPELL.<ARGN>.DURATION>) // Если у спелла есть значение продолжительности
SERV.SPELL.<ARGN>.DURATION += <EVAL (<SERV.SPELL.<ARGN>.DURATION>*<LOCAL.SpellDiff>)/100>
IF (<SERV.SPELL.<ARGN>.DURATION> < 1)
SERV.SPELL.<ARGN>.DURATION = 0
ENDIF
ENDIF
IF (<SERV.SPELL.<ARGN>.EFFECT>) // Если у спелла есть значение урона
SERV.SPELL.<ARGN>.EFFECT += <EVAL (<SERV.SPELL.<ARGN>.EFFECT>*<LOCAL.SpellDiff>)/100>
IF (<SERV.SPELL.<ARGN>.FLAGS>&spellflag_harm) // Если спелл является harm
SERV.SPELL.<ARGN>.EFFECT += <EVAL (<SERV.SPELL.<ARGN>.EFFECT>*<EVAL <EvaluatingIntel>/15>)/100>
ENDIF
IF (<SERV.SPELL.<ARGN>.EFFECT> < 1)
SERV.SPELL.<ARGN>.EFFECT = 0
ENDIF
ENDIF
//<[FIX] ------------------------- Применение спеллов на статы ------------------------->
IF (<ARGN>==1)||(<ARGN>==3)||(<ARGN>==8)||(<ARGN>==9)||(<ARGN>==10)||(<ARGN>==16)||(<ARGN>==17)||(<ARGN>==27)
// 1 - Clumsy - STR= 0 DEX=-10 INT= 0
// 3 - Feeblemind - STR= 0 DEX= 0 INT=-10
// 8 - Weaken - STR=-10 DEX= 0 INT= 0
// -----------------------------------------
// 9 - Agility - STR= 0 DEX=+10 INT= 0
//10 - Cunning - STR= 0 DEX= 0 INT=+10
//16 - Strength - STR=+10 DEX= 0 INT= 0
// -----------------------------------------
//17 - Bless - STR=+5 DEX=+5 INT=+5
//27 - Curse - STR=-5 DEX=-5 INT=-5
SOUND <SERV.SPELL.<ARGN>.SOUND>
EFFECT 3,<SERV.SPELL.<ARGN>.EFFECT_ID>,15,15
SERV.NEWITEM=i_memory_spell_stats
NEW.DispID=<SERV.SPELL.<ARGN>.RUNE_ITEM>
NEW.NAME=<SERV.SPELL.<ARGN>.NAME>
NEW.LINK=<SRC.UID>
IF (0)
//<--------------------------------- Increased spells ---------------------------------->
ELIF (<ARGN>== 1) // Clumsy - STR= 0 DEX=-10 INT= 0
NEW.MOREM=0 // Mode: 0=- 1=+
NEW.MOREY=<SERV.SPELL.<ARGN>.EFFECT> // DEX
ELIF (<ARGN>== 3)
NEW.MOREM=0 // Mode: 0=- 1=+
NEW.MOREZ=<SERV.SPELL.<ARGN>.EFFECT> // INT
ELIF (<ARGN>== 8)
NEW.MOREM=0 // Mode: 0=- 1=+
NEW.MOREX=<SERV.SPELL.<ARGN>.EFFECT> // STR
//<--------------------------------- Decreased spells ---------------------------------->
ELIF (<ARGN>== 9)
NEW.MOREM=1 // Mode: 0=- 1=+
NEW.MOREY=<SERV.SPELL.<ARGN>.EFFECT> // DEX
ELIF (<ARGN>==10)
NEW.MOREM=1 // Mode: 0=- 1=+
NEW.MOREZ=<SERV.SPELL.<ARGN>.EFFECT> // INT
ELIF (<ARGN>==16)
NEW.MOREM=1 // Mode: 0=- 1=+
NEW.MOREX=<SERV.SPELL.<ARGN>.EFFECT> // STR
//<------------------------------- Increased mass spell -------------------------------->
ELIF (<ARGN>==17)
NEW.MOREM=1 // Mode: 0=- 1=+
NEW.MOREX=<SERV.SPELL.<ARGN>.EFFECT> // STR
NEW.MOREY=<SERV.SPELL.<ARGN>.EFFECT> // DEX
NEW.MOREZ=<SERV.SPELL.<ARGN>.EFFECT> // INT
//<------------------------------- Decreased mass spell -------------------------------->
ELIF (<ARGN>==27)
NEW.MOREM=0 // Mode: 0=- 1=+
NEW.MOREX=<SERV.SPELL.<ARGN>.EFFECT> // STR
NEW.MOREY=<SERV.SPELL.<ARGN>.EFFECT> // DEX
NEW.MOREZ=<SERV.SPELL.<ARGN>.EFFECT> // INT
ENDIF
EQUIP=<NEW.UID>
NEW.TIMER=<SERV.SPELL.<ARGN>.DURATION>
RETURN 1
ENDIF
//<[MOD] ------------------------------------------------------------------------------->
SRC.SYSMESSAGE @73, Spell Diff: <EVAL <LOCAL.SpellDiff>>%
SRC.SYSMESSAGE @73, Cast Effect: <SERV.SPELL.<ARGN>.EFFECT>
SRC.SYSMESSAGE @73, Cast Duraction: <SERV.SPELL.<ARGN>.DURATION>
SRC.SYSMESSAGE @73, Cast Mana Use: <SERV.SPELL.<ARGN>.MANAUSE>
ENDIF
//<------------------------------------------------------------------------------------->
//<------------------------------------------------------------------------------------->
//<- Melee Combat ---------------------------------------------------------------------->
//<------------------------------------------------------------------------------------->
//<------------------------------------------------------------------------------------->
//<------------------------------------------------------------------------------------->
//< TRIGGER: HitTry
//<------------------------------------------------------------------------------------->
ON=@HitTry
//<----------------------------- Если аттакуемый Game Master --------------------------->
IF (<SRC.IsGM>)
SYSMESSAGE You can`t attack a Game Master.
//<------------------------ Если на каком нить игроке есть invul ----------------------->
ELIF (<FLAGS>&statf_invul) || (<SRC.FLAGS>&statf_invul)
SYSMESSAGE You can't attack <SRC.NAME> in your state.
//<---------------------------- Если аттакуемый в No PVP зоне -------------------------->
ELIF (<REGION.FLAGS>®ion_flag_safe) || (<REGION.FLAGS>®ion_flag_no_pvp)
SYSMESSAGE You can't attack <SRC.NAME> here.
//<----------------------------- Если аттакуещий в Safe зоне --------------------------->
ELIF (<SRC.REGION.FLAGS>®ion_flag_safe) || (<SRC.REGION.FLAGS>®ion_flag_no_pvp)
SYSMESSAGE You can't attack <SRC.NAME> here.
ELIF (<STAM> < 1)
STAM=0
ELSE
ARGN = 20 // Скорость рукопашного удара (По умолчанию)
IF StrMatch("t_weapon_*","<ARGO.TYPE>")
IF (<EVAL 0<DEF.<UID.<ARGO.UID>.DispID>_speed>>) // Скорость оружий по его дополнительному типу
ARGN = <FVAL <DEF.<UID.<ARGO.UID>.DispID>_speed>>
ELIF (<EVAL 0<DEF.<UID.<ARGO.UID>.BaseID>_speed>>) // Скорость оружий по его главному типу
ARGN = <FVAL <DEF.<UID.<ARGO.UID>.BaseID>_speed>>
ELSE // Если предмет не прописан в базе оружий то сообщяем игроку
SYSMESSAGEUA 32 0 0 0` If you have seen this message, speed of your
SYSMESSAGEUA 32 0 0 0` weapon is not registered, call Game Master!
SERV.LOG [<NAME>] use weapon <ARGO.NAME>[<ARGO.UID>], is not registered.
RETURN 1
ENDIF
ENDIF
//<[MOD] ---------- Каждые 10 ловкости увеличиывают/уменьшают скорость на 0.1 ---------->
ARGN = <ARGN> + <EVAL (100-<DEX>)/10>
//<[MOD] --------------- Применение эффекта боя на скорость с предметов ---------------->
ARGN = <ARGN> - <FVAL (<ARGN>*<GetCombatEffect DamageSpeed>)/100>
//<[MOD] ----------------- Потеря стамины в зависимости от типа оружия ----------------->
STAM = <STAM> - <ARGO.LAYER>
IF (<FVAL <ARGN>> < 0.1)
ARGN=0.1
ENDIF
SYSMESSAGE @0c2, Weapon speed: <FVAL <ARGN>>
RETURN 0
ENDIF
RETURN 1
//<------------------------------------------------------------------------------------->
//< TRIGGER: HitMiss
//<------------------------------------------------------------------------------------->
ON=@HitMiss
SRC.SYSMESSAGE <NAME> miss you.
SYSMESSAGE You miss <SRC.NAME>
//<------------------------------------------------------------------------------------->
//< TRIGGER: Hit
//<------------------------------------------------------------------------------------->
ON=@Hit
//<[MOD]------------------- Получение базового урона персонажа ------------------------->
IF StrMatch("t_weapon_*","<ARGO.TYPE>") || StrMatch("t_wand","<ARGO.TYPE>")
ARGN = RAND({<ARGO.DAM>})
ELSE
ARGN = <EVAL ((<STR>*10)/100) + RAND(2)>
ENDIF
//<[MOD] ------------------ Увеличение урона от силы персонажа ------------------------->
//ARGN += <EVAL (<STR>-100)/5>
ARGN += <EVAL (<STR>/10)> // Default of Client Formula
//<[MOD] --------------- Увеличение урона от бонуса увеличения урона ------------------->
ARGN += <EVAL (<ARGN>*<GetCombatEffect DamageIncrease>)/100>
//<[MOD] ------------------- Потеря урона луков от дистанции --------------------------->
IF StrMatch("t_weapon_bow","<ARGO.TYPE>") || StrMatch("t_weapon_xbow","<ARGO.TYPE>")
IF (<ARGO.ID>==013b1) // Если это bow (лук)
ARGN = <ARGN> - <EVAL (<DISTANCE>*135)/100>
ELIF (<ARGO.ID>==0f4f) // Если это crossbow (арбалет)
ARGN = <ARGN> - <EVAL (<DISTANCE>*120)/100>
ELIF (<ARGO.ID>==013fc) // Если это heavy crossbow (тяжолый арбалет)
ARGN = <ARGN> - <EVAL (<DISTANCE>*105)/100>
ENDIF
ELSE
//<[MOD] -------- Дополнительный удар со спины (backstab) от оружия ближнего боя ------->
IF (<ARGN> > 0) && (<SRC.DIR>==<DIR>) && (RAND(3)==0)
TAG.Backstab=<EVAL (<ARGN>*75)/100>
ENDIF
//<[MOD] --------------- Критический удар оружием от оружия ближнего боя --------------->
IF (<ARGN> > 0) && (RAND(50)==0)
TAG.Critical=<EVAL (<ARGN>*135)/100>
ENDIF
ENDIF
//<[FIX] ----------------- Поломка одетых предметов оружия при ударе ------------------->
IF (<ARGN> > 0)
DamageEquipedWeapon
ENDIF
//<------------------------------------------------------------------------------------->
//<------------------------------------------------------------------------------------->
//< TRIGGER: GetHit >
//<------------------------------------------------------------------------------------->
ON=@GetHit
//<[MOD] ------------------- Получаемый урон является магическим ----------------------->
IF (<ARGN2>&dam_magic)
//<[MOD] ----------------- Применение потери силы магии от резиста --------------------->
ARGN -= <EVAL (<ARGN>*<EVAL <MagicResistance>/25>) / 100>
//<[MOD] ----------- Применение потери силы магии от бонуса ResistMagic ---------------->
ARGN -= <EVAL (<ARGN>*<GetCombatEffect ResistMagic>)/100>
//<[MOD] ------- Применение потери силы огненной магии от бонуса ResistFire ------------>
IF (<ARGN2>&dam_fire)
ARGN -= <EVAL (<ARGN>*<GetCombatEffect ResistFire>)/100>
ENDIF
//<[MOD] ---- Применение потери силы энергетической магии от бонуса ResistEnergy ------->
IF (<ARGN2>&dam_lightning)
ARGN -= <EVAL (<ARGN>*<GetCombatEffect ResistEnergy>)/100>
ENDIF
//<[MOD] ----- Применение потери силы отравляющей магии от бонуса ResistPoison --------->
IF (<ARGN2>&dam_poison)
ARGN -= <EVAL (<ARGN>*<GetCombatEffect ResistPoison>)/100>
ENDIF
//<[MOD] ------------------- Получаемый урон является физическим ----------------------->
ELSE
//<[MOD] -------- Дополнительный удар со спины (backstab) от оружия ближнего боя ------->
IF (<SRC.TAG0.Backstab>)
SRC.SAY @33, Backstab!
ARGN += <EVAL <SRC.TAG.Backstab>>
SRC.TAG.Backstab =
ENDIF
//<[MOD] --------------- Критический удар оружием от оружия ближнего боя --------------->
IF (<SRC.TAG0.Critical>)
SRC.SAY @33, Critical!
ARGN += <EVAL <SRC.TAG.Critical>>
SRC.TAG.Critical =
ENDIF
//<[MOD] -------------------- Сопративляемость к физическому урону --------------------->
ARGN -= <EVAL (<ARGN>*<GetCombatEffect ResistPhysical>)/100>
//<[MOD] -------------------- Уменьшение урона от количества брони --------------------->
ARGN -= <EVAL (<AC>*45)/100>
//<[MOD] -------------------- Уменьшение урона бонусом сопративления ------------------->
// ARGN -= <EVAL (<ARGN>*<GetCombatEffect Defense>)/100>
//<[FIX] ------------- Поломка одетых предметов брони при получении урона -------------->
IF (<ARGN> > 0)
DamageEquipedArmor
ENDIF
ENDIF
IF (<ARGN> > 0)
//<[MOD] --------------- Прерывание каста с книшки, при получении удара ---------------->
IF (<SRC.UID>!=<UID>) && !(<TAG0.IsScroll>) && (<ACTION>==Skill_Magery)
ACTION=-1
ENDIF
//<[FIX] ---------------- Выводим игрока из парализа, если он в нём -------------------->
TRY FINDID.i_rune_paralyze.REMOVE
TRY FINDID.i_rune_paralyze_field.REMOVE
ENDIF
//<[MOD] ---------------- ворот от удара бонусом "увернуться от удара" ----------------->
IF (RAND(100) < <EVAL <GetCombatEffect Evasion>>)
SYSMESSAGE @73, You have evaded from attack.
SRC.SYSMESSAGE @33, <NAME> has evaded your attack.
ARGN=0
RETURN 1
ENDIF
//<[MOD] ---------------------- Выполнение результатов урона --------------------------->
IF (<ARGN> > 0)
//<[MOD] ------------------- Вывод информации о получении урона ------------------------>
IF (<UID>==<SRC.UID>)
SRC.SYSMESSAGE @<QVAL (<ARGN2>&dam_magic)?0c2:04a>, You damaged on <ARGN> hits.
ELIF (<ARGN2>&dam_magic)
SRC.SYSMESSAGE @0c2, You damage <NAME> on <ARGN> hits.
SYSMESSAGE @026, <SRC.NAME> damage you on <ARGN> hits.
ELSE
SRC.SYSMESSAGE @04a, You damage <NAME> on <ARGN> hits.
SYSMESSAGE @026, <SRC.NAME> damage you on <ARGN> hits.
ENDIF
ELSE
SYSMESSAGE You parry is blow.
SRC.SYSMESSAGE <NAME> is parry blow.
RETURN 1
ENDIF
//<[MOD] ---------- Установка GOD типа урона, так как сделали все вычисления ----------->
ARGN2=01 // Чтоб урон прошёл на столько, чему равно ARGN
//<------------------------------------------------------------------------------------->
//<[MOD] ------------------------ Мемори на изменение статов --------------------------->
//<------------------------------------------------------------------------------------->
[ITEMDEF i_memory_spell_stats]
DEFNAME=i_memory_spell_stats
NAME=memory spell stats
ID=02093
LAYER=32
TYPE=t_eq_script
ON=@Create
ATTR=attr_decay|attr_newbie|attr_invis
ON=@Equip
IF (<MOREM>)
CONT.MODSTR += <MOREX>
CONT.MODDEX += <MOREY>
CONT.MODINT += <MOREZ>
ELSE
CONT.MODSTR -= <MOREX>
CONT.MODDEX -= <MOREY>
CONT.MODINT -= <MOREZ>
ENDIF
ON=@Unequip
IF (<MOREM>)
CONT.MODSTR -= <MOREX>
CONT.MODDEX -= <MOREY>
CONT.MODINT -= <MOREZ>
ELSE
CONT.MODSTR += <MOREX>
CONT.MODDEX += <MOREY>
CONT.MODINT += <MOREZ>
ENDIF
ON=@Timer
REMOVE
RETURN 1
[EOF]
SphereDefsX.scp
Код
[DEFNAME WEAPONS_SPEED]
i_club_speed 20
i_hatchet_speed 20
i_pickaxe_speed 20
i_cleaver_meat_speed 20
i_knife_skinning_speed 20
i_knife_butcher_speed 20
i_dagger_speed 20
i_hammer_smith_speed 20
i_hammer_sledge_speed 23
i_crook_sheperds_speed 23
i_staff_black_speed 32
i_staff_quarter_speed 35
i_staff_gnarled_speed 38
t_wand_speed 20
// Swordsmanship (swords)
i_cutlass_speed 20
i_katana_speed 23
i_scimitar_speed 26
i_sword_broad_speed 29
i_sword_long_speed 32
i_sword_viking_speed 35
i_halberd_speed 38
i_bardiche_speed 41
i_blade_long_speed 44
// Swordsmanship(axes)
i_axe_war_speed 23
i_axe_speed 26
i_axe_exec_speed 29
i_axe_double_speed 32
i_axe_two_hand_speed 35
i_axe_battle_large_speed 38
// Fencing
i_kryss_speed 23
i_war_fork_speed 26
i_spear_short_speed 32
i_pitchfork_speed 35
i_spear_speed 38
// MaceFighting
i_maul_speed 23
i_mace_speed 26
i_mace_war_speed 32
i_hammer_pick_speed 35
i_hammer_war_speed 38
i_bow_speed 26
i_crossbow_speed 32
i_crossbow_heavy_speed 35
Привет.Я установил твои скрипт и поставил его как ивент.Но у меня проблема вот ошибки в сфере што я зделал не так или ето надо отдельнь настраивать и писпть?
17:54:ERROR:(PVP.scp,373)Undefined symbol ''
17:54:ERROR:(PVP.scp,399)Can't resolve <GetCombatEffect Evasion>
17:54:ERROR:(PVP.scp,303)Can't resolve <GetCombatEffect DamageIncrease>
17:54:ERROR:(PVP.scp,303)Undefined symbol ''
17:54:ERROR:(PVP.scp,373)Can't resolve <GetCombatEffect ResistPhysical>
17:54:ERROR:(PVP.scp,373)Undefined symbol ''
17:54:ERROR:(PVP.scp,399)Can't resolve <GetCombatEffect Evasion>
17:54:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:54:ERROR:(PVP.scp,265)Undefined symbol ''
17:54:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:54:ERROR:(PVP.scp,265)Undefined symbol ''
17:54:ERROR:(PVP.scp,303)Can't resolve <GetCombatEffect DamageIncrease>
17:54:ERROR:(PVP.scp,303)Undefined symbol ''
17:54:ERROR:(PVP.scp,373)Can't resolve <GetCombatEffect ResistPhysical>
17:54:ERROR:(PVP.scp,373)Undefined symbol ''
17:54:ERROR:(PVP.scp,399)Can't resolve <GetCombatEffect Evasion>
17:54:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:54:ERROR:(PVP.scp,265)Undefined symbol ''
17:54:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:54:ERROR:(PVP.scp,265)Undefined symbol ''
17:54:ERROR:(PVP.scp,303)Can't resolve <GetCombatEffect DamageIncrease>
17:54:ERROR:(PVP.scp,303)Undefined symbol ''
17:54:ERROR:(PVP.scp,373)Can't resolve <GetCombatEffect ResistPhysical>
17:54:ERROR:(PVP.scp,373)Undefined symbol ''
17:54:ERROR:(PVP.scp,399)Can't resolve <GetCombatEffect Evasion>
17:54:ERROR:(PVP.scp,303)Can't resolve <GetCombatEffect DamageIncrease>
17:54:ERROR:(PVP.scp,303)Undefined symbol ''
17:54:ERROR:(PVP.scp,373)Can't resolve <GetCombatEffect ResistPhysical>
17:54:ERROR:(PVP.scp,373)Undefined symbol ''
17:54:ERROR:(PVP.scp,399)Can't resolve <GetCombatEffect Evasion>
17:54:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:54:ERROR:(PVP.scp,265)Undefined symbol ''
17:54:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:54:ERROR:(PVP.scp,265)Undefined symbol ''
17:54:ERROR:(PVP.scp,303)Can't resolve <GetCombatEffect DamageIncrease>
17:54:ERROR:(PVP.scp,303)Undefined symbol ''
17:54:ERROR:(PVP.scp,373)Can't resolve <GetCombatEffect ResistPhysical>
17:54:ERROR:(PVP.scp,373)Undefined symbol ''
17:54:ERROR:(PVP.scp,399)Can't resolve <GetCombatEffect Evasion>
17:54:ERROR:(PVP.scp,303)Can't resolve <GetCombatEffect DamageIncrease>
17:54:ERROR:(PVP.scp,303)Undefined symbol ''
17:54:ERROR:(PVP.scp,373)Can't resolve <GetCombatEffect ResistPhysical>
17:54:ERROR:(PVP.scp,373)Undefined symbol ''
17:54:ERROR:(PVP.scp,399)Can't resolve <GetCombatEffect Evasion>
17:54:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:54:ERROR:(PVP.scp,265)Undefined symbol ''
17:54:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:54:ERROR:(PVP.scp,265)Undefined symbol ''
17:54:ERROR:(PVP.scp,303)Can't resolve <GetCombatEffect DamageIncrease>
17:54:ERROR:(PVP.scp,303)Undefined symbol ''
17:54:ERROR:(PVP.scp,373)Can't resolve <GetCombatEffect ResistPhysical>
17:54:ERROR:(PVP.scp,373)Undefined symbol ''
17:54:ERROR:(PVP.scp,399)Can't resolve <GetCombatEffect Evasion>
17:54:ERROR:(PVP.scp,303)Can't resolve <GetCombatEffect DamageIncrease>
17:54:ERROR:(PVP.scp,303)Undefined symbol ''
17:54:ERROR:(PVP.scp,373)Can't resolve <GetCombatEffect ResistPhysical>
17:54:ERROR:(PVP.scp,373)Undefined symbol ''
17:54:ERROR:(PVP.scp,399)Can't resolve <GetCombatEffect Evasion>
17:54:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:54:ERROR:(PVP.scp,265)Undefined symbol ''
17:54:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:54:ERROR:(PVP.scp,265)Undefined symbol ''
17:54:ERROR:(PVP.scp,303)Can't resolve <GetCombatEffect DamageIncrease>
17:54:ERROR:(PVP.scp,303)Undefined symbol ''
17:54:ERROR:(PVP.scp,373)Can't resolve <GetCombatEffect ResistPhysical>
17:54:ERROR:(PVP.scp,373)Undefined symbol ''
17:54:ERROR:(PVP.scp,399)Can't resolve <GetCombatEffect Evasion>
17:54:ERROR:(PVP.scp,303)Can't resolve <GetCombatEffect DamageIncrease>
17:54:ERROR:(PVP.scp,303)Undefined symbol ''
17:54:ERROR:(PVP.scp,373)Can't resolve <GetCombatEffect ResistPhysical>
17:54:ERROR:(PVP.scp,373)Undefined symbol ''
17:54:ERROR:(PVP.scp,399)Can't resolve <GetCombatEffect Evasion>
17:54:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:54:ERROR:(PVP.scp,265)Undefined symbol ''
17:54:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:54:ERROR:(PVP.scp,265)Undefined symbol ''
17:55:ERROR:(PVP.scp,303)Can't resolve <GetCombatEffect DamageIncrease>
17:55:ERROR:(PVP.scp,303)Undefined symbol ''
17:55:ERROR:(PVP.scp,373)Can't resolve <GetCombatEffect ResistPhysical>
17:55:ERROR:(PVP.scp,373)Undefined symbol ''
17:55:ERROR:(PVP.scp,399)Can't resolve <GetCombatEffect Evasion>
17:55:ERROR:(PVP.scp,303)Can't resolve <GetCombatEffect DamageIncrease>
17:55:ERROR:(PVP.scp,303)Undefined symbol ''
17:55:ERROR:(PVP.scp,373)Can't resolve <GetCombatEffect ResistPhysical>
17:55:ERROR:(PVP.scp,373)Undefined symbol ''
17:55:ERROR:(PVP.scp,399)Can't resolve <GetCombatEffect Evasion>
17:55:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:55:ERROR:(PVP.scp,265)Undefined symbol ''
17:55:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:55:ERROR:(PVP.scp,265)Undefined symbol ''
17:55:ERROR:(PVP.scp,303)Can't resolve <GetCombatEffect DamageIncrease>
17:55:ERROR:(PVP.scp,303)Undefined symbol ''
17:55:ERROR:(PVP.scp,373)Can't resolve <GetCombatEffect ResistPhysical>
17:55:ERROR:(PVP.scp,373)Undefined symbol ''
17:55:ERROR:(PVP.scp,399)Can't resolve <GetCombatEffect Evasion>
17:55:ERROR:(PVP.scp,303)Can't resolve <GetCombatEffect DamageIncrease>
17:55:ERROR:(PVP.scp,303)Undefined symbol ''
17:55:ERROR:(PVP.scp,373)Can't resolve <GetCombatEffect ResistPhysical>
17:55:ERROR:(PVP.scp,373)Undefined symbol ''
17:55:ERROR:(PVP.scp,399)Can't resolve <GetCombatEffect Evasion>
17:55:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:55:ERROR:(PVP.scp,265)Undefined symbol ''
17:55:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:55:ERROR:(PVP.scp,265)Undefined symbol ''
17:55:ERROR:(PVP.scp,303)Can't resolve <GetCombatEffect DamageIncrease>
17:55:ERROR:(PVP.scp,303)Undefined symbol ''
17:55:ERROR:(PVP.scp,373)Can't resolve <GetCombatEffect ResistPhysical>
17:55:ERROR:(PVP.scp,373)Undefined symbol ''
17:55:ERROR:(PVP.scp,399)Can't resolve <GetCombatEffect Evasion>
17:55:ERROR:(PVP.scp,303)Can't resolve <GetCombatEffect DamageIncrease>
17:55:ERROR:(PVP.scp,303)Undefined symbol ''
17:55:ERROR:(PVP.scp,373)Can't resolve <GetCombatEffect ResistPhysical>
17:55:ERROR:(PVP.scp,373)Undefined symbol ''
17:55:ERROR:(PVP.scp,399)Can't resolve <GetCombatEffect Evasion>
17:55:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:55:ERROR:(PVP.scp,265)Undefined symbol ''
17:55:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:55:ERROR:(PVP.scp,265)Undefined symbol ''
17:55:ERROR:(PVP.scp,303)Can't resolve <GetCombatEffect DamageIncrease>
17:55:ERROR:(PVP.scp,303)Undefined symbol ''
17:55:ERROR:(PVP.scp,373)Can't resolve <GetCombatEffect ResistPhysical>
17:55:ERROR:(PVP.scp,373)Undefined symbol ''
17:55:ERROR:(PVP.scp,399)Can't resolve <GetCombatEffect Evasion>
17:55:ERROR:(PVP.scp,303)Can't resolve <GetCombatEffect DamageIncrease>
17:55:ERROR:(PVP.scp,303)Undefined symbol ''
17:55:ERROR:(PVP.scp,373)Can't resolve <GetCombatEffect ResistPhysical>
17:55:ERROR:(PVP.scp,373)Undefined symbol ''
17:55:ERROR:(PVP.scp,399)Can't resolve <GetCombatEffect Evasion>
17:55:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:55:ERROR:(PVP.scp,265)Undefined symbol ''
17:55:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:55:ERROR:(PVP.scp,265)Undefined symbol ''
17:55:ERROR:(PVP.scp,303)Can't resolve <GetCombatEffect DamageIncrease>
17:55:ERROR:(PVP.scp,303)Undefined symbol ''
17:55:ERROR:(PVP.scp,373)Can't resolve <GetCombatEffect ResistPhysical>
17:55:ERROR:(PVP.scp,373)Undefined symbol ''
17:55:ERROR:(PVP.scp,399)Can't resolve <GetCombatEffect Evasion>
17:55:ERROR:(PVP.scp,303)Can't resolve <GetCombatEffect DamageIncrease>
17:55:ERROR:(PVP.scp,303)Undefined symbol ''
17:55:ERROR:(PVP.scp,373)Can't resolve <GetCombatEffect ResistPhysical>
17:55:ERROR:(PVP.scp,373)Undefined symbol ''
17:55:ERROR:(PVP.scp,399)Can't resolve <GetCombatEffect Evasion>
17:55:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:55:ERROR:(PVP.scp,265)Undefined symbol ''
17:55:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:55:ERROR:(PVP.scp,265)Undefined symbol ''
17:55:ERROR:(PVP.scp,303)Can't resolve <GetCombatEffect DamageIncrease>
17:55:ERROR:(PVP.scp,303)Undefined symbol ''
17:55:ERROR:(PVP.scp,373)Can't resolve <GetCombatEffect ResistPhysical>
17:55:ERROR:(PVP.scp,373)Undefined symbol ''
17:55:ERROR:(PVP.scp,399)Can't resolve <GetCombatEffect Evasion>
17:55:ERROR:(PVP.scp,303)Can't resolve <GetCombatEffect DamageIncrease>
17:55:ERROR:(PVP.scp,303)Undefined symbol ''
17:55:ERROR:(PVP.scp,373)Can't resolve <GetCombatEffect ResistPhysical>
17:55:ERROR:(PVP.scp,373)Undefined symbol ''
17:55:ERROR:(PVP.scp,399)Can't resolve <GetCombatEffect Evasion>
17:55:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:55:ERROR:(PVP.scp,265)Undefined symbol ''
17:55:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:55:ERROR:(PVP.scp,265)Undefined symbol ''
17:55:ERROR:(PVP.scp,303)Can't resolve <GetCombatEffect DamageIncrease>
17:55:ERROR:(PVP.scp,303)Undefined symbol ''
17:55:ERROR:(PVP.scp,373)Can't resolve <GetCombatEffect ResistPhysical>
17:55:ERROR:(PVP.scp,373)Undefined symbol ''
17:55:ERROR:(PVP.scp,399)Can't resolve <GetCombatEffect Evasion>
17:55:ERROR:(PVP.scp,303)Can't resolve <GetCombatEffect DamageIncrease>
17:55:ERROR:(PVP.scp,303)Undefined symbol ''
17:55:ERROR:(PVP.scp,373)Can't resolve <GetCombatEffect ResistPhysical>
17:55:ERROR:(PVP.scp,373)Undefined symbol ''
17:55:ERROR:(PVP.scp,399)Can't resolve <GetCombatEffect Evasion>
17:55:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:55:ERROR:(PVP.scp,265)Undefined symbol ''
17:55:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:55:ERROR:(PVP.scp,265)Undefined symbol ''
17:55:ERROR:(PVP.scp,55)Can't resolve <SRC.GetCombatEffect QuickCast>
17:55:ERROR:(PVP.scp,55)Undefined symbol ''
17:55:ERROR:(PVP.scp,303)Can't resolve <GetCombatEffect DamageIncrease>
17:55:ERROR:(PVP.scp,303)Undefined symbol ''
17:55:ERROR:(PVP.scp,373)Can't resolve <GetCombatEffect ResistPhysical>
17:55:ERROR:(PVP.scp,373)Undefined symbol ''
17:55:ERROR:(PVP.scp,399)Can't resolve <GetCombatEffect Evasion>
17:55:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:55:ERROR:(PVP.scp,265)Undefined symbol ''
17:55:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:55:ERROR:(PVP.scp,265)Undefined symbol ''
17:55:ERROR:(PVP.scp,303)Can't resolve <GetCombatEffect DamageIncrease>
17:55:ERROR:(PVP.scp,303)Undefined symbol ''
17:55:ERROR:(PVP.scp,373)Can't resolve <GetCombatEffect ResistPhysical>
17:55:ERROR:(PVP.scp,373)Undefined symbol ''
17:55:ERROR:(PVP.scp,399)Can't resolve <GetCombatEffect Evasion>
17:55:ERROR:(PVP.scp,303)Can't resolve <GetCombatEffect DamageIncrease>
17:55:ERROR:(PVP.scp,303)Undefined symbol ''
17:55:ERROR:(PVP.scp,373)Can't resolve <GetCombatEffect ResistPhysical>
17:55:ERROR:(PVP.scp,373)Undefined symbol ''
17:55:ERROR:(PVP.scp,399)Can't resolve <GetCombatEffect Evasion>
17:55:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:55:ERROR:(PVP.scp,265)Undefined symbol ''
17:55:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:55:ERROR:(PVP.scp,265)Undefined symbol ''
17:55:ERROR:(PVP.scp,303)Can't resolve <GetCombatEffect DamageIncrease>
17:55:ERROR:(PVP.scp,303)Undefined symbol ''
17:55:ERROR:(PVP.scp,373)Can't resolve <GetCombatEffect ResistPhysical>
17:55:ERROR:(PVP.scp,373)Undefined symbol ''
17:55:ERROR:(PVP.scp,399)Can't resolve <GetCombatEffect Evasion>
17:55:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:55:ERROR:(PVP.scp,265)Undefined symbol ''
17:55:ERROR:(PVP.scp,265)Can't resolve <GetCombatEffect DamageSpeed>
17:55:ERROR:(PVP.scp,265)Undefined symbol ''
Цитата(tayfun @ 10.7.2007, 22:31)
Проблемы:
1. С кулока можно убить кого угодно т.к. дамаг 15
2. Только когда ПвП показывается урон сколько ты отнял
3. какая формулы нужна чтобы был нормальный дамаге, ато при 20 арморе скелеты всё время миссают
4. может для НПС нужен другой сцп ?
Сервер 56б клиент 2.0.3
1)
Код
ON=@Hit
//<[MOD]------------------- Получение базового урона персонажа ------------------------->
IF StrMatch("t_weapon_*","<ARGO.TYPE>") || StrMatch("t_wand","<ARGO.TYPE>")
ARGN = RAND({<ARGO.DAM>})
ELSE
ARGN = <EVAL ((<STR>*10)/100) + RAND(2)> // ТУТ ПОДСТАВЬ ФОРМУЛУ КАКУЮ ТЕБЕ НАДО!
// К ПРИМЕРУ
// ARGN = <EVAL ((<STR>*5)/100) + RAND(2)> // 5% от силы. то есть при СТР=100 / урон 5 хп
ENDIF
2) А что именно надо?
3) либо увеличить силу скелетам, либо
Код
//<[MOD] -------------------- Уменьшение урона от количества брони --------------------->
ARGN -= <EVAL (<AC>*45)/100> // УМЕНЬШИТЬ ПРОЦЕНТЫ УРОНА ОТ КОЛ-ВО АРМОРА. щас
// стоит 45% от армора, то есть 45% армора вычитается из урона.
4) само собой, рекомендую на 56 делать это всё через DAM= мобов, удобно делать БОССОВ... ХП довига и не убивает с 1 удара, а то на 55 было мол STR=10000 и бьёт гад под 3К хп =)
ПРИМЕРНО ВОТ ТАК см.ниже.
ВНИМАНИЕ НЕ ДЛЯ НУБОВ!!! Sphere.ini
Код
EventsPet=e_PvM // Events related to all NPCs
и 2 евента на PvM+PvP, e_PvP - вешаем на игроков.
Код
//& #60;============================================================================
=========>
//<------------------------------------------------------------------------------------->
//<- Ultima Online: The Odyssey ->
//<- Sphere Version: 56x (56b-Nightly) ->
//<- Script Author: Breaker (Cache) ->
//<- ->
//<- Last edit date: 22.12.2006 ->
//<------------------------------------------------------------------------------------->
//& #60;============================================================================
=========>
[EVENTS e_PvM]
ON=@Death
//<[FIX] -------------- Исправление смерти моба для триггера @Kill --------------------->
FORCHARMEMORYTYPE MEMORY_FIGHT
COLOR |= 00010
ENDFOR
//<------------------------------------------------------------------------------------->
//<- Magic Combat ---------------------------------------------------------------------->
//<------------------------------------------------------------------------------------->
ON=@SpellCast
//<[MOD] ------------------ Вычисление модификации скорости магии ---------------------->
//SRC.SYSMESSAGE @73, Cast speed: <FVAL <ARGN3>> sec.
IF (<ARGN> >= 65)
ARGN=<EVAL RAND(63)+1>
ENDIF
SRC.SAY Cast: <SERV.SPELL.<ARGN>.NAME>
ON=@SpellEffect
IF (<FLAGS>&statf_invul)
EFFECT 3,037b9,10,20
RETURN 1
//<[FIX] --------- Не применять формулы на спеллы которых нет в Spellbook-е ------------>
ELIF (<ARGN> >= 65)
SERV.LOG @WARNING: <NAME> [<ACCOUNT>] using not aviable spell <ARGN>
//<[FIX] --------------------------- Применение Cure спелла ---------------------------->
ELIF (<ARGN>==11)
TRY FINDID.i_memory_poison.REMOVE
EFFECT 3,i_fx_heal_effect,15,25
RETURN 1
//<[FIX] -------------------------- Применение Dispel спелла --------------------------->
ELIF (<ARGN>==41) || (<ARGN>==54)
TRY FINDID.i_memory_poison.REMOVE
TRY FINDID.i_memory_incognito.REMOVE
TRY FINDID.i_memory_spell_stats.REMOVE
//<[MOD] ------------ Система отражения магии от спелла (Magic Reflection) ------------->
ELIF (<FINDID.i_rune_magic_reflection.UID>) && (<SERV.SPELL.<ARGN>.FLAGS>&spellflag_harm)
EFFECT=3,i_fx_bless_EFFECT,15,15
FINDID.i_rune_magic_reflection.REMOVE
FLAGS=<FLAGS>&~statf_reflection
IF (<UID>!=<SRC.UID>)
SRC.SPELLEFFECT <ARGN>, <MAGERY>
IF (0)
ELIF (<ARGN>==5) // s_magic_arrow
SRC.EFFECT 0,036e4,4,16,6
ELIF (<ARGN>==18) // s_fireball
SRC.EFFECT 0,036d4,4,16,6
ELIF (<ARGN>==30) // s_lightning
EFFECT 1,i_fx_curse,4,16,6
ELIF (<ARGN>==49) // s_chain_lightning
EFFECT 1,i_fx_curse,4,16,6
ELIF (<ARGN>==51) // s_flamestrike
SRC.EFFECT 3,03709,4,16,6
ENDIF
ENDIF
RETURN 1
ELSE
//<[MOD] ----------------- Восстановление/сохранение значений спелла ------------------->
IF (<VAR0.Spell_<ARGN>_Effect>)
SERV.SPELL.<ARGN>.EFFECT = "<VAR0.Spell_<ARGN>_Effect>"
ELSE
VAR0.Spell_<ARGN>_Effect = "<SERV.SPELL.<ARGN>.EFFECT>"
ENDIF
IF (<VAR0.Spell_<ARGN>_Duration>)
SERV.SPELL.<ARGN>.DURATION = "<VAR0.Spell_<ARGN>_Duration>"
ELSE
VAR0.Spell_<ARGN>_Duration = "<SERV.SPELL.<ARGN>.DURATION>"
ENDIF
IF (<VAR0.Spell_<ARGN>_ManaUse>)
SERV.SPELL.<ARGN>.MANAUSE = "<VAR0.Spell_<ARGN>_ManaUse>"
ELSE
VAR0.Spell_<ARGN>_ManaUse = "<SERV.SPELL.<ARGN>.MANAUSE>"
ENDIF
//<[MOD] -------------------- Вычисление модификации сил магии ------------------------->
LOCAL.SpellDiff = "<QVAL (<SRC.INT> < 100) ?-<EVAL (100-<SRC.INT>)>:<EVAL (<SRC.INT>-100)> >"
//<[FIX] ------------------------- Применение спеллов на статы ------------------------->
IF (<ARGN>==1)||(<ARGN>==3)||(<ARGN>==8)||(<ARGN>==9)||(<ARGN>==10)||(<ARGN>==16)||(<ARGN>==17)||(<ARGN>==27)
// 1 - Clumsy - STR= 0 DEX=-10 INT= 0
// 3 - Feeblemind - STR= 0 DEX= 0 INT=-10
// 8 - Weaken - STR=-10 DEX= 0 INT= 0
// -----------------------------------------
// 9 - Agility - STR= 0 DEX=+10 INT= 0
//10 - Cunning - STR= 0 DEX= 0 INT=+10
//16 - Strength - STR=+10 DEX= 0 INT= 0
// -----------------------------------------
//17 - Bless - STR=+5 DEX=+5 INT=+5
//27 - Curse - STR=-5 DEX=-5 INT=-5
SOUND <SERV.SPELL.<ARGN>.SOUND>
EFFECT 3,<SERV.SPELL.<ARGN>.EFFECT_ID>,15,15
SERV.NEWITEM=i_memory_spell_stats
NEW.DispID=<SERV.SPELL.<ARGN>.RUNE_ITEM>
NEW.NAME=<SERV.SPELL.<ARGN>.NAME>
NEW.LINK=<SRC.UID>
IF (0)
//<--------------------------------- Increased spells ---------------------------------->
ELIF (<ARGN>== 1) // Clumsy - STR= 0 DEX=-10 INT= 0
NEW.MOREM=0 // Mode: 0=- 1=+
NEW.MOREY=<SERV.SPELL.<ARGN>.EFFECT> // DEX
ELIF (<ARGN>== 3)
NEW.MOREM=0 // Mode: 0=- 1=+
NEW.MOREZ=<SERV.SPELL.<ARGN>.EFFECT> // INT
ELIF (<ARGN>== 8)
NEW.MOREM=0 // Mode: 0=- 1=+
NEW.MOREX=<SERV.SPELL.<ARGN>.EFFECT> // STR
//<--------------------------------- Decreased spells ---------------------------------->
ELIF (<ARGN>== 9)
NEW.MOREM=1 // Mode: 0=- 1=+
NEW.MOREY=<SERV.SPELL.<ARGN>.EFFECT> // DEX
ELIF (<ARGN>==10)
NEW.MOREM=1 // Mode: 0=- 1=+
NEW.MOREZ=<SERV.SPELL.<ARGN>.EFFECT> // INT
ELIF (<ARGN>==16)
NEW.MOREM=1 // Mode: 0=- 1=+
NEW.MOREX=<SERV.SPELL.<ARGN>.EFFECT> // STR
//<------------------------------- Increased mass spell -------------------------------->
ELIF (<ARGN>==17)
NEW.MOREM=1 // Mode: 0=- 1=+
NEW.MOREX=<SERV.SPELL.<ARGN>.EFFECT> // STR
NEW.MOREY=<SERV.SPELL.<ARGN>.EFFECT> // DEX
NEW.MOREZ=<SERV.SPELL.<ARGN>.EFFECT> // INT
//<------------------------------- Decreased mass spell -------------------------------->
ELIF (<ARGN>==27)
NEW.MOREM=0 // Mode: 0=- 1=+
NEW.MOREX=<SERV.SPELL.<ARGN>.EFFECT> // STR
NEW.MOREY=<SERV.SPELL.<ARGN>.EFFECT> // DEX
NEW.MOREZ=<SERV.SPELL.<ARGN>.EFFECT> // INT
ENDIF
EQUIP=<NEW.UID>
NEW.TIMER=<SERV.SPELL.<ARGN>.DURATION>
RETURN 1
ENDIF
//<[MOD] -------------------- Увеличение/уменьшение сил магии -------------------------->
IF (<SERV.SPELL.<ARGN>.MANAUSE>) // Если есть значение затрат маны
SERV.SPELL.<ARGN>.MANAUSE -= <EVAL (<SERV.SPELL.<ARGN>.MANAUSE>*<SRC.GetCombatEffect ManaRequirement>)/100>
IF (<SERV.SPELL.<ARGN>.MANAUSE> < 0)
SERV.SPELL.<ARGN>.MANAUSE = 0
ENDIF
ENDIF
IF (<SERV.SPELL.<ARGN>.DURATION>) // Если у спелла есть значение продолжительности
SERV.SPELL.<ARGN>.DURATION += <EVAL (<SERV.SPELL.<ARGN>.DURATION>*<LOCAL.SpellDiff>)/100>
IF (<SERV.SPELL.<ARGN>.DURATION> < 1)
SERV.SPELL.<ARGN>.DURATION = 0
ENDIF
ENDIF
IF (<SERV.SPELL.<ARGN>.EFFECT>) // Если у спелла есть значение урона
SERV.SPELL.<ARGN>.EFFECT += <EVAL (<SERV.SPELL.<ARGN>.EFFECT>*<LOCAL.SpellDiff>)/100>
SERV.SPELL.<ARGN>.EFFECT += <EVAL (<SERV.SPELL.<ARGN>.EFFECT>*<EVAL <EvaluatingIntel>/15>)/100>
IF (<SERV.SPELL.<ARGN>.EFFECT> < 1)
SERV.SPELL.<ARGN>.EFFECT = 0
ENDIF
ENDIF
ENDIF
//<------------------------------------------------------------------------------------->
//<- Melee Combat ---------------------------------------------------------------------->
//<------------------------------------------------------------------------------------->
ON=@HitTry
//<----------------------------- Если аттакуемый Game Master --------------------------->
IF (<SRC.IsGM>)
//<------------------------ Если на каком нить игроке есть invul ----------------------->
ELIF (<FLAGS>&statf_invul) || (<SRC.FLAGS>&statf_invul)
//<---------------------------- Если аттакуемый в No PVP зоне -------------------------->
ELIF (<REGION.FLAGS>®ion_flag_safe) || (<REGION.FLAGS>®ion_flag_no_pvp)
//<----------------------------- Если аттакуещий в Safe зоне --------------------------->
ELIF (<SRC.REGION.FLAGS>®ion_flag_safe) || (<SRC.REGION.FLAGS>®ion_flag_no_pvp)
ELSE
ARGN = 20 // Скорость рукопашного удара (По умолчанию)
RETURN 0
ENDIF
RETURN 1
ON=@HitMiss
ACTDIFF=0
ON=@Hit
ARGN = <QVAL StrMatch("t_weapon_*","<ARGO.TYPE>")?RAND({<ARGO.DAM>}):RAND({<DAM>})>
ON=@GetHit
//<[MOD] ------------------- Получаемый урон является магическим ----------------------->
IF (<ARGN2>&dam_magic)
ARGN -= <EVAL (<ARGN>*<EVAL <MagicResistance>/25>) / 100>
//<[MOD] ------------------- Получаемый урон является физическим ----------------------->
ELSE
ARGN -= <EVAL (<AC>*45)/100>
ENDIF
//<[MOD] ---------------------- Выполнение результатов урона --------------------------->
IF (<ARGN> > 0)
//<[MOD] --------------- Прерывание каста с книшки, при получении удара ---------------->
IF (<SRC.UID>!=<UID>) && (<ACTION>==Skill_Magery)
ACTION=-1
ENDIF
//<[FIX] ---------------- Выводим монстра из парализа, если он в нём ------------------->
TRY FINDID.i_rune_paralyze.REMOVE
TRY FINDID.i_rune_paralyze_field.REMOVE
//<[MOD] ------------------- Вывод информации о получении урона ------------------------>
IF (<ARGN2>&dam_magic)
SRC.SYSMESSAGE @0c2, You damage <NAME> on <ARGN> hits.
ELSE
SRC.SYSMESSAGE @04a, You damage <NAME> on <ARGN> hits.
ENDIF
ELSE
SRC.SYSMESSAGE <NAME> is parry blow.
ENDIF
//<[MOD] ---------- Установка GOD типа урона, так как сделали все вычисления ----------->
ARGN2=01 // Чтоб урон прошёл на столько, чему равно ARGN
[EOF]
Код
//& #60;============================================================================
=========>
//<------------------------------------------------------------------------------------->
//<- Ultima Online: The Odyssey ->
//<- Sphere Version: 56x (56b-Nightly) ->
//<- Script Author: Breaker (Cache) ->
//<- ->
//<- Last edit date: 13.12.2006 ->
//<------------------------------------------------------------------------------------->
//& #60;============================================================================
=========>
[EVENTS e_PvP]
//<------------------------------------------------------------------------------------->
//<------------------------------------------------------------------------------------->
//<- Magic Combat ---------------------------------------------------------------------->
//<------------------------------------------------------------------------------------->
//<------------------------------------------------------------------------------------->
//<------------------------------------------------------------------------------------->
//< TRIGGER: SpellCast >
//<------------------------------------------------------------------------------------->
ON=@SpellCast
IF (<SRC.IsGM>) //(<SRC.ACCOUNT.PLEVEL> > 1)
ARGN3=0.1
ELSE
//<[MOD] ------------------------ Взятие параметров спелла ----------------------------->
ARGN3 = <DEF.Spell_<ARGN>_CastTime>
//<[MOD] ------------- Вычисление модификации скорости магии со скроллов --------------->
IF StrMatch("t_scroll","<ARGO.TYPE>")
ARGN3 = <ARGN3> - <FVAL (<ARGN>*45)/100>
SRC.TAG.IsScroll="1"
ENDIF
//<[MOD] ---------------- Увеличение скорости магии бонусом QuickCast ------------------>
ARGN3 -= <EVAL (<ARGN3>*<SRC.GetCombatEffect QuickCast>)/100>
ENDIF
//IF (<SRC.IsGM>)
// SRC.SYSMESSAGE @73, Cast speed: <FVAL <ARGN3>> sec.
//ENDIF
//<------------------------------------------------------------------------------------->
//< TRIGGER: SpellEffect >
//<------------------------------------------------------------------------------------->
ON=@SpellEffect
IF (<FLAGS>&statf_invul)
EFFECT 3,037b9,10,20
RETURN 1
//<[FIX] --------- Не применять формулы на спеллы которых нет в Spellbook-е ------------>
ELIF (<ARGN> >= 65)
SERV.LOG @WARNING: <NAME> [<ACCOUNT>] using not aviable spell <ARGN>
//<[FIX] --------------------------- Применение Cure спелла ---------------------------->
ELIF (<ARGN>==11)
TRY FINDID.i_memory_poison.REMOVE
EFFECT 3,i_fx_heal_effect,15,25
RETURN 1
//<[FIX] -------------------------- Применение Dispel спелла --------------------------->
ELIF (<ARGN>==41) || (<ARGN>==54)
TRY FINDID.i_memory_poison.REMOVE
TRY FINDID.i_memory_incognito.REMOVE
TRY FINDID.i_memory_spell_stats.REMOVE
//<[MOD] ------------ Система отражения магии от спелла (Magic Reflection) ------------->
ELIF (<FINDID.i_rune_magic_reflection.UID>) && (<SERV.SPELL.<ARGN>.FLAGS>&spellflag_harm)
EFFECT=3,i_fx_bless_EFFECT,15,15
FINDID.i_rune_magic_reflection.REMOVE
FLAGS=<FLAGS>&~statf_reflection
IF (<UID>!=<SRC.UID>)
SRC.SPELLEFFECT <ARGN>, <MAGERY>
IF (0)
ELIF (<ARGN>==5) // s_magic_arrow
SRC.EFFECT 0,036e4,4,16,6
ELIF (<ARGN>==18) // s_fireball
SRC.EFFECT 0,036d4,4,16,6
ELIF (<ARGN>==30) // s_lightning
EFFECT 1,i_fx_curse,4,16,6
ELIF (<ARGN>==49) // s_chain_lightning
EFFECT 1,i_fx_curse,4,16,6
ELIF (<ARGN>==51) // s_flamestrike
SRC.EFFECT 3,03709,4,16,6
ENDIF
ENDIF
RETURN 1
//<[MOD] ---- Применение потери силы замораживающей магии от бонуса ResistCold --------->
ELIF (<SRC.FLAGS>&statf_freeze) && ((<ARGN>==38) || (<ARGN>==47))
RETURN 1
ELSE
//<[MOD] ------------------------ Взятие параметров спелла ----------------------------->
LOCAL.SpellEffect = <DEF.Spell_<ARGN>_Effect>
LOCAL.SpellManaUse = <DEF.Spell_<ARGN>_ManaUse>
LOCAL.SpellDuration = <DEF.Spell_<ARGN>_Duration>
//<[MOD] -------------------- Вычисление модификации сил магии ------------------------->
LOCAL.SpellDiff = "<QVAL (<SRC.INT> < 100) ?-<EVAL (100-<SRC.INT>)>:<EVAL (<SRC.INT>-100)> >"
//<------------------------------------------------------------------------------------->
//<[MOD] -------------------- Увеличение/уменьшение сил магии -------------------------->
IF (<LOCAL.SpellEffect>) // Если у спелла есть значение урона
LOCAL.SpellEffect += <EVAL (<dLOCAL.SpellEffect>*<dLOCAL.SpellDiff>)/100>
IF (<SERV.SPELL.<ARGN>.FLAGS>&spellflag_harm) // Если спел является harm
LOCAL.SpellEffect += <EVAL (<dLOCAL.SpellEffect>*<EVAL <EvaluatingIntel>/15>)/100>
ENDIF
ENDIF
IF (<dLOCAL.SpellManaUse>) // Если есть значение затрат маны
//<[MOD] ------------ Уменьшение затрат маны бонусом LowerManaCost --------------------->
LOCAL.SpellManaUse -= <EVAL (<dLOCAL.SpellManaUse>*<SRC.GetCombatEffect LowerManaCost>)/100>
ENDIF
IF (<dLOCAL.SpellDuration>) // Если у спелла есть значение продолжительности
LOCAL.SpellDuration += <EVAL (<LOCAL.SpellDuration>*<LOCAL.SpellDiff>)/100>
//<[MOD] ---- Применение потери силы замораживающей магии от бонуса ResistCold --------->
IF (<ARGN>==38) || (<ARGN>==47)
LOCAL.SpellDuration -= <EVAL (<LOCAL.SpellDuration>*<GetCombatEffect ResistCold>)/100>
ENDIF
ENDIF
//<[MOD] --------------------- Применение вычислений силы магии ------------------------>
SERV.SPELL.<ARGN>.EFFECT = "<QVAL (<dLOCAL.SpellEffect>)?<dLOCAL.SpellEffect>:0>"
SERV.SPELL.<ARGN>.MANAUSE = "<QVAL (<dLOCAL.SpellManaUse>)?<dLOCAL.SpellManaUse>:0>"
SERV.SPELL.<ARGN>.DURATION = "<QVAL (<dLOCAL.SpellDuration>)?<dLOCAL.SpellDuration>:0>"
//<[MOD] ------------------------------------------------------------------------------->
IF (<SRC.IsGM>)
SRC.SYSMESSAGE @73, Spell Diff: <EVAL <LOCAL.SpellDiff>>%
SRC.SYSMESSAGE @73, Cast Effect: <SERV.SPELL.<ARGN>.EFFECT> pt.
SRC.SYSMESSAGE @73, Cast Duraction: <FVAL <SERV.SPELL.<ARGN>.DURATION>> secs
SRC.SYSMESSAGE @73, Cast Mana Use: <SERV.SPELL.<ARGN>.MANAUSE> pt.
ENDIF
//<[FIX] ------------------------ Применение спеллов на статы -------------------------->
IF (<ARGN>==1)||(<ARGN>==3)||(<ARGN>==8)||(<ARGN>==9)||(<ARGN>==10)||(<ARGN>==16)||(<ARGN>==17)||(<ARGN>==27)
// 1 - Clumsy - STR= 0 DEX=-10 INT= 0
// 3 - Feeblemind - STR= 0 DEX= 0 INT=-10
// 8 - Weaken - STR=-10 DEX= 0 INT= 0
// -----------------------------------------
// 9 - Agility - STR= 0 DEX=+10 INT= 0
//10 - Cunning - STR= 0 DEX= 0 INT=+10
//16 - Strength - STR=+10 DEX= 0 INT= 0
// -----------------------------------------
//17 - Bless - STR=+5 DEX=+5 INT=+5
//27 - Curse - STR=-5 DEX=-5 INT=-5
SOUND <SERV.SPELL.<ARGN>.SOUND>
EFFECT 3,<SERV.SPELL.<ARGN>.EFFECT_ID>,15,15
SERV.NEWITEM=i_memory_spell_stats
NEW.DispID=<SERV.SPELL.<ARGN>.RUNE_ITEM>
NEW.NAME=<SERV.SPELL.<ARGN>.NAME>
NEW.LINK=<SRC.UID>
IF (0)
//<--------------------------------- Increased spells ---------------------------------->
ELIF (<ARGN>== 1) // Clumsy - STR= 0 DEX=-10 INT= 0
NEW.MOREM=0 // Mode: 0=- 1=+
NEW.MOREY=<SERV.SPELL.<ARGN>.EFFECT> // DEX
ELIF (<ARGN>== 3)
NEW.MOREM=0 // Mode: 0=- 1=+
NEW.MOREZ=<SERV.SPELL.<ARGN>.EFFECT> // INT
ELIF (<ARGN>== 8)
NEW.MOREM=0 // Mode: 0=- 1=+
NEW.MOREX=<SERV.SPELL.<ARGN>.EFFECT> // STR
//<--------------------------------- Decreased spells ---------------------------------->
ELIF (<ARGN>== 9)
NEW.MOREM=1 // Mode: 0=- 1=+
NEW.MOREY=<SERV.SPELL.<ARGN>.EFFECT> // DEX
ELIF (<ARGN>==10)
NEW.MOREM=1 // Mode: 0=- 1=+
NEW.MOREZ=<SERV.SPELL.<ARGN>.EFFECT> // INT
ELIF (<ARGN>==16)
NEW.MOREM=1 // Mode: 0=- 1=+
NEW.MOREX=<SERV.SPELL.<ARGN>.EFFECT> // STR
//<------------------------------- Increased mass spell -------------------------------->
ELIF (<ARGN>==17)
NEW.MOREM=1 // Mode: 0=- 1=+
NEW.MOREX=<SERV.SPELL.<ARGN>.EFFECT> // STR
NEW.MOREY=<SERV.SPELL.<ARGN>.EFFECT> // DEX
NEW.MOREZ=<SERV.SPELL.<ARGN>.EFFECT> // INT
//<------------------------------- Decreased mass spell -------------------------------->
ELIF (<ARGN>==27)
NEW.MOREM=0 // Mode: 0=- 1=+
NEW.MOREX=<SERV.SPELL.<ARGN>.EFFECT> // STR
NEW.MOREY=<SERV.SPELL.<ARGN>.EFFECT> // DEX
NEW.MOREZ=<SERV.SPELL.<ARGN>.EFFECT> // INT
ENDIF
EQUIP=<NEW.UID>
NEW.TIMER=<SERV.SPELL.<ARGN>.DURATION>
RETURN 1
ENDIF
//<[MOD] ------------------------------------------------------------------------------->
IF !(<SERV.SPELL.<ARGN>.DURATION>) && !(<SERV.SPELL.<ARGN>.EFFECT>) && (<SERV.SPELL.<ARGN>.FLAGS>&spellflag_harm)
EFFECT 3,<SERV.SPELL.<ARGN>.EFFECT_ID>,15,15
RETURN 1
ENDIF
ENDIF
//<------------------------------------------------------------------------------------->
//<------------------------------------------------------------------------------------->
//<- Melee Combat ---------------------------------------------------------------------->
//<------------------------------------------------------------------------------------->
//<------------------------------------------------------------------------------------->
//<------------------------------------------------------------------------------------->
//< TRIGGER: HitTry
//<------------------------------------------------------------------------------------->
ON=@HitTry
//<----------------------------- Если аттакуемый Game Master --------------------------->
IF (<SRC.IsGM>)
SYSMESSAGE You can`t attack a Game Master.
//<------------------------ Если на каком нить игроке есть invul ----------------------->
ELIF (<FLAGS>&statf_invul) || (<SRC.FLAGS>&statf_invul)
SYSMESSAGE You can't attack <SRC.NAME> in your state.
//<---------------------------- Если аттакуемый в No PVP зоне -------------------------->
ELIF (<REGION.FLAGS>®ion_flag_safe) || (<REGION.FLAGS>®ion_flag_no_pvp)
SYSMESSAGE You can't attack <SRC.NAME> here.
//<----------------------------- Если аттакуещий в Safe зоне --------------------------->
ELIF (<SRC.REGION.FLAGS>®ion_flag_safe) || (<SRC.REGION.FLAGS>®ion_flag_no_pvp)
SYSMESSAGE You can't attack <SRC.NAME> here.
ELIF (<STAM> < 1)
STAM=0
ELSE
ARGN = 20 // Скорость рукопашного удара (По умолчанию)
IF StrMatch("t_weapon_*","<ARGO.TYPE>")
IF (<EVAL 0<DEF.<UID.<ARGO.UID>.DispID>_speed>>) // Скорость оружий по его дополнительному типу
ARGN = <FVAL <DEF.<UID.<ARGO.UID>.DispID>_speed>>
ELIF (<EVAL 0<DEF.<UID.<ARGO.UID>.BaseID>_speed>>) // Скорость оружий по его главному типу
ARGN = <FVAL <DEF.<UID.<ARGO.UID>.BaseID>_speed>>
ELSE // Если предмет не прописан в базе оружий то сообщяем игроку
SYSMESSAGEUA 32 0 0 0` If you have seen this message, speed of your
SYSMESSAGEUA 32 0 0 0` weapon is not registered, call Game Master!
SERV.LOG [<NAME>] use weapon <ARGO.NAME>[<ARGO.UID>], is not registered.
RETURN 1
ENDIF
ENDIF
//<[MOD] ---------- Каждые 10 ловкости увеличиывают/уменьшают скорость на 0.1 ---------->
ARGN = <ARGN> + <EVAL (100-<DEX>)/10>
//<[MOD] --------------- Применение эффекта боя на скорость с предметов ---------------->
ARGN = <ARGN> - <FVAL (<ARGN>*<GetCombatEffect DamageSpeed>)/100>
//<[MOD] ----------------- Потеря стамины в зависимости от типа оружия ----------------->
STAM = <STAM> - <ARGO.LAYER>
IF (<FVAL <ARGN>> < 0.1)
ARGN=0.1
ENDIF
IF (<SRC.IsGM>)
SYSMESSAGE @0c2, Weapon speed: <FVAL <ARGN>>
ENDIF
RETURN 0
ENDIF
RETURN 1
//<------------------------------------------------------------------------------------->
//< TRIGGER: HitMiss
//<------------------------------------------------------------------------------------->
ON=@HitMiss
SRC.SYSMESSAGE <NAME> miss you.
SYSMESSAGE You miss <SRC.NAME>
RETURN 1
//<------------------------------------------------------------------------------------->
//< TRIGGER: Hit
//<------------------------------------------------------------------------------------->
ON=@Hit
//<[MOD]------------------- Получение базового урона персонажа ------------------------->
IF StrMatch("t_weapon_*","<ARGO.TYPE>") || StrMatch("t_wand","<ARGO.TYPE>")
ARGN = RAND({<ARGO.DAM>})
ELSE
ARGN = <EVAL ((<STR>*10)/100) + RAND(2)>
ENDIF
//<[MOD] ----------------- Уменьшение урона от потери прочности ------------------------>
ARGN = (<ARGN>*<ARGO.MORE1L>)/<ARGO.MORE1H>
//<[MOD] ------------------ Увеличение урона от силы персонажа ------------------------->
//ARGN += <EVAL (<STR>-100)/5>
ARGN += <EVAL (<STR>+10)/10> // Default of Client Formula
//<[MOD] --------------- Увеличение урона от бонуса увеличения урона ------------------->
ARGN += <EVAL (<ARGN>*<GetCombatEffect DamageIncrease>)/100>
//<[MOD] ------------------- Потеря урона луков от дистанции --------------------------->
IF StrMatch("t_weapon_bow","<ARGO.TYPE>") || StrMatch("t_weapon_xbow","<ARGO.TYPE>")
IF (<ARGO.ID>==013b1) // Если это bow (лук)
ARGN = <ARGN> - <EVAL (<DISTANCE>*135)/100>
ELIF (<ARGO.ID>==0f4f) // Если это crossbow (арбалет)
ARGN = <ARGN> - <EVAL (<DISTANCE>*120)/100>
ELIF (<ARGO.ID>==013fc) // Если это heavy crossbow (тяжолый арбалет)
ARGN = <ARGN> - <EVAL (<DISTANCE>*105)/100>
ENDIF
ELSE
//<[MOD] -------- Дополнительный удар со спины (backstab) от оружия ближнего боя ------->
IF (<ARGN> > 0) && (<SRC.DIR>==<DIR>) && (RAND(3)==0)
TAG.Backstab=<EVAL (<ARGN>*75)/100>
ENDIF
//<[MOD] --------------- Критический удар оружием от оружия ближнего боя --------------->
IF (<ARGN> > 0) && (RAND(50)==0)
TAG.Critical=<EVAL (<ARGN>*135)/100>
ENDIF
ENDIF
//<[FIX] ----------------- Поломка одетых предметов оружия при ударе ------------------->
IF (<ARGN> > 0)
DamageEquipedWeapon
ENDIF
//<------------------------------------------------------------------------------------->
//<------------------------------------------------------------------------------------->
//< TRIGGER: GetHit >
//<------------------------------------------------------------------------------------->
ON=@GetHit
//<[MOD] ------------------- Получаемый урон является магическим ----------------------->
IF (<ARGN2>&dam_magic)
//<[MOD] ----------------- Применение потери силы магии от резиста --------------------->
ARGN -= <EVAL (<ARGN>*<EVAL <ResistSpells>/25>) / 100>
//<[MOD] ------- Применение потери силы огненной магии от бонуса ResistFire ------------>
IF (<ARGN2>&dam_fire)
ARGN -= <EVAL (<ARGN>*<GetCombatEffect ResistFire>)/100>
ENDIF
//<[MOD] ---- Применение потери силы энергетической магии от бонуса ResistEnergy ------->
IF (<ARGN2>&dam_lightning)
ARGN -= <EVAL (<ARGN>*<GetCombatEffect ResistEnergy>)/100>
ENDIF
//<[MOD] ----- Применение потери силы отравляющей магии от бонуса ResistPoison --------->
IF (<ARGN2>&dam_poison)
ARGN -= <EVAL (<ARGN>*<GetCombatEffect ResistPoison>)/100>
ENDIF
//<[MOD] ------------------- Получаемый урон является физическим ----------------------->
ELSE
//<[MOD] -------- Дополнительный удар со спины (backstab) от оружия ближнего боя ------->
IF (<SRC.TAG0.Backstab>)
SRC.SAY @33, Backstab!
ARGN += <EVAL <SRC.TAG.Backstab>>
SRC.TAG.Backstab =
ENDIF
//<[MOD] --------------- Критический удар оружием от оружия ближнего боя --------------->
IF (<SRC.TAG0.Critical>)
SRC.SAY @33, Critical!
ARGN += <EVAL <SRC.TAG.Critical>>
SRC.TAG.Critical =
ENDIF
//<[MOD] -------------------- Уменьшение урона от количества брони --------------------->
ARGN -= <EVAL (<AC>*45)/100>
//<[MOD] -------------------- Сопративляемость к физическому урону --------------------->
ARGN -= <EVAL (<ARGN>*<GetCombatEffect ResistPhysical>)/100>
//<[MOD] ---------------- ворот от удара бонусом "увернуться от удара" ----------------->
IF (<ARGN> > 0) && (RAND(100) < <EVAL <GetCombatEffect DefenseChance>>)
//<[FIX] ----------- Выводим игрока из парализа, если он в нём ------------------->
TRY FINDID.i_rune_paralyze.REMOVE
TRY FINDID.i_rune_paralyze_field.REMOVE
SYSMESSAGE @73, You perform a masterful defense!
SRC.SYSMESSAGE @33, <NAME> perform a masterful defense.
ARGN=0
RETURN 1
ENDIF
//<[FIX] ------------- Поломка одетых предметов брони при получении урона -------------->
IF (<ARGN> > 0)
DamageEquipedArmor
ENDIF
ENDIF
//<[MOD] ---------------------- Выполнение результатов урона --------------------------->
IF (<ARGN> > 0)
//<[MOD] --------------- Прерывание каста с книшки, при получении удара ---------------->
IF (<SRC.UID>!=<UID>) && !(<TAG0.IsScroll>) && (<ACTION>==Skill_Magery)
ACTION=-1
ENDIF
//<[FIX] ---------------- Выводим игрока из парализа, если он в нём -------------------->
TRY FINDID.i_rune_paralyze.REMOVE
TRY FINDID.i_rune_paralyze_field.REMOVE
//<[MOD] ------------------- Вывод информации о получении урона ------------------------>
IF (<UID>==<SRC.UID>)
IF (<SRC.DETAIL>)
SRC.SYSMESSAGE @<QVAL (<ARGN2>&dam_magic)?0c2:04a>, You damaged on <ARGN> hits.
ENDIF
ELSE
IF (<SRC.DETAIL>)
SRC.SYSMESSAGE @<QVAL (<ARGN2>&dam_magic)?0c2:04a>, You damage <NAME> on <ARGN> hits.
ENDIF
IF (<DETAIL>)
SYSMESSAGE @026, <SRC.NAME> damage you on <ARGN> hits.
ENDIF
ENDIF
ELSE
SYSMESSAGE You parry is blow.
SRC.SYSMESSAGE <NAME> is parry blow.
RETURN 1
ENDIF
//<[MOD] ---------- Установка GOD типа урона, так как сделали все вычисления ----------->
ARGN2=01 // Чтоб урон прошёл на столько, чему равно ARGN
[EOF]
+ SphereDefs3.scp
[code]
//& #60;============================================================================
=========>
//<------------------------------------------------------------------------------------->
//<- Ultima Online: The Odyssey ->
//<- Sphere Version: 56x (56b-Nightly) ->
//<- Script Author: Breaker (Cache) ->
//<- ->
//<- Last edit date: 26.04.2007 ->
//<------------------------------------------------------------------------------------->
//& #60;============================================================================
=========>
[DEFNAME SPELLS_DEFS]
// Clumsy
Spell_1_CastTime 1.5
Spell_1_Effect 10
Spell_1_Duration 120.0
Spell_1_ManaUse 4
// Create Food
Spell_2_CastTime 1.5
Spell_2_Effect 0
Spell_2_Duration 0.0
Spell_2_ManaUse 4
// Feeblemind
Spell_3_CastTime 1.5
Spell_3_Effect 10
Spell_3_Duration 120.0
Spell_3_ManaUse 4
// Heal
Spell_4_CastTime 1.7
Spell_4_Effect 10
Spell_4_Duration 0.0
Spell_4_ManaUse 5
// Magic Arrow
Spell_5_CastTime 1.5
Spell_5_Effect 3
Spell_5_Duration 0.0
Spell_5_ManaUse 4
// Night Sight
Spell_6_CastTime 1.5
Spell_6_Effect 0
Spell_6_Duration 600.0
Spell_6_ManaUse 4
// Reactive Armor
Spell_7_CastTime 1.7
Spell_7_Effect 50
Spell_7_Duration 120.0
Spell_7_ManaUse 4
// Weaken
Spell_8_CastTime 1.7
Spell_8_Effect 10
Spell_8_Duration 120.0
Spell_8_ManaUse 4
// Agility
Spell_9_CastTime 2.0
Spell_9_Effect 10
Spell_9_Duration 120.0
Spell_9_ManaUse 5
// Cunning
Spell_10_CastTime 2.0
Spell_10_Effect 10
Spell_10_Duration 120.0
Spell_10_ManaUse 5
// Cure
Spell_11_CastTime 2.0
Spell_11_Effect 0
Spell_11_Duration 0.0
Spell_11_ManaUse 5
// Harm
Spell_12_CastTime 2.0
Spell_12_Effect 6
Spell_12_Duration 0.0
Spell_12_ManaUse 7
// Magic Trap
Spell_13_CastTime 2.0
Spell_13_Effect 0
Spell_13_Duration 0
Spell_13_ManaUse 6
// Magic Untrap
Spell_14_CastTime 2.0
Spell_14_Effect 0
Spell_14_Duration 0.0
Spell_14_ManaUse 8
// Protection
Spell_15_CastTime 2.0
Spell_15_Effect 10
Spell_15_Duration 120.0
Spell_15_ManaUse 6
// Strength
Spell_16_CastTime 2.0
Spell_16_Effect 10
Spell_16_Duration 120.0
Spell_16_ManaUse 6
// Bless
Spell_17_CastTime 2.5
Spell_17_Effect 5
Spell_17_Duration 120.0
Spell_17_ManaUse 9
// Fireball
Spell_18_CastTime 2.5
Spell_18_Effect 15
Spell_18_Duration 0.0
Spell_18_ManaUse 9
// Magic Lock
Spell_19_CastTime 2.5
Spell_19_Effect 0
Spell_19_Duration 0.0
Spell_19_ManaUse 9
// Poison
Spell_20_CastTime 2.5
Spell_20_Effect 10
Spell_20_Duration 0.0
Spell_20_ManaUse 9
// Telekinesis
Spell_21_CastTime 2.5
Spell_21_Effect