NC Rift — Configuration guide
This guide explains what to fill in to make the resource work on your server and what every option does. Everything is changed from the config: there is no need to touch the code.
- The config files are
config.luaand theconfig/folder. - Your own changes go in
config_custom.lua, which you create by copyingconfig_custom.lua.example. It is loaded after all the other files and changes only what you write: this way, when you update the resource, you lose nothing. - At start the server console prints
config check: N warning(s)and a warning for every error:- a misspelled key;
- a wrong type (for example a text where a number is needed);
- a reference that does not exist (for example a zone that uses a mob that is not there).
The resource starts anyway. Fix until you read 0 warning(s).
- Distances are in metres, times in milliseconds (
...Ms), in seconds (...Sec,seconds) or in minutes (...Min). Chances go from0to1(0.25= 25%). - Coordinates are written as in FiveM:
vec3(x, y, z)orvec4(x, y, z, heading).
1. Quick start: what you must fill in
| # | What | Where | Notes |
|---|---|---|---|
| 1 | Start the assets before the resource | server.cfg | ensure nc_rift_assets and then ensure nc_rift. Never restart nc_rift_assets with players inside: their clients crash. |
| 2 | Permission of the admin commands | server.cfg | add_ace group.admin nc_rift.admin allow (the permission name is Config.AdminAce). |
| 3 | Language | config.lua → Config.Locale | With Config.Bridge.LocaleFromGame = true every player reads the texts in the language of their GTA. |
| 4 | Framework, inventory, notifications | config.lua → Config.Bridge | With 'auto' the resource finds Qbox, QBCore, ESX or no framework (standalone) by itself. |
| 5 | Your zones | config/zones.lua → Config.Zones | Where mobs spawn: center and radius (or polygon), mobs, levels, density. The default config already has them over the whole GTA map (levels from 1 in the south up to 10 in the north, 4 red zones, a safe zone at every hospital), 12 fixed rifts, 8 random rift points and 2 bosses: you can use it as it is or change it. Three background zones (wild_south, wild_middle, wild_north) cover the rest of the map with few mobs: remove them to have mobs only in the real zones. |
| 6 | Spawn points of the rifts (and, if you want, of the mobs) | points of the zone, or in game /rift_point add | A rift with no pos and no points in its zone does not open: the console says so. |
| 7 | Rifts | config/rifts.lua → Config.Rifts | Every fixed rift: zone (or pos), level, health, mobs it spawns. |
| 8 | Random rifts (optional) | config/rifts.lua → Config.RandomRifts | Rifts that show up at random in the zones you choose, now and then. |
| 9 | Bosses with arena | config/bosses.lua → Config.Bosses | The arena center is in your coordinates. |
| 10 | Rewards | config.lua → Config.Rewards, plus the loot field of mobs, bosses and rifts | The item names must exist in your inventory: at start the console says which are missing. |
| 11 | EXP | config.lua → Config.Xp | Where EXP is saved: Provider. |
| 12 | Your own mod peds and weapons | config_custom.lua | See the example: model of the ped, weapon (prop in the hand), attacks (animations). The ones of nc_rift_assets are already given by config_assets.lua. |
Quick test in game, after the start:
/rift_devtestchecks every model, animation and particle of the config and writes the result todata/devtest.txt;/rift_spawn <type>creates mobs in front of you;/rift_open <rift>opens a rift in front of you;/rift_randomopens a random rift right now;/rift_boss <boss>summons a boss.
2. Recipes (the most common cases)
Adding a monster zone
In config/zones.lua (or in config_custom.lua, written as Config.Zones.my_zone = { ... }):
my_zone = {
shape = 'circle', center = vec3(100.0, -200.0, 30.0), radius = 150.0,
zMin = -20.0, zMax = 200.0, -- height where the zone counts
interior = false, indoor = false, bucket = 0,
mobs = { 'skeleton_warrior', 'ghost' }, -- keys of Config.Mobs
levels = { 1, 5 }, -- minimum and maximum level
density = 6, -- mobs alive together in the zone
day = 1.0, night = 1.5, -- density x by day / by night
red = false, safe = false,
points = {}, -- empty = random point on valid ground
},Adding a fixed rift
In config/rifts.lua, inside Config.Rifts:
my_rift = {
zone = 'my_zone', pos = nil, -- pos = vec3(...) for a fixed point, nil = a point of the zone
level = 3, hp = 1500, size = 1.0,
spawn = { types = { 'skeleton_warrior' }, everySec = 20, max = 6 },
respawnSec = 600, -- destroyed: it opens again after 10 minutes
boss = nil, blackout = false,
resist = { melee = 1.0, bullet = 1.0, fire = 1.0 },
loot = nil, -- nil = Config.Rewards.default.rift
},The name in the 9 languages goes in locales/<language>.lua, under the key rift_name_my_rift. Without this key the id is shown.
Rifts that show up at random
In config/rifts.lua, Config.RandomRifts.list: { rift = 'my_rift', zones = { 'my_zone', 'other_zone' }, weight = 1 } or, with your own points, { rift = 'my_rift', points = { vec4(x, y, z, heading), ... }, weight = 1 }. The rift uses the data of Config.Rifts.my_rift (health, mobs, loot) and appears at one of those points or at a point of one of those zones. With randomOnly = true in Config.Rifts.my_rift that rift opens only at random, never at start.
Coordinates with an imprecise z
The z of the config coordinates (pos of the rifts, points of the random rifts, arena center of the bosses) can be a few metres wrong: the first player who passes near asks the game where the ground is and the server moves the rift (or the boss) there. The answer stays in data/ground.json, so it happens only once. It is tuned with Config.Rift.groundFix; for a rift or a boss on a roof, in an MLO or on an island high up set ground = false.
Adding a boss
In config/bosses.lua:
mob= a type ofConfig.Mobs;arena.center= your coordinates;spawn.mode:'timer'= at start and thenrespawnMinminutes after death;'admin'= only with/rift_boss;'event'= only from theSpawnBossexport.
Giving items as a reward
In the loot field of a mob, a boss or a rift, or in Config.Rewards.default:
loot = { items = { { item = 'bandage', min = 1, max = 2, chance = 0.3 } },
money = { { account = 'cash', min = 50, max = 120, chance = 1.0 } },
itemsChance = 0.3, moneyChance = 0.8 },With ox_inventory you use the names of ox_inventory/data/items.lua. itemsChance / moneyChance (optional, from 0 to 1) are the chance that the mob drops items / money at all: with itemsChance = 0.3 only 3 mobs out of 10 drop items, and for those each line rolls its own chance. Without = always. In the editor they are the "Item drop %" and "Money drop %" fields of the preset.
A new monster type
Copy a mob of config/mobs.lua with a new key and change model, hp, damage, spells, xp. Mod peds and props go in config_custom.lua. Then add the key to the mobs of a zone. The name in the 9 languages goes in locales/<language>.lua, under the key mob_name_<key>.
3. All the options
3.1 config.lua — general
| Option | Default | What it does |
|---|---|---|
Config.Locale | 'it' | Language of the texts: it en de fr es pt zh ja ko. A missing line is shown in English. Chinese, Japanese and Korean show only in NUI texts. |
Config.Bridge.Framework | 'auto' | 'auto' | 'qbx' | 'qb' | 'esx' | 'standalone'. |
Config.Bridge.LocaleFromGame | true | Every player reads the texts in the language of their GTA (if it is one of the 9). |
Config.Bridge.Notify | 'nui' | Where notifications show: 'nui' (ours, in the chosen theme) | 'ox_lib' | 'framework' | 'native' | 'auto'. |
Config.Bridge.NotifyMs | 4500 | How long a notification lasts. |
Config.Bridge.Inventory | 'auto' | Where items go: 'auto' | 'ox_inventory' | 'qb-inventory' | 'framework' | 'none' (in that case you give them in open/server/rewards.lua). Money always goes through the framework. |
Config.Debug | false | [DEBUG] messages in the console. |
Config.AdminAce | 'nc_rift.admin' | Permission of the admin commands (it can also be changed in open/server/hooks.lua → IsAdmin). |
Config.Editor | 200 presets, 30 layers, 2000 points, batches of 50, 20 changes every 2000 ms | Limits of the admin editor /rift_editor: how many presets, layers and spawn points can be saved in data/editor/, how many points the brush sends at a time and how many changes per second the server accepts. Usually left alone. |
Config.Editor.spawnDistance / respawnSec / tickMs | 120 m / 120 s / 2000 ms | Mobs of the points placed with the editor: every point (of a layer that is on) keeps one mob of its preset, which shows up when a player is within spawnDistance, comes back respawnSec seconds after death and goes away when everyone is far (1.5 × spawnDistance). |
Config.Editor.maxMobsNear | 25 | Mobs alive within cullDistance above which the editor points wait. It is higher than maxMobsPerPlayer, so the hand placed mobs spawn even when the zones have filled their limit; if a point waits, /rift_debug writes it. Every preset can have its own respawn (Respawn field). Rift presets also have the mobs they spawn, every how many seconds and how many at most. |
Config.Editor.bossRespawnSec / riftRespawnSec | 1800 s / 600 s | Bosses and rifts of the editor points: they spawn / open when a player is within spawnDistance, stay even if everyone leaves and come back these seconds after the boss death / rift destruction. |
Config.Editor.maxZones / polyMax | 50 / 32 | Zones drawn with the Zone tool of the editor: how many in all and how many corners at most for a polygon zone. They work like the zones of Config.Zones as long as their layer is on. |
Config.ZoneBlips | on, safe green (2), red red (1), alpha 90 | Marks on the minimap and the map the safe zones and the red zones, both of the config and of the editor. enabled = false = none; blip = false in a zone (or the "On minimap" tick in the editor) = not that zone. Polygons show as the circle that holds them. |
Config.UI.scale / multiplier | 'auto' / 1.0 | Size of the NUI visuals. |
Config.UI.Theme | 'fantasy' | Style of all the visuals: 'fantasy' | 'scifi' | 'horror' | 'steampunk' | 'dieselpunk'. |
Config.Integrations.notify | — | Notifications through an export of another resource: { resource, export }. |
3.2 Performance (Config.Perf)
| Option | Default | What it does |
|---|---|---|
thinkNearMs / thinkFarMs | 250 / 2000 | How often a mob "thinks" with a player near / far. |
nearDistance | 60 | Within this distance the player counts as near. |
cullDistance | 250 | Beyond this distance from every player the mob stays still and uses no CPU. |
maxMobsTotal | 60 | Mobs alive in the whole server. |
maxMobsPerPlayer | 15 | Mobs alive around a player (also counts rifts and summons). |
barDistance | 30 | Maximum distance of the bars over the head (at most 60). |
maxSpeech | 3 | Speech bubbles visible together. |
syncRange | 150 | Who receives spells, sounds and effects. |
spawnTickMs / spawnPerTick | 5000 / 2 | How often the zone spawner adds mobs, and how many at most per zone each time. |
respawnSec | 60 | Seconds before a mob killed in a zone is replaced (0 = at once). It can be changed for every zone and every mob type (the mob one wins, then the zone one). |
spawnMinDist / spawnMaxDist | 25 / 70 | Mobs spawn in a ring around the player, between these two distances. Every zone can have its own. |
3.3 World
| Option | What it does |
|---|---|
Config.Population[bucket] | For every routing bucket: peds, vehicles, parked, animals, scenarios, dispatch, wanted. false = the resource turns it off; true = the resource does not touch it. By default in bucket 0 everything is off (pedestrians, traffic, parked cars, GTA animals, scenarios, dispatch): nc_rift makes the animals (Config.Animals). With animals = true GTA's come back, but GTA then also makes some pedestrians that nc_rift deletes (you see them vanish far away). |
Config.Animals | Animals made by nc_rift on the server (seen the same by everyone): zones (circle or polygon, models, density; the smallest zone wins), they spawn between minDist and maxDist m from the player, countDistance for the density, they go away beyond despawnDistance, maxTotal in the whole server, wanderRadius = how far they walk around their spawn point. They are not mobs (no bars, EXP or loot). enabled = false = none. Area for some animals only: a small zone (radius up to maxDist) with only those models; it turns on when a player passes near, the animals spawn and wander inside it and those of the zones around never get in (examples deer_park, chicken_yard in config/animals.lua). |
Config.Blackout.Provider | Who turns the lights off: 'nc_rift' | 'custom' (open/server/blackout.lua, for example your weather script) | false = never. |
Config.Blackout.vehicles / nightOnly / onBoss / onRift | Also turns off the headlights / only at night / turns off by itself when a boss arrives / stays off while a rift is open. |
Config.Movement.NoNavmesh | How mobs move where there is no navmesh: 'straight' | 'teleport_short' (small jumps when stuck) | 'static' (still, they only use spells). |
3.4 Mob brain (Config.Ai)
| Option | Default | What it does |
|---|---|---|
sightDistance / sightAngle | 40 / 140 | How far it sees and width of the sight cone in degrees (360 = it sees all around). |
nightFactor / blackoutFactor | 0.6 / 0.4 | Sight is multiplied by this value at night / during the blackout. |
closeDistance / hiddenCloseDistance | 4 / 1.5 | This close it always notices you / a hidden player is seen only this close. |
attackDistance | 2.5 | Under this distance the mob fights (if it has no keepDistance). |
spellGapMs | 6000 | Pause between two spells of the same mob. |
memorySeconds | 12 | How long it goes looking for you at the last place it saw you. |
patrolRadius / leashDistance | 12 / 120 | How much it walks around where it spawned / beyond this distance from home it gives up and goes back. |
kiteRatio | 0.5 | Ranged mobs back off if you get closer than keepDistance x this value. |
packAloneDistance / packAloneBonus / packHurtBonus | 12 / 15 / 20 | The leader of a pack prefers lonely players and hurt ones. |
leaveDistance | 25 | After killing its target, the mob walks this far away. |
aggroPerDamage / aggroLastHit | 0.5 / true | How much damage weighs in choosing the target / the last player who hits the mob takes the aggro. |
fleeHealthPct | 0 | Under this % of health the mob runs away (0 = never). |
losMs / loseMs | 1000 / 2000 | How often it checks again the walls between mob and player / after how long without seeing them it loses the target. |
hearRange / noise.* | 60 | Hearing: radius of every noise (shot, explosion, sprint, vehicle, horn). |
3.5 Damage (Config.Damage)
| Option | What it does |
|---|---|
weapons.WEAPON_X = { damage, kind } | Damage of every player weapon against the mobs. kind can be 'melee', 'bullet' or 'fire'. anyHeld = true is needed for thrown weapons. default counts for weapons not in the list. The damage is always decided by the server. |
maxDistance / maxMeleeDistance | Hits from farther than this are ignored (anti-cheat). |
minIntervalMs | Minimum gap between two hits of the same player. |
corpseSeconds | How many seconds the mob body stays. |
vehicleImmune | true = running mobs over with a car does no damage. |
hitReact | Reaction of the player hit by a mob: animation (also different per side with sides), camera shake (shake), fall (ragdollMs). |
3.6 Rewards, stealth items, EXP
| Option | Default | What it does |
|---|---|---|
Config.Rewards.enabled | true | Rewards on or off. |
Config.Rewards.mode | 'each' | 'each' = everyone rolls their own loot; 'top' = only who did the most damage. |
Config.Rewards.minShare | 0.10 | Minimum share of the damage (10%) to get the reward. Bosses use their own rewardMinShare instead. |
Config.Rewards.byDamage | { rift = true } | true = the loot is rolled once and split by damage share (money and amounts x share). The share of who is under minShare goes to the others. |
Config.Rewards.default.mob/boss/rift | money | Loot of whoever has no loot field of their own. |
Config.Stealth.items | rift_silence, rift_shadow | Usable items: silent = seconds in which your noises do not draw the mobs; hidden = seconds in which the mobs do not see you. With ox_inventory add to the item server = { export = 'nc_rift.<name>' }. |
Config.ImmunityItems | rift_ward_earth, rift_ward_storm, rift_ward_frost, maxSec = 60 | Immunity items: for seconds seconds (never beyond maxSec) the spells in spells (keys of Config.Spells, e.g. 'roar' earthquake, 'bolt' lightning, 'frost' ice) do not hit you; noFall = true = no spell or hit knocks you down (no grab and throw). They are registered like the stealth items. Using it plays anim; while it lasts every player near sees aura: an energy vortex on the ground with smoke (fx, our nc_rift_ward.ypt); the spiral light trails (spiral) are optional, off. The colour comes from the seal: aura inside each item (name = nc_rift_ward_earth gold, nc_rift_ward_storm blue, nc_rift_ward_frost ice blue, nc_rift_ward_white; color = light). |
Config.RiftItems.items | rift_bomb | Items that break rifts: used within range metres of an open rift they take damage health from it (× the rift's resist.item); all = true = every rift within range; fx = effect on the rift. With no rift near the item is not used up. They are registered like the stealth items. throw = the throw: the player's anim, the bomb model flies to the rift from releaseMs to impactMs; then damage, effects fx (a list, z = metres above the rift), sound sfx (files in web/sounds) and camera shake shake. |
Config.Xp.Provider | 'nc_rift' | Where EXP goes: 'nc_rift' (saved in KVP, no database) | 'framework' (metadata, key metaKey) | 'nc_skills' | 'custom' (open/server/xp.lua). |
Config.Xp.mult | boss 3, red 1.5, night 1.25, rift 2 | EXP multipliers. |
Config.Xp.riftXp | 50 | Base EXP of a rift that has no xp field of its own. |
Config.Xp.partyBonus / partyRange | 0.10 / 120 | With nc_party started: the members near get the full EXP + 10%. |
Config.Xp.levels | 10 thresholds | Total EXP needed for every player level. |
3.7 Visuals
| Option | What it does |
|---|---|
Config.Bars.mode | Which bars show over the head: 'eco' (up to maxBars hurt or near mobs, no number; the lightest) | 'all' (the maxBars nearest) | 'target' (just one: the mob you aim at or hit last). |
Config.Bars.* | scanMs, width, height, headOffset, lineOfSight (bar hidden behind walls), showLevel, leaderFrame, colors (colour by difficulty: mob level minus player level). |
Config.BarThemes.<theme> | Look of the bars for every theme: colours, frame, ticks, studs, ornament. |
Config.Rift | Look of the portals: fx (looped effect), implode (effect when it is destroyed), light, marker, drawDistance, fadeMs, spinDegPerSec. |
Config.Rift.blip | Icon of the open rifts on the map: sprite (833 = flaming skull; with old GTA builds use 303), color (83 = purple), scale, shortRange (true = only when you are near). List of the icons: docs.fivem.net/docs/game-references/blips. |
Config.Rift.bossBlip | Icon of every boss alive on the map, at the center of its arena or at the editor point: same fields as blip (303 = skull, 1 = red). |
Config.Rift.groundFix | z on the ground of the config coordinates: enabled, distance (the player must be within these metres), probeUp (from how many metres above the ground is searched), maxFix (largest move accepted, in metres). The answers stay in data/ground.json: delete it to redo the correction. |
Config.PackAura | Aura of the leader of a pack (eyes, smoke at the feet). |
Config.Audio / Config.Sounds | Volume, maximum distance, falloff (how much it drops moving away: 1 = linear, 2 = fast, 3 = only close; the volume follows you and the mob even while the sound plays, every updateMs), gtaVoice (false = no GTA voices on the mobs, only our sounds) and .ogg/.mp3 files in web/sounds/ for every event (idle, aggro, attack, hurt, death...). |
Config.Speech | Speech bubbles over the head: distance, duration, frequency per event. The lines are in the locales files. |
3.8 Zones (Config.Zones.<id>)
| Field | What it does |
|---|---|
shape | Shape of the zone: 'circle' (center + radius) | 'poly' (poly = { vec2(x, y), ... }, at least 3 points) | 'gta' (gtaZones = { 'SANDY', ... }). |
zMin / zMax | Height limits (for example islands high up). |
interior / indoor | true = the zone counts only inside a loaded interior / closed interior: weaker grab, lighter roar, smaller rift. |
bucket | Routing bucket of the zone. |
mobs / levels / density | Mob types, minimum and maximum level, how many mobs alive together. |
packs / packChance | Packs of Config.Packs and chance that a pack spawns instead of a single mob. |
day / night | Density multiplier by day / by night. |
red | Red zone: harder, more EXP. |
safe / safeGod / safeNoPvp | Safe zone: no mobs / immortal players / no PvP. |
population | GTA population only inside this zone (same fields as Config.Population). |
points | Fixed spawn points vec4(x, y, z, heading). More can be added with /rift_point add (they are saved in data/points.json). |
spawnMinDist / spawnMaxDist | Spawn ring around the player only for this zone (useful for MLOs and small zones). |
respawnSec | Seconds before a mob killed in this zone is replaced (empty = Config.Perf.respawnSec). |
3.9 Mobs (Config.Mobs.<type>, Config.MobLevels, Config.Packs)
| Field | What it does |
|---|---|
model / fallback | Ped of the mob and spare ped, used if the first one does not load. |
role | Behaviour: 'brute' | 'caster' | 'shaman' | 'hunter' | 'beast'. |
walk | Walk style (clipset). |
respawnSec | Seconds before it comes back after death in the zones; it wins over the zone one (empty = the zone one). |
hp / damage / xp | Health, damage and EXP at level 1. For the other levels they are multiplied by the row of Config.MobLevels (hp, damage, cooldown, accuracy). |
attacks | Hits with animation: { dict, clip, hitMs, durMs, range, angle }. The server decides whether the hit lands. |
weapon | Prop in the hand (never a GTA weapon): { model, bone, pos, rot, left = {...}, back = {...} }. It is tuned in game with /rift_weapon. |
keepDistance | Ranged mobs stay this far. |
spells / spellGapMs | Spells it uses (keys of Config.Spells) and pause between two spells. |
sounds / speech / speechEvents | Audio group, base key of the lines, frequency of the bubbles only for this mob. |
resist | Multipliers of the damage taken per kind (melee, bullet, fire). |
regen | Regeneration: { pct = % of health per second, delay = seconds without hits before it starts }. |
loot | Rewards of this mob. |
Config.Packs.<id> | Pack: leader, members, count = { min, max }, spread, onLeaderDeath = 'flee' (they run away for fleeMs) | 'scatter' (they stay on their own). |
3.10 Spells (Config.Spells.<id>)
Common fields:
kind:'fire','grab','roar','projectile','heal','invis','leap'or'summon';warnMs: warning before the effect (the player has time to move);anim: animation of the casting mob;fx: particles;sfx: sounds in place,{ cast = {...}, fly = {...}, impact = {...} }(files inweb/sounds/, one at random):castat the hand when it starts (shot, bow),flywhile the projectile flies or the meteor falls,impactwhen it lands;range/minRange: maximum / minimum distance from the target;radius: area hit (0 = only the target);damage: damage at level 1;cooldownMs: cooldown at level 1;minLevel: minimum mob level to use the spell;needSight: the mob must see the target;status: effect left on the player.
The states burn, shock, freeze and slow are tuned in Config.SpellStatus. Config.SpellFx tunes the object that carries the trail of the projectiles and the distance of the camera shake.
3.11 Rifts (Config.Rifts.<id>, Config.RandomRifts)
| Field | What it does |
|---|---|
zone / pos | Where it opens: a point of the zone, or a fixed pos = vec3(...). |
level / hp / size | Level of the spawned mobs, portal health, size. |
spawn = { types, everySec, max } | Which mobs it spawns, every how many seconds, how many alive together at most. |
respawnSec | After how many seconds it opens again when it is destroyed. |
boss / blackout | Guard boss (key of Config.Bosses) / zone blackout while it is open. |
resist / loot / xp | Resistance to weapons (melee, bullet, fire), to spells of other resources (spell) and to items (item), rewards, base EXP. |
ground | false = the z of pos is never corrected to the ground (Config.Rift.groundFix). |
randomOnly | true = it opens only as a random rift (Config.RandomRifts), never at start. |
Config.RandomRifts.enabled | Random rifts on or off. |
checkEveryMin / chance | Every how many minutes the server rolls the dice and with what chance a rift opens. |
maxOpen / lifeMin | How many random rifts open together / after how many minutes they vanish if nobody destroys them. A destroyed random rift does not open again. |
warnDistance | Players within this distance get a notification when the rift opens and when it closes by itself. |
list | { rift = key of Config.Rifts, zones = { ... } or points = { vec4(...) }, weight = higher = more often }. The z of the points is corrected to the ground. |
3.12 Bosses (Config.Bosses.<id>)
| Field | What it does |
|---|---|
mob / level / hpMult | Type of Config.Mobs, level, health multiplier. |
hp | Total health of the boss (e.g. 20000). If set, it wins over hpMult; nil = mob health × level × hpMult. In the editor the boss preset can have its own. |
arena = { center, radius } | Where the boss spawns and how far it can go. The z of the center is corrected to the ground (ground = false not to do it). |
leash | What happens if it leaves the arena: 'return' (goes back inside) | 'heal' (goes back inside and gets all its health back). |
spawn.mode / respawnMin | 'timer' (at start and then respawnMin minutes after death) | 'admin' (only with /rift_boss) | 'event' (only from the SpawnBoss export). |
rewardMinShare / loot | Minimum damage to get the reward / rewards of the boss. |
phases = { { at, spells, speech, summon, blackout } } | When health drops under at (from 0 to 1): new spells, big line, summoned mobs, lights off. |
4. What to change in the open code (open/)
The functions in open/ are made on purpose to be changed by you. The rest of the resource calls them, and if one throws an error nothing gets stuck.
| File | Functions |
|---|---|
open/server/hooks.lua | IsAdmin (who can use the admin commands), CanTarget (who the mobs can attack), OnMobKilled, OnBossKilled, OnRiftDestroyed, OnPlayerHit. |
open/server/rewards.lua | OpenRewards.Give: what to give extra after every reward (it already has the list of what was given). |
open/server/xp.lua | OpenXP.Calculate (the EXP maths), CustomGive / CustomGet (for Provider = 'custom'). |
open/server/blackout.lua | OpenBlackout.Set: the blackout made with your weather script (Provider = 'custom'). |
open/client/hooks.lua | Notify, OnHitBySpell, CanBeTarget. |
open/client/hud.lua | OnBossBar: to use your HUD instead of the boss bar. |
Exports and events for other resources: see README.md → "Exports and events".
The full guide in 9 languages is also in the resource's docs/ folder.