diff --git a/Engine/source/console/console.h b/Engine/source/console/console.h index 07c57d1b5..b3163e5c5 100644 --- a/Engine/source/console/console.h +++ b/Engine/source/console/console.h @@ -245,16 +245,7 @@ public: if (type == ConsoleValueType::cvSTEntry) return s == StringTable->EmptyString() ? 0 : dAtoi(s); if (type == ConsoleValueType::cvString) - { - if (dStricmp(s, "false") == 0) { - return 0; - } - else if (dStricmp(s, "true") == 0) { - return 1; - } - - return dIsdigit(*s) ? dAtoi(s) : s == StringTable->EmptyString() ? 0 : 1; - } + return dStrcmp(s, "") == 0 ? 0 : dAtoi(s); return dAtoi(getConsoleData()); } diff --git a/Engine/source/console/torquescript/astNodes.cpp b/Engine/source/console/torquescript/astNodes.cpp index 173f9ab53..00e2d2d67 100644 --- a/Engine/source/console/torquescript/astNodes.cpp +++ b/Engine/source/console/torquescript/astNodes.cpp @@ -211,10 +211,10 @@ U32 IfStmtNode::compileStmt(CodeStream& codeStream, U32 ip) integer = false; } - if (testType == TypeReqString) + if (testType == TypeReqString || testType == TypeReqNone) { ip = testExpr->compile(codeStream, ip, TypeReqString); - codeStream.emit(OP_JMPIFNOT); + codeStream.emit(OP_JMPSTRING); } else { diff --git a/Engine/source/console/torquescript/compiledEval.cpp b/Engine/source/console/torquescript/compiledEval.cpp index 337c71354..73a972c96 100644 --- a/Engine/source/console/torquescript/compiledEval.cpp +++ b/Engine/source/console/torquescript/compiledEval.cpp @@ -1163,6 +1163,14 @@ Con::EvalResult CodeBlock::exec(U32 ip, const char* functionName, Namespace* thi } ip = code[ip]; break; + case OP_JMPSTRING: + if (stack[_STK--].getBool()) + { + ip++; + break; + } + ip = code[ip]; + break; case OP_JMPIFNOT_NP: if (stack[_STK].getInt()) { diff --git a/Engine/source/console/torquescript/compiler.h b/Engine/source/console/torquescript/compiler.h index e1cfbbed9..8d271e7fb 100644 --- a/Engine/source/console/torquescript/compiler.h +++ b/Engine/source/console/torquescript/compiler.h @@ -64,6 +64,7 @@ namespace Compiler OP_JMPIFNOT, OP_JMPIFF, OP_JMPIF, + OP_JMPSTRING, OP_JMPIFNOT_NP, OP_JMPIF_NP, // 10 OP_JMP,