aboutsummaryrefslogtreecommitdiff
path: root/bobthebob.testing/scripts/vscripts/_bobtestingfunctions_mp.gnut
diff options
context:
space:
mode:
Diffstat (limited to 'bobthebob.testing/scripts/vscripts/_bobtestingfunctions_mp.gnut')
-rw-r--r--bobthebob.testing/scripts/vscripts/_bobtestingfunctions_mp.gnut239
1 files changed, 239 insertions, 0 deletions
diff --git a/bobthebob.testing/scripts/vscripts/_bobtestingfunctions_mp.gnut b/bobthebob.testing/scripts/vscripts/_bobtestingfunctions_mp.gnut
new file mode 100644
index 00000000..b782243a
--- /dev/null
+++ b/bobthebob.testing/scripts/vscripts/_bobtestingfunctions_mp.gnut
@@ -0,0 +1,239 @@
+untyped
+globalize_all_functions
+
+void function SvTestingMPInit()
+{
+ Bleedout_Init()
+ AddCallback_EntitiesDidLoad( CreateSpawns )
+}
+
+void function CreateSpawns()
+{
+ //thread CreateSpawns_Threaded()
+}
+
+void function CreateSpawns_Threaded()
+{
+ WaitEndFrame() // wait for spawns to get cleared, game ctds if we don't do this
+ entity validSpawn = GetEntArrayByClass_Expensive( "info_spawnpoint_human" )[ 0 ]
+
+ for ( int i = 0; i < 50; i++ )
+ {
+ entity newSpawn = CreateEntity( "info_spawnpoint_human" )
+ newSpawn.SetOrigin( validSpawn.GetOrigin() )
+ DispatchSpawn( newSpawn )
+ }
+}
+
+void function TestSpawnpoints( bool titan = false )
+{
+ entity player = GetPlayerArray()[0]
+ array<entity> spawnpoints
+ if ( !titan )
+ spawnpoints = SpawnPoints_GetPilotStart( player.GetTeam() )
+ else
+ spawnpoints = SpawnPoints_GetTitanStart( player.GetTeam() )
+
+ SpawnPoints_InitRatings( player, player.GetTeam() )
+
+ foreach ( entity spawnpoint in spawnpoints )
+ spawnpoint.CalculateRating( titan ? TD_TITAN : TD_PILOT, player.GetTeam(), RandomFloat( 7.0 ) - 3.5, RandomFloat( 7.0 ) - 3.5 )
+
+ if ( !titan )
+ {
+ SpawnPoints_SortPilotStart()
+ spawnpoints = SpawnPoints_GetPilotStart( player.GetTeam() )
+ }
+ else
+ {
+ SpawnPoints_SortTitanStart()
+ spawnpoints = SpawnPoints_GetTitanStart( player.GetTeam() )
+ }
+
+ entity chosenPoint
+ foreach ( entity spawnpoint in spawnpoints )
+ if ( IsSpawnpointValid( spawnpoint, player.GetTeam() ) )
+ {
+ chosenPoint = spawnpoint
+ break
+ }
+
+ player.SetOrigin( chosenPoint.GetOrigin() )
+ player.SetAngles( chosenPoint.GetAngles() )
+
+ //SpawnPoints_DiscardRatings() // somehow the game seems to call this automatically so unneeded
+}
+
+bool function IsSpawnpointValid( entity spawnpoint, int team )
+{
+ if ( GameModeRemove( spawnpoint ) )
+ return false
+
+ // ultra temp
+ print( spawnpoint.GetTeam() )
+ if ( spawnpoint.GetTeam() == 0 )
+ return false
+
+ if ( spawnpoint.GetTeam() > 0 && spawnpoint.GetTeam() != team )
+ return false
+
+
+
+ return true
+}
+
+void function TestScoreEvent( entity player, int id )
+{
+ ScoreEvent event = ScoreEvent_FromId( id )
+
+ Remote_CallFunction_NonReplay( player, "ServerCallback_ScoreEvent", id, event.pointValue, event.displayType, player.GetEncodedEHandle(), event.earnMeterOwnValue, event.earnMeterEarnValue )
+}
+
+void function TestDrop( entity player )
+{
+ thread CreateTitanForPlayerAndHotdrop( player, GetTitanReplacementPoint( player, false ) )
+}
+
+void function WarpThroughSpawnpoints( string modeOverride = "" )
+{
+ if ( !modeOverride.len() )
+ modeOverride = GAMETYPE
+
+ entity player = GetPlayerArray()[0]
+
+ array<entity> spawnpoints = GetEntArrayByClass_Expensive( "info_hardpoint" ) //SpawnPoints_GetPilot()
+ foreach ( entity spawnpoint in spawnpoints )
+ {
+ //string gamemodeKey = "gamemode_" + modeOverride
+ //if ( spawnpoint.HasKey( gamemodeKey ) && ( spawnpoint.kv[ gamemodeKey ] == "0" || spawnpoint.kv[ gamemodeKey ] == "" ) )
+ // continue
+ //
+ //if ( !spawnpoint.HasKey( gamemodeKey ) )
+ // continue
+
+ if ( spawnpoint.HasKey( "hardpointGroup" ) )
+ print( spawnpoint.kv.hardpointGroup )
+
+ player.SetOrigin( spawnpoint.GetOrigin() )
+ player.SetAngles( spawnpoint.GetAngles() )
+
+ wait 0.5
+ }
+}
+
+void function AttemptSpawnBuddyTitan()
+{
+ PrecacheModel( $"models/titans/buddy/titan_buddy.mdl" )
+ PrecacheModel( $"models/weapons/arms/buddypov.mdl" )
+
+ entity player = GetPlayerArray()[0]
+ entity titan = CreateNPCTitan( "titan_buddy", player.GetTeam(), player.GetOrigin(), <0, 0, 0> )
+ SetSpawnOption_AISettings( titan, "npc_titan_buddy" )
+ SetSpawnOption_Weapon( titan, "mp_titanweapon_xo16_vanguard", [ ] )
+
+ DispatchSpawn( titan )
+
+ player.SetPetTitan( titan )
+ titan.SetOwner( player )
+ titan.SetUsable()
+}
+
+
+void function SetPlayerCameraToHead()
+{
+ entity viewControl = CreateEntity( "point_viewcontrol" )
+ viewControl.kv.spawnflags = 56
+ DispatchSpawn( viewControl )
+
+ viewControl.SetParent( GetPlayerArray()[0], "headshot" )
+ viewControl.SetOrigin( < 4, 0, 1 > )
+ viewControl.SetAngles( < 0, 0, 0 > )
+ GetPlayerArray()[0].SetViewEntity( viewControl, true )
+}
+
+void function CreateTestControlPanel()
+{
+ entity player = GetPlayerArray()[0]
+
+ entity panel = CreateEntity( "prop_control_panel" )
+ panel.SetValueForModelKey( $"models/communication/terminal_usable_imc_01.mdl" )
+ panel.SetOrigin( player.GetOrigin() )
+ panel.SetAngles( player.GetAngles() )
+ panel.kv.solid = SOLID_VPHYSICS
+ SetTargetName( panel, "cpanel" )
+ DispatchSpawn( panel )
+
+ panel.SetModel( $"models/communication/terminal_usable_imc_01.mdl" )
+ panel.s.onPlayerFinishesUsing_func = TestOnPanelHacked
+
+}
+
+function TestOnPanelHacked( panel, player, success )
+{
+ expect entity( panel )
+ expect entity( player )
+ expect bool( success )
+
+ if ( !success )
+ return
+
+ print( panel + " was hacked by " + player )
+ PanelFlipsToPlayerTeamAndUsableByEnemies( panel, player )
+}
+
+void function TestFastball()
+{
+ PrecacheModel( $"models/titans/buddy/titan_buddy.mdl" )
+ RegisterSignal( "fastball_start_throw" )
+ RegisterSignal( "fastball_release" )
+ PrecacheParticleSystem( $"P_BT_eye_SM" )
+
+ entity player = GetPlayerArray()[0]
+
+ entity prop = CreatePropDynamic( $"models/titans/buddy/titan_buddy.mdl", player.GetOrigin(), player.GetAngles() )
+ thread PlayAnim( prop, "bt_beacon_fastball_throw_end" )
+
+ player.ContextAction_SetFastball()
+ FirstPersonSequenceStruct throwSequence
+ throwSequence.attachment = "REF"
+ throwSequence.useAnimatedRefAttachment = true
+ throwSequence.hideProxy = true
+ throwSequence.firstPersonAnim = "ptpov_beacon_fastball_throw_end"
+ //throwSequence.thirdPersonAnim = "pt_beacon_fastball_throw_end"
+ throwSequence.firstPersonBlendOutTime = 0.0
+
+ thread FirstPersonSequence( throwSequence, player, prop )
+ player.HolsterWeapon()
+
+ EmitSoundOnEntityOnlyToPlayer( player, player, "Music_Beacon_14_BTThrowThruFirstCrane" )
+
+ prop.WaitSignal( "fastball_start_throw" )
+ float duration = EmitSoundOnEntity( prop, "diag_sp_spoke1_BE117_04_01_mcor_bt" ) // trust me
+ vector eyeAngles = player.EyeAngles()
+
+ // particle effect
+ StartParticleEffectOnEntity( prop, GetParticleSystemIndex( $"P_BT_eye_SM" ), FX_PATTACH_POINT_FOLLOW, prop.LookupAttachment( "EYEGLOW" ) )
+ wait duration
+
+ prop.WaitSignal( "fastball_release" )
+ player.ContextAction_ClearFastball()
+ player.ClearParent()
+ ClearPlayerAnimViewEntity( player )
+ player.SetVelocity( AnglesToForward( eyeAngles ) * 1250 )
+ player.DeployWeapon()
+
+ wait 0.5
+ prop.Destroy()
+}
+
+void function TestPlanetExplosion() // won't look good until we can load textures from rpak for these models
+{
+ PrecacheModel( $"models/vistas/planet_ex_static.mdl" )
+ PrecacheModel( $"models/vistas/planet_explosion_animated.mdl" )
+
+ entity cam = GetEnt( "skybox_cam_level" )
+ cam.SetOrigin( < 7000, 7000, 7000 > ) // arbitrary point
+ CreatePropDynamic( $"models/vistas/planet_ex_static.mdl", cam.GetOrigin(), cam.GetAngles() )
+ entity explosion = CreatePropDynamic( $"models/vistas/planet_explosion_animated.mdl", cam.GetOrigin(), cam.GetAngles() )
+ thread PlayAnim( explosion, "planet_ex_ending" )
+} \ No newline at end of file