QuestPlus
Descripción general
QuestPlus amplía la extensión Quest de TypeWriter con un objetivo de escolta, una rotación diaria de misiones y un hecho de estado de combate. En una escolta, un NPC camina de checkpoint en checkpoint a lo largo de una red de caminos y el jugador tiene que mantenerlo con vida y permanecer cerca. Una definición de misión temporal decide cuándo está disponible un conjunto de misiones y cuáles se eligen para el día.
Las escoltas usan las extensiones Quest, Basic, RoadNetwork y Entity: la ruta procede de una red de caminos, el NPC es una instancia de entidad y la brújula o el rastro de camino para el jugador proceden de la brújula Quest de QuestCodex, porque el objetivo de escolta es localizable.
Los indicadores de estado de misión sobre las cabezas de los NPC (npc_status_override) no forman parte de QuestPlus. Los proporciona UiCore con sus placas de nombre.
Características
- Objetivo de escolta: un NPC sigue una ruta de nodos de camino, hace una pausa en cada checkpoint y debe llegar al final.
- Reglas de fallo y de reinicio: el jugador debe permanecer dentro de un radio de guardia, los mobs pueden herir al NPC y puede aplicarse un límite de tiempo.
- Disparadores de checkpoint: disparadores de inicio, checkpoint, pérdida, recuperación, reinicio, finalización y fallo, además de disparadores de emboscada por checkpoint.
- Visualización de la escolta: scoreboard y barra de jefe opcionales que muestran el checkpoint, el tiempo y la salud.
- Acciones de escolta: inicia, avanza, reinicia y detén una escolta desde cualquier secuencia.
- Misiones temporales: un conjunto rotativo con disponibilidad por día de la semana, horas y cron, un número de misiones elegidas cada día y un límite de finalizaciones.
- Estado de combate: un hecho que vale
1durante unos segundos después de que el jugador golpee o reciba un golpe. - Objetivos ocultables: oculta un objetivo hasta que se siga su misión.
- Placeholders: progreso, salud y tiempo de la escolta, y las misiones del día con una cuenta atrás hasta la siguiente rotación.
Instalación
- Instala las extensiones de TypeWriter Quest, Basic, RoadNetwork y Entity que QuestPlus declara como dependencias.
- Opcional: instala QuestCodex para mostrar al jugador los waypoints de la escolta.
- Coloca el JAR de QuestPlus en
plugins/Typewriter/extensions/y reinicia el servidor. - Construye una red de caminos con la extensión RoadNetwork para la ruta de tu escolta; consulta Primeros pasos.
Primeros pasos
Crea una misión de escolta:
- En el panel web de TypeWriter, crea una red de caminos con la extensión RoadNetwork y coloca los nodos por los que debe pasar tu NPC. Mantén las aristas actualizadas: si no se puede calcular el camino, el NPC no llega a su nodo.
- Añade una entrada Path Escort Activity. Establece
roadNetwork, enumera los ids de los nodos ennodesen orden de recorrido y estableceidleActivityen lo que hace el NPC una vez terminada la ruta. - Crea una instancia de entidad para tu NPC de escolta y establece su
activityen esta Path Escort Activity. La instancia debe pertenecer a una audiencia activa, porque QuestPlus usa la visualización que TypeWriter ya ejecuta para ella. - Añade una entrada Escort Objective. Establece
quest,npc(tu instancia de entidad) ydisplay. AjustamaxHealth,guardRadius,loseToleranceSec,spawnRadiusystartRadius, y opcionalmenteglobalTimeLimitSec. - Enlaza los disparadores:
onEscortCompletecon lo que deba ocurrir en caso de éxito (por ejemplo, una acción que establezca un hecho para el siguiente paso de la misión) yonEscortFailcon la gestión del fallo. - Deja que el jugador llegue hasta la escolta. La escolta empieza por sí sola cuando un jugador de la audiencia del objetivo se acerca a
startRadiusdel primer nodo. Para iniciarla en su lugar desde un diálogo o un evento, usa Escort Start conobjective. - Cada vez que el NPC se detiene en un checkpoint, usa Escort Next (por ejemplo, tras una línea de diálogo o una emboscada superada) para hacerle caminar hasta el siguiente.
- Publica y prueba: el NPC aparece cerca del primer nodo, y la escolta comienza cuando te acercas a
startRadiusde él.
Usa /escort debug resolve <objective> para comprobar que el primer nodo y los radios se resuelven.
Rellena ambushes con un checkpointIndex y triggers. Cuando la escolta llega a ese checkpoint, los disparadores se activan una vez, por ejemplo para generar mobs con otra extensión.
Cómo funciona
Cuando empieza una escolta, QuestPlus crea para el NPC un contenedor de salud invisible que solo ve el jugador escoltado. Los mobs cercanos dentro de guardRadius lo toman como objetivo. El NPC pierde salud con los golpes de los mobs (mobHitDamage) y puede regenerarse (regenPerSec). Los jugadores no pueden herirlo. Está totalmente protegido si invulnerable está activado.
El NPC camina hasta el siguiente nodo del camino, que se considera alcanzado cuando el NPC está a menos de nodeReachRadius de él, y espera después hasta que una acción Escort Next lo libera. Al llegar a un checkpoint se disparan onCheckpoint y los disparadores de emboscada correspondientes. Tras el último nodo, se dispara onEscortComplete.
Reinicio. La escolta vuelve a su último checkpoint, con la salud del NPC al máximo, cuando el NPC muere o muere el jugador, o cuando el jugador permanece más lejos de guardRadius durante loseToleranceSec segundos. onEscortLost se dispara cuando el jugador sale del alcance y onEscortRecovered cuando vuelve. onEscortReset se dispara en un reinicio.
Fallo. La escolta falla cuando se agota globalTimeLimitSec, cuando el jugador se desconecta, cuando el NPC desaparece o con Escort Stop. Se dispara onEscortFail.
Una acción Escort Reset cancela la escolta sin ningún disparador de fallo.
Misiones temporales
Una Temporary Quest Definition es un filtro de audiencia. Sus children solo se muestran a los jugadores mientras está activa:
- Disponibilidad. Está activa en los
daysOfWeekindicados, entrestartTimeyendTime(HH:mm) si están definidos, y cuandocronExpressioncoincide si está definida. - Selección diaria. Cada día se eligen al azar
questsPerDaymisiones dequests. La elección es determinista para un día y una entrada dados, cambia enresetTimey se guarda en un Temporary Quest Artifact referenciado porartifact. - Límite de finalizaciones. Con
maxCompletedpor encima de0, los jugadores que hayan completado esa cantidad de las misiones del día dejan de ver los hijos. El contador se guarda en el artefacto y se reinicia con el día.
La selección diaria se expone mediante placeholders y el recuento de finalizaciones. El propio filtro no oculta las misiones que no se eligieron: usa los placeholders en tus menús, o diseña la disponibilidad de tus misiones de modo que solo sean accesibles las que muestras.
Estado de combate
El Combat Status Fact vale 1 mientras el jugador haya golpeado a una entidad o haya sido golpeado por una durante los últimos thresholdSeconds (10 por defecto), y 0 en caso contrario. Úsalo en los criterios para bloquear el viaje rápido, los diálogos o las recompensas de desconexión durante un combate. Solo hace seguimiento de los combates en los que interviene un jugador.
Placeholders
Etiquetas de MiniPlaceholders para texto MiniMessage.
Escolta, para el jugador escoltado. Cuando no hay ninguna escolta activa, los valores son neutros.
| Placeholder | Devuelve |
|---|---|
<escort_checkpoint> | Checkpoint actual como n/total, 0/0 cuando está inactiva. |
<escort_time> | Segundos transcurridos, o segundos restantes cuando el objetivo tiene un límite de tiempo. |
<escort_health>, <escort_health_max> | Salud del NPC de escolta y su máximo, 0 cuando está inactiva. |
<escort_is> | 1 cuando hay una escolta activa. |
<escort_is_max> | 1 cuando se ha alcanzado el último checkpoint. |
Misiones temporales, donde id es el id de la entrada Temporary Quest Definition.
| Placeholder | Devuelve |
|---|---|
<tempquest_active_quests:id> | Ids de las misiones de hoy, separados por una coma. |
<tempquest_time_remaining:id> | Tiempo antes de la siguiente rotación como HH:MM:SS. |
<tempquest_quests_per_day:id> | Número de misiones elegidas por día. |
<tempquest_quest_name:id:n> | Nombre visible de la n-ésima misión del día, empezando en 1. |
<tempquest_quest_desc:id:n> | Texto visible de la n-ésima misión. |
Comandos
| Comando | Descripción |
|---|---|
/escort debug start <objective> | Inicia una escolta para ti (solo jugadores). |
/escort debug stop | Detiene tu escolta. |
/escort debug skipnode | Hace avanzar tu escolta hasta el siguiente checkpoint. |
/escort debug scan | Ejecuta ahora el escaneo de inicio automático. |
/escort debug resolve <objective> | Imprime el primer nodo y los radios de un objetivo. |
El <objective> es el id o el nombre de un Escort Objective. El comando necesita questplus.escort.debug.
Permisos
| Permiso | Concede |
|---|---|
questplus.escort.debug | /escort debug. No tiene valor por defecto, por lo que solo lo tienen los operadores salvo que lo concedas. |
Entradas
9 entradas, generadas a partir del código fuente de la extensión.
Acciones4
- Escort NextAdvance escort to next checkpoint
- Escort ResetReset escort objective
- Escort StartStart an escort objective
- Escort StopStop the current escort objective
Objetivos1
- Escort ObjectiveEscort an NPC along a route
Hechos1
- Combat Status FactCombat Status Fact
Audiencias1
- Temporary Quest DefinitionActivates a rotating subset of quests each day
Actividades1
- Path Escort ActivityMoving along a path for escort
Artefactos1
- Temporary Quest ArtifactStores today's quests and reset time
Resolución de problemas
El NPC nunca aparece. El registro dice "npc instance missing" o "has no display registered in the AudienceManager". El npc del objetivo debe ser una instancia de entidad que pertenezca a una audiencia activa. Ejecuta /escort debug resolve <objective> y comprueba que la instancia existe.
El registro dice "is missing a path_escort_activity". La instancia de entidad usada como npc debe tener una Path Escort Activity como su activity.
"node ... not found" o "has no nodes". Los nodes de la actividad enumeran ids que no están en la roadNetwork seleccionada, o la lista está vacía. Vuelve a elegir los nodos tras editar la red.
"navigation ... ended N blocks away from the node. The road network could not produce a walkable path; recalculate its edges." El NPC no puede caminar hasta el nodo. Recalcula las aristas de la red de caminos y comprueba el terreno entre los nodos.
La escolta no empieza por sí sola. El jugador debe estar en la audiencia del objetivo (la misión activa y los criteria del objetivo verdaderos), en el mismo mundo que el primer nodo y a startRadius de él. En caso contrario, inícialo con Escort Start. El NPC solo aparece cuando el jugador está a spawnRadius del primer nodo.
La escolta se reinicia de inmediato. El jugador está más lejos de guardRadius durante más tiempo que loseToleranceSec, o el NPC está muriendo por los golpes de los mobs. Aumenta el radio o la tolerancia, reduce mobHitDamage o activa invulnerable.
El NPC se detiene en cada nodo y no continúa. Es lo previsto: espera a Escort Next en cada checkpoint.
Todas las misiones temporales están ocultas. La definición solo está activa en sus daysOfWeek, entre startTime y endTime, y cuando cronExpression coincide. Compruébalos, y también el límite maxCompleted.
Extensiones relacionadas
- QuestCodex: brújula y camino hacia los waypoints de la escolta.
- UiCore: indicadores de estado de misión sobre los NPC (
npc_status_override).