mirror of
https://github.com/ZDoom/gzdoom.git
synced 2025-02-17 01:31:25 +00:00
- added Gez's submission for inventory restrictions but changed the added checks to be in the main CallTryPickup function.
SVN r3296 (trunk)
This commit is contained in:
parent
a0bb1c2546
commit
3c47a30249
17 changed files with 158 additions and 199 deletions
|
@ -25,44 +25,6 @@ static FRandom pr_wraithvergedrop ("WraithvergeDrop");
|
||||||
void SpawnSpiritTail (AActor *spirit);
|
void SpawnSpiritTail (AActor *spirit);
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
||||||
class AClericWeaponPiece : public AWeaponPiece
|
|
||||||
{
|
|
||||||
DECLARE_CLASS (AClericWeaponPiece, AWeaponPiece)
|
|
||||||
protected:
|
|
||||||
bool TryPickup (AActor *&toucher);
|
|
||||||
};
|
|
||||||
|
|
||||||
IMPLEMENT_CLASS (AClericWeaponPiece)
|
|
||||||
|
|
||||||
bool AClericWeaponPiece::TryPickup (AActor *&toucher)
|
|
||||||
{
|
|
||||||
if (!toucher->IsKindOf (PClass::FindClass(NAME_MagePlayer)) &&
|
|
||||||
!toucher->IsKindOf (PClass::FindClass(NAME_FighterPlayer)))
|
|
||||||
{
|
|
||||||
return Super::TryPickup(toucher);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{ // Wrong class, but try to pick up for ammo
|
|
||||||
if (ShouldStay())
|
|
||||||
{
|
|
||||||
// Can't pick up weapons for other classes in coop netplay
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
AWeapon * Defaults=(AWeapon*)GetDefaultByType(WeaponClass);
|
|
||||||
|
|
||||||
bool gaveSome = !!(toucher->GiveAmmo (Defaults->AmmoType1, Defaults->AmmoGive1) +
|
|
||||||
toucher->GiveAmmo (Defaults->AmmoType2, Defaults->AmmoGive2));
|
|
||||||
|
|
||||||
if (gaveSome)
|
|
||||||
{
|
|
||||||
GoAwayAndDie ();
|
|
||||||
}
|
|
||||||
return gaveSome;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Cleric's Wraithverge (Holy Symbol?) --------------------------------------
|
// Cleric's Wraithverge (Holy Symbol?) --------------------------------------
|
||||||
|
|
||||||
class ACWeapWraithverge : public AClericWeapon
|
class ACWeapWraithverge : public AClericWeapon
|
||||||
|
|
|
@ -11,87 +11,10 @@
|
||||||
#include "thingdef/thingdef.h"
|
#include "thingdef/thingdef.h"
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Fighter Weapon Base Class ------------------------------------------------
|
|
||||||
|
|
||||||
IMPLEMENT_CLASS (AFighterWeapon)
|
IMPLEMENT_CLASS (AFighterWeapon)
|
||||||
IMPLEMENT_CLASS (AClericWeapon)
|
IMPLEMENT_CLASS (AClericWeapon)
|
||||||
IMPLEMENT_CLASS (AMageWeapon)
|
IMPLEMENT_CLASS (AMageWeapon)
|
||||||
|
|
||||||
bool AFighterWeapon::TryPickup (AActor *&toucher)
|
|
||||||
{
|
|
||||||
// The Doom and Hexen players are not excluded from pickup in case
|
|
||||||
// somebody wants to use these weapons with either of those games.
|
|
||||||
if (toucher->IsKindOf (PClass::FindClass(NAME_ClericPlayer)) ||
|
|
||||||
toucher->IsKindOf (PClass::FindClass(NAME_MagePlayer)))
|
|
||||||
{ // Wrong class, but try to pick up for mana
|
|
||||||
if (ShouldStay())
|
|
||||||
{ // Can't pick up weapons for other classes in coop netplay
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool gaveSome = (NULL != AddAmmo (toucher, AmmoType1, AmmoGive1));
|
|
||||||
gaveSome |= (NULL != AddAmmo (toucher, AmmoType2, AmmoGive2));
|
|
||||||
if (gaveSome)
|
|
||||||
{
|
|
||||||
GoAwayAndDie ();
|
|
||||||
}
|
|
||||||
return gaveSome;
|
|
||||||
}
|
|
||||||
return Super::TryPickup (toucher);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Cleric Weapon Base Class -------------------------------------------------
|
|
||||||
|
|
||||||
bool AClericWeapon::TryPickup (AActor *&toucher)
|
|
||||||
{
|
|
||||||
// The Doom and Hexen players are not excluded from pickup in case
|
|
||||||
// somebody wants to use these weapons with either of those games.
|
|
||||||
if (toucher->IsKindOf (PClass::FindClass(NAME_FighterPlayer)) ||
|
|
||||||
toucher->IsKindOf (PClass::FindClass(NAME_MagePlayer)))
|
|
||||||
{ // Wrong class, but try to pick up for mana
|
|
||||||
if (ShouldStay())
|
|
||||||
{ // Can't pick up weapons for other classes in coop netplay
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool gaveSome = (NULL != AddAmmo (toucher, AmmoType1, AmmoGive1));
|
|
||||||
gaveSome |= (NULL != AddAmmo (toucher, AmmoType2, AmmoGive2));
|
|
||||||
if (gaveSome)
|
|
||||||
{
|
|
||||||
GoAwayAndDie ();
|
|
||||||
}
|
|
||||||
return gaveSome;
|
|
||||||
}
|
|
||||||
return Super::TryPickup (toucher);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Mage Weapon Base Class ---------------------------------------------------
|
|
||||||
|
|
||||||
bool AMageWeapon::TryPickup (AActor *&toucher)
|
|
||||||
{
|
|
||||||
// The Doom and Hexen players are not excluded from pickup in case
|
|
||||||
// somebody wants to use these weapons with either of those games.
|
|
||||||
if (toucher->IsKindOf (PClass::FindClass(NAME_FighterPlayer)) ||
|
|
||||||
toucher->IsKindOf (PClass::FindClass(NAME_ClericPlayer)))
|
|
||||||
{ // Wrong class, but try to pick up for mana
|
|
||||||
if (ShouldStay())
|
|
||||||
{ // Can't pick up weapons for other classes in coop netplay
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool gaveSome = (NULL != AddAmmo (toucher, AmmoType1, AmmoGive1));
|
|
||||||
gaveSome |= (NULL != AddAmmo (toucher, AmmoType2, AmmoGive2));
|
|
||||||
if (gaveSome)
|
|
||||||
{
|
|
||||||
GoAwayAndDie ();
|
|
||||||
}
|
|
||||||
return gaveSome;
|
|
||||||
}
|
|
||||||
return Super::TryPickup (toucher);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static FRandom pr_fpatk ("FPunchAttack");
|
static FRandom pr_fpatk ("FPunchAttack");
|
||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
|
@ -18,43 +18,6 @@ static FRandom pr_fswordflame ("FSwordFlame");
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
||||||
class AFighterWeaponPiece : public AWeaponPiece
|
|
||||||
{
|
|
||||||
DECLARE_CLASS (AFighterWeaponPiece, AWeaponPiece)
|
|
||||||
protected:
|
|
||||||
bool TryPickup (AActor *&toucher);
|
|
||||||
};
|
|
||||||
|
|
||||||
IMPLEMENT_CLASS (AFighterWeaponPiece)
|
|
||||||
|
|
||||||
bool AFighterWeaponPiece::TryPickup (AActor *&toucher)
|
|
||||||
{
|
|
||||||
if (!toucher->IsKindOf (PClass::FindClass(NAME_ClericPlayer)) &&
|
|
||||||
!toucher->IsKindOf (PClass::FindClass(NAME_MagePlayer)))
|
|
||||||
{
|
|
||||||
return Super::TryPickup(toucher);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{ // Wrong class, but try to pick up for ammo
|
|
||||||
if (ShouldStay())
|
|
||||||
{
|
|
||||||
// Can't pick up weapons for other classes in coop netplay
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
AWeapon * Defaults=(AWeapon*)GetDefaultByType(WeaponClass);
|
|
||||||
|
|
||||||
bool gaveSome = !!(toucher->GiveAmmo (Defaults->AmmoType1, Defaults->AmmoGive1) +
|
|
||||||
toucher->GiveAmmo (Defaults->AmmoType2, Defaults->AmmoGive2));
|
|
||||||
|
|
||||||
if (gaveSome)
|
|
||||||
{
|
|
||||||
GoAwayAndDie ();
|
|
||||||
}
|
|
||||||
return gaveSome;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
//
|
//
|
||||||
// A_DropQuietusPieces
|
// A_DropQuietusPieces
|
||||||
|
|
|
@ -15,21 +15,18 @@ class AFighterWeapon : public AWeapon
|
||||||
{
|
{
|
||||||
DECLARE_CLASS (AFighterWeapon, AWeapon);
|
DECLARE_CLASS (AFighterWeapon, AWeapon);
|
||||||
public:
|
public:
|
||||||
bool TryPickup (AActor *&toucher);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class AClericWeapon : public AWeapon
|
class AClericWeapon : public AWeapon
|
||||||
{
|
{
|
||||||
DECLARE_CLASS (AClericWeapon, AWeapon);
|
DECLARE_CLASS (AClericWeapon, AWeapon);
|
||||||
public:
|
public:
|
||||||
bool TryPickup (AActor *&toucher);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class AMageWeapon : public AWeapon
|
class AMageWeapon : public AWeapon
|
||||||
{
|
{
|
||||||
DECLARE_CLASS (AMageWeapon, AWeapon);
|
DECLARE_CLASS (AMageWeapon, AWeapon);
|
||||||
public:
|
public:
|
||||||
bool TryPickup (AActor *&toucher);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //__A_HEXENGLOBAL_H__
|
#endif //__A_HEXENGLOBAL_H__
|
||||||
|
|
|
@ -23,44 +23,6 @@ static AActor *FrontBlockCheck (AActor *mo, int index, void *);
|
||||||
static divline_t BlockCheckLine;
|
static divline_t BlockCheckLine;
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
||||||
class AMageWeaponPiece : public AWeaponPiece
|
|
||||||
{
|
|
||||||
DECLARE_CLASS (AMageWeaponPiece, AWeaponPiece)
|
|
||||||
protected:
|
|
||||||
bool TryPickup (AActor *&toucher);
|
|
||||||
};
|
|
||||||
|
|
||||||
IMPLEMENT_CLASS (AMageWeaponPiece)
|
|
||||||
|
|
||||||
bool AMageWeaponPiece::TryPickup (AActor *&toucher)
|
|
||||||
{
|
|
||||||
if (!toucher->IsKindOf (PClass::FindClass(NAME_ClericPlayer)) &&
|
|
||||||
!toucher->IsKindOf (PClass::FindClass(NAME_FighterPlayer)))
|
|
||||||
{
|
|
||||||
return Super::TryPickup(toucher);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{ // Wrong class, but try to pick up for ammo
|
|
||||||
if (ShouldStay())
|
|
||||||
{
|
|
||||||
// Can't pick up weapons for other classes in coop netplay
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
AWeapon * Defaults=(AWeapon*)GetDefaultByType(WeaponClass);
|
|
||||||
|
|
||||||
bool gaveSome = !!(toucher->GiveAmmo (Defaults->AmmoType1, Defaults->AmmoGive1) +
|
|
||||||
toucher->GiveAmmo (Defaults->AmmoType2, Defaults->AmmoGive2));
|
|
||||||
|
|
||||||
if (gaveSome)
|
|
||||||
{
|
|
||||||
GoAwayAndDie ();
|
|
||||||
}
|
|
||||||
return gaveSome;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// The Mages's Staff (Bloodscourge) -----------------------------------------
|
// The Mages's Staff (Bloodscourge) -----------------------------------------
|
||||||
|
|
||||||
class AMWeapBloodscourge : public AMageWeapon
|
class AMWeapBloodscourge : public AMageWeapon
|
||||||
|
|
|
@ -1266,13 +1266,29 @@ bool AInventory::TryPickup (AActor *&toucher)
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//
|
//
|
||||||
// AInventory :: TryPickup
|
// AInventory :: TryPickupRestricted
|
||||||
|
//
|
||||||
|
//===========================================================================
|
||||||
|
|
||||||
|
bool AInventory::TryPickupRestricted (AActor *&toucher)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//===========================================================================
|
||||||
|
//
|
||||||
|
// AInventory :: CallTryPickup
|
||||||
//
|
//
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
|
||||||
bool AInventory::CallTryPickup (AActor *toucher, AActor **toucher_return)
|
bool AInventory::CallTryPickup (AActor *toucher, AActor **toucher_return)
|
||||||
{
|
{
|
||||||
bool res = TryPickup(toucher);
|
bool res;
|
||||||
|
if (CanPickup(toucher))
|
||||||
|
res = TryPickup(toucher);
|
||||||
|
else
|
||||||
|
res = TryPickupRestricted(toucher); // let an item decide for itself how it will handle this
|
||||||
|
|
||||||
|
|
||||||
// Morph items can change the toucher so we need an option to return this info.
|
// Morph items can change the toucher so we need an option to return this info.
|
||||||
if (toucher_return != NULL) *toucher_return = toucher;
|
if (toucher_return != NULL) *toucher_return = toucher;
|
||||||
|
@ -1288,6 +1304,40 @@ bool AInventory::CallTryPickup (AActor *toucher, AActor **toucher_return)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//===========================================================================
|
||||||
|
//
|
||||||
|
// AInventory :: CanPickup
|
||||||
|
//
|
||||||
|
//===========================================================================
|
||||||
|
|
||||||
|
bool AInventory::CanPickup (AActor *toucher)
|
||||||
|
{
|
||||||
|
if (!toucher)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
FActorInfo *ai = GetClass()->ActorInfo;
|
||||||
|
// Is the item restricted to certain player classes?
|
||||||
|
if (ai->RestrictedToPlayerClass.Size() != 0)
|
||||||
|
{
|
||||||
|
for (unsigned i = 0; i < ai->RestrictedToPlayerClass.Size(); ++i)
|
||||||
|
{
|
||||||
|
if (toucher->IsKindOf(ai->RestrictedToPlayerClass[i]))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// Or is it forbidden to certain other classes?
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (unsigned i = 0; i < ai->ForbiddenToPlayerClass.Size(); ++i)
|
||||||
|
{
|
||||||
|
if (toucher->IsKindOf(ai->ForbiddenToPlayerClass[i]))
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//
|
//
|
||||||
// CCMD printinv
|
// CCMD printinv
|
||||||
|
|
|
@ -198,6 +198,8 @@ public:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual bool TryPickup (AActor *&toucher);
|
virtual bool TryPickup (AActor *&toucher);
|
||||||
|
virtual bool TryPickupRestricted (AActor *&toucher);
|
||||||
|
bool CanPickup(AActor * toucher);
|
||||||
void GiveQuest(AActor * toucher);
|
void GiveQuest(AActor * toucher);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -277,6 +279,7 @@ public:
|
||||||
virtual AInventory *CreateCopy (AActor *other);
|
virtual AInventory *CreateCopy (AActor *other);
|
||||||
virtual AInventory *CreateTossable ();
|
virtual AInventory *CreateTossable ();
|
||||||
virtual bool TryPickup (AActor *&toucher);
|
virtual bool TryPickup (AActor *&toucher);
|
||||||
|
virtual bool TryPickupRestricted (AActor *&toucher);
|
||||||
virtual bool PickupForAmmo (AWeapon *ownedWeapon);
|
virtual bool PickupForAmmo (AWeapon *ownedWeapon);
|
||||||
virtual bool Use (bool pickup);
|
virtual bool Use (bool pickup);
|
||||||
virtual void Destroy();
|
virtual void Destroy();
|
||||||
|
|
|
@ -23,6 +23,34 @@ void AWeaponPiece::Serialize (FArchive &arc)
|
||||||
arc << WeaponClass << FullWeapon << PieceValue;
|
arc << WeaponClass << FullWeapon << PieceValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//==========================================================================
|
||||||
|
//
|
||||||
|
// TryPickupWeaponPiece
|
||||||
|
//
|
||||||
|
//==========================================================================
|
||||||
|
|
||||||
|
bool AWeaponPiece::TryPickupRestricted (AActor *&toucher)
|
||||||
|
{
|
||||||
|
// Wrong class, but try to pick up for ammo
|
||||||
|
if (ShouldStay())
|
||||||
|
{
|
||||||
|
// Can't pick up weapons for other classes in coop netplay
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
AWeapon * Defaults=(AWeapon*)GetDefaultByType(WeaponClass);
|
||||||
|
|
||||||
|
bool gaveSome = !!(toucher->GiveAmmo (Defaults->AmmoType1, Defaults->AmmoGive1) +
|
||||||
|
toucher->GiveAmmo (Defaults->AmmoType2, Defaults->AmmoGive2));
|
||||||
|
|
||||||
|
if (gaveSome)
|
||||||
|
{
|
||||||
|
GoAwayAndDie ();
|
||||||
|
}
|
||||||
|
return gaveSome;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
// TryPickupWeaponPiece
|
// TryPickupWeaponPiece
|
||||||
|
|
|
@ -8,6 +8,7 @@ protected:
|
||||||
public:
|
public:
|
||||||
void Serialize (FArchive &arc);
|
void Serialize (FArchive &arc);
|
||||||
bool TryPickup (AActor *&toucher);
|
bool TryPickup (AActor *&toucher);
|
||||||
|
bool TryPickupRestricted (AActor *&toucher);
|
||||||
bool ShouldStay ();
|
bool ShouldStay ();
|
||||||
virtual const char *PickupMessage ();
|
virtual const char *PickupMessage ();
|
||||||
virtual void PlayPickupSound (AActor *toucher);
|
virtual void PlayPickupSound (AActor *toucher);
|
||||||
|
|
|
@ -72,6 +72,30 @@ void AWeapon::Serialize (FArchive &arc)
|
||||||
//
|
//
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
|
||||||
|
bool AWeapon::TryPickupRestricted (AActor *&toucher)
|
||||||
|
{
|
||||||
|
// Wrong class, but try to pick up for ammo
|
||||||
|
if (ShouldStay())
|
||||||
|
{ // Can't pick up weapons for other classes in coop netplay
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool gaveSome = (NULL != AddAmmo (toucher, AmmoType1, AmmoGive1));
|
||||||
|
gaveSome |= (NULL != AddAmmo (toucher, AmmoType2, AmmoGive2));
|
||||||
|
if (gaveSome)
|
||||||
|
{
|
||||||
|
GoAwayAndDie ();
|
||||||
|
}
|
||||||
|
return gaveSome;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//===========================================================================
|
||||||
|
//
|
||||||
|
// AWeapon :: TryPickup
|
||||||
|
//
|
||||||
|
//===========================================================================
|
||||||
|
|
||||||
bool AWeapon::TryPickup (AActor *&toucher)
|
bool AWeapon::TryPickup (AActor *&toucher)
|
||||||
{
|
{
|
||||||
FState * ReadyState = FindState(NAME_Ready);
|
FState * ReadyState = FindState(NAME_Ready);
|
||||||
|
|
|
@ -211,6 +211,8 @@ struct FActorInfo
|
||||||
PainFlashList *PainFlashes;
|
PainFlashList *PainFlashes;
|
||||||
FPlayerColorSetMap *ColorSets;
|
FPlayerColorSetMap *ColorSets;
|
||||||
TArray<const PClass *> VisibleToPlayerClass;
|
TArray<const PClass *> VisibleToPlayerClass;
|
||||||
|
TArray<const PClass *> RestrictedToPlayerClass;
|
||||||
|
TArray<const PClass *> ForbiddenToPlayerClass;
|
||||||
};
|
};
|
||||||
|
|
||||||
class FDoomEdMap
|
class FDoomEdMap
|
||||||
|
|
|
@ -146,6 +146,11 @@ FActorInfo *CreateNewActor(const FScriptPosition &sc, FName typeName, FName pare
|
||||||
info = ti->ActorInfo;
|
info = ti->ActorInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Copy class lists from parent
|
||||||
|
info->ForbiddenToPlayerClass = parent->ActorInfo->ForbiddenToPlayerClass;
|
||||||
|
info->RestrictedToPlayerClass = parent->ActorInfo->RestrictedToPlayerClass;
|
||||||
|
info->VisibleToPlayerClass = parent->ActorInfo->VisibleToPlayerClass;
|
||||||
|
|
||||||
if (parent->ActorInfo->DamageFactors != NULL)
|
if (parent->ActorInfo->DamageFactors != NULL)
|
||||||
{
|
{
|
||||||
// copy damage factors from parent
|
// copy damage factors from parent
|
||||||
|
|
|
@ -1248,10 +1248,12 @@ DEFINE_PROPERTY(visibletoteam, I, Actor)
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
DEFINE_PROPERTY(visibletoplayerclass, S_s, Actor)
|
DEFINE_PROPERTY(visibletoplayerclass, S_s, Actor)
|
||||||
{
|
{
|
||||||
|
info->VisibleToPlayerClass.Clear();
|
||||||
for(int i = 0;i < PROP_PARM_COUNT;++i)
|
for(int i = 0;i < PROP_PARM_COUNT;++i)
|
||||||
{
|
{
|
||||||
PROP_STRING_PARM(n, i);
|
PROP_STRING_PARM(n, i);
|
||||||
info->VisibleToPlayerClass.Push(FindClassTentative(n, "PlayerPawn"));
|
if (*n != 0)
|
||||||
|
info->VisibleToPlayerClass.Push(FindClassTentative(n, "PlayerPawn"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1261,6 +1263,34 @@ DEFINE_PROPERTY(visibletoplayerclass, S_s, Actor)
|
||||||
//
|
//
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
||||||
|
//==========================================================================
|
||||||
|
//
|
||||||
|
//==========================================================================
|
||||||
|
DEFINE_CLASS_PROPERTY(restrictedto, S_s, Inventory)
|
||||||
|
{
|
||||||
|
info->RestrictedToPlayerClass.Clear();
|
||||||
|
for(int i = 0;i < PROP_PARM_COUNT;++i)
|
||||||
|
{
|
||||||
|
PROP_STRING_PARM(n, i);
|
||||||
|
if (*n != 0)
|
||||||
|
info->RestrictedToPlayerClass.Push(FindClassTentative(n, "PlayerPawn"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//==========================================================================
|
||||||
|
//
|
||||||
|
//==========================================================================
|
||||||
|
DEFINE_CLASS_PROPERTY(forbiddento, S_s, Inventory)
|
||||||
|
{
|
||||||
|
info->ForbiddenToPlayerClass.Clear();
|
||||||
|
for(int i = 0;i < PROP_PARM_COUNT;++i)
|
||||||
|
{
|
||||||
|
PROP_STRING_PARM(n, i);
|
||||||
|
if (*n != 0)
|
||||||
|
info->ForbiddenToPlayerClass.Push(FindClassTentative(n, "PlayerPawn"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
|
@ -1,14 +1,20 @@
|
||||||
|
// The Doom and Heretic players are not excluded from pickup in case
|
||||||
|
// somebody wants to use these weapons with either of those games.
|
||||||
|
|
||||||
ACTOR FighterWeapon : Weapon native
|
ACTOR FighterWeapon : Weapon native
|
||||||
{
|
{
|
||||||
Weapon.Kickback 150
|
Weapon.Kickback 150
|
||||||
|
Inventory.ForbiddenTo ClericPlayer, MagePlayer
|
||||||
}
|
}
|
||||||
|
|
||||||
ACTOR ClericWeapon : Weapon native
|
ACTOR ClericWeapon : Weapon native
|
||||||
{
|
{
|
||||||
Weapon.Kickback 150
|
Weapon.Kickback 150
|
||||||
|
Inventory.ForbiddenTo FighterPlayer, MagePlayer
|
||||||
}
|
}
|
||||||
|
|
||||||
ACTOR MageWeapon : Weapon native
|
ACTOR MageWeapon : Weapon native
|
||||||
{
|
{
|
||||||
Weapon.Kickback 150
|
Weapon.Kickback 150
|
||||||
|
Inventory.ForbiddenTo FighterPlayer, ClericPlayer
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
|
|
||||||
// Cleric Weapon Piece ------------------------------------------------------
|
// Cleric Weapon Piece ------------------------------------------------------
|
||||||
|
|
||||||
ACTOR ClericWeaponPiece : WeaponPiece native
|
ACTOR ClericWeaponPiece : WeaponPiece
|
||||||
{
|
{
|
||||||
Inventory.PickupSound "misc/w_pkup"
|
Inventory.PickupSound "misc/w_pkup"
|
||||||
Inventory.PickupMessage "$TXT_WRAITHVERGE_PIECE"
|
Inventory.PickupMessage "$TXT_WRAITHVERGE_PIECE"
|
||||||
|
Inventory.ForbiddenTo FighterPlayer, MagePlayer
|
||||||
WeaponPiece.Weapon CWeapWraithverge
|
WeaponPiece.Weapon CWeapWraithverge
|
||||||
+FLOATBOB
|
+FLOATBOB
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
|
|
||||||
// Fighter Weapon Piece -----------------------------------------------------
|
// Fighter Weapon Piece -----------------------------------------------------
|
||||||
|
|
||||||
ACTOR FighterWeaponPiece : WeaponPiece native
|
ACTOR FighterWeaponPiece : WeaponPiece
|
||||||
{
|
{
|
||||||
Inventory.PickupSound "misc/w_pkup"
|
Inventory.PickupSound "misc/w_pkup"
|
||||||
Inventory.PickupMessage "$TXT_QUIETUS_PIECE"
|
Inventory.PickupMessage "$TXT_QUIETUS_PIECE"
|
||||||
|
Inventory.ForbiddenTo ClericPlayer, MagePlayer
|
||||||
WeaponPiece.Weapon FWeapQuietus
|
WeaponPiece.Weapon FWeapQuietus
|
||||||
+FLOATBOB
|
+FLOATBOB
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
|
|
||||||
// Mage Weapon Piece --------------------------------------------------------
|
// Mage Weapon Piece --------------------------------------------------------
|
||||||
|
|
||||||
ACTOR MageWeaponPiece : WeaponPiece native
|
ACTOR MageWeaponPiece : WeaponPiece
|
||||||
{
|
{
|
||||||
Inventory.PickupSound "misc/w_pkup"
|
Inventory.PickupSound "misc/w_pkup"
|
||||||
Inventory.PickupMessage "$TXT_BLOODSCOURGE_PIECE"
|
Inventory.PickupMessage "$TXT_BLOODSCOURGE_PIECE"
|
||||||
|
Inventory.ForbiddenTo FighterPlayer, ClericPlayer
|
||||||
WeaponPiece.Weapon MWeapBloodscourge
|
WeaponPiece.Weapon MWeapBloodscourge
|
||||||
+FLOATBOB
|
+FLOATBOB
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue