summaryrefslogtreecommitdiffstats
path: root/src/script
diff options
context:
space:
mode:
authorkrzys-h <krzys_h@interia.pl>2013-04-30 21:43:59 +0200
committerkrzys-h <krzys_h@interia.pl>2013-04-30 21:43:59 +0200
commit643153d64dd25cb27fae76c9cc22e9bdaa2e352e (patch)
treef7b252a8595c85efb39fd851c025ae9d4ee84011 /src/script
parenta06397d1af8128b3da45778216bd21db0bf630fc (diff)
downloadcolobot-643153d64dd25cb27fae76c9cc22e9bdaa2e352e.tar.gz
colobot-643153d64dd25cb27fae76c9cc22e9bdaa2e352e.tar.bz2
colobot-643153d64dd25cb27fae76c9cc22e9bdaa2e352e.zip
Added function endmission()
Works only with MissionFile version=3 Created for MissionController, but works on any bot - 1st parameter: * ResultWin - win mission * ResultLost - lost mission * ResultLostQuick - lost mission (Me died) - 2nd parameter: win/lost delay, like in mission file. Doesn't work for ResultLostQuick. Please don't use for cheating =)
Diffstat (limited to 'src/script')
-rw-r--r--src/script/script.cpp31
-rw-r--r--src/script/script.h2
2 files changed, 33 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);
diff --git a/src/script/script.h b/src/script/script.h
index 702138b..956aca6 100644
--- a/src/script/script.h
+++ b/src/script/script.h
@@ -99,6 +99,7 @@ private:
static CBotTypResult cOneFloat(CBotVar* &var, void* user);
static CBotTypResult cTwoFloat(CBotVar* &var, void* user);
static CBotTypResult cString(CBotVar* &var, void* user);
+ static CBotTypResult cEndMission(CBotVar* &var, void* user);
static CBotTypResult cGetObject(CBotVar* &var, void* user);
static CBotTypResult cDestroy(CBotVar* &var, void* user);
static CBotTypResult cSearch(CBotVar* &var, void* user);
@@ -134,6 +135,7 @@ private:
static bool rPow(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rRand(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rAbs(CBotVar* var, CBotVar* result, int& exception, void* user);
+ static bool rEndMission(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rGetObject(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rDestroy(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rSearch(CBotVar* var, CBotVar* result, int& exception, void* user);