Page 1 sur 1

[TUTORIEL] [CARTES] Créer une porte dans une carte : Chapitre 3 (Porte secrète)

Posté : mer. 20 avr. 2016, 00:05
par Freddy_Gwendo
CRÉATION D'UNE PORTE SECRÈTE





Nous savons créer une porte d'intérieur et une porte de transfert – portes pour le moins basiques. Il est temps d'utiliser nos connaissances pour créer des portes secrètes parce que bon, tout donjon qui se respecte doit posséder au moins une porte secrète. ;)

Ici encore, le principe est le même que pour les portes précédentes, seul le paramétrage change.

Pour l'illustrer, j'utiliserai deux types de passages secrets : les passages secrets classiques (une porte cachée que l'on découvre dans un mur) et les caches.




A. CRÉER UN PASSAGE SECRET MENANT À UNE AUTRE CARTE.

Pour visualiser la situation
Image

La carte aux portes ouvertes.

Image

La même avec ses portes fermées.

Le but du jeu est de coder le passage secret sur le mur portant un tableau.

Je partirai du fichier ARE avec ses portes créées en suivant la méthode du premier tuto.

Mais avant de paramétrer la porte secrète, une petite digression : vous vous souvenez de la manière dont je vous ai conseillé de créer des fichiers TIS des portes fermées pour les insérer dans le fichier TIS de la carte ?
Il arrive parfois que la méthode que je vous ai donnée ne fonctionne pas. Et comme vous vous en doutez, elle ne fonctionne pas ici. Rassurez-vous, cette technique fonctionne 90 % du temps sauf... Quand les tiles des portes fermées ne forment pas une figure géométrique parfaite en multiple de 64 x 64 pixels.

Je m'explique. Voici les tiles de la porte secrète :

Image - Image


J'ai délibérément isolé le carré manquant (en rose). Si on crée un fichier TIS de ces images, on obtiendra dans la carte un carré rose (ou gris selon le format de l'image) dans le coin inférieur droite de la porte lorsque cette dernière sera fermée.

Fort heureusement, il existe une parade à ce désagrément : Image


J'ai décomposé les carrés de l'image de la porte fermée

Code : Tout sélectionner

1	2
3	4
5
et les ai recomposés dans un fichier bmp dans cet ordre :1 2 3 4 5

Bref, j'ai créé un fichier de 64 pixels de hauteur sur 320 pixels de largeur.

Lorsque j'importe ce fichier (converti en TIS) dans l'onglet Doors du fichier WED, DLTCEP affecte automatiquement chaque carré à sa place : vous vous souvenez, on affecte chaque tile dans l'ordre (de gauche à droite et de haut en bas).

Ce point étant réglé, une fois toutes les manipulations effectuées, voici notre porte ouverte :
Image
Le polygone sur le tableau permet de refermer le passage secret.
Image
Le polygone représente la zone de transparence (fichier WED) lorsqu'on franchit la porte.

Passons maintenant à la porte fermée :
Image
Le polygone représente la zone qui apparaîtra en magenta dans la carte lorsqu'un voleur la recherchera, puis la zone sur laquelle cliquer pour essayer de l'ouvrir.
Image
Le polygone représente la zone de transparence (fichier WED).
Image
Et enfin les impeded blocks qui empêchent de passer à travers la porte.


Mais passons au principal, le paramétrage de la porte :
Image
Je passe sur les champs Identifier et Region link, ainsi que sur la case Linked que nous avons déjà étudiés dans le tuto précédent : la porte secrète permet de passer dans la carte GW0029 par l'intermédiaire du Travel trigger TRAN0029.
► Afficher le texte


>> Pour différencier une porte secrète d'une porte classique, ce qu'il faut faire, c'est... Cocher la case « Secret » ! Qui l'eut cru ?

Comme c'est un passage secret, il est censé être fermé, donc
  • Je n'ai pas coché la case Open pour qu'il soit fermé lorsqu'on pénètre dans la pièce.
  • Je lui ai attribué 80 % de niveau de difficulté à être détecté dans le champ « Discovery ».
  • Je n'ai pas oublié de cocher la case Detectable, sans quoi personne ne pourra détecter sa présence. Ce serait plutôt ballot, non ?
  • Je coche la case « Locked » pour le verrouiller.
  • Je renseigne le champ « Lock difficulty » qui définit la difficulté d'ouverture de la porte. Dans ce cas, j'ai fixé la difficulté à 100 % : le but du jeu est de ne pouvoir ouvrir le passage secret qu'avec une clé spéciale.
