mirror of
https://github.com/OpenMW/openmw.git
synced 2025-06-23 18:41:36 +00:00
Allow garbage integer argument for addSpell (Fixes #1539)
This commit is contained in:
parent
320ab1b2c1
commit
750d8b5589
3 changed files with 14 additions and 10 deletions
|
@ -775,7 +775,7 @@ namespace Compiler
|
||||||
{
|
{
|
||||||
parser.reset();
|
parser.reset();
|
||||||
|
|
||||||
if (optional)
|
if (optional || *iter == 'X')
|
||||||
parser.setOptional (true);
|
parser.setOptional (true);
|
||||||
|
|
||||||
scanner.scan (parser);
|
scanner.scan (parser);
|
||||||
|
@ -783,17 +783,20 @@ namespace Compiler
|
||||||
if (optional && parser.isEmpty())
|
if (optional && parser.isEmpty())
|
||||||
break;
|
break;
|
||||||
|
|
||||||
std::vector<Interpreter::Type_Code> tmp;
|
if (*iter != 'X')
|
||||||
|
{
|
||||||
|
std::vector<Interpreter::Type_Code> tmp;
|
||||||
|
|
||||||
char type = parser.append (tmp);
|
char type = parser.append (tmp);
|
||||||
|
|
||||||
if (type!=*iter)
|
if (type!=*iter)
|
||||||
Generator::convert (tmp, type, *iter);
|
Generator::convert (tmp, type, *iter);
|
||||||
|
|
||||||
stack.push (tmp);
|
stack.push (tmp);
|
||||||
|
|
||||||
if (optional)
|
if (optional)
|
||||||
++optionalCount;
|
++optionalCount;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,8 @@ namespace Compiler
|
||||||
l - Integer <BR>
|
l - Integer <BR>
|
||||||
s - Short <BR>
|
s - Short <BR>
|
||||||
S - String, case preserved <BR>
|
S - String, case preserved <BR>
|
||||||
x - Optional, ignored argument
|
x - Optional, ignored string argument
|
||||||
|
X - Optional, ignored integer argument
|
||||||
**/
|
**/
|
||||||
typedef std::string ScriptArgs;
|
typedef std::string ScriptArgs;
|
||||||
|
|
||||||
|
|
|
@ -405,7 +405,7 @@ namespace Compiler
|
||||||
extensions.registerInstruction ("setpccrimelevel", "f", opcodeSetPCCrimeLevel);
|
extensions.registerInstruction ("setpccrimelevel", "f", opcodeSetPCCrimeLevel);
|
||||||
extensions.registerInstruction ("modpccrimelevel", "f", opcodeModPCCrimeLevel);
|
extensions.registerInstruction ("modpccrimelevel", "f", opcodeModPCCrimeLevel);
|
||||||
|
|
||||||
extensions.registerInstruction ("addspell", "cx", opcodeAddSpell, opcodeAddSpellExplicit);
|
extensions.registerInstruction ("addspell", "cxX", opcodeAddSpell, opcodeAddSpellExplicit);
|
||||||
extensions.registerInstruction ("removespell", "c", opcodeRemoveSpell,
|
extensions.registerInstruction ("removespell", "c", opcodeRemoveSpell,
|
||||||
opcodeRemoveSpellExplicit);
|
opcodeRemoveSpellExplicit);
|
||||||
extensions.registerInstruction ("removespelleffects", "c", opcodeRemoveSpellEffects,
|
extensions.registerInstruction ("removespelleffects", "c", opcodeRemoveSpellEffects,
|
||||||
|
|
Loading…
Reference in a new issue