aboutsummaryrefslogtreecommitdiff
path: root/Northstar.CustomServers/mod/scripts/vscripts/_entitystructs.gnut
diff options
context:
space:
mode:
Diffstat (limited to 'Northstar.CustomServers/mod/scripts/vscripts/_entitystructs.gnut')
-rw-r--r--Northstar.CustomServers/mod/scripts/vscripts/_entitystructs.gnut692
1 files changed, 692 insertions, 0 deletions
diff --git a/Northstar.CustomServers/mod/scripts/vscripts/_entitystructs.gnut b/Northstar.CustomServers/mod/scripts/vscripts/_entitystructs.gnut
new file mode 100644
index 000000000..378ceae38
--- /dev/null
+++ b/Northstar.CustomServers/mod/scripts/vscripts/_entitystructs.gnut
@@ -0,0 +1,692 @@
+global struct BeamEffect
+{
+ entity effect
+ entity cpoint
+}
+
+global struct SpawnPointData
+{
+ table lastRatingData = {}
+}
+
+global struct BallLightningData
+{
+ asset zapFx = BALL_LIGHTNING_ZAP_FX
+ float zapLifetime = BALL_LIGHTNING_ZAP_LIFETIME
+ string zapSound = BALL_LIGHTNING_ZAP_SOUND
+ string zapImpactTable = BALL_LIGHTNING_FX_TABLE
+ float radius = BALL_LIGHTNING_ZAP_RADIUS
+ float humanRadius = BALL_LIGHTNING_ZAP_HUMANSIZE_RADIUS
+ float height = BALL_LIGHTNING_ZAP_HEIGHT
+ float minDot = -1.0
+ float damageToPilots = BALL_LIGHTNING_DAMAGE_TO_PILOTS
+ float damage = BALL_LIGHTNING_DAMAGE
+ bool zapPylons = false
+ int deathPackage = ( DF_DISSOLVE | DF_GIB | DF_ELECTRICAL | DF_STOPS_TITAN_REGEN )
+ bool fatalToDoomedTitans = false
+}
+
+global struct PhaseRewindData
+{
+ vector origin
+ vector angles
+ vector velocity
+ bool wasInContextAction
+ bool wasCrouched
+}
+
+global struct PlayerInputEventCallbackStruct
+{
+ int cmdsPressedBitMask = 0
+ int cmdsHeldBitMask = 0
+ int cmdsReleasedBitMask = 0
+ void functionref( entity player ) callbackFunc
+}
+
+global struct PlayerHeldButtonEventCallbackStruct
+{
+ int buttonHeld = 0
+ void functionref( entity player ) callbackFunc
+ float timeHeld = 1.0
+}
+
+global struct PlayerInputAxisEventCallbackStruct
+{
+ float horizAxisMinThreshold = -1.0
+ float horizAxisMaxThreshold = 1.0
+ float vertAxisMinThreshold= -1.0
+ float vertAxisMaxThreshold= 1.0
+
+ bool functionref( entity player ) callbackFunc
+ float debounceTime = 0.0
+ float lastTriggeredTime = 0.0
+}
+
+global enum eStatUpdateTime
+{
+ DISTANCE,
+ TIME_PLAYED,
+ WEAPON_USAGE,
+ COUNT
+}
+
+global enum eStoredWeaponType
+{
+ main,
+ offhand
+}
+
+global struct TitanDamage
+{
+ int shieldDamage
+
+ bool doomedNow
+ int doomedDamage
+}
+
+global struct RecentUnlock
+{
+ int refGuid = 0
+ int parentRefGuid = 0
+ int count = 0
+}
+
+global struct StoredWeapon
+{
+ string name
+ int weaponType = eStoredWeaponType.main
+ bool activeWeapon = false
+ int inventoryIndex
+ array<string> mods
+ int modBitfield
+ int ammoCount
+ int clipCount
+ float nextAttackTime
+ int skinIndex
+ int camoIndex
+ bool isProScreenOwner
+ #if MP
+ string burnReward
+ #endif
+ int scriptFlags0
+ int scriptTime0
+}
+
+global struct ScriptTriggerData
+{
+ bool enabled
+ float radius
+ table<entity> entities
+ array<void functionref(entity, entity)> enterCallbacks
+ array<void functionref(entity, entity)> leaveCallbacks
+ float top
+ float bottom
+ int flags
+ int managedEntArrayHandle
+}
+
+global struct BurnCardPhaseRewindStruct
+{
+ array<PhaseRewindData> phaseRetreatSavedPositions
+ bool phaseRetreatShouldSave = true
+}
+
+// This struct is hooked up to entity.e in code
+global struct ServerEntityStruct
+{
+ entity repairSoul // repair drones
+ array<void functionref( entity, var )> entKilledCallbacks
+ array<entity> fxArray
+ entity cpoint1
+ bool moverPathPrecached
+ bool blockActive = false
+ int embarkCount = 0 // For the Titan soul to know how many times a player has embarked.
+
+ entity syncedMeleeAttacker
+ entity lastSyncedMeleeAttacker
+ bool markedForExecutionDeath
+
+ bool proto_weakToPilotWeapons
+
+ bool isHotDropping
+
+ bool spawnPointInUse
+ entity lastAttacker
+
+ // sticky props
+ float spawnTime = 0.0
+ bool isStickyCrit = false
+ int stickyRoundsArrayId = -1 //script managed ent array index
+
+ table<string,AnimEventData> animEventDataForEntity
+
+ array<DamageHistoryStruct> recentDamageHistory
+
+ float lastTakeDamageTime_thermite // meteor thermite does an extra burst of damage on first contact
+ float lastTakeDamageTime_laser_cannon
+
+ // tracker rounds
+ int myTrackerRoundsIdx = -1 //script managed ent array index
+ int myReservedTrackerRoundsIdx = -1 //script managed ent array index
+ int trackerRoundsOnMeIdx = -1 //script managed ent array index
+ bool allowLifetimeDeath = true
+
+ // entities
+ float nextAllowStickyExplodeTime = 0.0
+ float stickyClearTime = 0.0
+
+ entity shieldWallFX
+ entity cpoint
+
+ // vortex rules
+ var functionref( entity, var ) BulletHitRules
+ bool functionref( entity, entity, bool ) ProjectileHitRules
+
+ // soul shield
+ float nextShieldDecayTime = 0.0
+ float forcedRegenTime = 0.0
+
+ // ball lightning
+ BallLightningData ballLightningData
+ int ballLightningTargetsIdx = -1
+ int arcPylonArrayIdx = -1 //script managed ent array index
+ float lastArcTime = 0.0
+
+ // laser tripwire
+ int laserPylonArrayIdx = -1 //script managed ent array index
+
+ //Survivor
+ int crateType
+
+ //Bomb
+ // TODO: remove hasBomb and replace with deterministic checks
+ bool hasBomb = false
+ bool destroyOutOfBounds = false
+ bool destroyTriggerHurt = false
+
+ //Rodeo
+ entity lastRodeoAttacker
+
+ array<int> smokeScreenSlowdownIdx
+
+ // number of shield beacons affecting me
+ int shieldBeaconCount
+ array<BeamEffect> shieldBeaconFXArray
+
+ //Ping
+ entity lastPlayerToSpot
+ float lastSpotTime = -9999.0
+
+ bool forceRagdollDeath = false
+
+ int projectileID
+
+ bool windPushEnabled = true
+ bool inWindTunnel
+ float windTunnelStartTime
+ float windTunnelStrength
+ vector windTunnelDirection
+
+ bool forceGibDeath = false
+
+ SpawnPointData spawnPointData
+
+ array<void functionref( entity ent, var damageInfo )> entDamageCallbacks
+ array<void functionref( entity ent, var damageInfo )> entPostDamageCallbacks
+ array<void functionref( entity titan, entity attacker )> entSegmentLostCallbacks
+ array<void functionref( entity ent, var damageInfo, float actualShieldDamage )> entPostShieldDamageCallbacks
+
+ // Used for weapons and abilities that have multiple ticks, but we only want a single tick to hit each player
+ array<entity> damagedEntities
+ bool onlyDamageEntitiesOnce = false
+ bool onlyDamageEntitiesOncePerTick = false
+ float lastDamageTickTime
+
+ array<entity> attachedEnts
+
+ //Scorch Variables
+ table< int, array<entity> > waveLinkFXTable //Wave FX Link - Used for the wide projectile attacks so we can link FX across the rows.
+ table< int, vector > fireTrapEndPositions //Used to spawn 1 particle per arm instead of many.
+ table< int, entity > fireTrapMovingGeo //Used track which piece of moving geo the fire trap arms are on
+
+ //Legion Variables
+ bool ammoSwapPlaying = false
+ bool gunShieldActive = false
+
+ int fxType
+ array<entity> fxControlPoints
+
+ int totalEntsStoredID = 0
+ int AT_BossID
+
+ ScriptTriggerData scriptTriggerData
+
+ bool noOwnerFriendlyFire = false
+
+ bool hasDefaultEnemyHighlight
+
+ bool isDisabled = false
+
+ int gameModeId
+
+ // PVE //
+ int roamerSpawnType = -1
+ int pveSpawnType = -1
+ int pveSpawnFlags = 0
+ bool roamerIsAggro = false
+ //
+ int objectiveGoalVersion = 0
+ int objectiveGoalFlags = 0 // eObjectiveTracking.*
+ /////////
+
+ array<entity> sonarTriggers
+
+ string enemyHighlight = ""
+ string burnReward = ""
+ int fd_roundDeployed = -1
+}
+
+global struct MeritData
+{
+ int scoreMeritState
+ int completionMeritState
+ int winMeritState
+ int evacMeritState
+
+ int weaponMerits
+ int titanMerits
+
+ int happyHourMeritState
+}
+
+// This struct is hooked up to entity.p in code
+global struct ServerPlayerStruct
+{
+ float connectTime
+ bool clientScriptInitialized = false
+
+ bool hasMatchLossProtection = false
+
+ bool usingLoadoutCrate
+ int activePilotLoadoutIndex = -1
+ int activeTitanLoadoutIndex = -1
+ int npcFollowersArrayID
+ entity lastFriendlyTriggerTouched
+ float titanDamageDealt // Does not include shield damage
+ float titanDamageDealt_Stat // Does not include shield damage
+ string spectreSquad
+ bool fastballActivatePressed
+ float nextATShieldRegenTime
+ bool demigod
+ bool partyMember
+
+ bool[OFFHAND_COUNT] offhandSlotLocked = [ false, false, false, false, false, false ]
+ float[OFFHAND_COUNT] lastPilotOffhandUseTime = [ -99.0, -99.0, -99.0, -99.0, -99.0, -99.0 ]
+ float[OFFHAND_COUNT] lastPilotOffhandChargeFrac = [ -1.0, -1.0, -1.0, -1.0, -1.0, -1.0 ]
+ float[OFFHAND_COUNT] lastPilotClipFrac = [ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 ]
+ float[OFFHAND_COUNT] lastTitanOffhandUseTime = [ -99.0, -99.0, -99.0, -99.0, -99.0, -99.0 ]
+ float[OFFHAND_COUNT] lastTitanOffhandChargeFrac = [ -1.0, -1.0, -1.0, -1.0, -1.0, -1.0 ]
+ float[OFFHAND_COUNT] lastTitanClipFrac = [ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 ]
+ float lastSuitPower = -1.0
+
+ entity currentTargetPlayerOrSoul_Ent
+ float currentTargetPlayerOrSoul_LastHitTime
+
+ entity lastPrimaryWeaponEnt // track when your primary changes
+
+ void functionref( entity, entity ) followPlayerOverride
+
+ float postDeathThreadStartTime
+ float lastSelectSPTitanLoadoutTime
+
+ float lastNpcSyncedMeleeVsPlayerTime = -99
+
+ bool watchingPetTitanKillReplay
+
+ bool hasSniperWeapon = false
+
+ int controllableProjectiles_scriptManagedID = -1
+
+ float lastDroneShieldStunPushTime
+
+ float lastRespawnTime
+ float lastDamageTime
+ float lastDeathTime
+ vector deathOrigin
+ vector deathAngles
+ vector rematchOrigin
+
+ entity lastKiller
+ array<float> recentPlayerKilledTimes
+ array<float> recentAllKilledTimes
+ bool seekingRevenge
+ table<entity, int> playerKillStreaks
+ int playerOrTitanKillsSinceLastDeath //This used to only be player Kills, changed primarily for challenge unlock. See 207007
+ float lastOnslaughtTime = -ONSLAUGHT_REQUIREMENT_TIME
+ float lastMayhemTime = -MAYHEM_REQUIREMENT_TIME
+
+ entity lastSpawnPoint
+
+ string lastExecutionUsed
+
+ MeritData meritData
+
+ void functionref( entity ) currViewConeFunction = null
+ RodeoPackageStruct& rodeoPackage //To assign into a nested struct, reference is needed. Less efficient than directly changing values of struct
+ bool rodeoReadyForAction = true
+ float lastClamberFailedTime = 0.0
+
+ table<int, array<void functionref( entity )> > playerMovementEventCallbacks
+ array<PlayerInputEventCallbackStruct> playerInputEventCallbacks
+ array<PlayerHeldButtonEventCallbackStruct> playerHeldButtonEventCallbacks
+ array<PlayerInputAxisEventCallbackStruct> playerInputAxisEventCallbacks
+
+ // for titan zipline
+ entity activeZiplineBolt
+ table<entity> activeZiplineEnts
+ int activeZiplineTargetID
+ string ogTitanOffhandWeaponName
+
+ array<PlayerSlowDownEffect> slowEffects
+
+ //AT Turrets
+ float PROTO_UseDebounceEndTime = 0.0 //Working around hacky implementation.
+
+ entity deployableAmmoBeacon
+
+ bool pilotLoadoutChanged
+ bool titanLoadoutChanged
+ int pilotModelNeedsUpdate = -1
+ int titanModelNeedsUpdate = -1
+
+ int lastActivatedSpreeRewardsWeaponReward
+
+ float empEndTime
+
+ int disableOffhandWeaponsStackCount
+
+ float timeTitanUpgradesStartCountingDown = -1.0
+ float timeTitanUpgradesAccumulatedPauseTime = -1.0
+
+ bool isEmbarking = false
+ bool isDisembarking = false
+ bool isCustomDisembark = false
+
+ vector ornull quickDeathOrigin = null
+ vector ornull quickDeathAngles = null
+ bool doingQuickDeath = false
+ bool quickDeathRealDeathFadesToBlack = false
+
+ int numberOfDeaths = 0
+ int numberOfDeathsSinceLastKill = 0
+
+ float lastGrappledTime
+
+ bool isReviving = false
+
+ float lastEjectTime = 0
+
+ bool showingMobilityGhost
+ float timeNearMobilityGhostHint
+
+ array<StoredWeapon> storedWeapons
+
+ bool rodeoShouldAdjustJumpOffVelocity = false
+ float rodeoRequestBatteryHintLastShownTime = 0.0
+ float batteryLastTouchedNotificationTime = 0.0
+
+ entity leechTarget = null
+ float lastLeechTypeSoundTime = -1
+ table<entity, entity> leechedEnts = {}
+
+ float lastFullHealthTime
+
+ bool isDisconnected = false
+ array<int> empStatusEffectsToClearForPhaseShift //Not great, done to avoid needing code work to get a separate empSlow/empSTurnEffects
+
+ float stats_wallrunTime = 0
+ float stats_wallhangTime = 0
+ float stats_airTime = 0
+ float[ eStatUpdateTime.COUNT ] statUpdateTimes
+ table<string, float> lastPlayerDidDamageTimes
+ bool rewardedMatchCredit = false
+
+ bool lastPosForDistanceStatValid = false
+ vector lastPosForDistanceStat
+
+ bool pilotEjecting = false
+ float pilotEjectStartTime
+ float pilotEjectEndTime
+
+ array<int> deathHintViews
+
+ float earnMeterOwnedFrac
+ float earnMeterOverdriveFrac
+ float earnMeterRewardFrac
+
+ BurnCardPhaseRewindStruct burnCardPhaseRewindStruct
+ array<entity> rodeoAnimTempProps
+
+ bool controllingTurret = false
+
+ int pveTacticalType = -1
+ int pveTacticalLevel = -1
+
+ array<RecentUnlock> challengeUnlocks
+
+ float lastDpadSayTime = -999
+ int consecutiveDpadMessages = 0
+ float replacementTitanETATimer = 0
+ float replacementTitanReady_lastNagTime = 0
+
+ int turretArrayId = -1
+
+ float hotStreakTime = 0.0
+}
+
+global struct TitanSettings
+{
+ string titanSetFile = ""
+ array<string> titanSetFileMods
+}
+
+global struct NPCDefaultWeapon
+{
+ string wep
+ array<string> mods
+}
+
+// This struct is hooked up to entity.ai in code
+global struct ServerAIStruct
+{
+ TitanSettings titanSettings
+
+ TitanLoadoutDef& titanSpawnLoadout
+
+ vector spawnOrigin
+
+ NPCDefaultWeapon ornull mySpawnOptions_weapon
+
+ string droneSpawnAISettings
+
+ float startCrawlingTime
+ bool crawling = false
+ bool transitioningToCrawl = false
+ bool preventOwnerDamage
+ bool invulnerableToNPC = false
+ bool buddhaMode
+ bool killShotSound = true
+
+ table<int,int> stalkerHitgroupDamageAccumulated // used to decide when to blow off limbs
+ table<int,float> stalkerHitgroupLastHitTime // used to decide when to blow off limbs
+
+ bool fragDroneArmed = true
+ entity suicideSpectreExplodingAttacker
+ float suicideSpectreDefaultExplosionDelay
+ float suicideSpectreExplosionDelay
+ float suicideSpectreExplosionDistance
+ float suicideSpectreExplosionTraceTime
+
+ bool superSpectreEnableFragDrones = true
+ int fragDroneMin = 0
+ int fragDroneMax = 0
+ int fragDroneBatch = 0
+ int activeMinionEntArrayID = -1
+
+ bool readyToFire = true
+
+ float nextRegenTime
+ float nextAllowAnnounceTime
+
+ bool enableFriendlyFollower = true
+ entity lastFriendlyTrigger
+
+
+ bool leechInProgress = false
+ float leechStartTime = -1
+
+ //Marvins
+ entity carryBarrel
+ entity mortarTarget
+
+ int bossTitanType
+ bool bossTitanVDUEnabled = true
+ bool bossTitanPlayIntro = true
+ int mercCharacterID
+ string bossCharacterName
+
+ int killCount
+ int scoreCount
+
+ bool shouldDropBattery = true
+ int nukeCore = 0
+
+ int playerDoomedProficiency
+ int defaultProficiency
+
+ string dropshipSpawnStyle = ""
+ float spawnTime
+}
+
+
+// hooked up to entity.w in code
+global struct ServerWeaponStruct
+{
+ float startChargeTime = 0.0
+ bool wasCharged = false
+ bool initialized = false
+ entity lastProjectileFired
+ array vortexImpactData
+
+ array<PhaseRewindData> phaseRetreatSavedPositions
+ bool phaseRetreatShouldSave = true
+
+ entity laserWorldModel
+ entity guidedMissileTarget = null
+ array<entity> salvoMissileArray
+
+ entity weaponOwner
+ entity bubbleShield
+ array<int> statusEffects
+ array<entity> fxHandles
+ float lastFireTime
+
+ table< entity, int> targetLockEntityStatusEffectID
+ void functionref(entity, entity) missileFiredCallback
+ int savedKillCount
+}
+
+
+global struct RemoteTurretSettings
+{
+ vector turretOrigin
+ vector turretAngles
+ vector panelOrigin
+ vector panelAngles
+
+ asset turretModel
+ asset panelModel
+
+ string turretSettingsName
+ string weaponName
+
+ bool viewClampEnabled
+ float viewClampRangeYaw
+ float viewClampRangePitch
+ float viewStartPitch
+}
+
+// hooked up to entity.remoteturret in code
+global struct ServerRemoteTurretStruct
+{
+ RemoteTurretSettings ornull settings
+ entity controlPanel
+ int statusEffectID
+}
+
+
+// hooked up to entity.proj in code
+global struct ServerProjectileStruct
+{
+ bool isChargedShot = false
+ float damageScale = 1.0
+ bool onlyAllowSmartPistolDamage = false
+ bool selfPropelled = true
+ bool startPlanting = false
+ entity trackedEnt
+ int projectileBounceCount = 0
+ array<entity> projectileGroup
+ int projectileID
+ bool tetherAttached
+ vector savedOrigin
+ vector savedRelativeDelta
+ entity savedMovingGeo
+ vector savedAngles
+ entity inflictorOverride
+ bool hasBouncedOffVortex = false
+ bool isPlanted = false
+}
+
+// hooked up to entity.soul in code
+global struct ServerTitanSoulStruct
+{
+ bool rebooting = false
+ float lastSegmentLossTime = 0.0
+ float batteryTime
+ entity bubbleShield
+ NPCPilotStruct seatedNpcPilot
+ bool skipDoomState
+ bool regensHealth = true
+ bool diesOnEject = true
+ float doomedStartTime = 0.0
+ entity batteryContainer = null
+ entity armBadge = null
+ bool batteryContainerBeingUsed = false
+ bool batteryContainerPastPointOfNoReturn = false
+ entity lastOwner
+ int upgradeCount = 0
+ TitanLoadoutDef& titanLoadout
+ entity nukeAttacker = null
+ bool batteryMovedDown = false
+}
+
+// hooked up to entity.decoy in code
+global struct ServerPlayerDecoyStruct
+{
+ array< entity > fxHandles
+ array< string > loopingSounds
+}
+
+// hooked up to entity.sp in code
+global struct ServerSpawnpointStruct
+{
+ bool enabled
+ float lastUsedTime
+ array< int > zones
+ array< entity > visibleToTurret
+}
+
+global struct ServerFirstPersonProxyStruct
+{
+ entity battery
+} \ No newline at end of file