[script] drop et coffre

Répondre
Partager Rechercher
bonjour !

Bon voilà j'en avais un peu marre de voir un même gob donner plus en fonction des niveaux du joueur. Pour moi, un monstre doit toujours avoir le même nombre d'objet et la même qualité, quelque soit celui qui tient la massue qui lui écrase le crâne.


Donc j'ai fait un script qui donne de l'argent en fonction d'une variable (sur l'objet monstre / placeable integer TRESOR de 0 à 4, représentant alors la qualité du trésor)


subtilité

- monstres :
si pas de variable, le monstre aura des trésors en fonction de son niveau (nombre de dès).
De plus, un système fait pour les quêtes permet de dropper un objet en particulier si un membre du groupe du joueur a une variable enregistrée sur lui. Idéal pour faire une quête : "ramène moi le doigt de pied du chef orque". Le personnage, s'il n'active pas la quête, se fiche pas mal du doigt de pied du chef orque. (ensemble de variables : resref, var, pourcent, et noexclude)
Un autre ensemble de variable : pour le drop d'item de craft... c'est pour que certains monstres comme les élémentaires par exemple, aient une chance de dropper un objet (un élémentaire de l'air pourra alors dropper une essence d'air, mais pas une double hache d'arme de feu... ou alors qu'une goule ait une chance de dropper un doigt de goule en plus du drop aléatoire) avec un pourcentage. Ensemble de variable : craft, chance, et craft_exclude

- coffres :
la variable TRESOR peut être mise sur la zone au lieu d'être mise sur chaque placeable. Ca évite de refaire tout à chaque fois. Cette variable sur la zone sera recherchée SI le placeable n'a pas de variable


