rott/kf_sources/XGame/Classes/Combo.uc
2026-07-14 20:27:09 +07:00

95 lines
2.0 KiB
Ucode

class Combo extends Info;
// ifndef _RO_
//#exec OBJ LOAD FILE=GameSounds.uax
var localized string ExecMessage;
var float AdrenalineCost;
var float Duration;
var Sound ActivateSound;
var Material Icon;
var class<xEmitter> ActivationEffectClass;
var sound ComboAnnouncement; // OBSOLETE
var name ComboAnnouncementName;
var int keys[4];
var class<SpeciesType> species;
// CK_Up = 1;
// CK_Down = 2;
// CK_Left = 4;
// CK_Right = 8;
function PostBeginPlay()
{
local xPawn P;
P = xPawn(Owner);
if (P == None)
{
Destroy();
return;
}
if (ActivateSound != None)
PlaySound(ActivateSound, SLOT_None, 2*TransientSoundVolume);
if (ActivationEffectClass != None)
Spawn(ActivationEffectClass, P,, P.Location, P.Rotation); // it's responsible for killing itself
StartEffect(P);
}
// called when Adrenaline has been drained empty
function AdrenalineEmpty()
{
Destroy();
}
function Destroyed()
{
local xPawn P;
P = xPawn(Owner);
if (P != None)
{
StopEffect(P);
if (P.CurrentCombo == self)
P.CurrentCombo = None;
}
}
function StartEffect(xPawn P);
function StopEffect(xPawn P);
simulated function Tick(float DeltaTime)
{
local Pawn P;
P = Pawn(Owner);
if ( (P == None) || (P.Controller == None) )
{
Destroy();
return;
}
if ( (P.Controller.PlayerReplicationInfo != None) && (P.Controller.PlayerReplicationInfo.HasFlag != None) )
DeltaTime *= 2;
P.Controller.Adrenaline -= AdrenalineCost*DeltaTime/Duration;
if (P.Controller.Adrenaline <= 0.0)
{
P.Controller.Adrenaline = 0.0;
Destroy();
}
}
defaultproperties
{
Duration=30
AdrenalineCost=100
// ifndef _RO_
//ActivateSound=Sound'GameSounds.ComboActivated'
// Temp commented out - Ramm
//ActivationEffectClass=class'xEffects.ComboActivation'
}