beasty-visual-novel / world / items-and-inventory.md

Objetos e inventario

Los objetos son cosas que lleva el jugador. Una llave que abre una puerta, una poción que se bebe, tres flores que le pidieron recolectar. Esta página cubre cómo definir un objeto, entregarlo, y la pantalla de inventario que el jugador abre.

Definir un objeto

Abre Tools > Beasty VN > Editor, ve a la pestaña Items y pulsa + Item. Los objetos viven en el contexto compartido, así que una sola lista sirve a todas las escenas del juego.

CampoQué es
IdEl nombre estable (potion). Se genera automáticamente, y es editable. Todo apunta a este.
IconEl sprite que se muestra en la cuadrícula del inventario y en el popup de detalle.
KindKey o Consumable.
Max quantityHasta qué punto se apila un consumible. Un objeto Key siempre está limitado a 1, diga lo que diga esto.
Name keyLa clave de localización del nombre mostrado del objeto, en la tabla de UI global. Escribes el texto directamente en la pestaña Items.
Description keyLa clave de localización de la descripción mostrada en el popup de detalle.

Un objeto Key es una bandera de posesión: el jugador la tiene o no. Un Consumable se apila desde 0 hasta su máximo.

Al usar

Todo objeto tiene una sección on use. Es lo que ocurre cuando el jugador pulsa Use en el inventario, o cuando se ejecuta un bloque Use.

CampoQué hace
Use conditionUsar solo se permite cuando esta condición se cumple. Vacío = usable en cualquier sitio.
Cannot use messageLa clave de localización del mensaje mostrado cuando la condición falla. Vacío = un mensaje integrado.
EffectsCambios de variable aplicados al usar: health += 20, door_unlocked = true.
Jump to scene (+ start node)Una escena VN a la que saltar cuando se usa el objeto — una cinemática de “beber la poción”. Vacío = te quedas donde estás.
Consume amountCuántos se eliminan. Los consumibles usan 1 por defecto. Ponlo en 0 para un objeto llave, que se usa pero no se gasta.

Esta es la misma condición y los mismos efectos que usa el resto del motor, así que la lógica de los objetos se comporta exactamente como la lógica de una elección. Consulta Variables y condiciones.

Los bloques

Cuatro operaciones, todas en la categoría Items de la paleta:

BloqueQué hace
GiveAñade N. Limitado al máximo del objeto.
TakeQuita N. Limitado a 0.
Set quantityFija el número exacto que se tiene. Limitado a 0..max.
UseEjecuta la lógica on-use del objeto: comprueba la condición, aplica los efectos, consume, y salta si hay una escena fijada.

Give y Take nunca se desbordan ni bajan de cero, así que no puedes acabar con -2 pociones por quitar una de más.

En el guion de texto estas son give 3 potion, take 1 potion, item potion = 5 y use key.

El contador de un objeto es solo una variable

El número de un objeto que tiene el jugador vive en el almacén de variables compartido bajo la clave item.<id>. Es un número simple: item.potion es 3, item.rusty_key es 0 o 1.

Eso es todo el inventario. No hay un archivo de guardado de inventario aparte, ni un sistema de inventario con el que hablar. Lo que significa:

  • Cualquier condición puede preguntar sobre objetos. item.potion >= 3 es una cláusula como cualquier otra. Ponla en una elección, una puerta, un objetivo de misión, una regla de rutina, un botón de pantalla.
  • El inventario está en cada partida guardada, porque el almacén lo está.
  • Se rebobina. Retrocede más allá del bloque que quitó la llave y el jugador vuelve a tener la llave.

Filtrar por un objeto

Dale a una elección una condición de item.rusty_key >= 1 y la elección “Desbloquear la verja” solo aparece cuando el jugador realmente tiene la llave. Haz lo mismo en la excepción de acceso de una puerta y la puerta permanece cerrada, con una línea que explica por qué, hasta que la encuentren. Consulta Elecciones y decisiones y Interactuables y puertas.

Nota El bloque Deliver items no hace nada, en silencio, cuando al jugador le faltan los objetos. Si una rama debe tener la certeza de que la entrega ocurrió, protege esa rama primero con el contador del objeto. Consulta Misiones.

La pantalla de inventario

El prefab Inventory es una superposición ya hecha: una cuadrícula de los objetos que el jugador tiene actualmente, y un popup de detalle.

  • La cuadrícula es dinámica. Muestra una ranura por cada objeto con una cantidad de al menos 1, en el orden de ranura guardado del jugador. Usa la última poción y la ranura desaparece y la cuadrícula se recoloca. Recoge algo nuevo y se añade al final.
  • Una ranura muestra el icono del objeto y cuántos se tienen.
  • El popup de detalle se abre cuando el jugador clica una ranura. Muestra el icono, el nombre, la descripción y un botón Use, que ejecuta exactamente la lógica on-use de arriba — incluido rechazar, con tu mensaje, cuando la condición de uso falla.

Es un prefab uGUI normal. Restilízalo, mueve cosas de sitio, reemplaza el arte; consulta Prefabs de UI.

Añadirla y abrirla

En la pestaña Screens del editor, pulsa + Inventory (ready-made). Eso copia el prefab a tu proyecto y lo registra como pantalla secundaria con un id. Solo se crea un inventario; pulsa el botón dos veces y selecciona el existente.

El jugador la alcanza de una de dos formas:

  • Un botón del HUD. Añade un elemento a tu pantalla de HUD con la acción OpenScreen, apuntando al id de pantalla del inventario. Esta es la forma habitual.
  • El bloque Open screen (categoría de paleta World). La abre desde dentro de la historia — después de que el jugador reciba su primer objeto, por ejemplo.

Las pantallas secundarias forman una pila con Back y Close automáticos, así que un inventario abierto sobre una sala se cierra de vuelta a la sala. Consulta Pantallas y HUD.

Ver también