Expose the Arrow Bullet scalar to Lua
Very much for prototyping reasons
This commit is contained in:
parent
21918df5f3
commit
8bb3482bc5
3 changed files with 24 additions and 3 deletions
|
|
@ -1497,6 +1497,17 @@ static int lib_pNukeEnemies(lua_State *L)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int lib_pKartAltShrinkAuraScalar(lua_State *L)
|
||||
{
|
||||
player_t *player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER));
|
||||
//HUDSAFE
|
||||
if (!player)
|
||||
return LUA_ErrInvalid(L, "player_t");
|
||||
|
||||
lua_pushinteger(L, P_KartAltShrinkAuraScalar(player));
|
||||
return 1;
|
||||
}
|
||||
|
||||
// P_MAP
|
||||
///////////
|
||||
|
||||
|
|
@ -5517,6 +5528,7 @@ static luaL_Reg lib[] = {
|
|||
{"P_ReturnThrustX",lib_pReturnThrustX},
|
||||
{"P_ReturnThrustY",lib_pReturnThrustY},
|
||||
{"P_NukeEnemies",lib_pNukeEnemies},
|
||||
{"P_KartAltShrinkAuraScalar", lib_pKartAltShrinkAuraScalar},
|
||||
|
||||
// p_map
|
||||
{"P_CheckPosition",lib_pCheckPosition},
|
||||
|
|
|
|||
|
|
@ -215,6 +215,7 @@ void P_HaltPlayerOrbit(player_t *player);
|
|||
void P_ExitPlayerOrbit(player_t *player);
|
||||
boolean P_PlayerOrbit(player_t *player);
|
||||
|
||||
fixed_t P_KartAltShrinkAuraScalar(player_t *player);
|
||||
void P_MovePlayer(player_t *player);
|
||||
void P_PlayerThink(player_t *player);
|
||||
void P_PlayerAfterThink(player_t *player);
|
||||
|
|
|
|||
14
src/p_user.c
14
src/p_user.c
|
|
@ -2181,6 +2181,16 @@ static void P_UpdatePlayerAngle(player_t *player)
|
|||
P_UpdatePlayerAiming(player);
|
||||
}
|
||||
|
||||
#define MINAURAPCT (cv_kartaltshrink_arrowbulletthres.value - (FRACUNIT / 4))
|
||||
#define AURA_DIFF (max(1, (FRACUNIT << 1) - MINAURAPCT))
|
||||
fixed_t P_KartAltShrinkAuraScalar(player_t *player)
|
||||
{
|
||||
if ((!player) || (!player->mo) || (P_MobjWasRemoved(player->mo)))
|
||||
return 0;
|
||||
|
||||
return FixedDiv(min(max(0, K_GetSpeedPercentage(player) - MINAURAPCT), (FRACUNIT << 1)), AURA_DIFF);
|
||||
}
|
||||
|
||||
//
|
||||
// P_MovePlayer
|
||||
void P_MovePlayer(player_t *player)
|
||||
|
|
@ -2317,12 +2327,10 @@ void P_MovePlayer(player_t *player)
|
|||
K_SpawnSparkleTrail(player->mo);
|
||||
}
|
||||
|
||||
#define MINAURAPCT (cv_kartaltshrink_arrowbulletthres.value - (FRACUNIT / 4))
|
||||
#define AURA_DIFF (max(1, (FRACUNIT << 1) - MINAURAPCT))
|
||||
// The Arrow Bullet aura should spawn before you actually enter the Arrow Bullet state.
|
||||
if (cv_kartaltshrink_arrowbullet.value && K_IsAltShrunk(player) && (K_GetSpeedPercentage(player) >= MINAURAPCT))
|
||||
{
|
||||
fixed_t aura_scalar = FixedDiv(min(max(0, K_GetSpeedPercentage(player) - MINAURAPCT), (FRACUNIT << 1)), AURA_DIFF);
|
||||
fixed_t aura_scalar = P_KartAltShrinkAuraScalar(player);
|
||||
|
||||
INT32 auravis = 10 - FixedMul(7, Easing_OutCubic(aura_scalar, 0, FRACUNIT));
|
||||
auravis = min(9, max(1, auravis)) << FF_TRANSSHIFT;
|
||||
|
|
|
|||
Loading…
Reference in a new issue