summaryrefslogtreecommitdiffstats
path: root/src/script/script.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/script/script.cpp')
-rw-r--r--src/script/script.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/script/script.cpp b/src/script/script.cpp
index 9f002a7..a9cebe6 100644
--- a/src/script/script.cpp
+++ b/src/script/script.cpp
@@ -313,6 +313,35 @@ bool CScript::rAbs(CBotVar* var, CBotVar* result, int& exception, void* user)
return true;
}
+// Compilation of the instruction "endmission(result)"
+
+CBotTypResult CScript::cEndMission(CBotVar* &var, void* user)
+{
+ if ( var == 0 ) return CBotTypResult(CBotErrLowParam);
+ if ( var->GetType() > CBotTypDouble ) return CBotTypResult(CBotErrBadNum);
+ var = var->GetNext();
+ if ( var == 0 ) return CBotTypResult(CBotErrLowParam);
+ if ( var->GetType() > CBotTypDouble ) return CBotTypResult(CBotErrBadNum);
+ var = var->GetNext();
+ if ( var != 0 ) return CBotTypResult(CBotErrOverParam);
+ return CBotTypResult(CBotTypFloat);
+}
+
+// Instruction "endmission(result)"
+
+bool CScript::rEndMission(CBotVar* var, CBotVar* result, int& exception, void* user)
+{
+ Error ended;
+ float delay;
+
+ ended = static_cast<Error>(var->GetValFloat());
+ var = var->GetNext();
+
+ delay = var->GetValFloat();
+
+ CRobotMain::GetInstancePointer()->SetEndMission(ended, delay);
+ return true;
+}
// Compilation of the instruction "retobject(rank)".
@@ -2950,6 +2979,8 @@ void CScript::InitFonctions()
CBotProgram::AddFunction("rand", rRand, CScript::cNull);
CBotProgram::AddFunction("abs", rAbs, CScript::cOneFloat);
+ CBotProgram::AddFunction("endmission",rEndMission,CScript::cEndMission);
+
CBotProgram::AddFunction("retobject", rGetObject, CScript::cGetObject);
CBotProgram::AddFunction("destroy", rDestroy, CScript::cDestroy);
CBotProgram::AddFunction("search", rSearch, CScript::cSearch);