massis87
Journeyman
Posts: 82
Likes Given: 0
Likes Received: 1 in 1 posts
Joined: Jan 2017
Reputation: 0
D&W 8thAge
|
RE: @skillstart
i use skillstar for more skills.
i have more than 500k of custom combat sys. and try to change trigger is too heavy now.
this is the block of archery but i have all combats like this, i know there are errors but not importants.
the question is, how can i convert from skillstart to hitry all this? :|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//--------------------------------------------------- Blocco : Archery ---------------------------------------------------//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//--- In questo Blocco viene ModIFicato il Combat System Base per l'utilizzo della Skill Archery con utilizzo dell'Arco,
//--- non con l'utilizzo della Balestra (Quello � sotto il Combat System Base).
//---- Blocco Controlli Preliminari
//- Items [Blocco Attaccare Oggetti]
//- Invul
//- Paralizzato.
//- Stone.
//---- Blocco di Controllo di Azioni Particolari Vietate:
//- Controllo Zone Safe Mode [Dove non � permesso Killare].
//- Kill di un Animale Legato.
//- Kill di un Player Recently Ressed.
//---- Blocco Pulizia Flag su WarMode:
//- Rimozione Hidding.
//- Rimozione Tag [Recently Ressed]
//- Rimozione Tag [Fuga]
//----- Blocco del Danno Effettico di un Arco o di una Balestra basati sulle Skill.
//-- In Questo Blocco vengono considerati i seguenti fattori per calibrare il danni:
//- Skill : Archery - Tactics - Anatomy | (<SRC.Archery>/100)+(<SRC.Tactics>/200)+(<SRC.anatomy>/200)
//- Stat : Dex | (<SRC.dex>/20)
//- D. Arma : (<SRC.findlayer(2).morey>/70)
//---- Va considerato che le Skill su Sphere vengono Intese come 1000 (se a 100). Con queste Impostazioni il danno � tutto
//---- Basato sulle Skill + Il danno base dell'Arma che serve per equilibrare il danno a seconda dell'Arma.
//---- Per il danno "Effettivo" viene considerata l'armatura dell'Avversario |+(<SRC.findlayer(2).armor>)
IF (<SRC.ACTION>==SKILL_ARCHERY)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//-------------------------------------------- Controlli : Azione Vietate ------------------------------------------------//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//---- Blocco di Controllo di Azioni Particolari Vietate
//- Targettare un Items.
//- Kill di un Animale Legato.
//- Kill di un Pg/Npg Invulnerabile.
//- Kill di un Pg/Npg Pietrificato.
//- Controllo Zone Safe Mode [Dove non � permesso Killare].
//- Kill di un Player Recently Ressed.
/////////////////////////////////////////////////////////////////////
//------- Azione Vietata : Targettare un Items --------------------//
/////////////////////////////////////////////////////////////////////
IF (<SRC.ACT.isitem>)
SRC.SYSMESSAGE You cant attack an item!
SRC.ACTION=-1
RETURN 1
ENDIF
/////////////////////////////////////////////////////////////////////
//------- Azione Vietata : Kill di un Pg/Npg Invulnerabile --------//
/////////////////////////////////////////////////////////////////////
IF <SRC.flags>&statf_fly)
RETURN 0
ENDIF
IF <SRC.flags>&statf_freeze)
RETURN 0
ENDIF
IF <SRC.ACT.flags>&statf_invul
SRC.SYSMESSAGE You cant hurt Invulnerabile!
RETURN 1
ENDIF
/////////////////////////////////////////////////////////////////////
//------- Azione Vietata : Kill di un Pg/Npg Pietrificato ---------//
/////////////////////////////////////////////////////////////////////
IF <SRC.ACT.flags>&statf_stone
SRC.SYSMESSAGE You cant hurt him, is stoned!.
SRC.ACTION=-1
RETURN 1
ENDIF
/////////////////////////////////////////////////////////////////////
//------- Azione Vietata : Controllo Zone Safe Mode ---------------//
/////////////////////////////////////////////////////////////////////
IF <SRC.ACT.region.safe>
IF !<SRC.findid.I_Memory_Blocca_Action>
SRC.newitem I_Memory_Blocca_Action
SRC.ACT.equip
SRC.ACT.timer=3
SRC.SYSMESSAGE At <SRC.ACT.region.name> combat is blocked.
SRC.ACTION=-1
RETURN 1
ELSE
SRC.ACTION=-1
RETURN 1
ENDIF
ENDIF
/////////////////////////////////////////////////////////////////////
//------- Azione Vietata : Kill di un Animale Legato --------------//
/////////////////////////////////////////////////////////////////////
IF (<EVAL <SRC.ACT.tag.legato>>>0)
SRC.SYSMESSAGE You cant hurt him in that state.
SRC.ACTION=-1
RETURN 1
ENDIF
/////////////////////////////////////////////////////////////////////
//------- Azione Vietata :Kill di un Player Recently Ressed -------//
/////////////////////////////////////////////////////////////////////
IF <SRC.ACT.findid.I_Memory_Appena_Ressato>
IF <SRC.ACT.ISPLAYER>
SRC.SYSMESSAGE You cant hurt Recently Ressed
SRC.ACTION=-1
RETURN 1
ENDIF
ENDIF
IF <SRC.findid.I_Memory_Appena_Ressato>
IF <SRC.ACT.ISPLAYER>
SRC.SYSMESSAGE You cant attack in Recently Ressed.
SRC.ACTION=-1
RETURN 1
ENDIF
ENDIF
/////////////////////////////////////////////////////////////////////
//------- Azione Vietata : Kill di un Player Niubbo ---------------//
/////////////////////////////////////////////////////////////////////
IF <SRC.ACT.findid.I_Mem_Tag_Niubbo> && (!<src.act.findid.I_Memory_Abilitazione_PvP>)
SRC.SYSMESSAGE You cant attack Newbie.
SRC.ACTION=-1
RETURN 1
ENDIF
IF <SRC.findid.I_Mem_Tag_Niubbo> && (!<src.findid.I_Memory_Abilitazione_PvP>)
IF <SRC.ACT.ISPLAYER>
SRC.SYSMESSAGE You cant attack in Newbie.
SRC.SYSMESSAGE You can do in at Stone PvP.
SRC.ACTION=-1
RETURN 1
ENDIF
ENDIF
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//---------------------------------------- Controlli : Pulizia Flag su WarMode -------------------------------------------//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////
//------- Pulizia Flag : Hidding ---------------//
//////////////////////////////////////////////////
IF <SRC.flags>&statf_hidden
SRC.flags=<SRC.flags>-statf_hidden
SRC.SYSMESSAGE You are revealed!.
SRC.update
ENDIF
//////////////////////////////////////////////////
//------- Pulizia Flag : Invisibile ------------//
//////////////////////////////////////////////////
IF <SRC.flags>&statf_invisible
SRC.flags=<SRC.flags>-statf_invisible
SRC.SYSMESSAGE You are revealed!.
SRC.update
ENDIF
//////////////////////////////////////////////////
//------- Pulizia Flag : Recently Ressed --------//
//////////////////////////////////////////////////
IF <SRC.findid.I_Memory_Appena_Ressato.timer>>175
RETURN 1
ENDIF
IF <SRC.findid.I_Memory_Appena_Ressato>
SRC.CONSUME I_Memory_Appena_Ressato
ENDIF
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//----------------------------------------- Bloco Danno Effettivo : Archi ------------------------------------------------//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////
//--------------- Script : Danno Archi (T_WEAPON_BOW) ---------------//
///////////////////////////////////////////////////////////////////////
IF (<SRC.FINDLAYER(2).TYPE>=T_WEAPON_BOW)
IF !<SRC.ACT.canseelos>
SRC.ACTION=-1
RETURN 0
ENDIF
IF <SRC.findlayer(2).baseid>=i_bow_poison
IF !<SRC.restest 1 i_freccia_avvelenata>
SRC.SYSMESSAGE You havent poisoned arrows!.
SRC.ACTION=-1
RETURN 0
ENDIF
ELSEIF <SRC.findlayer(2).baseid>=i_Blowpipe
IF !<SRC.restest 1 i_Blowpipe_Dartx>
SRC.SYSMESSAGE You havent blowpipe darts!.
SRC.ACTION=-1
RETURN 0
ENDIF
ELSE
IF !<SRC.restest 1 i_arrow>
SRC.SYSMESSAGE You havent arrows!.
SRC.ACTION=-1
RETURN 0
ENDIF
ENDIF
/////////////////////////////////////////
//---- Rimozione Flag di Invisibility -//
/////////////////////////////////////////
IF (<SRC.FINDLAYER(39).BASEID>==I_Rune_Invisibility)
SRC.CONSUME I_Rune_Invisibility
ENDIF
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//-------------------------------------- Blocco : Gittata Massima e Gittata Minima ----------------------------------//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//-- In questo Blocco sono specIFicate le Gittate Efficaci a cui � soggetto l'Arciere.
//- Gittata Minima [Base alla Dex]
//- Gittata Massima [Base alla Dex]
//////////////////////////////////////////////////
//------------ Blocco : Gittata Minima ---------//
//////////////////////////////////////////////////
//--- Gittata Minima 3 Tile ---//
IF (<SRC.ACT.DISTANCE><3) && (<SRC.tag.noeffect>=1)
SRC.SYSMESSAGE <SRC.ACT.name> is too near to you, your arrows have no effect!!
SRC.tag.noeffect=0
SRC.findid.I_Mem_Archer_Vic_2.more=3
SRC.ACTION=-1
RETURN 1
ENDIF
//////////////////////////////////////////////////
//------------ Blocco : Gittata Massima --------//
//////////////////////////////////////////////////
//--- Gittata Massima 14 Tile per Cap da Arciere Puro a 150 Dex. ---//
//--- Gittata Massima 12 Tile per Cap Minori di 150 Dex. ---//
IF (<SRC.ACT.DISTANCE>>11) && ( <SRC.ACT.DISTANCE><=13) && (<SRC.tag.noeffect>=1)
IF (<EVAL <SRC.TAG.ID_CLASSE>>!=5) && (<EVAL <SRC.TAG.ID_CLASSE>>!=4) //-- (<EVAL <SRC.TAG.EFFETTDEXCAP>><150)
SRC.SYSMESSAGE <SRC.ACT.name> is out from your range , you cant hit him.
SRC.ACTION=-1
SRC.tag.noeffect=0
SRC.ACTION=-1
SRC.findid.I_Mem_Archer_Vic_2.more=3
RETURN 1
ELSEIF (<EVAL <SRC.TAG.ID_CLASSE>>!=5) && (<EVAL <SRC.TAG.ID_CLASSE>>!=4) //--
SRC.SYSMESSAGE <SRC.ACT.name> is out from your range , you cant hit him.
SRC.ACTION=-1
SRC.tag.noeffect=0
SRC.ACTION=-1
SRC.findid.I_Mem_Archer_Vic_2.more=3
RETURN 1
ENDIF
ELSEIF (<SRC.ACT.DISTANCE>>13) && (<SRC.tag.noeffect>=1)
SRC.SYSMESSAGE <SRC.ACT.name> is out from your range , you cant hit him.
SRC.ACTION=-1
SRC.tag.noeffect=0
SRC.ACTION=-1
SRC.findid.I_Mem_Archer_Vic_2.more=3
RETURN 1
ENDIF
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//------------------------------------------------- Fine Blocco Gittate ---------------------------------------------//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//---------------------------- Blocco : Visualizzazione e Calcolo del Danno degli Archi ----------------------------//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//---- Inizio del Blocco di Assegnazione del Danno.
//- Controlli sullo Stato dell'Azione dell'Arciere
IF (<SRC.findid.I_Mem_Archer_Vic_2.more1>=3) && (<SRC.tag.noeffect>=1)
//////////////////////////////////////////////////////////
//------------ Blocco : Miss Random [Fallimento] -------//
//////////////////////////////////////////////////////////
//--- Miss Random del Bersaglio basata sulla Tactics dell'Arciere (<SRC.Tactics>).
IF ((rand(1100)><SRC.Tactics>) && (rand(2)=1)
sound 569
SRC.ACT.effect 0,<SRC.findlayer(2).TDATA4>,15
SRC.SYSMESSAGE You dont hit <SRC.ACT.name>
//--- Visualizzazione dell'Azione di "Miss", con lancio della Freccia verso il Bersaglio.
IF (rand(2)=1)
SRC.tag.bps=<SRC.ACT.p>
IF <SRC.findlayer(2).baseid>=i_bow_poison
SRC.newitem i_freccia_avvelenata
ELSEIF <SRC.findlayer(2).baseid>=i_Blowpipe
SRC.newitem i_Blowpipe_Dartx
ELSE
SRC.newitem i_arrow
ENDIF
SRC.ACT.p=<SRC.tag.bps>
SRC.ACT.timer=120
SRC.ACT.attr=00002
SRC.ACT.update
ENDIF
//--- Elementi di "Fine" azione dell'Arciere sul fallimento "Miss".
SRC.tag.noeffect=0
SRC.ACTION=-1
RETURN 1
ENDIF
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//----------------------------- Blocco : Consumo Munzioni ----------------------------------------------------------//
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
IF (<SRC.FINDLAYER(2).TYPE>=T_WEAPON_BOW)
IF <SRC.findlayer(2).baseid>=i_bow_poison
SRC.CONSUME 1 i_freccia_avvelenata
ELSEIF <SRC.findlayer(2).baseid>=i_Blowpipe
SRC.CONSUME 1 i_Blowpipe_Dartx
ELSE
SRC.CONSUME i_arrow
ENDIF
ELSEIF (<SRC.FINDLAYER(2).TYPE>=T_WEAPON_XBOW)
IF (<SRC.findlayer(2).baseid>=i_crossbow_steel)
SRC.CONSUME 1 i_dardo_di_metallo
ELSE
SRC.CONSUME 1 i_xbolt
ENDIF
ENDIF
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//-------------------------------------- Blocco : Calcolo del Danno Base degli Archi --------------------------------//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//--- In questo Blocco viene calcolato il Danno basato sulle Skill dell'Arciere e sull'Arma che Impugna.
SRC.ACT.effect 0,<SRC.findlayer(2).TDATA4>,15
LOCAL.dannoarco=((<SRC.Archery>/100)+(<SRC.Tactics>/200)+(<SRC.anatomy>/200)+(<SRC.dex>/20)+(<SRC.findlayer(2).dam>)+(<SRC.findlayer(2).morey>/71))
//////////////////////////////////////////////
//-------- Blocco : Bonus Distanza Rav. ----//
//////////////////////////////////////////////
//--- Bonus sulla Distanza Ravvicinata. Pi� vicino � il Bersaglio (Nei Tile di Gittata), maggiore � il danno che subisce.
//--- (14+(<-SRC.ACT.DISTANCE>)) � l'Aumento progressivo del Danno con il diminuire della Distanza del Bersaglio.
//--- Alla distanza Maggiore di Tiro vi � un Bonus pari +0, alla Minore di +12.
LOCAL.dannorandom={1 6}
LOCAL.dannoarco=(<EVAL <LOCAL.dannoarco>>)+(16)+(-<SRC.ACT.DISTANCE>)+(<EVAL <LOCAL.dannorandom>>)
//////////////////////////////////////////////
//-------- Blocco : Bonus Arciere Puro -----//
//////////////////////////////////////////////
//--- Bonus Aggiuntivo di 15 Punti (Danno) per gli Arcieri con Cap puro [120 Dex - 80 Str - 10 Int]
IF (<EVAL <SRC.TAG.EFFETTDEXCAP>>=150) && (<SRC.DEX>>=150)
LOCAL.dannoarco=(<EVAL <LOCAL.dannoarco>>+15)
ENDIF
//////////////////////////////////////////////
//-------- Blocco : Danno Magico -----------//
//////////////////////////////////////////////
IF (<SRC.findlayer(2).attr>&attr_magic) && (<SRC.FINDLAYER(2).TYPE>=T_WEAPON_BOW)
LOCAL.dannoarco=((<EVAL <LOCAL.dannoarco>>)+(<EVAL <SRC.findlayer(2).morey>>/71))
ENDIF
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//----------------------------------------------- Blocco : Resistenza ----------------------------------------------//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//--- In questo Blocco sono presenti gli Script per il Calcolo delle Eventuali Resistenze presenti sul Bersaglio.
//--- Blocchi presenti:
//- Resistenza dell'Armatura del Bersaglio.
//- Resistenza della Bardatura del Cavallo da Guerra, nel caso sia l'Animale montato dal Bersaglio.
//////////////////////////////////////////////
//-------- Blocco : Resistenza Armatura-----//
//////////////////////////////////////////////
//--- Diminuzione del Danno Effettivo (<<EVAL <LOCAL.dannoarco>>) in base all'Armatura del Bersaglio (<SRC.ACT.AR>/3).
IF ((<SRC.ACT.AR>/2)<(<EVAL <LOCAL.dannoarco>>))
LOCAL.dannoarco=(<EVAL <LOCAL.dannoarco>>-(<SRC.ACT.AR>/2))
SRC.ACT.SYSMESSAGE You hurt from an arrow of <SRC.name>
SRC.SYSMESSAGE You hurt <SRC.ACT.name>
ELSE
LOCAL.dannoarco={3 6}
SRC.ACT.SYSMESSAGE An arrow of <SRC.name> hurt you lightly.
SRC.SYSMESSAGE You hit <SRC.ACT.name>
ENDIF
///////////////////////////////////////////////////
//-------- Blocco : Resistenza della Bardatura --//
///////////////////////////////////////////////////
IF (<SRC.ACT.findid.i_memory_bardatura>)
LOCAL.bardatura={1 5}
LOCAL.dannoarco=((<EVAL <LOCAL.dannoarco>>)+(-<EVAL <LOCAL.bardatura>>))
SRC.ACT.SYSMESSAGE The Horse Armor has cushioned the Strike.
ENDIF
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//-------------------------------------------- Blocco : Archi Speciali ---------------------------------------------//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//--- In questo Blocco sono presenti gli Script per l'assegnazione di Eventuali Speciali eventi dovuti a particolari Armi.
//--- Blocchi presenti:
//- Utilizzo del Poisong Bow.
///////////////////////////////////////////////////
//-------- Blocco : Utilizzo del Poison Bow -----//
///////////////////////////////////////////////////
//--- Controllo sull'Utilizzo del Poison Bow (<SRC.findlayer(2).baseid>=i_bow_poison) , con successivo avvelentamento.
IF <SRC.findlayer(2).baseid>=i_bow_poison
IF (<SRC.ACT.FINDLAYER(42).BASEID>!=I_Rune_Poison)
IF (<SRC.ACT.FINDLAYER(37).BASEID>==I_Rune_Magic_Reflection)
SRC.ACT.effect 3,037b9,6,15,1
SRC.ACT.CONSUME i_rune_magic_reflection
SRC.ACT.Poison 250
SRC.ACT.SYSMESSAGE You lose magic protection from the poison.
ELSE
SRC.ACT.Poison 250
ENDIF
ENDIF
ENDIF
///////////////////////////////////////////////////
//-------- Blocco : Utilizzo del Elven Bow -----//
///////////////////////////////////////////////////
//--- Controllo sull'Utilizzo dell'Elven Bow <SRC.findid.i_affaticamento>) , con successiva perdita di stamina.
IF <SRC.findlayer(2).baseid>=i_bow_elven
IF (<SRC.findid.i_affaticamento>)
SRC.ACT.EFFECT 3,0e50,6,16,1
SRC.ACT.SYSMESSAGE The injury affects your legs and slows your run.
SRC.ACT.STAM =1
SRC.CONSUME i_affaticamento
ENDIF
ENDIF
//////////////////////////////////////////////////////////////////
//---------- Blocco : Sparring con Arco Scuola -----------------//
//////////////////////////////////////////////////////////////////
IF <SRC.ACT.ISPLAYER>
IF <SRC.findlayer(2).baseid>=I_Arco_Sparring
LOCAL.dannoarco={1 4}
ENDIF
ENDIF
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//----------------------------------------- Blocco Classe AR : Calcolo Malus Danno ---------------------------------------//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
IF <SRC.ACT.ISPLAYER>
IF (<SRC.ACT.findid.i_rune_protection>)
LOCAL.MOD_AC = (<SRC.ACT.AR>+(-<EVAL <SRC.ACT.findid.i_rune_protection.MOREY>/33>))
IF (<EVAL <LOCAL.MOD_AR>><17) && (RAND(2)=1)
LOCAL.dannoarco=(<EVAL <LOCAL.dannoarco>>+(<EVAL <LOCAL.dannoarco>>*2)/6)
SRC.SYSMESSAGE Your arrow critical hit <SRC.ACT.name>.
SRC.ACT.SYSMESSAGE Arrow of <SRC.name> critical hit you.
ENDIF
ELSEIF (<SRC.ACT.AR><17)
LOCAL.dannoarco=(<EVAL <LOCAL.dannoarco>>+(<EVAL <LOCAL.dannoarco>>*2)/6)
SRC.SYSMESSAGE Your arrow critical hit <SRC.ACT.name>.
SRC.ACT.SYSMESSAGE Arrow of <SRC.name> critical hit you.
ENDIF
ENDIF
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//------------------------------- Blocco : Visualizzazione del Danno Effettivo --------------------------------------//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//------ In questo Blocco viene Assegnazto e Visualizzato il Danno "(<EVAL <LOCAL.dannoarco>>)".
//---- Avvine una distinzione sul Tipo di Bersaglio:
//- Se il Beraglio utilizza una Magia "(<SRC.ACT.action>=Skill_Magery)" e non sia un Npc "<SRC.ACT.npc>!=0)" avvine
//- la visualizzazione tramite la funzione "f_visualizzazione_danno_arciere" che interompe l'azione del Bersaglio.
//- Nel caso contrario , cio� che il Bersaglio non stia utilizzato Magery oppure sia un Npc avviene la visualizzazioe
//- diretta in modo che non vi sia il blocco dell'azione , Debug del Warrior e della IA degli Npc.
SRC.ACT.HITS=(<SRC.ACT.HITS>+(-<EVAL <LOCAL.dannoarco>>))
SRC.ACT.DAMAGE 1
IF (<SRC.ACT.action>=Skill_Magery) && (<SRC.ACT.npc>=0)
SRC.ACT.SAY @00026 <EVAL <LOCAL.dannoarco>>
IF (<SRC.ACT.FINDID.I_Memory_Staffe_Leggendarie>)
//- No Frizz se il Mago Equipaggia una Staff leggendaria
ELSE
IF (<SRC.ACT.ISPLAYER>)
SRC.ACT.ACTION=-1
ENDIF
ENDIF
SRC.ACT.CONSUME i_rune_paralyze
SRC.ACT.CONSUME i_rune_paralyze_field
ELSE
SRC.ACT.SAY @00026 <EVAL <LOCAL.dannoarco>>
SRC.ACT.CONSUME i_rune_paralyze
SRC.ACT.CONSUME i_rune_paralyze_field
ENDIF
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//-------------------------------------------- Blocco : Usura Arco -------------------------------------------------//
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
IF (<SRC.ACT.ISPLAYER>) && (<SRC.findlayer(2).baseid>=i_Golden_Bow)
SRC.E_Usura_Archi_gold
ELSE
SRC.E_Usura_Archi
ENDIF
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//--------------------------------------------- Fine Blocco : Usura Arco --------------------------------------------//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
SRC.ACTION=-1
sound 564
SRC.tag.noeffect=0
RETURN 1
ENDIF
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//---------------------------------------------------- Fine del Blocco ----------------------------------------------//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//------------------------------------ Blocco : Velocit� di Azione dell'Arco -------------------------------------//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//--- In questo blocco vi � il Calcolo della velocit� di Azione dell'Arco
//- La velocit� di Azione � basata sulla Dex dell'Arciere (<SRC.dex>) e su un Valore Fisso di Timer.
IF (!<SRC.findid.I_Mem_Archer_Vic_2>)
SRC.tag.noeffect=1
LOCAL.velarco=(((250+(-<SRC.dex>))/70)
IF (<EVAL <SRC.TAG.EFFETTDEXCAP>><110) //- Stat del Ranger, Inferiore ad esso � penalizzato molto.
LOCAL.velarco=(<EVAL <LOCAL.velarco>>+15)
ENDIF
SRC.tag.bav=<SRC.ACT.uid>
SRC.newitem I_Mem_Archer_Vic_2
SRC.ACT.equip
SRC.ACT.link=<SRC.tag.bav>
SRC.ACT.more=1
SRC.ACT.timer=<EVAL <LOCAL.velarco>>
SRC.ACTION=-1
RETURN 1
ENDIF
SRC.ACTION= -1
RETURN 1
ENDIF
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//----------------------------------------- Bloco Danno Effettivo : Balestre [Crossbow] ----------------------------------//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
//--------------- Script : Danno Balestre [Crossbow](T_WEAPON_xBOW) ---------------//
/////////////////////////////////////////////////////////////////////////////////////
IF (<SRC.FINDLAYER(2).TYPE>=T_WEAPON_XBOW) && (<SRC.FINDLAYER(2).DISPID>=i_crossbow)
IF !<SRC.ACT.canseelos>
SRC.ACTION=-1
RETURN 0
ENDIF
IF !<SRC.restest 1 i_xbolt>
SRC.SYSMESSAGE You havent darts in your backpack!.
RETURN 0
ENDIF
/////////////////////////////////////////
//---- Rimozione Flag di Invisibility -//
/////////////////////////////////////////
IF (<SRC.FINDLAYER(39).BASEID>==I_Rune_Invisibility)
SRC.CONSUME I_Rune_Invisibility
ENDIF
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//-------------------------------------- Blocco : Gittata Massima e Gittata Minima ----------------------------------//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//-- In questo Blocco sono specIFicate le Gittate Efficaci a cui � soggetto l'Arciere che utilizza la Balestra Crossbow.
//- Gittata Minima [Base alla Dex]
//- Gittata Massima [Base alla Dex]
//////////////////////////////////////////////////
//------------ Blocco : Gittata Minima ---------//
//////////////////////////////////////////////////
//--- Gittata Minima 1 Tile ---//
IF (<SRC.ACT.distance><1) && (<SRC.tag.noeffect>=1)
SRC.SYSMESSAGE <SRC.ACT.name> is too near to you, darts dont have effect!!
SRC.tag.noeffect=0
SRC.findid.I_Mem_Archer_Vic_2.more=3
SRC.ACTION=-1
RETURN 1
ENDIF
//////////////////////////////////////////////////
//------------ Blocco : Gittata Massima --------//
//////////////////////////////////////////////////
//--- Gittata Massima 14 Tile per Cap da Arciere Puro a 150 Dex. ---//
//--- Gittata Massima 12 Tile per Cap Minori di 150 Dex. ---//
IF (<SRC.ACT.DISTANCE>>11) && ( <SRC.ACT.DISTANCE><=13) && (<SRC.tag.noeffect>=1)
IF (<EVAL <SRC.TAG.ID_CLASSE>>!=5) && (<EVAL <SRC.TAG.ID_CLASSE>>!=4) //-- (<EVAL <SRC.TAG.EFFETTDEXCAP>><150)
SRC.SYSMESSAGE <SRC.ACT.name> is out from your range , you cant hit him.
SRC.ACTION=-1
SRC.tag.noeffect=0
SRC.ACTION=-1
SRC.findid.I_Mem_Archer_Vic_2.more=3
RETURN 1
ELSEIF (<EVAL <SRC.TAG.ID_CLASSE>>!=5) && (<EVAL <SRC.TAG.ID_CLASSE>>!=4) //-- (<SRC.DEX><150)
SRC.SYSMESSAGE <SRC.ACT.name> is out from your range , you cant hit him.
SRC.ACTION=-1
SRC.tag.noeffect=0
SRC.ACTION=-1
SRC.findid.I_Mem_Archer_Vic_2.more=3
RETURN 1
ENDIF
ELSEIF (<SRC.ACT.DISTANCE>>13) && (<SRC.tag.noeffect>=1)
SRC.SYSMESSAGE <SRC.ACT.name> is out from your range , you cant hit him.
SRC.ACTION=-1
SRC.tag.noeffect=0
SRC.ACTION=-1
SR.findid.I_Mem_Archer_Vic_2.more=3
RETURN 1
ENDIF
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//------------------------------------------------- Fine Blocco Gittate ---------------------------------------------//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//----------------------------------- Blocco : Visualizzazione e Calcolo del Danno ---------------------------------//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//---- Inizio del Blocco di Assegnazione del Danno.
//- Controlli sullo Stato dell'Azione dell'Arciere:
IF (<SRC.findid.I_Mem_Archer_Vic_2.more1>=3) && (<SRC.tag.noeffect>=1)
//////////////////////////////////////////////////////////
//------------ Blocco : Miss Random [Fallimento] -------//
//////////////////////////////////////////////////////////
//--- Miss Random del Bersaglio basata sulla Tactics dell'Arciere (<SRC.Tactics>).
IF ((rand(1100)><SRC.Tactics>) && (rand(2)=1)
sound 569
SRC.ACT.effect 0,<SRC.findlayer(2).TDATA4>,15
SRC.SYSMESSAGE You dont hit <SRC.ACT.name>
//--- Visualizzazione dell'Azione di "Miss", con lancio della Freccia verso il Bersaglio.
IF (rand(2)=1)
SRC.tag.bps=<SRC.ACT.p>
SRC.newitem i_xbolt
SRC.ACT.p=<SRC.tag.bps>
SRC.ACT.timer=120
SRC.ACT.attr=00002
SRC.ACT.update
ENDIF
//--- Elementi di "Fine" azione dell'Arciere sul fallimento "Miss".
SRC.tag.noeffect=0
SRC.ACTION=-1
RETURN 1
ENDIF
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//----------------------------- Blocco : Consumo Munzioni ----------------------------------------------------------//
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
IF (<SRC.FINDLAYER(2).TYPE>=T_WEAPON_BOW)
IF <SRC.findlayer(2).baseid>=i_bow_poison
SRC.CONSUME 1 i_freccia_avvelenata
ELSEIF <SRC.findlayer(2).baseid>=i_Blowpipe
SRC.CONSUME 1 i_Blowpipe_Dartx
ELSE
SRC.CONSUME i_arrow
ENDIF
ELSEIF (<SRC.FINDLAYER(2).TYPE>=T_WEAPON_XBOW)
IF (<SRC.findlayer(2).baseid>=i_crossbow_steel)
SRC.CONSUME 1 i_dardo_di_metallo
ELSE
SRC.CONSUME 1 i_xbolt
ENDIF
ENDIF
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//-------------------------------------------- Blocco : Calcolo del Danno Base --------------------------------------//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//--- In questo Blocco viene calcolato il Danno basato sulle Skill dell'Arciere e sull'Arma che Impugna.
SRC.ACT.effect 0,<SRC.findlayer(2).TDATA4>,15
LOCAL.Danno_Balestra_Crossbow=((<SRC.Archery>/40)+(<SRC.Tactics>/200)+(<SRC.anatomy>/200)+(<SRC.dex>/20)+(<SRC.findlayer(2).dam>)+(<SRC.findlayer(2).morey>/70))
//////////////////////////////////////////////
//-------- Blocco : Danno Variabili Rand. --//
//////////////////////////////////////////////
//---- Blocco di Calcolo del Danno Variabile "Random", per una dinamicit� maggiore.
LOCAL.dannorandom={1 6}
LOCAL.Danno_Balestra_Crossbow=(<EVAL <LOCAL.Danno_Balestra_Crossbow>>)+(-15)+(<EVAL <LOCAL.dannorandom>>)
//////////////////////////////////////////////
//-------- Blocco : Bonus Distanza Rav. ----//
//////////////////////////////////////////////
//--- Bonus sulla Distanza Ravvicinata. Pi� vicino � il Bersaglio (Nei Tile di Gittata), maggiore � il danno che subisce.
//- (14+(<-SRC.ACT.distance>)) � l'Aumento progressivo del Danno con il diminuire della Distanza del Bersaglio.
LOCAL.Danno_Balestra_Crossbow=<EVAL <LOCAL.Danno_Balestra_Crossbow>>+16+(-<SRC.ACT.distance>)
//////////////////////////////////////////////
//-------- Blocco : Bonus Arciere Puro -----//
//////////////////////////////////////////////
//--- Bonus Aggiuntivo di 15 Punti (Danno) per gli Arcieri con Cap puro [120 Dex - 80 Str - 10 Int]
IF (<EVAL <SRC.TAG.EFFETTDEXCAP>>=150) && (<SRC.dex>>=150)
LOCAL.Danno_Balestra_Crossbow=<EVAL <LOCAL.Danno_Balestra_Crossbow>>+15
ENDIF
//////////////////////////////////////////////
//-------- Blocco : Danno Magico -----------//
//////////////////////////////////////////////
IF (<SRC.findlayer(2).attr>&attr_magic) && (<SRC.FINDLAYER(2).TYPE>=T_WEAPON_XBOW) && (<SRC.FINDLAYER(2).DISPID>=i_crossbow)
LOCAL.Danno_Balestra_Crossbow=((<EVAL <LOCAL.Danno_Balestra_Crossbow>>)+(<EVAL <SRC.findlayer(2).morey>>/71))
ENDIF
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//----------------------------------------------- Blocco : Resistenza ----------------------------------------------//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//--- In questo Blocco sono presenti gli Script per il Calcolo delle Eventuali Resistenze presenti sul Bersaglio.
//--- Blocchi presenti:
//- Resistenza dell'Armatura del Bersaglio.
//- Resistenza della Bardatura del Cavallo da Guerra, nel caso sia l'Animale montato dal Bersaglio.
//////////////////////////////////////////////
//-------- Blocco : Resistenza Armatura-----//
//////////////////////////////////////////////
//--- Diminuzione del Danno Effettivo (<<EVAL <LOCAL.dannoBalestra_>>) in base all'Armatura del Bersaglio (<SRC.ACT.AR>/3).
IF ((<SRC.ACT.AR>/2)<<EVAL <LOCAL.Danno_Balestra_Crossbow>>)
LOCAL.Danno_Balestra_Crossbow=(<EVAL <LOCAL.Danno_Balestra_Crossbow>>-(<SRC.ACT.AR>/2))
SRC.ACT.SYSMESSAGE You hurt from a dart of <SRC.name>
SRC.SYSMESSAGE You hurt <SRC.ACT.name>
ELSE
LOCAL.Danno_Balestra_Crossbow={3 6}
SRC.ACT.SYSMESSAGE A dart of <SRC.name> hurt you lightly.
SRC.SYSMESSAGE You hit <SRC.ACT.name>
ENDIF
///////////////////////////////////////////////////
//-------- Blocco : Resistenza della Bardatura --//
///////////////////////////////////////////////////
IF (<SRC.ACT.findid.i_memory_bardatura>)
LOCAL.bardatura={1 5}
LOCAL.Danno_Balestra_Crossbow=((<EVAL <LOCAL.Danno_Balestra_Crossbow>>)+(-<EVAL <LOCAL.bardatura>>))
SRC.ACT.SYSMESSAGE The Horse Armor has cushioned the Strike.
ENDIF
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//----------------------------------------- Blocco Classe AR : Calcolo Malus Danno ---------------------------------------//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
IF <SRC.ACT.ISPLAYER>
IF (<SRC.ACT.findid.i_rune_protection>)
LOCAL.MOD_AC = (<SRC.ACT.AR>+(-<EVAL <SRC.ACT.findid.i_rune_protection.MOREY>/33>))
IF (<EVAL <LOCAL.MOD_AR>><17) && (RAND(2)=1)
LOCAL.Danno_Balestra_Crossbow=(<EVAL <LOCAL.Danno_Balestra_Crossbow>>+(<EVAL <LOCAL.Danno_Balestra_Crossbow>>*2)/6)
SRC.SYSMESSAGE The dart critical hit <SRC.ACT.name>.
SRC.ACT.SYSMESSAGE The dart of <SRC.name> critical hit you.
ENDIF
ELSEIF (<SRC.ACT.AR><17)
LOCAL.Danno_Balestra_Crossbow=(<EVAL <LOCAL.Danno_Balestra_Crossbow>>+(<EVAL <LOCAL.Danno_Balestra_Crossbow>>*2)/6)
SRC.SYSMESSAGE The dart critical hit <SRC.ACT.name>.
SRC.ACT.SYSMESSAGE The dart of <SRC.name> critical hit you.
ENDIF
ENDIF
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//------------------------------- Blocco : Visualizzazione del Danno Effettivo --------------------------------------//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//--- In questo Blocco viene Assegnazto e Visualizzato il Danno (<EVAL <LOCAL.Danno_Balestra_Crossbow>>).
//- Avvine una distinzione sul Tipo di Bersaglio. Se il Beraglio utilizza una Magia "(<SRC.ACT.action>=Skill_Magery)"
//- avvine la visualizzazione tramite la funzione "f_visualizzazione_danno_arciere" che fa frizzare.
//- Nel caso contrario (cio� ogni altra Skill combattiva) avviene la visualizzazioen diretta in modo che non vi sia il
//- il blocco dell'azione (Debug del Warrior).
SRC.ACT.hits=(<SRC.ACT.hits>-<EVAL <LOCAL.Danno_Balestra_Crossbow>>)
SRC.ACT.DAMAGE 1
IF (<SRC.ACT.action>=Skill_Magery) && (<SRC.ACT.npc>=0)
SRC.ACT.say @00026 <EVAL <LOCAL.Danno_Balestra_Crossbow>>
IF (<SRC.ACT.FINDID.I_Memory_Staffe_Leggendarie>)
//- No Frizz se il Mago Equipaggia una Staff leggendaria
ELSE
IF (<SRC.ACT.ISPLAYER>)
SRC.ACT.ACTION=-1
ENDIF
ENDIF
SRC.ACT.CONSUME i_rune_paralyze
SRC.ACT.CONSUME i_rune_paralyze_field
ELSE
SRC.ACT.say @00026 <EVAL <LOCAL.Danno_Balestra_Crossbow>>
SRC.ACT.CONSUME i_rune_paralyze
SRC.ACT.CONSUME i_rune_paralyze_field
ENDIF
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//------------------------------- Blocco : Usura Arco ---------------------------------------------------------------//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
SRC.E_Usura_Archi
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//------------------------------- Fine Blocco : Usura Arco ----------------------------------------------------------//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
SRC.ACTION=-1
sound 564
SRC.tag.noeffect=0
RETURN 1
ENDIF
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//--------------------------- Blocco : Velocit� di Azione della Balestra CrossBow ------------------------------//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//--- In questo blocco vi � il Calcolo della velocit� di Azione della Balestra CrossBow
//- La velocit� di Azione � basata sulla Dex dell'Arciere (<SRC.dex>) e su un Valore Fisso di Timer.
IF (!<SRC.findid.I_Mem_Archer_Vic_2>)
SRC.tag.noeffect=1
LOCAL.velocita_Balestra_Crossbow=(((250+(-<SRC.dex>))/70)
IF (<EVAL <SRC.TAG.EFFETTDEXCAP>><110) //- Stat del Ranger, Inferiore ad esso � penalizzato molto.
LOCAL.velocita_Balestra_Crossbow=(<EVAL <LOCAL.velocita_Balestra_Crossbow>>+15)
ENDIF
SRC.tag.bav=<SRC.ACT.uid>
SRC.newitem I_Mem_Archer_Vic_2
SRC.ACT.equip
SRC.ACT.link=<SRC.tag.bav>
SRC.ACT.more=1
SRC.ACT.timer=<EVAL <LOCAL.velocita_Balestra_Crossbow>>
SRC.ACTION=-1
RETURN 1
ENDIF
SRC.ACTION= -1
RETURN 1
ENDIF
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//----------------------------------------- Bloco Danno Effettivo : Balestre [Heavy Crossbow] ------------------------------------------------//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////
//--------------- Script : Danno Balestre [Heavy Crossbow](T_WEAPON_xBOW) ---------------//
///////////////////////////////////////////////////////////////////////////////////////////
IF (<SRC.FINDLAYER(2).TYPE>=T_WEAPON_XBOW) && (<SRC.FINDLAYER(2).DISPID>=i_crossbow_heavy)
IF !<SRC.ACT.canseelos>
SRC.ACTION=-1
RETURN 0
ENDIF
IF (<SRC.findlayer(2).baseid>=i_crossbow_steel)
IF !<SRC.restest 1 i_dardo_di_metallo>
SRC.SYSMESSAGE You havent metal darts in your backpack!
SRC.ACTION=-1
RETURN 0
ENDIF
ELSE
IF !<SRC.restest 1 i_xbolt>
SRC.SYSMESSAGE You havent darts in your backpack!.
SRC.ACTION=-1
RETURN 0
ENDIF
ENDIF
/////////////////////////////////////////
//---- Rimozione Flag di Invisibility -//
/////////////////////////////////////////
IF (<SRC.FINDLAYER(39).BASEID>==I_Rune_Invisibility)
SRC.CONSUME I_Rune_Invisibility
ENDIF
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//-------------------------------------- Blocco : Gittata Massima e Gittata Minima ----------------------------------//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//-- In questo Blocco sono specIFicate le Gittate Efficaci a cui � soggetto l'Arciere che utilizza la Balestra Heavy Crossbow.
//- Gittata Massima [Base alla Dex]
//////////////////////////////////////////////////
//------------ Blocco : Gittata Massima --------//
//////////////////////////////////////////////////
//--- Gittata Massima 14 Tile per Cap da Arciere Puro a 150 Dex. ---//
//--- Gittata Massima 12 Tile per Cap Minori di 150 Dex. ---//
IF (<SRC.ACT.DISTANCE>>11) && ( <SRC.ACT.DISTANCE><=13) && (<SRC.tag.noeffect>=1)
IF (<EVAL <SRC.TAG.ID_CLASSE>>!=5) && (<EVAL <SRC.TAG.ID_CLASSE>>!=4) //-- (<EVAL <SRC.TAG.EFFETTDEXCAP>><150)
SRC.SYSMESSAGE <SRC.ACT.name> is out from your range , you cant hit him.
SRC.ACTION=-1
SRC.tag.noeffect=0
SRC.ACTION=-1
SRC.findid.I_Mem_Archer_Vic_2.more=3
RETURN 1
ELSEIF (<EVAL <SRC.TAG.ID_CLASSE>>!=5) && (<EVAL <SRC.TAG.ID_CLASSE>>!=4) //-- (<SRC.DEX><150)
SRC.SYSMESSAGE <SRC.ACT.name> is out from your range , you cant hit him.
SRC.ACTION=-1
SRC.tag.noeffect=0
SRC.ACTION=-1
SRC.findid.I_Mem_Archer_Vic_2.more=3
RETURN 1
ENDIF
ELSEIF (<SRC.ACT.DISTANCE>>13) && (<SRC.tag.noeffect>=1)
SRC.SYSMESSAGE <SRC.ACT.name> is out from your range , you cant hit him.
SRC.ACTION=-1
SRC.tag.noeffect=0
SRC.ACTION=-1
SRC.findid.I_Mem_Archer_Vic_2.more=3
RETURN 1
ENDIF
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//------------------------------------------------- Fine Blocco Gittate ---------------------------------------------//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//----------------------------------- Blocco : Visualizzazione e Calcolo del Danno ---------------------------------//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//---- Inizio del Blocco di Assegnazione del Danno.
//- Controlli sullo Stato dell'Azione dell'Arciere:
IF (<SRC.findid.I_Mem_Archer_Vic_2.more1>=3) && (<SRC.tag.noeffect>=1)
//////////////////////////////////////////////////////////
//------------ Blocco : Miss Random [Fallimento] -------//
//////////////////////////////////////////////////////////
//--- Miss Random del Bersaglio basata sulla Tactics dell'Arciere (<SRC.Tactics>).
IF ((rand(1100)><SRC.Tactics>) && (rand(2)=1)
sound 569
SRC.ACT.effect 0,<SRC.findlayer(2).TDATA4>,15
SRC.SYSMESSAGE You dont hit <SRC.ACT.name>
//--- Visualizzazione dell'Azione di "Miss", con lancio della Freccia verso il Bersaglio.
IF (rand(2)=1)
SRC.tag.bps=<SRC.ACT.p>
IF (<SRC.findlayer(2).baseid>=i_crossbow_steel)
SRC.newitem i_dardo_di_metallo
ELSE
SRC.newitem i_xbolt
ENDIF
SRC.ACT.p=<SRC.tag.bps>
SRC.ACT.timer=120
SRC.ACT.attr=00002
SRC.ACT.update
ENDIF
//--- Elementi di "Fine" azione dell'Arciere sul fallimento "Miss".
SRC.tag.noeffect=0
SRC.ACTION=-1
RETURN 1
ENDIF
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//----------------------------- Blocco : Consumo Munzioni ----------------------------------------------------------//
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
IF (<SRC.FINDLAYER(2).TYPE>=T_WEAPON_BOW)
IF <SRC.findlayer(2).baseid>=i_bow_poison
SRC.CONSUME 1 i_freccia_avvelenata
ELSEIF <SRC.findlayer(2).baseid>=i_Blowpipe
SRC.CONSUME 1 i_Blowpipe_Dartx
ELSE
SRC.CONSUME i_arrow
ENDIF
ELSEIF (<SRC.FINDLAYER(2).TYPE>=T_WEAPON_XBOW)
IF (<SRC.findlayer(2).baseid>=i_crossbow_steel)
SRC.CONSUME 1 i_dardo_di_metallo
ELSE
SRC.CONSUME 1 i_xbolt
ENDIF
ENDIF
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//-------------------------------------------- Blocco : Calcolo del Danno Base --------------------------------------//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//--- In questo Blocco viene calcolato il Danno basato sulle Skill dell'Arciere e sull'Arma che Impugna.
SRC.ACT.effect 0,<SRC.findlayer(2).TDATA4>,15
LOCAL.Danno_Balestra_Heavy_Crossbow=((<SRC.Archery>/40)+(<SRC.Tactics>/100)+(<SRC.anatomy>/100)+(<SRC.dex>/20)+(<SRC.findlayer(2).dam>)+(<SRC.findlayer(2).morey>/70))
//////////////////////////////////////////////
//-------- Blocco : Danno Variabili Rand. --//
//////////////////////////////////////////////
//---- Blocco di Calcolo del Danno Variabile "Random", per una dinamicit� maggiore.
LOCAL.dannorandom={1 6}
LOCAL.Danno_Balestra_Heavy_Crossbow=(<EVAL <LOCAL.Danno_Balestra_Heavy_Crossbow>>)+(-15)+(<EVAL <LOCAL.dannorandom>>)
//////////////////////////////////////////////
//-------- Blocco : Bonus Distanza Rav. ----//
//////////////////////////////////////////////
//--- Bonus sulla Distanza Ravvicinata. Pi� vicino � il Bersaglio (Nei Tile di Gittata), maggiore � il danno che subisce.
//- (14+(<-SRC.ACT.distance>)) � l'Aumento progressivo del Danno con il diminuire della Distanza del Bersaglio.
LOCAL.Danno_Balestra_Heavy_Crossbow=(<EVAL <LOCAL.Danno_Balestra_Heavy_Crossbow>>)+(16)+(-<SRC.ACT.distance>)
//////////////////////////////////////////////
//-------- Blocco : Bonus Arciere Puro -----//
//////////////////////////////////////////////
//--- Bonus Aggiuntivo di 15 Punti (Danno) per gli Arcieri con Cap puro [120 Dex - 80 Str - 10 Int]
IF (<EVAL <SRC.TAG.EFFETTDEXCAP>>=150) && (<SRC.dex>>=150)
LOCAL.Danno_Balestra_Heavy_Crossbow=(<EVAL <LOCAL.Danno_Balestra_Heavy_Crossbow>>)+(15)
ENDIF
//////////////////////////////////////////////
//-------- Blocco : Danno Magico -----------//
//////////////////////////////////////////////
IF (<SRC.findlayer(2).attr>&attr_magic) (<SRC.FINDLAYER(2).TYPE>=T_WEAPON_XBOW) && (<SRC.FINDLAYER(2).DISPID>=i_crossbow_heavy)
LOCAL.Danno_Balestra_Heavy_Crossbow=((<EVAL <LOCAL.Danno_Balestra_Heavy_Crossbow>>)+(<EVAL <SRC.findlayer(2).morey>>/71))
ENDIF
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//----------------------------------------------- Blocco : Resistenza ----------------------------------------------//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//--- In questo Blocco sono presenti gli Script per il Calcolo delle Eventuali Resistenze presenti sul Bersaglio.
//--- Blocchi presenti:
//- Resistenza dell'Armatura del Bersaglio.
//- Resistenza della Bardatura del Cavallo da Guerra, nel caso sia l'Animale montato dal Bersaglio.
//////////////////////////////////////////////
//-------- Blocco : Resistenza Armatura-----//
//////////////////////////////////////////////
//--- Diminuzione del Danno Effettivo (<<EVAL <LOCAL.dannoBalestra_Heavy>>) in base all'Armatura del Bersaglio (<SRC.ACT.AR>/5).
IF ((<SRC.ACT.AR>/2)<<EVAL <LOCAL.Danno_Balestra_Heavy_Crossbow>>)
LOCAL.Danno_Balestra_Heavy_Crossbow=(<EVAL <LOCAL.Danno_Balestra_Heavy_Crossbow>>-(<SRC.ACT.AR>/2))
SRC.ACT.SYSMESSAGE You hurt from a dart of <SRC.name>
SRC.SYSMESSAGE You hurt <SRC.ACT.name>
ELSE
LOCAL.Danno_Balestra_Heavy_Crossbow={3 6}
SRC.ACT.SYSMESSAGE A dart of <SRC.name> hurt you lightly.
SRC.SYSMESSAGE You hit <SRC.ACT.name>
ENDIF
///////////////////////////////////////////////////
//-------- Blocco : Resistenza della Bardatura --//
///////////////////////////////////////////////////
IF (<SRC.ACT.findid.i_memory_bardatura>)
LOCAL.bardatura={1 5}
LOCAL.Danno_Balestra_Heavy_Crossbow=((<EVAL <LOCAL.Danno_Balestra_Heavy_Crossbow>>)+(-<EVAL <LOCAL.bardatura>>))
SRC.ACT.SYSMESSAGE The Horse Armor has cushioned the Strike.
ENDIF
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//----------------------------------------- Blocco Classe AR : Calcolo Malus Danno ---------------------------------------//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
IF <SRC.ACT.ISPLAYER>
IF (<SRC.ACT.findid.i_rune_protection>)
LOCAL.MOD_AC = (<SRC.ACT.AR>+(-<EVAL <SRC.ACT.findid.i_rune_protection.MOREY>/33>))
IF (<EVAL <LOCAL.MOD_AR>><17) && (RAND(2)=1)
LOCAL.Danno_Balestra_Heavy_Crossbow=(<EVAL <LOCAL.Danno_Balestra_Heavy_Crossbow>>+(<EVAL <LOCAL.Danno_Balestra_Heavy_Crossbow>>*2)/6)
SRC.SYSMESSAGE The dart critical hit <SRC.ACT.name>.
SRC.ACT.SYSMESSAGE The dart of <SRC.name> critical hit you.
ENDIF
ELSEIF (<SRC.ACT.AR><17)
LOCAL.dannoarco=(<EVAL <LOCAL.Danno_Balestra_Heavy_Crossbow>>+(<EVAL <LOCAL.Danno_Balestra_Heavy_Crossbow>>*2)/6)
SRC.SYSMESSAGE The dart critical hit <SRC.ACT.name>.
SRC.ACT.SYSMESSAGE The dart of <SRC.name> critical hit you.
ENDIF
ENDIF
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//------------------------------- Blocco : Visualizzazione del Danno Effettivo --------------------------------------//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//--- In questo Blocco viene Assegnazto e Visualizzato il Danno (<EVAL <LOCAL.Danno_Balestra_Heavy_Crossbow>>).
//- Avvine una distinzione sul Tipo di Bersaglio. Se il Beraglio utilizza una Magia "(<SRC.ACT.action>=Skill_Magery)"
//- avvine la visualizzazione tramite la funzione "f_visualizzazione_danno_arciere" che fa frizzare.
//- Nel caso contrario (cio� ogni altra Skill combattiva) avviene la visualizzazioen diretta in modo che non vi sia il
//- il blocco dell'azione (Debug del Warrior).
SRC.ACT.hits=(<SRC.ACT.hits>-<EVAL <LOCAL.Danno_Balestra_Heavy_Crossbow>>)
SRC.ACT.DAMAGE 1
IF (<SRC.ACT.action>=Skill_Magery) && (<SRC.ACT.npc>=0)
SRC.ACT.say @00026 <EVAL <LOCAL.Danno_Balestra_Heavy_Crossbow>>
IF (<SRC.ACT.FINDID.I_Memory_Staffe_Leggendarie>)
//- No Frizz se il Mago Equipaggia una Staff leggendaria
ELSE
IF (<SRC.ACT.ISPLAYER>)
SRC.ACT.ACTION=-1
ENDIF
ENDIF
SRC.ACT.CONSUME i_rune_paralyze
SRC.ACT.CONSUME i_rune_paralyze_field
ELSE
SRC.ACT.say @00026 <EVAL <LOCAL.Danno_Balestra_Heavy_Crossbow>>
SRC.ACT.CONSUME i_rune_paralyze
SRC.ACT.CONSUME i_rune_paralyze_field
ENDIF
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//------------------------------- Blocco : Usura Arco ---------------------------------------------------------------//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
IF (<SRC.ACT.ISPLAYER>) && (<SRC.findlayer(2).baseid>=i_Golden_Heavy_CrossBow)
SRC.E_Usura_Archi_gold
ELSE
SRC.E_Usura_Archi
ENDIF
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//------------------------------- Fine Blocco : Usura Arco ----------------------------------------------------------//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
SRC.ACTION=-1
sound 564
SRC.tag.noeffect=0
RETURN 1
ENDIF
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//--------------------------- Blocco : Velocit� di Azione della Balestra Heavy CrossBow ------------------------------//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//--- In questo blocco vi � il Calcolo della velocit� di Azione della Balestra Heavy CrossBow
//- La velocit� di Azione � basata sulla Dex dell'Arciere (<SRC.dex>) e su un Valore Fisso di Timer.
IF (!<SRC.findid.I_Mem_Archer_Vic_2>)
SRC.tag.noeffect=1
LOCAL.velocita_Balestra_Heavy_Crossbow=(((370+(-<SRC.dex>))/70)
IF (<EVAL <SRC.TAG.EFFETTDEXCAP>><110) //- Stat del Ranger, Inferiore ad esso � penalizzato molto.
LOCAL.velocita_Balestra_Heavy_Crossbow=(<EVAL <LOCAL.velocita_Balestra_Heavy_Crossbow>>+15)
ENDIF
SRC.tag.bav=<SRC.ACT.uid>
SRC.newitem I_Mem_Archer_Vic_2
SRC.ACT.equip
SRC.ACT.link=<SRC.tag.bav>
SRC.ACT.more=1
SRC.ACT.timer=<EVAL <LOCAL.velocita_Balestra_Heavy_Crossbow>>
SRC.ACTION=-1
RETURN 1
ENDIF
SRC.ACTION= -1
RETURN 1
ENDIF
ENDIF
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//------------------------------------------------- Fine Blocco : Archery ------------------------------------------------//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
There are worse ways to understand the sense of the word: no.
(This post was last modified: 01-31-2017 01:54 AM by massis87.)
|
|