diff options
Diffstat (limited to 'Northstar.CustomServers/scripts/vscripts/_powerup.gnut')
-rw-r--r-- | Northstar.CustomServers/scripts/vscripts/_powerup.gnut | 93 |
1 files changed, 0 insertions, 93 deletions
diff --git a/Northstar.CustomServers/scripts/vscripts/_powerup.gnut b/Northstar.CustomServers/scripts/vscripts/_powerup.gnut deleted file mode 100644 index 03b9fcfc..00000000 --- a/Northstar.CustomServers/scripts/vscripts/_powerup.gnut +++ /dev/null @@ -1,93 +0,0 @@ -untyped -global function PowerUps_Init - -struct { - array<entity> powerupSpawns -} file - -void function PowerUps_Init() -{ - SH_PowerUp_Init() - - AddSpawnCallbackEditorClass( "script_ref", "script_power_up_other", AddPowerupSpawn ) - AddCallback_OnTouchHealthKit( "item_powerup", OnPowerupCollected ) - AddCallback_GameStateEnter( eGameState.Prematch, RespawnPowerups ) -} - -void function AddPowerupSpawn( entity spawnpoint ) -{ - file.powerupSpawns.append( spawnpoint ) -} - -void function RespawnPowerups() -{ - foreach ( entity spawnpoint in file.powerupSpawns ) - { - PowerUp powerupDef = GetPowerUpFromItemRef( expect string( spawnpoint.kv.powerUpType ) ) - thread PowerupSpawnerThink( spawnpoint, powerupDef ) - } -} - -void function PowerupSpawnerThink( entity spawnpoint, PowerUp powerupDef ) -{ - svGlobal.levelEnt.EndSignal( "CleanUpEntitiesForRoundEnd" ) - - entity base = CreatePropDynamic( powerupDef.baseModel, spawnpoint.GetOrigin(), spawnpoint.GetAngles(), 2 ) - OnThreadEnd( function() : ( base ) - { - base.Destroy() - }) - - while ( true ) - { - if ( !powerupDef.spawnFunc() ) - return - - entity powerup = CreateEntity( "item_powerup" ) - - powerup.SetOrigin( base.GetOrigin() + powerupDef.modelOffset ) - powerup.SetAngles( base.GetAngles() + powerupDef.modelAngles ) - powerup.SetValueForModelKey( powerupDef.model ) - - DispatchSpawn( powerup ) - - // unless i'm doing something really dumb, this all has to be done after dispatchspawn to get the powerup to not have gravity - powerup.StopPhysics() - powerup.SetOrigin( base.GetOrigin() + powerupDef.modelOffset ) - powerup.SetAngles( base.GetAngles() + powerupDef.modelAngles ) - - powerup.SetModel( powerupDef.model ) - powerup.s.powerupRef <- powerupDef.itemRef - - PickupGlow glow = CreatePickupGlow( powerup, powerupDef.glowColor.x.tointeger(), powerupDef.glowColor.y.tointeger(), powerupDef.glowColor.z.tointeger() ) - glow.glowFX.SetOrigin( spawnpoint.GetOrigin() ) // want the glow to be parented to the powerup, but have the position of the spawnpoint - - OnThreadEnd( function() : ( powerup ) - { - if ( IsValid( powerup ) ) - powerup.Destroy() - }) - - powerup.WaitSignal( "OnDestroy" ) - wait powerupDef.respawnDelay - } -} - -bool function OnPowerupCollected( entity player, entity healthpack ) -{ - PowerUp powerup = GetPowerUpFromItemRef( expect string( healthpack.s.powerupRef ) ) - - if ( player.IsTitan() == powerup.titanPickup ) - { - // hack because i couldn't figure out any other way to do this without modifying sh_powerup - // ensure we don't kill the powerup if it's a battery the player can't pickup - if ( ( powerup.index == ePowerUps.titanTimeReduction || powerup.index == ePowerUps.LTS_TitanTimeReduction ) && ( player.IsTitan() || PlayerHasMaxBatteryCount( player ) ) ) - return false - - // idk why the powerup.destroyFunc doesn't just return a bool? would mean they could just handle stuff like this in powerup code - powerup.destroyFunc( player ) - return true // destroys the powerup - } - - return false // keeps powerup alive -}
\ No newline at end of file |