2016-10-17 21:27:34 +00:00
|
|
|
// The Doom and Heretic players are not excluded from pickup in case
|
|
|
|
// somebody wants to use these weapons with either of those games.
|
|
|
|
|
2016-11-26 21:25:49 +00:00
|
|
|
class FighterWeapon : Weapon
|
2016-10-17 21:27:34 +00:00
|
|
|
{
|
|
|
|
Default
|
|
|
|
{
|
|
|
|
Weapon.Kickback 150;
|
|
|
|
Inventory.ForbiddenTo "ClericPlayer", "MagePlayer";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-11-26 21:25:49 +00:00
|
|
|
class ClericWeapon : Weapon
|
2016-10-17 21:27:34 +00:00
|
|
|
{
|
|
|
|
Default
|
|
|
|
{
|
|
|
|
Weapon.Kickback 150;
|
|
|
|
Inventory.ForbiddenTo "FighterPlayer", "MagePlayer";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-11-27 23:49:10 +00:00
|
|
|
class MageWeapon : Weapon
|
2016-10-17 21:27:34 +00:00
|
|
|
{
|
|
|
|
Default
|
|
|
|
{
|
|
|
|
Weapon.Kickback 150;
|
|
|
|
Inventory.ForbiddenTo "FighterPlayer", "ClericPlayer";
|
|
|
|
}
|
|
|
|
}
|
2016-11-26 21:25:49 +00:00
|
|
|
|
|
|
|
extend class Actor
|
|
|
|
{
|
|
|
|
//============================================================================
|
|
|
|
//
|
|
|
|
// AdjustPlayerAngle
|
|
|
|
//
|
|
|
|
//============================================================================
|
|
|
|
|
|
|
|
const MAX_ANGLE_ADJUST = (5.);
|
|
|
|
|
|
|
|
void AdjustPlayerAngle(FTranslatedLineTarget t)
|
|
|
|
{
|
2017-02-04 15:44:43 +00:00
|
|
|
double difference = deltaangle(angle, t.angleFromSource);
|
2016-11-26 21:25:49 +00:00
|
|
|
if (abs(difference) > MAX_ANGLE_ADJUST)
|
|
|
|
{
|
|
|
|
if (difference > 0)
|
|
|
|
{
|
|
|
|
angle += MAX_ANGLE_ADJUST;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
angle -= MAX_ANGLE_ADJUST;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
angle = t.angleFromSource;
|
|
|
|
}
|
|
|
|
}
|
2016-11-26 22:05:16 +00:00
|
|
|
|
|
|
|
//============================================================================
|
|
|
|
//
|
|
|
|
// A_DropQuietusPieces
|
|
|
|
//
|
|
|
|
//============================================================================
|
|
|
|
|
|
|
|
void A_DropWeaponPieces(class<Actor> p1, class<Actor> p2, class<Actor> p3)
|
|
|
|
{
|
|
|
|
for (int i = 0, j = 0; i < 3; ++i)
|
|
|
|
{
|
|
|
|
Actor piece = Spawn (j == 0 ? p1 : j == 1 ? p2 : p3, Pos, ALLOW_REPLACE);
|
|
|
|
if (piece != null)
|
|
|
|
{
|
|
|
|
piece.Vel = self.Vel + AngleToVector(i * 120., 1);
|
|
|
|
piece.bDropped = true;
|
2018-12-21 11:32:36 +00:00
|
|
|
j = (j == 0) ? random[PieceDrop](1, 2) : 3-j;
|
2016-11-26 22:05:16 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2018-12-21 11:32:36 +00:00
|
|
|
}
|