mirror of
https://github.com/qwertyuiop3/Storm.git
synced 2025-01-03 08:03:24 +08:00
instant heal (prototype), minor logic fixes
instant revive, rapidfire or anything timer based uses same logic
This commit is contained in:
parent
d174b651c9
commit
1af4705b49
@ -179,7 +179,19 @@ void __thiscall Redirected_Copy_Command(void* Unknown_Parameter, Command_Structu
|
||||
{
|
||||
if (Extra_Commands < 1)
|
||||
{
|
||||
*(__int32*)((unsigned __int32)Network_Channel + 8) += (*(__int32*)((unsigned __int32)Local_Player + 5324) + ~-150) / 150 * 150 + (Reserve * 150);
|
||||
if (Reserve == 0)
|
||||
{
|
||||
*(__int32*)((unsigned __int32)Network_Channel + 8) += 150;
|
||||
}
|
||||
else
|
||||
{
|
||||
__int32 Sequence_Shift = (*(__int32*)((unsigned __int32)Local_Player + 5324) + ~- 150) / 150 * 150 + (Reserve * 150);
|
||||
|
||||
if (Sequence_Shift > 0)
|
||||
{
|
||||
*(__int32*)((unsigned __int32)Network_Channel + 8) += Sequence_Shift;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
*(__int32*)((unsigned __int32)Local_Player + 20) = 1 + (Reserve > 0);
|
||||
@ -198,7 +210,7 @@ void __thiscall Redirected_Copy_Command(void* Unknown_Parameter, Command_Structu
|
||||
{
|
||||
if (*(void**)((unsigned __int32)Local_Player + 10008) != INVALID_HANDLE_VALUE)
|
||||
{
|
||||
Sequence_Shift(0);
|
||||
Sequence_Shift(2);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -351,7 +363,7 @@ void __thiscall Redirected_Copy_Command(void* Unknown_Parameter, Command_Structu
|
||||
|
||||
__int8 Is_Melee = *(__int32*)((unsigned __int32)Weapon_Data + 352) * (*(__int32*)((unsigned __int32)Weapon_Data + 348) ^ 1) <= 1;
|
||||
|
||||
__int8 Healing = *(void**)((unsigned __int32)Local_Player + 8076) != INVALID_HANDLE_VALUE;
|
||||
__int8 Healing = (*(__int32*)((unsigned __int32)Local_Player + 7080) == 1) + (*(void**)((unsigned __int32)Local_Player + 8076) != INVALID_HANDLE_VALUE);
|
||||
|
||||
__int8 Reloading = *(__int8*)((unsigned __int32)Weapon + 2493);
|
||||
|
||||
@ -387,7 +399,7 @@ void __thiscall Redirected_Copy_Command(void* Unknown_Parameter, Command_Structu
|
||||
}
|
||||
}
|
||||
|
||||
if ((Target->Identifier >= 263) + (Target->Identifier <= 270 - Is_Cold_Melee - (*(__int8*)((unsigned __int32)Local_Player + 8070) ^ 1)) == 2)
|
||||
if (((270 - Is_Cold_Melee - (*(__int8*)((unsigned __int32)Local_Player + 8070) ^ 1) - Target->Identifier) ^ Target->Identifier - 263) > 0)
|
||||
{
|
||||
Shove_Label:
|
||||
{
|
||||
@ -480,7 +492,7 @@ void __thiscall Redirected_Copy_Command(void* Unknown_Parameter, Command_Structu
|
||||
{
|
||||
__int8 Can_Attack = (*(float*)((unsigned __int32)Weapon + 2400) <= Global_Variables->Current_Time) * (*(__int32*)((unsigned __int32)Weapon + 2436) > 0 - Is_Melee * 2) * (*(float*)((unsigned __int32)Local_Player + 3872) <= Global_Variables->Current_Time);
|
||||
|
||||
if ((Can_Attack ^ 1) + (Weapon_Identifier == 96) + Healing == 0)
|
||||
if (Healing + (Can_Attack ^ 1) + (Weapon_Identifier == 96) == 0)
|
||||
{
|
||||
Target_Structure* Aim_Target = nullptr;
|
||||
|
||||
@ -688,6 +700,34 @@ void __thiscall Redirected_Copy_Command(void* Unknown_Parameter, Command_Structu
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Weapon_Identifier == 73)
|
||||
{
|
||||
//ideally 150 commands should always be buffered beforehand
|
||||
//at worst buffer them right before slot* command
|
||||
//current solution without buffering takes (interval_per_tick*150) seconds to prepare itself
|
||||
//reason why i'm not doing that now is because it'll take time to redesign prediction code to function properly
|
||||
//specifically:
|
||||
//ignoring network time updates for good period of time isn't good idea
|
||||
//viewmodel animations will jitter at moment of centering around network time
|
||||
//so is interpolation
|
||||
//besides all that, it'll invoke clock correction on server's side and that's pretty unstable (especially on ~100 tickrate)
|
||||
|
||||
Global_Variables->Current_Time -= Global_Variables->Interval_Per_Tick * 150;
|
||||
|
||||
//leaving other ones of sanity for later
|
||||
if (*(float*)((unsigned __int32)Weapon + 2400) <= Global_Variables->Current_Time)
|
||||
{
|
||||
if ((Command->Buttons & 2049) != 0)
|
||||
{
|
||||
Sequence_Shift(0);
|
||||
|
||||
Block_Buttons = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((Command->Buttons & 1) == 1)
|
||||
{
|
||||
|
@ -2,7 +2,7 @@ void* Original_Get_Glow_Color_Caller;
|
||||
|
||||
void __thiscall Redirected_Get_Glow_Color(void* Entity, void* Unknown_Parameter_1, void* Unknown_Parameter_2, void* Unknown_Parameter_3, void* Unknown_Parameter_4)
|
||||
{
|
||||
if (Get_Identifier(Entity, 0, 0) != 232)
|
||||
if (Get_Identifier(Entity, 0, 0) == -1)
|
||||
{
|
||||
(decltype(&Redirected_Get_Glow_Color)(Original_Get_Glow_Color_Caller))(Entity, Unknown_Parameter_1, Unknown_Parameter_2, Unknown_Parameter_3, Unknown_Parameter_4);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user