Une autre chose importante : la case « Unclosed ».
En théorie, elle est supposée empêcher une porte de se refermer (d'ailleurs IESDP l'appelle « Can't close » et NearInfinity « Cannot close », et les anciennes versions de DLTCEP « Internal »).
Mais en pratique, elle permet de rendre les portes secrètes détectables par les voleurs.
N'oubliez donc pas de la cocher !


Avant-derniers points :
  • Comme ce passage est censé être ouvert en déplaçant le tableau, j'ai choisi un curseur qui ne représente pas une porte. Mais libre à vous de choisir celui qui vous convient le mieux.
  • Comme cette porte représente un passage secret s'ouvrant dans le mur, j'ai décidé de modifier ses sons d'ouverture et de fermeture. C'est pourquoi j'ai saisi GW0010PO et GW0010PC dans les champs « Opening sound » et « Closing sound ». Ce sont des fichiers WAV.

Je vous avais dit que ce passage s'ouvrait en déplaçant le tableau. Mais pour déplacer le tableau, il faut insérer une clé dans une petite ouverture. C'est pourquoi le champ « Key » indique que la porte ne s'ouvre qu'avec la clé GWKEY028 (un fichier .ITM). Associé à une valeur de 100 % dans « Lock difficulty », ce champ interdit l'ouverture de la porte, quel que soit le pourcentage d'Ouverture des portes de votre voleur.

Note : Si vous voulez que la clé disparaisse lors de l'ouverture de la porte, vous devez cocher la case « Use up key », comme ci-dessous.
Image

Et puis pendant qu'on parle de bonus, un dernier petit truc pour personnaliser vos portes.
Voici un extrait de mon tp2 d'installation des cartes :

Code : Tout sélectionner

COPY ~Diamant_Eternel/Cartes/Chap2/GW0028.are~ ~override/GW0028.are~
	LPF ~ALTER_AREA_DOOR~ INT_VAR string_unlock =  RESOLVE_STR_REF (@1028001) STR_VAR door_name = Secret END

avec dans le fichier GW_Cartes :

@1028001  = ~Vous ne pouvez pas débloquer ce tableau sans la clef adéquate~
Ce petit code permet d'ajouter un message personnalisé lorsqu'on essaie d'ouvrir le passage secret sans la clé appropriée en modifiant le champ « Open fail ».
Image

Le tout donne in game :
Image Image


Voilà, vous en savez suffisamment pour créer vos propres passages secrets.
La technique pour créer un passage secret à l'intérieur d'une carte est la même, simplement n'indiquez pas de travel trigger.
[/size]

Posté : mer. 20 avr. 2016, 00:10
par Freddy_Gwendo
B. CRÉER UN PASSAGE SECRET SERVANT DE CACHE.

Personnellement, j'aime bien utiliser la présence d'un passage secret pour dissimuler un conteneur : pour accéder à son contenu, il faut d'abord trouver le passage secret, l'ouvrir, puis déverrouiller le conteneur après l'avoir désamorcé...

Voici donc la situation :
Image


Vous montez à cet étage et, si vous êtes perspicace, vous trouverez un bonus intéressant dissimulé dans une alcôve cachée derrière le premier tableau du couloir :

Image


Ce qui donne en termes de portes :
ImageImage



Première étape : on construit la porte secrète.
Image Image



Et le plus important, les paramètres :
Image


On récapitule le code :

  • Case Open non cochée pour que l’alcôve soit fermée lorsqu'on pénètre dans la pièce.
  • Champ « Discovery » : 10 % de niveau de difficulté à être détectée.
  • Case Detectable cochée pour les voleurs.
  • Case « Locked » cochée pour la verrouiller.
  • Champ « Lock difficulty » : 20 % de difficulté pour la déverrouiller.
  • Sans oublier la case « Unclosed ».


Vous noterez aussi le fichier son GWVIDE dans les champs « Opening sound » et « Closing sound ». Ce sont des fichiers WAV vide, ce qui évite d'entendre le son grinçant par défaut des portes qui s'ouvrent et se ferment.


Au passage, vous constaterez que de nouveaux champs ont été renseignés dans cette porte. En effet, cette alcôve est piégée. Toujours ma manie d'aller crescendo dans les tutos : on commence par le basique, puis on approfondit le sujet... ;)

Mais comment ça marche ? C'est très simple...
Nous affectons à la porte un script qui se déclenche si on n'a pas désamorcé la porte. Comme pour l'ouverture de la porte, nous allons définir le degré de difficulté du désamorçage.

  • Champ « Trapped » : la valeur « 1 » indique que la porte est piégée. Par défaut, elle vaut « 0 ».
  • Champ « Script » : le nom du fichier BCS qui déclenche les effets du piège.
  • Champ « Trap detection » : 0 % de difficulté pour détecter que l'alcôve est piégée. C'est voulu : de toute façon, on ne peut pas désamorcer le piège !.
  • Champ « Trap removal » : 100 % de difficulté pour désamorcer le piège.
  • Champ « Trap detected » : Le piège n'est pas détecté automatiquement. Une valeur de « 1 » le rend automatiquement détectable.
  • Champ « Launch point » : Si vous avez bien suivi, c'est le « point de lancement » de la porte, que l'on utilise pour lancer le point de départ du sort.
    ► Afficher le texte


Et pour terminer, un petit rappel du fichier WED :
Image Image


Comme l'alcôve est plaquée contre le mur, elle n'a pas besoin de wallgroups de transparence. Donc je les ai supprimés avec le bouton « Drop polygon »


La porte secrète étant créée, occupons-nous maintenant du conteneur :

Image Image


Je ne m'attarderai pas sur sa création puisque vous avez lu les tutos d'Armand. :whistle3:

En revanche, nous allons voir comment « simuler un rattachement » de ce conteneur à la porte.

C'est très simple: ça s'effectue par script, et plus précisément par le script de la carte, GW0017.BCS

Image


Détaillons-le :

Code : Tout sélectionner

IF
  OnCreation()				// La première fois que l'on entre dans la carte.
  Global("GWENTREE","GW0017",0)
THEN
  RESPONSE #100
    SetGlobal("GWENTREE","GW0017",1)	// Pour éviter que le script ne tourne en boucle inutilement.
    ContainerEnable("Cache",FALSE)	// Je désactive le conteneur.
    Continue()
END
En français, ça signifie : lorsque j'entre pour la première fois dans la carte, le conteneur est désactivé et ne peut pas être sélectionné par la souris.

>> Même si sous trichez avec la combinaison [Alt]+[TAB], vous ne pourrez jamais ouvrir le conteneur même si vous le voyez surligné sur la carte. Nananère !

Code : Tout sélectionner

/* ------------------------ *
 * Accès à la Cache secrète *
 * ------------------------ */
IF
  OpenState("ALCOVE",TRUE)		// Si on ouvre la porte secrète ALCOVE.
  Global("GWAlcove","GW0017",0)
THEN
  RESPONSE #100
    SetGlobal("GWAlcove","GW0017",1)	// La porte secrète ALCOVE est ouverte
    ContainerEnable("Cache",TRUE)	// Le conteneur Cache devient sélectionnable par la souris.
END

IF
  Global("GWAlcove","GW0017",1)		// La porte secrète ALCOVE a été ouverte et me conteneur Cache est sélectionnable.
  OpenState("ALCOVE",FALSE)		// On referme la porte ALCOVE.
THEN
  RESPONSE #100
    SetGlobal("GWAlcove","GW0017",0)	// Réinitialisation de la variable.
    ContainerEnable("Cache",FALSE)	// Le conteneur Cache n'est plus sélectionnable.
END
Traduction : Lorsqu'on détache le tableau du mur (on ouvre la porte secrète), le conteneur apparaît. Lorsqu'on replace le tableau contre le mur, on ferme l'accès à la cache et le conteneur disparaît.

Dans le jeu :
Image Image

Il est temps de passer à un cas particulier : Chapitre 4 : Ajouter une porte dans une carte existante.
[/size]