Code snippet:
Code: Select all
if((input & BT_FORWARD)&&(CheckInventory("PlayerStamina")>=5)) // Double-tap forward for sprint.
{
GiveInventory("SprintingPlayer",1);
while((input & BT_FORWARD)&&(CheckInventory("PlayerStamina")>=1))
{
Delay(1);
}
TakeInventory("SprintingPlayer",1);
Delay(const:SD_DASHDELAY);
}
Code: Select all
script "MSX Side Dodge" enter
{
int dashinterval;
int input;
int oldInput;
int taps;
int tics;
int last;
int angle;
int velX;
int velY;
int velZ;
int player = PlayerNumber();
while(GetActorProperty(0,APROP_HEALTH)>0)
{
dashinterval = GetUserCVar(player,"MSXA_DashInterval");
if(dashinterval < 2)
{
Delay(const:1);
continue;
}
input = GetPlayerInput(-1,INPUT_BUTTONS);
oldInput = GetPlayerInput(-1,INPUT_OLDBUTTONS);
for(int i = 0; i < 4; i++)
{
if(IsButtonPressed(input,oldInput,settings[i][0]))
{
taps++;
tics = dashinterval;
if(taps == 2 && last == i)
{
taps = 0;
angle = GetActorAngle(0) + settings[i][1];
if((GetActorZ(0)-GetActorFloorZ(0)>0)&&(checkinventory("PlayerStamina")>=20))// In air, double tap any direction for air-dodge.
{
velX = FixedMul(cos(angle),SD_DASHSPEED);
velY = FixedMul(sin(angle),SD_DASHSPEED);
velZ = -GetActorVelZ(0) + SD_DASHJUMP;
SetActorVelocity(0,velX,velY,velZ,true,false);
ActivatorSound("player/powerevade",127);
TakeInventory("PlayerStamina",20);
FadeRange(20,255,0,0.3,0,0,0,0.0,0.5);
Delay(const:SD_DASHDELAY);
}
else // On ground.
{
if((input & BT_FORWARD)&&(CheckInventory("PlayerStamina")>=5)) // Double-tap forward for sprint.
{
GiveInventory("SprintingPlayer",1);
while((input & BT_FORWARD)&&(CheckInventory("PlayerStamina")>=1))
{
Delay(1);
}
TakeInventory("SprintingPlayer",1);
Delay(const:SD_DASHDELAY);
}
else if((input & BT_BACK||BT_MOVELEFT||BT_MOVERIGHT)&&(CheckInventory("PlayerStamina")>=20))// Double-tap any direction except forward for dodge.
{
velX = FixedMul(cos(angle),SD_DASHSTRONG);
velY = FixedMul(sin(angle),SD_DASHSTRONG);
velZ = 0.0;
SetActorVelocity(0,velX,velY,velZ,true,false);
ActivatorSound("player/powerevade",127);
TakeInventory("PlayerStamina",20);
FadeRange(20,255,0,0.3,0,0,0,0.0,0.5);
Delay(const:SD_DASHDELAY);
}
}
while(GetActorVelZ(0) < 0.0)
{
Delay(const:1);
}
}
last = i;
}
}
if(tics)
{
tics--;
if(!tics)
{
taps = 0;
}
}
Delay(const:1);
}
}