mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-26 05:51:20 +00:00
- Added Gez's GetArmorType submission
SVN r1636 (trunk)
This commit is contained in:
parent
9d4c87c18f
commit
8c3a816428
8 changed files with 51 additions and 3 deletions
|
@ -1,4 +1,7 @@
|
||||||
June 2, 2009
|
June 5, 2009 (Changes by Graf Zahl)
|
||||||
|
- Added Gez's GetArmorType submission
|
||||||
|
|
||||||
|
June 2, 2009
|
||||||
- Swapped snes_spc out for the full Game Music Emu library.
|
- Swapped snes_spc out for the full Game Music Emu library.
|
||||||
|
|
||||||
June 2, 2009 (Changes by Graf Zahl)
|
June 2, 2009 (Changes by Graf Zahl)
|
||||||
|
|
|
@ -22,7 +22,7 @@ IMPLEMENT_CLASS (AHexenArmor)
|
||||||
void ABasicArmor::Serialize (FArchive &arc)
|
void ABasicArmor::Serialize (FArchive &arc)
|
||||||
{
|
{
|
||||||
Super::Serialize (arc);
|
Super::Serialize (arc);
|
||||||
arc << SavePercent << BonusCount << MaxAbsorb << MaxFullAbsorb << AbsorbCount;
|
arc << SavePercent << BonusCount << MaxAbsorb << MaxFullAbsorb << AbsorbCount << ArmorType;
|
||||||
}
|
}
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
@ -77,6 +77,7 @@ AInventory *ABasicArmor::CreateCopy (AActor *other)
|
||||||
copy->MaxAmount = MaxAmount;
|
copy->MaxAmount = MaxAmount;
|
||||||
copy->Icon = Icon;
|
copy->Icon = Icon;
|
||||||
copy->BonusCount = BonusCount;
|
copy->BonusCount = BonusCount;
|
||||||
|
copy->ArmorType = ArmorType;
|
||||||
GoAwayAndDie ();
|
GoAwayAndDie ();
|
||||||
return copy;
|
return copy;
|
||||||
}
|
}
|
||||||
|
@ -237,6 +238,7 @@ bool ABasicArmorPickup::Use (bool pickup)
|
||||||
armor->Icon = Icon;
|
armor->Icon = Icon;
|
||||||
armor->MaxAbsorb = MaxAbsorb;
|
armor->MaxAbsorb = MaxAbsorb;
|
||||||
armor->MaxFullAbsorb = MaxFullAbsorb;
|
armor->MaxFullAbsorb = MaxFullAbsorb;
|
||||||
|
armor->ArmorType = this->GetClass()->TypeName;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -320,6 +322,7 @@ bool ABasicArmorBonus::Use (bool pickup)
|
||||||
armor->Icon = Icon;
|
armor->Icon = Icon;
|
||||||
armor->SavePercent = SavePercent;
|
armor->SavePercent = SavePercent;
|
||||||
armor->MaxAbsorb = MaxAbsorb;
|
armor->MaxAbsorb = MaxAbsorb;
|
||||||
|
armor->ArmorType = this->GetClass()->TypeName;
|
||||||
armor->MaxFullAbsorb = MaxFullAbsorb;
|
armor->MaxFullAbsorb = MaxFullAbsorb;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -379,6 +379,7 @@ public:
|
||||||
int MaxAbsorb;
|
int MaxAbsorb;
|
||||||
int MaxFullAbsorb;
|
int MaxFullAbsorb;
|
||||||
int BonusCount;
|
int BonusCount;
|
||||||
|
FNameNoInit ArmorType;
|
||||||
};
|
};
|
||||||
|
|
||||||
// BasicArmorPickup replaces the armor you have.
|
// BasicArmorPickup replaces the armor you have.
|
||||||
|
|
|
@ -101,6 +101,9 @@ xx(ArtiSuperHealth)
|
||||||
xx(MedicalKit)
|
xx(MedicalKit)
|
||||||
xx(MedPatch)
|
xx(MedPatch)
|
||||||
|
|
||||||
|
// Armor
|
||||||
|
xx(BasicArmor)
|
||||||
|
|
||||||
// The Wings of Wrath
|
// The Wings of Wrath
|
||||||
xx(ArtiFly)
|
xx(ArtiFly)
|
||||||
|
|
||||||
|
|
|
@ -72,6 +72,8 @@
|
||||||
#include "m_png.h"
|
#include "m_png.h"
|
||||||
#include "p_setup.h"
|
#include "p_setup.h"
|
||||||
|
|
||||||
|
#include "g_shared/a_pickups.h"
|
||||||
|
|
||||||
extern FILE *Logfile;
|
extern FILE *Logfile;
|
||||||
|
|
||||||
FRandom pr_acs ("ACS");
|
FRandom pr_acs ("ACS");
|
||||||
|
@ -2799,6 +2801,7 @@ enum EACSFunctions
|
||||||
ACSF_GetAirSupply,
|
ACSF_GetAirSupply,
|
||||||
ACSF_SetAirSupply,
|
ACSF_SetAirSupply,
|
||||||
ACSF_SetSkyScrollSpeed,
|
ACSF_SetSkyScrollSpeed,
|
||||||
|
ACSF_GetArmorType,
|
||||||
};
|
};
|
||||||
|
|
||||||
int DLevelScript::SideFromID(int id, int side)
|
int DLevelScript::SideFromID(int id, int side)
|
||||||
|
@ -2942,6 +2945,21 @@ int DLevelScript::CallFunction(int argCount, int funcIndex, SDWORD *args)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case ACSF_GetArmorType:
|
||||||
|
{
|
||||||
|
if (args[1] < 0 || args[1] >= MAXPLAYERS || !playeringame[args[1]])
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FName p(FBehavior::StaticLookupString(args[0]));
|
||||||
|
ABasicArmor * armor = (ABasicArmor *) players[args[1]].mo->FindInventory(NAME_BasicArmor);
|
||||||
|
if (armor->ArmorType == p) return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -524,6 +524,25 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_JumpIfInTargetInventory)
|
||||||
DoJumpIfInventory(self->target, PUSH_PARAMINFO);
|
DoJumpIfInventory(self->target, PUSH_PARAMINFO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//==========================================================================
|
||||||
|
//
|
||||||
|
// State jump function
|
||||||
|
//
|
||||||
|
//==========================================================================
|
||||||
|
DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_JumpIfArmorType)
|
||||||
|
{
|
||||||
|
ACTION_PARAM_START(3);
|
||||||
|
ACTION_PARAM_NAME(Type, 0);
|
||||||
|
ACTION_PARAM_STATE(JumpOffset, 1);
|
||||||
|
|
||||||
|
ACTION_SET_RESULT(false); // Jumps should never set the result for inventory state chains!
|
||||||
|
|
||||||
|
ABasicArmor * armor = (ABasicArmor *) self->FindInventory(NAME_BasicArmor);
|
||||||
|
|
||||||
|
if (armor && armor->ArmorType == Type)
|
||||||
|
ACTION_JUMP(JumpOffset);
|
||||||
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
// Parameterized version of A_Explode
|
// Parameterized version of A_Explode
|
||||||
|
|
|
@ -75,7 +75,7 @@
|
||||||
// SAVESIG should match SAVEVER.
|
// SAVESIG should match SAVEVER.
|
||||||
|
|
||||||
// MINSAVEVER is the minimum level snapshot version that can be loaded.
|
// MINSAVEVER is the minimum level snapshot version that can be loaded.
|
||||||
#define MINSAVEVER 1619
|
#define MINSAVEVER 1636
|
||||||
|
|
||||||
#if SVN_REVISION_NUMBER < MINSAVEVER
|
#if SVN_REVISION_NUMBER < MINSAVEVER
|
||||||
// Never write a savegame with a version lower than what we need
|
// Never write a savegame with a version lower than what we need
|
||||||
|
|
|
@ -175,6 +175,7 @@ ACTOR Actor native //: Thinker
|
||||||
action native A_JumpIfHealthLower(int health, state label);
|
action native A_JumpIfHealthLower(int health, state label);
|
||||||
action native A_JumpIfCloser(float distance, state label);
|
action native A_JumpIfCloser(float distance, state label);
|
||||||
action native A_JumpIfInventory(class<Inventory> itemtype, int itemamount, state label);
|
action native A_JumpIfInventory(class<Inventory> itemtype, int itemamount, state label);
|
||||||
|
action native A_JumpIfArmorType(string Type, state label);
|
||||||
action native A_GiveInventory(class<Inventory> itemtype, int amount = 0);
|
action native A_GiveInventory(class<Inventory> itemtype, int amount = 0);
|
||||||
action native A_TakeInventory(class<Inventory> itemtype, int amount = 0);
|
action native A_TakeInventory(class<Inventory> itemtype, int amount = 0);
|
||||||
action native A_SpawnItem(class<Actor> itemtype, float distance = 0, float zheight = 0, bool useammo = true, bool transfer_translation = false);
|
action native A_SpawnItem(class<Actor> itemtype, float distance = 0, float zheight = 0, bool useammo = true, bool transfer_translation = false);
|
||||||
|
|
Loading…
Reference in a new issue