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
523
src/g_hexen/a_puzzleitems.cpp
Normal file
523
src/g_hexen/a_puzzleitems.cpp
Normal file
|
|
@ -0,0 +1,523 @@
|
|||
#include "info.h"
|
||||
#include "a_pickups.h"
|
||||
#include "a_artifacts.h"
|
||||
#include "gstrings.h"
|
||||
#include "p_local.h"
|
||||
#include "p_enemy.h"
|
||||
#include "s_sound.h"
|
||||
#include "c_console.h"
|
||||
|
||||
enum
|
||||
{
|
||||
puzzskull,
|
||||
puzzgembig,
|
||||
puzzgemred,
|
||||
puzzgemgreen1,
|
||||
puzzgemgreen2,
|
||||
puzzgemblue1,
|
||||
puzzgemblue2,
|
||||
puzzbook1,
|
||||
puzzbook2,
|
||||
puzzskull2,
|
||||
puzzfweapon,
|
||||
puzzcweapon,
|
||||
puzzmweapon,
|
||||
puzzgear1,
|
||||
puzzgear2,
|
||||
puzzgear3,
|
||||
puzzgear4,
|
||||
};
|
||||
|
||||
IMPLEMENT_STATELESS_ACTOR (APuzzleItem, Any, -1, 0)
|
||||
PROP_Flags (MF_SPECIAL|MF_NOGRAVITY)
|
||||
PROP_Inventory_FlagsSet (IF_INVBAR)
|
||||
PROP_Inventory_DefMaxAmount
|
||||
PROP_UseSound ("PuzzleSuccess")
|
||||
PROP_Inventory_PickupSound ("misc/i_pkup")
|
||||
END_DEFAULTS
|
||||
|
||||
void APuzzleItem::Serialize (FArchive &arc)
|
||||
{
|
||||
Super::Serialize (arc);
|
||||
arc << PuzzleItemNumber;
|
||||
}
|
||||
|
||||
bool APuzzleItem::HandlePickup (AInventory *item)
|
||||
{
|
||||
// Can't carry more than 1 of each puzzle item in coop netplay
|
||||
if (multiplayer && !deathmatch && item->GetClass() == GetClass())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return Super::HandlePickup (item);
|
||||
}
|
||||
|
||||
bool APuzzleItem::Use (bool pickup)
|
||||
{
|
||||
if (P_UsePuzzleItem (Owner, PuzzleItemNumber))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
// [RH] Always play the sound if the use fails.
|
||||
S_Sound (Owner, CHAN_VOICE, "*puzzfail", 1, ATTN_IDLE);
|
||||
C_MidPrintBold (GStrings("TXT_USEPUZZLEFAILED"));
|
||||
return false;
|
||||
}
|
||||
|
||||
bool APuzzleItem::ShouldStay ()
|
||||
{
|
||||
return !!multiplayer;
|
||||
}
|
||||
|
||||
// Yorick's Skull -----------------------------------------------------------
|
||||
|
||||
class APuzzSkull : public APuzzleItem
|
||||
{
|
||||
DECLARE_ACTOR (APuzzSkull, APuzzleItem)
|
||||
public:
|
||||
const char *PickupMessage ();
|
||||
};
|
||||
|
||||
FState APuzzSkull::States[] =
|
||||
{
|
||||
S_NORMAL (ASKU, 'A', -1, NULL , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (APuzzSkull, Hexen, 9002, 76)
|
||||
PROP_SpawnState (0)
|
||||
PROP_PuzzleItem_Number (puzzskull)
|
||||
PROP_Inventory_Icon ("ARTISKLL")
|
||||
END_DEFAULTS
|
||||
|
||||
const char *APuzzSkull::PickupMessage ()
|
||||
{
|
||||
return GStrings("TXT_ARTIPUZZSKULL");
|
||||
}
|
||||
|
||||
// Heart of D'Sparil --------------------------------------------------------
|
||||
|
||||
class APuzzGemBig : public APuzzleItem
|
||||
{
|
||||
DECLARE_ACTOR (APuzzGemBig, APuzzleItem)
|
||||
public:
|
||||
const char *PickupMessage ();
|
||||
};
|
||||
|
||||
FState APuzzGemBig::States[] =
|
||||
{
|
||||
S_NORMAL (ABGM, 'A', -1, NULL , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (APuzzGemBig, Hexen, 9003, 77)
|
||||
PROP_SpawnState (0)
|
||||
PROP_PuzzleItem_Number (puzzgembig)
|
||||
PROP_Inventory_Icon ("ARTIBGEM")
|
||||
END_DEFAULTS
|
||||
|
||||
const char *APuzzGemBig::PickupMessage ()
|
||||
{
|
||||
return GStrings("TXT_ARTIPUZZGEMBIG");
|
||||
}
|
||||
|
||||
// Red Gem (Ruby Planet) ----------------------------------------------------
|
||||
|
||||
class APuzzGemRed : public APuzzleItem
|
||||
{
|
||||
DECLARE_ACTOR (APuzzGemRed, APuzzleItem)
|
||||
public:
|
||||
const char *PickupMessage ();
|
||||
};
|
||||
|
||||
FState APuzzGemRed::States[] =
|
||||
{
|
||||
S_NORMAL (AGMR, 'A', -1, NULL , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (APuzzGemRed, Hexen, 9004, 78)
|
||||
PROP_SpawnState (0)
|
||||
PROP_PuzzleItem_Number (puzzgemred)
|
||||
PROP_Inventory_Icon ("ARTIGEMR")
|
||||
END_DEFAULTS
|
||||
|
||||
const char *APuzzGemRed::PickupMessage ()
|
||||
{
|
||||
return GStrings("TXT_ARTIPUZZGEMRED");
|
||||
}
|
||||
|
||||
// Green Gem 1 (Emerald Planet) ---------------------------------------------
|
||||
|
||||
class APuzzGemGreen1 : public APuzzleItem
|
||||
{
|
||||
DECLARE_ACTOR (APuzzGemGreen1, APuzzleItem)
|
||||
public:
|
||||
const char *PickupMessage ();
|
||||
};
|
||||
|
||||
FState APuzzGemGreen1::States[] =
|
||||
{
|
||||
S_NORMAL (AGMG, 'A', -1, NULL , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (APuzzGemGreen1, Hexen, 9005, 79)
|
||||
PROP_SpawnState (0)
|
||||
PROP_PuzzleItem_Number (puzzgemgreen1)
|
||||
PROP_Inventory_Icon ("ARTIGEMG")
|
||||
END_DEFAULTS
|
||||
|
||||
const char *APuzzGemGreen1::PickupMessage ()
|
||||
{
|
||||
return GStrings("TXT_ARTIPUZZGEMGREEN1");
|
||||
}
|
||||
|
||||
// Green Gem 2 (Emerald Planet) ---------------------------------------------
|
||||
|
||||
class APuzzGemGreen2 : public APuzzleItem
|
||||
{
|
||||
DECLARE_ACTOR (APuzzGemGreen2, APuzzleItem)
|
||||
public:
|
||||
const char *PickupMessage ();
|
||||
};
|
||||
|
||||
FState APuzzGemGreen2::States[] =
|
||||
{
|
||||
S_NORMAL (AGG2, 'A', -1, NULL , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (APuzzGemGreen2, Hexen, 9009, 80)
|
||||
PROP_SpawnState (0)
|
||||
PROP_PuzzleItem_Number (puzzgemgreen2)
|
||||
PROP_Inventory_Icon ("ARTIGMG2")
|
||||
END_DEFAULTS
|
||||
|
||||
const char *APuzzGemGreen2::PickupMessage ()
|
||||
{
|
||||
return GStrings("TXT_ARTIPUZZGEMGREEN2");
|
||||
}
|
||||
|
||||
// Blue Gem 1 (Sapphire Planet) ---------------------------------------------
|
||||
|
||||
class APuzzGemBlue1 : public APuzzleItem
|
||||
{
|
||||
DECLARE_ACTOR (APuzzGemBlue1, APuzzleItem)
|
||||
public:
|
||||
const char *PickupMessage ();
|
||||
};
|
||||
|
||||
FState APuzzGemBlue1::States[] =
|
||||
{
|
||||
S_NORMAL (AGMB, 'A', -1, NULL , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (APuzzGemBlue1, Hexen, 9006, 81)
|
||||
PROP_SpawnState (0)
|
||||
PROP_PuzzleItem_Number (puzzgemblue1)
|
||||
PROP_Inventory_Icon ("ARTIGEMB")
|
||||
END_DEFAULTS
|
||||
|
||||
const char *APuzzGemBlue1::PickupMessage ()
|
||||
{
|
||||
return GStrings("TXT_ARTIPUZZGEMBLUE1");
|
||||
}
|
||||
|
||||
// Blue Gem 2 (Sapphire Planet) ---------------------------------------------
|
||||
|
||||
class APuzzGemBlue2 : public APuzzleItem
|
||||
{
|
||||
DECLARE_ACTOR (APuzzGemBlue2, APuzzleItem)
|
||||
public:
|
||||
const char *PickupMessage ();
|
||||
};
|
||||
|
||||
FState APuzzGemBlue2::States[] =
|
||||
{
|
||||
S_NORMAL (AGB2, 'A', -1, NULL , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (APuzzGemBlue2, Hexen, 9010, 82)
|
||||
PROP_SpawnState (0)
|
||||
PROP_PuzzleItem_Number (puzzgemblue2)
|
||||
PROP_Inventory_Icon ("ARTIGMB2")
|
||||
END_DEFAULTS
|
||||
|
||||
const char *APuzzGemBlue2::PickupMessage ()
|
||||
{
|
||||
return GStrings("TXT_ARTIPUZZGEMBLUE2");
|
||||
}
|
||||
|
||||
// Book 1 (Daemon Codex) ----------------------------------------------------
|
||||
|
||||
class APuzzBook1 : public APuzzleItem
|
||||
{
|
||||
DECLARE_ACTOR (APuzzBook1, APuzzleItem)
|
||||
public:
|
||||
const char *PickupMessage ();
|
||||
};
|
||||
|
||||
FState APuzzBook1::States[] =
|
||||
{
|
||||
S_NORMAL (ABK1, 'A', -1, NULL , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (APuzzBook1, Hexen, 9007, 83)
|
||||
PROP_SpawnState (0)
|
||||
PROP_PuzzleItem_Number (puzzbook1)
|
||||
PROP_Inventory_Icon ("ARTIBOK1")
|
||||
END_DEFAULTS
|
||||
|
||||
const char *APuzzBook1::PickupMessage ()
|
||||
{
|
||||
return GStrings("TXT_ARTIPUZZBOOK1");
|
||||
}
|
||||
|
||||
// Book 2 (Liber Oscura) ----------------------------------------------------
|
||||
|
||||
class APuzzBook2 : public APuzzleItem
|
||||
{
|
||||
DECLARE_ACTOR (APuzzBook2, APuzzleItem)
|
||||
public:
|
||||
const char *PickupMessage ();
|
||||
};
|
||||
|
||||
FState APuzzBook2::States[] =
|
||||
{
|
||||
S_NORMAL (ABK2, 'A', -1, NULL , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (APuzzBook2, Hexen, 9008, 84)
|
||||
PROP_SpawnState (0)
|
||||
PROP_PuzzleItem_Number (puzzbook2)
|
||||
PROP_Inventory_Icon ("ARTIBOK2")
|
||||
END_DEFAULTS
|
||||
|
||||
const char *APuzzBook2::PickupMessage ()
|
||||
{
|
||||
return GStrings("TXT_ARTIPUZZBOOK2");
|
||||
}
|
||||
|
||||
// Flame Mask ---------------------------------------------------------------
|
||||
|
||||
class APuzzFlameMask : public APuzzleItem
|
||||
{
|
||||
DECLARE_ACTOR (APuzzFlameMask, APuzzleItem)
|
||||
public:
|
||||
const char *PickupMessage ();
|
||||
};
|
||||
|
||||
FState APuzzFlameMask::States[] =
|
||||
{
|
||||
S_NORMAL (ASK2, 'A', -1, NULL , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (APuzzFlameMask, Hexen, 9014, 0)
|
||||
PROP_SpawnState (0)
|
||||
PROP_PuzzleItem_Number (puzzskull2)
|
||||
PROP_Inventory_Icon ("ARTISKL2")
|
||||
END_DEFAULTS
|
||||
|
||||
const char *APuzzFlameMask::PickupMessage ()
|
||||
{
|
||||
return GStrings("TXT_ARTIPUZZSKULL2");
|
||||
}
|
||||
|
||||
// Fighter Weapon (Glaive Seal) ---------------------------------------------
|
||||
|
||||
class APuzzFWeapon : public APuzzleItem
|
||||
{
|
||||
DECLARE_ACTOR (APuzzFWeapon, APuzzleItem)
|
||||
public:
|
||||
const char *PickupMessage ();
|
||||
};
|
||||
|
||||
FState APuzzFWeapon::States[] =
|
||||
{
|
||||
S_NORMAL (AFWP, 'A', -1, NULL , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (APuzzFWeapon, Hexen, 9015, 0)
|
||||
PROP_SpawnState (0)
|
||||
PROP_PuzzleItem_Number (puzzfweapon)
|
||||
PROP_Inventory_Icon ("ARTIFWEP")
|
||||
END_DEFAULTS
|
||||
|
||||
const char *APuzzFWeapon::PickupMessage ()
|
||||
{
|
||||
return GStrings("TXT_ARTIPUZZFWEAPON");
|
||||
}
|
||||
|
||||
// Cleric Weapon (Holy Relic) -----------------------------------------------
|
||||
|
||||
class APuzzCWeapon : public APuzzleItem
|
||||
{
|
||||
DECLARE_ACTOR (APuzzCWeapon, APuzzleItem)
|
||||
public:
|
||||
const char *PickupMessage ();
|
||||
};
|
||||
|
||||
FState APuzzCWeapon::States[] =
|
||||
{
|
||||
S_NORMAL (ACWP, 'A', -1, NULL , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (APuzzCWeapon, Hexen, 9016, 0)
|
||||
PROP_SpawnState (0)
|
||||
PROP_PuzzleItem_Number (puzzcweapon)
|
||||
PROP_Inventory_Icon ("ARTICWEP")
|
||||
END_DEFAULTS
|
||||
|
||||
const char *APuzzCWeapon::PickupMessage ()
|
||||
{
|
||||
return GStrings("TXT_ARTIPUZZCWEAPON");
|
||||
}
|
||||
|
||||
// Mage Weapon (Sigil of the Magus) -----------------------------------------
|
||||
|
||||
class APuzzMWeapon : public APuzzleItem
|
||||
{
|
||||
DECLARE_ACTOR (APuzzMWeapon, APuzzleItem)
|
||||
public:
|
||||
const char *PickupMessage ();
|
||||
};
|
||||
|
||||
FState APuzzMWeapon::States[] =
|
||||
{
|
||||
S_NORMAL (AMWP, 'A', -1, NULL , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (APuzzMWeapon, Hexen, 9017, 0)
|
||||
PROP_SpawnState (0)
|
||||
PROP_PuzzleItem_Number (puzzmweapon)
|
||||
PROP_Inventory_Icon ("ARTIMWEP")
|
||||
END_DEFAULTS
|
||||
|
||||
const char *APuzzMWeapon::PickupMessage ()
|
||||
{
|
||||
return GStrings("TXT_ARTIPUZZMWEAPON");
|
||||
}
|
||||
|
||||
// Clock Gear 1 -------------------------------------------------------------
|
||||
|
||||
class APuzzGear1 : public APuzzleItem
|
||||
{
|
||||
DECLARE_ACTOR (APuzzGear1, APuzzleItem)
|
||||
public:
|
||||
const char *PickupMessage ();
|
||||
};
|
||||
|
||||
FState APuzzGear1::States[] =
|
||||
{
|
||||
S_BRIGHT (AGER, 'A', 4, NULL , &States[1]),
|
||||
S_BRIGHT (AGER, 'B', 4, NULL , &States[2]),
|
||||
S_BRIGHT (AGER, 'C', 4, NULL , &States[3]),
|
||||
S_BRIGHT (AGER, 'D', 4, NULL , &States[4]),
|
||||
S_BRIGHT (AGER, 'E', 4, NULL , &States[5]),
|
||||
S_BRIGHT (AGER, 'F', 4, NULL , &States[6]),
|
||||
S_BRIGHT (AGER, 'G', 4, NULL , &States[7]),
|
||||
S_BRIGHT (AGER, 'H', 4, NULL , &States[0]),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (APuzzGear1, Hexen, 9018, 0)
|
||||
PROP_SpawnState (0)
|
||||
PROP_PuzzleItem_Number (puzzgear1)
|
||||
PROP_Inventory_Icon ("ARTIGEAR")
|
||||
END_DEFAULTS
|
||||
|
||||
const char *APuzzGear1::PickupMessage ()
|
||||
{
|
||||
return GStrings("TXT_ARTIPUZZGEAR");
|
||||
}
|
||||
|
||||
// Clock Gear 2 -------------------------------------------------------------
|
||||
|
||||
class APuzzGear2 : public APuzzleItem
|
||||
{
|
||||
DECLARE_ACTOR (APuzzGear2, APuzzleItem)
|
||||
public:
|
||||
const char *PickupMessage ();
|
||||
};
|
||||
|
||||
FState APuzzGear2::States[] =
|
||||
{
|
||||
S_BRIGHT (AGR2, 'A', 4, NULL , &States[1]),
|
||||
S_BRIGHT (AGR2, 'B', 4, NULL , &States[2]),
|
||||
S_BRIGHT (AGR2, 'C', 4, NULL , &States[3]),
|
||||
S_BRIGHT (AGR2, 'D', 4, NULL , &States[4]),
|
||||
S_BRIGHT (AGR2, 'E', 4, NULL , &States[5]),
|
||||
S_BRIGHT (AGR2, 'F', 4, NULL , &States[6]),
|
||||
S_BRIGHT (AGR2, 'G', 4, NULL , &States[7]),
|
||||
S_BRIGHT (AGR2, 'H', 4, NULL , &States[0]),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (APuzzGear2, Hexen, 9019, 0)
|
||||
PROP_SpawnState (0)
|
||||
PROP_PuzzleItem_Number (puzzgear2)
|
||||
PROP_Inventory_Icon ("ARTIGER2")
|
||||
END_DEFAULTS
|
||||
|
||||
const char *APuzzGear2::PickupMessage ()
|
||||
{
|
||||
return GStrings("TXT_ARTIPUZZGEAR");
|
||||
}
|
||||
|
||||
// Clock Gear 3 -------------------------------------------------------------
|
||||
|
||||
class APuzzGear3 : public APuzzleItem
|
||||
{
|
||||
DECLARE_ACTOR (APuzzGear3, APuzzleItem)
|
||||
public:
|
||||
const char *PickupMessage ();
|
||||
};
|
||||
|
||||
FState APuzzGear3::States[] =
|
||||
{
|
||||
S_BRIGHT (AGR3, 'A', 4, NULL , &States[1]),
|
||||
S_BRIGHT (AGR3, 'B', 4, NULL , &States[2]),
|
||||
S_BRIGHT (AGR3, 'C', 4, NULL , &States[3]),
|
||||
S_BRIGHT (AGR3, 'D', 4, NULL , &States[4]),
|
||||
S_BRIGHT (AGR3, 'E', 4, NULL , &States[5]),
|
||||
S_BRIGHT (AGR3, 'F', 4, NULL , &States[6]),
|
||||
S_BRIGHT (AGR3, 'G', 4, NULL , &States[7]),
|
||||
S_BRIGHT (AGR3, 'H', 4, NULL , &States[0]),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (APuzzGear3, Hexen, 9020, 0)
|
||||
PROP_SpawnState (0)
|
||||
PROP_PuzzleItem_Number (puzzgear3)
|
||||
PROP_Inventory_Icon ("ARTIGER3")
|
||||
END_DEFAULTS
|
||||
|
||||
const char *APuzzGear3::PickupMessage ()
|
||||
{
|
||||
return GStrings("TXT_ARTIPUZZGEAR");
|
||||
}
|
||||
|
||||
// Clock Gear 4 -------------------------------------------------------------
|
||||
|
||||
class APuzzGear4 : public APuzzleItem
|
||||
{
|
||||
DECLARE_ACTOR (APuzzGear4, APuzzleItem)
|
||||
public:
|
||||
const char *PickupMessage ();
|
||||
};
|
||||
|
||||
FState APuzzGear4::States[] =
|
||||
{
|
||||
S_BRIGHT (AGR4, 'A', 4, NULL , &States[1]),
|
||||
S_BRIGHT (AGR4, 'B', 4, NULL , &States[2]),
|
||||
S_BRIGHT (AGR4, 'C', 4, NULL , &States[3]),
|
||||
S_BRIGHT (AGR4, 'D', 4, NULL , &States[4]),
|
||||
S_BRIGHT (AGR4, 'E', 4, NULL , &States[5]),
|
||||
S_BRIGHT (AGR4, 'F', 4, NULL , &States[6]),
|
||||
S_BRIGHT (AGR4, 'G', 4, NULL , &States[7]),
|
||||
S_BRIGHT (AGR4, 'H', 4, NULL , &States[0]),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (APuzzGear4, Hexen, 9021, 0)
|
||||
PROP_SpawnState (0)
|
||||
PROP_PuzzleItem_Number (puzzgear4)
|
||||
PROP_Inventory_Icon ("ARTIGER4")
|
||||
END_DEFAULTS
|
||||
|
||||
const char *APuzzGear4::PickupMessage ()
|
||||
{
|
||||
return GStrings("TXT_ARTIPUZZGEAR");
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue