Directory restructuring to make it easier to version projects that don't build zdoom.exe.
SVN r4 (trunk)
This commit is contained in:
commit
cf11cbdb30
821 changed files with 361202 additions and 0 deletions
216
src/g_hexen/a_mana.cpp
Normal file
216
src/g_hexen/a_mana.cpp
Normal file
|
|
@ -0,0 +1,216 @@
|
|||
#include "a_pickups.h"
|
||||
#include "a_hexenglobal.h"
|
||||
#include "p_local.h"
|
||||
#include "gstrings.h"
|
||||
#include "s_sound.h"
|
||||
|
||||
// Blue mana ----------------------------------------------------------------
|
||||
|
||||
FState AMana1::States[] =
|
||||
{
|
||||
S_BRIGHT (MAN1, 'A', 4, NULL , &States[1]),
|
||||
S_BRIGHT (MAN1, 'B', 4, NULL , &States[2]),
|
||||
S_BRIGHT (MAN1, 'C', 4, NULL , &States[3]),
|
||||
S_BRIGHT (MAN1, 'D', 4, NULL , &States[4]),
|
||||
S_BRIGHT (MAN1, 'E', 4, NULL , &States[5]),
|
||||
S_BRIGHT (MAN1, 'F', 4, NULL , &States[6]),
|
||||
S_BRIGHT (MAN1, 'G', 4, NULL , &States[7]),
|
||||
S_BRIGHT (MAN1, 'H', 4, NULL , &States[8]),
|
||||
S_BRIGHT (MAN1, 'I', 4, NULL , &States[0]),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AMana1, Hexen, 122, 11)
|
||||
PROP_Inventory_Amount (15)
|
||||
PROP_Inventory_MaxAmount (MAX_MANA)
|
||||
PROP_Ammo_BackpackAmount (15)
|
||||
PROP_Ammo_BackpackMaxAmount (MAX_MANA)
|
||||
PROP_RadiusFixed (8)
|
||||
PROP_HeightFixed (8)
|
||||
PROP_Flags (MF_SPECIAL)
|
||||
PROP_Flags2 (MF2_FLOATBOB)
|
||||
PROP_SpawnState (0)
|
||||
PROP_Inventory_Icon ("MAN1I0")
|
||||
END_DEFAULTS
|
||||
|
||||
const char *AMana1::PickupMessage ()
|
||||
{
|
||||
return GStrings("TXT_MANA_1");
|
||||
}
|
||||
|
||||
// Green mana ---------------------------------------------------------------
|
||||
|
||||
FState AMana2::States[] =
|
||||
{
|
||||
S_BRIGHT (MAN2, 'A', 4, NULL , &States[1]),
|
||||
S_BRIGHT (MAN2, 'B', 4, NULL , &States[2]),
|
||||
S_BRIGHT (MAN2, 'C', 4, NULL , &States[3]),
|
||||
S_BRIGHT (MAN2, 'D', 4, NULL , &States[4]),
|
||||
S_BRIGHT (MAN2, 'E', 4, NULL , &States[5]),
|
||||
S_BRIGHT (MAN2, 'F', 4, NULL , &States[6]),
|
||||
S_BRIGHT (MAN2, 'G', 4, NULL , &States[7]),
|
||||
S_BRIGHT (MAN2, 'H', 4, NULL , &States[8]),
|
||||
S_BRIGHT (MAN2, 'I', 4, NULL , &States[9]),
|
||||
S_BRIGHT (MAN2, 'J', 4, NULL , &States[10]),
|
||||
S_BRIGHT (MAN2, 'K', 4, NULL , &States[11]),
|
||||
S_BRIGHT (MAN2, 'L', 4, NULL , &States[12]),
|
||||
S_BRIGHT (MAN2, 'M', 4, NULL , &States[13]),
|
||||
S_BRIGHT (MAN2, 'N', 4, NULL , &States[14]),
|
||||
S_BRIGHT (MAN2, 'O', 4, NULL , &States[15]),
|
||||
S_BRIGHT (MAN2, 'P', 4, NULL , &States[0]),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AMana2, Hexen, 124, 12)
|
||||
PROP_Inventory_Amount (15)
|
||||
PROP_Inventory_MaxAmount (MAX_MANA)
|
||||
PROP_Ammo_BackpackAmount (15)
|
||||
PROP_Ammo_BackpackMaxAmount (MAX_MANA)
|
||||
PROP_RadiusFixed (8)
|
||||
PROP_HeightFixed (8)
|
||||
PROP_Flags (MF_SPECIAL)
|
||||
PROP_Flags2 (MF2_FLOATBOB)
|
||||
PROP_SpawnState (0)
|
||||
PROP_Inventory_Icon ("MAN2G0")
|
||||
END_DEFAULTS
|
||||
|
||||
const char *AMana2::PickupMessage ()
|
||||
{
|
||||
return GStrings("TXT_MANA_2");
|
||||
}
|
||||
|
||||
// Combined mana ------------------------------------------------------------
|
||||
|
||||
class AMana3 : public AAmmo
|
||||
{
|
||||
DECLARE_ACTOR (AMana3, AAmmo)
|
||||
public:
|
||||
bool TryPickup (AActor *other)
|
||||
{
|
||||
bool gave;
|
||||
|
||||
gave = GiveMana (other, RUNTIME_CLASS(AMana1));
|
||||
gave |= GiveMana (other, RUNTIME_CLASS(AMana2));
|
||||
if (gave)
|
||||
{
|
||||
GoAwayAndDie ();
|
||||
}
|
||||
return gave;
|
||||
}
|
||||
protected:
|
||||
const char *PickupMessage ()
|
||||
{
|
||||
return GStrings("TXT_MANA_BOTH");
|
||||
}
|
||||
bool GiveMana (AActor *other, const TypeInfo *type)
|
||||
{
|
||||
AInventory *mana = other->FindInventory (type);
|
||||
if (mana == NULL)
|
||||
{
|
||||
mana = static_cast<AInventory *>(Spawn (type, 0, 0, 0));
|
||||
mana->BecomeItem ();
|
||||
mana->Amount = Amount;
|
||||
other->AddInventory (mana);
|
||||
return true;
|
||||
}
|
||||
else if (mana->Amount < mana->MaxAmount)
|
||||
{
|
||||
mana->Amount += Amount;
|
||||
if (mana->Amount > mana->MaxAmount)
|
||||
{
|
||||
mana->Amount = mana->MaxAmount;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
FState AMana3::States[] =
|
||||
{
|
||||
#define S_MANA3 0
|
||||
S_BRIGHT (MAN3, 'A', 4, NULL , &States[S_MANA3+1]),
|
||||
S_BRIGHT (MAN3, 'B', 4, NULL , &States[S_MANA3+2]),
|
||||
S_BRIGHT (MAN3, 'C', 4, NULL , &States[S_MANA3+3]),
|
||||
S_BRIGHT (MAN3, 'D', 4, NULL , &States[S_MANA3+4]),
|
||||
S_BRIGHT (MAN3, 'E', 4, NULL , &States[S_MANA3+5]),
|
||||
S_BRIGHT (MAN3, 'F', 4, NULL , &States[S_MANA3+6]),
|
||||
S_BRIGHT (MAN3, 'G', 4, NULL , &States[S_MANA3+7]),
|
||||
S_BRIGHT (MAN3, 'H', 4, NULL , &States[S_MANA3+8]),
|
||||
S_BRIGHT (MAN3, 'I', 4, NULL , &States[S_MANA3+9]),
|
||||
S_BRIGHT (MAN3, 'J', 4, NULL , &States[S_MANA3+10]),
|
||||
S_BRIGHT (MAN3, 'K', 4, NULL , &States[S_MANA3+11]),
|
||||
S_BRIGHT (MAN3, 'L', 4, NULL , &States[S_MANA3+12]),
|
||||
S_BRIGHT (MAN3, 'M', 4, NULL , &States[S_MANA3+13]),
|
||||
S_BRIGHT (MAN3, 'N', 4, NULL , &States[S_MANA3+14]),
|
||||
S_BRIGHT (MAN3, 'O', 4, NULL , &States[S_MANA3+15]),
|
||||
S_BRIGHT (MAN3, 'P', 4, NULL , &States[S_MANA3+0]),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AMana3, Hexen, 8004, 75)
|
||||
PROP_Inventory_Amount (20)
|
||||
PROP_RadiusFixed (8)
|
||||
PROP_HeightFixed (8)
|
||||
PROP_Flags (MF_SPECIAL)
|
||||
PROP_Flags2 (MF2_FLOATBOB)
|
||||
PROP_SpawnState (S_MANA3)
|
||||
PROP_Inventory_Icon ("MAN3L0")
|
||||
END_DEFAULTS
|
||||
|
||||
// Boost Mana Artifact (Krater of Might) ------------------------------------
|
||||
|
||||
class AArtiBoostMana : public AInventory
|
||||
{
|
||||
DECLARE_ACTOR (AArtiBoostMana, AInventory)
|
||||
public:
|
||||
bool Use (bool pickup);
|
||||
const char *PickupMessage ();
|
||||
protected:
|
||||
bool FillMana (const TypeInfo *type);
|
||||
};
|
||||
|
||||
FState AArtiBoostMana::States[] =
|
||||
{
|
||||
S_BRIGHT (BMAN, 'A', -1, NULL , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AArtiBoostMana, Hexen, 8003, 26)
|
||||
PROP_Flags (MF_SPECIAL)
|
||||
PROP_Flags2 (MF2_FLOATBOB)
|
||||
PROP_SpawnState (0)
|
||||
PROP_Inventory_DefMaxAmount
|
||||
PROP_Inventory_FlagsSet (IF_INVBAR|IF_PICKUPFLASH|IF_FANCYPICKUPSOUND)
|
||||
PROP_Inventory_Icon ("ARTIBMAN")
|
||||
PROP_Inventory_PickupSound ("misc/p_pkup")
|
||||
END_DEFAULTS
|
||||
|
||||
bool AArtiBoostMana::Use (bool pickup)
|
||||
{
|
||||
bool success;
|
||||
|
||||
success = FillMana (RUNTIME_CLASS(AMana1));
|
||||
success |= FillMana (RUNTIME_CLASS(AMana2));
|
||||
return success;
|
||||
}
|
||||
|
||||
bool AArtiBoostMana::FillMana (const TypeInfo *type)
|
||||
{
|
||||
AInventory *mana = Owner->FindInventory (type);
|
||||
if (mana == NULL)
|
||||
{
|
||||
mana = static_cast<AInventory *>(Spawn (type, 0, 0, 0));
|
||||
mana->BecomeItem ();
|
||||
mana->Amount = mana->MaxAmount;
|
||||
Owner->AddInventory (mana);
|
||||
return true;
|
||||
}
|
||||
else if (mana->Amount < mana->MaxAmount)
|
||||
{
|
||||
mana->Amount = mana->MaxAmount;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
const char *AArtiBoostMana::PickupMessage ()
|
||||
{
|
||||
return GStrings("TXT_ARTIBOOSTMANA");
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue