diff options
author | erihel <erihel@gmail.com> | 2013-03-30 16:04:58 +0100 |
---|---|---|
committer | erihel <erihel@gmail.com> | 2013-03-30 16:04:58 +0100 |
commit | 5a60a7a21958e2d8cfd33148f575d36e3bbd9ebb (patch) | |
tree | dee4ac380eb5d14d2a123b7b7b63b9cfa83ce9fb /src/script/script.cpp | |
parent | b7b5f002a636154033166a2c828765386c14e5a5 (diff) | |
parent | 845c8e9437e26cf3193d4e3dae2a02f03e17747d (diff) | |
download | colobot-5a60a7a21958e2d8cfd33148f575d36e3bbd9ebb.tar.gz colobot-5a60a7a21958e2d8cfd33148f575d36e3bbd9ebb.tar.bz2 colobot-5a60a7a21958e2d8cfd33148f575d36e3bbd9ebb.zip |
Merge branch 'dev' of github:colobot/colobot into dev
Diffstat (limited to 'src/script/script.cpp')
-rw-r--r-- | src/script/script.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/script/script.cpp b/src/script/script.cpp index d5fe2ce..f09b53a 100644 --- a/src/script/script.cpp +++ b/src/script/script.cpp @@ -349,6 +349,43 @@ bool CScript::rGetObject(CBotVar* var, CBotVar* result, int& exception, void* us return true; } +// Compilation of the instruction "destroy(rank)". + +CBotTypResult CScript::cDestroy(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(CBotErrOverParam); + + return CBotTypResult(CBotTypFloat); +} + +// Instruction "destroy(rank)". + +bool CScript::rDestroy(CBotVar* var, CBotVar* result, int& exception, void* user) +{ + CScript* script = (static_cast<CObject*>(user))->GetRunScript(); + CObject* pObj; + int rank; + + rank = var->GetValInt(); + + CInstanceManager* iMan = CInstanceManager::GetInstancePointer(); + + pObj = static_cast<CObject*>(iMan->SearchInstance(CLASS_OBJECT, rank)); + if ( pObj == 0 ) + { + return true; + } + else + { + pObj->ExploObject(EXPLO_BOUM, 1.0f); + } + return true; +} + + // Compilation of the instruction "search(type, pos)". @@ -2898,6 +2935,7 @@ void CScript::InitFonctions() CBotProgram::AddFunction("abs", rAbs, CScript::cOneFloat); CBotProgram::AddFunction("retobject", rGetObject, CScript::cGetObject); + CBotProgram::AddFunction("destroy", rDestroy, CScript::cDestroy); CBotProgram::AddFunction("search", rSearch, CScript::cSearch); CBotProgram::AddFunction("radar", rRadar, CScript::cRadar); CBotProgram::AddFunction("detect", rDetect, CScript::cDetect); |