- Fixed: Strife's quest based line actions also work in Deathmatch.

- Fixed: Gravity application was not correct. For actors with no vertical 
  momentum the initial pull is supposed to be twice as strong as when 
  vertical movement already takes place.
- added invquery CCMD like in Strife. Also removed all underscores from the
  tag strings so that they can be printed properly.
- Fixed: Skill baby was missing 'autousehealth' for all games.
- Added a new CVAR: sv_disableautohealth
- Autouse of health items is no longer hardwired to the default item classes. 
  There's a new property HealthPickup.Autouse. 0 means no autouse, 1 a small 
  Raven health item, 2 a large Raven health item and 3 a Strife item.



SVN r1452 (trunk)
This commit is contained in:
Christoph Oelckers 2009-02-28 21:38:20 +00:00
parent 37aa4c2c28
commit 42ac64d964
27 changed files with 254 additions and 150 deletions

View file

@ -1,4 +1,17 @@
February 26, 2009
February 28, 2009 (Changes by Graf Zahl)
- Fixed: Strife's quest based line actions also work in Deathmatch.
- Fixed: Gravity application was not correct. For actors with no vertical
momentum the initial pull is supposed to be twice as strong as when
vertical movement already takes place.
- added invquery CCMD like in Strife. Also removed all underscores from the
tag strings so that they can be printed properly.
- Fixed: Skill baby was missing 'autousehealth' for all games.
- Added a new CVAR: sv_disableautohealth
- Autouse of health items is no longer hardwired to the default item classes.
There's a new property HealthPickup.Autouse. 0 means no autouse, 1 a small
Raven health item, 2 a large Raven health item and 3 a Strife item.
February 26, 2009
- Removed an early-out in wallscan_striped() that is invalid when drawing a
skybox.

View file

@ -153,10 +153,10 @@ static const FBinding DefStrifeBindings[] =
{ "backspace", "invdrop" },
{ "z", "showpop 3" },
{ "k", "showpop 2" },
{ "q", "invquery" },
{ NULL }
// not done
// h - use health
// q - query inventory
};
const char *KeyNames[NUM_KEYS] =

View file

@ -374,6 +374,17 @@ CCMD (invuse)
players[consoleplayer].inventorytics = 0;
}
CCMD(invquery)
{
AInventory *inv = players[consoleplayer].mo->InvSel;
if (inv != NULL)
{
const char *description = inv->GetClass()->Meta.GetMetaString(AMETA_StrifeName);
if (description == NULL) description = inv->GetClass()->TypeName;
Printf(PRINT_HIGH, "%s (%dx)\n", description, inv->Amount);
}
}
CCMD (use)
{
if (argv.argc() > 1 && who != NULL)

View file

@ -1530,6 +1530,18 @@ bool AHealthPickup::Use (bool pickup)
return P_GiveBody (Owner, health);
}
//===========================================================================
//
// AHealthPickup :: Serialize
//
//===========================================================================
void AHealthPickup::Serialize (FArchive &arc)
{
Super::Serialize(arc);
arc << autousemode;
}
// Backpack -----------------------------------------------------------------
//===========================================================================

View file

@ -341,6 +341,9 @@ class AHealthPickup : public AInventory
{
DECLARE_CLASS (AHealthPickup, AInventory)
public:
int autousemode;
virtual void Serialize (FArchive &arc);
virtual AInventory *CreateCopy (AActor *other);
virtual AInventory *CreateTossable ();
virtual bool HandlePickup (AInventory *item);

View file

@ -425,6 +425,7 @@ static menuitem_t ControlsItems[] =
{ control, "Next item", {NULL}, {0.0}, {0.0}, {0.0}, {(value_t *)"invnext"} },
{ control, "Previous item", {NULL}, {0.0}, {0.0}, {0.0}, {(value_t *)"invprev"} },
{ control, "Drop item", {NULL}, {0.0}, {0.0}, {0.0}, {(value_t *)"invdrop"} },
{ control, "Query item", {NULL}, {0.0}, {0.0}, {0.0}, {(value_t *)"invquery"} },
{ control, "Drop weapon", {NULL}, {0.0}, {0.0}, {0.0}, {(value_t *)"weapdrop"} },
{ redtext, " ", {NULL}, {0.0}, {0.0}, {0.0}, {NULL} },
{ whitetext,"Other", {NULL}, {0.0}, {0.0}, {0.0}, {NULL} },

View file

@ -719,72 +719,89 @@ void AActor::Die (AActor *source, AActor *inflictor)
// PROC P_AutoUseHealth
//
//---------------------------------------------------------------------------
static int CountHealth(TArray<AInventory *> &Items)
{
int counted = 0;
for(unsigned i = 0; i < Items.Size(); i++)
{
counted += Items[i]->Amount * Items[i]->health;
}
return counted;
}
static int UseHealthItems(TArray<AInventory *> &Items, int &saveHealth)
{
int saved = 0;
while (Items.Size() > 0 && saveHealth > 0)
{
int maxhealth = 0;
int index = -1;
// Find the largest item in the list
for(unsigned i = 0; i < Items.Size(); i++)
{
if (Items[i]->health > maxhealth)
{
index = i;
maxhealth = Items[i]->Amount;
}
}
// Now apply the health items, using the same logic as Heretic anf Hexen.
int count = (saveHealth + maxhealth-1) / maxhealth;
for(int i = 0; i < count; i++)
{
saved += maxhealth;
saveHealth -= maxhealth;
if (--Items[index]->Amount == 0)
{
if (!(Items[index]->ItemFlags & IF_KEEPDEPLETED))
{
Items[index]->Destroy ();
}
Items.Delete(index);
break;
}
}
}
return saved;
}
void P_AutoUseHealth(player_t *player, int saveHealth)
{
int i;
int count;
const PClass *normalType = PClass::FindClass (NAME_ArtiHealth);
const PClass *superType = PClass::FindClass (NAME_ArtiSuperHealth);
AInventory *normalItem = player->mo->FindInventory (normalType);
AInventory *superItem = player->mo->FindInventory (superType);
int normalAmount, superAmount;
TArray<AInventory *> NormalHealthItems;
TArray<AInventory *> LargeHealthItems;
normalAmount = normalItem != NULL ? normalItem->Amount : 0;
superAmount = superItem != NULL ? superItem->Amount : 0;
for(AInventory *inv = player->mo->Inventory; inv != NULL; inv = inv->Inventory)
{
if (inv->Amount > 0 && inv->IsKindOf(RUNTIME_CLASS(AHealthPickup)))
{
int mode = static_cast<AHealthPickup*>(inv)->autousemode;
if (mode == 0) NormalHealthItems.Push(inv);
else if (mode == 1) LargeHealthItems.Push(inv);
}
}
int normalhealth = CountHealth(NormalHealthItems);
int largehealth = CountHealth(LargeHealthItems);
bool skilluse = !!G_SkillProperty(SKILLP_AutoUseHealth);
if (skilluse && (normalAmount*25 >= saveHealth))
if (skilluse && normalhealth >= saveHealth)
{ // Use quartz flasks
count = (saveHealth+24)/25;
for(i = 0; i < count; i++)
{
player->health += 25;
if (--normalItem->Amount == 0)
{
normalItem->Destroy ();
break;
}
}
player->health += UseHealthItems(NormalHealthItems, saveHealth);
}
else if (superAmount*100 >= saveHealth)
{ // Use mystic urns
count = (saveHealth+99)/100;
for(i = 0; i < count; i++)
{
player->health += 100;
if (--superItem->Amount == 0)
{
superItem->Destroy ();
break;
}
}
else if (largehealth >= saveHealth)
{
// Use mystic urns
player->health += UseHealthItems(LargeHealthItems, saveHealth);
}
else if (skilluse
&& (superAmount*100+normalAmount*25 >= saveHealth))
else if (skilluse && normalhealth + largehealth >= saveHealth)
{ // Use mystic urns and quartz flasks
count = (saveHealth+24)/25;
saveHealth -= count*25;
for(i = 0; i < count; i++)
{
player->health += 25;
if (--normalItem->Amount == 0)
{
normalItem->Destroy ();
break;
}
}
count = (saveHealth+99)/100;
for(i = 0; i < count; i++)
{
player->health += 100;
if (--superItem->Amount == 0)
{
superItem->Destroy ();
break;
}
}
player->health += UseHealthItems(NormalHealthItems, saveHealth);
if (saveHealth > 0) player->health += UseHealthItems(LargeHealthItems, saveHealth);
}
player->mo->health = player->health;
}
@ -794,22 +811,47 @@ void P_AutoUseHealth(player_t *player, int saveHealth)
// P_AutoUseStrifeHealth
//
//============================================================================
CVAR(Bool, sv_disableautohealth, false, CVAR_ARCHIVE|CVAR_SERVERINFO)
void P_AutoUseStrifeHealth (player_t *player)
{
static const ENamedName healthnames[2] = { NAME_MedicalKit, NAME_MedPatch };
TArray<AInventory *> Items;
for (int i = 0; i < 2; ++i)
for(AInventory *inv = player->mo->Inventory; inv != NULL; inv = inv->Inventory)
{
const PClass *type = PClass::FindClass (healthnames[i]);
while (player->health < 50)
if (inv->Amount > 0 && inv->IsKindOf(RUNTIME_CLASS(AHealthPickup)))
{
AInventory *item = player->mo->FindInventory (type);
if (item == NULL)
break;
if (!player->mo->UseInventory (item))
break;
int mode = static_cast<AHealthPickup*>(inv)->autousemode;
if (mode == 3) Items.Push(inv);
}
}
if (!sv_disableautohealth)
{
while (Items.Size() > 0)
{
int maxhealth = 0;
int index = -1;
// Find the largest item in the list
for(unsigned i = 0; i < Items.Size(); i++)
{
if (Items[i]->health > maxhealth)
{
index = i;
maxhealth = Items[i]->Amount;
}
}
while (player->health < 50)
{
if (!player->mo->UseInventory (Items[index]))
break;
}
if (player->health >= 50) return;
// Using all of this item was not enough so delete it and restart with the next best one
Items.Delete(index);
}
}
}

View file

@ -700,7 +700,7 @@ bool AActor::UseInventory (AInventory *item)
return false;
}
// Don't use it if you don't actually have any of it.
if (item->Amount <= 0)
if (item->Amount <= 0 || (item->ObjectFlags & OF_EuthanizeMe))
{
return false;
}
@ -1876,8 +1876,11 @@ void P_ZMovement (AActor *mo)
if (!mo->waterlevel || mo->flags & MF_CORPSE || (mo->player &&
!(mo->player->cmd.ucmd.forwardmove | mo->player->cmd.ucmd.sidemove)))
{
mo->momz -= (fixed_t)(level.gravity * mo->Sector->gravity *
fixed_t grav = (fixed_t)(level.gravity * mo->Sector->gravity *
FIXED2FLOAT(mo->gravity) * 81.92);
if (mo->momz == 0) mo->momz -= grav + grav;
else mo->momz -= grav;
}
if (mo->waterlevel > 1)
{

View file

@ -1244,6 +1244,15 @@ DEFINE_CLASS_PROPERTY(lowmessage, IS, Health)
info->Class->Meta.SetMetaString(AIMETA_LowHealthMessage, str);
}
//==========================================================================
//
//==========================================================================
DEFINE_CLASS_PROPERTY(autouse, I, HealthPickup)
{
PROP_INT_PARM(i, 0);
defaults->autousemode = i;
}
//==========================================================================
//
//==========================================================================

View file

@ -75,7 +75,7 @@
// SAVESIG should match SAVEVER.
// MINSAVEVER is the minimum level snapshot version that can be loaded.
#define MINSAVEVER 1447
#define MINSAVEVER 1452
#if SVN_REVISION_NUMBER < MINSAVEVER
// Never write a savegame with a version lower than what we need

View file

@ -69,7 +69,7 @@ script << 0 >> (int type, int tag)
case 230:
i = GetLineRowOffset() & 31;
if (CheckInventory (QuestItems[i]))
if (CheckInventory (QuestItems[i]) || gametype() == GAME_NET_DEATHMATCH)
{
Door_Open (tag, VDOORSPEED);
clearlinespecial ();
@ -78,7 +78,7 @@ script << 0 >> (int type, int tag)
case 227:
i = GetLineRowOffset() & 31;
if (CheckInventory (QuestItems[i]))
if (CheckInventory (QuestItems[i]) || gametype() == GAME_NET_DEATHMATCH)
{
Door_Close (tag, VDOORSPEED);
clearlinespecial ();
@ -126,7 +126,7 @@ script << 0 >> (int type, int tag)
case 193:
i = GetLineRowOffset() & 31;
if (CheckInventory (QuestItems[i]))
if (CheckInventory (QuestItems[i]) || gametype() == GAME_NET_DEATHMATCH)
{
Floor_LowerToLowest (tag, 8);
clearlinespecial ();
@ -147,7 +147,7 @@ script << 0 >> (int type, int tag)
case 187:
i = GetLineRowOffset() & 31;
if (CheckInventory (QuestItems[i]))
if (CheckInventory (QuestItems[i]) || gametype() == GAME_NET_DEATHMATCH)
{
ClearForceField (tag);
clearlinespecial ();
@ -155,7 +155,7 @@ script << 0 >> (int type, int tag)
break;
case 188:
if (CheckInventory ("QuestItem16"))
if (CheckInventory ("QuestItem16") || gametype() == GAME_NET_DEATHMATCH)
{
Door_Open (tag, VDOORSPEED);
clearlinespecial ();
@ -172,7 +172,7 @@ script << 0 >> (int type, int tag)
case 215:
i = (tag % 100) & 31;
if (CheckInventory (QuestItems[i]))
if (CheckInventory (QuestItems[i]) || gametype() == GAME_NET_DEATHMATCH)
{
SendToCommunicator (tag/100, 0, 1, 0);
clearlinespecial ();
@ -192,7 +192,7 @@ script << 0 >> (int type, int tag)
case 216:
i = GetLineRowOffset() & 31;
if (CheckInventory (QuestItems[i]))
if (CheckInventory (QuestItems[i]) || gametype() == GAME_NET_DEATHMATCH)
{
Door_Raise (tag, VDOORSPEED, VDOORWAIT);
}
@ -205,6 +205,7 @@ script << 0 >> (int type, int tag)
if (gametype() == GAME_NET_DEATHMATCH)
{
Floor_RaiseByValue (tag, 128, 64);
clearlinespecial();
}
else
{
@ -261,7 +262,7 @@ script << 0 >> (int type, int tag)
break;
case 232:
if (!CheckInventory ("QuestItem18"))
if (!CheckInventory ("QuestItem18") && gametype() != GAME_NET_DEATHMATCH)
{
print (s:"You need the Oracle Pass!");
activatorsound ("*usefail", 127);
@ -382,7 +383,7 @@ script << 0 >> (int type, int tag)
break;
case 234:
if (CheckInventory ("QuestItem3"))
if (CheckInventory ("QuestItem3") || gametype() == GAME_NET_DEATHMATCH)
{
SetResultValue (Door_Raise (tag, VDOORSPEED, VDOORWAIT));
}

Binary file not shown.

View file

@ -13,6 +13,7 @@ ACTOR ArtiHealth : HealthPickup 82
Inventory.Icon ARTIPTN2
Inventory.PickupSound "misc/p_pkup"
Inventory.PickupMessage "$TXT_ARTIHEALTH"
HealthPickup.Autouse 1
States
{
Spawn:
@ -35,6 +36,7 @@ ACTOR ArtiSuperHealth : HealthPickup 32
Inventory.Icon ARTISPHL
Inventory.PickupSound "misc/p_pkup"
Inventory.PickupMessage "$TXT_ARTISUPERHEALTH"
HealthPickup.Autouse 2
States
{
Spawn:

View file

@ -29,7 +29,7 @@ ACTOR Gold10 : Coin 138
Game Strife
ConversationID 169, 162, 166
Inventory.Amount 10
Tag "10_gold"
Tag "10 gold"
Inventory.PickupMessage "$TXT_10GOLD"
States
{
@ -46,7 +46,7 @@ ACTOR Gold25 : Coin 139
Game Strife
ConversationID 170, 163, 167
Inventory.Amount 25
Tag "25_gold"
Tag "25 gold"
Inventory.PickupMessage "$TXT_25GOLD"
States
{
@ -63,7 +63,7 @@ ACTOR Gold50 : Coin 140
Game Strife
ConversationID 171, 164, 168
Inventory.Amount 50
Tag "50_gold"
Tag "50 gold"
Inventory.PickupMessage "$TXT_50GOLD"
States
{
@ -79,7 +79,7 @@ ACTOR Gold300 : Coin
{
ConversationID 172, -1, -1
Inventory.Amount 300
Tag "300_gold"
Tag "300 gold"
Inventory.PickupMessage "$TXT_300GOLD"
Inventory.GiveQuest 3
+INVENTORY.ALWAYSPICKUP

View file

@ -58,7 +58,7 @@ ACTOR WeaponSmith : Merchant 116
Game Strife
ConversationID 2
PainSound "smith/pain"
Tag "Weapon_Smith"
Tag "Weapon Smith"
}
@ -71,7 +71,7 @@ ACTOR BarKeep : Merchant 72
ConversationID 3
PainSound "barkeep/pain"
ActiveSound "barkeep/active"
Tag "Bar_Keep"
Tag "Bar Keep"
}

View file

@ -12,7 +12,7 @@ ACTOR RatBuddy 85
MinMissileChance 150
MaxStepHeight 16
MaxDropoffHeight 32
Tag "rat_buddy"
Tag "rat buddy"
SeeSound "rat/sight"
DeathSound "rat/death"
ActiveSound "rat/active"

View file

@ -124,7 +124,7 @@ ACTOR TeleporterBeacon : Inventory 10 native
+DROPPED
+INVENTORY.INVBAR
Inventory.Icon "I_BEAC"
Tag "Teleporter_Beacon"
Tag "Teleporter Beacon"
Inventory.PickupMessage "$TXT_BEACON"
action native A_Beacon ();

View file

@ -10,7 +10,7 @@ ACTOR HEGrenadeRounds : Ammo 152
Ammo.BackpackAmount 6
Ammo.BackpackMaxAmount 60
Inventory.Icon "I_GRN1"
Tag "HE-Grenade_Rounds"
Tag "HE-Grenade Rounds"
Inventory.PickupMessage "$TXT_HEGRENADES"
States
{
@ -32,7 +32,7 @@ ACTOR PhosphorusGrenadeRounds : Ammo 153
Ammo.BackpackAmount 4
Ammo.BackpackMaxAmount 32
Inventory.Icon "I_GRN2"
Tag "Phoshorus-Grenade_Rounds" // "Fire-Grenade_Rounds" in the Teaser
Tag "Phoshorus-Grenade Rounds" // "Fire-Grenade_Rounds" in the Teaser
Inventory.PickupMessage "$TXT_PHGRENADES"
States
{
@ -55,7 +55,7 @@ ACTOR ClipOfBullets : Ammo 2007
Ammo.BackpackAmount 10
Ammo.BackpackMaxAmount 500
Inventory.Icon "I_BLIT"
Tag "clip_of_bullets" // "bullets" in the Teaser
Tag "Clip of Bullets" // "bullets" in the Teaser
Inventory.PickupMessage "$TXT_CLIPOFBULLETS"
States
{
@ -73,7 +73,7 @@ ACTOR BoxOfBullets : ClipOfBullets 2048
SpawnID 139
ConversationID 180, 174, 178
Inventory.Amount 50
Tag "ammo"
Tag "Ammo"
Inventory.PickupMessage "$TXT_BOXOFBULLETS"
States
{
@ -96,7 +96,7 @@ ACTOR MiniMissiles : Ammo 2010
Ammo.BackpackAmount 4
Ammo.BackpackMaxAmount 200
Inventory.Icon "I_ROKT"
Tag "mini_missiles" //"rocket" in the Teaser
Tag "Mini Missiles" //"rocket" in the Teaser
Inventory.PickupMessage "$TXT_MINIMISSILES"
States
{
@ -114,7 +114,7 @@ ACTOR CrateOfMissiles : MiniMissiles 2046
SpawnID 141
ConversationID 182, 176, 180
Inventory.Amount 20
Tag "crate_of_missiles" //"box_of_rockets" in the Teaser
Tag "Crate of Missiles" //"box_of_rockets" in the Teaser
Inventory.PickupMessage "$TXT_CRATEOFMISSILES"
States
{
@ -138,7 +138,7 @@ ACTOR EnergyPod : Ammo 2047
Ammo.BackpackMaxAmount 800
Ammo.DropAmount 20
Inventory.Icon "I_BRY1"
Tag "energy_pod"
Tag "Energy Pod"
Inventory.PickupMessage "$TXT_ENERGYPOD"
States
{
@ -156,7 +156,7 @@ ACTOR EnergyPack : EnergyPod 17
SpawnID 142
ConversationID 184, 178, 182
Inventory.Amount 100
Tag "energy_pack"
Tag "Energy Pack"
Inventory.PickupMessage "$TXT_ENERGYPACK"
States
{
@ -178,7 +178,7 @@ ACTOR PoisonBolts : Ammo 115
Ammo.BackpackAmount 2
Ammo.BackpackMaxAmount 50
Inventory.Icon "I_PQRL"
Tag "poison_bolts" // "poison_arrows" in the Teaser
Tag "Poison Bolts" // "poison_arrows" in the Teaser
Inventory.PickupMessage "$TXT_POISONBOLTS"
States
{
@ -200,7 +200,7 @@ ACTOR ElectricBolts : Ammo 114
Ammo.BackpackAmount 4
Ammo.BackpackMaxAmount 100
Inventory.Icon "I_XQRL"
Tag "electric_bolts" // "electric_arrows" in the Teaser
Tag "Electric Bolts" // "electric_arrows" in the Teaser
Inventory.PickupMessage "$TXT_ELECTRICBOLTS"
States
{
@ -219,7 +219,7 @@ ACTOR AmmoSatchel : BackpackItem 183
ConversationID 187, 181, 184
+FLOORCLIP
Inventory.Icon "I_BKPK"
Tag "Ammo_satchel" // "Back_pack" in the Teaser
Tag "Ammo Satchel" // "Back_pack" in the Teaser
Inventory.PickupMessage "$TXT_AMMOSATCHEL"
States
{

View file

@ -14,7 +14,7 @@ ACTOR MetalArmor : BasicArmorPickup 2019
Inventory.PickupMessage "$TXT_METALARMOR"
Armor.SaveAmount 200
Armor.SavePercent 50
Tag "Metal_Armor"
Tag "Metal Armor"
States
{
Spawn:
@ -38,7 +38,7 @@ ACTOR LeatherArmor : BasicArmorPickup 2018
Inventory.PickupMessage "$TXT_LEATHERARMOR"
Armor.SaveAmount 100
Armor.SavePercent 33.335
Tag "Leather_Armor"
Tag "Leather Armor"
States
{
Spawn:

View file

@ -8,9 +8,10 @@ ACTOR MedPatch : HealthPickup 2011
+FLOORCLIP
+INVENTORY.INVBAR
Inventory.MaxAmount 20
Tag "Med_patch"
Tag "Med patch"
Inventory.Icon "I_STMP"
Inventory.PickupMessage "$TXT_MEDPATCH"
HealthPickup.Autouse 3
States
{
Spawn:
@ -30,9 +31,10 @@ ACTOR MedicalKit : HealthPickup 2012
+FLOORCLIP
+INVENTORY.INVBAR
Inventory.MaxAmount 15
Tag "Medical_kit"
Tag "Medical kit"
Inventory.Icon "I_MDKT"
Inventory.PickupMessage "$TXT_MEDICALKIT"
HealthPickup.Autouse 3
States
{
Spawn:
@ -52,7 +54,7 @@ ACTOR SurgeryKit : HealthPickup 83
+INVENTORY.INVBAR
Health -100
Inventory.MaxAmount 5
Tag "Surgery_Kit" // "full_health" in the Teaser
Tag "Surgery Kit" // "full_health" in the Teaser
Inventory.Icon "I_FULL"
Inventory.PickupMessage "$TXT_SURGERYKIT"
States
@ -92,7 +94,7 @@ ACTOR BeldinsRing : Inventory
+FLOORCLIP
+INVENTORY.INVBAR
ConversationID 173, 165, 169
Tag "ring"
Tag "Ring"
Inventory.Icon "I_RING"
Inventory.GiveQuest 1
Inventory.PickupMessage "$TXT_BELDINSRING"
@ -116,7 +118,7 @@ ACTOR OfferingChalice : Inventory 205
ConversationID 174, 166, 170
Radius 10
Height 16
Tag "Offering_Chalice"
Tag "Offering Chalice"
Inventory.Icon "I_RELC"
Inventory.PickupMessage "$TXT_OFFERINGCHALICE"
Inventory.GiveQuest 2
@ -137,7 +139,7 @@ ACTOR Ear : Inventory
+FLOORCLIP
+INVENTORY.INVBAR
ConversationID 175, 167, 171
Tag "ear"
Tag "Ear"
Inventory.Icon "I_EARS"
Inventory.PickupMessage "$TXT_EAR"
Inventory.GiveQuest 9
@ -162,7 +164,7 @@ ACTOR BrokenPowerCoupling : Inventory 226
+INVENTORY.INVBAR
Radius 16
Height 16
Tag "BROKEN_POWER_COUPLING"
Tag "Broken Power Coupling"
Inventory.MaxAmount 1
Inventory.Icon "I_COUP"
Inventory.PickupMessage "$TXT_BROKENCOUPLING"
@ -188,7 +190,7 @@ ACTOR ShadowArmor : PowerupGiver 2024
+INVENTORY.INVBAR
-INVENTORY.FANCYPICKUPSOUND
RenderStyle Translucent
Tag "Shadow_armor"
Tag "Shadow Armor"
Inventory.MaxAmount 2
Powerup.Type "Shadow"
Inventory.Icon "I_SHD1"
@ -215,7 +217,7 @@ ACTOR EnvironmentalSuit : PowerupGiver 2025
-INVENTORY.FANCYPICKUPSOUND
Inventory.MaxAmount 5
Powerup.Type "Mask"
Tag "Environmental_Suit"
Tag "Environmental Suit"
Inventory.Icon "I_MASK"
Inventory.PickupSound "misc/i_pkup"
Inventory.PickupMessage "$TXT_ENVSUIT"
@ -236,7 +238,7 @@ ACTOR GuardUniform : Inventory 90
ConversationID 162, 158, 161
+FLOORCLIP
+INVENTORY.INVBAR
Tag "Guard_Uniform"
Tag "Guard Uniform"
Inventory.Icon "I_UNIF"
Inventory.PickupMessage "$TXT_GUARDUNIFORM"
Inventory.GiveQuest 15
@ -257,7 +259,7 @@ ACTOR OfficersUniform : Inventory 52
ConversationID 163, 159, 162
+FLOORCLIP
+INVENTORY.INVBAR
Tag "Officer's_Uniform"
Tag "Officer's Uniform"
Inventory.Icon "I_OFIC"
Inventory.PickupMessage "$TXT_OFFICERSUNIFORM"
States
@ -278,7 +280,7 @@ ACTOR FlameThrowerParts : Inventory
+FLOORCLIP
+INVENTORY.INVBAR
Inventory.Icon "I_BFLM"
Tag "flame_thrower_parts"
Tag "Flame Thrower Parts"
Inventory.PickupMessage "$TXT_FTHROWERPARTS"
States
{
@ -298,7 +300,7 @@ ACTOR InterrogatorReport : Inventory
Game Strife
ConversationID 308, 289, 306
+FLOORCLIP
Tag "report"
Tag "Report"
Inventory.PickupMessage "$TXT_REPORT"
States
{
@ -317,7 +319,7 @@ ACTOR Info : Inventory
ConversationID 300, 282, 299
+FLOORCLIP
+INVENTORY.INVBAR
Tag "info"
Tag "Info"
Inventory.Icon "I_TOKN"
Inventory.PickupMessage "$TXT_INFO"
States
@ -387,7 +389,7 @@ ACTOR DegninOre : Inventory 59 native
+FLOORCLIP
+INCOMBAT
+INVENTORY.INVBAR
Tag "Degnin_Ore"
Tag "Degnin Ore"
DeathSound "ore/explode"
Inventory.Icon "I_XPRK"
Inventory.PickupMessage "$TXT_DEGNINORE"
@ -457,7 +459,7 @@ ACTOR Scanner : PowerupGiver 2027 native
+FLOORCLIP
+INVENTORY.FANCYPICKUPSOUND
Inventory.MaxAmount 1
Tag "scanner"
Tag "Scanner"
Inventory.Icon "I_PMUP"
Powerup.Type "Scanner"
Inventory.PickupSound "misc/i_pkup"
@ -477,7 +479,7 @@ ACTOR PrisonPass : Key native
Game Strife
ConversationID 304, 286, 303
Inventory.Icon "I_TOKN"
Tag "Prison_pass"
Tag "Prison Pass"
Inventory.PickupMessage "TXT_PRISONPASS"
States
{
@ -507,7 +509,7 @@ ACTOR DummyStrifeItem : Inventory native
ACTOR RaiseAlarm : DummyStrifeItem native
{
ConversationID 301, 283, 300
Tag "alarm"
Tag "Alarm"
}
// Open door tag 222 --------------------------------------------------------

View file

@ -13,7 +13,7 @@ ACTOR BaseKey : StrifeKey 230
Game Strife
ConversationID 133, 129, 132
Inventory.Icon "I_FUSL"
Tag "Base_Key"
Tag "Base Key"
Inventory.PickupMessage "$TXT_BASEKEY"
States
{
@ -31,7 +31,7 @@ ACTOR GovsKey : StrifeKey
Game Strife
ConversationID 134, 130, 133
Inventory.Icon "I_REBL"
Tag "Govs_Key" // "Rebel_Key" in the Teaser
Tag "Govs Key" // "Rebel_Key" in the Teaser
Inventory.PickupMessage "$TXT_GOVSKEY"
States
{
@ -67,7 +67,7 @@ ACTOR IDBadge : StrifeKey 184
Game Strife
ConversationID 136, 132, 135
Inventory.Icon "I_CRD1"
Tag "ID_Badge"
Tag "ID Badge"
Inventory.PickupMessage "$TXT_IDBADGE"
States
{
@ -85,7 +85,7 @@ ACTOR PrisonKey : StrifeKey
Game Strife
ConversationID 137, 133, 136
Inventory.Icon "I_PRIS"
Tag "Prison_Key"
Tag "Prison Key"
Inventory.GiveQuest 11
Inventory.PickupMessage "$TXT_PRISONKEY"
States
@ -104,7 +104,7 @@ ACTOR SeveredHand : StrifeKey 91
Game Strife
ConversationID 138, 134, 137
Inventory.Icon "I_HAND"
Tag "Severed_Hand"
Tag "Severed Hand"
Inventory.GiveQuest 12
Inventory.PickupMessage "$TXT_SEVEREDHAND"
States
@ -123,7 +123,7 @@ ACTOR Power1Key : StrifeKey
Game Strife
ConversationID 139, 135, 138
Inventory.Icon "I_PWR1"
Tag "Power1_Key"
Tag "Power1 Key"
Inventory.PickupMessage "$TXT_POWER1KEY"
States
{
@ -141,7 +141,7 @@ ACTOR Power2Key : StrifeKey
Game Strife
ConversationID 140, 136, 139
Inventory.Icon "I_PWR2"
Tag "Power2_Key"
Tag "Power2 Key"
Inventory.PickupMessage "$TXT_POWER2KEY"
States
{
@ -159,7 +159,7 @@ ACTOR Power3Key : StrifeKey
Game Strife
ConversationID 141, 137, 140
Inventory.Icon "I_PWR3"
Tag "Power3_Key"
Tag "Power3 Key"
Inventory.PickupMessage "$TXT_POWER3KEY"
States
{
@ -177,7 +177,7 @@ ACTOR GoldKey : StrifeKey 40
Game Strife
ConversationID 142, 138, 141
Inventory.Icon "I_KY1G"
Tag "Gold_Key"
Tag "Gold Key"
Inventory.PickupMessage "$TXT_GOLDKEY"
States
{
@ -195,7 +195,7 @@ ACTOR IDCard : StrifeKey 13
Game Strife
ConversationID 143, 139, 142
Inventory.Icon "I_CRD2"
Tag "ID_Card"
Tag "ID Card"
Inventory.PickupMessage "$TXT_IDCARD"
States
{
@ -213,7 +213,7 @@ ACTOR SilverKey : StrifeKey 38
Game Strife
ConversationID 144, 140, 143
Inventory.Icon "I_KY2S"
Tag "Silver_Key"
Tag "Silver Key"
Inventory.PickupMessage "$TXT_SILVERKEY"
States
{
@ -231,7 +231,7 @@ ACTOR OracleKey : StrifeKey 61
Game Strife
ConversationID 145, 141, 144
Inventory.Icon "I_ORAC"
Tag "Oracle_Key"
Tag "Oracle Key"
Inventory.PickupMessage "$TXT_ORACLEKEY"
States
{
@ -267,7 +267,7 @@ ACTOR OrderKey : StrifeKey 86
Game Strife
ConversationID 147, 143, 146
Inventory.Icon "I_FUBR"
Tag "Order_Key"
Tag "Order Key"
Inventory.PickupMessage "$TXT_ORDERKEY"
States
{
@ -285,7 +285,7 @@ ACTOR WarehouseKey : StrifeKey 166
Game Strife
ConversationID 148, 144, 147
Inventory.Icon "I_WARE"
Tag "Warehouse_Key"
Tag "Warehouse Key"
Inventory.PickupMessage "$TXT_WAREHOUSEKEY"
States
{
@ -303,7 +303,7 @@ ACTOR BrassKey : StrifeKey 39
Game Strife
ConversationID 149, 145, 148
Inventory.Icon "I_KY3B"
Tag "Brass_Key"
Tag "Brass Key"
Inventory.PickupMessage "$TXT_BRASSKEY"
States
{
@ -321,7 +321,7 @@ ACTOR RedCrystalKey : StrifeKey 192
Game Strife
ConversationID 150, 146, 149
Inventory.Icon "I_RCRY"
Tag "Red_Crystal_Key"
Tag "Red Crystal Key"
Inventory.PickupMessage "$TXT_REDCRYSTAL"
States
{
@ -339,7 +339,7 @@ ACTOR BlueCrystalKey : StrifeKey 193
Game Strife
ConversationID 151, 147, 150
Inventory.Icon "I_BCRY"
Tag "Blue_Crystal_Key"
Tag "Blue Crystal Key"
Inventory.PickupMessage "$TXT_BLUECRYSTAL"
States
{
@ -357,7 +357,7 @@ ACTOR ChapelKey : StrifeKey 195
Game Strife
ConversationID 152, 148, 151
Inventory.Icon "I_CHAP"
Tag "Chapel_Key"
Tag "Chapel Key"
Inventory.PickupMessage "$TXT_CHAPELKEY"
States
{
@ -375,7 +375,7 @@ ACTOR CatacombKey : StrifeKey
Game Strife
ConversationID 153, 149, 152
Inventory.Icon "I_TUNL"
Tag "Catacomb_Key" // "Tunnel_Key" in the Teaser
Tag "Catacomb Key" // "Tunnel_Key" in the Teaser
Inventory.GiveQuest 28
Inventory.PickupMessage "$TXT_CATACOMBKEY"
States
@ -394,7 +394,7 @@ ACTOR SecurityKey : StrifeKey
Game Strife
ConversationID 154, 150, 153
Inventory.Icon "I_SECK"
Tag "Security_Key"
Tag "Security Key"
Inventory.PickupMessage "$TXT_SECURITYKEY"
States
{
@ -412,7 +412,7 @@ ACTOR CoreKey : StrifeKey 236
Game Strife
ConversationID 155, 151, 154
Inventory.Icon "I_GOID"
Tag "Core_Key" // "New_Key1" in the Teaser
Tag "Core Key" // "New_Key1" in the Teaser
Inventory.PickupMessage "$TXT_COREKEY"
States
{
@ -430,7 +430,7 @@ ACTOR MaulerKey : StrifeKey 233
Game Strife
ConversationID 156, 152, 155
Inventory.Icon "I_BLTK"
Tag "Mauler_Key" // "New_Key2" in the Teaser
Tag "Mauler Key" // "New_Key2" in the Teaser
Inventory.PickupMessage "$TXT_MAULERKEY"
States
{
@ -448,7 +448,7 @@ ACTOR FactoryKey : StrifeKey 234
Game Strife
ConversationID 157, 153, 156
Inventory.Icon "I_PROC"
Tag "Factory_Key" // "New_Key3" in the Teaser
Tag "Factory Key" // "New_Key3" in the Teaser
Inventory.PickupMessage "$TXT_FACTORYKEY"
States
{
@ -466,7 +466,7 @@ ACTOR MineKey : StrifeKey 235
Game Strife
ConversationID 158, 154, 157
Inventory.Icon "I_MINE" // "New_Key4" in the Teaser
Tag "MINE_KEY"
Tag "Mine_Key"
Inventory.PickupMessage "$TXT_MINEKEY"
States
{
@ -484,7 +484,7 @@ ACTOR NewKey5 : StrifeKey
Game Strife
ConversationID 159, 155, 158
Inventory.Icon "I_BLTK"
Tag "New_Key5"
Tag "New Key5"
Inventory.PickupMessage "$TXT_NEWKEY5"
States
{
@ -505,7 +505,7 @@ ACTOR OraclePass : Inventory
Inventory.Icon "I_OTOK"
Inventory.GiveQuest 18
Inventory.PickupMessage "$TXT_ORACLEPASS"
Tag "Oracle_Pass"
Tag "Oracle Pass"
States
{
Spawn:

View file

@ -159,7 +159,7 @@ ACTOR StrifeCrossbow : StrifeWeapon 2001
Weapon.SisterWeapon "StrifeCrossbow2"
Inventory.PickupMessage "$TXT_STRIFECROSSBOW"
Inventory.Icon "CBOWA0"
Tag "crossbow"
Tag "Crossbow"
action native A_ClearFlash ();
action native A_ShowElectricFlash ();
@ -243,7 +243,7 @@ actor AssaultGun : StrifeWeapon 2002
Weapon.AmmoGive1 20
Weapon.AmmoType1 "ClipOfBullets"
Inventory.Icon "RIFLA0"
Tag "assault_gun"
Tag "Assault Gun"
Inventory.PickupMessage "$TXT_ASSAULTGUN"
States
{
@ -299,7 +299,7 @@ ACTOR MiniMissileLauncher : StrifeWeapon 2003
Weapon.AmmoGive1 8
Weapon.AmmoType1 "MiniMissiles"
Inventory.Icon "MMSLA0"
Tag "mini_missile_launcher"
Tag "Mini Missile Launcher"
Inventory.PickupMessage "$TXT_MMLAUNCHER"
action native A_FireMiniMissile ();
@ -407,7 +407,7 @@ ACTOR FlameThrower : StrifeWeapon 2005
Weapon.ReadySound "weapons/flameidle"
Weapon.AmmoType1 "EnergyPod"
Inventory.Icon "FLAMA0"
Tag "flame_thrower"
Tag "Flame Thrower"
Inventory.PickupMessage "$TXT_FLAMER"
action native A_FireFlamer ();
@ -483,7 +483,7 @@ ACTOR Mauler : StrifeWeapon 2004
Weapon.AmmoType1 "EnergyPod"
Weapon.SisterWeapon "Mauler2"
Inventory.Icon "TRPDA0"
Tag "mauler"
Tag "Mauler"
Inventory.PickupMessage "$TXT_MAULER"
action native A_FireMauler1 ();
@ -749,7 +749,7 @@ ACTOR StrifeGrenadeLauncher : StrifeWeapon 154
Weapon.AmmoType1 "HEGrenadeRounds"
Weapon.SisterWeapon "StrifeGrenadeLauncher2"
Inventory.Icon "GRNDA0"
Tag "Grenade_launcher"
Tag "Grenade Launcher"
Inventory.PickupMessage "$TXT_GLAUNCHER"
action native A_FireGrenade (class<Actor> grenadetype, int angleofs, state flash);

View file

@ -2,6 +2,7 @@
skill baby
{
AutoUseHealth
AmmoFactor = 2
DamageFactor = 0.5
EasyBossBrain

View file

@ -1,5 +1,6 @@
skill baby
{
AutoUseHealth
AmmoFactor = 2
DamageFactor = 0.5
EasyBossBrain

View file

@ -1,6 +1,7 @@
// MAPINFO for Heretic (Shareware and Retail)
skill baby
{
AutoUseHealth
AmmoFactor = 1.5
DoubleAmmoFactor = 1.5
DamageFactor = 0.5

View file

@ -2,6 +2,7 @@
// Most of the MAPINFO is still in hexen.wad.
skill baby
{
AutoUseHealth
AmmoFactor = 1.5
DoubleAmmoFactor = 1.5
DamageFactor = 0.5

View file

@ -1,6 +1,7 @@
// MAPINFO for Strife (full version and teaser)
skill baby
{
AutoUseHealth
AmmoFactor = 2
DamageFactor = 0.5
EasyBossBrain