marrub
/
Lithia
Archived
1
0
Fork 0
This repository has been archived on 2023-06-17. You can view files and clone it, but cannot push or open issues/pull-requests.
Lithia/source/Main/u_adrenaline.c

82 lines
1.8 KiB
C

// Copyright © 2016-2017 Graham Sanderson, all rights reserved.
#include "lith_upgrades_common.h"
#define UData UData_Adrenaline(upgr)
#define CHARGE_MAX (30 * 35)
// Extern Functions ----------------------------------------------------------|
//
// Activate
//
void Upgr_Adrenaline_Activate(struct player *p, upgrade_t *upgr)
{
InvTake("Lith_AdrenalineToken", 1);
}
//
// Update
//
script void Upgr_Adrenaline_Update(struct player *p, upgrade_t *upgr)
{
// Charge
if(UData.charge < CHARGE_MAX)
UData.charge++;
// Prepare
else if(!UData.readied)
{
ACS_PlaySound(0, "player/adren/ready", 5|CHAN_NOPAUSE|CHAN_MAYBE_LOCAL|CHAN_UI, 1.0, false, ATTN_STATIC);
p->logH(">>>>> Adrenaline injector ready.");
UData.readied = true;
}
// Ready to use
else
{
// Ready
if(!InvNum("Lith_AdrenalineToken"))
InvGive("Lith_AdrenalineProjectileChecker", 1);
// Use
if(InvNum("Lith_AdrenalineToken"))
{
InvTake("Lith_AdrenalineToken", 1);
ACS_PlaySound(0, "player/adren/inj", 5|CHAN_NOPAUSE|CHAN_MAYBE_LOCAL|CHAN_UI, 1.0, false, ATTN_STATIC);
p->logH(">>>>> Adrenaline administered.");
UData.charge = UData.readied = 0;
InvGive("Lith_TimeHax2", 1);
ACS_Delay(36);
InvTake("Lith_TimeHax2", 1);
}
}
InvTake("Lith_AdrenalineToken", 1);
}
//
// Render
//
void Upgr_Adrenaline_Render(struct player *p, upgrade_t *upgr)
{
if(!p->getUpgrActive(UPGR_HeadsUpDisp)) return;
int timemod = p->ticks % 45;
float amt = UData.charge / (float)CHARGE_MAX;
DrawSpriteXX(UData.readied ? ":HUD:H_D24" : ":HUD:H_D21",
HUDMSG_FADEOUT | HUDMSG_ALPHA,
hid_adrenind_fxS - timemod,
77.1 - timemod,
224.1,
(fixed)(0.3f * amt),
(fixed)(0.6f * amt),
0.8);
}
// EOF