@skillstart - Printable Version +- SphereCommunity (https://forum.spherecommunity.net) +-- Forum: Sphere 0.56d (/Forum-Sphere-0-56d) +--- Forum: General Help (/Forum-General-Help) +--- Thread: @skillstart (/Thread-skillstart) |
@skillstart - massis87 - 01-30-2017 10:39 PM hello, im fixing my combat sys, worked on 56b now im upgrading to 56c i have problems with this. Code: on=@skillstart with 56b src.act was the item i dclick on, now the act is the arrow, is that a bug or i have to change argument for find the npc/player? RE: @skillstart - massis87 - 01-31-2017 12:11 AM update ive put up a 56d of today, the skill fire but without controls, act dont exist. what i have to do? change trigger? RE: @skillstart - Coruja - 01-31-2017 01:01 AM there's no need to use general @SkillStart trigger that is called for all skills when you just need to call for 1 skill, so when you just need to check 1 skill you can use directly @Start (skill trigger) on this skill instead @SkillStart (on char). Or you can also use @HitTry because archery is a combat skill Code: [EVENTS e_char_event] anyway, maybe you don't even need this script to block the attack on items and invul chars because the internal combat engine on 56c/56d already does this RE: @skillstart - massis87 - 01-31-2017 01:45 AM 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? :| Spoiler (Click to View)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //--------------------------------------------------- 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 ------------------------------------------------// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// RE: @skillstart - darksun84 - 01-31-2017 02:48 AM In @HitTry, your src.act becomes src while src becomes the default object (so no src prefix) |