mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-28 06:53:58 +00:00
- Added 'ininventory item, amount' option to SBARINFO to check for a minimum
amount instead of mere presence in the inventory. - Fixed: Door lock messages were overwritten by remote messages. SVN r1346 (trunk)
This commit is contained in:
parent
aa5bdd0884
commit
35edd15386
4 changed files with 16 additions and 1 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
January 1, 2009 (Changes by Graf Zahl)
|
||||||
|
- Added 'ininventory item, amount' option to SBARINFO to check for a minimum
|
||||||
|
amount instead of mere presence in the inventory.
|
||||||
|
- Fixed: Door lock messages were overwritten by remote messages.
|
||||||
|
|
||||||
January 1, 2009 (Changes by Graf Zahl)
|
January 1, 2009 (Changes by Graf Zahl)
|
||||||
- Fixed: SBARINFO used GetSpecies instead of GetClass to check weapon types.
|
- Fixed: SBARINFO used GetSpecies instead of GetClass to check weapon types.
|
||||||
- Added a few missing NULL pointer checks to SBARINFO code.
|
- Added a few missing NULL pointer checks to SBARINFO code.
|
||||||
|
|
|
@ -291,7 +291,7 @@ static void ParseLock(FScanner &sc)
|
||||||
{
|
{
|
||||||
lock->RemoteMsg = lock->Message;
|
lock->RemoteMsg = lock->Message;
|
||||||
}
|
}
|
||||||
if (!lock->Message.IsEmpty() && lock->RemoteMsg.IsNotEmpty())
|
if (lock->Message.IsEmpty() && lock->RemoteMsg.IsNotEmpty())
|
||||||
{
|
{
|
||||||
lock->Message = lock->RemoteMsg;
|
lock->Message = lock->RemoteMsg;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1356,6 +1356,8 @@ void DSBarInfo::doCommands(SBarInfoBlock &block, int xOffset, int yOffset, int a
|
||||||
{
|
{
|
||||||
AInventory *item1 = CPlayer->mo->FindInventory(PClass::FindClass(cmd.string[0]));
|
AInventory *item1 = CPlayer->mo->FindInventory(PClass::FindClass(cmd.string[0]));
|
||||||
AInventory *item2 = CPlayer->mo->FindInventory(PClass::FindClass(cmd.string[1]));
|
AInventory *item2 = CPlayer->mo->FindInventory(PClass::FindClass(cmd.string[1]));
|
||||||
|
if (item1 != NULL && cmd.special2 > 0 && item1->Amount < cmd.special2) item1 = NULL;
|
||||||
|
if (item2 != NULL && cmd.special3 > 0 && item2->Amount < cmd.special3) item2 = NULL;
|
||||||
if(cmd.flags & SBARINFOEVENT_AND)
|
if(cmd.flags & SBARINFOEVENT_AND)
|
||||||
{
|
{
|
||||||
if((item1 != NULL && item2 != NULL) && !(cmd.flags & SBARINFOEVENT_NOT))
|
if((item1 != NULL && item2 != NULL) && !(cmd.flags & SBARINFOEVENT_NOT))
|
||||||
|
|
|
@ -1292,6 +1292,7 @@ void SBarInfo::ParseSBarInfoBlock(FScanner &sc, SBarInfoBlock &block)
|
||||||
this->ParseSBarInfoBlock(sc, cmd.subBlock);
|
this->ParseSBarInfoBlock(sc, cmd.subBlock);
|
||||||
break;
|
break;
|
||||||
case SBARINFO_ININVENTORY:
|
case SBARINFO_ININVENTORY:
|
||||||
|
cmd.special2 = cmd.special3 = 0;
|
||||||
sc.MustGetToken(TK_Identifier);
|
sc.MustGetToken(TK_Identifier);
|
||||||
if(sc.Compare("not"))
|
if(sc.Compare("not"))
|
||||||
{
|
{
|
||||||
|
@ -1306,6 +1307,13 @@ void SBarInfo::ParseSBarInfoBlock(FScanner &sc, SBarInfoBlock &block)
|
||||||
{
|
{
|
||||||
sc.ScriptError("'%s' is not a type of inventory item.", sc.String);
|
sc.ScriptError("'%s' is not a type of inventory item.", sc.String);
|
||||||
}
|
}
|
||||||
|
if (sc.CheckToken(','))
|
||||||
|
{
|
||||||
|
sc.MustGetNumber();
|
||||||
|
if (i == 0) cmd.special2 = sc.Number;
|
||||||
|
else cmd.special3 = sc.Number;
|
||||||
|
}
|
||||||
|
|
||||||
if(sc.CheckToken(TK_OrOr))
|
if(sc.CheckToken(TK_OrOr))
|
||||||
{
|
{
|
||||||
cmd.flags |= SBARINFOEVENT_OR;
|
cmd.flags |= SBARINFOEVENT_OR;
|
||||||
|
|
Loading…
Reference in a new issue