// 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; } } }