PS : pas de pièce d'or droppée : un monstre ne commerce pas, il se fiche de l'or, il préfère avoir une gros fleau d'arme +5.. Non en fait j'ai pas voulu mais c'est un choix personnel pour des raisons d'équilibre du module, de système mis en place, de monde... (sur notre module, l'or est rare)

voilà ! et 1700 lignes de codes en plus !

Code PHP:

/*
ktx_tresors.nss
par KorTeX
version du 01/05/2007

variables sur la créature :

string "var" : la variable de quête
string "resref" : resref de l'item à dropper
int "pourcent" : pourcentage de chance de dropper l'item
int "noexclude" : si TRUE, le drop est soit l'item, soit un objet aléatoire
int "nodrop" à TRUE empêche les drop d'items aléatoires
string "craft" : l'objet de craft qui peut être droppé
int "chance" : pourcentage de chance de dropper l'item de craft. 10% par défaut
int "craft_exclude" : si TRUE rien d'autre ne sera droppé


Crée un trésor sur la créature qui vient de se faire tuer
si une variable "var" est enregistrée sur la créature, et qu'un des joueurs
possède cette variable, elle droppera l'objet enregistré dont 
le resref est "resref" avec un pourcentage de chance "pourcent"
si "pourcent" n'est pas enregistré, le drop sera automatique.

"noexclude" peut être enregistré à TRUE sur la créature. Dans ce cas
la créature lâchera l'objet enregistré, ainsi que des items aléatoires

*/
#include "ktxinc_tresor"

int GetIsVarOK (object oPlayerstring sVar)
{
int iVarOK FALSE;
object oPJ GetFirstFactionMember (oPlayer);
while (
oPJ != OBJECT_INVALID)
    {
    if (
GetLocalInt (oPJ,sVar) != 0iVarOK TRUE;
    
oPJ GetNextFactionMember (oPlayer);
    }
return 
iVarOK;    
}


void CreateTresorOK(object oCreature)
{
/*
// de 1 à 4 objets
int iNbObject = Random(4)+1;
while (iNbObject >= 0 )
        {
        KTXCreateTresorsOnPNJ (oSelf);
        iNbObject--;
        }*/
if (GetLocalInt (oCreature"nodrop") == TRUE) return;
        
KTXCreateTresorsOnPNJ(oCreature);
int iNbObject Random(2);
if ((
GetHitDice(oCreature) < 4)&&(Random(2)==1)) return;
if (
iNbObject == 1
    {
    
KTXCreateTresorsOnPNJ (oCreature);
    
iNbObject Random(3);
    if (
iNbObject == 1
        {
        
KTXCreateTresorsOnPNJ (oCreature);
        
iNbObject Random(4);
        if (
iNbObject == 1KTXCreateTresorsOnPNJ (oCreature);
        }
    }
}


void main()
{
object oSelf OBJECT_SELF;

string sVar GetLocalString (oSelf"var");
object oPC GetLastKiller ();
if (
sVar != "")
    {
    if (
GetIsVarOK (oPCsVar))
        {
        
int iRand Random (100);
        
int iPourcent GetLocalInt (oSelf"pourcent");
        if ((
iPourcent == 0)||(iRand iPourcent))
            {
            
CreateItemOnObject (GetLocalString (oSelf"resref"), oSelf);
            }
        }
    if (
GetLocalInt (oSelf"noexclude") == TRUECreateTresorOK (oSelf);
    }
else if (
GetLocalString (oSelf"craft") != "")
    {
    
int iPourcent_craft GetLocalInt (oSelf"chance");
    if (
iPourcent_craft == 0iPourcent_craft 10;
    if (
d100() <= iPourcent_craft)
        {
        
CreateItemOnObject (GetLocalString (oSelf"craft"), oSelf);
        if (
GetLocalInt (oSelf"craft_exclude") == TRUE) return;
        }
    }    
else 
CreateTresorOK (oSelf);

La suite sur le second post, le texte est trop long pour tenir sur un seul
Code PHP:

// ktxinc_tresor.nss
// par KorTeX
// version du 01/05/2007

/*
mettre la variable "TRESOR" / sVarTresor de la creature / du coffre 
par defaut le coffre aura pour variable TRESOR_LOW et la créature 
un trésor selon son niveau (voir tableau plus bas)
*/
// afin de passer outre ce système, on peut créer des variables
const int TRESOR_BOSS 3;
const 
int TRESOR_HIGH 2;
const 
int TRESOR_MED 1;
const 
int TRESOR_LOW 0;
// variable à enregistrer sur les éléments
const string sVarTresor "TRESOR";

// ces variables servent à définir le type d'objets de la creature ou du contenant
// la création sera toujours aléatoire mais cantonnée à quelques types d'objets
// mettre une variable de type integer nommée "TRESOR_TYPE" / sVarTresorType
const int TRESOR_TYPE_MAGE 1;
const 
int TRESOR_TYPE_BIJOU 2;
const 
int TRESOR_TYPE_LIVRE 3;
const 
string sVarTresorType "TRESOR_TYPE";

// fonctions principales

// créer un tresors sur l'objet oCreature
/*
Tableau de pourcentage de chance d'avoir un objet selon les niveaux
___________________________
||niveau  || pourcentage  ||
||--------||--------------||
|| 1-3    ||     50 %     ||
|| 4-6    ||     55 %     ||
|| 7-8    ||     60%      ||
|| 9-10   ||     70%      ||
|| 11-12  ||     75%      ||
|| 13-14  ||     85 %     ||
|| 15-16  ||     95 %     ||
|| 17-20+ ||     100 %    ||
||------------------------||

Tableau de pourcentage de chance de valeur de trésor selon les niveaux
____________________________________________________________________
||Niveaux      ||  1      4       8        12        16        20      ++  ||
||------------||----------------------------------------------------||
||LOW          ||     90        80       70       60       45        15      ||
||MED          ||     10        19       29       35       40        40      ||
||HIGH        ||     00        01       01       05       10       35      ||
||BOSS        ||     00        00       00       00       05        10      ||
---------------------------------------------------------------------
*/
void KTXCreateTresorsOnPNJ (object oCreature);
void KTXCreateTresorsOnPlaceable (object oPlaceable);
void KTXCreateBossTresors(object oObjectTr);
void KTXCreateHighTresors(object oObjectTr);
void KTXCreateMedTresors(object oObjectTr);
void KTXCreateLowTresors(object oObjectTr);
void KTXCreateTresorItem (object ObjectTrstring sresrefint iStack 1);
void KTXCreateLivreTresor(object oObjectTrint itresor);
void KTXCreateMageTresor (object oObjectTrint itresor);

// Fonctions secondaires
void KTXCreatePotion (object oObjectTrint iTresor);
void KTXCreateParcho (object oObjectTr);
void KTXCreateMagique (object oObjectTrint iTresor);
void KTXCreateBook (object oObjectTrint iTresor);
void KTXCreateMiscItem (object oObjectTrint iTresor);
void KTXCreateArme (object oObjectTrint iTresor);
void KTXCreateArmor (object oObjectTrint iTresor);
void KTXCreateKit (object oObjectTrint iTresor);
void KTXCreateBijou (object oObjectTrint iTresor);


// sous fonctions
void KTXCreateGrenade (object oObjectTrint iTresor);
void KTXCreateArmeStack (object oObjectTrint iTresor); // modifier les stacksize
void KTXCreateWeapon(object oObjectTrint iTresor);
void KTXCreateLowArmor(object oObjectTr);
void KTXCreateMedArmor(object oObjectTr);
void KTXCreateHighArmor(object oObjectTr);
void KTXCreateBossArmor(object oObjectTr);
void KTXCreateLowKit (object oObjectTr);
void KTXCreateHighKit (object oObjectTr);
void KTXCreateLowBijou (object oObjectTr);
void KTXCreateMedBijou (object oObjectTr);
void KTXCreateHighBijou (object oObjectTr);
void KTXCreateBossBijou (object oObjectTr);
string ConvertInt(int iVal);
int GetTresorType (object oObjectControl);
int GetIsCoffreCanRespawn (object oCoffre);




/********************************************************************\
/********************LISTES FONCTIONS********************************\
\********************************************************************/

void KTXCreateTresorsOnPNJ(object oCreature)
{
// on vérifie la variable sur le PNJ
int iTresors;
int iVariable GetLocalInt (oCreaturesVarTresor);


if (
iVariable == 3iTresors 17;
else if (
iVariable == 2iTresors 12 ;
else if (
iVariable == 1iTresors 7;
else if (
iVariable == 0iTresors GetHitDice (oCreature);

int iDes Random(100)+1;

int iContinue TRUE;
// test du pourcentage de chance d'avoir un tresor
if (iTresors 4) if (iDes <= 50iContinue FALSE;
else if (
iTresors 7) if (iDes <= 45iContinue FALSE;
else if (
iTresors 9) if (iDes <= 40iContinue FALSE;
else if (
iTresors 11) if (iDes <= 30)  iContinue FALSE;
else if (
iTresors 13) if (iDes <= 25iContinue FALSE;
else if (
iTresors 15) if (iDes <= 15iContinue FALSE;
else if (
iTresors 17) if (iDes <= 5iContinue FALSE;
// si niveau de 17 ou plus 100 % de chance donc pas de test

int ValueTresor GetLocalInt (oCreature"GoldTresor");
if ((
iTresors 7)&&(ValueTresor 6)) iContinue FALSE;
else if ((
iTresors 12)&&(ValueTresor 60)) iContinue FALSE;
else if ((
iTresors 17)&&(ValueTresor 650)) iContinue FALSE;
else if (
ValueTresor 1300iContinue FALSE;

if (
iContinue == FALSE) return;



// ici on regarde quel qualité de trésor sera tiré
iDes Random(100)+1;
if (
iTresors 5)
    {
    if (
iDes 91KTXCreateLowTresors (oCreature);
    else 
KTXCreateMedTresors (oCreature);
    }
else if (
iTresors 9)
    {
    if (
iDes 81KTXCreateLowTresors (oCreature);
    else if (
iDes 100KTXCreateMedTresors (oCreature);
    else if (
iDes == 100KTXCreateHighTresors (oCreature);
    }
else if (
iTresors 13)
    {
    if (
iDes 71KTXCreateLowTresors (oCreature);
    else if (
iDes 100KTXCreateMedTresors (oCreature);
    else if (
iDes == 100KTXCreateHighTresors (oCreature);
    }
else if (
iTresors 17)
    {
    if (
iDes 61KTXCreateLowTresors (oCreature);
    else if (
iDes 96KTXCreateMedTresors (oCreature);
    else if (
iDes >= 96KTXCreateHighTresors (oCreature);
    }
else if (
iTresors 21)
    {
    if (
iDes 46KTXCreateLowTresors (oCreature);
    else if (
iDes 86KTXCreateMedTresors (oCreature);
    else if (
iDes 96KTXCreateHighTresors (oCreature);
    else 
KTXCreateBossTresors (oCreature);
    }
else if (
iTresors >= 21)
    {
    if (
iDes 16KTXCreateLowTresors (oCreature);
    else if (
iDes 56KTXCreateMedTresors (oCreature);
    else if (
iDes 91KTXCreateHighTresors (oCreature);
    else if (
iDes >= 91KTXCreateBossTresors (oCreature);
    }
}


/* crée un objet dans l'inventaire d'un placeale, en fonction de la variable
// "TRESOR" enregistée. Si aucune variable de ce type est enregistrée 
// regarde si la zone possède cette variable.
// par défaut TRESOR_LOW est utilisé

Tableau de pourcentage de chance de valeur de trésor selon les variables enregistrées
________________________________________________________
||TYPES variables ||    LOW     MED     HIGH     BOSS  ||
||produits -------||-----------------------------------||
||-----------------------------------------------------||
||LOW     ------   ||     90        15         05          05   ||
||MED     ------   ||     10        80         30          10   ||
||HIGH   ------   ||     00        05         60          35   ||
||BOSS   ------   ||     00        00         05          50   ||
--------------------------------------------------------     */
void KTXCreateTresorsOnPlaceable (object oPlaceable)
{
int iTresors GetLocalInt (oPlaceablesVarTresor);
if (
iTresors == 0iTresors GetLocalInt (GetArea(oPlaceable),sVarTresor);

int iContinue TRUE;
int ValueTresor GetLocalInt (oPlaceable"GoldTresor");
if ((
iTresors == TRESOR_LOW)&&(ValueTresor 6)) iContinue FALSE;
else if ((
iTresors == TRESOR_MED)&&(ValueTresor 60)) iContinue FALSE;
else if ((
iTresors == TRESOR_HIGH)&&(ValueTresor650)) iContinue FALSE;
else if (
ValueTresor1300iContinue FALSE;

if (
iContinue == FALSE) return;



int iDes Random(100)+1;

if (
iTresors == TRESOR_LOW)
    {
    if (
iDes 91KTXCreateLowTresors (oPlaceable);
    else 
KTXCreateMedTresors (oPlaceable);
    }
else if (
iTresors == TRESOR_MED)
    {
    if (
iDes 16KTXCreateLowTresors (oPlaceable);
    else if (
iDes 96KTXCreateMedTresors (oPlaceable);
    else 
KTXCreateHighTresors (oPlaceable);
    }
else if (
iTresors == TRESOR_HIGH)
    {
    if (
iDes 6KTXCreateLowTresors (oPlaceable);
    else if (
iDes 36KTXCreateMedTresors (oPlaceable);
    else if (
iDes 96KTXCreateHighTresors (oPlaceable);
    else if (
iDes >= 96KTXCreateBossTresors (oPlaceable);
    }
else if (
iTresors == TRESOR_BOSS)
    {
    if (
iDes 6KTXCreateLowTresors (oPlaceable);
    else if (
iDes 16KTXCreateMedTresors (oPlaceable);
    else if (
iDes 51KTXCreateHighTresors (oPlaceable);
    else if (
iDes >= 51KTXCreateBossTresors (oPlaceable);
    }
}


/*Tableau de composition de tresor selon leur valeur type
____________________________________________________________________________________________
Type ||  armes   armures   potions   livres   bijoux    magique    misc    kit  parchemin  ||
LOW  ||   10      10          20      00       10         04        31     15       00     ||
MED  ||   10      10          16      10       15         05        15     15       04     ||
HIGH ||   15      10          10      10       25         10        05     05       10     ||
BOSS ||   20      20          05      05       25         10        05     00       10     ||
--------------------------------------------------------------------------------------------           */

void KTXCreateBossTresors(object oObjectTr)
{
// contrôle si un type de tresor paticulier est défini sur l'objet
if (GetTresorType(oObjectTr) == TRESOR_TYPE_MAGE)
    {
    
KTXCreateMageTresor (oObjectTrTRESOR_BOSS);
    return;
    }
if (
GetTresorType(oObjectTr) == TRESOR_TYPE_BIJOU)
    {
    
KTXCreateBijou (oObjectTr,TRESOR_BOSS);
    return;
    }   
if (
GetTresorType(oObjectTr) == TRESOR_TYPE_LIVRE)
    {
    
KTXCreateLivreTresor (oObjectTrTRESOR_BOSS);
    return;
    }

int iJet Random(100)+1;            
if (
iJet <= 20KTXCreateArme (oObjectTrTRESOR_BOSS);
else if (
iJet <= 40KTXCreateArmor (oObjectTrTRESOR_BOSS);
else if (
iJet <= 45KTXCreatePotion (oObjectTr,TRESOR_BOSS);
else if (
iJet <= 50KTXCreateBook (oObjectTrTRESOR_BOSS);
else if (
iJet <= 75KTXCreateBijou (oObjectTrTRESOR_BOSS);
else if (
iJet <= 85KTXCreateMagique (oObjectTrTRESOR_BOSS);
else if (
iJet <= 90KTXCreateMiscItem (oObjectTrTRESOR_BOSS);
else 
KTXCreateParcho (oObjectTr);
}


void KTXCreateHighTresors(object oObjectTr)
{
// contrôle si un type de tresor paticulier est défini sur l'objet
if (GetTresorType(oObjectTr) == TRESOR_TYPE_MAGE)
    {
    
KTXCreateMageTresor (oObjectTrTRESOR_HIGH);
    return;
    }
if (
GetTresorType(oObjectTr) == TRESOR_TYPE_BIJOU)
    {
    
KTXCreateBijou (oObjectTr,TRESOR_HIGH);
    return;
    }   
if (
GetTresorType(oObjectTr) == TRESOR_TYPE_LIVRE)
    {
    
KTXCreateLivreTresor (oObjectTrTRESOR_HIGH);
    return;
    }
    
int iJet Random(100)+1;
if (
iJet <= 15KTXCreateArme (oObjectTrTRESOR_HIGH);
else if (
iJet <= 25KTXCreateArmor (oObjectTrTRESOR_HIGH);
else if (
iJet <= 35KTXCreatePotion (oObjectTrTRESOR_HIGH);
else if (
iJet <= 45KTXCreateBook (oObjectTrTRESOR_HIGH);
else if (
iJet <= 70KTXCreateBijou (oObjectTrTRESOR_HIGH);
else if (
iJet <= 80KTXCreateMagique (oObjectTrTRESOR_HIGH);
else if (
iJet <= 85KTXCreateMiscItem (oObjectTrTRESOR_HIGH);
else if (
iJet <= 90KTXCreateKit (oObjectTrTRESOR_HIGH);
else 
KTXCreateParcho (oObjectTr);
}


void KTXCreateMedTresors(object oObjectTr)
{
// contrôle si un type de tresor paticulier est défini sur l'objet
if (GetTresorType(oObjectTr) == TRESOR_TYPE_MAGE)
    {
    
KTXCreateMageTresor (oObjectTrTRESOR_MED);
    return;
    }
if (
GetTresorType(oObjectTr) == TRESOR_TYPE_BIJOU)
    {
    
KTXCreateBijou (oObjectTr,TRESOR_MED);
    return;
    }   
if (
GetTresorType(oObjectTr) == TRESOR_TYPE_LIVRE)
    {
    
KTXCreateLivreTresor (oObjectTrTRESOR_MED);
    return;
    }
    
int iJet Random(100)+1;
if (
iJet <= 10KTXCreateArme (oObjectTrTRESOR_MED);
else if (
iJet <= 20KTXCreateArmor (oObjectTrTRESOR_MED);
else if (
iJet <= 36KTXCreatePotion (oObjectTrTRESOR_MED);
else if (
iJet <= 46KTXCreateBook (oObjectTrTRESOR_MED);
else if (
iJet <= 61KTXCreateBijou (oObjectTrTRESOR_MED);
else if (
iJet <= 66KTXCreateMagique (oObjectTrTRESOR_MED);
else if (
iJet <= 81KTXCreateMiscItem (oObjectTrTRESOR_MED);
else if (
iJet <= 96KTXCreateKit (oObjectTrTRESOR_MED);
else 
KTXCreateParcho (oObjectTr);
}


void KTXCreateLowTresors(object oObjectTr)
{
// contrôle si un type de tresor paticulier est défini sur l'objet
if (GetTresorType(oObjectTr) == TRESOR_TYPE_MAGE)
    {
    
KTXCreateMageTresor (oObjectTrTRESOR_LOW);
    return;
    }
if (
GetTresorType(oObjectTr) == TRESOR_TYPE_BIJOU)
    {
    
KTXCreateBijou (oObjectTr,TRESOR_LOW);
    return;
    }   
if (
GetTresorType(oObjectTr) == TRESOR_TYPE_LIVRE)
    {
    
KTXCreateLivreTresor (oObjectTrTRESOR_LOW);
    return;
    }
    
int iJet Random(100)+1;
if (
iJet <= 10KTXCreateArme (oObjectTrTRESOR_LOW);
else if (
iJet <= 20KTXCreateArmor (oObjectTrTRESOR_LOW);
else if (
iJet <= 40KTXCreatePotion (oObjectTrTRESOR_LOW);
else if (
iJet <= 50KTXCreateBijou (oObjectTrTRESOR_LOW);
else if (
iJet <= 55KTXCreateMagique (oObjectTrTRESOR_LOW);
else if (
iJet <= 85KTXCreateMiscItem (oObjectTrTRESOR_LOW);
else 
KTXCreateMiscItem (oObjectTrTRESOR_LOW);
}

void KTXCreateTresorItem (object ObjectTrstring sresrefint iStack 1)
{
int iGoldValue GetLocalInt (ObjectTr"GoldTresor");
object oItemCreate CreateItemOnObject (sresrefObjectTriStack);
int iGold GetGoldPieceValue (oItemCreate);
iGoldValue iGoldValue iGold;
SetLocalInt (ObjectTr"GoldTresor"iGoldValue);
SetDroppableFlag(oItemCreateTRUE);
if (
iGold 100SetIdentified (oItemCreateFALSE);
//SetPickpocketableFlag (oItemCreate, TRUE); // attendre patch correctif
}


void KTXCreateLivreTresor(object oObjectTrint itresor)
{
int iRandTresor Random (2);
if (
iRandTresor == 1KTXCreateBook (oObjectTritresor);
else 
KTXCreateParcho (oObjectTr);
}

void KTXCreateMageTresor (object oObjectTrint itresor// à faire
{
int iRandTresor Random (3);
if (
iRandTresor == 1KTXCreatePotion (oObjectTr,itresor);
else if (
iRandTresor == 2KTXCreateMagique (oObjectTr,itresor);
else 
KTXCreateParcho (oObjectTr);

}

/************************************************************************\
/*********************** FONCTIONS SECONDAIRES **************************\
\************************************************************************/


void KTXCreatePotion (object oObjectTrint iTresor)
{
string sresref;
int iRand;
if (
iTresor TRESOR_LOW)
    {
    
iRand Random(29) +1;
    switch (
iRand)
        {
        case 
sresref "ktxalcool"; break;
        case 
sresref "ktxbiere"; break;
        case 
sresref "ktxbierenaine"; break;
        case 
sresref "ktxcidre"; break;
        case 
sresref "ktxvin"; break;
        case 
sresref "ktx_gourdeeau"; break;
        case 
sresref "nw_it_mpotion009"; break;
        case 
sresref "n2_it_mpotion001"; break;
        case 
sresref "nw_it_mpotion005"; break;
        case 
10 sresref "nw_it_mpotion016"; break;
        case 
11 sresref "nw_it_mpotion011"; break;
        case 
12 sresref "nw_it_mpotion017"; break;
        case 
13 sresref "nw_it_mpotion018"; break;
        case 
14 sresref "nw_it_mpotion014"; break;
        case 
15 sresref "nw_it_mpotion013"; break;
        case 
16 sresref "nw_it_mpotion010"; break;
        case 
17 sresref "nw_it_mpotion015"; break;
        case 
18 sresref "nw_it_mpotion019"; break;
        case 
19 sresref "x2_it_mpotion002"; break;
        case 
20 sresref "nw_it_mpotion001"; break; // soins légers
        
case 21 sresref "nw_it_mpotion001"; break; // soins légers
        
case 22 sresref "nw_it_mpotion001"; break; // soins légers
        
case 23 sresref "nw_it_mpotion001"; break; // soins légers
        
case 24 sresref "nw_it_mpotion001"; break; // soins légers
        
case 25 sresref "ktxalcool"; break;
        case 
26 sresref "ktxbiere"; break;
        case 
27 sresref "ktxbierenaine"; break;
        case 
28 sresref "ktxcidre"; break;
        case 
29 sresref "ktxvin"; break;
        }
    }
else if (
iTresor TRESOR_MED)
    {
    
iRand Random(26) +1;
    switch (
iRand)
        {
        case 
sresref "ktxalcool"; break;
        case 
sresref "ktxbiere"; break;
        case 
sresref "ktxbierenaine"; break;
        case 
sresref "ktxcidre"; break;
        case 
sresref "ktxvin"; break;
        case 
sresref "ktx_gourdeeau"; break;
        case 
sresref "nw_it_mpotion009"; break;
        case 
sresref "n2_it_mpotion001"; break;
        case 
sresref "nw_it_mpotion005"; break;
        case 
10 sresref "nw_it_mpotion016"; break;
        case 
11 sresref "nw_it_mpotion011"; break;
        case 
12 sresref "nw_it_mpotion017"; break;
        case 
13 sresref "nw_it_mpotion018"; break;
        case 
14 sresref "nw_it_mpotion020"; break; // soins modérés
        
case 15 sresref "nw_it_mpotion013"; break;
        case 
16 sresref "nw_it_mpotion010"; break;
        case 
17 sresref "nw_it_mpotion014"; break;
        case 
18 sresref "nw_it_mpotion019"; break;
        case 
19 sresref "x2_it_mpotion002"; break;
        case 
20 sresref "nw_it_mpotion001"; break; // soins légers
        
case 21 sresref "nw_it_mpotion015"; break;
        case 
22 sresref "nw_it_mpotion020"; break; // soins modérés
        
case 23 sresref "nw_it_mpotion020"; break; // soins modérés
        
case 24 sresref "nw_it_mpotion020"; break; // soins modérés
        
case 25 sresref "nw_it_mpotion020"; break; // soins modérés
        
case 26 sresref "nw_it_mpotion020"; break; // soins modérés
        
}
    }
else if (
iTresor TRESOR_HIGH)
    {
    
iRand Random(25) +1;
    switch (
iRand)
        {
        case 
sresref "ktx_gourdeeau"; break;
        case 
sresref "nw_it_mpotion009"; break;
        case 
sresref "n2_it_mpotion001"; break;
        case 
sresref "nw_it_mpotion005"; break;
        case 
sresref "nw_it_mpotion004"; break; // rapidité
        
case sresref "nw_it_mpotion011"; break;
        case 
sresref "nw_it_mpotion017"; break;
        case 
sresref "nw_it_mpotion018"; break;
        case 
sresref "nw_it_mpotion020"; break; // soins modérés
        
case 10 sresref "nw_it_mpotion013"; break;
        case 
11 sresref "nw_it_mpotion010"; break;
        case 
12 sresref "nw_it_mpotion008"; break; // invisibilité
        
case 13 sresref "nw_it_mpotion019"; break;
        case 
14 sresref "nw_it_mpotion003"; break; // soins intensifs
        
case 15 sresref "nw_it_mpotion001"; break; // soins légers
        
case 16 sresref "nw_it_mpotion002"; break; // soins importants
        
case 17 sresref "nw_it_mpotion015"; break;
        case 
18 sresref "x2_it_mpotion002"; break;
        case 
19 sresref "nw_it_mpotion014"; break;
        case 
20 sresref "nw_it_mpotion016"; break;
        case 
21 sresref "nw_it_mpotion002"; break; // soins importants
        
case 22 sresref "nw_it_mpotion002"; break; // soins importants
        
case 23 sresref "nw_it_mpotion002"; break; // soins importants
        
case 24 sresref "nw_it_mpotion002"; break; // soins importants
        
case 25 sresref "nw_it_mpotion002"; break; // soins importants
        
}
    }
else if (
iTresor TRESOR_BOSS)
    {
    
iRand Random(26) +1;
    switch (
iRand)
        {
        case 
sresref "ktx_gourdeeau"; break;
        case 
sresref "nw_it_mpotion009"; break;
        case 
sresref "n2_it_mpotion001"; break;
        case 
sresref "nw_it_mpotion005"; break;
        case 
sresref "nw_it_mpotion004"; break; // rapidité
        
case sresref "nw_it_mpotion011"; break;
        case 
sresref "nw_it_mpotion017"; break;
        case 
sresref "nw_it_mpotion018"; break;
        case 
sresref "nw_it_mpotion020"; break; // soins modérés
        
case 10 sresref "nw_it_mpotion013"; break;
        case 
11 sresref "nw_it_mpotion010"; break;
        case 
12 sresref "nw_it_mpotion008"; break; // invisibilité
        
case 13 sresref "nw_it_mpotion019"; break;
        case 
14 sresref "nw_it_mpotion003"; break; // soins intensifs
        
case 15 sresref "nw_it_mpotion001"; break; // soins légers
        
case 16 sresref "nw_it_mpotion002"; break; // soins importants
        
case 17 sresref "nw_it_mpotion015"; break;
        case 
18 sresref "nw_it_mpotion012"; break; // guérison supr
        
case 19 sresref "x2_it_mpotion002"; break;
        case 
20 sresref "nw_it_mpotion014"; break;
        case 
21 sresref "nw_it_mpotion016"; break;
        case 
22 sresref "nw_it_mpotion003"; break; // soins intensifs
        
case 23 sresref "nw_it_mpotion003"; break; // soins intensifs
        
case 24 sresref "nw_it_mpotion003"; break; // soins intensifs
        
case 25 sresref "nw_it_mpotion003"; break; // soins intensifs
        
case 26 sresref "nw_it_mpotion003"; break; // soins intensifs
        
}
    }
}


void KTXCreateParcho (object oObjectTr)
{
string sresref;
int iRand Random(73) +1;
switch (
iRand)
    {
    case 
sresref "n2_it_sparscr" ConvertInt(Random(4)+1) ; break;
    case 
sresref "n2_it_sparscr" ConvertInt (Random(16)+6); break;
    case 
sresref "n2_it_sparscr025"; break;
    case 
sresref "n2_it_sparscr026"; break;
    case 
sresref "n2_it_sparscr" ConvertInt (Random(8)+28); break;
    case 
sresref "x2_it_sparscr105"; break;
    case 
sresref "x2_it_sparscr" ConvertInt (Random(3)+201); break;
    case 
sresref "x2_it_sparscr205"; break;
    case 
sresref "x2_it_sparscr206"; break;
    case 
10 sresref "x2_it_sparscr" ConvertInt (Random(5)+301); break;
    case 
11 sresref "x2_it_sparscr401"; break;
    case 
12 sresref "x2_it_sparscr601"; break;
    case 
13 sresref "x2_it_sparscr602"; break;
    case 
14 sresref "x2_it_sparscr703"; break;
    case 
15 sresref "nw_it_sparscr" ConvertInt (Random(5)+1); break;
    case 
16 sresref "x2_it_spdvscr001"; break;
    case 
17 sresref "x2_it_spdvscr002"; break;
    case 
18 sresref "x2_it_spdvscr" ConvertInt (Random(6)+102); break;
    case 
19 sresref "x2_it_spdvscr" ConvertInt (Random(5)+201); break;
    case 
20 sresref "x2_it_spdvscr301"; break;
    case 
21 sresref "x2_it_spdvscr304"; break;
    case 
22 sresref "x2_it_spdvscr" ConvertInt (Random(5)+306); break;
    case 
23 sresref "x2_it_spdvscr313"; break;
    case 
24 sresref "x2_it_spdvscr312"; break;
    case 
25 sresref "x2_it_spdvscr" ConvertInt (Random(7)+401); break;
    case 
26 sresref "x2_it_spdvscr501"; break;
    case 
27 sresref "x2_it_spdvscr" ConvertInt (Random(6)+503); break;
    case 
28 sresref "x2_it_spdvscr605"; break;
    case 
29 sresref "x2_it_spdvscr701"; break;
    case 
30 sresref "x2_it_spdvscr702"; break;
    case 
31 sresref "x2_it_spdvscr804"; break;
    case 
32 sresref "nw_it_sparscr218"; break;
    case 
33 sresref "nw_it_sparscr219"; break;
    case 
34 sresref "nw_it_sparscr220"; break;
    case 
35 sresref "nw_it_spdvscr201"; break;
    case 
36 sresref "nw_it_spdvscr203"; break;
    case 
37 sresref "nw_it_spdvscr204"; break;
    case 
38 sresref "nw_it_spdvscr301"; break;
    case 
39 sresref "nw_it_spdvscr302"; break;
    case 
40 sresref "nw_it_spdvscr401"; break;
    case 
41 sresref "nw_it_spdvscr402"; break;
    case 
42 sresref "nw_it_spdvscr501"; break;
    case 
43 sresref "nw_it_spdvscr701"; break;
    case 
44 sresref "nw_it_spdvscr702"; break;
    case 
45 sresref "x1_it_sparscr001"; break;
    case 
46 sresref "x1_it_sparscr002"; break;
    case 
47 sresref "x1_it_sparscr201"; break;
    case 
48 sresref "x1_it_sparscr202"; break;
    case 
49 sresref "x1_it_sparscr301"; break;
    case 
50 sresref "x1_it_sparscr303"; break;
    case 
51 sresref "x1_it_sparscr401"; break;
    case 
52 sresref "x1_it_sparscr501"; break;
    case 
53 sresref "x1_it_sparscr601"; break;
    case 
54 sresref "x1_it_sparscr604"; break;
    case 
55 sresref "x1_it_sparscr605"; break;
    case 
56 sresref "nw_it_sparscr607"; break;
    case 
57 sresref "nw_it_sparscr608"; break;
    case 
58 sresref "nw_it_sparscr610"; break;
    case 
59 sresref "nw_it_sparscr612"; break;
    case 
60 sresref "nw_it_sparscr613"; break;
    case 
61 sresref "nw_it_sparscr614"; break;
    case 
62 sresref "nw_it_sparscr701"; break;
    case 
63 sresref "nw_it_sparscr908"; break;
    case 
64 sresref "x2_it_spdvscr" ConvertInt (Random(3)+601); break;
    case 
65 sresref "nw_it_sparscr" ConvertInt (Random(12)+101); break;
    case 
66 sresref "nw_it_sparscr" ConvertInt (Random(13)+201); break;
    case 
67 sresref "nw_it_sparscr" ConvertInt (Random(14)+301); break;
    case 
68 sresref "nw_it_sparscr" ConvertInt (Random(7)+401); break;
    case 
69 sresref "nw_it_sparscr" ConvertInt (Random(10)+409); break;
    case 
70 sresref "x1_it_sparscr" ConvertInt (Random(4)+101); break;
    case 
71 sresref "nw_it_sparscr" ConvertInt (Random(13)+501); break;
    case 
72 sresref "nw_it_sparscr" ConvertInt (Random(5)+601); break;
    case 
73 sresref "nw_it_sparscr" ConvertInt (Random(5)+703); break;
    }
KTXCreateTresorItem (oObjectTr,sresref);
}

void KTXCreateMagique (object oObjectTrint iTresor)
{
string sresref;
int iRand;
if (
iTresor == TRESOR_LOW)
    {
    
iRand Random(21) +1;
    switch (
iRand)
        {
        case 
sresref "nw_wmgwn014" ; break;// baguette de givre
        
case sresref "nw_wmgwn013" ; break;// baguette convoc mineur (s3)
        
case sresref "nw_wmgwn004" ; break;// baguette projectiles mag (s3)
        
case sresref "nw_wmgwn012"; break; // baguette sommeil (s2)
        
case sresref "nw_it_mneck023"; break; // collier scintillant
        
case sresref "x1_it_spdvscr204"; break; // parch aura de gloire
        
case sresref "nw_it_mring"+ConvertInt(Random(3)) ; break;// anneau cyan / jade ou écarlate
        
case sresref "x1_it_sparscr103" ; break;// parch bouclier
        
case sresref "x1_it_spdvscr107"; break; // parch camouflage
        
case 10sresref "x2_it_spdvscr001"; break; // parchemins soins superficiels
        
case 11sresref "x2_it_spdvscr002"; break; // parch stimulant
        
case 12 sresref "nw_it_sparscr002"; break; // parch rayon de givre
        
case 13 sresref "nw_it_sparscr103"; break; // parch graisse
        
case 14 sresref "nw_it_sparscr218"; break; // parch dissip mineure
        
case 15 sresref "nw_it_sparscr110"; break; // parch couleurs dansantes
        
case 16 sresref "x1_it_spdvscr001"; break; // parch bless superficielles
        
case 17 sresref "x2_it_cfm_wand"; break; // baguette en os
        
case 18 sresref "x2_it_cfm_wand"; break; // baguette en os
        
case 19 sresref "x2_it_cfm_wand"; break; // baguette en os
        
case 20 sresref "x2_it_cfm_wand"; break; // baguette en os
        
case 21 sresref "x2_it_cfm_wand"; break; // baguette en os
        
        
}
    }

else if (
iTresor == TRESOR_MED)
    {
    
int iRand Random(24) +1;
    switch (
iRand)
        {
        case 
sresref "nw_wmgwn008" ; break;// baguette convoc (s7)
        
case sresref "nw_wmgmrd006" ; break;// sceptre givre (s1 illim)
        
case sresref "nw_it_mglove004" ; break;// gants concentration
        
case sresref "nw_it_sparscr211" ; break;//  parch cécité
        
case sresref "nw_wmgwn011" ; break;// baguette disjonction prof (s5)
        
case sresref "nw_wmgwn" +ConvertInt(2Random(2)); break; // baguette feu (s5) ou  baguette terreur (s5)
        
case sresref "nw_wmgwn007" ; break;// baguette foudre (s5)
        
case sresref "nw_it_sparscr107"; break; // parch Charme-personne
        
case sresref "nw_wmgwn005" ; break;// baguette immobil (s7)
        
case 10 sresref "nw_wmgwn" +ConvertInt(9Random(2)); break; // baguette cieux (s7) ou  baguette nauséabond (s5)
        
case 11 sresref "nw_it_contain"+ConvertInt(2Random(2)); break; // sac -20 ou -40
        
case 12 sresref "nw_it_mring031"; break; // anneau resist +1
        
case 13 sresref "nw_it_mneck024" ; break;// amulette VO+1
        
case 14 sresref "nw_it_mring024" ; break;// annaeau vig +1
        
case 15 sresref "x2_it_sparscr201" ; break;// parch combustion
        
case 16 sresref "n2_it_mring"ConvertInt(6Random(2)) ; break;// anneau puissance divine 1 ou anneau arcanes 1
        
case 17 sresref "nw_it_mring013"; break; // anneau érudit (lum + savoir +5)
        
case 18 sresref "x0_it_mglove001" ; break;// gantelets d'estimation
        
case 19 sresref "nw_it_mglove005" ; break;// gant ménestrel
        
case 20 sresref "nw_it_mglove003" ; break;// gant roublard
        
case 22 sresref "nw_it_mglove007" ; break;// gant art magie
        
case 23 sresref "nw_it_mglove009"; break; // gant parade
        
case 24 sresref "nw_it_sparscr105" ; break;// parch convoc créature 1
        
}
    }
            


else if (
iTresor == TRESOR_HIGH)
    {
    
int iRand Random(14) +1;
    switch (
iRand)
        {
        case 
sresref "nw_wmgmrd004" ; break;// sceptre fascination (s7)
        
case sresref "nw_wmgmrd003" ; break;// sceptre frayeur (s5)
        
case sresref "nw_wmgrd002" ; break;// sceptre fantôme (s3 ix/j)
        
case sresref " nw_wmgst002" ; break;// baton command (s7-immu)
        
case sresref "nw_wmgst004" ; break;// baton def (s5 CA+2)
        
case sresref "n2_it_mring002" ; break;// anneau puissance divine 2
        
case sresref "n2_it_mring008"; break; // anneau arcanes 2
        
case sresref "nw_it_mglove010"; break; // gant concentration sup
        
case sresref "x0_maarcl025" ; break;// cape resist +1
        
case 10 sresref "nw_it_mglove015" ; break;// gant parade sup
        
case 11 sresref "nw_it_mbracer002" ; break;// bracelet armure +1 657
        
case 12 sresref "nw_it_mglove016" ; break;// gant de hin +1 951
        
case 13 sresref "nw_it_mboots010" ; break;// botte de réflexe +1 343
        
case 14 sresref "nw_maarcl096 " ; break;// cape de prtection Vs bien
        
}
    }

else if (
iTresor == TRESOR_BOSS)
    {
    
int iRand Random(16) +1;
    switch (
iRand)
        {
        case 
sresref "nw_it_contain004" ; break; // sac -60
        
case sresref "nw_it_contain006"; break; // sac -100
        
case sresref "nw_wmgmrd005" ; break;// sceptre inversion (s7)
        
case sresref "nw_wmgmrd002"; break; // sceptre resurr (s13)
        
case sresref "nw_it_mneck025" ; break;// amulette VO+2
        
case sresref "nw_it_mring032" ; break;// anneau resist +2
        
case sresref "n2_it_mring009" ; break;// anneau arcanes 3
        
case sresref "nw_it_mring025"; break; // anneau vig +2
        
case sresref "n2_it_mring003" ; break;// anneau puissance divine 3
        
case 10 sresref "x0_maarcl026" ; break;// cape resist +2
        
case 11 sresref "nw_it_mbracer002" ; break;// bracelet armure +1 657
        
case 12 sresref "nw_it_mglove016" ; break;// gant de hin +1 951
        
case 13 sresref "nw_it_mboots010" ; break;// botte de réflexe +1 343
        
case 14 sresref "nw_maarcl096 " ; break;// cape de prtection Vs bien
        
case 15 sresref "nw_it_mglove015" ; break;// gant parade sup
        
case 16 sresref "nw_wmgst"ConvertInt(5Random(2)) ; break;// baton surpuissance (s5) ou baton sacré (s6)
        
}
    }
KTXCreateTresorItem (oObjectTr,sresref);
}

void KTXCreateBook (object oObjectTrint iTresor)
{
string sresref;
int iRand;
if ((
iTresor == TRESOR_LOW)||(iTresor == TRESOR_MED))
    {
    
iRand Random(33) +1;
    switch (
iRand)
        {
        
// livres
        
case sresref "nw_it_book032"; break;
        case 
sresref "nw_it_book013"; break;
        case 
sresref "nw_it_book028"; break;
        case 
sresref "nw_it_book030" ;break;
        case 
sresref "nw_it_book002"; break;
        case 
sresref "nw_it_book001"; break;
        case 
sresref "nw_it_book015"; break;
        case 
sresref "nw_it_book004"; break;
        case 
sresref "nw_it_book027"; break;
        case 
10 sresref "nw_it_book024"; break;
        case 
11 sresref "nw_it_book007"; break;
        case 
12 sresref "nw_it_book008"; break;
        case 
13 sresref "nw_it_book005"; break;
        case 
14 sresref "nw_it_book006"; break;
        case 
15 sresref "nw_it_book014"; break;
        case 
16 sresref "nw_it_book009"; break;
        case 
17 sresref "nw_it_book023"; break;
        case 
18 sresref "nw_it_book018"; break;
        case 
19 sresref "nw_it_book010"; break;
        case 
20 sresref "nw_it_book025"; break;
        case 
21 sresref "nw_it_book019"; break;
        case 
22 sresref "nw_it_book003"; break;
        case 
23 sresref "nw_it_book029"; break;
        case 
24 sresref "nw_it_book031"; break;
        case 
25 sresref "nw_it_book026"; break;
        case 
26 sresref "nw_it_book012"; break;
        case 
27 sresref "nw_it_book021"; break;
        case 
28 sresref "nw_it_book016"; break;
        case 
29 sresref "nw_it_book017"; break;
        case 
30 sresref "nw_it_book022"; break;
        case 
31 sresref "nw_it_book030" ;break;
        case 
32 sresref "nw_it_book020"; break;
        case 
33 sresref "nw_it_book011"; break;
        }
    }
        
else if ((
iTresor == TRESOR_HIGH)||(iTresor == TRESOR_BOSS))
    {
    
iRand Random(27) +1;
    switch (
iRand)
        {
        case 
sresref "n2_crft_book_recipe003"; break;
        case 
sresref "n2_crft_book_recipe015"; break;
        case 
sresref "n2_crft_book_recipe008"; break;
        case 
sresref "n2_crft_book_recipe024"; break;
        case 
sresref "n2_crft_book_recipe018"; break;
        case 
sresref "n2_crft_book_recipe019"; break;
        case 
sresref "n2_crft_book_recipe013"; break;
        case 
sresref "n2_crft_book_recipe002"; break;
        case 
sresref "n2_crft_book_recipe001"; break;
        case 
10 sresref "n2_crft_book_recipe020"; break;
        case 
11 sresref "n2_crft_book_recipe021"; break;
        case 
12 sresref "n2_crft_book_recipe010"; break;
        case 
13 sresref "n2_crft_book_recipe027"; break;
        case 
14 sresref "n2_crft_book_recipe017"; break;
        case 
15 sresref "n2_crft_book_recipe028"; break;
        case 
16 sresref "n2_crft_book_recipe012"; break;
        case 
17 sresref "n2_crft_book_recipe029"; break;
        case 
18 sresref "n2_crft_book_recipe011"; break;
        case 
19 sresref "n2_crft_book_recipe016"; break;
        case 
20 sresref "n2_crft_book_recipe007"; break;
        case 
21 sresref "n2_crft_book_recipe005"; break;
        case 
22 sresref "n2_crft_book_recipe006"; break;
        case 
23 sresref "n2_crft_book_recipe023"; break;
        case 
24 sresref "n2_crft_book_recipe025"; break;
        case 
25 sresref "n2_crft_book_recipe004"; break;
        case 
26 sresref "n2_crft_book_recipe009"; break;
        case 
27 sresref "n2_crft_book_recipe014"; break;
        }
    }
KTXCreateTresorItem (oObjectTr,sresref);
}

void KTXCreateMiscItem (object oObjectTrint iTresor)
{
string sresref;
int iRand;
if (
iTresor == TRESOR_LOW)
    {
    
iRand Random(30) +1;
    switch (
iRand)
        {
        
// < 50
        
case sresref "ktx_fromage"; break;  // nourriture
        
case sresref "ktx_fruit"; break;  // nourriture
        
case sresref "ktx_jambonsale"; break;  // nourriture
        
case sresref "ktx_legume"; break;  // nourriture
        
case sresref "ktx_morceaupain"; break;  // nourriture
        
case sresref "ktx_boeufgrill"; break;  // nourriture
        
case sresref "ktx_tartefruit"; break;  // nourriture
        
case sresref "n2_it_stein"; break;  // choppe
        
case sresref "ktx_flute"; break;  //flûte
        
case 10 sresref "ktx_luth"; break;  // luth
        
case 11 sresref "nw_it_torch001"; break;  // torch
        
case 12 sresref "x2_it_pcpotion"; break;  // potion magique
        
case 13 sresref "nw_it_thnmisc001"; break;  // Bouteille vide
        
case 14 sresref "x2_it_poison015"; break;  // Venin d'abeille géante, peu virulent
        
case 15 sresref "nw_cloth009"; break;  // Haillons de mendiant
        
case 16 sresref "shirt_fighter"; break; // Chemise simple
        
case 17 sresref "nw_wblcl001"; break; // gourdin
        
case 18 sresref "nw_it_medkit001"; break; // 1er secours +1
        
case 19 sresref "nw_it_mpotion001"; break; // potion soins légers
        
case 20 sresref "nw_it_msmlmisc24"; break;  // ail
        
case 21 sresref "n2_crft_hideleather"; break;  // cuir
        
case 22 sresref "n2_crft_plkwood"; break;  // planche de bois
        
case 23 sresref "ktx_jambonsale"; break;  // nourriture
        
case 24 sresref "ktx_morceaupain"; break;  // nourriture
        
case 25 sresref "nw_it_mpotion001"; break; // potion soins légers
        
case 26 sresref "nw_it_mpotion001"; break; // potion soins légers
        
case 27 sresref "nw_it_medkit001"; break; // 1er secours +1
        
case 28 sresref "nw_it_mpotion001"; break; // potion soins légers
        
case 29 sresref "nw_it_mpotion001"; break; // potion soins légers
        
case 30 sresref "nw_it_mpotion001"; break; // potion soins légers
        
case 31 sresref "ktx_tambour"; break; //tambour
        
}
    }
else if (
iTresor == TRESOR_MED)
    {
    
iRand Random(30) +1;
    switch (
iRand)
        {
        
// < 100
        
case sresref "n2_crft_plkwood"; break;  // planche de bois
        
case sresref "nw_it_msmlmisc24"; break;  // ail
        
case sresref "n2_alc_disalcohol"; break;  // alcool distillé
        
case sresref "n2_alc_venomgland"; break;  // glande à venin
        
case sresref "ktxcampbaseitem1"; break;  //campbase
        
case sresref "ktxcampbaseitem2"; break;  //campbase
        
case sresref "ktxcampbaseitem3"; break;  //campbase
        
case sresref "n2_crft_hideleather"; break;  // cuir
        
case sresref "n2_crft_ingiron"; break;  // lingôt de fer
        
case 10 sresref "n2_crft_plkdskwood"; break;  // Planche de bois cendré
        
case 11 sresref "n2_alc_beegland"; break;  // Glande à venin d’abeille géante
        
case 12 sresref "n2_alc_quicksilver"; break;  // Vif-argent
        
case 13 sresref "n2_crft_dist005"; break;  // Glande de scarabée
        
case 14 sresref "n2_crft_dist003"; break;  // n2_crft_dist003
        
case 15 sresref "n2_crft_dist024"; break;  // Peau de méphite enflammé
        
case 16 sresref "x2_it_cfm_wand"; break;  // Baguette en os
        
case 17 sresref "x2_it_poison015"; break;  // Venin d'abeille géante, peu virulent
        
case 18 sresref "x2_it_poison013"; break;  // Venin de scorpion géant, peu virulent
        
case 21 sresref "ktx_fruit"; break;  // nourriture
        
case 22 sresref "ktx_jambonsale"; break;  // nourriture
        
case 23 sresref "ktx_legume"; break;  // nourriture
        
case 24 sresref "nw_it_mpotion020"; break;  // potion de soins modérés
        
case 25 sresref "nw_it_mpotion020"; break;  // potion de soins modérés
        
case 26 sresref "nw_it_mpotion020"; break;  // potion de soins modérés
        
case 27 sresref "nw_it_medkit002"; break;  // trousse de soins +3 
        
case 28 sresref "nw_it_medkit001"; break;  // trousse de soins +1        
        
case 29 sresref "nw_it_medkit001"; break;  // trousse de soins +1
        
case 30 sresref "nw_it_medkit001"; break;  // trousse de soins +1
        
}
    }
else if (
iTresor == TRESOR_HIGH)
    {
    
iRand Random(22) +1;
    switch (
iRand)
        {    
        
// < 250
        
case sresref "n2_alc_powsilver"; break;  // poudre d'argent
        
case sresref "n2_crft_ingdrksteel"; break;  // lingot sombracier
        
case sresref "n2_crft_ingsilver"; break;  // lingôt d'argent alchimique
        
case sresref "n2_crft_hideumber"; break;  // Peau d’ombre des roches
        
case sresref "n2_crft_dist006"; break;  // Abdomen de punaise de feu
        
case sresref "n2_crft_dist036"; break;  // Dent de loup sanguinaire
        
case sresref "n2_crft_dist001"; break;  // Pointe de lamelin
        
case sresref "n2_crft_dist033"; break;  // Sang de troll
        
case sresref "cft_ess_air1"; break;  // Essence d’air diffuse
        
case 10 sresref "cft_ess_water1"; break;  // Essence d’eau diffuse
        
case 11 sresref "cft_ess_fire1"; break;  // Essence de feu diffuse
        
case 12 sresref "cft_ess_power1"; break;  // Essence de pouvoir diffuse
        
case 13 sresref "cft_ess_earth1"; break;  // Essence de terre diffuse
        
case 14 sresref "n2_crft_ingmithral"; break;  // Lingot de mithral
        
case 15 sresref "n2_crft_dist006"; break;  // Abdomen de punaise de feu
        
case 16 sresref "n2_crft_plkzalantar"; break;  // Planche de zalantar
        
case 17 sresref "n2_crft_dist007"; break;  // Corne de charançon géant
        
case 18 sresref "n2_crft_dist002"; break;  // Croc de chauve-souris
        
case 19 sresref "x2_it_poison027"; break;  // Venin d'abeille géante, virulent
        
case 20 sresref "nw_it_medkit002"; break;  // trousse de soins +3
        
case 21 sresref "nw_it_medkit002"; break;  // trousse de soins +3
        
case 22 sresref "nw_it_medkit002"; break;  // trousse de soins +3
        
}
    }

else if (
iTresor == TRESOR_BOSS)
    {
    
iRand Random(21) +1;
    switch (
iRand)
        {    
        
// < 500
        
case sresref "cft_ess_fire2"; break;  // Essence de feu mineure
        
case sresref "cft_ess_water2"; break;  // Essence d’eau mineure
        
case sresref "cft_ess_air2"; break;  // Essence d’air mineure
        
case sresref "n2_crft_dist039"; break;  // Ecailles de wiverne
        
case sresref "n2_crft_dist005"; break;  // Glande de scarabée
        
case sresref "n2_crft_dist004"; break;  // Griffe d’ours sanguinaire
        
case sresref "n2_crft_dist038"; break;  // Résidu d’âme-en-peine
        
case sresref "cft_ess_fire2"; break;  // Essence de feu mineure
        
case sresref "cft_ess_power2"; break;  // Essence de pouvoir mineure
        
case 10 sresref "cft_ess_earth2"; break;  // Essence de terre mineure
        
case 11 sresref "x2_it_poison039"; break;  // Venin d'abeille géante, mortel
        
case 12 sresref "n2_crft_dist026"; break;  // Crâne d’ogre mage
        
case 13 sresref "n2_crft_dist009"; break;  // Défense de gobelours
        
case 14 sresref "n2_crft_dist021"; break;  // Dent de molosse satanique
        
case 15 sresref "nw_it_medkit003"; break;  // trousse de soins +6
        
case 16 sresref "nw_it_medkit003"; break;  // trousse de soins +6
        
case 17 sresref "nw_it_medkit003"; break;  // trousse de soins +6
        
case 18 sresref "nw_it_mpotion002"; break;  // potion soins importants
        
case 19 sresref "nw_it_mpotion002"; break;  // potion soins importants
        
case 20 sresref "nw_it_mpotion002"; break;  // potion soins importants
        
case 21 sresref "nw_it_mpotion002"; break;  // potion soins importants
        
}
    }
KTXCreateTresorItem (oObjectTr,sresref);
}

void KTXCreateArme (object oObjectTrint iTresor)
{
int iRandomTres Random (4);
if (
iRandomTres == 1KTXCreateGrenade (oObjectTriTresor);
else if (
iRandomTres == 2KTXCreateArmeStack (oObjectTriTresor);
else if (
iRandomTres == 3
    {
    if (
iTresor TRESOR_MEDKTXCreateWeapon (oObjectTriTresor);
    else 
KTXCreateArmeStack (oObjectTriTresor);
    }
else 
KTXCreateWeapon (oObjectTriTresor);
}

void KTXCreateArmor (object oObjectTrint iTresor)
{
switch (
iTresor)
    {
    case 
TRESOR_LOW KTXCreateLowArmor(oObjectTr); break;
    case 
TRESOR_MED KTXCreateMedArmor(oObjectTr); break;
    case 
TRESOR_HIGH KTXCreateHighArmor(oObjectTr); break;
    case 
TRESOR_BOSS KTXCreateBossArmor(oObjectTr); break;
    }
}

void KTXCreateKit (object oObjectTrint iTresor)
{
if (
iTresor  TRESOR_HIGHKTXCreateLowKit (oObjectTr);
else 
KTXCreateHighKit (oObjectTr);
}

void KTXCreateBijou (object oObjectTrint iTresor
{
switch (
iTresor)
    {
    case 
TRESOR_LOW KTXCreateLowBijou(oObjectTr); break;
    case 
TRESOR_MED KTXCreateMedBijou(oObjectTr); break;
    case 
TRESOR_HIGH KTXCreateHighBijou(oObjectTr); break;
    case 
TRESOR_BOSS KTXCreateBossBijou(oObjectTr); break;
    }

ATTENTION : LE SCRIPT BIBIOTHEQUE ktxinc_tresors.nss EST SUR 2 POST DIFFERENTS
(trop long encore)
SUITE DE LA BIBLIOTHEQUE

Code PHP:

  
 
// ktxinc_tresors.nss SUITE
 
 
  /************************************************************************\
  /*********************** SOUS FONCTIONS *********************************\
  \************************************************************************/
  
  
void KTXCreateGrenade (object oObjectTrint iTresor)
  {
  
string sresref;
  
int iRand;
  
  if (
iTresor == TRESOR_LOW)
      {
      
iRand Random(8) +1;
      switch (
iRand)
          {
          case 
sresref "x2_it_acidbomb" ; break; // bombe acide
          
case sresref "x2_it_firebomb" ; break; // bomb incendiaire
          
case sresref "x1_wmgrenade005";  break; // eau bénite 
          
case sresref "x1_wmgrenade001" ; break; // flasque acide
          
case sresref "x1_wmgrenade002"; break;  // feu alchm
          
case sresref "x1_wmgrenade004" ; break; // poudre asphix 
          
case sresref "x1_wmgrenade007" ; break; // pierre tonnerre 
          
case sresref "x1_wmgrenade006"; break;  // sacoche immobil 
          
}
      }
  else if (
iTresor == TRESOR_MED)
      {
      
iRand Random(5) +1;
      switch (
iRand)
          {
          case 
sresref "n2_it_holy_2" ; break; // eau bénite supérieure
          
case sresref "n2_it_acid_2" ; break; //  flasque acide sup
          
case sresref "n2_it_thun_2" ; break; // pierre tonnerre sup
          
case sresref "n2_it_chok_2" ; break; // poudre asphix sup
          
case sresref "n2_it_tang_2" ; break; // sacoche immobil sup
          
}
      }
  
  else 
      {
      
iRand Random(10) +1;
      switch (
iRand)
          {
          case 
sresref ="n2_it_holy_3" ; break; // eau bénite majeure
          
case sresref ="n2_it_holy_4" ; break; // eau bénite suprême
          
case sresref ="n2_it_acid_3" ; break; //  flasque acide maj
          
case sresref ="n2_it_acid_4" ; break; //  flasque acide supr
          
case sresref ="n2_it_thun_3" ; break; // pierre tonnerre maj
          
case sresref ="n2_it_thun_4" ; break; // pierre tonnerre supr
          
case sresref ="n2_it_chok_3" ; break; // poudre asphix maj
          
case sresref ="n2_it_chok_4" ; break; // poudre asphix supr
          
case sresref ="n2_it_tang_3" ; break; // sacoche immobil maj
          
case 10 sresref ="n2_it_tang_4" ; break;// sacoche immobil supr
          
}
      }    
  
KTXCreateTresorItem (oObjectTr,sresref);
  }
  
  
  
void KTXCreateArmeStack (object oObjectTrint iTresor)
  {
  
string sresref;
  
int iRand;
  if ((
iTresor == TRESOR_LOW)||(iTresor == TRESOR_MED))
      {
      
iRand Random(6) +1;
      switch (
iRand)
          {
          case 
sresref "nw_wthax001" ;break;// hache de lancer
          
case sresref "nw_wthdt001" ;break;// dards
          
case sresref "nw_wthsh001" ;break;// shuriken
          
case sresref "nw_wamar001" ;break;// flèches
          
case sresref "nw_wambo001" ;break;// carreaux arbalètes
          
case sresref "nw_wambu001" ;break;// billes de fronde
          
}
      if (
iRand 3iRand 100;
      else 
iRand 50;
      }
  else if (
iTresor == TRESOR_HIGH)
      {
      
iRand Random(7) +1;
      switch (
iRand)
          {
          case 
sresref "nw_wthmdt002" ;break; // dards +1
          
case sresref "nw_wthmsh002" ;break;// shuriken +1
          
case sresref ="nw_wthmax002" ;break;// hache de lancer +1
          
case sresref "nw_wammbu008";break; // billes +1
          
case sresref "nw_wammbo008"; break;//carreaux +1
          
case sresref "nw_wammar009";break; //flèches +1
          
case sresref "nw_wammar009"// arc +1
          
          
}
      if (
iRand 3iRand 100;
      else 
iRand 50;
      }
  else if (
iTresor == TRESOR_BOSS)
      {
      
iRand Random(12) +1;
      switch (
iRand)
          {
          case 
1  sresref "nw_wthmsh008"; break; // Shuriken +2 
          
case 2  sresref "nw_wthmax008"; break; // Hache de lancer +2
          
case 3  sresref "nw_wthmdt008"; break; // Dard +2
          
case 4  sresref "nw_wammar005"; break; // Flèches de glace
          
case 5  sresref "nw_wammar002"; break; // Flèches de feu
          
case 6  sresref "nw_wammar010"; break; // Flèches +2
          
case 7  sresref "nw_wammbo001"; break;  // Carreaux de glace
          
case 8  sresref "nw_wammbo005"; break; // Carreaux de feu
          
case 9  sresref "nw_wammbo009"; break; // Carreaux +2
          
case 10 sresref "nw_wammbu006"; break; // Billes de glace
          
case 11 sresref "nw_wammbu005"; break; // Billes de feu
          
case 12 sresref "nw_wammbu009"; break; // Billes +2
          
}
      if (
iRand 3iRand 100;
      else 
iRand 50;
      }
  
KTXCreateTresorItem (oObjectTr ,sresrefRandom (iRand));
  }
  
  
  
void KTXCreateWeapon (object oObjectTrint iTresor)
  {
  
string sresref;
  
int iRand;
  if (
iTresor == TRESOR_LOW)
      {
      
int iRand Random(8) +1;
      switch (
iRand)
          {
          case 
1  sresref "nw_wbwsl001"; break; //  fronde
          
case 2  sresref "nw_wbwsh001"; break; // arc court
          
case 3  sresref "nw_wblcl001"; break;  // gourdin 
          
case sresref "nw_wdbqs001"; break; // bâton
          
case sresref "nw_waxhn001"; break; // hachette
          
case sresref "nw_wswss001"; break; // épée courte
          
case sresref "nw_wspsc001"; break; // serpe
          
case sresref "nw_wplss001"; break; // lance
          
}
      }
  
  else if (
iTresor == TRESOR_MED)
      {
      
int iRand Random(24) +1;
      switch (
iRand)
          {    
          case 
1  sresref "nw_wbwxl001"; break; //arbalète légère
          
case 2  sresref "nw_wbwxh001"; break; // arbalète lourde
          
case 3  sresref "nw_wspku001"; break; // kukri 
          
case 4  sresref "nw_wbwln001"; break; // arc long
          
case sresref "nw_wswdg001"; break;  // dague 
          
case 6  sresref "nw_wblfl001"; break; //  fleaux d'armes léger
          
case sresref "nw_wswls001"; break;  // épée longue 
          
case 8  sresref "nw_wblhw001"; break; //  marteau de guerre
          
case 9  sresref "nw_wblhl001"; break; //  marteau léger
          
case 10 sresref "nw_wblml001"; break; //  masse d'armes
          
case 11 sresref "nw_wdbma001"; break; //  masse de brèche
          
case 12 sresref "nw_wblms001"; break; // morgenstern
          
case 13 sresref "nw_wplsc001"; break; // faux
          
case 14 sresref "nw_wplhb001"; break; // hallebarde
          
case 15 sresref "nw_waxbt001"; break; // hache d'armes 
          
case 16 sresref "x2_wdwraxe001"; break; //  hache naine 
          
case 17 sresref "nw_waxgr001"; break; //  Grande hache
          
case 18 sresref "nw_wswbs001"; break; // épée batarde
          
case 19 sresref "nw_wswgs001"; break; //  épée 2 mains
          
case 20 sresref "nw_wswrp001"; break; // rapière 
          
case 21 sresref "nw_wswka001"; break; // katana
          
case 22 sresref "n2_wswfl001"; break; // cimeterre 2 mains 
          
case 23 sresref "nw_wswsc001"; break; // cimeterre 
          
case 24 sresref "nw_wspka001"; break; // kama 
          
}
      }
  
  else if (
iTresor == TRESOR_HIGH)
      {
      
int iRand Random(59) +1;
      switch (
iRand)
          {  
          case 
sresref "mst_bldm_slv_3"; break;  // masse de brèche argent alch
          
case sresref "mst_bldm_cld_3"; break;  // masse de brèche fer froid
          
case sresref "mst_blms_slv_3"; break;  // morgenstern argent alchm
          
case sresref "mst_blms_cld_3"; break;  // morgenstern fer froid
          
case sresref "mst_dbqs_dsk_3"; break;  // bâton bois cendré
          
case sresref "mst_plsc_slv_3"; break;  // faux argent alchm
          
case sresref "mst_plsc_cld_3"; break;  // faux fer froid
          
case sresref "mst_plhb_slv_3"; break; // hallebarde argent alchm
          
case sresref "mst_plhb_cld_3"; break;  // hallebarde fer froid
          
case 10 sresref "mst_plss_dsk_3"; break;  // lance bois cendré
          
case 11 sresref "mst_plss_zal_3"; break;  // lance zalantar
          
case 12 sresref "x2_it_iwoodstaff"; break; // bâton bois de fer
          
case 13 sresref "mst_dbqs_zal_3"; break; // bâton zalantar        
          
case 14 sresref "mst_blfl_slv_3"; break; // fleaux d'armes argent alchimique
          
case 15 sresref "mst_blfl_cld_3"; break; // fleaux d'armes fer froid
          
case 16 sresref "mst_blcl_dsk_3"; break; // gourdin bois cendré
          
case 17 sresref "x2_it_iwoodclub"; break; // gourdin bois de fer 
          
case 18 sresref "mst_blcl_zal_3"; break; // gourdin zalantar 
          
case 19 sresref "mst_blhw_slv_3"; break; // marteau de guerre argent alchimique
          
case 20 sresref "mst_blhw_cld_3"; break; // marteau de guerre fer froid
          
case 21 sresref "mst_blhl_slv_3"; break; // marteau léger argent alchimique
          
case 22 sresref "mst_blhl_cld_3"; break; // marteau léger fer froid
          
case 23 sresref "mst_blml_slv_3"; break; // masse d'armes argent alch
          
case 24 sresref "mst_blml_cld_3"; break; // masse d'armes fer froid 
          
case 25 sresref "mst_axbt_slv_3"; break; // hache d'armes argent alchm
          
case 26 sresref "mst_axbt_cld_3"; break; // hache d'armes fer froid        
          
case 27 sresref "mst_axdv_slv_3"; break; // hache naine argent alchm
          
case 28 sresref "mst_axdv_cld_3"; break; // hache naine fer froid        
          
case 29 sresref "mst_axhn_ada_3"; break; // hachette adam
          
case 30 sresref "mst_axhn_slv_3"; break; // hachette argent alchm
          
case 31 sresref "mst_axhn_cld_3"; break; // hachette fer froid
          
case 32 sresref "mst_axhn_mth_3"; break; // hachette mithral
          
case 33 sresref "mst_axhn_drk_3"; break; // hachette sombracier
          
case 34 sresref "mst_axgr_cld_3"; break; // Grande hache fer froid
          
case 35 sresref "mst_axgr_slv_3"; break; // Grande hache argent alchm
          
case 36 sresref "mst_swsc_slv_3"; break; // cimeterre argent alchm
          
case 37 sresref "mst_swsc_cld_3"; break; // cimeterre fer froid
          
case 38 sresref "mst_swfl_slv_3"; break; // cimeterre 2 mains argent alchm
          
case 39 sresref "mst_swfl_cld_3"; break; // cimeterre 2 mains fer froid
          
case 40 sresref "mst_swrp_slv_3"; break; // rapière argent alchm
          
case 41 sresref "mst_swrp_cld_3"; break; // rapière fer froid
          
case 42 sresref "mst_swka_slv_3"; break; // katana argent alchm
          
case 43 sresref "mst_swka_cld_3"; break; // katana fer froid 
          
case 44 sresref "mst_swgs_slv_3"; break; // épée 2 mains argent alchm
          
case 45 sresref "mst_swgs_cld_3"; break; // épée 2 mains fer froid
          
case 46 sresref "mst_swbs_slv_3"; break; // épée batarde argent alchm
          
case 47 sresref "mst_swbs_cld_3"; break; // épée batarde fer froid
          
case 48 sresref "mst_swss_slv_3"; break; // épée courte argent alchm
          
case 49 sresref "mst_swss_cld_3"; break; // épée courte fer froid
          
case 50 sresref "mst_swls_slv_3"; break; // épée longue argent alchm
          
case 51 sresref "mst_swls_cld_3"; break; // épée longue fer froid
          
case 52 sresref "mst_spku_slv_3"; break; // kukri argent alchm
          
case 53 sresref "mst_spku_cld_3"; break; // kukri fer froid 
          
case 54 sresref "mst_spsc_slv_3"; break; // serpe argent alchm
          
case 55 sresref "mst_spsc_cld_3"; break; // serpe fer froid
          
case 56 sresref "mst_swdg_slv_3"; break; // dague argent alchm
          
case 57 sresref "mst_swdg_cld_3"; break; //  dague fer froid
          
case 58 sresref "mst_spka_slv_3"; break; // kama argent alchm
          
case 59 sresref "mst_spka_cld_3"; break; // kama fer froid
          
}
      }
      
  else if (
iTresor == TRESOR_BOSS)
      {
      
int iRand Random(73) +1;
      switch (
iRand)
          {
          case 
sresref "mst_axbt_ada_3"; break; //hache d'armes adam
          
case sresref "mst_axbt_mth_3"; break; // hache d'armes mithral
          
case sresref "mst_axbt_drk_3"; break; //hache d'armes sombracier
          
case sresref "mst_axdv_ada_3"; break; // hache naine adam
          
case sresref "mst_axdv_mth_3"; break; // hache naine mithral
          
case sresref "mst_axdv_drk_3"; break; // hache naine sombracier
          
case sresref "mst_axgr_ada_3"; break; // Grande hache adam
          
case sresref "mst_axgr_mth_3"; break; // Grande hache mithral
          
case sresref "mst_axgr_drk_3"; break; // Grande hache sombracier 
          
case 10 sresref "mst_swsc_ada_3"; break; // cimeterre adam
          
case 11 sresref "mst_swsc_mth_3"; break; // cimeterre mithral
          
case 12 sresref "mst_swsc_drk_3"; break; // cimeterre sombracier
          
case 13 sresref "mst_swfl_ada_3"; break; // cimeterre 2 mains adam
          
case 14 sresref "mst_swfl_mth_3"; break; // cimeterre 2 mains mithral 
          
case 15 sresref "mst_swfl_drk_3"; break; // cimeterre 2 mains sombracier
          
case 16 sresref "mst_swka_ada_3"; break; // katana adam
          
case 17 sresref "mst_swka_mth_3"; break; // katana mithral
          
case 18 sresref "mst_swka_drk_3"; break; // katana sombracier 
          
case 19 sresref "mst_swrp_ada_3"; break; // rapière adam
          
case 20 sresref "mst_swrp_mth_3"; break; // rapière mithral
          
case 21 sresref "mst_swrp_drk_3"; break; // rapière sombracier
          
case 22 sresref "mst_swgs_ada_3"; break; // épée 2 mains adam
          
case 23 sresref "mst_swgs_mth_3"; break; // épée 2 mains mithral
          
case 24 sresref "mst_swgs_drk_3"; break; // épée 2 mains sombracier
          
case 25 sresref "mst_swbs_ada_3"; break; // épée batarde adam
          
case 26 sresref "mst_swbs_mth_3"; break; // épée batarde mithral
          
case 27 sresref "mst_swbs_drk_3"; break; // épée batarde sombracier
          
case 28 sresref "mst_swss_ada_3"; break; // épée courte adam
          
case 29 sresref "mst_swss_mth_3"; break; // épée courte mithral
          
case 30 sresref "mst_swss_drk_3"; break; // épée courte sombracier
          
case 31 sresref "mst_swls_ada_3"; break; // épée longue adam
          
case 32 sresref "mst_swls_mth_3"; break; // épée longue mithral
          
case 33 sresref "mst_swls_drk_3"; break; // épée longue sombracier
          
case 34 sresref "mst_swdg_ada_3"; break; // dague adam
          
case 35 sresref "mst_swdg_mth_3"; break; // dague mithral
          
case 36 sresref "mst_swdg_drk_3"; break; // dague sombracier
          
case 37 sresref "mst_spka_ada_3"; break; // kama adam
          
case 38 sresref "mst_spka_mth_3"; break; // kama mithral
          
case 39 sresref "mst_spka_drk_3"; break; // kama smbracier
          
case 40 sresref "mst_spku_ada_3"; break; // kukri adam
          
case 41 sresref "mst_spku_mth_3"; break; // kukri mithral
          
case 42 sresref "mst_spku_drk_3"; break; // kukri sombracier
          
case 43 sresref "mst_spsc_ada_3"; break; // serpe adam
          
case 44 sresref "mst_spsc_mth_3"; break; // serpe mithral
          
case 45 sresref "mst_spsc_drk_3"; break; // serpe sombracier
          
case 46 sresref "mwr_bwxl_dsk_4"; break; // arbalète légère bois cendré
          
case 47 sresref "mwr_bwxh_dsk_4"; break; // arbalète lourde bois cendré
          
case 48 sresref "mwr_bwsh_dsk_4"; break; // arc court bois cendré
          
case 49 sresref "mst_blfl_drk_3"; break; // fleaux d'armes sombracier
          
case 50 sresref "mst_blfl_ada_3"; break; //  fleaux d'armes adamantium
          
case 51 sresref "mst_blhw_ada_3"; break; // marteau de guerre adamantium
          
case 52 sresref "mst_blhw_mth_3"; break; // marteau de guerre mithral
          
case 53 sresref "mst_blhw_drk_3"; break; // marteau de guerre sombracier
          
case 54 sresref "mst_blhl_ada_3"; break; // marteau léger adamantium
          
case 55 sresref "mst_blhl_mth_3"; break; // marteau léger mithral 
          
case 56 sresref "mst_blhl_drk_3"; break; // marteau léger sombracier
          
case 57 sresref "mst_blml_ada_3"; break; // masse d'armes adamantium
          
case 58 sresref "mst_blml_mth_3"; break; // masse d'armes mithral
          
case 59 sresref "mst_blml_drk_3"; break; // masse d'armes sombracier
          
case 60 sresref "mst_blms_mth_3"; break;  // morgenstern mithral
          
case 61 sresref "mst_blms_drk_3"; break;  // morgenstern sombracier
          
case 62 sresref "mst_plsc_ada_3"; break;  // faux adam
          
case 63 sresref "mst_plsc_mth_3"; break;  // faux mithral
          
case 64 sresref "mst_plsc_drk_3"; break;  // faux sombracier
          
case 65 sresref "mst_plhb_ada_3"; break;  // hallebarde adamantium
          
case 66 sresref "mst_plhb_mth_3"; break;  // hallebarde mithral
          
case 67 sresref "mst_plhb_drk_3"; break;  // hallebarde sombracier
          
case 68 sresref "mst_bldm_ada_3"; break;  // masse de brèche adam
          
case 69 sresref "mst_bldm_mth_3"; break;  // masse de brèche mithral
          
case 70 sresref "mst_bldm_drk_3"; break;  // masse de brèche sombracier
          
case 71 sresref "mst_blms_ada_3"; break;  // morgenstern adam        
          
case 72 sresref "nw_wbwmxh002"; break;  // arbalète lourde +1 504        
          
case 73 sresref "nw_wbwmxl002"; break;  // arbalète légère +1 474  
          
          
}
      }
  
KTXCreateTresorItem (oObjectTr,sresref);
  }
  
  
  
  
void KTXCreateLowArmor(object oObjectTr)
  {
  
string sresref;
  
int iRand Random(32) +1;
  switch (
iRand)
      {
      case 
sresref "ktxbottesecailles" ; break; // bottes écailles
      
case sresref "ktxbottesmaille" ; break; // bottes mailles
      
case sresref "ktxbottescuir" ; break; // bottes cuir
      
case sresref "ktxbottespeau" ; break; // bottes peau
      
case sresref "ktxbottesplaques" ; break; // bottes plates
      
case sresref "nw_ashsw001" ; break; // rondache 
      
case sresref "nw_ashlw001" ; break; // ecu
      
case sresref "nw_arhe004" ; break; // casque panache
      
case sresref "nw_arhe002" ; break; // casque pointes
      
case 10 sresref "nw_arhe003" ; break; // casque ailé
      
case 11 sresref "helm_scale" ; break; // casque écailles
      
case 12 sresref "nw_aarcl001" ; break; // armure cuir
      
case 13 sresref "helm_leather" ; break; // casque cuir
      
case 14 sresref "helm_chain" ; break; // casque mailles
      
case 15 sresref "ktx_gantecailles" ; break; // gants écailles
      
case 16 sresref "ktx_gantmailles" ; break; // gants maille
      
case 17 sresref "ktx_gantcuir" ; break; // gants cuir
      
case 18 sresref "ktx_gantpeau" ; break; // gants peau
      
case 19 sresref "nw_aarcl001" ; break; // armure cuir
      
case 20 sresref "nw_aarcl002" ; break; // armure cuir clouté
      
case 21 sresref "shirt_druid" ; break;
      case 
22 sresref "shirt_ranger" ; break;
      case 
23 sresref "shirt_monk" ; break;
      case 
24 sresref "shirt_rogue" ; break;
      case 
25 sresref "shirt_barb" ; break;
      case 
26 sresref "shirt_cleric" ; break;
      case 
27 sresref "shirt_sorcerer" ; break;
      case 
28 sresref "shirt_wizard" ; break;
      case 
29 sresref "nw_cloth022" ; break;
      case 
30 sresref "nw_cloth023" ; break;
      case 
31 sresref "nw_cloth029" ; break;
      case 
32 sresref "nw_cloth007" ; break;
      }
  
KTXCreateTresorItem (oObjectTr,sresref);
  }
  
  
  
  
void KTXCreateMedArmor(object oObjectTr)
  {
  
string sresref;
  
int iRand Random(11) +1;
  switch (
iRand)
      {
      case 
sresref "nw_ashto001" ;break;// pavois  
      
case sresref "n2_it_arhelmcw"; break; // casque garde (concentr +1)
      
case sresref "x2_it_arhelm03"; break; // casque guerrier (concentr +1)
      
case sresref "x2_it_arhelm01"; break; // casque paladin (concentr +1)
      
case sresref "nw_arhe005"; break; // casque à bois de cerf (concentr +1)
      
case sresref "nw_arhe001" ;break; // petit casque (concentr +1)
      
case sresref "nw_aarcl012"; break; // chemise mailles
      
case sresref "nw_aarcl008"; break; // armure peau 
      
case sresref "nw_aarcl010"; break; // cuirasse
      
case 10 sresref "nw_aarcl004"; break; // cottes mailles 
      
case 11 sresref "x0_it_mboots001"; break; // bottes des terres gelées 91
      
}
  
KTXCreateTresorItem (oObjectTr,sresref);
  }
  
  
void KTXCreateHighArmor(object oObjectTr)
  {
  
string sresref;
  
int iRand Random(27) +1;
  switch (
iRand)
      {
      case 
sresref "mwa_shhv_ada_4"; break; // ecu adam
      
case sresref "mwa_shhv_dsk_3"; break; // ecu bois cendré
      
case sresref "x2_it_iwoodshldl"; break; // ecu bois fer
      
case sresref "mwa_shhv_mth_4"; break; // ecu mithral
      
case sresref "mwa_shhv_drk_3"; break; // ecu sombracier
      
case sresref "mwa_shhv_zal_3"; break; // ecu zalantar
      
case sresref "mwa_shtw_mth_4"; break; // pavois mithral
      
case sresref "mwa_shtw_zal_3" ;break; // pavois zalantar
      
case sresref "mwa_shlt_ada_4"; break; // rondache adam
      
case 10 sresref "mwa_shlt_dsk_3" ;break; // rondache bois cendré
      
case 11 sresref "x2_it_ironwshlds"; break; // rondache bois fer
      
case 12 sresref "mwa_shlt_mth_4"; break; // rondache mithral
      
case 13 sresref "mwa_shlt_drk_3"; break; // rondache sombracier
      
case 14 sresref "mwa_shlt_zal_3"; break; // rondache zalantar
      
case 15 sresref "nw_aarcl006"; break; // armure plaques
      
case 16 sresref "nw_aarcl011"; break; // crevice
      
case 17 sresref "nw_aarcl007"; break; // harnois 
      
case 18 sresref "nw_aarcl003"; break; // armure écailles
      
case 19 sresref "mwa_mdcm_ada_4"; break; // cottes mailles adam
      
case 20 sresref "mwa_mdcm_mth_4"; break; // cottes mailles mithral
      
case 21 sresref "mwa_mdcm_drk_3"; break; // cottes mailles sombracier
      
case 22 sresref "mwa_mdbp_drk_3"; break; // cuirasse sombracier 
      
case 23 sresref "nw_it_mbracer002"; break;  // bracelet armure +1
      
case 24 sresref "x0_it_mboots002"; break;  // bottes inférieures acrobatie 231
      
case 25 sresref "nw_it_mbelt010"; break;  // ceinture bagarreur 879
      
case 26 sresref "nw_it_mbelt011"; break;  // ceinture archer 879
      
case 27 sresref "nw_it_mbelt009"; break;  // ceinture épéiste 879
      
      
}
  
KTXCreateTresorItem (oObjectTr,sresref);
  }
  
  
void KTXCreateBossArmor(object oObjectTr)
  {
  
string sresref;
  
int iRand Random(22) +1;
  switch (
iRand)
      {
      case 
sresref "mwa_shtw_drk_3"; break;  // pavois sombracier
      
case sresref "mwa_shtw_ada_4"; break;  // pavois adam
      
case sresref "mwa_shtw_dsk_3"; break;  // pavois bois cendré
      
case sresref "x2_it_ironwshldt"; break;  // pavois bois fer
      
case sresref "mwa_hvhp_ada_4"; break; // armure plaques adam
      
case sresref "mwa_hvhp_mth_4" ;break;  // armure plaques mithral
      
case sresref "mwa_hvhp_drk_3" ;break;  // armure plaques sombracier
      
case sresref "mwa_hvbm_ada_3"; break;  // crevice adam
      
case sresref "mwa_hvbm_mth_3" ;break;  // crevice mithral
      
case 10 sresref "mwa_hvbm_drk_3"; break;  // crevice sombracier
      
case 11 sresref "mwa_hvfp_ada_4"; break;  // harnois adam
      
case 12 sresref "mwa_hvfp_mth_4" ;break;  // harnois mithral
      
case 13 sresref "mwa_hvfp_drk_3"; break;  // harnois sombracier
      
case 14 sresref "mwa_mdsm_ada_4"; break;  // armure écailles adam
      
case 15 sresref "mwa_mdsm_mth_4"; break;  // armure écailles mithral
      
case 16 sresref "mwa_mdsm_drk_3"; break;  // armure écailles sombracier
      
case 17 sresref "nw_maarcl098"; break;  // cape protection Vs chaos 903
      
case 18 sresref "nw_maarcl097"; break;  // cape protection Vs mal 903
      
case 19 sresref "nw_maarcl096"; break;  // cape protection Vs bien 903
      
case 20 sresref "nw_maarcl099"; break;  // cape protection Vs Loi 903
      
case 21 sresref "nw_maarcl055"; break;  // cape protection +1 657
      
case 22 sresref "x2_it_adahelm"; break;  //casque adam
       
      
}
  
KTXCreateTresorItem (oObjectTr,sresref);
  }
 
  
  
  
  
void KTXCreateLowKit (object oObjectTr)
  {
  
string sresref;
  
int iRand Random(32) +1;
      switch (
iRand)
      {
      
//trousse à piège
      // faible - moyen
      
case sresref "nw_it_trap033"; break;
      case 
sresref "nw_it_trap034"; break;
      case 
sresref "nw_it_trap021"; break;
      case 
sresref "nw_it_trap022"; break;
      case 
sresref "nw_it_trap009"; break;
      case 
sresref "nw_it_trap010"; break;
      case 
sresref "nw_it_trap041"; break;
      case 
sresref "nw_it_trap042"; break;
      case 
sresref "nw_it_trap018"; break;
      case 
10 sresref "nw_it_trap017"; break;
      case 
11 sresref "nw_it_trap029"; break;
      case 
12 sresref "nw_it_trap030"; break;
      case 
13 sresref "nw_it_trap025"; break;
      case 
14 sresref "nw_it_trap026"; break;
      case 
15 sresref "nw_it_trap013"; break;
      case 
16 sresref "nw_it_trap014"; break;
      case 
17 sresref "nw_it_trap001"; break;
      case 
18 sresref "nw_it_trap002"; break;
      case 
19 sresref "nw_it_trap005"; break;
      case 
20 sresref "nw_it_trap006"; break;
      case 
21 sresref "nw_it_trap037"; break;
      case 
22 sresref "nw_it_trap038"; break;
      case 
23 sresref "nw_it_medkit001"; break; // trousse 1er secours +1
      
case 24 sresref "nw_it_medkit002"; break; // trousse 1er secours +3
      
case 25 sresref "nw_it_picks001"; break; // outils voleur 1
      
case 26 sresref "nw_it_picks002"; break; // outils voleur 3
      
case 27 sresref "nw_it_medkit001"; break; // trousse 1er secours +1
      
case 28 sresref "nw_it_medkit002"; break; // trousse 1er secours +3
      
case 29 sresref "nw_it_picks001"; break; // outils voleur 1
      
case 30 sresref "nw_it_picks002"; break; // outils voleur 3
      
case 31 sresref "nw_it_medkit001"; break; // trousse 1er secours +1
      
case 32 sresref "nw_it_medkit001"; break; // trousse 1er secours +1
      
}
  
KTXCreateTresorItem (oObjectTr,sresref);
  }
  
  
  
void KTXCreateHighKit (object oObjectTr)
  {
  
string sresref;
  
int iRand Random(32) +1;
  switch (
iRand)
      {
      
// trousse à piège
      // fort - mortel 
      
case sresref "nw_it_trap035"; break;
      case 
sresref "nw_it_trap036"; break;
      case 
sresref "nw_it_trap024"; break;
      case 
sresref "nw_it_trap023"; break;
      case 
sresref "nw_it_trap012"; break;
      case 
sresref "nw_it_trap011"; break;
      case 
sresref "nw_it_trap044"; break;
      case 
sresref "nw_it_trap043"; break;
      case 
sresref "nw_it_trap020"; break;
      case 
10 sresref "nw_it_trap019"; break;
      case 
11 sresref "nw_it_trap031"; break;
      case 
12 sresref "nw_it_trap032"; break;
      case 
13 sresref "nw_it_trap028"; break;
      case 
14 sresref "nw_it_trap027"; break;
      case 
15 sresref "nw_it_trap016"; break;
      case 
16 sresref "nw_it_trap015"; break;
      case 
17 sresref "nw_it_trap004"; break;
      case 
18 sresref "nw_it_trap003"; break;
      case 
19 sresref "nw_it_trap008"; break;
      case 
20 sresref "nw_it_trap007"; break;
      case 
21 sresref "nw_it_trap039"; break;
      case 
22 sresref "nw_it_trap040"; break;
      case 
23 sresref "nw_it_medkit003"; break; // trousse 1er secours +6
      
case 24 sresref "nw_it_medkit004"; break; // trousse 1er secours +10
      
case 25 sresref "nw_it_picks003"; break; // outils voleur 6
      
case 26 sresref "nw_it_picks004"; break; // outils voleur 10
      
case 27 sresref "nw_it_medkit003"; break; // trousse 1er secours +6
      
case 28 sresref "nw_it_medkit004"; break; // trousse 1er secours +10
      
case 29 sresref "nw_it_picks003"; break; // outils voleur 6
      
case 30 sresref "nw_it_picks004"; break; // outils voleur 10
      
case 31 sresref "nw_it_medkit003"; break; // trousse 1er secours +6
      
case 32 sresref "nw_it_picks003"; break; // outils voleur 6
      
}
  
KTXCreateTresorItem (oObjectTr,sresref);
  }
   
  
void KTXCreateLowBijou (object oObjectTr)
  {
  
string sresref;
  
int iRand Random(6) +1;
  switch (
iRand)
      {
      case 
sresref "nw_it_gem007"; break; // Malachite 10
      
case sresref "nw_it_gem015"; break; // Quartz fluorescent 20
      
case sresref "cft_gem_03"; break; // Obsidienne 15
      
case sresref "cft_gem_03"; break; // Obsidienne 15
      
case sresref "nw_it_gem007"; break; // Malachite 10
      
case sresref "cft_gem_03"; break; // Amethyste 40
      
}
  
KTXCreateTresorItem (oObjectTr,sresref);
  }
  
  
  
void KTXCreateMedBijou (object oObjectTr)
  {
  
string sresref;
  
int iRand Random (6) +1;
  switch (
iRand)
      {
      case 
sresref "nw_it_mring022"; break; // anneau argent 213
      
case sresref "nw_it_gem003"; break; // Améthyste 100
      
case sresref "nw_it_mneck020"; break; // Collier en cuivre 99
      
case sresref "nw_it_mring021"; break; // anneau cuivre
      
case sresref "nw_it_gem002"; break; // agathe feu 50
      
case sresref "cft_gem_01"; break; // Héliotrope 40
      
}
  
KTXCreateTresorItem (oObjectTr,sresref);
  }
  
  
  
void KTXCreateHighBijou (object oObjectTr)
  {
  
string sresref;
  
int iRand Random(6) +1;
  switch (
iRand)
      {
      case 
sresref "nw_it_mneck021"; break; // Collier en argent 499
      
case sresref "nw_it_mring023"; break; // anneau en or
      
case sresref "nw_it_gem011"; break; // grenat 300
      
case sresref "nw_it_gem001";  break;// pierre verte 200 
      
case sresref "nw_it_gem014"; break; // Aventurine 125
      
case sresref "nw_it_gem004"; break; // Phénalope 150
      
}
  
KTXCreateTresorItem (oObjectTr,sresref);
  }
  
  
void KTXCreateBossBijou (object oObjectTr)
  {
  
string sresref;
  
int iRand Random(12) +1;
  switch (
iRand)
      {
      case 
sresref "nw_it_gem013"; break; // Alexandrite 500
      
case sresref "nw_it_gem006"; break; // rubis 675
      
case sresref "nw_it_gem009"; break; // Opale de feu 750
      
case sresref "nw_it_gem013"; break;  // Alexandrite 500
      
case sresref "nw_it_gem010"; break;  // Topaze 600
      
case sresref "nw_it_mneck022"; break; // Collier en or 2800
      
case sresref "nw_it_gem013"; break;  // Alexandrite 500
      
case sresref "nw_it_gem013"; break;  // Alexandrite 500
      
case sresref "nw_it_gem013"; break;  // Alexandrite 500
      
case 10 sresref "nw_it_gem011"; break; // grenat 300
      
case 11 sresref "nw_it_mneck020"; break; // Collier en cuivre 99
      
case 12 sresref "nw_it_mring021"; break; // anneau cuivre
      
}
  
KTXCreateTresorItem (oObjectTr,sresref);
  }
  
  
  
// retourne une sVal de type string à partir d'un entier iVal
  // sVal contiendra toujours 3 caractères 
  // ex : iVal = 13 ==> sVal = "013"
  
string ConvertInt(int iVal)
  {
  
string sVal;
  if (
iVal 99sVal IntToString (iVal);
  else if (
iVal 9sVal =("0" IntToString (iVal));
  else 
sVal = ("00" IntToString (iVal));
  return 
sVal;
  }
  
  
// retourne la variable de type integer nommée "TRESOR_TYPE" / sVarTresorType
  // sur oObjectControl.
  
int GetTresorType (object oObjectControl)
  {
  
int iVariabl GetLocalInt (oObjectControlsVarTresorType);
  return 
iVariabl;
  }
  
  
  
/*
int GetIsCoffreCanRespawn (object oCoffre)
  {
  int nOuvert = GetLocalInt (oCoffre, "DEJAOUVERT");
  int iCanRespawn = FALSE;
  if (nOuvert == 0) iCanRespawn = TRUE;
  else 
      {
// respawn du coffre passé 3 heures de jeu
      int nTemps = GetLocalInt (oCoffre, "time");
      int nHeure = (GetCalendarDay()*24)+ (GetTimeHour());
      int Ecart = nHeure - nTemps;
      if (Ecart > 3) iCanRespawn = TRUE;

      // int nTemps = GetLocalInt (oCoffre, "time");
      // int nHeure = (GetCalendarDay()*24*60)+ (GetTimeHour()*60) + GetTimeMinute();
      // int Ecart = nHeure - nTemps;
      // if (Ecart >= 180) iCanRespawn = TRUE;
      }
  return iCanRespawn;
  } 
précisions :
- on peut aussi varier le type de trésor (avec la variable TRESOR_TYPE)
- les parchemins ne vont pas au delà du niveau 6 ou 7
- il doit exister une petite dizaine d'items spéciaux (pour remplacer les luth et autres instruments de musique afin qu'ils collent à la gamme de prix, les divers items pour manger et boire dans mon module) et ils sont tous au niveau le plus faible des trésors

voili voilou !
Citation :
Publié par KorTeX
voilà ! et 1700 lignes de codes en plus !
Kortex : tu es un grand malade ! L'accoutumance à l'Electron devrait être pris en charge par la sécurité sociale

Et si je me souvient bien, il a listé plus de 980 Blueprint d'objets qu'il a soigneusement classé jusqu'à 2h00 du mat'
Sympa comme système, pouvoir gérer les drops c'est plus qu'intéressant sur un serveur persistant!

Petites questions:
- est-ce que tu a mis à jour la liste des items et autres avec MOTB?

- Je ne comprends pas ce morceau de code (je n'ai pas tout lu encore) :

Code PHP:

  void KTXCreateLowBijou (object oObjectTr)
  {
  
string sresref;
  
int iRand Random(6) +1;
  switch (
iRand)
      {
      case 
sresref "nw_it_gem007"; break; // Malachite 10
      
case sresref "nw_it_gem015"; break; // Quartz fluorescent 20
      
case sresref "cft_gem_03"; break; // Obsidienne 15
      
case sresref "cft_gem_03"; break; // Obsidienne 15
      
case sresref "nw_it_gem007"; break; // Malachite 10
      
case sresref "cft_gem_03"; break; // Amethyste 40
      

Pourquoi répéter gem007 et gem_03 si il y le random? gem_03 est Obsidienne 15 et Amethyste 40?

Merci KorTeX.

PS: écrire un message dans ce sujet prends un temps pas possible, pourrais-tu, stp, mettre ces scripts dans un fichier à telecharger stp?
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés