Initial how_progression baseline
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
return {
|
||||
id = 'cosmic_dave',
|
||||
displayName = 'Cosmic Dave',
|
||||
ped = {
|
||||
model = 'ig_omega',
|
||||
coords = { x = 2447.63, y = 3775.08, z = 41.43, w = 23.30 },
|
||||
spawnZOffset = -1.0,
|
||||
scenario = 'WORLD_HUMAN_PARTYING',
|
||||
missionEntity = true, invincible = true, frozen = true,
|
||||
blockNonTemporaryEvents = true,
|
||||
},
|
||||
world = { alwaysPresent = true },
|
||||
missions = {},
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
return {
|
||||
id = 'crowbar',
|
||||
displayName = 'Crowbar',
|
||||
phone = { number = '555-7384' },
|
||||
ped = {
|
||||
model = 'ig_clay',
|
||||
coords = { x = 1699.67, y = 3775.30, z = 34.74, w = 207.22 },
|
||||
spawnZOffset = -1.0,
|
||||
scenario = 'WORLD_HUMAN_SMOKING',
|
||||
invincible = true,
|
||||
frozen = true,
|
||||
blockNonTemporaryEvents = true,
|
||||
},
|
||||
world = {
|
||||
requires = { column = 'crowbar_stage', min = 1 },
|
||||
vehicles = {
|
||||
{
|
||||
id = 'crowbar_daemon', model = 'daemon',
|
||||
coords = { x = 1699.70, y = 3771.63, z = 34.53, w = 258.21 },
|
||||
localEntity = true, locked = 2, invincible = true, frozen = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
blip = {
|
||||
label = 'Crowbar', sprite = 280, scale = 0.75, shortRange = false,
|
||||
requires = { column = 'crowbar_stage', min = 1 },
|
||||
},
|
||||
interaction = {
|
||||
name = 'how_progression_crowbar_talk', icon = 'fa-solid fa-comment',
|
||||
label = 'Talk to Crowbar', distance = 2.0,
|
||||
gateCallback = 'how_progression:server:isCrowbarMissionActive',
|
||||
gateAllowsWhen = false,
|
||||
stageCallback = 'how_progression:server:getCrowbarMission',
|
||||
},
|
||||
progression = { stageColumn = 'crowbar_stage', repColumn = 'crowbar_rep' },
|
||||
missions = { 'crowbar:1', 'crowbar:2', 'crowbar:3', 'crowbar:4', 'crowbar:5' },
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
return {
|
||||
id = 'deke',
|
||||
displayName = 'Deke',
|
||||
ped = {
|
||||
model = 's_m_m_autoshop_02',
|
||||
coords = { x = 2359.89, y = 3136.74, z = 48.21, w = 110.90 },
|
||||
spawnZOffset = -1.0,
|
||||
scenario = 'WORLD_HUMAN_STAND_IMPATIENT',
|
||||
invincible = true, frozen = true, blockNonTemporaryEvents = true,
|
||||
},
|
||||
world = { alwaysPresent = true, spawnedWith = 'mack' },
|
||||
interaction = {
|
||||
name = 'how_progression_deke_shop', icon = 'fa-solid fa-toolbox',
|
||||
label = 'Talk to Deke', distance = 2.0,
|
||||
inventory = { kind = 'shop', type = 'DekeTools', id = 1 },
|
||||
},
|
||||
missions = {},
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
return {
|
||||
id = 'gabe',
|
||||
displayName = 'Gabe',
|
||||
location = { x = 2340.96, y = 3126.11, z = 48.21 },
|
||||
blip = {
|
||||
label = 'Money Laundering', sprite = 500, display = 4,
|
||||
scale = 0.7, shortRange = true,
|
||||
createdDuring = 'crowbar:4',
|
||||
},
|
||||
service = { resource = 'randol_moneywash' },
|
||||
associatedMissions = { 'crowbar:4' },
|
||||
missions = {},
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
-- Passive definitions. Requiring this module does not create world entities.
|
||||
local byId = {
|
||||
unknown = require 'shared.contacts.unknown',
|
||||
crowbar = require 'shared.contacts.crowbar',
|
||||
mack = require 'shared.contacts.mack',
|
||||
gabe = require 'shared.contacts.gabe',
|
||||
deke = require 'shared.contacts.deke',
|
||||
vinny = require 'shared.contacts.vinny',
|
||||
cosmic_dave = require 'shared.contacts.cosmic_dave',
|
||||
}
|
||||
|
||||
local phoneOwners = {}
|
||||
for id, contact in pairs(byId) do
|
||||
assert(contact.id == id, 'contact ID mismatch: ' .. id)
|
||||
local number = contact.phone and contact.phone.number
|
||||
if number then
|
||||
assert(number:match('^555%-%d%d%d%d$'), 'invalid contact number: ' .. id)
|
||||
assert(not phoneOwners[number], 'duplicate contact number: ' .. number)
|
||||
phoneOwners[number] = id
|
||||
end
|
||||
end
|
||||
|
||||
return {
|
||||
byId = byId,
|
||||
get = function(id) return byId[id] end,
|
||||
phoneOwner = function(number) return phoneOwners[number] end,
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
return {
|
||||
id = 'mack',
|
||||
displayName = 'Mack',
|
||||
phone = { number = '555-6842' },
|
||||
ped = {
|
||||
model = 's_m_y_xmech_01',
|
||||
coords = { x = 2366.60, y = 3154.91, z = 48.21, w = 17.84 },
|
||||
spawnZOffset = -1.0,
|
||||
scenario = 'WORLD_HUMAN_CLIPBOARD',
|
||||
invincible = true, frozen = true, blockNonTemporaryEvents = true,
|
||||
},
|
||||
world = {
|
||||
alwaysPresent = true,
|
||||
vehicles = {
|
||||
{
|
||||
id = 'festival_bus', model = 'pbus2',
|
||||
coords = { x = 2349.54, y = 3133.84, z = 48.21, w = 77.73 },
|
||||
localEntity = true, locked = 2, missionEntity = true,
|
||||
invincible = true, frozen = true,
|
||||
},
|
||||
{
|
||||
id = 'junk_emperor', model = 'emperor',
|
||||
coords = { x = 2343.67, y = 3141.72, z = 48.21, w = 211.39 },
|
||||
localEntity = true, locked = 2, missionEntity = true,
|
||||
invincible = true, frozen = true,
|
||||
damage = {
|
||||
engineHealth = 100.0, bodyHealth = 300.0,
|
||||
smashedWindows = { 0, 1, 2, 3 }, brokenDoors = { 0 },
|
||||
burstTyres = { 0, 4 },
|
||||
},
|
||||
},
|
||||
{
|
||||
id = 'forklift', model = 'forklift',
|
||||
coords = { x = 2350.42, y = 3142.49, z = 48.21, w = 231.27 },
|
||||
localEntity = true, locked = 2, missionEntity = true,
|
||||
invincible = true, frozen = true,
|
||||
},
|
||||
},
|
||||
ambientPeds = {
|
||||
{ model = 's_m_y_xmech_02', coords = { x = 2355.0, y = 3148.0, z = 48.21, w = 180.0 }, wanderRadius = 12.0 },
|
||||
{ model = 's_m_m_autoshop_01', coords = { x = 2345.0, y = 3150.0, z = 48.21, w = 90.0 }, wanderRadius = 12.0 },
|
||||
{ model = 's_m_y_construct_01', coords = { x = 2360.0, y = 3143.0, z = 48.21, w = 270.0 }, wanderRadius = 15.0 },
|
||||
{ model = 's_m_y_construct_02', coords = { x = 2341.0, y = 3130.0, z = 48.21, w = 0.0 }, wanderRadius = 10.0 },
|
||||
{ model = 's_m_m_dockwork_01', coords = { x = 2334.0, y = 3125.0, z = 48.21, w = 180.0 }, wanderRadius = 15.0 },
|
||||
{ model = 's_m_m_gardener_01', coords = { x = 2368.0, y = 3130.0, z = 48.21, w = 90.0 }, wanderRadius = 22.0 },
|
||||
},
|
||||
ambientPedBehavior = {
|
||||
spawnZOffset = -1.0, missionEntity = true, invincible = true,
|
||||
blockNonTemporaryEvents = true, canRagdoll = false,
|
||||
fleeAttributes = 0, wanderMinLength = 2.0, wanderTimeBetweenWalks = 10.0,
|
||||
},
|
||||
},
|
||||
blip = {
|
||||
label = 'Mack', sprite = 280, scale = 0.75, shortRange = false,
|
||||
requires = { column = 'mack_stage', min = 1 },
|
||||
createdDuring = 'crowbar:4',
|
||||
},
|
||||
interaction = {
|
||||
name = 'how_progression_mack_talk', icon = 'fa-solid fa-comment',
|
||||
label = 'Talk to Mack', distance = 2.0,
|
||||
gateCallback = 'how_progression:server:canTalkToMack',
|
||||
gateAllowsWhen = true,
|
||||
missionStateCallback = 'how_progression:server:getMackMission1State',
|
||||
},
|
||||
progression = { stageColumn = 'mack_stage', repColumn = 'mack_rep' },
|
||||
missions = { 'mack:1' },
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
return {
|
||||
id = 'unknown',
|
||||
displayName = 'UNKNOWN',
|
||||
phone = { number = '555-0100' },
|
||||
progression = { introductionFlag = 'unknown_introduced' },
|
||||
missions = {},
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
return {
|
||||
id = 'vinny',
|
||||
displayName = 'Vinny',
|
||||
phone = { number = '555-3176' },
|
||||
ped = {
|
||||
model = 'a_m_m_business_01',
|
||||
coords = { x = 1362.57, y = 3602.49, z = 34.96, w = 236.75 },
|
||||
spawnZOffset = -1.0,
|
||||
scenario = 'WORLD_HUMAN_STAND_IMPATIENT',
|
||||
missionEntity = true, invincible = true, frozen = true,
|
||||
blockNonTemporaryEvents = true,
|
||||
},
|
||||
world = {
|
||||
createdDuring = 'mack:1',
|
||||
restoredWhen = { vinny_fence_unlocked = 1 },
|
||||
vehicles = {
|
||||
{ model = 'sanchez', coords = { x = 1368.39, y = 3594.54, z = 34.34, w = 237.54 } },
|
||||
{ model = 'sanchez', coords = { x = 1366.95, y = 3598.24, z = 34.37, w = 244.92 } },
|
||||
{ model = 'sanchez', coords = { x = 1368.76, y = 3592.05, z = 34.37, w = 241.99 } },
|
||||
{ model = 'sanchez', coords = { x = 1357.67, y = 3601.45, z = 34.44, w = 194.85 } },
|
||||
{ model = 'sanchez', coords = { x = 1364.94, y = 3603.77, z = 34.33, w = 195.30 } },
|
||||
},
|
||||
vehicleBehavior = {
|
||||
localEntity = true, missionEntity = true, locked = 2,
|
||||
invincible = true, frozen = true,
|
||||
purchaseEvent = 'qbx_vehicleshop:server:buyShowroomVehicle',
|
||||
},
|
||||
},
|
||||
blip = {
|
||||
label = 'Vinny', sprite = 226, scale = 0.7, shortRange = true,
|
||||
createdDuring = 'mack:1', restoredWhen = { vinny_fence_unlocked = 1 },
|
||||
},
|
||||
interaction = {
|
||||
name = 'how_progression_vinny_talk', icon = 'fa-solid fa-comment',
|
||||
label = 'Talk to Vinny', distance = 2.0,
|
||||
requiresObjective = 'talk_vinny',
|
||||
},
|
||||
fence = {
|
||||
coords = { x = 1356.79, y = 3617.37, z = 34.88, w = 105.38 },
|
||||
requires = { vinny_fence_unlocked = 1 },
|
||||
vehicleModel = 'sanchez', dailyLimit = 3,
|
||||
payoutItem = 'markedbills', payoutWorth = 200,
|
||||
},
|
||||
associatedMissions = { 'mack:1' },
|
||||
missions = {},
|
||||
}
|
||||
Reference in New Issue
Block a user