SpookySeason

MrNewbSpookySeason

Halloween event: ghost hunts, pumpkin searches, grave digging, trick-or-treat, decorations, and an event-token shop. Built on Newb_Bridge.

GitHub · Discord · Installation · Preview

Features

  • Pumpkin searches that roll the pumpkin loot table
  • Grave digging that rolls the grave loot table
  • Trick-or-treat door knocks (trickOrTreat loot)
  • Ghost hunts (needs pengu_digiscanner)
  • Event-token shop (pumpkin_basket / rotten_casket, optional digiscanner)
  • Usable pumpkin_basket and rotten_casket that roll their own loot tables
  • Optional Halloween weather around shops
  • Seasonal decorations as spawned props

Requirements

  • Newb_Bridge
  • ox_lib
  • Artifact /server:6116 or newer, OneSync
  • Framework + inventory + target via the bridge
  • pengu_digiscanner if you want ghost hunts

oxmysql is not required. Keep the folder named MrNewbsSpookySeason.

Config files

Client-visible — configs/config.lua

KeyPurpose
Config.WeatherFeaturetrue forces Halloween weather near shops (pauses qb-weathersync / cd_easytime / Renewed-Weathersync via OpenSpookyToggleWeatherSync)
Config.TrickOrTreatBlipstrue draws trick-or-treat blips
Config.ShopsToken shops. Shipped SpookyShop
Config.DecorationsProp list (position vector4, model)

Shop entry:

SpookyShop = {
    position = vector4(-1726.4633, -192.4515, 58.8, 270.3187),
    model = `m24_1_prop_m41_ghost_dom_01a`,
    inventory = {
        pumpkin_basket = 25,
        rotten_casket = 50,
    },
},

inventory is item name → event_token cost. If pengu_digiscanner is started, the shop also adds WEAPON_DIGISCANNER (ox_inventory) or weapon_digiscanner (otherwise) at 15 tokens.

Override weather pause/resume in resource/open/client/weather.lua (OpenSpookyToggleWeatherSync).

Server-only — configs/sv_config.lua

Do not load this on the client. Loot tables and scavenger coords stay here.

KeyPurpose
Config.LootTypesNamed pools: pumpkin, grave, trickOrTreat, pumpkin_basket, rotten_casket
Config.PumpkinsSearch spots (position, model, lootTable)
Config.GravesDig spots (position, lootTable)
Config.GhostHuntsGhost peds (position, model). Needs pengu_digiscanner
Config.TrickOrTreatDoor knocks (targetPoint, model, pedSpawn, lootTable)

Loot row:

FieldPurpose
rewardType'item' or 'cash'
nameInventory item when rewardType is 'item'
countFixed amount. If omitted, rolls minmax
min / maxRange used when count is omitted
metadataOptional item metadata

cash pays bridge.framework.addMoney(src, 'cash', count, 'spooky_season'). Each interaction rolls one row from that pool (math.random).

Usable pumpkin_basket / rotten_casket consume the item after a 5s progress bar, then roll pumpkin_basket / rotten_casket.

Items

ItemRole
event_tokenShop currency. Also granted from some loot rows
candy_cornLoot
chocolate_barLoot
pumpkin_basketShop + usable loot crate
rotten_casketShop + usable loot crate
id_cardGrave / rotten casket loot (register it if your inventory does not already have it)

Paste: Item setup. Gallery: Item images.

event_token candy_corn chocolate_bar pumpkin_basket rotten_casket

Do not add server.export on ox_inventory items. Use is registered with bridge.framework.registerItemUse.

Layout

PathRole
configs/config.luaShops, decorations, weather / blip toggles
configs/sv_config.luaLoot tables and scavenger locations (server)
resource/client/decorations.luaSeasonal props
resource/client/pumpkins.luaPumpkin targets
resource/client/graves.luaGrave targets
resource/client/ghosthunt.luaGhost hunts + pengu_digiscanner
resource/client/trickortreat.luaDoor knocks
resource/client/shops.luaToken shop + Halloween weather
resource/client/usables.luaProgress bar callback for crate items
resource/open/client/weather.luaOpenSpookyToggleWeatherSync
resource/server/rewards.luaLoot roll + grant
resource/server/shops.luaToken purchases
resource/server/usables.luapumpkin_basket / rotten_casket use
[INSTALL]/images/Item PNGs

No public exports. Labels: locales/en.json.