Require( "animob/animob.ts" ) return AnimobAconf({ version = 1, -- All aconf files have a version number. We will be backwards compatable object = { productName = "Hoverpack", gameKitVehicleControls = { class = "Hoverpack", }, appearance = { modelName = "m001hp_basic.model", }, animationTriggers = { default = { -- Animation while inactive type = "emotion", emotionName = "em002hpo_inactive", }, activated = { -- Animation while wearing name = "activated", type = "emotion", emotionName = "em001hpo_running", axes = { { axisName = "UiAxis", direction = "FB", valueScalar = 1.6, prevValueBlend = 0.4 }, { axisName = "UiAxis", direction = "LR", valueScalar = 1.6, prevValueBlend = 0.4 } }, }, }, }, appKeys = { boardBallRadius = 0.81, -- KEEP CONSISTENT WITH BALLS BELOW hangingBallRadius = 0.22, -- KEEP CONSISTENT WITH BALLS BELOW boardBallNearByCollisionRadius = 2.0, -- KEEP CONSISTENT WITH BALLS BELOW boardBallHeightAboveBoard = -0.5, hangingBallHeightBelowBoardBall = 0.51, -- KEEP CONSISTENT WITH SPRINGS BELOW boardLength = 2.5, boardWidth = 0.4, boardPrototypeFrontWidth = 0.5, boardPrototypeBackWidth = 0.4, boardPrototypeHeight = 1.0, boardPrototypeTipBack = 0.125, boardPrototypeLength = 0.25, highAltitudeCruiseClimbRate = 6.0, -- at high altitude, the rate at which looking up while pressing forward makes you rise in altitude highAltitudeCruiseFallRate = 9.0, -- at high altitude, the rate at which looking down while pressing forward makes you fall in altitude highAltitudeCruiseBackRate = 12.0, -- the rate at which you fall when you press the down arrow from high altitude highAltitudeCruiseDropRate = 10.0, -- the rate at which hoverpack falls from high altitude when no rider cruiseRiseRate = 10.0, -- the rate at wich looking up while pressing forward makes you drop altitude cruiseFallRate = 10.0, -- 5the rate at wich looking down while pressing forward makes you drop altitude cruiseBackRate = 10.0, -- 3the rate at which you fall when you press the down arrow cruiseDropRate = 100.0, towerRiseDistance = 1.0, ledgeFallDistance = 1.0, turboFieldHeightMax = 50.0, turboFieldDropOffHeight = 40.0, idleFieldDropOffHeight = 0.8, idleFieldHeightMax = 3.3, cruiseHeightMax = 50.0, -- Bottom of force cushion is cruiseHeightMax + idleFieldDropOffHeight. latchHeightAboveGround = 50.0, -- Above this height, I maintain absolute altitude instead of conforming to ground. turboFieldStrengthMax = 500.0, turboFieldForceCutOffUpVelocity = 15.0, -- m/s turboFieldDropOffPower = 1.0, idleFieldStrengthMax = 300.0, idleFieldForceCutOffUpVelocity = 10.0, -- m/s idleFieldDropOffPower = 1.0, centroidFriction = 0.25, -- zero means no friction headingSpringConstant = 0.02, -- 1.0 means acc applied for step will close length gap by itself headingFriction = 0.2, noRiderSpinDegreesPerStep = 0.0, keyboardTurnRate = 1.5, -- degrees per step for left/right arrow keys flyingGroundPlaneFriction = 0.01, brakingGroundPlaneFriction = 0.025, deadReckoningHeightBias = 0.001, -- Setting this positive makes the hoverpack drift down when above latch. lookaheadDistance = 3.0, -- If I am this close to a wall or steep slope in front of me, go up but not forward testaheadDistance = 2.0, -- Instead of querying ground height below me, I query ground height below pos in front of me by this much. hangBallVerticalForceScale = 0.1, hangBallGroundForceScale = 0.2, forwardForce = 70.0, steeringForce = 25.0, -- force that causes you to roll and slide sideways when you turn steeringForceHeadingVelocityMax = 4.0, -- the heading degrees delta that yields max steering force cameraUpDistance = 1.3, cameraBackDistance = 4.0, cameraFocusPullTightness = 0.8, cameraPitchFocusTightness = 0.4, cameraPositionPullTightness = 0.5, -- The goalOri's range will be limited by these values. The springConstant -- controls how responsive the goalOri is to the movement of the mouse, in the -- range 0.0 to 1.0. A value of 1.0 makes the goalOri respond 100% -- to the mouse movements, as if it were massless. Lesser values make it catch up -- by that percentage. A value of 0.0 makes it completely unresponsive. You -- can tune the pitch responsiveness and heading responsiveness independently. goalOriPitchMin = -60.0, goalOriPitchMax = 60.0, goalOriPitchSpringConstant = 0.7, goalOriHeadingMin = -60.0, goalOriHeadingMax = 60.0, goalOriHeadingSpringConstant = 0.2, udAnimationScale = 0.3, fbAnimationScale = 0.1, renderDebug = 0, rollUdEffect = -1.0, -- Causes roll to affect UD blend axis. udOffset = -0.1, -- shift up/down animation blend value by this amount, for tuning. animobPosUpOffset = 0.5, translationResistanceVelMax = 0.5, -- maximum velocity to apply translational resistance translationResistanceScale = 0.3, -- scalar for translation resistance. masterSoundAmpScalar = 1.0, runningSoundRadius = 40.0, idleSoundRadius = 20.0, soundRampDefaultStepSize = 0.012, soundRampVolumeMin = 0.012, soundPitchBendRampDefaultStepSize = 0.008, idleSoundAmp = 0.155, engineToIdleLapseSecs = 1.0, soundXFadeDelta = 0.5, engineSoundAmpMin = 0.1, engineSoundAmpMax = 0.45, engineSoundPitchMin = -0.1, engineSoundPitchMax = 0.7, engineSoundHeightMax = 50.0, engineSoundHeightPitchMin = -0.1, engineSoundHeightPitchMax = 0.3, yawSoundAmpMin = 0.0, yawSoundAmpMax = 0.35, yawSoundPitchMin = 0.05, yawSoundPitchMax = 0.3, groundSoundAmpMin = 0.05, groundSoundAmpMax = 0.35, groundSoundHeightMin = 0.0, groundSoundHeightMax = 20.0, groundSoundVelMin = 0.0, groundSoundVelMax = 11.0, nitroSoundAmp = 0.45, nitroLoopSoundAmp = 0.3, startStopSoundAmp = 0.35, soundNoRiderAmpScalar = 0.85, soundNoRiderPitchScalar = -0.5, soundMotionThreshold = 0.08, soundHeightThreshold = 0.1, soundRandomPitchAmount = 0.03, soundRandomSmoothingAmount = 6, fxDefs = { idle = { type = "Flame", flameAngle = 0.0, particleStartWidth = 0.1, flameHeight = 0.17, flameSpeed = 0.5, particlePerFrame = 0.3, offset = { 0, -0.12, 0.12 }, direction = { 0, -1.0, 0.0 }, velSource = "root", velSourceInfluence = 0.85, flameTexture = "fx/t0000fx6_hpxawstblue.png", }, thrust = { type = "Flame", flameAngle = 45.0, particleStartWidth = 0.08, flameHeight = 1.5, flameSpeed = 1.5, particlePerFrame = 2.0, direction = { 0, -1, 0.0 }, velSource = "root", velSourceInfluence = 0.75, flameTexture = "fx/t0000fx6_hpxawstblue.png", }, }, }, balls = { root = { joint = "root", radius = 0.81, -- KEEP CONSISTENT WITH APPKEYS mass = 20.0, restitution = 0.01, staticFriction = 2.5, dynamicFriction = 2.5, nearbyCollisionRadius = 2.0, -- KEEP CONSISTENT WITH APPKEYS collisionRadius = 0.75, airFriction = 0.1, }, hangBall = { joint = "root", radius = 0.22, -- KEEP CONSISTENT WITH APPKEYS mass = 5.0, offset = { 0.0, -0.51, 0.0 }, -- KEEP CONSISTENT WITH APPKEYS restitution = 0.01, staticFriction = 2.5, dynamicFriction = 2.5, airFriction = 0.1, }, }, springs = { { ball1 = "root", ball2 = "hangBall", idealLength = 0.51, -- KEEP CONSISTENT WITH BALL OFFSETS contractionForce = 3000.0, expansionForce = 3000.0, dampingCoefficient = 0.4, }, }, seats = { driver = { joint = "Driver", driver = 1, offset = {0.0, 0.0, 0.0}, lockedTitle = "Locked", lockTitle = "Lock", unlockTitle = "Unlock", cameras = { driver = { upDistance = 1.3, backDistance = 20.0, focusPullTightness = 0.8, pitchFocusTightness = 0.4, userControlledPitchFocus = 1, positionPullTightness = 0.8, fovTightness = 0.9, tightnessTightness = 1.0, desiredFov = 60.0, desiredOrthographicWidth = 2.0, minDistanceFromObstacle = 0.5, subjectNonclipRadius = 1.0, automaticTeleportDistance = 100.0, desiredProjectionType = AnimobCameraProjectionTypePerspective, cameraMode = AnimobCameraModeAim, visibilityEnsurerMode = AnimobVisibilityEnsurerModeTightenToFocus, }, }, animationTriggers = { default = { type = "emotion", emotionName = "em001hp01_rider", axes = { { axisName = "UiAxis", direction = "FB", prevValueBlend = 0.4 }, { axisName = "UiAxis", direction = "LR", valueScalar = 1.6, prevValueBlend = 0.4 } }, }, }, getOn = { -- Optional get on animation section userAnim = "a001hp06_puton", objectAnim = "a001hpo06_puton" -- optional }, getOff = { userAnim = "a001hp07_taketoff", objectAnim = "a001hpo07_takeoff" }, ikLegsAfterPosing = 1, }, }, Sounds3d = { nitro = { soundName = "hoverpack_nitro", ballSource = "root", }, nitroLoop = { soundName = "hoverpack_nitro_loop", looping = 1, ballSource = "root", }, idle = { soundName = "hoverpack_idle", looping = 1, ballSource = "root", }, start = { soundName = "hoverpack_start", ballSource = "root", }, stop = { soundName = "hoverpack_stop", ballSource = "root", }, yaw = { soundName = "hoverpack_yaw", looping = 1, ballSource = "root", }, ground = { soundName = "hoverpack_ground", looping = 1, ballSource = "root", }, engine = { soundName = "hoverpack_engine", looping = 1, ballSource = "root", }, lock = { soundName = "hoverpack_nitro", looping = 0, ballSource = "root", }, unlock = { soundName = "hoverpack_nitro", looping = 0, ballSource = "root", }, }, carriable = { icon = "ico_hoverpack02.png", }, })