Random Generated events: Difference between revisions
No edit summary |
|||
Line 94: | Line 94: | ||
<schedulenext/> | <schedulenext/> | ||
<nowiki></time></nowiki> | <nowiki></time></nowiki> | ||
== All Tags == | |||
'''<code><nowiki><time></nowiki></code>''' | |||
* Defines a timed step of the event. | |||
* '''Attributes:''' | |||
** <code>seconds</code> → number of seconds after the event start when this block of actions should be executed. | |||
* '''Children:''' can contain <code>spawnnpc</code>, <code>spawnitem</code>, <code>trigger</code>, <code>destroynpc</code>, <code>destroyitem</code>, <code>schedulenext</code>. | |||
----'''<code><spawnnpc></code>''' | |||
* Spawns a new NPC into the event. | |||
* '''Attributes:''' handled in <code>psRandomEventsNPC::LoadXML()</code> (not shown here), but likely includes things like NPC type, position, ID, etc. | |||
----'''<code><spawnitem></code>''' | |||
* Spawns a new item into the event. | |||
* '''Attributes:''' handled in <code>psRandomEventsItem::LoadXML()</code> (not shown here), but likely includes item type, position, ID, etc. | |||
----'''<code><trigger></code>''' | |||
* Sends a behavior trigger to a spawned NPC. | |||
* '''Attributes:''' | |||
** <code>behavior</code> → name of the behavior to trigger (e.g., <code>"start_show"</code>). | |||
** <code>npc</code> → the numeric ID of the NPC that should execute this behavior. | |||
----'''<code><destroynpc></code>''' | |||
* Removes an NPC from the event. | |||
* '''Attributes:''' | |||
** <code>id</code> → numeric ID of the NPC to destroy. | |||
----'''<code><destroyitem></code>''' | |||
* Removes an item from the event. | |||
* '''Attributes:''' | |||
** <code>id</code> → numeric ID of the item to destroy. | |||
----'''<code><schedulenext></code>''' | |||
* Marks that after this timed step, the next event in the sequence should be scheduled automatically. | |||
* '''Attributes:''' none. |
Revision as of 13:37, 20 August 2025
A new capability has been added to PSUnreal about generating random events in the game.
Event location
An event is defined to happen in an "area type", it can be for example "forest" or "tavern" or specific location. There is relationiship beween random_events.area and random_event_locs.event_areatype.
If you want the event to happen in a specific path network waypoint, you can specify a random_events.area with this syntax: wp:<waypoint1|waypoint2|...>
Event Probability
In addition there is also random_event_locs.event_probability which is a % of chance of that event happening.
Database structure:
- random_events table
Scripting:
- Prerequisites (random_events.prerequisite)
- The same syntax of quest prerequisites can be used with the following additions:
- <skillsinrange name="Sword" min="10" max="20" range="10"> (works as skill but checks all the players in range and sum up their skills). If the name is empty it sums up the total skills of all players in range.
- The same syntax of quest prerequisites can be used with the following additions:
- Script for the event (random_events.script)
Race and traits
Race and traits are numerical as defined in the database. Maybe in the future we make it text. Check here for the list.
Options:
- You can specify a name and lastname in the <spawnnpc> tag, if omitted the NPC will have a random name and lastname.
- You can have a description, useful if you are specifying the name and the race of the NPC. If not specified it will empty.
- You can specify certain traits, if missing, the server will randomize by choosing the ones available for the given race.
Inventory:
The valid locations for inventory items are: "righthand,lefthand,helm,rightfinger,leftfinger,neck,back,arms,gloves,boots,legs,belt,bracers,torso,mind" . For bothhands we need TO CHECK it.
Example:
<time seconds="0"> <spawnnpc id="1" name="Erisal" lastname="Baloe" race="0|1|2|3|5|6|7|9|10|11" invulnerable="yes" hp="400" mana="400" loot_category="22" locx="1" locy="1" locz="0" description="A young dermorian girl, with a nice smile." traits="42|363|380"> <inventory> <item name="Small Battle Axe" location="righthand"/> <item name="Falchion" location="bulk1" quantity="65"/> <item name="Chainmail Legs Armor" location="legs"/> </inventory> <skills> <skill name="Sword" value="50"/> </skills> <stats str="80" agi="70" end="60" int="75" wil="55" cha="90"/> <kas> <ka name="Merchant" priority="1"/> </kas> <specifickas> <trigger trigger="greetings" response1="Hello" response2="How are you?"/> </specifickas> <merchant> <category name="Weapons"/> <category name="Armor"/> </merchant> <trainer> <skill name="Strength" min_rank="0" max_rank="20" min_faction="0"/> </trainer> <factions> <faction name="orcs" value="50"/> </factions> <variables> <variable name="scale" value="1.5"/> </variables> <npctype name="performer" parent="Fighter" > <behavior name="start_show" completion_decay="0" growth="0" initial="0"> <emote cmd="/bow" /> <talk text="Welcome to my show" target="false" /> <busy/> </behavior> <behavior name="show" completion_decay="0" growth="0" initial="0"> <emote cmd="/greet" /> <wait duration="30" anim="play" /> </behavior> <behavior name="showidle"> <idle /> </behavior> </npctype> </spawnnpc> <spawnitem id="2" name="Long Bow" pickup="yes"> <location x="1" y="1" z="0"/> </spawnitem> </time> <time seconds="30"> <trigger behavior="start_show" npc="1"/> </time> <time seconds="45"> <trigger behavior="show" npc="1"/> </time> <time seconds="60"> <trigger behavior="showidle" npc="1"/> </time> <time seconds="70"> <destroynpc id="1"/> <destroyitem id="2"/> <schedulenext/> </time>
All Tags
<time>
- Defines a timed step of the event.
- Attributes:
seconds
→ number of seconds after the event start when this block of actions should be executed.
- Children: can contain
spawnnpc
,spawnitem
,trigger
,destroynpc
,destroyitem
,schedulenext
.
<spawnnpc>
- Spawns a new NPC into the event.
- Attributes: handled in
psRandomEventsNPC::LoadXML()
(not shown here), but likely includes things like NPC type, position, ID, etc.
<spawnitem>
- Spawns a new item into the event.
- Attributes: handled in
psRandomEventsItem::LoadXML()
(not shown here), but likely includes item type, position, ID, etc.
<trigger>
- Sends a behavior trigger to a spawned NPC.
- Attributes:
behavior
→ name of the behavior to trigger (e.g.,"start_show"
).npc
→ the numeric ID of the NPC that should execute this behavior.
<destroynpc>
- Removes an NPC from the event.
- Attributes:
id
→ numeric ID of the NPC to destroy.
<destroyitem>
- Removes an item from the event.
- Attributes:
id
→ numeric ID of the item to destroy.
<schedulenext>
- Marks that after this timed step, the next event in the sequence should be scheduled automatically.
- Attributes: none.