Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > [sripte] Jeux de carte merveilleux
[sripte] Jeux de carte merveilleux
Par Jaha Effect le 6/12/2002 à 19:23:23 (#2727015)
La Balance: Changement d'alignement instantané.
Les actes du personnage sont évalués et jugés indignes de l'éthique qu'il a faite sienne. Il n'a d'autre choix que de changer d'alignement et d'en prendre un qui soit radicalement différent. S'il ne se comporte pas en accord avec les préceptes de son nouvel alignement, il acquière un niveau négatif.
Voilà, juste un petit problème avec ce scripte, c'est que pour les alignements neutre, car l'alignement directement opposé au neutre je vois pas. J'aimerais avoir l'avis des Master D&D pour savoir comment ils géreraient ça.void main()
{
object oPC = GetPCSpeaker();
int nAlignementGE = GetAlignmentGoodEvil(oPC);
int nAlignementLC = GetAlignmentLawChaos(oPC);
int iGE = GetGoodEvilValue(oPC);
int iCL = GetLawChaosValue (oPC);
int iDiceGE = d2(1); // tirage aleatoire sur un d2 alignement good/evil
int iDiceCL = d2(1); // tirage aleatoire sur un d2 alignement lawful/chaotic
if (nAlignementGE == ALIGNMENT_EVIL && nAlignementLC == ALIGNMENT_CHAOTIC)
{
AdjustAlignment (oPC, ALIGNMENT_GOOD, ((iGE)+100));
AdjustAlignment (oPC, ALIGNMENT_LAWFUL, ((iCL)+100));
}
else if (nAlignementGE == ALIGNMENT_EVIL && nAlignementLC == ALIGNMENT_NEUTRAL)
{
AdjustAlignment (oPC, ALIGNMENT_GOOD, ((iGE)+100));
}
else if (nAlignementGE == ALIGNMENT_EVIL && nAlignementLC == ALIGNMENT_LAWFUL)
{
AdjustAlignment (oPC, ALIGNMENT_GOOD, ((iGE)+100));
AdjustAlignment (oPC, ALIGNMENT_CHAOTIC, ((iCL)+100));
}
else if (nAlignementGE == ALIGNMENT_NEUTRAL && nAlignementLC == ALIGNMENT_CHAOTIC)
{
AdjustAlignment (oPC, ALIGNMENT_LAWFUL, ((iCL)+100));
}
else if (nAlignementGE == ALIGNMENT_NEUTRAL && nAlignementLC == ALIGNMENT_NEUTRAL)
{
//////////////////////////////////////////////////////////////////////////////////
if (iDiceGE == 1) // resultat alignement good/evil
{
AdjustAlignment (oPC, ALIGNMENT_GOOD, iGE);
}
else
{
AdjustAlignment (oPC, ALIGNMENT_EVIL, iGE);
}
/////////////////////////////////////////////////////////////////////////////////
if (iDiceCL == 1) // resultat alignement lawful/chaotic
{
AdjustAlignment (oPC, ALIGNMENT_LAWFUL, iCL);
}
else
{
AdjustAlignment (oPC, ALIGNMENT_CHAOTIC, iCL);
}
/////////////////////////////////////////////////////////////////////////////////
}
else if (nAlignementGE == ALIGNMENT_NEUTRAL && nAlignementLC == ALIGNMENT_LAWFUL)
{
AdjustAlignment (oPC, ALIGNMENT_CHAOTIC, ((iCL)+100));
}
else if (nAlignementGE == ALIGNMENT_GOOD && nAlignementLC == ALIGNMENT_CHAOTIC)
{
AdjustAlignment (oPC, ALIGNMENT_EVIL, ((iGE)+100));
AdjustAlignment (oPC, ALIGNMENT_LAWFUL, ((iCL)+100));
}
else if (nAlignementGE == ALIGNMENT_GOOD && nAlignementLC == ALIGNMENT_NEUTRAL)
{
AdjustAlignment (oPC, ALIGNMENT_EVIL, ((iGE)+100));
}
else if (nAlignementGE == ALIGNMENT_GOOD && nAlignementLC == ALIGNMENT_LAWFUL)
{
AdjustAlignment (oPC, ALIGNMENT_EVIL, ((iGE)+100));
AdjustAlignment (oPC, ALIGNMENT_CHAOTIC, ((iCL)+100));
}
}
Jaha Effect :D
Par Ormus le 6/12/2002 à 20:02:40 (#2727320)
Par Jaha Effect le 7/12/2002 à 4:27:28 (#2729602)
Jaha Effect :D
Par Théranthil le 7/12/2002 à 8:31:43 (#2729869)
Par coolstar le 7/12/2002 à 8:39:46 (#2729876)
Provient du message de Ormus
Raisonnement très juste!! ;)
Je suis pas un Master D&D mais l'opposé d'un alignement neutre c'est un alignement extrême non ? :p
Par Caillou PierreSang le 7/12/2002 à 11:35:02 (#2730406)
Provient du message de Ormus
Je suis pas un Master D&D mais l'opposé d'un alignement neutre c'est un alignement extrême non ? :p
Euh.... non.... L'opposé d'un alignement Neutre Strict, c'est l'alignement Neutre Strict..... ;)
Et l'opposé d'un alignement Chaotique Neutre, c'est Loyal Neutre (dans un changement d'alignement par inversion, seules les composantes Loyale/Chaotique et Bon/Mauvais s'inversent, le Neutre, restant Neutre, ce qui entre nous me parait très logique, vu que ça transforme un 100% bon en 100% mauvais (symétrie parfaite donc) et pour un neutre (disons 50% bon, 50% mauvais), le symétrique sera exactement le même.) Vous me suivez ?:D
Mais je reviens de lire la description de la carte de la balance... et j'ai moi aussi quelques doutes.... Les actes du personnage sont évalués et jugés indignes de l'éthique qu'il a fait sienne. Il n'a d'autre choix que de changer d'alignment et d'en prendre un qui soit radicalement différent.
En effet, c'est assez ambigu.... Ce que j'énonçais plus haut était valable pour un "Heaume d'inversion d'alignment" ou encore le "Plan des Miroirs", mais pour la Balance... en effet... Vu la description, on pourrait penser que les alignment extrèmes (LB, CB , LM et CM) répugnent un Neutre Strict et donc cela serait le "changement radicalement différent"...
A méditer.... :rasta:
Par Azrael07 le 7/12/2002 à 11:41:03 (#2730430)
non ??
Par Caillou PierreSang le 7/12/2002 à 12:58:57 (#2730795)
Provient du message de Azrael07
mouai enfin bon c plus marrant quand l'alignement passe de neutre a mauvais (ou bon) que kd il reste comme ca sans bouger
non ??
En effet, cela est plus intéressant de changer l'alignement, sinon, je ne vois pas l'utilité d'une telle carte. Mais, en revanche, je suis absolument sûr que l'alignement directement opposé au neutre strict est le neutre strict lui même.
Par contre, la lecture de la description d'une telle carte laisse une ambiguïté d'interprétation ce qui permet à Jaha de faire comme il veut. ;)
Peut-être un conseil : Pourquoi pas faire qu'un Neutre Strict utilisant la carte se retrouve de façon "aléatoire" avec un alignement extrême : LB, CB , LM ou CM.... (au fait je précise que les alignements extrêmes ne sont pas seulement LB et CM) :p
PS : C'est un très bonne initiative Jaha Effect, et bravo pour ce script, continue !
Bon on change le scripte
Par Jaha Effect le 7/12/2002 à 14:38:42 (#2731381)
Ex: un chaotic/neutre deviendra loyal neutre
Par contre l'alignement neutre absolu est transformé aléatoirement sur tirage de d2.
En théorie, il peux prendre les alignements CB/CE/LB/LE. Je teste et je vous dis :)
Par contre j'ai remarqué un truc assez génial, c'est que le pauvre druide neutre absolu ne pourra plus exercer sa vocation tant qu'il n'aura pas retrouvé sont alignement neutre Mouahahahahaha !!!
Jaha Effect :D
Par Jaha Effect le 7/12/2002 à 14:44:30 (#2731407)
Si quelqu'un a une idée ... :D
Jaha Effect :D
Par Azrael07 le 7/12/2002 à 15:06:33 (#2731534)
if (iDiceGE == 1) // resultat alignement good/evil
idem pour l'autre
deja corrige ca et essaye
Par Jaha Effect le 7/12/2002 à 15:17:46 (#2731583)
Merci pour tes lumières Azrael :)
C'est les druides et les paladins qui vont être content :)
Par contre je suis vert, malgrès leur changement de d'alignement et le fait qu'ils ne peuvent plus évoluer dans leur classe, les paladins ne perdent pas le bénéfice des dons que leur octroie leur dieu malgrès qu'il se soit eloigné de lui, pas très RP tout ça :(
Jaha Effect :D
Par Mastokk le 7/12/2002 à 16:25:10 (#2731926)
J'ai d'ailleurs moi-même lié l'autre sujet à celui-ci.
Par Jaha Effect le 7/12/2002 à 16:36:52 (#2731983)
Jaha Effect :D
[script] Le Bouffon
Par Jaha Effect le 8/12/2002 à 21:43:23 (#2740042)
Le Bouffon: Gain de 10000 XP ou possibilité de tirer deux nouvelles cartes.
Tarots: XII. Le Pendu
Cartes à jouer : Joker Rouge.
Cette carte est systématiquement mise de coté quand on la tire (au même titre que le fou). Les cartes supplémentaires indiquées sont optionnelles (le personnage n'est pas obligé de les tirer).
Un tout petit scripte très très simple à placer dans action conséquente.
Pour ce qui est du tirage des cartes supplement taire c'est contenu dans le Dialogue du PNJ (le maître du Destin), les starting conditions, je les mettrais quand tout sera prêt (surtout le script de tirage des cartes).void main()
{
object oPlayer = GetFirstPC();
GiveXPToCreature(oPlayer, 10000);
}
Pas vraiment besoin de commenter, mais bon ça fait parti des lames alors je le met ici :D
Voilà j'ai remis à la suite de ce poste pour centraliser les infos :)
Jaha Effect :D
Par coolstar le 8/12/2002 à 22:11:19 (#2740198)
Provient du message de Jaha Effect
Ben?? Ca peut pas se scripter ça ?? :confus:
Par contre je suis vert, malgrès leur changement de d'alignement et le fait qu'ils ne peuvent plus évoluer dans leur classe, les paladins ne perdent pas le bénéfice des dons que leur octroie leur dieu malgrès qu'il se soit eloigné de lui, pas très RP tout ça :(
:D
Par Azrael07 le 8/12/2002 à 22:41:45 (#2740410)
<=========== pas le temp
Par eMRaistlin le 8/12/2002 à 23:21:09 (#2740663)
Si on pouvais remplacer les classes des PC par script, ce serait plus pratique...
Le Chevalier
Par Jaha Effect le 13/12/2002 à 14:41:52 (#2777528)
Le Chevalier: Obtention des services d'un guerrier de niveau 4.
Tarots: Vallet d'épées
Cartes à jouer : Valet de Coeur.
Le guerrier vient de nulle part et sert son nouveau maître jusqu'à la mort. Bien qu'il s'agisse d'une créature artificielle, sa race, son espèce et son sexe semblent les mêmes que ceux du personnage. Il est équipé comme indiqué dans l'exemple de guerrier du manuel des joueurs (page 37) (je vais aller voir ça).
Equipement: épée batarde (1D10, crit 19-20/*2, 5kg, M, tranchant), Armure: vitesse de déplacement 6,5m au lieu de 5m.
Là on a besoin d'un peu plus de préparation pour mettre en place cette lame.
En plus du scripte vous aurez aussi besoin d'un petit dialogue du Chevalier
Voici le scripte en lui même avec en commentaire toute les étapes a suivre pour la mise en place de cette lame du jeu de carte merveilleux// 1- creer 1 guerrier niveau 4 humain masculin avec l'equipement de la description
// 2- lui attribuer une faction marchand
// 3- attribuer les scripts suivants au PNJ
// OnBlocked : nw_ch_ace
// OnCombatRoundEnd : nw_ch_ac3
// OnConversation : nw_ch_ac4
// OnDamaged : nw_ch_ac6
// OnDeath : nw_ch_ac7
// OnDisturbed : nw_ch_ac8
// OnHeartbeat : nw_ch_ac1
// OnPerception : nw_ch_ac2
// OnPhysicalAttacked : nw_ch_ac5
// OnRested : nw_ch_aca
// OnSpawn : nw_ch_ac9
// OnSpellCastAt : nw_ch_acb
// OnUserDefined : nw_ch_acd
// 4- Attribuer le dialogue de Chevalier
// 5- copier le personnage et changer les attributs de race et de sexe pour avoir les creatures suivantes
// Humain homme / femme
// Nain homme / femme
// Elf homme / femme
// Gnome homme / femme
// Halfling homme / femme
// Demi-Orque homme / femme
// Demi-Elf homme / femme
// 6- Noter les resref de chaque cratures car ils sont utilise dans le script
// 7- Creer un WayPoint avec le Tag NW_CHEVALIER
void main()
{
object oPC = GetPCSpeaker();
int nRace = GetRacialType(oPC);
int nGender = GetGender(oPC);
location lSpawn = GetLocation(GetWaypointByTag("NW_CHEVALIER"));
// race humain
if (nRace == RACIAL_TYPE_HUMAN && nGender == GENDER_MALE)
{
CreateObject(OBJECT_TYPE_CREATURE, "lechevalier", lSpawn); // remplacer "lechevalier" par le resref de votre creature
}
else if (nRace == RACIAL_TYPE_HUMAN && nGender == GENDER_FEMALE)
{
CreateObject(OBJECT_TYPE_CREATURE, "lechevalier001", lSpawn);// comme precedement, remplacer par le resref de votre creature
}
// race nain
else if (nRace == RACIAL_TYPE_DWARF && nGender == GENDER_MALE)
{
CreateObject(OBJECT_TYPE_CREATURE, "lechevalier002", lSpawn); // idem
}
else if (nRace == RACIAL_TYPE_DWARF && nGender == GENDER_FEMALE)
{
CreateObject(OBJECT_TYPE_CREATURE, "lechevalier003", lSpawn); // idem
}
// race elf
else if (nRace == RACIAL_TYPE_ELF && nGender == GENDER_MALE)
{
CreateObject(OBJECT_TYPE_CREATURE, "lechevalier004", lSpawn); // idem
}
else if (nRace == RACIAL_TYPE_ELF && nGender == GENDER_FEMALE)
{
CreateObject(OBJECT_TYPE_CREATURE, "lechevalier005", lSpawn); // idem
}
// race gnome
else if (nRace == RACIAL_TYPE_GNOME && nGender == GENDER_MALE)
{
CreateObject(OBJECT_TYPE_CREATURE, "lechevalier006", lSpawn); // idem
}
else if (nRace == RACIAL_TYPE_GNOME && nGender == GENDER_FEMALE)
{
CreateObject(OBJECT_TYPE_CREATURE, "lechevalier007", lSpawn); // idem
}
// race halfling
else if (nRace == RACIAL_TYPE_HALFLING && nGender == GENDER_MALE)
{
CreateObject(OBJECT_TYPE_CREATURE, "lechevalier008", lSpawn); // idem
}
else if (nRace == RACIAL_TYPE_HALFLING && nGender == GENDER_FEMALE)
{
CreateObject(OBJECT_TYPE_CREATURE, "lechevalier009", lSpawn); // idem
}
// race demi orque
else if (nRace == RACIAL_TYPE_HALFORC && nGender == GENDER_MALE)
{
CreateObject(OBJECT_TYPE_CREATURE, "lechevalier010", lSpawn); // idem
}
else if (nRace == RACIAL_TYPE_HALFORC && nGender == GENDER_FEMALE)
{
CreateObject(OBJECT_TYPE_CREATURE, "lechevalier011", lSpawn); // idem
}
// race demi elf
else if (nRace == RACIAL_TYPE_HALFELF && nGender == GENDER_MALE)
{
CreateObject(OBJECT_TYPE_CREATURE, "lechevalier012", lSpawn); // idem
}
else if (nRace == RACIAL_TYPE_HALFELF && nGender == GENDER_FEMALE)
{
CreateObject(OBJECT_TYPE_CREATURE, "lechevalier013", lSpawn); // idem
}
}
Je me met au boulot pour la suite avec le peu de temps qu'il me reste, je joue en même temps a DAOC alors j'alterne :D
Jaha Effect :D
Par coolstar le 13/12/2002 à 15:13:18 (#2777775)
Par Mastokk le 13/12/2002 à 21:16:30 (#2780697)
Par Jaha Effect le 14/12/2002 à 14:04:56 (#2785502)
Dis, si tu as 10 minute à perdre, tu pourrais me faire parvenir le tableau pour l'arme puissante qui est la lame suivante du jeu de carte merveilleux stp :)
Jaha Effect :D
La Comète
Par Jaha Effect le 15/12/2002 à 19:00:27 (#2795506)
L'aventurier doit vaincre seul le ou les prochains monstres rencontrés pour ne pas perdre le bénéfice de cette carte. En cas de succès, il gagne un niveau et et son total d'expérience se retrouve à mi-chemin entre son nouveau niveau et le suivant.
On va se faire une petite arène pour cette lame ou on va téléporter le PC pour qu'il y rencontre la bestiole de son choix.
Nous allons placer 2 WayPoint, le premier dans la zone de départ (NW_RETOUR) et le second au centre de notre arène (NW_ARENE).
On crée également une rencontre dans laquelle on va mettre une bestiole de chaque level, régler le niveau de difficulté de la rencontre, et paramétrer la rencontre comme ceci.
- rencontre actif
- réactiver rencontre toute les 5 secondes
- respawn infini
- Activation par un joueur
Puis nous allons placer le script suivant dans le OnExhausted de notre rencontre le scripte suivant qui va nous permettre de renvoyer le PC dans la zone de départ en lui attribuant 1 level et demi une fois qu'il aura tué les creatures :Dint XPtoLevel(int nXP) {
return FloatToInt((1+sqrt(1+4.*nXP/500))/2);
}
int XPsup(int nLevel) {
switch (nLevel) {
case 1: return 0;
case 2: return 1000;
case 3: return 1500;
case 4: return 2000;
case 5: return 2500;
case 6: return 3000;
case 7: return 3500;
case 8: return 4000;
case 9: return 4500;
case 10: return 5000;
case 11: return 5500;
case 12: return 6000;
case 13: return 6500;
case 14: return 7000;
case 15: return 7500;
case 16: return 8000;
case 17: return 8500;
case 18: return 9000;
case 19: return 9500;
case 20: return 10000;
}
return 0;
}
void main()
{
object oPC = GetFirstPC();
int nLevel = XPtoLevel(GetXP(oPC));
location lretour = GetLocation ( GetWaypointByTag ("NW_RETOUR"));
AssignCommand ( oPC , ActionJumpToLocation (lretour));
if (nLevel != 20)
{
SetXP(oPC, (nLevel*(nLevel+1)*500)+XPsup(nLevel+1));
} else {
GiveXPToCreature(oPC, 1);
}
}
Il nous reste bien sur à créer un petit script qui envoi le joueur dans l'arene dans le dialogue du joueur de cartevoid main()
{
object oPC = GetPCSpeaker ();
location larene = GetLocation ( GetWaypointByTag ("NW_ARENE"));
AssignCommand ( oPC , ActionJumpToLocation (larene));
}
Voilà pour cette lame, la suite au prochain épisode :)
Jaha Effect :D
Par coolstar le 15/12/2002 à 23:38:21 (#2797852)
JOL Archives 1.0.1
@ JOL / JeuxOnLine