mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-05 20:40:30 +00:00
64 lines
No EOL
1.3 KiB
Text
64 lines
No EOL
1.3 KiB
Text
// The Doom and Heretic players are not excluded from pickup in case
|
|
// somebody wants to use these weapons with either of those games.
|
|
|
|
class FighterWeapon : Weapon
|
|
{
|
|
Default
|
|
{
|
|
Weapon.Kickback 150;
|
|
Inventory.ForbiddenTo "ClericPlayer", "MagePlayer";
|
|
}
|
|
}
|
|
|
|
class ClericWeapon : Weapon
|
|
{
|
|
Default
|
|
{
|
|
Weapon.Kickback 150;
|
|
Inventory.ForbiddenTo "FighterPlayer", "MagePlayer";
|
|
}
|
|
}
|
|
|
|
class MageWeapon : Weapon native
|
|
{
|
|
Default
|
|
{
|
|
Weapon.Kickback 150;
|
|
Inventory.ForbiddenTo "FighterPlayer", "ClericPlayer";
|
|
}
|
|
}
|
|
|
|
extend class Actor
|
|
{
|
|
//============================================================================
|
|
//
|
|
// AdjustPlayerAngle
|
|
//
|
|
//============================================================================
|
|
|
|
const MAX_ANGLE_ADJUST = (5.);
|
|
|
|
void AdjustPlayerAngle(FTranslatedLineTarget t)
|
|
{
|
|
// normally this will adjust relative to the actual direction to the target,
|
|
// but with arbitrary portals that cannot be calculated so using the actual
|
|
// attack angle is the only option.
|
|
double atkangle = t.unlinked ? t.angleFromSource : AngleTo(t.linetarget);
|
|
double difference = deltaangle(Angle, atkangle);
|
|
if (abs(difference) > MAX_ANGLE_ADJUST)
|
|
{
|
|
if (difference > 0)
|
|
{
|
|
angle += MAX_ANGLE_ADJUST;
|
|
}
|
|
else
|
|
{
|
|
angle -= MAX_ANGLE_ADJUST;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
angle = t.angleFromSource;
|
|
}
|
|
}
|
|
} |