Negozi random

« Older   Newer »
 
  Share  
.
  1.     Top   Top
     
    .
    Avatar

    Signore dei criceti

    Group
    Administrator
    Posts
    12,972
    Location
    Isole del Dragone

    Status
    Negozio gnomico di armi ed armature

    OI

    "Gentile messere, la gilda dei tecnocrati č gestita da noi gnomi.
    Il concilio tecno-logico ha appena inventato una macchina che produce oggetti magici... si inserisce una normale spada da un lato ed esce dall'altro lato, migliorata nella forma ed incantata.
    ...Lei dice che diventeremo smodatamente ricchi?
    Bč, non proprio...il problema č che gli oggetti in uscita, per forma e proprietą, sono assolutamente casuali, per cui spesso i componenti materiali che la macchina consuma per creare l'incantamento costano pił dell'oggetto in uscita.
    Si, dice bene messere...questo non ha reso felici gli addetti alle vendite, ma non preoccupatevi, il prossimo modello sarą senza dubbio meglio.
    Intanto vuole vedere la nostra produzione di oggi?
    "

    :35:

    Necessario almeno CEP 1.68
    Dovrebbe funzionare anche con CEP 2, ma non ho testato.

    Come avrete intuito, il negozio gnomico produce oggetti casuali per forma, colore, numero, potenza e tipo di incantamento.
    Il negozio funziona, in gioco, esattamente come descritto sopra: in tavolozza ci sono tutti gli oggetti standard, che vengono selezionati, modificati randomicamente per forma e colore e successivamente incantati, anche qui in modo randomico, ma dipendente, in generale, comunque dal livello del PG.
    Anche il nome degli oggetti viene creato al momento, in base agli incantamenti ricevuti.
    gli step di livello in questo negozio sono 1/6 - 7/12 - !3/18 - 19+

    Il negozio produce armi, armature, elmi e scudi.
    Attivando alcune righe aggiuntive puņ produrre anche armi da lancio e munizioni. (vedi sotto)

    Il negozio si resetta ogni 24 ore, allo scadere della mezzanotte, e ricrea un nuovo set di oggetti.

    L'erf contiene il vendor, il negozio, un barile, un attivatore ed i 97 oggetti usati come base per creare le loro controparti incantate
    Gli oggetti, una volta importato l'erf, si trovano, in tavolozza, tutti nei rispettivi "custom/personalizzato/1"
    il barile non č cliccabile e serve al sistema come contenitore di passaggio, per fare in modo che, nel negozio, gli oggetti risultino sempre ordinati per tipo e senza spazi vuoti.


    ISTRUZIONI

    Importare l'erf
    Nel negozio mettere il vendor, il negozio ed il barile
    mettere l'attivatore a coprire tutta l'area, oppure, se in esterno attorno al negozio, con un pņ di spazio utile.


    BONUS

    Alle righe 479 e 653 c'č il simbolo /* che serve a disattivare una parte di script: cancellando i due simboli la riattiverete.
    Quella parte di codice serve ad aggiungere al negozio anche le armi da lancio ed i proiettili, tuttavia questi oggetti non vengono creati random come gli altri, ma presi dalla tavolozza standard. Anche questi, comunque, vengono selezionati random in base al livello del PG.
    Decidedete voi se li volete nel negozio, oppure no.


    Nello script c'č anche questa riga

    if(GetLocalInt(OBJECT_SELF,"market")){HD=1;}

    Per fare funzionare la riga in un negozio specifico, quindi, dovrete aggiungere, nelle variabili dell'attivatore

    market - int - 1

    Cosi il negozio terrą conto di un livello fisso (di default 1) e non pił del livello del pg
    Per variare quel livello dovrete cambiare il numero in {HD=1;}
    Il nuovo livello impostato, quindi, sarą valido per tutti i negozi con la int "market", mentre tutti gli altri continueranno a calcolare il livello del PG.

    Questo puņ essere utile in caso desideriate avere negozi di alto livello solo in determinati posti.
    Per esempio, in una cittą, le bancarelle del mercato all'aperto potrebbero avere oggetti random di valore limitato, mentre il negozio di lusso avrebbe quelle migliori, che salgono anche di livello con il PG.


    SCREENSHOTS

    Weapon-store-0001Weapon-store-0002
    e1e2
    s1s2
    w1w2


    LO SCRIPT
    se volete farvi un'idea di come funziona il meccanismo gnomico

    CODICE
    ///////////////////
       // Random Store ///
      // by magobargle //            
     ///////////////////
    ///// WEAPONS /////          
    ///////////////////

    #include "x2_inc_itemprop"

    void randomize(object oStore, object oPC)
    {
    object oBox=GetNearestObjectByTag("MB_box_weapon"),
          oItemA,oItemB,oItemC,oItemD,oItemE,oItemF,oItemG,oItemX,oItemY,
          oArmA,oArmB,oArmC,oArmD,oArmE,oArmF,oArmG,oArmY,
          oElm,oElmA,oElmB,oElmC,oElmD,oElmE,oElmF,
          oShield;
      int A,B,D,a,b,tipo,i,n,na,v,s,sh,shx,al,HD=GetHitDice(oPC),
          nn=d8()+6, ii=7+d10(), vv=d8()+4, ss=d4()+4,
          D8=d4()+4, D12=d8()+4;
    string S,Se,T,P,G,cTag,RR,TAG="mb_ginko",
          ABY,SKY,REG,LUM,LIB,DRK,SPD,TRU,SPL,
          sh1,sh2,sh3,sh4,sh5;

    if(GetLocalInt(OBJECT_SELF,"market")){HD=1;} // i mercati all'aperto sono sforniti rispetto ai negozi

       //////////
      // ARMI //
     //////////

    while(i<ii)
        {
         if (HD<=6)           {D=Random(65)+1;  na=9;}
    else if((HD>6)&&(HD<=12)) {D=Random(85)+1;  na=8;}
    else if((HD>12)&&(HD<=18)){D=Random(95)+1;  na=7;}
    else                      {D=Random(100)+1; na=6;}

        i++;

        int Dinc=d10(),         // incantesimo
            tipo=Random(29)+1; //  armi

            if (D<35)           {B=3;}
       else if((D>=35)&&(D<60)) {B=4;}
       else if((D>=60)&&(D<80)) {B=5;}
       else if((D>=80)&&(D<90)) {B=6;}
       else if((D>=90)&&(D<96)) {B=7;}
       else if (D>=96)          {B=8;}

            oItemA=CreateItemOnObject("mb_rw_"+IntToString(tipo),oBox,1,TAG);
            IPUpgradeWeaponEnhancementBonus(oItemA,B);   // bonus potenziamento

          if(d10()+1>na)
            {
           int DT=Random(9)+1, DTx; // tipo di danno
            if(DT==1){DTx=IP_CONST_DAMAGETYPE_ACID;       S=" dissolvente";}
       else if(DT==2){DTx=IP_CONST_DAMAGETYPE_COLD;       S=" invernale";}
       else if(DT==3){DTx=IP_CONST_DAMAGETYPE_DIVINE;     S=" celestiale";}
       else if(DT==4){DTx=IP_CONST_DAMAGETYPE_ELECTRICAL; S=" scintillante";}
       else if(DT==5){DTx=IP_CONST_DAMAGETYPE_FIRE;       S=" rovente";}
       else if(DT==6){DTx=IP_CONST_DAMAGETYPE_MAGICAL;    S=" ammaliante";}
       else if(DT==7){DTx=IP_CONST_DAMAGETYPE_NEGATIVE;   S=" fatale";}
       else if(DT==8){DTx=IP_CONST_DAMAGETYPE_POSITIVE;   S=" energetico";}
       else if(DT==9){DTx=IP_CONST_DAMAGETYPE_SONIC;      S=" musicale";}

            int DD=d10(), DDx;  // quantita' di danno
            if((DD>=1)&&(DD<4)) {DDx=IP_CONST_DAMAGEBONUS_1d4;}
       else if((DD>=4)&&(DD<7)) {DDx=IP_CONST_DAMAGEBONUS_1d6;}
       else if((DD>=7)&&(DD<9)) {DDx=IP_CONST_DAMAGEBONUS_1d8;}
       else if (DD>=9)          {DDx=IP_CONST_DAMAGEBONUS_1d10;}

                IPSafeAddItemProperty(oItemA,ItemPropertyDamageBonus(DTx,DDx)); // bonus danno
                cTag="<c}’>";

          int D10=d10(), NU;
          if (D10<7)            {NU=IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY;}
     else if((D10>=7)&&(D10<10)){NU=IP_CONST_CASTSPELL_NUMUSES_2_USES_PER_DAY;}
     else if (D10==10)          {NU=IP_CONST_CASTSPELL_NUMUSES_3_USES_PER_DAY;}

           if(d10()>na)
             {
             int Cont=IPGetIsBludgeoningWeapon(oItemA);
             if(!Cont) // affilato
               {
               IPSafeAddItemProperty(oItemA,ItemPropertyKeen()); T=" tagliente"; cTag="<c’’>";
               }
            else    // critici massicci
               {
               IPSafeAddItemProperty(oItemA,ItemPropertyMassiveCritical(DDx));T=" frantumante"; cTag="<c’’>";
               }
               if(d10()>na) // danno Vs razza
                 {
                 int IPDBVR=Random(26);  if(IPDBVR==13){IPDBVR=d12();}
                 IPSafeAddItemProperty(oItemA,ItemPropertyDamageBonusVsRace(IPDBVR,DTx,DDx)); P=" della punizione"; cTag="<c’‘>";
                 if(d10()>na)
                   {
                   if((Dinc==1)||(Dinc==2)) // incantesimi
                     {
                     IPSafeAddItemProperty(oItemA,ItemPropertyCastSpell(IP_CONST_CASTSPELL_FIREBALL_10,NU)); G=" esplosiva"; cTag="<c’>";
                     }
              else if((Dinc==3)||(Dinc==4))
                     {
                     IPSafeAddItemProperty(oItemA,ItemPropertyCastSpell(IP_CONST_CASTSPELL_LIGHTNING_BOLT_10,NU)); G=" tempestosa"; cTag="<c’>";
                     }
              else if((Dinc==5)||(Dinc==6)||(Dinc==7))
                     {
                     IPSafeAddItemProperty(oItemA,ItemPropertyCastSpell(IP_CONST_CASTSPELL_MAGIC_MISSILE_9,NU)); G=" infallibile"; cTag="<c’>";
                     }
              else if(Dinc==8)
                     {
                     IPSafeAddItemProperty(oItemA,ItemPropertyCastSpell(IP_CONST_CASTSPELL_ISAACS_LESSER_MISSILE_STORM_13,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY)); G=" feroce"; cTag="<c’>";
                     }
              else if(Dinc==9)
                     {
                     IPSafeAddItemProperty(oItemA,ItemPropertyCastSpell(IP_CONST_CASTSPELL_PRISMATIC_SPRAY_13,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY)); G=" crudele"; cTag="<c’>";
                     }
                else if(Dinc==10)
                     {
                     IPSafeAddItemProperty(oItemA,ItemPropertyCastSpell(IP_CONST_CASTSPELL_CONE_OF_COLD_15,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY)); G=" glaciale"; cTag="<c’>";
                     }
                   }
                else
                   {
                   G=""; cTag="<c’‘>";
                   }
                 }
             else
                 {
                 P=""; cTag="<c’’>";
                 }
             }
          else
             {
             T=""; cTag="<c›’>";
             }
          }
      else{S=""; cTag="";}

             if((tipo==14)||(tipo==25)||(tipo==27))   {A=1;}
        else if((tipo==23)||(tipo==24)||(tipo==26))   {A=d3();}
        else if((tipo==6) ||(tipo==7) ||(tipo==8)||
                (tipo==12)||(tipo==13)||(tipo==15)||
                (tipo==16)||(tipo==17)||(tipo==18)||
                (tipo==20)||(tipo==21)||(tipo==22)||
                (tipo==28)||(tipo==29))               {A=d4();}
        else if((tipo==3) ||(tipo=4))                 {A=Random(5)+1;}
        else if((tipo==1) ||(tipo==5)||(tipo==9)||
                (tipo==10)||(tipo==11))               {A=d6();}
        else if (tipo==19)                            {A=Random(7)+1;}
        else if (tipo==2)                             {A=Random(9)+1;}

        oItemB=CopyItemAndModify(oItemA,ITEM_APPR_TYPE_WEAPON_MODEL,ITEM_APPR_WEAPON_MODEL_TOP,A);     // modifica & colora
        DestroyObject(oItemA);
        oItemC=CopyItemAndModify(oItemB,ITEM_APPR_TYPE_WEAPON_MODEL,ITEM_APPR_WEAPON_MODEL_MIDDLE,A);
        DestroyObject(oItemB);
        oItemD=CopyItemAndModify(oItemC,ITEM_APPR_TYPE_WEAPON_MODEL,ITEM_APPR_WEAPON_MODEL_BOTTOM,A);
        DestroyObject(oItemC);
        oItemE=CopyItemAndModify(oItemD,ITEM_APPR_TYPE_WEAPON_COLOR,ITEM_APPR_WEAPON_COLOR_TOP,d4());
        DestroyObject(oItemD);
        oItemF=CopyItemAndModify(oItemE,ITEM_APPR_TYPE_WEAPON_COLOR,ITEM_APPR_WEAPON_COLOR_MIDDLE,d4());
        DestroyObject(oItemE);
        oItemG=CopyItemAndModify(oItemF,ITEM_APPR_TYPE_WEAPON_COLOR,ITEM_APPR_WEAPON_COLOR_BOTTOM,d4());
        DestroyObject(oItemF);
        oItemX=CopyItem(oItemG,oStore);
        DestroyObject(oItemG);

             SetDescription(oItemX,GetDescription(oItemX,FALSE,TRUE)+"\n\nQuesta "+GetName(oItemX)+" proviene da:\n"+GetName(GetArea(oPC)),TRUE);
             SetName(oItemX,GetName(oItemX)+" +"+IntToString(B)+cTag+S+T+P+G+"</c>");
             S=""; T=""; P=""; G=""; cTag="";
        }

     /////////////////////
    ///// ARMATURE //////
    /////////////////////

       while(n<nn)
            {
        int num=Random(9), BB=0, ACB, Dacb;
     string nNum=IntToString(num),
            Type,Gend,
            B0,B1,B2,B3,B4,B5,B6,col;

         if (HD<=6)           {Dacb=d10()+2;}
    else if((HD>6)&&(HD<=12)) {Dacb=d10()+4;}
    else if((HD>12)&&(HD<=18)){Dacb=d10()+6;}
    else                      {Dacb=d10()+8;}

            n++;

         if(GetGender(oPC)==GENDER_MALE){Gend="";} else{Gend="f";}

            oArmA=CreateItemOnObject("mb_ra_0"+nNum+Gend,oBox,1,TAG);

            if (Dacb<5)              {ACB=1;}
       else if((Dacb>=5)&&(Dacb<8))  {ACB=2;}
       else if((Dacb>=8)&&(Dacb<10)) {ACB=3;}
       else if((Dacb>=10)&&(Dacb<12)){ACB=4;}
       else if((Dacb>=12)&&(Dacb<14)){ACB=5;}
       else if((Dacb>=14)&&(Dacb<16)){ACB=6;}
       else if((Dacb>=16)&&(Dacb<18)){ACB=7;}
       else if (Dacb==18)            {ACB=8;}

                    IPSafeAddItemProperty(oArmA,ItemPropertyACBonus(ACB));                     B0="+"+IntToString(ACB)+" ";
       if (d10()>na){IPSafeAddItemProperty(oArmA,ItemPropertyDarkvision());                    B1="notturna "; BB++;}
       if (d10()>na){IPSafeAddItemProperty(oArmA,ItemPropertyImprovedEvasion());               B2="evasiva "; BB++;}
       if (d10()>na){IPSafeAddItemProperty(oArmA,ItemPropertyFreeAction());                    B3="della liberta' "; BB++;}
       if (d10()>na){IPSafeAddItemProperty(oArmA,ItemPropertyHaste());                         B4="galoppante "; BB++;}
       if (d10()>na){IPSafeAddItemProperty(oArmA,ItemPropertyBonusSpellResistance(Random(6))); B5="spaccamaghi "; BB++;}
       if (d10()>na){IPSafeAddItemProperty(oArmA,ItemPropertyImmunityMisc(Random(9)));         B6="immunizzante "; BB++;}

               if(BB==0){col="";}
          else if(BB==1){col="<c’’>";}
          else if(BB==2){col="<c’>";}
          else if(BB==3){col="<c’’>";}
          else if(BB==4){col="<c’„>";}
          else if(BB==5){col="<c’>";}

            if(num==0){Type="Cotta di panno ";}
       else if(num==1){Type="Cotta di pelle ";}
       else if(num==2){Type="Corazza di cuoio ";}
       else if(num==3){Type="Corazza di pelliccia ";}
       else if(num==4){Type="Corazza di maglia ";}
       else if(num==5){Type="Corazza di bande ";}
       else if(num==6){Type="Corazza di piastre ";}
       else if(num==7){Type="Mezza armatura ";}
       else if(num==8){Type="Armatura completa ";}

            oArmB=CopyItemAndModify(oArmA,ITEM_APPR_TYPE_ARMOR_COLOR,ITEM_APPR_ARMOR_COLOR_CLOTH1,Random(176));
            DestroyObject(oArmA);
            oArmC=CopyItemAndModify(oArmB,ITEM_APPR_TYPE_ARMOR_COLOR,ITEM_APPR_ARMOR_COLOR_CLOTH2,Random(176));
            DestroyObject(oArmB);
            oArmD=CopyItemAndModify(oArmC,ITEM_APPR_TYPE_ARMOR_COLOR,ITEM_APPR_ARMOR_COLOR_LEATHER1,Random(176));
            DestroyObject(oArmC);
            oArmE=CopyItemAndModify(oArmD,ITEM_APPR_TYPE_ARMOR_COLOR,ITEM_APPR_ARMOR_COLOR_LEATHER2,Random(176));
            DestroyObject(oArmD);
            oArmF=CopyItemAndModify(oArmE,ITEM_APPR_TYPE_ARMOR_COLOR,ITEM_APPR_ARMOR_COLOR_METAL1,Random(176));
            DestroyObject(oArmE);
            oArmG=CopyItemAndModify(oArmF,ITEM_APPR_TYPE_ARMOR_COLOR,ITEM_APPR_ARMOR_COLOR_METAL2,Random(176));
            DestroyObject(oArmF);
            oArmY=CopyItem(oArmG,oStore);
            DestroyObject(oArmG);

            SetName(oArmY,Type+B0+col+B1+B2+B3+B4+B5+B6+"</c>");
            SetDescription(oArmY,GetDescription(oArmY,FALSE,TRUE)+"\n\nQuesta "+Type+"proviene da:\n"+GetName(GetArea(oPC)),TRUE);
            BB=0; B0=""; B1=""; B2=""; B3=""; B4=""; B5=""; B6=""; col="";
            }

       //////////
      // ELMI //
     //////////

      while(v<vv)
           {
            v++;
        int CRL,
            CRF=d2();
     string color,gemma;

           oElm=CreateItemOnObject("mb_re_0"+IntToString(Random(29)),oBox,1,TAG);

            int DE=d100(), CA;
            if (DE<50)           {CA=3;}
       else if((DE>=50)&&(DE<80)){CA=4;}
       else if (DE>=80)          {CA=5;}

            if(d8()>=5)  // bonus ca contro tipo di danno
              {
                 CRL++;
             int abs=d3(), DmgT;
              if(abs==1){DmgT=IP_CONST_DAMAGETYPE_BLUDGEONING; Se="elastico ";}
         else if(abs==2){DmgT=IP_CONST_DAMAGETYPE_PIERCING;    Se="piegapunte ";}
         else if(abs==3){DmgT=IP_CONST_DAMAGETYPE_SLASHING;    Se="smussalame ";}

              IPSafeAddItemProperty(oElm,ItemPropertyACBonusVsDmgType(DmgT,CA),0.0);
              }
              else{Se="";}

            if(d8()>=7)  // bonus char
              {
                 CRL++;
             int D8=d8(), IPAB, Aby=Random(6);

              if (D8<=5)        {IPAB=1;}
         else if((D8>6)&&(D8<8)){IPAB=2;}
         else if (D8==8)        {IPAB=3;}

              if(Aby==0){ABY="forzuto ";}
         else if(Aby==1){ABY="agile ";}
         else if(Aby==2){ABY="resistente ";}
         else if(Aby==3){ABY="geniale ";}
         else if(Aby==4){ABY="savio ";}
         else if(Aby==5){ABY="seducente ";}

              IPSafeAddItemProperty(oElm,ItemPropertyAbilityBonus(Aby,IPAB),0.0);
              }

            if(d8()==8)  // skill
              {
                    CRL++;
                int Skill=Random(28);
                 if(Skill==0){SKY="animalesco ";}
            else if(Skill==1){SKY="rilassante ";}
            else if(Skill==2){SKY="disarmante ";}
            else if(Skill==3){SKY="disciplinato ";}
            else if(Skill==4){SKY="curativo ";}
            else if(Skill==5){SKY="occultante ";}
            else if(Skill==6){SKY="orecchiuto ";}
            else if(Skill==7){SKY="rivelatore ";}
            else if(Skill==8){SKY="felpato ";}
            else if(Skill==9){SKY="scassinatore ";}
            else if(Skill==10){SKY="difensivo ";}
            else if(Skill==11){SKY="performante ";}
            else if(Skill==12){SKY="persuasivo ";}
            else if(Skill==13){SKY="malandrino ";}
            else if(Skill==14){SKY="esploratore ";}
            else if(Skill==15){SKY="affascinante ";}
            else if(Skill==16){SKY="bastardo ";}
            else if(Skill==17){SKY="rivelatore ";}
            else if(Skill==18){SKY="istigatore ";}
            else if(Skill==19){SKY="miritescente ";}
            else if(Skill==20){SKY="mercanteggiatore ";}
            else if(Skill==21){SKY="sfuggente ";}
            else if(Skill==22){SKY="tecnologico ";}
            else if(Skill==23){SKY="imbroglione ";}
            else if(Skill==24){SKY="minatorio ";}
            else if(Skill==25){SKY="ferraiolo ";}
            else if(Skill==26){SKY="ferraiolo ";}
            else if(Skill==27){SKY="cavallerizzo ";}

            IPSafeAddItemProperty(oElm,ItemPropertySkillBonus(Skill,d10()));
            }

             if(d10()==10)  // rigenerazione
               {
               CRL++;
               IPSafeAddItemProperty(oElm,ItemPropertyRegeneration(d3()));
               REG="ristoratore ";
               }

             if(d10()==10)  // luce
               {
               CRL++;
               IPSafeAddItemProperty(oElm,ItemPropertyLight(d4(),Random(8)));
               LUM="luminifero ";
               }

             if(d10()==10)  // liberta'
               {
               CRL++;
               IPSafeAddItemProperty(oElm,ItemPropertyFreeAction());
               LIB="movimentato ";
               }

             if(d10()==10)  // scurovisione
               {
               CRL++;
               IPSafeAddItemProperty(oElm,ItemPropertyDarkvision());
               DRK="notturno ";
               }

             if(d10()==10)  // velocita'
               {
               CRL++;
               IPSafeAddItemProperty(oElm,ItemPropertyHaste());
               SPD="scattante ";
               }

            if(d10()==10)  // visione del vero
               {
               CRL++;
               IPSafeAddItemProperty(oElm,ItemPropertyTrueSeeing());
               TRU="occhialuto ";
               }

            if(d8(2)==16) // cast spell
               {
               CRL++;
               int Rspell=Random(410);
               if ((Rspell==330)||(Rspell==331)||(Rspell==332)||(Rspell==333)||(Rspell==334)){Rspell=Random(330);}
               IPSafeAddItemProperty(oElm,ItemPropertyCastSpell(Rspell,7+d3()));
               SPL="fantasmagorico ";
               }

               if (CRL==0)           {color="";}
          else if((CRL==1)||(CRL==2)){color="<c’’>";}
          else if((CRL==3)||(CRL==4)){color="<c’>";}
          else if((CRL==5)||(CRL==6)){color="<c’’>";}
          else if((CRL==7)||(CRL==8)){color="<c’„>";}
          else if (CRL==9)           {color="<c’>";}
          else if (CRL==10)          {color="<c’’>";}

         oElmA=IPDyeArmor(oElm,ITEM_APPR_ARMOR_COLOR_CLOTH1,Random(64));
         oElmB=IPDyeArmor(oElmA,ITEM_APPR_ARMOR_COLOR_CLOTH2,Random(64));
         oElmC=IPDyeArmor(oElmB,ITEM_APPR_ARMOR_COLOR_LEATHER1,Random(64));
         oElmD=IPDyeArmor(oElmC,ITEM_APPR_ARMOR_COLOR_LEATHER2,Random(64));
         oElmE=IPDyeArmor(oElmD,ITEM_APPR_ARMOR_COLOR_METAL1,Random(64));
         oElmF=IPDyeArmor(oElmE,ITEM_APPR_ARMOR_COLOR_METAL2,Random(64));

             oItemY=CopyItem(oElmF,oStore);
             DestroyObject(oElmF);

             SetName(oItemY,"Elmo "+color+Se+ABY+SKY+REG+LUM+LIB+DRK+SPD+TRU+SPL);
             SetDescription(oItemY,GetDescription(oItemY,FALSE,TRUE)+"\n\nQuesto elmo proviene da:\n"+GetName(GetArea(oPC)),TRUE);
             ABY="";SKY="";REG="";LUM="";LIB="";DRK="";SPD="";TRU="";SPL="";color="";
           }

       ///////////
      // SCUDI //
     ///////////

      while(s<ss)
            {
         if (HD<=6)           {sh=0; shx=9;}
    else if((HD>6)&&(HD<=12)) {sh=1; shx=8;}
    else if((HD>12)&&(HD<=18)){sh=2; shx=7;}
    else                      {sh=3; shx=6;}

            s++;
            int D6=d6(),ShldCA,CLRS=0;
            string CLRs;

                 if (D6<4)           {ShldCA=1+sh;}
            else if((D6==4)||(D6==5)){ShldCA=2+sh;}
            else if (D6==6)          {ShldCA=3+sh;}

            oShield=CreateItemOnObject("mb_shld_"+IntToString(d20()),oBox,1);
            IPSafeAddItemProperty(oShield,ItemPropertyACBonus(ShldCA));   //CA bonus

            if(d10()>shx)
              {
              IPSafeAddItemProperty(oShield,ItemPropertyDamageReduction(Random(7),d2()) );   //riduzione danno
              sh1=" assorbente"; CLRS++;
              }

            if(d10()>shx)
              {
              int exc=Random(14);
              if ((exc==3)||(exc==4)){exc=Random(3);}
              IPSafeAddItemProperty(oShield,ItemPropertyDamageResistance(exc,d2()));   //resistenza danno
              sh2=" resistente"; CLRS++;
              }

            if(d10()>shx)
              {
              IPSafeAddItemProperty(oShield,ItemPropertyBonusSpellResistance(Random(6)));  //resistenza magia
              sh3=" riflettente"; CLRS++;
              }

            if(d10()>shx)
              {
              IPSafeAddItemProperty(oShield,ItemPropertyBonusSavingThrow(d3(),d4()));   // TS
              sh4=" salvifico"; CLRS++;
              }

            if(d10()>shx)
              {
              IPSafeAddItemProperty(oShield,ItemPropertyACBonusVsRace(Random(26),ShldCA+d3()));   // AC vs
              sh5=" razzista"; CLRS++;
              }

               if(CLRS==0){CLRs="";}
          else if(CLRS==1){CLRs="<c’’>";}
          else if(CLRS==2){CLRs="<c’>";}
          else if(CLRS==3){CLRs="<c’’>";}
          else if(CLRS==4){CLRs="<c’„>";}
          else if(CLRS==5){CLRs="<c’>";}

             SetName(oShield,"Scudo +"+IntToString(ShldCA)+CLRs+sh1+sh2+sh3+sh4+sh5);
             SetDescription(oShield,GetDescription(oShield,FALSE,TRUE)+"\nQuesto uno scudo magico proviene da: "+GetName(GetArea(oPC)),TRUE);
             CLRS=0; CLRs=""; sh1=""; sh2=""; sh3=""; sh4=""; sh5="";
             CopyItem(oShield,oStore);
             DestroyObject(oShield);
          }

       ////////////////////
      // ARMI DA LANCIO //
     ////////////////////

    /*            // cancellare il simbolo /* per attivare armi da lancio e munizioni
                 // sia qui che alla riga 653

         if (HD<=6)           {al=51;}
    else if((HD>6)&&(HD<=12)) {al=61;}
    else if((HD>12)&&(HD<=18)){al=71;}
    else                      {al=81;}

    for(a=0; a<D8; a++)
     {
      switch(Random(al)+1)
       {
       case 1:   RR="nw_wbwmsl001"; break;
       case 2:   RR="nw_wbwmsh002"; break;
       case 3:   RR="nw_wbwmxl002"; break;
       case 4:   RR="nw_wbwmxh002"; break;
       case 5:   RR="nw_wbwmln002"; break;
       case 6:   RR="nw_wbwmsl009"; break;
       case 7:   RR="nw_wbwmsh008"; break;
       case 8:   RR="nw_wbwmxl008"; break;
       case 9:   RR="nw_wbwmxh008"; break;
       case 10:  RR="nw_wbwmln008"; break;
       case 11:  RR="nw_wbwmsh010"; break;
       case 12:  RR="nw_wbwmln010"; break;
       case 13:  RR="nw_wbwmsl010"; break;
       case 14:  RR="nw_wbwmsh009"; break;
       case 15:  RR="nw_wbwmxl009"; break;
       case 16:  RR="nw_wbwmxh009"; break;
       case 17:  RR="nw_wbwmln009"; break;
       case 18:  RR="nw_wbwmsl005"; break;
       case 19:  RR="nw_wbwmxh005"; break;
       case 20:  RR="nw_wbwmxl005"; break;
       case 21:  RR="nw_wbwmsh011"; break;
       case 22:  RR="nw_wbwmsh003"; break;
       case 23:  RR="nw_wbwmln011"; break;
       case 24:  RR="x0_wbwmsl001"; break;
       case 25:  RR="x0_wbwmsh001"; break;
       case 26:  RR="x0_wbwmxl001"; break;
       case 27:  RR="x0_wbwmxh001"; break;
       case 28:  RR="x0_wbwmln001"; break;
       case 29:  RR="nw_wbwmln011"; break;
       case 30:  RR="nw_wbwmsh006"; break;
       case 31:  RR="nw_wbwmsl003"; break;
       case 32:  RR="x0_wbwmsl002"; break;
       case 33:  RR="x0_wbwmxl002"; break;
       case 34:  RR="nw_wbwmxh003"; break;
       case 35:  RR="x0_wbwmxh002"; break;
       case 36:  RR="x0_wbwmln002"; break;
       case 37:  RR="x0_wbwmsh002"; break;
       case 38:  RR="nw_wbwmsh012"; break;
       case 39:  RR="nw_wbwmln012"; break;
       case 40:  RR="nw_wbwmxl003"; break;
       case 41:  RR="nw_wbwmxl007"; break;
       case 42:  RR="nw_wbwmsh007"; break;
       case 43:  RR="x0_wbwmsh003"; break;
       case 44:  RR="x0_wbwmln003"; break;
       case 45:  RR="nw_wbwmxh004"; break;
       case 46:  RR="nw_wbwmln007"; break;
       case 47:  RR="nw_wbwmxh007"; break;
       case 48:  RR="x0_wbwmsh004"; break;
       case 49:  RR="x0_wbwmln004"; break;
       case 50:  RR="nw_wbwmxl004"; break;
       case 51:  RR="nw_wbwmsl007"; break;
       case 52:  RR="nw_wbwmln006"; break;
       case 53:  RR="x2_wbwmsl003"; break;
       case 54:  RR="x2_wbwmsh005"; break;
       case 55:  RR="x2_wbwmxl003"; break;
       case 56:  RR="x2_wbwmxh003"; break;
       case 57:  RR="x2_wbwmln005"; break;
       case 58:  RR="nw_wbwmsl008"; break;
       case 59:  RR="nw_wbwmsh005"; break;
       case 60:  RR="nw_wbwmsl006"; break;
       case 61:  RR="nw_wbwmln005"; break;
       case 62:  RR="x2_wbwmsl004"; break;
       case 63:  RR="x2_wbwmsh006"; break;
       case 64:  RR="x2_wbwmxh004"; break;
       case 65:  RR="x2_wbwmxl004"; break;
       case 66:  RR="x2_wbwmln006"; break;
       case 67:  RR="nw_wbwmxl006"; break;
       case 68:  RR="nw_wbwmxh006"; break;
       case 69:  RR="nw_wbwmsh004"; break;
       case 70:  RR="nw_wbwmln003"; break;
       case 71:  RR="nw_wbwmsl004"; break;
       case 72:  RR="x2_wbwmsh007"; break;
       case 73:  RR="x2_wbwmln007"; break;
       case 74:  RR="x2_wbwmln010"; break;
       case 75:  RR="x2_wbwmsh008"; break;
       case 76:  RR="x2_wbwmln008"; break;
       case 77:  RR="Flx2_wbwmsl005"; break;
       case 78:  RR="x2_wbwmxl005"; break;
       case 79:  RR="x2_wbwmxh005"; break;
       case 80:  RR="x2_wbwmln009"; break;
       case 81:  RR="x2_wbwmsh009"; break;
       }
     CreateItemOnObject(RR,oStore,1);
     }

       ///////////////
      // MUNIZIONI //
     ///////////////

    for(b=0; b<D12; b++)
     {
      switch(Random(39)+1)
       {
       case 1:   RR="nw_wammar009"; break;
       case 2:   RR="nw_wammar010"; break;
       case 3:   RR="nw_wammar011"; break;
       case 4:   RR="x2_wammar012"; break;
       case 5:   RR="x2_wammar013"; break;
       case 6:   RR="x2_wammar001"; break;
       case 7:   RR="nw_wammar008"; break;
       case 8:   RR="nw_wammar007"; break;
       case 9:   RR="nw_wammar003"; break;
       case 10:  RR="nw_wammar001"; break;
       case 11:  RR="nw_wammar002"; break;
       case 12:  RR="nw_wammar005"; break;
       case 13:  RR="nw_wammar006"; break;
       case 14:  RR="nw_wammar004"; break;
       case 15:  RR="nw_wammbo008"; break;
       case 16:  RR="nw_wammbo009"; break;
       case 17:  RR="nw_wammbo010"; break;
       case 18:  RR="x2_wammbo011"; break;
       case 19:  RR="x2_wammbo012"; break;
       case 20:  RR="x2_wammbo001"; break;
       case 21:  RR="nw_wammbo007"; break;
       case 22:  RR="nw_wammbo006"; break;
       case 23:  RR="nw_wammbo002"; break;
       case 24:  RR="nw_wammbo001"; break;
       case 25:  RR="nw_wammbo005"; break;
       case 26:  RR="nw_wammbo003"; break;
       case 27:  RR="nw_wammbo004"; break;
       case 28:  RR="nw_wammbu008"; break;
       case 29:  RR="nw_wammbu009"; break;
       case 30:  RR="nw_wammbu010"; break;
       case 31:  RR="x2_wammbu009"; break;
       case 32:  RR="x2_wammbu010"; break;
       case 33:  RR="nw_wammbu003"; break;
       case 34:  RR="nw_wammbu001"; break;
       case 35:  RR="nw_wammbu005"; break;
       case 36:  RR="nw_wammbu006"; break;
       case 37:  RR="nw_wammbu007"; break;
       case 38:  RR="nw_wammbu002"; break;
       case 39:  RR="nw_wammbu004"; break;
       }
     CreateItemOnObject(RR,oStore,99);
     }

    */            // cancellare il simbolo */  per attivare armi da lancio e munizioni
                 // sia qui che alla riga 479

    }

    void main()
    {

    object oPC=GetEnteringObject(),
          oStore=GetNearestObjectByTag("MB_store_weapon"),
          oItem=GetFirstItemInInventory(oStore);
      int DAY=GetLocalInt(oStore,"DAY");

    if(!GetIsPC(oPC)) return;

    if(DAY!=GetCalendarDay())     //  (1==1)  test
     {
     SetLocalInt(oStore,"DAY",GetCalendarDay());

     while(oItem != OBJECT_INVALID)
          {
          DestroyObject(oItem);
          oItem=GetNextItemInInventory(oStore);
          }
     DelayCommand(1.5,randomize(oStore,oPC));
     }
    }



    /*  RESREF ARMI DA LANCIO IN ORDINE DI PREZZO + MUNIZIONI

    Fionda +1
    nw_wbwmsl001
    406

    Arco Corto +1
    nw_wbwmsh002
    464

    Balestra Leggera +1
    nw_wbwmxl002
    474

    Balestra Pesante +1
    nw_wbwmxh002
    504

    Arco Lungo +1
    nw_wbwmln002
    554

    Fionda +2
    nw_wbwmsl009
    1806

    Arco Corto +2
    nw_wbwmsh008
    1864

    Balestra Leggera +2
    nw_wbwmxl008
    1874

    Balestra Pesante +2
    nw_wbwmxh008
    1904

    Arco Lungo +2
    nw_wbwmln008
    1954

    Arco Corto Composito +1
    nw_wbwmsh010
    2820

    Arco Lungo Composito +1
    nw_wbwmln010
    2910

    Fionda +3
    nw_wbwmsl010
    4206

    Arco Corto +3
    nw_wbwmsh009
    4264

    Balestra Leggera +3
    nw_wbwmxl009
    4274

    Balestra Pesante +3
    nw_wbwmxh009
    4304

    Arco Lungo +3
    nw_wbwmln009
    4354

    Fionda della Luce Diurna
    nw_wbwmsl005
    5680

    Balestra della Guardia Silvana
    nw_wbwmxh005
    5778

    Balestra di Rubino
    nw_wbwmxl005
    6074

    Arco Corto Composito +2
    nw_wbwmsh011
    7470

    Arco dell'Aquila
    nw_wbwmsh003
    7508

    Arco Lungo Composito +2
    nw_wbwmln011
    7560

    Fionda +4
    x0_wbwmsl001
    7606

    Arco corto +4
    x0_wbwmsh001
    7664

    Balestra leggera +4
    x0_wbwmxl001
    7674

    Balestra pesante +4
    x0_wbwmxh001
    7704

    Arco lungo +4
    x0_wbwmln001
    7754

    Arco della Corte Elfica strisce
    nw_wbwmln004
    9610

    Arco del Giuramento Minore
    nw_wbwmsh006
    11222

    Fionda della Ricerca
    nw_wbwmsl003
    12006

    Fionda +5
    x0_wbwmsl002
    12006

    Balestra leggera +5
    x0_wbwmxl002
    12074

    Balestra della Precisione
    nw_wbwmxh003
    12104

    Balestra pesante +5
    x0_wbwmxh002
    12104

    Arco lungo +5
    x0_wbwmln002
    12154

    Arco corto +5
    x0_wbwmsh002
    12064

    Arco Corto Composito +3
    nw_wbwmsh012
    14370

    Arco Lungo Composito +3
    nw_wbwmln012
    14460

    Balestra dell'Afflizione
    nw_wbwmxl003
    16456

    Balestra dell'Omicidio
    nw_wbwmxl007
    19134

    Nota Cantata
    nw_wbwmsh007
    19716

    Arco corto composito +4
    x0_wbwmsh003
    20220

    Arco lungo composito +4
    x0_wbwmln003
    20310

    Balestra dell'Ammaliamento
    nw_wbwmxh004
    23204

    Arco del Vento del Nord
    nw_wbwmln007
    25710

    Rivoluzione Gloriosa
    nw_wbwmxh007
    26164

    Arco corto composito +5
    x0_wbwmsh004
    27070

    Arco lungo composito +5
    x0_wbwmln004
    27160

    Balestra della Grande Foresta
    nw_wbwmxl004
    28194

    Fionda della Seduzione
    nw_wbwmsl007
    29646

    Braccio Lungo
    nw_wbwmln006
    29794

    Fionda +6
    x2_wbwmsl003
    36126

    Arco corto +6
    x2_wbwmsh005
    36184

    Balestra leggera +6
    x2_wbwmxl003
    36194

    Balestra pesante +6
    x2_wbwmxh003
    36224

    Arco lungo +6
    x2_wbwmln005
    36274

    Lanciatutto di Tempertuppin
    nw_wbwmsl008
    39606

    Arco di Tansheron
    nw_wbwmsh005
    39664

    Fionda della Forza
    nw_wbwmsl006
    41862

    Squartatore
    nw_wbwmln005
    59010

    Fionda +7
    x2_wbwmsl004
    60502

    Arco corto +7
    x2_wbwmsh006
    60560

    Balestra pesante +7
    x2_wbwmxh004
    60570

    Balestra leggera +7
    x2_wbwmxl004
    60570

    Arco lungo +7
    x2_wbwmln006
    60650

    Balestra dell'Unicorno
    nw_wbwmxl006
    70874

    Arco della Grazia Insanguinata
    nw_wbwmxh006
    70904

    Arco Fantasma
    nw_wbwmsh004
    89670

    Taralash
    nw_wbwmln003
    95508

    Fionda di Arvoreen
    nw_wbwmsl004
    95912

    Arco corto composito +6
    x2_wbwmsh007
    120184

    Arco lungo composito +6
    x2_wbwmln007
    120274

    Eterno
    x2_wbwmln010
    179700

    Arco corto composito +7
    x2_wbwmsh008
    180560

    Arco lungo composito +7
    x2_wbwmln008
    180650

    Flagello dei non morti
    Flx2_wbwmsl005
    189006

    Balestra del colpo fulminante
    x2_wbwmxl005
    420570

    Balestra della Veggente
    x2_wbwmxh005
    505320

    Arco del vento del nord +8
    x2_wbwmln009
    505768

    Arco della legione
    x2_wbwmsh009
    5578


    Freccia +1
    nw_wammar009

    Freccia +2
    nw_wammar010

    Freccia +3
    nw_wammar011

    Freccia +4
    x2_wammar012

    Freccia +5
    x2_wammar013

    Frecce della pietrificazione
    x2_wammar001

    Freccia Avvelenata
    nw_wammar008

    Freccia Avvelenata Debolmente
    nw_wammar007

    Freccia d'Acido
    nw_wammar003

    Freccia del Vampiro
    nw_wammar001

    Freccia di Fuoco
    nw_wammar002

    Freccia di Ghiaccio
    nw_wammar005

    Freccia Fulminante
    nw_wammar006

    Freccia Perforante
    nw_wammar004

    Quadrello +1
    nw_wammbo008

    Quadrello +2
    nw_wammbo009

    Quadrello +3
    nw_wammbo010

    Dardo +4
    x2_wammbo011

    Dardo +5
    x2_wammbo012

    Dardo del teletrasporto
    x2_wammbo001

    Quadrello Avvelenato
    nw_wammbo007

    Quadrello Avvelenato Debolmente
    nw_wammbo006

    Quadrello dei Fulmini
    nw_wammbo002

    Quadrello del Morso di Gelo
    nw_wammbo001

    Quadrello di Fuoco
    nw_wammbo005

    Quadrello Paralizzante
    nw_wammbo003

    Quadrello Perforante
    nw_wammbo004

    Proiettile +1
    nw_wammbu008

    Proiettile +2
    nw_wammbu009

    Proiettile +3
    nw_wammbu010

    Proiettile +4
    x2_wammbu009

    Proiettile +5
    x2_wammbu010

    Oro di Farel
    nw_wammbu003

    Anatema dei Giganti
    nw_wammbu001

    Proiettile di Fuoco
    nw_wammbu005

    Proiettile di Ghiaccio
    nw_wammbu006

    Proiettile Fulminante
    nw_wammbu007

    Proiettile Urlante
    nw_wammbu002

    Proiettili della Punizione
    nw_wammbu004

    */



    DOWNLOAD
    qui sotto c'č l'erf ed il modulino test (CEP 1.68)
    provate con PG di ldiverso livello.
    il meccansmo nella stanzetta avanza il tempo di 12 ore, cliccatelo due volte per resettare il negozio.

    Edited by magobargle - 22/4/2024, 11:41
    File Allegato
    weapon_store.rar
    (Number of downloads: 0)

    Web
     
    .
0 replies since 19/4/2024, 21:41   24 views
  Share  
.