Affichage des résultats 1 à 19 sur 19

Discussion: [DLG] Questions diverses sur l'organisation d'un dialogue

  1. #1
    Date d'inscription
    January 2008
    Messages
    127

    [DLG] Questions diverses sur l'organisation d'un dialogue

    Bonjour,

    Voilà j'ai une petite question technique à poser.

    Dans un de mes dialogues (le premier en fait), j'ai plusieurs fois la même réponse mais je l'utilise pour plusieurs suite qui modifient le jeu.
    Exemple: Charname a le choix de rattraper un individus qu'il soupçonne et cela se divise en trois cas bien distincts :

    1- Charname possède l'objet que l'individu lui a vendu et lorsqu'il rattrape la personne, les méchants arrivent.
    2- Charname ne possède pas l'objet mais veut le rattraper, les méchants n'arrivent pas tout de suite mais un peu plus tard.
    3- Charname décide de ne pas rattraper le vendeur et il voit les méchants l'agresser.

    Est ce que cela est possible même en partant d'une même réponse (si choix "A" alors 1 et 2 possibles suivant s'il possède l'objet ou non) ?
    Logiquement je dirais que oui en mettant le nombre de blocs en fonction des possibilités rattachés par le même label avec des conditions différentes qui bloqueraient les autres possibilités mais pourriez vous m'éclaircir sur ce point ?
    Dernière modification par Freddy_Gwendo ; 02/04/2016 à 06h41. Motif: Modification du titre de la discussion et mise en page

  2. #2
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 177
    Oui, ce que tu décris est tout à fait possible, grâce à la possibilité de préciser des conditions s'appliquant aux différentes réponses possibles dans une réplique. Mais tu dois avoir suffisamment de conditions différentes pour distinguer les 3 cas, hors tu n'en as que 2 : avoir ou non l'objet. Tu devras impérativement passer par un texte différent pour le troisième cas, sinon ce ne sera pas compréhensible car le joueur aura deux fois le même texte de réponse. Pour que le joueur "décide" de ne pas le rattraper, il faut un texte clairement différent.

    En gros, ça donnerait :
    Code:
    IF ~~ THEN BEGIN Replique
      SAY @1 /* ~Tu n'as aucune preuve.~ */
      IF ~PartyHasItem("PREUVE")~ THEN REPLY @2 /* ~Tu te trompes. Je sais tout.~ */ DO ~SetGlobal("AttaqueDesMechants","ARxxxx",1)~ EXIT
      IF ~!PartyHasItem("PREUVE")~ THEN REPLY @2 /* ~Tu te trompes. Je sais tout.~ */ DO ~SetGlobalTimer("VariableTimer","ARxxxx",10)~ EXIT
    END
    Comme tu peux le voir, les deux cas sont mutuellement exclusifs, donc il n'y aura qu'une seule réponse mais qui déclenchera des choses différentes.
    Si tu ajoutes une troisième réponse sans condition, tu auras une deuxième réponse identique et ce qui se passera dépendra du choix du joueur mais ce ne sera pas clair.
    Le troisième cas serait alors :
    Code:
      IF ~!PartyHasItem("PREUVE")~ THEN REPLY @3 /* ~Tu ne perds rien pour attendre.~ */ DO ~SetGlobal("AttaqueDesMechants","ARxxxx",1)~ EXIT
    Là tu pourrais ajouter en fait une autre réplique du personnage poursuivi pour justifier, ce qui donnerait :
    Code:
      IF ~!PartyHasItem("PREUVE")~ THEN REPLY @3 /* ~Tu ne perds rien pour attendre.~ */ DO ~~ GOTO Attaque
    
    IF ~~ THEN BEGIN Attaque
      SAY @4 /* ~Tu as laissé passer ta chance. On se retrouvera en enfer !~ */
      IF ~~ THEN DO ~SetGlobal("AttaqueDesMechants","ARxxxx",1)
    ChangeEnemyAlly(Myself,EVILCUTOFF)
    Enemy()
    Attack(NearestEnemyOf(Myself))~ EXIT
    END
    Les 3 dernières lignes font aussi attaquer le groupe par le personnage qui parle, ce qui me semblerait logique.

    Il y a quelque chose qui me chiffonne, somme toute. Tu veux faire ça par un dialogue, hors tu parles de poursuivre quelqu'un et de le rattraper, ce qui déclencherait l'attaque des méchants (ses amis ?). Si tu veux ça, il faut impérativement passer par des scripts et non par le dialogue. D'une part pour détecter que tu le rattrapes, par une détection de proximité dans le script du personnage, qui dépendrait également d'avoir fait le choix de le poursuivre dans le dialogue (qui mettrait une variable que le script vérifierait).

    N'hésite pas à préciser ton objectif.
    Dernière modification par Freddy_Gwendo ; 02/04/2016 à 06h13. Motif: Suppression du titre du message

  3. #3
    Date d'inscription
    January 2008
    Messages
    127
    Code:
    @7 = ~Eh bien c'est... (Il n'a pas l'air de comprendre de suite votre réponse, semblant hésiter à le croire: apparemment vous êtes loin d'être le premier à qui cette prodigieuse offre fut faîte.) une bonne nouvelle. Vous avez fait un excellent choix. Le monde est à vous désormais, profitez-en bien! (Un soupir de soulagement semble le traverser, vous avez tout à coup des soupçons sur ce mystérieux personnage et son parchemin. Une sensation étrange parcours en ce même instant tout votre être...) Je dois vous laisser, j'ai fort à faire, adieu et merci.~ // Renvoie à @15-16
    @8 = ~Je ne vends pas de... Oh laissez tomber. Mais l'inestimable vous est passé sous votre nez. (Il attend quelques secondes, comme si il espérait que vous reveniez sur votre décision. Finalement vous le voyez s'éloigner, l'air abattu. Cela attire votre curiosité...)~ // Renvoie à @15-16
    @9 = ~2000! Je vous vends l'immensité et voilà votre prix? Vous ne méritez vraiment pas mon offre... Adieu. (Il attend quelque secondes, comme si il espérait que vous reveniez sur votre décision. Finalement vous le voyez s'éloigner, l'air abattu. En y réfléchissant son offre n'était peut être pas aussi inintéressante, de plus son attitude attire votre curiosité...)~ // Renvoie @15-16
    @14 = ~Je... Euh...(Il attend quelques secondes, comme si il espérait que vous reveniez sur votre décision. Finalement vous le voyez s'éloigner, l'air abattu. En y refléchissant son offre n'était peut être pas aussi inintéressante malgré son air farfelue. De plus son attitude attire votre curiosité...)~ // Renvoie à @15-16
    @15 = ~(Le rattraper.)~ 
    @16 = ~Bah après tout peu importe...( Le laisser partir.)~
    Voilà j'ai mis l'ensemble des phrases qui sont concernés.

    Je me suis pas très bien expliqué.
    En fait ce qu'il se passe ici c'est que j'ai 4 phrases qui renvoient à deux choix uniques.

    @16 va faire que des personnes vont agresser l'individu que l'on a laissé partir. C'est une description par dialogue de ce qui se passe. Après dans la pratique je verrais un truc du style le personnage s'éloigne, se fait accoster et assassiner (le tout dans la vision de Charname), puis les agresseurs s'en prennent à Charname. Mais @16 comporte en elle-même 2 variantes à savoir si Charname possède ou non l'objet et cela modifiera par la suite le dialogue avec les agresseurs.
    Dans l'autre (@15) et bien, j'avoue que je ne sais pas comment procéder, j'imagine qu'il s'éloignerait et qu'il s'arrêterait à côté d'autres PNJ citoyens, de sorte qu'il suffirait de se rapprocher de lui pour recommencer le dialogue. Mais la aussi il y a deux variantes, toujours si il possède ou non l'objet et cela modifiera encore la suite.

    J'aimerais juste savoir si cela serait possible car je ne sais absolument rien sur ce genre de programmation (j'en suis à celle de "base", juste du dialogue), j'aimerais être sûr que la programmation est possible avec les enchaînements que j'ai choisis.
    J'espère que ce que j'ai écrit est compréhensible j'ai toujours tendance à compliquer les choses quand j'explique.
    Dernière modification par Freddy_Gwendo ; 02/04/2016 à 06h16. Motif: Suppression du titre du message

  4. #4
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 177
    Tu corriges mes défauts de perception de ce que tu souhaitais mais je dois avouer que ce n'est toujours pas clair pour moi...

    Tu ne donnes que quelques phrases du dialogue (celles du personnage) sans les réactions de l'équipe ni les enchaînements. Du coup je ne comprends pas si le dialogue est coupé en deux : d'abord l'achat de l'objet puis, plus tard, un nouveau dialogue dans lequel le fait d'avoir l'objet modifierait les réactions.

    Si ton dialogue s'enchaine sans interruption (le joueur achète ou non, fin du dialogue puis la scène de l'attaque intervient), il te suffit de provoquer les enchainements dans le dialogue lui même. Pas de test sur la possession de l'objet, elle découle d'avoir choisi de l'acheter dans le dialogue.
    Dans le cas contraire, tu dois prévoir une variable ou un test sur la possession de l'objet pour déclencher les conséquences (attaque, ...), d'une façon similaire à ce que j'ai indiqué hier.

    Pour ce qui concerne les séquences qui se déroulent hors dialogue (l'éloignement du personnage, le joueur qui le rattrape, l'attaque), il faut impérativement faire intervenir des scripts. Ces actions dans les scripts seraient alors déclenchées par des variables comme je le montrais hier.
    Certains enchainements ne sont pas simples à obtenir, notamment l'éloignement du personnage, puis le fait que le joueur le rattrape et enfin l'attaque par le groupe. De même faire un script de comportement des "méchants" qui attaque le personnage puis ensuite l'équipe n'est pas simple (plus précisément l'enchainement des attaques).
    Une alternative simple serait de déclencher une scène cinématique à la fin du dialogue, qui pourrait dès lors forcer l'enchainement éloignement du personnage, rapprochement du groupe, attaque par les méchants. Tout cela sans que le joueur ait le choix d'agir. A ce moment, tu mets fin à la scène pour que le joueur puisse reprendre la main sur la réaction à l'attaque.

    J'espère ne pas être à côté de la plaque encore une fois.
    Dernière modification par Freddy_Gwendo ; 02/04/2016 à 06h16. Motif: Suppression du titre du message

  5. #5
    Date d'inscription
    January 2008
    Messages
    127
    Je dois préciser que je n'ai encore pas codé cette partie.

    Je viens de comprendre ce que tu veux dire, il n'y aura pas d'interruption du dialogue si achat. Je compte faire en sorte que dans ce cas

    • pas d'interruption, le personnage acquerra l'objet à la fin du combat (combat obligatoire pour le conserver), la cinématique serait une bonne alternative mais je tiens à ce qu'il y ait un dialogue avec les agresseurs (l'homme sera assassiné dans la cinématique).
    • si pas d'achat alors même procédé : cinématique, les agresseurs tuent le bonhomme et Charname intervient, le dialogue s'ouvre = combat pour arrêter les criminels (gains de l'objet) ou les laisser partir (fin du dialogue et objet non acquis).


    Tout en sachant que quelque soient les réponses (@15 et 16), la cinématique aurait lieu. Les seuls variables étant celles citées ci-dessus. @16 et 15 mettent fin au dialogue, initient la cinématique puis les possibilités du joueur divergent ainsi que les dialogues en fonction de l'achat.

    J'aurais également une autre question: dois-je coder tout ces détails plus tard ou il est préférable de tout régler en même temps ? Mon idaée d'origine était de réaliser absolument tout les dialogues du mod puis de passer à la section codage et programmation. Est ce un bon moyen de fonctionner ?
    Dernière modification par Freddy_Gwendo ; 02/04/2016 à 06h21. Motif: Mise en page

  6. #6
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 177
    Il n'y a pas de bonne ni de mauvaise méthode, je pense. Dans beaucoup de milieu, il est d'usage d'avoir un script complet (au sens cinématographique par exemple) avant de réaliser quoi que ce soit.
    Dans le cas d'un mod, l'équivalent est d'avoir effectivement les dialogues écrits avant de coder, mais ça ne s'arrête pas là. En plus des textes, tu pourrais clairement différencier les répliques des réponses possibles et préciser les conditions dans lesquelles le joueur a ce choix (avoir ou non tel objet, ...) et les conséquences des choix lorsqu'elles ont des répercutions hors dialogue (déclencher l'attaque si quelque chose, au bout de ...).

    En contrepartie, tu es confronté à un autre problème, celui des questions de faisabilité (au contraire, un cinéaste sait en général ce qu'il peut faire). Pour ces problèmes, il est d'usage de statuer au plus vite sur la faisabilité, de façon à ne pas bâtir quelque chose qui va s'écrouler partiellement ou complètement parce qu'un élément n'est pas possible. Tu peux bien entendu faire ces expérimentations sur des "démonstrateurs" qui ne se retrouveront pas dans le mod (un dialogue "bonjour", "au revoir", attaque). Mais il peut s'avérer aussi intéressant de le faire sur des éléments directement utilisables dans le mod. Mais il faut veiller à garder le même caractère simple que dans le "démonstrateur", sous peine d'avoir des problèmes avec d'autres éléments du mod et non ce que tu voulais essayer.

    Enfin intervient le facteur personnel. Chacun a sa façon de travailler. Si on peut souvent apprendre en s'inspirant des façons des autres, parfois il n'est pas possible de reprendre telle quelle celle des autres pour tout un tas de raisons.
    Dernière modification par Freddy_Gwendo ; 02/04/2016 à 06h21. Motif: Suppression du titre du message

  7. #7
    Date d'inscription
    January 2008
    Messages
    127
    Merci pour ces renseignements.
    Je vais régler ce problème comme suit: pour le dialogue avec l'agresseur celui-ci comportera deux variantes qui sont: charname possède ou non l'objet.
    Finalement je change d'avis: le dialogue s’interrompra si charname achète l'objet et il l'aura dans son inventaire. Ensuite il se retrouvera sur @15 et 16. Cinématique correspondant à la réponse. Puis je vais réaliser deux dialogues différents donc dans le codage deux parties différentes complètement séparés l'une de l'autre et pour cela l'un aura pour condition que charname est l'objet. Si il ne là pas l'autre dialogue s'activera par défaut (puisque pas de présence d'objet).
    Cela est possible ?

    Je vais faire des recherches sur le "démonstrateur", je n'ai aucune idée de ce que c'est .
    Encore merci.
    Dernière modification par Freddy_Gwendo ; 02/04/2016 à 06h24. Motif: Suppression du titre du message

  8. #8
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 177
    Chaque réplique d'un personnage peut être conditionnée afin de permettre justement d'adapter ce qu'il dit aux événements. Tu pourras donc ajouter la condition d'avoir l'objet. Les conditions se mettent dans la partie IF ~conditions~ THEN BEGIN Replique SAY ....

    Inutile de chercher démonstrateur, ça ne correspond à rien de particulier pour la création de mod. C'est un terme que j'ai employé pour évoquer quelque chose dont la fonction est de montrer comment faire pour obtenir ce que l'on souhaite. Par exemple, un concept car est souvent un démonstrateur de technologie automobile mais il n'est jamais vendu en tant que tel. Mais un concept car est complexe par rapport à ce que j'évoquais. Disons que l'équivalent serait plutôt un châssis avec quatre roues et un volant dans l'optique de tester un nouveau système de direction.
    Le démonstrateur dont je parlais serait un ensemble de dialogues et scripts le plus simple possible permettant d'identifier les besoins de ce que tu veux réaliser en terme de structure de dialogue, de script, de variable, ...
    Dernière modification par Freddy_Gwendo ; 02/04/2016 à 06h24. Motif: Suppression du titre du message

  9. #9
    Date d'inscription
    January 2008
    Messages
    127
    Ha, d'accord,

    Ma dernière question: si le joueur achète le parchemin j'aimerai qu'il perde l'or (soit 4000) mais qu'il puisse récupérer la somme identique ensuite sur le cadavre du méchant pour que le joueur ne soit pas lésé.

    De plus si le joueur ne paie pas la somme j'aimerai que cette fois l'argent n'apparaisse pas sur son cadavre sinon ce serait injuste et illogique.
    Est-ce la aussi faisable ?
    Dernière modification par Freddy_Gwendo ; 02/04/2016 à 06h25. Motif: Suppression du titre du message

  10. #10
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 177
    L'action TakePartyGold(nnn) permet de transférer de l'argent (nnn pièces d'or) vers le personnage dont le dialogue ou le script y fait appel. L'argent va dans son inventaire, donc tu devrais le récupérer sur le cadavre.

    Pour d'autres recherches du même genre, consulte La Bible de l'Infinity Engine. C'est comme la bible, très long à lire, mais plein d'enseignements !
    Dernière modification par Freddy_Gwendo ; 02/04/2016 à 06h26. Motif: Suppression du titre du message

  11. #11
    Date d'inscription
    December 2007
    Messages
    510
    Isaya,tu semmbles t'y connaîte en matière de script.

    Peux tu me dire ce qui peut provoquer le non déclenchement d'un dialogue dans un mod ?
    J'essaie de faire le mod qui prolonge la sphère planaire mais le jeu bloque quand les aventuriers arrivent (le dialogue n'arrive pas).
    Je m'excuse pour le off topic mais le bug risque de bloquer le mod dans son intégralité et je risque de ne plus pouvoir me permettre de revenir dans la sphère.


    http://www.baldursgateworld.fr/lacou...nematique.html
    Dernière modification par Freddy_Gwendo ; 02/04/2016 à 06h28. Motif: Suppression du titre du message

  12. #12
    Date d'inscription
    January 2008
    Messages
    127
    Très bien.
    Merci pour le lien Isaya
    je me le suis mis dans mes favoris, je vais le petit à petit.
    Dernière modification par Freddy_Gwendo ; 02/04/2016 à 06h29. Motif: Suppression du titre du message

  13. #13
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 177
    Magnus : non, je ne te pardonne pas pour le off-topic.
    J'ai bien vu ton message dans l'autre partie du forum. Si je n'y ai pas répondu, ce que je ne sais pas donner de réponse et que je n'ai pas le mod en question. Alors, je t'en prie, ne viens pas polluer les autres sujets du forum avec la même demande.
    S'il te plaît, peux-tu activer les messages privés dans ton compte utilisateur ? Je préfèrerais traiter ce genre de chose en privé. Merci.

    Nightmare : tu trouveras d'autres liens utiles dans le forum consacré aux outils dans la forge des apprentis. Notamment dans ce sujet dont le nom, il est vrai, est peu indicatif de son contenu suite à la perte de son sous-titre.
    Dernière modification par Freddy_Gwendo ; 02/04/2016 à 06h29. Motif: Suppression du titre du message

  14. #14
    Date d'inscription
    January 2008
    Messages
    127
    Une petite question: comment faire pour que les dialogues arrivent sous forme de vers comme au début de TOB et non sous forme de dialogue normal ?

    Il suffit d'aller tout simplement à la ligne dans le fichier texte ? Ou bien est-ce plus complexe ?
    Dernière modification par Freddy_Gwendo ; 02/04/2016 à 06h30. Motif: Suppression du titre du message

  15. #15
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 177
    Oui, c'est bien en mettant des retours à la ligne là où tu le souhaites. Mais vise bien de façon à ce que l'effet soit bon aussi pour le jeu en 640x480 (on ne sait jamais que quelqu'un joue encore avec cette résolution-là ). Sinon tu auras quand même une coupure avant la fin d'une ligne dans ce cas.
    Dernière modification par Freddy_Gwendo ; 02/04/2016 à 06h31. Motif: Suppression du titre du message

  16. #16
    Date d'inscription
    January 2008
    Messages
    127
    Oui d'accord j'y penserai.
    Merci bien


    Je reviens en force avec mes pièces d'or pour une nouvelle demande de faisabilité dans la pratique. J'espère après cela ne plus vous déranger avec ça.


    j'ai donc des phrases qui ici seront cachées suivant la somme dépensée. Y a-t-il une condition du style : uniquement si 4000 pièces d'or dépensées au dialogue z alors phrase y disponible ?
    Cela m'arrangerait fort bien pour la forme du dialogue.

    Et peut-on faire en sorte à partir d'une même réplique (@19) de pouvoir récupérer soit 4000 ou 2000 à partir de la somme dépensée au dialogue précédent ? Tout en faisant également perdre le parchemin à Charname.

    J'espère avoir été clair dans mes propos. J'ai conscience de la redondance de mes questions sur ce sujet mais si cela est impossible je dois le savoir sinon tout tomberait à l'eau.
    +
    Dernière modification par Freddy_Gwendo ; 02/04/2016 à 06h34. Motif: Fusion des messages

  17. #17
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 177
    Réponse courte : oui, aux deux questions et pour la perte du parchemin.

    Si tu veux savoir comment, n'oublie pas de le demander la prochaine fois !

    En résumé, il suffit de fixer des valeurs avec une variable en fonction de la somme dépensée. Ensuite, tu peux utiliser la méthode que j'avais montrée (avec la possession d'un objet) pour avoir deux réponses à texte identique conditionnées par la valeur de la variable.
    Si pour l'instant tu t'intéresses uniquement à la faisabilité, inutile de rentrer dans les détails.

    Quand tu as des questions de faisabilité, pense à des situations équivalentes dans le jeu. Il n'est pas rare que tu veuilles reproduire quelque chose qui existe déjà dans le jeu ou dans des mods. C'est un bon point de départ également quand tu voudras coder.
    Dernière modification par Freddy_Gwendo ; 02/04/2016 à 06h35. Motif: Suppression du titre du message

  18. #18
    Rimbaud Invités
    Je passe par ici et je voulais juste dire que je peux aider Nightmare sur MSN s'il le désire, avec des exemples concrets. Pour la programmation de base, tant qu'il ne s'agit pas de scripts ou autres choses trop compliquées, ça va. Donc hésite pas à passer, Nighty.

    Par contre je trouve franchement dommage d'afficher les dialogues ici... C'est du bon gros spoil ça, y'a plus de plaisir.
    Dernière modification par Freddy_Gwendo ; 02/04/2016 à 06h39. Motif: Suppression du titre du message

  19. #19
    Date d'inscription
    January 2008
    Messages
    127
    Très bien merci tes conseils et tes lumières Isaya. Je vais pouvoir avancer serein.

    PS : je viens d'enlever les dialogues
    Dernière modification par Freddy_Gwendo ; 02/04/2016 à 06h39. Motif: Suppression du titre du message

Discussions similaires

  1. [TECH] Les différentes versions de BG
    Par Ake dans le forum La Taverne d'Amkethran (Baldur's Gate 2)
    Réponses: 8
    Dernier message: 22/10/2006, 00h31
  2. [SOLUCE] Conditions d'enrôlement
    Par Darien dans le forum La Taverne d'Amkethran (Baldur's Gate 2)
    Réponses: 5
    Dernier message: 09/05/2006, 13h59
  3. [JEU] Nombres de parties differentes
    Par Qoèlet dans le forum L'Académie de Padhiver (NWN 1)
    Réponses: 3
    Dernier message: 07/09/2005, 00h28
  4. Comment donner un dialogue à une créature
    Par Giga__Deathcool dans le forum NeverWinter Nights & NeverWinter Nights 2 : les modules
    Réponses: 16
    Dernier message: 19/01/2005, 01h02
  5. Les différentes attaques spéciales du voleur
    Par faroux dans le forum La Taverne du Berceau de l'Hiver (Icewind Dale 1)
    Réponses: 6
    Dernier message: 08/07/2004, 21h12

Les tags pour cette discussion

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237