Cambio de estado para habitaciones.

Las habitaciones, al igual que los bichos, son entidades (objetos) que presentan en todo momento del juego un determinado estado. En el caso de las habitaciones, podemos considerar que cada estado es "múltiple", es decir, refleja a la vez varias características de la habitación (por ejemplo noche, lluvia y niebla, en exteriores). Así, cada posible estado de una habitación constará de una serie de bits que indiquen:

- El tiempo: sol (00), cubierto (01), lluvia (11).
- Niebla: niebla (1), no niebla (0).
- Día/noche: día (1), noche (0).
- Bits adicionales para estados característicos de cada habitación según las necesidades del juego, de modo que una habitación pueda cambiar (se abre una trampa, una puerta, etc.)

Todos los estados de las habitaciones son estáticos por razones obvias, así que duran el tiempo mínimo (una unidad de tiempo) como suele suceder con los estados estáticos.

He aquí una idea de cómo cambiarán de estado las habitaciones:


room.timeunitsleft--;
if ( room.timeunitsleft == 0 )
	if ( endofstate actions ) then perform endofstate;
	changestate:
		room.state.dn=currenttime; //day or night
		for current = { weather , fog }:
			probswitch
				85%: do nothing; //weather state unchanged
				15%: probswitch
					70%: room.state.current = random( adjacent rooms ).state.current;
					25%: room.state.current = changeabit( random( adjacent rooms )).state.i;
					5%: room.state.current = random( possible states );
		for additional states:
			//additional code according to room events. (on enter...)
			
Descripciones para habitaciones.

La descripción que se da al personaje de las habitaciones cuando entra en ellas o mira a su alrededor depende de tres clases de factores:

-Los que forman parte del estado de la habitación (de hecho, los estados relacionados con el tiempo atmosférico tienen como función principal dar la descripción adecuada)
-Los que se refieren a la presencia en la habitación de objetos, personajes o bichos (informar al jugador de su presencia)
-Los parámetros de objetos, personajes o bichos que condicionan la forma de percibir la habitación (antorchas, ceguera...)

He aquí un ejemplo de descripción, aunque ya tengo más escritas.


ID: 0101
Título: Plaza Vieja
Salidas: N [calle], E [arco], SO [callejón], ayuntamiento, catedral, taberna.

[C/M: Estado Adicional 0]

Te encuentras en una impresionante plaza pavimentada con enormes piedras. Una placa en
 una esquina informa de que se trata de la Plaza Vieja.

[C/M: Estado Adicional 1]

Estás en la Plaza Vieja de Aetheria, uno de los más conocidos lugares de la ciudad.

[C/M: Estática]

Un simple vistazo basta para comprobar que fue, sin duda, el centro neurálgico de la ciudad:
 una imponente catedral con dos estilizadas torres de piedra se alza al Oeste, su fachada 
verdosa debido al musgo, pero excelentemente conservada a pesar del paso de los siglos. En 
frente, al Este, hay un edificio de estilo similar, funcional pero solemne, sobre cuya puerta
 se lee en grandes letras "Ayuntamiento", dividido en dos por un gran arco que desemboca en
 otra plaza. Al Sur hay una construcción, algo más modesta, aunque también antigua; un cartel
 de madera indica que se trata de "La taberna de Kelis". Hacia el Norte arranca una ancha 
calle adoquinada, mientras que un callejón que bordea la catedral conduce al Sudoeste. No hay
 en la plaza ningún obstáculo para pasear y admirar los monumentos.

[C/M: Sol]

La luz del sol se refleja en las ventanas y vidrieras de la gran catedral. 

[C/M: Lluvia]

El agua de la abundante lluvia confluye en un pétreo sumidero en el centro de la plaza.

[C/M: Nubes]

El cielo está cubierto de nubes algodonosas.

[C/M: Noche]

Grandes farolas iluminan toda la plaza, garantizando la seguridad por la noche.

[C/M: Niebla]

Las altas torres de la catedral se difuminan en la niebla.

Como se puede ver, incluye una descripción estática y partes de descripciones que cambian según el estado de la habitación, incluyendo tiempo atmosférico y un factor adicional, que en este caso corresponde a si se conoce o no la ciudad. La forma de seleccionar estas descripciones no es compleja, simplemente cada una lleva asociado un comparando y una máscara de forma que se comparan los bits de estado correspondientes a los estados que hagan "saltar" esa descripción.

Los bichos y objetos no se han de incluir en la descripción de la habitación, pues se mostrarían con su propia descripción. En este caso, la habitación está siempre iluminada, si estuviéramos en un túnel o mazmorra habría que incluir una descripción con y sin antorcha. Las descripciones asociadas a circunstancias más fuertes (ceguera, alucinaciones...) serán automáticas, no individuales para cada habitación. Así pues, no habrá descripciones mucho más largas que ésta; sin embargo, se podrá apreciar que es bastante detallada. Ese tipo de detalles configuran el realismo de que quiero dotar a Aetheria.


Vade retro