Require( "animob/animob.ts" ) function rgb8Color( r, g, b ) return ( r*65536 + g*256 + b ) end return AnimobAconf({ version = 1, default = "hbk/m000hbk_candyapple.aconf", object = { gameKitVehicleControls = { class = "Bacio", }, appearance = { modelName = "m000bacio_retro.model", modelSettings = { main = { colormap = "bacio/t000bacio004a_green.jpg", lit = 1, }, exhaust = { colormap = "bacio/t001bacio001e_grnxawst.jpg", lit = 0, }, }, }, animationTriggers = { default = { -- Normal "idle" animation type = "emotion", -- only type currently supported is "emotion" emotionName = "em000bacioo01_riding", axes = { { axisName = "UiAxis", direction = "FB", prevValueBlend = 0.7 }, { axisName = "UiAxis", direction = "LR", valueScalar = 2.0, prevValueBlend = 0.8 } }, }, NoseGrabBoard = { type = "emotion", emotionName = "em000bacioo00_idle", }, RightGrabBoard = { type = "emotion", emotionName = "em000bacioo00_idle", }, TailGrabBoard = { type = "emotion", emotionName = "em000bacioo00_idle", }, LeftGrabBoard = { type = "emotion", emotionName = "em000bacioo00_idle", }, }, }, appKeys = { usesSecondSeatHack = 1, -- Used to report facts -- 0 - hovercraft -- 1 - hoverbike -- 2 - bacio hovercraftFactType = 2, -- levitation physics variables -- these variables affect hugging of ground + elevation of object levitationSpringCompressionConstant = 1000.0, -- play with all of them my documentation may be incorrect. levitationSpringCompressionExponent = 1.0, levitationSpringExtensionConstant = 3000.0, levitationSpringExtensionExponent = 1.0, levitationSpringLength = 1.7, -- distance to ground or below ground. larger number hugs ground better, this may also help drop the whole thing down. levitationDamperConstant = 140.0, -- force for the above variable? play with both to tune ground hugging. rootVerticalStabilizerSpringExtensionConstant = 100.0, rootVerticalStabilizerSpringLength = 100.0, disableVerticalStabilizersWhenNotRidden = 0, -- avatar animation avAnimSpeedMax = 17.0, -- doesn't have to be same as maxVelocity avAnimSpeedInfluence = 0.7, -- if the influences don't sum to 1, their sum will be clamped. Allowed. avAnimLeanInfluence = 0.0, -- the effect of centripetal force on avatar's LR axis avAnimPitchDownInfluence = 1.3, -- the effect of pitching down the board on avatar's FB axis. avAnimLeanCentripetalFactorMax = 0.75, -- 1.0 means sideways; 0.0 means vertical avAnimPitchDownMax = 0.32, -- 1.0 means pitching straight down, 0.0 means horizontal avAnimForwardBackOffset = 0.0, -- added to forward/back factors to allow you to set the center -- drive physics maxVelocity = 17.0, maxAcceleration = 50.0, maxDeceleration = 30.0, lateralStaticFrictionForce = 100000.0, lateralDynamicFrictionForce = 1.0, conformToGround = 1, pendulumMass = 10.0, -- motion forces brakeRotationForce = -900.0, brakeRotationSpeed = 0.2, internalFrictionDamperConstant = 1000.0, inAirInternalFrictionDamperConstant = 1000.0, -- root offset rootHeightOffset = 0.19, -- sensitivity goalOriSensitivity = 1.0, goalOriHeadingLimit = 70, goalOriPitchLimit = 30, keySensitivity = 3.0, -- heading control headingStableKp = 50.0, headingStableKd = 50.0, headingUnstableKp = 100.0, headingUnstableKd = 100.0, headingAerialKp = 100.0, headingAerialKd = 100.0, -- camera section smoothFactor = 0.055, headingSpeedLimit = 14.0, pitchSpeedLimit = 1.0, inAirPitchSpeedLimit = 0.6, focusUpOffset = 1.0, -- nitro parameters nitroConsumptionRate = 0.04, -- range(0-1) how fast nitro is consumed. nitroRefillRate = 0.01, -- range(0-1) how fast nitro is re-filled. nitroVelocity = 30.0, -- in meters per second nitroAcceleration = 2000.0, -- in meters per second squared useNitro = 1, -- 1 enables nitro, 0 disables it fxDefs = { thrustSmokeLeft = { type = "Flame", joint = "Exhaust00", flameAngle = 20.0, particleStartWidth = 0.1, flameHeight = 1.0, flameSpeed = 2.5, particlePerFrame = 1.0, direction = { 0.0, -0.1, 0.9 }, velSource = "root", velSourceInfluence = 0.95, flameTexture = "fx/t0000fx1_hpxawstgreen.png", }, brakeSmokeRight = { type = "Flame", joint = "Exhaust01", flameAngle = 20.0, particleStartWidth = 0.10, flameHeight = .3, flameSpeed = 2.0, particlePerFrame = 0.5, direction = { 0, -.3, -.7 }, velSource = "root", velSourceInfluence = 0.98, flameTexture = "fx/t0000fx8_hbkairbrake.png", }, nitroSmokeLeft = { type = "Flame", joint = "Exhaust00", flameAngle = 40.0, particleStartWidth = 0.35, flameHeight = 2.0, flameSpeed = 4.0, particlePerFrame = 1.5, direction = { 0.0, 0.0, 1.0 }, velSource = "root", velSourceInfluence = 0.92, flameTexture = "fx/t0000fx1_hpxawstgreen.png", }, }, fxCtrls = { brake = { input = "HbBrakeThrust", output = { { fx = "brakeSmokeLeft", onOff = 0, }, { fx = "brakeSmokeRight", onOff = 1, }, }, }, }, }, balls = { root = { joint = "m000bacio_retro", radius = 0.2, --center ball mass = 30.0, restitution = 0.2, staticFriction = 0.01, dynamicFriction = 0.01, nearbyCollisionRadius = 0.5, collisionRadius = 0.6, airFriction = 0.01, waterFriction = 0.8, density = 1.0, volumeInWaterScaleFactor = 1.0, }, rearBall = { joint = "rearBall", offset = {0.0, 0.0, 0.0}, radius = .9, mass = 60.0, restitution = 0.01, staticFriction = 0.01, dynamicFriction = 0.05, nearbyCollisionRadius = 1.8, airFriction = 0.05, density = 0.5, waterFriction = 4.0, volumeInWaterScaleFactor = 1.0, }, frontBall = { joint = "frontBall", offset = {0.0, 0.0, 0.0}, radius = .9, mass = 50.0, restitution = 0.01, staticFriction = 0.01, dynamicFriction = 0.05, nearbyCollisionRadius = 1.8, airFriction = 0.05, density = 0.5, waterFriction = 4.0, volumeInWaterScaleFactor = 1.0, }, }, springs = { { ball1 = "root", ball2 = "rearBall", idealLength = 1.188, contractionForce = 9000.0, expansionForce = 9000.0, dampingCoefficient = 90.0, }, { ball1 = "root", ball2 = "frontBall", idealLength = 1.173, contractionForce = 9000.0, expansionForce = 9000.0, dampingCoefficient = 90.0, }, { ball1 = "frontBall", ball2 = "rearBall", idealLength = 2.193, contractionForce = 9000.0, expansionForce = 9000.0, dampingCoefficient = 90.0, }, }, seats = { driver = { joint = "Driver", offset = {0.0, 0.055, 0.01}, getOnTitle = "Hop On", getOffTitle = "Hop Off", lockedTitle = "Locked", lockTitle = "Lock", unlockTitle = "Unlock", teleblurDuration = 15, driver = 1, autoKickOff = 1, getOnActionModeChange = AnimobActionModeChangeNone, cameras = { driver = { upDistance = 0.65, backDistance = 5.8, focusPullTightness = 1.0, pitchFocusTightness = 1.0, userControlledPitchFocus = 0, positionPullTightness = 0.16, fovTightness = 0.9, tightnessTightness = 1.0, desiredFov = 60.0, desiredOrthographicWidth = 2.0, minNearDistance = 0.5, subjectNonclipRadius = 1.0, automaticTeleportDistance = 100.0, desiredProjectionType = AnimobCameraProjectionTypePerspective, cameraMode = AnimobCameraModeVehicle, visibilityEnsurerMode = AnimobVisibilityEnsurerModeTightenToFocus, pitchThreshold = 7.0, pitchMax = 20.0, pitchSlope = 2.0, pitchSensitivity = 1.5, upThreshold = 0.2, upMax = 1.0, upSlope = 1.0, upSensitivity = 1.5, }, }, animationTriggers = { default = { type = "emotion", emotionName = "em000bacio01_riding", axes = { { axisName = "UiAxis", direction = "FB", prevValueBlend = 0.7, }, { axisName = "UiAxis", direction = "LR", valueScalar = 3.0, prevValueBlend = 0.7, }, }, }, HcJump = { name = "HcJump", type = "emotion", emotionName = "em000bacio02_fall", -- rider fall emotion. }, HcReady = { name = "HcReady", type = "emotion", emotionName = "em000bacio05_tuck", }, HcCelebrate01 = { name = "HcCelebrate01", type = "emotion", emotionName = "em000bacio01_riding", }, HcCelebrate02 = { name = "HcCelebrate02", type = "emotion", emotionName = "em000bacio01_riding", }, HcCelebrate03 = { name = "HcCelebrate03", type = "emotion", emotionName = "em000bacio01_riding", }, }, getOn = { userAnim = "a000bacio06_hopon", objectAnim = "a000baicioo05_geton", }, getOff = { userAnim = "a000bacio07_hopoff", objectAnim = "a000baicioo06_getoff", }, }, passenger = { joint = "passenger", getOnTitle = "Hop On Passenger", getOffTitle = "Hop Off", lockedTitle = "Locked", lockTitle = "Lock", unlockTitle = "Unlock", teleblurDuration = 15, offset = {0.0, 0.05, 0.0}, autoKickOff = 1, driver = 0, cameras = { passenger = { upDistance = .65, backDistance = 6.0, focusPullTightness = 1.0, pitchFocusTightness = 1.0, userControlledPitchFocus = 0, positionPullTightness = 0.18, fovTightness = 0.9, tightnessTightness = 1.0, desiredFov = 60.0, desiredOrthographicWidth = 2.0, minNearDistance = 0.5, subjectNonclipRadius = 1.0, automaticTeleportDistance = 100.0, desiredProjectionType = AnimobCameraProjectionTypePerspective, cameraMode = AnimobCameraModeVehicle, visibilityEnsurerMode = AnimobVisibilityEnsurerModeTightenToFocus, pitchThreshold = 7.0, pitchMax = 20.0, pitchSlope = 2.0, pitchSensitivity = 1.5, upThreshold = 0.2, upMax = 1.0, upSlope = 1.0, upSensitivity = 1.5, }, }, animationTriggers = { default = { type = "emotion", emotionName = "em000bacio03_passriding", axes = { { axisName = "UiAxis", direction = "FB", prevValueBlend = 0.7, }, { axisName = "UiAxis", direction = "LR", valueScalar = 2.0, prevValueBlend = 0.8, }, }, }, HcJump = { name = "HcJump", type = "emotion", emotionName = "em000bacio04_passfall", -- rider fall emotion. }, HcReady = { name = "HcReady", type = "emotion", emotionName = "em000bacio06_passtuck", }, }, getOn = { userAnim = "a000bacio16_passhopon", objectAnim = "a000bacioo07_passgeton", }, getOff = { userAnim = "a000bacio17_passhopoff", objectAnim = "a000baicioo06_getoff", }, allowedToolsGroups = { AnimobGroupEmpty, }, }, }, Sounds3d = { nitro = { soundName = "bacio_nitro", ballSource = "rearBall", }, engine = { soundName = "bacio_engine", looping = 1, ballSource = "frontBall", }, -- same asset, different pitch (set in the code) enginePhaser = { soundName = "bacio_engine", looping = 1, ballSource = "frontBall", }, engineStartUp = { soundName = "bacio_start_up", ballSource = "frontBall", }, engineShutDown = { soundName = "bacio_shut_down", ballSource = "frontBall", }, pitch = { soundName = "bacio_pitch", looping = 1, ballSource = "frontBall", }, yaw = { soundName = "bacio_yaw", looping = 1, ballSource = "frontBall", }, whooshPos = { soundName = "bacio_whoosh_pos", ballSource = "frontBall", }, whooshNeg = { soundName = "bacio_whoosh_neg", ballSource = "frontBall", }, brake = { soundName = "bacio_brake", looping = 1, ballSource = "frontBall", }, lock = { soundName = "bacio_brake", looping = 0, ballSource = "frontBall", }, unlock = { soundName = "bacio_brake", looping = 0, ballSource = "frontBall", }, trickStartSuccess = { soundName = "bacio_trickstart_success", ballSource = "frontBall", }, trickStartFail = { soundName = "bacio_trickstart_fail", ballSource = "frontBall", }, celebration_1 = { soundName = "bacio_celebration_1", ballSource = "frontBall", }, celebration_2 = { soundName = "bacio_celebration_2", ballSource = "frontBall", }, celebration_3 = { soundName = "bacio_celebration_3", ballSource = "frontBall", }, }, carriable = { icon = "ico_bacio.png", }, })