Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [EVENTS e_gerais_dev]
- ON=@ATTACK
- IF (<ISINSHIP>)
- IF (<SRC.ISNPC>)
- IF ((<ISINSHIP>) && !(<SRC.ISINSHIP>)) || (!(<ISINSHIP>) && (<SRC.ISINSHIP>))
- RETURN 1
- ENDIF
- ENDIF
- ENDIF
- on=@itemdropon_ground
- IF <SRC.ACCOUNT.PLEVEL> > 1
- IF !(<UID> == <ACT.TOPOBJ.UID>)
- WRITEFILE logs/<ACCOUNT>.LOG <SERV.RTIME>: <ACCOUNT> dropou em <P> <ACT.AMOUNT> <ACT.NAME> (<ACT.UID>)
- ENDIF
- ENDIF
- IF !(<ISGM>)
- if (<ACT.CAN>&CAN_I_BLOCK)
- REF1=<UID>
- REF2=<ACT.UID>
- FORCLIENTS 15
- IF !(<UID>==<REF1.UID>) && (<REGION.UID>==<REF1.REGION.UID>) && !(<ISGM>) && !(<flags> & statf_hidden) && !(<flags> & statf_invisible)
- REF2.CONT <REF1.FINDLAYER.21.UID>
- REF2.UPDATEX
- REF1.SYSMESSAGE @,,1 Itens que bloqueiam a passagem so podem ser colocados dentro de casas ou a 15 tiles de distancia de outros jogadores.
- RETURN 1
- ENDIF
- ENDFOR
- endif
- return 0
- ENDIF
- ON=@HITTRY
- IF (<REGION.TAG0.PVM_ONLY>) && (<SRC.ISPLAYER>)
- RETURN 1
- ENDIF
- IF (<SRC.NPC>==3) || (<SRC.NPC>==4) || (<SRC.NPC>==5) || (<SRC.NPC>==6) || (<SRC.NPC>==7)
- RETURN 1
- ENDIF
- IF (<SRC.REGION.FLAGS>®ion_flag_safe) || (<SRC.REGION.FLAGS>®ion_flag_no_pvp) || (STRMATCH(*commerce room*,<src.region.name>))
- RETURN 1
- ENDIF
- IF (<REGION.FLAGS>®ion_flag_safe) || (<REGION.FLAGS>®ion_flag_no_pvp) || (STRMATCH(*commerce room*,<region.name>))
- RETURN 1
- ENDIF
- // evitar que players buguem
- // ao atacar pelas quinas
- IF !(<SRC.CANSEELOS <I.UID>>)
- RETURN 1
- ENDIF
- ON=@HIT
- //LOCAL.ITEMDAMAGECHANCE=0 //calcular a chance da arma levar dano 0-100%
- IF (<WEAPON>)
- local.armslore = <armslore> //0-100.0
- local.hits <weapon.hits> //1-maxhits
- local.maxhits <weapon.maxhits> //1-maxhits
- IF (<WEAPON.VALUE> > 0)
- local.quality <weapon.quality> //1-200
- ELSE
- local.quality 200
- ENDIF
- local.skillweapon <i.<SERV.SKILL.<EVAL <ACTION> & 0ff>.KEY>> //0-100.0
- if <local.quality> == 0
- local.quality 200
- endif
- if (<local.hits> > <local.maxhits>)
- local.maxhits = <local.hits>
- endif
- float.armslorepeso <floatval ((<local.armslore>/100)*10) + 10>
- float.hitspeso <floatval ((<local.hits>/<local.maxhits>)*5) + 5>
- if (<isnum local.quality>)
- float.qualitypeso <floatval ((<local.quality>/200)*15) + 15>
- else
- float.qualitypeso <floatval ((<dlocal.quality>/200)*15) + 15>
- endif
- float.skillweaponpeso <floatval ((<local.skillweapon>/100)*15) + 15>
- local.ITEMDAMAGECHANCE = <feval <floatval (100 - (<float.qualitypeso> + <float.armslorepeso> + <float.skillweaponpeso> + <float.hitspeso>)) / 2>>
- ENDIF
- IF <SRC.FLAGS>&statf_hasshield
- IF (<R1,150> < <SRC.PARRYING>/100)
- SRC.EFFECT 3,i_fx_glow,20,25,1
- SRC.SYSMESSAGE You parry the blow
- SRC.SKILLGAIN 5 1
- RETURN 1
- ENDIF
- ENDIF
- IF (<WEAPON>)
- IF (<WEAPON.TAG0.POISONLEVEL>)
- IF !(<SRC.ISPLAYER>)
- IF (<WEAPON.TAG0.POISONLEVEL> == 1)
- local.POISONCHANCE = 4
- ELIF (<WEAPON.TAG0.POISONLEVEL> == 2)
- local.POISONCHANCE = 6
- ELIF (<WEAPON.TAG0.POISONLEVEL> == 3)
- local.POISONCHANCE = 9
- ELIF (<WEAPON.TAG0.POISONLEVEL> == 4)
- local.POISONCHANCE = 16
- ENDIF
- IF (<f_get_real_skill <UID>,30> >= 1000)
- local.POISONCHANCE <EVAL ((<local.POISONCHANCE> * 80) / 100)>
- ENDIF
- IF !(<R<LOCAL.POISONCHANCE>>)
- LOCAL.DOPOISON 1
- ENDIF
- ELSE
- IF (<WEAPON.TAG0.POISONLEVEL> == 1)
- local.POISONCHANCE = 3
- ELIF (<WEAPON.TAG0.POISONLEVEL> == 2)
- local.POISONCHANCE = 5
- ELIF (<WEAPON.TAG0.POISONLEVEL> == 3)
- local.POISONCHANCE = 7
- ELIF (<WEAPON.TAG0.POISONLEVEL> == 4)
- local.POISONCHANCE = 9
- ENDIF
- LOCAL.FOUND 0
- FORCONTID i_poison_buffer
- IF (<LINK> == <SRC.UID>)
- LOCAL.FOUND <UID>
- ENDIF
- ENDFOR
- IF (<LOCAL.FOUND>)
- REF1 <LOCAL.FOUND>
- ELSE
- SERV.NEWITEM i_poison_buffer
- NEW.TIMER 60
- NEW.LINK <SRC.UID>
- EQUIP <NEW.UID>
- REF1 <NEW.UID>
- ENDIF
- REF1.TIMER 60
- REF1.TAG0.HITS += 1
- SERV.LOG <NAME> batendo em <SRC.NAME> <dREF1.TAG0.HITS>.
- IF (<REF1.TAG0.HITS> >= <LOCAL.POISONCHANCE>)
- REF1.REMOVE
- LOCAL.DOPOISON 1
- ENDIF
- ENDIF
- IF (<LOCAL.DOPOISON>)
- SRC.FINDID.i_poison_effect.remove
- SERV.NEWITEM i_poison_effect
- NEW.more2 <WEAPON.TAG.POISONLEVEL>
- NEW.MORE 8
- NEW.TAG.POISONTIMER <WEAPON.TAG.POISONTIMER>
- NEW.TAG.ATTACKER <UID>
- NEW.CONT <SRC.UID>
- NEW.TRIGGER @EQUIP
- NEW.TIMER 2
- ENDIF
- ENDIF
- //ARGN1=<R<WEAPON.DAM>>
- ELSE
- LOCAL.DANOMAO <EVAL <STR>/50>
- LOCAL.DANOMAO2 <EVAL <LOCAL.DANOMAO>+(<WRESTLING>/300)>
- ARGN1=<R<DLOCAL.DANOMAO>,<DLOCAL.DANOMAO2>>
- ENDIF
- IF <WEAPON>
- LOCAL.DIFF = <ARGN1>
- ARGN1 += <eval <tactics>/200>
- ARGN1 += <eval <anatomy>/200>
- ARGN1 += <eval <str>/33>
- ENDIF
- IF <WEAPON.TYPE>=t_weapon_axe
- ARGN1 += <eval (<dLOCAL.DIFF>*(<LUMBERJACKING>/50))/100>
- ENDIF
- IF <SRC.ISPLAYER>
- ARGN1 -= <eval (<ARGN1> * <SRC.AR>)/200>
- ENDIF
- IF !(<SRC.ISPLAYER>) && (<uid.<local.arrow>.defname> == i_iron_arrow)
- // put here the % increase
- ENDIF
- IF (<WEAPON.MOREY>)
- ARGN1 += <EVAL <WEAPON.MOREY>/66>
- ENDIF
- // evitar que o sphere reduza o dano para armadura (ja foi reduzido)
- ARGN2 |= dam_god
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement