mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-29 13:00:43 +00:00
- Blood: only trigger a secret if the hint system hasn't registered it.
There's some bugs in Blood that allow a secret to be triggered multiple times. However, since the hint system already knows which secrets were triggered, use that info to avoid retriggers. Fixes #206
This commit is contained in:
parent
6475d772ca
commit
92a72cef8b
3 changed files with 12 additions and 7 deletions
|
@ -400,9 +400,11 @@ void evSend(int nIndex, int nType, int rxId, COMMAND_ID command)
|
||||||
else viewSetSystemMessage("Invalid Total-Secrets command by xobject #%d (object type %d)", nIndex, nType);
|
else viewSetSystemMessage("Invalid Total-Secrets command by xobject #%d (object type %d)", nIndex, nType);
|
||||||
break;
|
break;
|
||||||
case kChannelSecretFound:
|
case kChannelSecretFound:
|
||||||
SECRET_Trigger(nIndex + 65536 * nType);
|
if (SECRET_Trigger(nIndex + 65536 * nType)) // if the hint system knows this secret it's a retrigger - skip that.
|
||||||
|
{
|
||||||
if (command >= kCmdNumberic) levelTriggerSecret(command - kCmdNumberic);
|
if (command >= kCmdNumberic) levelTriggerSecret(command - kCmdNumberic);
|
||||||
else viewSetSystemMessage("Invalid Trigger-Secret command by xobject #%d (object type %d)", nIndex, nType);
|
else viewSetSystemMessage("Invalid Trigger-Secret command by xobject #%d (object type %d)", nIndex, nType);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case kChannelRemoteBomb0:
|
case kChannelRemoteBomb0:
|
||||||
case kChannelRemoteBomb1:
|
case kChannelRemoteBomb1:
|
||||||
|
|
|
@ -127,10 +127,13 @@ void SECRET_SetMapName(const char *filename, const char *_maptitle)
|
||||||
maptitle = _maptitle;
|
maptitle = _maptitle;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SECRET_Trigger(int num)
|
bool SECRET_Trigger(int num)
|
||||||
{
|
{
|
||||||
if (secret_notify) Printf(PRINT_NONOTIFY, "Secret #%d found\n", num);
|
|
||||||
if (discovered_secrets.Find(num) == discovered_secrets.Size())
|
if (discovered_secrets.Find(num) == discovered_secrets.Size())
|
||||||
|
{
|
||||||
discovered_secrets.Push(num);
|
discovered_secrets.Push(num);
|
||||||
|
if (secret_notify) Printf(PRINT_NONOTIFY, "Secret #%d found\n", num);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,5 +4,5 @@
|
||||||
class FSerializer;
|
class FSerializer;
|
||||||
void SECRET_Serialize(FSerializer &arc);
|
void SECRET_Serialize(FSerializer &arc);
|
||||||
void SECRET_SetMapName(const char *filename, const char *maptitle);
|
void SECRET_SetMapName(const char *filename, const char *maptitle);
|
||||||
void SECRET_Trigger(int num);
|
bool SECRET_Trigger(int num);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue