Nuevo concepto, flags y variables
Hasta ahora hemos visto como crear objetos, situarlos en sitios, darles nombres y una descripción. Sin embargo, salvo esa información, todos los objetos son iguales ya que no hay ninguna diferencia entre ellos: no tienen características ni estado.
Para suplir esto nacen las variables. Una variable es un valor con nombre que se asocia a un objeto. Por ejemplo, una variable podría ser la edad de un personaje que iría asociada a su objeto correspondiente. Así, se queremos que el personaje jugador tenga una variable llamada edad con un valor de 18 (años), añadiríamos la siguiente línea a la definición del objeto jugador:
var edad = 18
Posteriormente, mediante programación, es posible acceder a este valor y modificarlo.
Los flags son variables que solo pueden tener dos valores: verdadero (true) o falso (false). El hecho de indicar un flag en la creación de un objeto significa que esta activado (que vale verdadero o true). Si queremos que un flag valga falso, debemos "negarlo" con un not delante. La ventaja de los flags respecto a las variables es que se pueden escribir varios seguidos separados por comas.
Por ejemplo, vamos a añadir dos flags a un objeto para indicar que es comestible pero que no es venenoso.
flags comestible, not venenoso
La declaración anterior sería equivalente a:
var comestible = true var venenoso = false
Los flags de la librería
La librería system/default ya añade a todos los objetos una serie de flags, todos ellos desactivados. Esto permite que todos los objetos de el modelo del mundo ya vengan con un comportamiento mínimo por defecto sin necesidad de tener que especificar nada durante su creación.
Por ejemplo, el flag comestible existe, como se verá más adelante, y sirve (como su nombre indica) para indicar si un objeto se puede comer o no. La librería ya añade este flag como desactivado, de manera que todos los objetos por defecto no son comestibles. De esta manera, nos aseguramos de que todos los flags tengan todos los flags posibles, aunque sea desactivados, para poder consultarlos sin obtener un error (leer una variable o un flag que no existe da como resultado un error de "variable o flag no encontrada").
Estos son todos flags que añade la librería a todos los objetos (se pueden consultar en system/default/clases-ObjetoReal.k )
var direccion = false
var localidad = false
var estatico = false
var listable = true
var soporte = false
var recipiente = false
var transparente = false
var conmutable = false
var encendido = false
var prenda = false
var comestible = false
var entrable = false
var subible = false
var propio = false
var animado = false
var jugable = false
var abrible = false
var abierto = true
var cerrojo = false
var cerrojoechado = false
var autoabrir = false
var autollave = false
Todos los flags están desactivados a excepción de listable y abierto. Más adelante se comenta que hace cada uno de ellos.