Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
109ab1d93a | ||
|
|
a3aa798186 | ||
|
|
ab88a1edd7 | ||
|
|
125296a37e | ||
|
|
a8941335f9 | ||
|
|
552078bb29 | ||
|
|
33be9bf439 | ||
|
|
f0ebe74408 | ||
|
|
1b56e6a24c |
@@ -32,5 +32,9 @@ WeaponData
|
||||
"ammo_stockpile_max" "300"
|
||||
"regen_ammo_refill_rate" "*1.5"
|
||||
}
|
||||
mode_holoshift
|
||||
{
|
||||
"hud_icon" "rui/menu/boosts/boost_icon_holopilot"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"Name": "Legonzaur.HoloShift",
|
||||
"Description": "Swap positions with your beloved decoy",
|
||||
"Version": "1.0.6",
|
||||
"Description": "Swap positions with your beloved decoy. Compatible with HoloTracker.",
|
||||
"Version": "1.0.10",
|
||||
"LoadPriority": 2,
|
||||
"Scripts": [
|
||||
{
|
||||
@@ -9,7 +9,14 @@
|
||||
"RunOn": "MP",
|
||||
"ServerCallback": {
|
||||
"After": "HoloShift_Init"
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
"Path": "HolopilotIconChange.nut",
|
||||
"RunOn": "MP",
|
||||
"ServerCallback": {
|
||||
"After": "HolopilotIconChangeInit"
|
||||
},
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
untyped
|
||||
global function HolopilotIconChangeInit
|
||||
|
||||
|
||||
void function HolopilotIconChangeInit()
|
||||
{
|
||||
#if SERVER
|
||||
AddCallback_OnPlayerRespawned( HolopilotIconChange )
|
||||
//AddCallback_PlayerClassChanged( HolopilotIconChange )
|
||||
//AddCallback_OnPlayerLifeStateChanged( HolopilotIconChange )
|
||||
#endif
|
||||
}
|
||||
|
||||
#if SERVER
|
||||
|
||||
void function HolopilotIconChange(entity player){
|
||||
//void function HolopilotIconChange(entity player, int oldState, int newState){
|
||||
Assert( IsAlive( player ) )
|
||||
if(player.GetOffhandWeapons().len() > 1 && player.GetOffhandWeapons()[1].GetWeaponClassName() == "mp_ability_holopilot"){
|
||||
array <string> offhandMods = player.GetOffhandWeapons()[1].GetMods()
|
||||
offhandMods.append("mode_holoshift")
|
||||
player.GetOffhandWeapons()[1].SetMods(offhandMods)
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
@@ -32,8 +32,8 @@ bool IsLaunched = false
|
||||
Assert(player)
|
||||
if(!player.IsPhaseShifted()){
|
||||
if(player in playerDecoyActiveFrom){
|
||||
print("test")
|
||||
float chargeCount = float(player.GetOffhandWeapon(1).GetWeaponPrimaryClipCountMax()) - ((Time() - playerDecoyActiveFrom[player])*rechargeMultiplier)
|
||||
chargeCount = max(chargeCount, 0.0) // can be negative in weird cases
|
||||
player.GetOffhandWeapon(1).SetWeaponPrimaryClipCount(int(chargeCount))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,6 +46,10 @@ void function CleanupExistingDecoy( entity decoy )
|
||||
{
|
||||
if ( IsValid( decoy ) ) //This cleanup function is called from multiple places, so check that decoy is still valid before we try to clean it up again
|
||||
{
|
||||
//COMMUNICATION WITH HOLOTRACKER
|
||||
int eHandle = decoy.GetEncodedEHandle()
|
||||
ServerToClientStringCommand( decoy.GetBossPlayer(), "StopDecoyTracking " + eHandle.tostring())
|
||||
//END OF COMMUNICATION
|
||||
decoy.Decoy_Dissolve()
|
||||
CleanupFXAndSoundsForDecoy( decoy )
|
||||
}
|
||||
@@ -158,6 +162,11 @@ var function OnWeaponPrimaryAttack_holopilot( entity weapon, WeaponPrimaryAttack
|
||||
}else{
|
||||
entity decoy = CreateHoloPilotDecoys( weaponOwner, 1 )
|
||||
playerDecoyList[ weaponOwner ] <- decoy
|
||||
|
||||
//COMMUNICATION WITH HOLOTRACKER
|
||||
int eHandle = decoy.GetEncodedEHandle()
|
||||
ServerToClientStringCommand( weaponOwner, "ActivateDecoyTracking " + eHandle.tostring())
|
||||
//END OF COMMUNICATION
|
||||
}
|
||||
#else
|
||||
Rumble_Play( "rumble_holopilot_activate", {} )
|
||||
@@ -428,18 +437,36 @@ void function PlayerUsesHoloRewindThreaded( entity player, entity decoy )
|
||||
entity mover = CreateScriptMover( player.GetOrigin(), player.GetAngles() )
|
||||
player.SetParent( mover, "REF" )
|
||||
|
||||
OnThreadEnd( function() : ( player, mover, decoy )
|
||||
table decoyData = {}
|
||||
decoyData.forceCrouch <- TraceLine
|
||||
( decoy.GetOrigin(),
|
||||
decoy.GetOrigin() + < 0,0,80 >, // 40 is crouched pilot height! add additional 40 for better check
|
||||
[ decoy ],
|
||||
TRACE_MASK_SHOT,
|
||||
TRACE_COLLISION_GROUP_NONE
|
||||
).hitEnt != null // decoy will stuck, need to forceCrouch player
|
||||
|
||||
OnThreadEnd( function() : ( player, mover, decoy, decoyData )
|
||||
{
|
||||
player.SetOrigin(decoy.GetOrigin())
|
||||
player.SetAngles(decoy.GetAngles())
|
||||
player.SetVelocity(decoy.GetVelocity())
|
||||
CancelPhaseShift( player )
|
||||
player.DeployWeapon()
|
||||
player.SetPredictionEnabled( true )
|
||||
player.ClearParent()
|
||||
ViewConeFree( player )
|
||||
mover.Destroy()
|
||||
CleanupExistingDecoy(decoy)
|
||||
if ( IsValid( player ) )
|
||||
{
|
||||
player.SetOrigin(decoy.GetOrigin())
|
||||
player.SetAngles(decoy.GetAngles())
|
||||
player.SetVelocity(decoy.GetVelocity())
|
||||
CancelPhaseShift( player )
|
||||
player.DeployWeapon()
|
||||
player.SetPredictionEnabled( true )
|
||||
player.ClearParent()
|
||||
ViewConeFree( player )
|
||||
if( decoyData.forceCrouch )
|
||||
thread HoloRewindForceCrouch( player ) // this will handle "UnforceCrouch()"
|
||||
}
|
||||
|
||||
if ( IsValid( mover ) )
|
||||
mover.Destroy()
|
||||
|
||||
if ( IsValid( decoy ) )
|
||||
CleanupExistingDecoy(decoy)
|
||||
})
|
||||
|
||||
vector initial_origin = player.GetOrigin()
|
||||
@@ -449,6 +476,8 @@ void function PlayerUsesHoloRewindThreaded( entity player, entity decoy )
|
||||
ViewConeZero( player )
|
||||
player.HolsterWeapon()
|
||||
player.SetPredictionEnabled( false )
|
||||
if( decoyData.forceCrouch )
|
||||
player.ForceCrouch() // avoid stucking!
|
||||
PhaseShift( player, 0.0, 7 * PHASE_REWIND_PATH_SNAPSHOT_INTERVAL * 1.5 )
|
||||
|
||||
for ( float i = 7; i > 0; i-- )
|
||||
@@ -464,4 +493,13 @@ void function PlayerUsesHoloRewindThreaded( entity player, entity decoy )
|
||||
mover.NonPhysicsRotateTo( decoy.GetAngles(), PHASE_REWIND_PATH_SNAPSHOT_INTERVAL, 0, 0 )
|
||||
player.SetVelocity( decoy.GetVelocity() )
|
||||
}
|
||||
|
||||
void function HoloRewindForceCrouch( entity player )
|
||||
{
|
||||
// make player crouch
|
||||
player.ForceCrouch()
|
||||
wait 0.2 // magic number, player must be completely crouched to avoid auto-stand
|
||||
if( IsValid( player ) )
|
||||
player.UnforceCrouch()
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user