diff --git a/BlockLua.dll b/BlockLua.dll index e30628e..68f65ae 100644 Binary files a/BlockLua.dll and b/BlockLua.dll differ diff --git a/readme.md b/readme.md index 5f8f28c..3d1e5d7 100644 --- a/readme.md +++ b/readme.md @@ -40,24 +40,36 @@ Lua scripting for Blockland ### Advanced `sched = bl.schedule(timeMs, function, args...)` - Schedule a Lua function to be called later, similar to schedule in Torque `sched:cancel()` - Cancel a previously scheduled timer + +### Raycasts and Searches `hitObject, hitPos, hitNormal = bl.raycast(vector{startPosX,y,z}, vector{endPosX,y,z}, 'objtype'/{'objtypes',...}, ignoreObjects...?)` - Cast a ray in the world over objects of the specified type(s) (possibly excluding some objects), and return the object hit, the position of the hit, and the normal vector to the surface hit. See the Types section for a list of valid object types. `for object in bl.boxSearch(vector{centerX,y,z}, vector{sizeX,y,z}, 'objtype'/{'objtypes',...}) do` - Find all objects in the world of the specified type(s) whose bounding box overlaps with the specified box. See the Types section for a list of valid object types. `for object in bl.radiusSearch(vector{centerX,y,z}, radius, 'objtype'/{'objtypes',...}) do` - Find all objects of the specified type(s) whose bounding box overlaps with the specified sphere. See the Types section for a list of valid object types. -`bl.serverCmd('commandName', function(client, args...) code() end)` - Register a /-command on the server -`bl.clientCmd('commandName', function(args...) code() end)` - Register a client command on the client + +### Server-Client Communication +`bl.addServerCmd('commandName', function(client, args...) code() end)` - Register a /-command on the server +`bl.addClientCmd('commandName', function(args...) code() end)` - Register a client command on the client +`bl.commandToServer('commandName', args...)` - Execute a server command as a client +`bl.commandToClient('commandName', args...)` - As the server, execute a client command on a specific client +`bl.commandToAll('commandName', args...)` - As the server, execute a client command on all clients ### Packages/Hooks -`bl.hook('packageName', 'functionName', 'before'/'after'/'override', function(args...) code() end)` - Hook a Torque function with a Lua function -`bl.unhook('packageName', 'functionName', 'before'/'after'/'override')` - Remove a previously defined hook +`bl.hook('packageName', 'functionName', 'before'/'after', function(args) code() end)` - Hook a Torque function with a Lua function. +`args` is an array containing the arguments provided to the function. If the hook is `before`, these can be modified before being passed to the parent function. +If `args._return` is set to anything other than nil by a `before` hook, the parent function will not be called, and the function will simply return that value. Also in this case, any `after` hook will not be executed. +In an `after` hook, `args._return` is set to the value returned by the parent function, and can be modified. +`bl.unhook('packageName', 'functionName', 'before'/'after')` - Remove a previously defined hook +`bl.unhook('packageName', 'functionName')` - Remove any previously defined hooks on the function within the package +`bl.unhook('packageName')` - Remove any previously defined hooks within the package ### Classes and Types -`bl.bool(thing)` - Convert a Torque boolean (0 or 1) into a Lua boolean. Done automatically for all built-in functions that return bools. -`bl.object(thing)` - Convert a Torque object reference (object ID or name) into a Lua object. Done automatically for all built-in functions that return objects. -`bl.type('varName', 'type')` - Register the type of a Torque global variable, for conversion when accessing from Lua. Valid types are 'bool', 'object', and nil - all other conversion is automatic. -`bl.type('funcName', 'type')` - Register the return type of a Torque function, for conversion when calling from Lua. Valid types are 'bool', 'object', and nil - all other conversion is automatic. Already done for all built-in functions that return objects. +`bl.type('varName', 'type')` - Register the type of a Torque global variable, for conversion when accessing from Lua. Valid types are 'boolean', 'object', and nil (default is nil, which applies automatic conversion). +`bl.type('funcName', 'type')` - Register the return type of a Torque function, for conversion when calling from Lua. Valid types are 'bool', 'object', and nil - all other conversion is automatic. Already done for all default functions. `bl.type('className::funcName', 'type')` - Register the return type of a Torque object method. `bl.class('className')` - Register a Torque class to be used from Lua (Already done for all built-in classes) `bl.class('className', 'parentClassName')` - Same as above, with inheritance +`bl.bool(thing)` - Manually convert a Torque boolean (0 or 1) into a Lua boolean. +`bl.object(thing)` - Manually convert a Torque object reference (object ID or name) into a Lua object. ### File I/O Lua's builtin file I/O is emulated, and is confined to the same directories as TorqueScript file I/O. @@ -95,7 +107,7 @@ Like in standard Lua, modules loaded using `require` are only executed the first When a TorqueScript function is called from Lua or vice-versa, the arguments and return value must be converted between the two languages' type systems. TorqueScript stores no type information; all values in TorqueScript are strings. So it's necessary to make some inferences when converting values between the two languages. ### From TorqueScript to Lua -- Any numeric value becomes a Lua `number`, except as specified with `ts.type`, which may convert a value into a `boolean` or a Torque object container. +- Any numeric value becomes a Lua `number`, except as specified with `bl.type`, which may convert a value into a `boolean` or a Torque object container. - The empty string "" becomes `nil` - A string containing three numbers separated by spaces becomes a `vector` - A string containing six numbers separated by spaces becomes a table of two vectors diff --git a/src/bllua4.cpp b/src/bllua4.cpp index fa75efd..c8955fe 100644 --- a/src/bllua4.cpp +++ b/src/bllua4.cpp @@ -28,8 +28,8 @@ INCLUDE_BIN(bll_fileLuaEnv , "lua-env.lua"); INCLUDE_BIN(bll_fileTsEnv , "ts-env.cs" ); INCLUDE_BIN(bll_fileLuaStd , "util/std.lua"); INCLUDE_BIN(bll_fileLuaVector , "util/vector.lua"); -INCLUDE_BIN(bll_fileLuaLibts , "util/libts.lua"); -INCLUDE_BIN(bll_fileTsLibtsSupport, "util/libts-support.cs"); +INCLUDE_BIN(bll_fileLuaLibts , "util/libts-lua.lua"); +INCLUDE_BIN(bll_fileTsLibts , "util/libts-ts.cs"); INCLUDE_BIN(bll_fileLuaLibbl , "util/libbl.lua" ); INCLUDE_BIN(bll_fileLuaLibblTypes , "util/libbl-types.lua"); INCLUDE_BIN(bll_fileTsLibblSupport, "util/libbl-support.cs"); @@ -68,7 +68,7 @@ bool init() { BLL_LOAD_LUA(gL, bll_fileLuaStd); BLL_LOAD_LUA(gL, bll_fileLuaVector); BLL_LOAD_LUA(gL, bll_fileLuaLibts); - BlEval(bll_fileTsLibtsSupport); + BlEval(bll_fileTsLibts); BLL_LOAD_LUA(gL, bll_fileLuaLibbl); BLL_LOAD_LUA(gL, bll_fileLuaLibblTypes); BlEval(bll_fileTsLibblSupport); diff --git a/src/ts-env.cs b/src/ts-env.cs index cda3a2b..e69de29 100644 --- a/src/ts-env.cs +++ b/src/ts-env.cs @@ -1,26 +0,0 @@ -// Built-in functions -// Eval'd after BLLua4 has loaded the Lua environment and API - -// Public Lua library for TS -function luacall(%func, %a,%b,%c,%d,%e,%f,%g,%h,%i,%j,%k,%l,%m,%n,%o,%p) { - if($_bllua_active) - return _bllua_luacall(%func, %a,%b,%c,%d,%e,%f,%g,%h,%i,%j,%k,%l,%m,%n,%o,%p); -} -function luaexec(%fn) { - if($_bllua_active) - return _bllua_luacall("_bllua_exec", %fn); -} -function luaeval(%code) { - if($_bllua_active) - return _bllua_luacall("_bllua_eval", %code); -} -function luaget(%name) { - if($_bllua_active) - return _bllua_luacall("_bllua_getvar", %name); -} -function luaset(%name, %val) { - if($_bllua_active) - _bllua_luacall("_bllua_setvar", %name, %val); -} - -echo(" Executed bllua-env.cs"); diff --git a/src/util/libbl-support.cs b/src/util/libbl-support.cs index 8acda4a..f2be6e6 100644 --- a/src/util/libbl-support.cs +++ b/src/util/libbl-support.cs @@ -10,7 +10,7 @@ package _bllua_smartEval { if($_bllua_active) { %text = getSubStr(%text, 1, strLen(%text)); echo("Lua ==> " @ %text); - luacall("_bllua_smarteval", %text); + _bllua_luacall("_bllua_smarteval", %text); } else { echo("Lua: not loaded"); } @@ -36,7 +36,8 @@ package _bllua_objectDeletionHook { // note: no parent function exists by default, // and this is loaded before any addons //parent::onRemove(%obj); - if($_bllua_active) luacall("_bllua_objectDeleted", %obj); + // assuming obj is an ID and never a name + if($_bllua_active) _bllua_luacall("_bllua_objectDeleted", %obj); } }; activatePackage(_bllua_objectDeletionHook); diff --git a/src/util/libbl-types.lua b/src/util/libbl-types.lua index 28502e1..26deec1 100644 --- a/src/util/libbl-types.lua +++ b/src/util/libbl-types.lua @@ -1167,7 +1167,7 @@ bl.type('spamAlert', 'boolean') -- Auto-generated from dumpConsoleClasses() and dumpConsoleFunctions() bl.type('AIConnection::onConnect:1', 'object') -bl.type('AIPlayer.canSetIFLs', 'bool') +bl.type('AIPlayer.canSetIFLs', 'boolean') bl.type('AIPlayer::InstantRespawn:1', 'object') bl.type('AIPlayer::clearAim:1', 'object') bl.type('AIPlayer::clearMoveDestination:1', 'object') @@ -1184,30 +1184,30 @@ bl.type('AIPlayer::getMoveObject:1', 'object') bl.type('AIPlayer::getMoveTolerance:1', 'object') bl.type('AIPlayer::getPlayerName:1', 'object') bl.type('AIPlayer::hMeleeAttack:1', 'object') -bl.type('AIPlayer::isCrouching', 'bool') +bl.type('AIPlayer::isCrouching', 'boolean') bl.type('AIPlayer::isCrouching:1', 'object') -bl.type('AIPlayer::isJetting', 'bool') +bl.type('AIPlayer::isJetting', 'boolean') bl.type('AIPlayer::isJetting:1', 'object') -bl.type('AIPlayer::isJumping', 'bool') +bl.type('AIPlayer::isJumping', 'boolean') bl.type('AIPlayer::isJumping:1', 'object') bl.type('AIPlayer::setAimLocation:1', 'object') bl.type('AIPlayer::setAimObject:1', 'object') bl.type('AIPlayer::setAimObject:2', 'object') bl.type('AIPlayer::setAimVector:1', 'object') bl.type('AIPlayer::setCrouching:1', 'object') -bl.type('AIPlayer::setCrouching:2', 'bool') +bl.type('AIPlayer::setCrouching:2', 'boolean') bl.type('AIPlayer::setEngageDistance:1', 'object') bl.type('AIPlayer::setHeadAngle:1', 'object') bl.type('AIPlayer::setHeadAngleSpeed:1', 'object') bl.type('AIPlayer::setJetting:1', 'object') -bl.type('AIPlayer::setJetting:2', 'bool') +bl.type('AIPlayer::setJetting:2', 'boolean') bl.type('AIPlayer::setJumping:1', 'object') -bl.type('AIPlayer::setJumping:2', 'bool') +bl.type('AIPlayer::setJumping:2', 'boolean') bl.type('AIPlayer::setMoveDestination:1', 'object') bl.type('AIPlayer::setMoveObject:1', 'object') bl.type('AIPlayer::setMoveObject:2', 'object') bl.type('AIPlayer::setMoveSlowdown:1', 'object') -bl.type('AIPlayer::setMoveSlowdown:2', 'bool') +bl.type('AIPlayer::setMoveSlowdown:2', 'boolean') bl.type('AIPlayer::setMoveSpeed:1', 'object') bl.type('AIPlayer::setMoveTolerance:1', 'object') bl.type('AIPlayer::setMoveX:1', 'object') @@ -1223,7 +1223,7 @@ bl.type('ActionMap::getCommand:1', 'object') bl.type('ActionMap::getDeadZone:1', 'object') bl.type('ActionMap::getNumBinds:1', 'object') bl.type('ActionMap::getScale:1', 'object') -bl.type('ActionMap::isInverted', 'bool') +bl.type('ActionMap::isInverted', 'boolean') bl.type('ActionMap::isInverted:1', 'object') bl.type('ActionMap::pop:1', 'object') bl.type('ActionMap::popUnbind:1', 'object') @@ -1243,20 +1243,20 @@ bl.type('AkimboGunImage::onMount:1', 'object') bl.type('AkimboGunImage::onUnMount:1', 'object') bl.type('AllPrintRatios_List::onSelect:1', 'object') bl.type('Armor::onCollision:1', 'object') -bl.type('AudioDescription.is3D', 'bool') -bl.type('AudioDescription.isLooping', 'bool') -bl.type('AudioDescription.isStreaming', 'bool') -bl.type('AudioEmitter.enableVisualFeedback', 'bool') -bl.type('AudioEmitter.is3D', 'bool') -bl.type('AudioEmitter.isLooping', 'bool') -bl.type('AudioEmitter.outsideAmbient', 'bool') -bl.type('AudioEmitter.useProfileDescription', 'bool') +bl.type('AudioDescription.is3D', 'boolean') +bl.type('AudioDescription.isLooping', 'boolean') +bl.type('AudioDescription.isStreaming', 'boolean') +bl.type('AudioEmitter.enableVisualFeedback', 'boolean') +bl.type('AudioEmitter.is3D', 'boolean') +bl.type('AudioEmitter.isLooping', 'boolean') +bl.type('AudioEmitter.outsideAmbient', 'boolean') +bl.type('AudioEmitter.useProfileDescription', 'boolean') bl.type('AudioEmitter::getProfileId:1', 'object') bl.type('AudioEmitter::update:1', 'object') -bl.type('AudioEnvironment.useRoom', 'bool') -bl.type('AudioProfile.preload', 'bool') +bl.type('AudioEnvironment.useRoom', 'boolean') +bl.type('AudioProfile.preload', 'boolean') bl.type('AudioProfile::getDescription:1', 'object') -bl.type('AudioProfile::isStereo', 'bool') +bl.type('AudioProfile::isStereo', 'boolean') bl.type('AudioProfile::isStereo:1', 'object') bl.type('AvatarGui::onWake:1', 'object') bl.type('BSD_TabBoxShifter::checkButtonVisibility:1', 'object') @@ -1267,7 +1267,7 @@ bl.type('BSD_category::onRemove:1', 'object') bl.type('BanList::add:1', 'object') bl.type('BanList::addAbsolute:1', 'object') bl.type('BanList::export:1', 'object') -bl.type('BanList::isBanned', 'bool') +bl.type('BanList::isBanned', 'boolean') bl.type('BanList::isBanned:1', 'object') bl.type('BanList::removeBan:1', 'object') bl.type('BanManagerSO::RemoveBanBL_ID:1', 'object') @@ -1306,8 +1306,8 @@ bl.type('BuildMacroSO::pushEvent:1', 'object') bl.type('CSVReader::hasNextValue:1', 'object') bl.type('CSVReader::readNextValue:1', 'object') bl.type('CSVReader::setDataString:1', 'object') -bl.type('Camera.canSetIFLs', 'bool') -bl.type('Camera::getCameraRelativeMovement', 'bool') +bl.type('Camera.canSetIFLs', 'boolean') +bl.type('Camera::getCameraRelativeMovement', 'boolean') bl.type('Camera::getCameraRelativeMovement:1', 'object') bl.type('Camera::getControlObject', 'object') bl.type('Camera::getControlObject:1', 'object') @@ -1316,13 +1316,13 @@ bl.type('Camera::getOrbitObject', 'object') bl.type('Camera::getOrbitObject:1', 'object') bl.type('Camera::getOrbitPoint:1', 'object') bl.type('Camera::getPosition:1', 'object') -bl.type('Camera::isOrbitMode', 'bool') +bl.type('Camera::isOrbitMode', 'boolean') bl.type('Camera::isOrbitMode:1', 'object') bl.type('Camera::onAdd:1', 'object') bl.type('Camera::setCameraRelativeMovement:1', 'object') -bl.type('Camera::setCameraRelativeMovement:2', 'bool') +bl.type('Camera::setCameraRelativeMovement:2', 'boolean') bl.type('Camera::setClampMode:1', 'object') -bl.type('Camera::setControlObject', 'bool') +bl.type('Camera::setControlObject', 'boolean') bl.type('Camera::setControlObject:1', 'object') bl.type('Camera::setControlObject:2', 'object') bl.type('Camera::setDollyMode:1', 'object') @@ -1330,16 +1330,16 @@ bl.type('Camera::setFlyMode:1', 'object') bl.type('Camera::setMode:1', 'object') bl.type('Camera::setOrbitMode:1', 'object') bl.type('Camera::setOrbitMode:2', 'object') -bl.type('Camera::setOrbitMode:7', 'bool') +bl.type('Camera::setOrbitMode:7', 'boolean') bl.type('Camera::setOrbitPointMode:1', 'object') -bl.type('CameraData.emap', 'bool') -bl.type('CameraData.firstPersonOnly', 'bool') -bl.type('CameraData.inheritEnergyFromMount', 'bool') -bl.type('CameraData.isInvincible', 'bool') -bl.type('CameraData.observeThroughObject', 'bool') -bl.type('CameraData.renderWhenDestroyed', 'bool') -bl.type('CameraData.thirdPersonOnly', 'bool') -bl.type('CameraData.useEyePoint', 'bool') +bl.type('CameraData.emap', 'boolean') +bl.type('CameraData.firstPersonOnly', 'boolean') +bl.type('CameraData.inheritEnergyFromMount', 'boolean') +bl.type('CameraData.isInvincible', 'boolean') +bl.type('CameraData.observeThroughObject', 'boolean') +bl.type('CameraData.renderWhenDestroyed', 'boolean') +bl.type('CameraData.thirdPersonOnly', 'boolean') +bl.type('CameraData.useEyePoint', 'boolean') bl.type('CannonFuseImage::onDone:1', 'object') bl.type('CannonSmokeImage::onDone:1', 'object') bl.type('CannonTurret::onDisabled:1', 'object') @@ -1359,9 +1359,9 @@ bl.type('ColorSetGui::selectColor:1', 'object') bl.type('ColorSetGui::setMode:1', 'object') bl.type('ColorSetGui::update:1', 'object') bl.type('ConsoleEntry::eval:1', 'object') -bl.type('ConsoleLogger::attach', 'bool') +bl.type('ConsoleLogger::attach', 'boolean') bl.type('ConsoleLogger::attach:1', 'object') -bl.type('ConsoleLogger::detach', 'bool') +bl.type('ConsoleLogger::detach', 'boolean') bl.type('ConsoleLogger::detach:1', 'object') bl.type('CreateMiniGameGui::ClickCreate:1', 'object') bl.type('CreateMiniGameGui::ClickFav:1', 'object') @@ -1376,19 +1376,19 @@ bl.type('CreateMiniGameGui::end:1', 'object') bl.type('CreateMiniGameGui::onSleep:1', 'object') bl.type('CreateMiniGameGui::onWake:1', 'object') bl.type('CreateMiniGameGui::send:1', 'object') -bl.type('CreatorTree.clipToParent', 'bool') -bl.type('CreatorTree.enabled', 'bool') -bl.type('CreatorTree.visible', 'bool') +bl.type('CreatorTree.clipToParent', 'boolean') +bl.type('CreatorTree.enabled', 'boolean') +bl.type('CreatorTree.visible', 'boolean') bl.type('CreatorTree::addGroup:1', 'object') bl.type('CreatorTree::addItem:1', 'object') bl.type('CreatorTree::clear:1', 'object') -bl.type('CreatorTree::fileNameMatch', 'bool') +bl.type('CreatorTree::fileNameMatch', 'boolean') bl.type('CreatorTree::fileNameMatch:1', 'object') bl.type('CreatorTree::getName:1', 'object') bl.type('CreatorTree::getParent:1', 'object') bl.type('CreatorTree::getSelected:1', 'object') bl.type('CreatorTree::getValue:1', 'object') -bl.type('CreatorTree::isGroup', 'bool') +bl.type('CreatorTree::isGroup', 'boolean') bl.type('CreatorTree::isGroup:1', 'object') bl.type('CustomGameGui::AddAdvancedGuiElement:1', 'object') bl.type('CustomGameGui::ClickBack:1', 'object') @@ -1437,33 +1437,33 @@ bl.type('DDS_PopUpMenuCtrl::stopMove:1', 'object') bl.type('DDS_PopUpMenuCtrl::updateFilter:1', 'object') bl.type('DDS_PopUpMenuCtrl::updateScrollRect:1', 'object') bl.type('DDS_PopUpMenuCtrl::updateTabHint:1', 'object') -bl.type('DNetSetLogging:1', 'bool') -bl.type('DbgFileView.clipToParent', 'bool') -bl.type('DbgFileView.enabled', 'bool') -bl.type('DbgFileView.visible', 'bool') +bl.type('DNetSetLogging:1', 'boolean') +bl.type('DbgFileView.clipToParent', 'boolean') +bl.type('DbgFileView.enabled', 'boolean') +bl.type('DbgFileView.visible', 'boolean') bl.type('DbgFileView::clearBreakPositions:1', 'object') -bl.type('DbgFileView::findString', 'bool') +bl.type('DbgFileView::findString', 'boolean') bl.type('DbgFileView::findString:1', 'object') bl.type('DbgFileView::getCurrentLine:1', 'object') -bl.type('DbgFileView::open', 'bool') +bl.type('DbgFileView::open', 'boolean') bl.type('DbgFileView::open:1', 'object') bl.type('DbgFileView::removeBreak:1', 'object') bl.type('DbgFileView::setBreak:1', 'object') bl.type('DbgFileView::setBreakPosition:1', 'object') bl.type('DbgFileView::setCurrentLine:1', 'object') -bl.type('DbgFileView::setCurrentLine:3', 'bool') -bl.type('Debris::init', 'bool') +bl.type('DbgFileView::setCurrentLine:3', 'boolean') +bl.type('Debris::init', 'boolean') bl.type('Debris::init:1', 'object') -bl.type('DebrisData.explodeOnMaxBounce', 'bool') -bl.type('DebrisData.fade', 'bool') -bl.type('DebrisData.ignoreWater', 'bool') -bl.type('DebrisData.render2D', 'bool') -bl.type('DebrisData.snapOnMaxBounce', 'bool') -bl.type('DebrisData.staticOnMaxBounce', 'bool') -bl.type('DebrisData.useRadiusMass', 'bool') -bl.type('DebugView.clipToParent', 'bool') -bl.type('DebugView.enabled', 'bool') -bl.type('DebugView.visible', 'bool') +bl.type('DebrisData.explodeOnMaxBounce', 'boolean') +bl.type('DebrisData.fade', 'boolean') +bl.type('DebrisData.ignoreWater', 'boolean') +bl.type('DebrisData.render2D', 'boolean') +bl.type('DebrisData.snapOnMaxBounce', 'boolean') +bl.type('DebrisData.staticOnMaxBounce', 'boolean') +bl.type('DebrisData.useRadiusMass', 'boolean') +bl.type('DebugView.clipToParent', 'boolean') +bl.type('DebugView.enabled', 'boolean') +bl.type('DebugView.visible', 'boolean') bl.type('DebugView::addLine:1', 'object') bl.type('DebugView::clearLines:1', 'object') bl.type('DebugView::clearText:1', 'object') @@ -1473,15 +1473,15 @@ bl.type('EGplus_Main::close:1', 'object') bl.type('EGplus_Main::open:1', 'object') bl.type('EGplus_Ticker::clear:1', 'object') bl.type('EGplus_Ticker::showStatus:1', 'object') -bl.type('EditManager.clipToParent', 'bool') -bl.type('EditManager.enabled', 'bool') -bl.type('EditManager.visible', 'bool') +bl.type('EditManager.clipToParent', 'boolean') +bl.type('EditManager.enabled', 'boolean') +bl.type('EditManager.visible', 'boolean') bl.type('EditManager::gotoBookmark:1', 'object') bl.type('EditManager::setBookmark:1', 'object') -bl.type('EditTSCtrl.clipToParent', 'bool') -bl.type('EditTSCtrl.enabled', 'bool') -bl.type('EditTSCtrl.renderMissionArea', 'bool') -bl.type('EditTSCtrl.visible', 'bool') +bl.type('EditTSCtrl.clipToParent', 'boolean') +bl.type('EditTSCtrl.enabled', 'boolean') +bl.type('EditTSCtrl.renderMissionArea', 'boolean') +bl.type('EditTSCtrl.visible', 'boolean') bl.type('EditTSCtrl::renderCircle:1', 'object') bl.type('EditTSCtrl::renderLine:1', 'object') bl.type('EditTSCtrl::renderSphere:1', 'object') @@ -1509,48 +1509,48 @@ bl.type('EnvGuiServer::getIdxFromFilenames:1', 'object') bl.type('EnvGuiServer::readAdvancedVarsFromSimple:1', 'object') bl.type('EnvGui_Window::onWindowFocus:1', 'object') bl.type('Explosion::onAdd:1', 'object') -bl.type('ExplosionData.cameraShakeFalloff', 'bool') -bl.type('ExplosionData.faceViewer', 'bool') -bl.type('ExplosionData.shakeCamera', 'bool') +bl.type('ExplosionData.cameraShakeFalloff', 'boolean') +bl.type('ExplosionData.faceViewer', 'boolean') +bl.type('ExplosionData.shakeCamera', 'boolean') bl.type('ExplosionData::onAdd:1', 'object') bl.type('FileObject::close:1', 'object') -bl.type('FileObject::isEOF', 'bool') +bl.type('FileObject::isEOF', 'boolean') bl.type('FileObject::isEOF:1', 'object') -bl.type('FileObject::openForAppend', 'bool') +bl.type('FileObject::openForAppend', 'boolean') bl.type('FileObject::openForAppend:1', 'object') -bl.type('FileObject::openForRead', 'bool') +bl.type('FileObject::openForRead', 'boolean') bl.type('FileObject::openForRead:1', 'object') -bl.type('FileObject::openForWrite', 'bool') +bl.type('FileObject::openForWrite', 'boolean') bl.type('FileObject::openForWrite:1', 'object') bl.type('FileObject::readLine:1', 'object') bl.type('FileObject::writeLine:1', 'object') -bl.type('FlyingVehicle.canSetIFLs', 'bool') -bl.type('FlyingVehicle.disableMove', 'bool') +bl.type('FlyingVehicle.canSetIFLs', 'boolean') +bl.type('FlyingVehicle.disableMove', 'boolean') bl.type('FlyingVehicle::useCreateHeight:1', 'object') -bl.type('FlyingVehicle::useCreateHeight:2', 'bool') -bl.type('FlyingVehicleData.cameraRoll', 'bool') -bl.type('FlyingVehicleData.emap', 'bool') -bl.type('FlyingVehicleData.firstPersonOnly', 'bool') -bl.type('FlyingVehicleData.inheritEnergyFromMount', 'bool') -bl.type('FlyingVehicleData.isInvincible', 'bool') -bl.type('FlyingVehicleData.observeThroughObject', 'bool') -bl.type('FlyingVehicleData.renderWhenDestroyed', 'bool') -bl.type('FlyingVehicleData.rideAble', 'bool') -bl.type('FlyingVehicleData.thirdPersonOnly', 'bool') -bl.type('FlyingVehicleData.useEyePoint', 'bool') +bl.type('FlyingVehicle::useCreateHeight:2', 'boolean') +bl.type('FlyingVehicleData.cameraRoll', 'boolean') +bl.type('FlyingVehicleData.emap', 'boolean') +bl.type('FlyingVehicleData.firstPersonOnly', 'boolean') +bl.type('FlyingVehicleData.inheritEnergyFromMount', 'boolean') +bl.type('FlyingVehicleData.isInvincible', 'boolean') +bl.type('FlyingVehicleData.observeThroughObject', 'boolean') +bl.type('FlyingVehicleData.renderWhenDestroyed', 'boolean') +bl.type('FlyingVehicleData.rideAble', 'boolean') +bl.type('FlyingVehicleData.thirdPersonOnly', 'boolean') +bl.type('FlyingVehicleData.useEyePoint', 'boolean') bl.type('FlyingVehicleData::Damage:1', 'object') bl.type('FlyingVehicleData::onCollision:1', 'object') bl.type('FootballItem::onBallCollision:1', 'object') -bl.type('GLEW_ARB_shader_objects', 'bool') -bl.type('GLEW_ARB_shading_language_100', 'bool') -bl.type('GLEW_ARB_shadow', 'bool') -bl.type('GLEW_ARB_texture_rg', 'bool') -bl.type('GLEW_EXT_framebuffer_object', 'bool') -bl.type('GLEW_EXT_texture3D', 'bool') -bl.type('GLEW_EXT_texture_array', 'bool') +bl.type('GLEW_ARB_shader_objects', 'boolean') +bl.type('GLEW_ARB_shading_language_100', 'boolean') +bl.type('GLEW_ARB_shadow', 'boolean') +bl.type('GLEW_ARB_texture_rg', 'boolean') +bl.type('GLEW_EXT_framebuffer_object', 'boolean') +bl.type('GLEW_EXT_texture3D', 'boolean') +bl.type('GLEW_EXT_texture_array', 'boolean') bl.type('GameBase::getDataBlock:1', 'object') bl.type('GameBase::inspectPostApply:1', 'object') -bl.type('GameBase::setDataBlock', 'bool') +bl.type('GameBase::setDataBlock', 'boolean') bl.type('GameBase::setDataBlock:1', 'object') bl.type('GameConnection::onDrop:1', 'object') bl.type('GameConnection::setConnectArgs:1', 'object') @@ -1559,77 +1559,77 @@ bl.type('GameModeGui::ClickGameMode:1', 'object') bl.type('GameModeGuiServer::GetMissingAddOns:1', 'object') bl.type('GameModeGuiServer::ParseGameModeFile:1', 'object') bl.type('GameModeGuiServer::PopulateGameModeList:1', 'object') -bl.type('GameTSCtrl.clipToParent', 'bool') -bl.type('GameTSCtrl.enabled', 'bool') -bl.type('GameTSCtrl.visible', 'bool') -bl.type('GameWindowExists', 'bool') -bl.type('GuiAnimatedBitmapCtrl.alignLeft', 'bool') -bl.type('GuiAnimatedBitmapCtrl.alignTop', 'bool') -bl.type('GuiAnimatedBitmapCtrl.clipToParent', 'bool') -bl.type('GuiAnimatedBitmapCtrl.enabled', 'bool') -bl.type('GuiAnimatedBitmapCtrl.keepCached', 'bool') -bl.type('GuiAnimatedBitmapCtrl.lockAspectRatio', 'bool') -bl.type('GuiAnimatedBitmapCtrl.mMultiply', 'bool') -bl.type('GuiAnimatedBitmapCtrl.overflowImage', 'bool') -bl.type('GuiAnimatedBitmapCtrl.skipFrames', 'bool') -bl.type('GuiAnimatedBitmapCtrl.visible', 'bool') -bl.type('GuiAnimatedBitmapCtrl.wrap', 'bool') +bl.type('GameTSCtrl.clipToParent', 'boolean') +bl.type('GameTSCtrl.enabled', 'boolean') +bl.type('GameTSCtrl.visible', 'boolean') +bl.type('GameWindowExists', 'boolean') +bl.type('GuiAnimatedBitmapCtrl.alignLeft', 'boolean') +bl.type('GuiAnimatedBitmapCtrl.alignTop', 'boolean') +bl.type('GuiAnimatedBitmapCtrl.clipToParent', 'boolean') +bl.type('GuiAnimatedBitmapCtrl.enabled', 'boolean') +bl.type('GuiAnimatedBitmapCtrl.keepCached', 'boolean') +bl.type('GuiAnimatedBitmapCtrl.lockAspectRatio', 'boolean') +bl.type('GuiAnimatedBitmapCtrl.mMultiply', 'boolean') +bl.type('GuiAnimatedBitmapCtrl.overflowImage', 'boolean') +bl.type('GuiAnimatedBitmapCtrl.skipFrames', 'boolean') +bl.type('GuiAnimatedBitmapCtrl.visible', 'boolean') +bl.type('GuiAnimatedBitmapCtrl.wrap', 'boolean') bl.type('GuiAnimatedBitmapCtrl::setBitmap:1', 'object') -bl.type('GuiArrayCtrl.clipToParent', 'bool') -bl.type('GuiArrayCtrl.enabled', 'bool') -bl.type('GuiArrayCtrl.visible', 'bool') -bl.type('GuiBackgroundCtrl.clipToParent', 'bool') -bl.type('GuiBackgroundCtrl.enabled', 'bool') -bl.type('GuiBackgroundCtrl.visible', 'bool') -bl.type('GuiBitmapBorderCtrl.clipToParent', 'bool') -bl.type('GuiBitmapBorderCtrl.enabled', 'bool') -bl.type('GuiBitmapBorderCtrl.visible', 'bool') -bl.type('GuiBitmapButtonCtrl.alignLeft', 'bool') -bl.type('GuiBitmapButtonCtrl.alignTop', 'bool') -bl.type('GuiBitmapButtonCtrl.clipToParent', 'bool') -bl.type('GuiBitmapButtonCtrl.enabled', 'bool') -bl.type('GuiBitmapButtonCtrl.lockAspectRatio', 'bool') -bl.type('GuiBitmapButtonCtrl.mKeepCached', 'bool') -bl.type('GuiBitmapButtonCtrl.overflowImage', 'bool') -bl.type('GuiBitmapButtonCtrl.visible', 'bool') +bl.type('GuiArrayCtrl.clipToParent', 'boolean') +bl.type('GuiArrayCtrl.enabled', 'boolean') +bl.type('GuiArrayCtrl.visible', 'boolean') +bl.type('GuiBackgroundCtrl.clipToParent', 'boolean') +bl.type('GuiBackgroundCtrl.enabled', 'boolean') +bl.type('GuiBackgroundCtrl.visible', 'boolean') +bl.type('GuiBitmapBorderCtrl.clipToParent', 'boolean') +bl.type('GuiBitmapBorderCtrl.enabled', 'boolean') +bl.type('GuiBitmapBorderCtrl.visible', 'boolean') +bl.type('GuiBitmapButtonCtrl.alignLeft', 'boolean') +bl.type('GuiBitmapButtonCtrl.alignTop', 'boolean') +bl.type('GuiBitmapButtonCtrl.clipToParent', 'boolean') +bl.type('GuiBitmapButtonCtrl.enabled', 'boolean') +bl.type('GuiBitmapButtonCtrl.lockAspectRatio', 'boolean') +bl.type('GuiBitmapButtonCtrl.mKeepCached', 'boolean') +bl.type('GuiBitmapButtonCtrl.overflowImage', 'boolean') +bl.type('GuiBitmapButtonCtrl.visible', 'boolean') bl.type('GuiBitmapButtonCtrl::getColor:1', 'object') bl.type('GuiBitmapButtonCtrl::setBitmap:1', 'object') bl.type('GuiBitmapButtonCtrl::setColor:1', 'object') -bl.type('GuiBitmapCtrl.alignLeft', 'bool') -bl.type('GuiBitmapCtrl.alignTop', 'bool') -bl.type('GuiBitmapCtrl.clipToParent', 'bool') -bl.type('GuiBitmapCtrl.enabled', 'bool') -bl.type('GuiBitmapCtrl.keepCached', 'bool') -bl.type('GuiBitmapCtrl.lockAspectRatio', 'bool') -bl.type('GuiBitmapCtrl.mMultiply', 'bool') -bl.type('GuiBitmapCtrl.overflowImage', 'bool') -bl.type('GuiBitmapCtrl.visible', 'bool') -bl.type('GuiBitmapCtrl.wrap', 'bool') +bl.type('GuiBitmapCtrl.alignLeft', 'boolean') +bl.type('GuiBitmapCtrl.alignTop', 'boolean') +bl.type('GuiBitmapCtrl.clipToParent', 'boolean') +bl.type('GuiBitmapCtrl.enabled', 'boolean') +bl.type('GuiBitmapCtrl.keepCached', 'boolean') +bl.type('GuiBitmapCtrl.lockAspectRatio', 'boolean') +bl.type('GuiBitmapCtrl.mMultiply', 'boolean') +bl.type('GuiBitmapCtrl.overflowImage', 'boolean') +bl.type('GuiBitmapCtrl.visible', 'boolean') +bl.type('GuiBitmapCtrl.wrap', 'boolean') bl.type('GuiBitmapCtrl::getColor:1', 'object') bl.type('GuiBitmapCtrl::getPixelColor:1', 'object') bl.type('GuiBitmapCtrl::setBitmap:1', 'object') bl.type('GuiBitmapCtrl::setColor:1', 'object') bl.type('GuiBitmapCtrl::setValue:1', 'object') -bl.type('GuiBorderButtonCtrl.clipToParent', 'bool') -bl.type('GuiBorderButtonCtrl.enabled', 'bool') -bl.type('GuiBorderButtonCtrl.visible', 'bool') -bl.type('GuiBubbleTextCtrl.clipToParent', 'bool') -bl.type('GuiBubbleTextCtrl.enabled', 'bool') -bl.type('GuiBubbleTextCtrl.visible', 'bool') -bl.type('GuiButtonBaseCtrl.clipToParent', 'bool') -bl.type('GuiButtonBaseCtrl.enabled', 'bool') -bl.type('GuiButtonBaseCtrl.visible', 'bool') +bl.type('GuiBorderButtonCtrl.clipToParent', 'boolean') +bl.type('GuiBorderButtonCtrl.enabled', 'boolean') +bl.type('GuiBorderButtonCtrl.visible', 'boolean') +bl.type('GuiBubbleTextCtrl.clipToParent', 'boolean') +bl.type('GuiBubbleTextCtrl.enabled', 'boolean') +bl.type('GuiBubbleTextCtrl.visible', 'boolean') +bl.type('GuiButtonBaseCtrl.clipToParent', 'boolean') +bl.type('GuiButtonBaseCtrl.enabled', 'boolean') +bl.type('GuiButtonBaseCtrl.visible', 'boolean') bl.type('GuiButtonBaseCtrl::getText:1', 'object') bl.type('GuiButtonBaseCtrl::performClick:1', 'object') bl.type('GuiButtonBaseCtrl::setText:1', 'object') -bl.type('GuiButtonCtrl.clipToParent', 'bool') -bl.type('GuiButtonCtrl.enabled', 'bool') -bl.type('GuiButtonCtrl.visible', 'bool') -bl.type('GuiCanvas.clipToParent', 'bool') -bl.type('GuiCanvas.enabled', 'bool') -bl.type('GuiCanvas.visible', 'bool') +bl.type('GuiButtonCtrl.clipToParent', 'boolean') +bl.type('GuiButtonCtrl.enabled', 'boolean') +bl.type('GuiButtonCtrl.visible', 'boolean') +bl.type('GuiCanvas.clipToParent', 'boolean') +bl.type('GuiCanvas.enabled', 'boolean') +bl.type('GuiCanvas.visible', 'boolean') bl.type('GuiCanvas::canTabFocus:1', 'object') -bl.type('GuiCanvas::canTabFocus:2', 'bool') +bl.type('GuiCanvas::canTabFocus:2', 'boolean') bl.type('GuiCanvas::checkCursor:1', 'object') bl.type('GuiCanvas::checkTabFocus:1', 'object') bl.type('GuiCanvas::cursorOff:1', 'object') @@ -1637,7 +1637,7 @@ bl.type('GuiCanvas::cursorOn:1', 'object') bl.type('GuiCanvas::getContent:1', 'object') bl.type('GuiCanvas::getCursorPos:1', 'object') bl.type('GuiCanvas::hideCursor:1', 'object') -bl.type('GuiCanvas::isCursorOn', 'bool') +bl.type('GuiCanvas::isCursorOn', 'boolean') bl.type('GuiCanvas::isCursorOn:1', 'object') bl.type('GuiCanvas::popDialog:1', 'object') bl.type('GuiCanvas::popDialog:2', 'object') @@ -1645,48 +1645,48 @@ bl.type('GuiCanvas::popLayer:1', 'object') bl.type('GuiCanvas::pushDialog:1', 'object') bl.type('GuiCanvas::pushDialog:2', 'object') bl.type('GuiCanvas::renderFront:1', 'object') -bl.type('GuiCanvas::renderFront:2', 'bool') +bl.type('GuiCanvas::renderFront:2', 'boolean') bl.type('GuiCanvas::repaint:1', 'object') bl.type('GuiCanvas::reset:1', 'object') bl.type('GuiCanvas::setContent:1', 'object') bl.type('GuiCanvas::setContent:2', 'object') bl.type('GuiCanvas::setCursor:1', 'object') -bl.type('GuiCanvas::setCursor:2', 'bool') +bl.type('GuiCanvas::setCursor:2', 'boolean') bl.type('GuiCanvas::setCursorPos:1', 'object') bl.type('GuiCanvas::showCursor:1', 'object') bl.type('GuiCanvas::tabNext:1', 'object') -bl.type('GuiCheckBoxCtrl.clipToParent', 'bool') -bl.type('GuiCheckBoxCtrl.enabled', 'bool') -bl.type('GuiCheckBoxCtrl.visible', 'bool') -bl.type('GuiChunkedBitmapCtrl.clipToParent', 'bool') -bl.type('GuiChunkedBitmapCtrl.enabled', 'bool') -bl.type('GuiChunkedBitmapCtrl.tile', 'bool') -bl.type('GuiChunkedBitmapCtrl.useVariable', 'bool') -bl.type('GuiChunkedBitmapCtrl.visible', 'bool') +bl.type('GuiCheckBoxCtrl.clipToParent', 'boolean') +bl.type('GuiCheckBoxCtrl.enabled', 'boolean') +bl.type('GuiCheckBoxCtrl.visible', 'boolean') +bl.type('GuiChunkedBitmapCtrl.clipToParent', 'boolean') +bl.type('GuiChunkedBitmapCtrl.enabled', 'boolean') +bl.type('GuiChunkedBitmapCtrl.tile', 'boolean') +bl.type('GuiChunkedBitmapCtrl.useVariable', 'boolean') +bl.type('GuiChunkedBitmapCtrl.visible', 'boolean') bl.type('GuiChunkedBitmapCtrl::setBitmap:1', 'object') -bl.type('GuiClockHud.clipToParent', 'bool') -bl.type('GuiClockHud.enabled', 'bool') -bl.type('GuiClockHud.showFill', 'bool') -bl.type('GuiClockHud.showFrame', 'bool') -bl.type('GuiClockHud.visible', 'bool') +bl.type('GuiClockHud.clipToParent', 'boolean') +bl.type('GuiClockHud.enabled', 'boolean') +bl.type('GuiClockHud.showFill', 'boolean') +bl.type('GuiClockHud.showFrame', 'boolean') +bl.type('GuiClockHud.visible', 'boolean') bl.type('GuiClockHud::getTime:1', 'object') bl.type('GuiClockHud::setTime:1', 'object') -bl.type('GuiConsole.clipToParent', 'bool') -bl.type('GuiConsole.enabled', 'bool') -bl.type('GuiConsole.visible', 'bool') -bl.type('GuiConsoleEditCtrl.clipToParent', 'bool') -bl.type('GuiConsoleEditCtrl.enabled', 'bool') -bl.type('GuiConsoleEditCtrl.password', 'bool') -bl.type('GuiConsoleEditCtrl.sinkAllKeyEvents', 'bool') -bl.type('GuiConsoleEditCtrl.tabComplete', 'bool') -bl.type('GuiConsoleEditCtrl.useSiblingScroller', 'bool') -bl.type('GuiConsoleEditCtrl.visible', 'bool') -bl.type('GuiConsoleTextCtrl.clipToParent', 'bool') -bl.type('GuiConsoleTextCtrl.enabled', 'bool') -bl.type('GuiConsoleTextCtrl.visible', 'bool') -bl.type('GuiControl.clipToParent', 'bool') -bl.type('GuiControl.enabled', 'bool') -bl.type('GuiControl.visible', 'bool') +bl.type('GuiConsole.clipToParent', 'boolean') +bl.type('GuiConsole.enabled', 'boolean') +bl.type('GuiConsole.visible', 'boolean') +bl.type('GuiConsoleEditCtrl.clipToParent', 'boolean') +bl.type('GuiConsoleEditCtrl.enabled', 'boolean') +bl.type('GuiConsoleEditCtrl.password', 'boolean') +bl.type('GuiConsoleEditCtrl.sinkAllKeyEvents', 'boolean') +bl.type('GuiConsoleEditCtrl.tabComplete', 'boolean') +bl.type('GuiConsoleEditCtrl.useSiblingScroller', 'boolean') +bl.type('GuiConsoleEditCtrl.visible', 'boolean') +bl.type('GuiConsoleTextCtrl.clipToParent', 'boolean') +bl.type('GuiConsoleTextCtrl.enabled', 'boolean') +bl.type('GuiConsoleTextCtrl.visible', 'boolean') +bl.type('GuiControl.clipToParent', 'boolean') +bl.type('GuiControl.enabled', 'boolean') +bl.type('GuiControl.visible', 'boolean') bl.type('GuiControl::ScaleText:1', 'object') bl.type('GuiControl::getExtent:1', 'object') bl.type('GuiControl::getHelpPage:1', 'object') @@ -1695,54 +1695,54 @@ bl.type('GuiControl::getMinExtent:1', 'object') bl.type('GuiControl::getPosition:1', 'object') bl.type('GuiControl::getScreenPosition:1', 'object') bl.type('GuiControl::getValue:1', 'object') -bl.type('GuiControl::isActive', 'bool') +bl.type('GuiControl::isActive', 'boolean') bl.type('GuiControl::isActive:1', 'object') -bl.type('GuiControl::isAwake', 'bool') +bl.type('GuiControl::isAwake', 'boolean') bl.type('GuiControl::isAwake:1', 'object') -bl.type('GuiControl::isVisible', 'bool') +bl.type('GuiControl::isVisible', 'boolean') bl.type('GuiControl::isVisible:1', 'object') bl.type('GuiControl::makeFirstResponder:1', 'object') -bl.type('GuiControl::makeFirstResponder:2', 'bool') +bl.type('GuiControl::makeFirstResponder:2', 'boolean') bl.type('GuiControl::resize:1', 'object') bl.type('GuiControl::setActive:1', 'object') -bl.type('GuiControl::setActive:2', 'bool') +bl.type('GuiControl::setActive:2', 'boolean') bl.type('GuiControl::setCentered:1', 'object') bl.type('GuiControl::setCenteredX:1', 'object') bl.type('GuiControl::setCenteredY:1', 'object') bl.type('GuiControl::setHasRendered:1', 'object') -bl.type('GuiControl::setHasRendered:2', 'bool') +bl.type('GuiControl::setHasRendered:2', 'boolean') bl.type('GuiControl::setProfile:1', 'object') bl.type('GuiControl::setProfile:2', 'object') bl.type('GuiControl::setValue:1', 'object') bl.type('GuiControl::setVisible:1', 'object') -bl.type('GuiControl::setVisible:2', 'bool') -bl.type('GuiControlListPopUp.clipToParent', 'bool') -bl.type('GuiControlListPopUp.enabled', 'bool') -bl.type('GuiControlListPopUp.visible', 'bool') -bl.type('GuiControlProfile.autoSizeHeight', 'bool') -bl.type('GuiControlProfile.autoSizeWidth', 'bool') -bl.type('GuiControlProfile.canKeyFocus', 'bool') -bl.type('GuiControlProfile.doFontOutline', 'bool') -bl.type('GuiControlProfile.modal', 'bool') -bl.type('GuiControlProfile.mouseOverSelected', 'bool') -bl.type('GuiControlProfile.numbersOnly', 'bool') -bl.type('GuiControlProfile.opaque', 'bool') -bl.type('GuiControlProfile.returnTab', 'bool') -bl.type('GuiControlProfile.tab', 'bool') +bl.type('GuiControl::setVisible:2', 'boolean') +bl.type('GuiControlListPopUp.clipToParent', 'boolean') +bl.type('GuiControlListPopUp.enabled', 'boolean') +bl.type('GuiControlListPopUp.visible', 'boolean') +bl.type('GuiControlProfile.autoSizeHeight', 'boolean') +bl.type('GuiControlProfile.autoSizeWidth', 'boolean') +bl.type('GuiControlProfile.canKeyFocus', 'boolean') +bl.type('GuiControlProfile.doFontOutline', 'boolean') +bl.type('GuiControlProfile.modal', 'boolean') +bl.type('GuiControlProfile.mouseOverSelected', 'boolean') +bl.type('GuiControlProfile.numbersOnly', 'boolean') +bl.type('GuiControlProfile.opaque', 'boolean') +bl.type('GuiControlProfile.returnTab', 'boolean') +bl.type('GuiControlProfile.tab', 'boolean') bl.type('GuiControlProfile::updateFont:1', 'object') -bl.type('GuiCrossHairHud.alignLeft', 'bool') -bl.type('GuiCrossHairHud.alignTop', 'bool') -bl.type('GuiCrossHairHud.clipToParent', 'bool') -bl.type('GuiCrossHairHud.enabled', 'bool') -bl.type('GuiCrossHairHud.keepCached', 'bool') -bl.type('GuiCrossHairHud.lockAspectRatio', 'bool') -bl.type('GuiCrossHairHud.mMultiply', 'bool') -bl.type('GuiCrossHairHud.overflowImage', 'bool') -bl.type('GuiCrossHairHud.visible', 'bool') -bl.type('GuiCrossHairHud.wrap', 'bool') -bl.type('GuiEditCtrl.clipToParent', 'bool') -bl.type('GuiEditCtrl.enabled', 'bool') -bl.type('GuiEditCtrl.visible', 'bool') +bl.type('GuiCrossHairHud.alignLeft', 'boolean') +bl.type('GuiCrossHairHud.alignTop', 'boolean') +bl.type('GuiCrossHairHud.clipToParent', 'boolean') +bl.type('GuiCrossHairHud.enabled', 'boolean') +bl.type('GuiCrossHairHud.keepCached', 'boolean') +bl.type('GuiCrossHairHud.lockAspectRatio', 'boolean') +bl.type('GuiCrossHairHud.mMultiply', 'boolean') +bl.type('GuiCrossHairHud.overflowImage', 'boolean') +bl.type('GuiCrossHairHud.visible', 'boolean') +bl.type('GuiCrossHairHud.wrap', 'boolean') +bl.type('GuiEditCtrl.clipToParent', 'boolean') +bl.type('GuiEditCtrl.enabled', 'boolean') +bl.type('GuiEditCtrl.visible', 'boolean') bl.type('GuiEditCtrl::addNewCtrl:1', 'object') bl.type('GuiEditCtrl::addNewCtrl:2', 'object') bl.type('GuiEditCtrl::bringToFront:1', 'object') @@ -1765,38 +1765,38 @@ bl.type('GuiEditorClassPopup::onSelect:1', 'object') bl.type('GuiEditorContentList::onSelect:1', 'object') bl.type('GuiEditorMenuBar::onMenuItemSelect:1', 'object') bl.type('GuiEditorResList::onSelect:1', 'object') -bl.type('GuiEditorRuler.clipToParent', 'bool') -bl.type('GuiEditorRuler.enabled', 'bool') -bl.type('GuiEditorRuler.visible', 'bool') +bl.type('GuiEditorRuler.clipToParent', 'boolean') +bl.type('GuiEditorRuler.enabled', 'boolean') +bl.type('GuiEditorRuler.visible', 'boolean') bl.type('GuiEditorTreeView::onSelect:1', 'object') -bl.type('GuiFadeinBitmapCtrl.alignLeft', 'bool') -bl.type('GuiFadeinBitmapCtrl.alignTop', 'bool') -bl.type('GuiFadeinBitmapCtrl.clipToParent', 'bool') -bl.type('GuiFadeinBitmapCtrl.enabled', 'bool') -bl.type('GuiFadeinBitmapCtrl.keepCached', 'bool') -bl.type('GuiFadeinBitmapCtrl.lockAspectRatio', 'bool') -bl.type('GuiFadeinBitmapCtrl.mMultiply', 'bool') -bl.type('GuiFadeinBitmapCtrl.overflowImage', 'bool') -bl.type('GuiFadeinBitmapCtrl.visible', 'bool') -bl.type('GuiFadeinBitmapCtrl.wrap', 'bool') +bl.type('GuiFadeinBitmapCtrl.alignLeft', 'boolean') +bl.type('GuiFadeinBitmapCtrl.alignTop', 'boolean') +bl.type('GuiFadeinBitmapCtrl.clipToParent', 'boolean') +bl.type('GuiFadeinBitmapCtrl.enabled', 'boolean') +bl.type('GuiFadeinBitmapCtrl.keepCached', 'boolean') +bl.type('GuiFadeinBitmapCtrl.lockAspectRatio', 'boolean') +bl.type('GuiFadeinBitmapCtrl.mMultiply', 'boolean') +bl.type('GuiFadeinBitmapCtrl.overflowImage', 'boolean') +bl.type('GuiFadeinBitmapCtrl.visible', 'boolean') +bl.type('GuiFadeinBitmapCtrl.wrap', 'boolean') bl.type('GuiFadeinBitmapCtrl::reset:1', 'object') -bl.type('GuiFilterCtrl.clipToParent', 'bool') -bl.type('GuiFilterCtrl.enabled', 'bool') -bl.type('GuiFilterCtrl.visible', 'bool') +bl.type('GuiFilterCtrl.clipToParent', 'boolean') +bl.type('GuiFilterCtrl.enabled', 'boolean') +bl.type('GuiFilterCtrl.visible', 'boolean') bl.type('GuiFilterCtrl::getValue:1', 'object') bl.type('GuiFilterCtrl::identity:1', 'object') bl.type('GuiFilterCtrl::setValue:1', 'object') -bl.type('GuiFrameSetCtrl.autoBalance', 'bool') -bl.type('GuiFrameSetCtrl.clipToParent', 'bool') -bl.type('GuiFrameSetCtrl.enabled', 'bool') -bl.type('GuiFrameSetCtrl.visible', 'bool') +bl.type('GuiFrameSetCtrl.autoBalance', 'boolean') +bl.type('GuiFrameSetCtrl.clipToParent', 'boolean') +bl.type('GuiFrameSetCtrl.enabled', 'boolean') +bl.type('GuiFrameSetCtrl.visible', 'boolean') bl.type('GuiFrameSetCtrl::addColumn:1', 'object') bl.type('GuiFrameSetCtrl::addRow:1', 'object') bl.type('GuiFrameSetCtrl::frameBorder:1', 'object') -bl.type('GuiFrameSetCtrl::frameBorder:3', 'bool') +bl.type('GuiFrameSetCtrl::frameBorder:3', 'boolean') bl.type('GuiFrameSetCtrl::frameMinExtent:1', 'object') bl.type('GuiFrameSetCtrl::frameMovable:1', 'object') -bl.type('GuiFrameSetCtrl::frameMovable:3', 'bool') +bl.type('GuiFrameSetCtrl::frameMovable:3', 'boolean') bl.type('GuiFrameSetCtrl::getColumnCount:1', 'object') bl.type('GuiFrameSetCtrl::getColumnOffset:1', 'object') bl.type('GuiFrameSetCtrl::getRowCount:1', 'object') @@ -1805,49 +1805,49 @@ bl.type('GuiFrameSetCtrl::removeColumn:1', 'object') bl.type('GuiFrameSetCtrl::removeRow:1', 'object') bl.type('GuiFrameSetCtrl::setColumnOffset:1', 'object') bl.type('GuiFrameSetCtrl::setRowOffset:1', 'object') -bl.type('GuiGraphCtrl.clipToParent', 'bool') -bl.type('GuiGraphCtrl.enabled', 'bool') -bl.type('GuiGraphCtrl.visible', 'bool') +bl.type('GuiGraphCtrl.clipToParent', 'boolean') +bl.type('GuiGraphCtrl.enabled', 'boolean') +bl.type('GuiGraphCtrl.visible', 'boolean') bl.type('GuiGraphCtrl::addAutoPlot:1', 'object') bl.type('GuiGraphCtrl::addDatum:1', 'object') bl.type('GuiGraphCtrl::getDatum:1', 'object') bl.type('GuiGraphCtrl::matchScale:1', 'object') bl.type('GuiGraphCtrl::removeAutoPlot:1', 'object') bl.type('GuiGraphCtrl::setGraphType:1', 'object') -bl.type('GuiHealthBarHud.clipToParent', 'bool') -bl.type('GuiHealthBarHud.displayEnergy', 'bool') -bl.type('GuiHealthBarHud.enabled', 'bool') -bl.type('GuiHealthBarHud.flipped', 'bool') -bl.type('GuiHealthBarHud.showFill', 'bool') -bl.type('GuiHealthBarHud.showFrame', 'bool') -bl.type('GuiHealthBarHud.visible', 'bool') -bl.type('GuiInputCtrl.clipToParent', 'bool') -bl.type('GuiInputCtrl.enabled', 'bool') -bl.type('GuiInputCtrl.visible', 'bool') -bl.type('GuiInspector.clipToParent', 'bool') -bl.type('GuiInspector.enabled', 'bool') -bl.type('GuiInspector.useFieldGrouping', 'bool') -bl.type('GuiInspector.visible', 'bool') +bl.type('GuiHealthBarHud.clipToParent', 'boolean') +bl.type('GuiHealthBarHud.displayEnergy', 'boolean') +bl.type('GuiHealthBarHud.enabled', 'boolean') +bl.type('GuiHealthBarHud.flipped', 'boolean') +bl.type('GuiHealthBarHud.showFill', 'boolean') +bl.type('GuiHealthBarHud.showFrame', 'boolean') +bl.type('GuiHealthBarHud.visible', 'boolean') +bl.type('GuiInputCtrl.clipToParent', 'boolean') +bl.type('GuiInputCtrl.enabled', 'boolean') +bl.type('GuiInputCtrl.visible', 'boolean') +bl.type('GuiInspector.clipToParent', 'boolean') +bl.type('GuiInspector.enabled', 'boolean') +bl.type('GuiInspector.useFieldGrouping', 'boolean') +bl.type('GuiInspector.visible', 'boolean') bl.type('GuiInspector::addDynamicField:1', 'object') bl.type('GuiInspector::apply:1', 'object') bl.type('GuiInspector::inspect:1', 'object') bl.type('GuiInspector::inspect:2', 'object') bl.type('GuiInspector::setAllGroupState:1', 'object') -bl.type('GuiInspector::setAllGroupState:2', 'bool') +bl.type('GuiInspector::setAllGroupState:2', 'boolean') bl.type('GuiInspector::setAllGroupStateScript:1', 'object') bl.type('GuiInspector::toggleDynamicGroupExpand:1', 'object') bl.type('GuiInspector::toggleDynamicGroupScript:1', 'object') bl.type('GuiInspector::toggleGroupExpand:1', 'object') bl.type('GuiInspector::toggleGroupExpand:2', 'object') bl.type('GuiInspector::toggleGroupScript:1', 'object') -bl.type('GuiMLTextCtrl.allowColorChars', 'bool') -bl.type('GuiMLTextCtrl.autoResize', 'bool') -bl.type('GuiMLTextCtrl.clipToParent', 'bool') -bl.type('GuiMLTextCtrl.enabled', 'bool') -bl.type('GuiMLTextCtrl.selectable', 'bool') -bl.type('GuiMLTextCtrl.visible', 'bool') +bl.type('GuiMLTextCtrl.allowColorChars', 'boolean') +bl.type('GuiMLTextCtrl.autoResize', 'boolean') +bl.type('GuiMLTextCtrl.clipToParent', 'boolean') +bl.type('GuiMLTextCtrl.enabled', 'boolean') +bl.type('GuiMLTextCtrl.selectable', 'boolean') +bl.type('GuiMLTextCtrl.visible', 'boolean') bl.type('GuiMLTextCtrl::addText:1', 'object') -bl.type('GuiMLTextCtrl::addText:3', 'bool') +bl.type('GuiMLTextCtrl::addText:3', 'boolean') bl.type('GuiMLTextCtrl::forceReflow:1', 'object') bl.type('GuiMLTextCtrl::getText:1', 'object') bl.type('GuiMLTextCtrl::onAdd:1', 'object') @@ -1855,18 +1855,18 @@ bl.type('GuiMLTextCtrl::onURL:1', 'object') bl.type('GuiMLTextCtrl::scrollToTag:1', 'object') bl.type('GuiMLTextCtrl::scrollToTop:1', 'object') bl.type('GuiMLTextCtrl::setAlpha:1', 'object') -bl.type('GuiMLTextCtrl::setCursorPosition', 'bool') +bl.type('GuiMLTextCtrl::setCursorPosition', 'boolean') bl.type('GuiMLTextCtrl::setCursorPosition:1', 'object') bl.type('GuiMLTextCtrl::setText:1', 'object') -bl.type('GuiMLTextEditCtrl.allowColorChars', 'bool') -bl.type('GuiMLTextEditCtrl.autoResize', 'bool') -bl.type('GuiMLTextEditCtrl.clipToParent', 'bool') -bl.type('GuiMLTextEditCtrl.enabled', 'bool') -bl.type('GuiMLTextEditCtrl.selectable', 'bool') -bl.type('GuiMLTextEditCtrl.visible', 'bool') -bl.type('GuiMenuBar.clipToParent', 'bool') -bl.type('GuiMenuBar.enabled', 'bool') -bl.type('GuiMenuBar.visible', 'bool') +bl.type('GuiMLTextEditCtrl.allowColorChars', 'boolean') +bl.type('GuiMLTextEditCtrl.autoResize', 'boolean') +bl.type('GuiMLTextEditCtrl.clipToParent', 'boolean') +bl.type('GuiMLTextEditCtrl.enabled', 'boolean') +bl.type('GuiMLTextEditCtrl.selectable', 'boolean') +bl.type('GuiMLTextEditCtrl.visible', 'boolean') +bl.type('GuiMenuBar.clipToParent', 'boolean') +bl.type('GuiMenuBar.enabled', 'boolean') +bl.type('GuiMenuBar.visible', 'boolean') bl.type('GuiMenuBar::addMenu:1', 'object') bl.type('GuiMenuBar::addMenuItem:1', 'object') bl.type('GuiMenuBar::clearMenuItems:1', 'object') @@ -1875,32 +1875,32 @@ bl.type('GuiMenuBar::removeMenu:1', 'object') bl.type('GuiMenuBar::removeMenuItem:1', 'object') bl.type('GuiMenuBar::setMenuItemBitmap:1', 'object') bl.type('GuiMenuBar::setMenuItemChecked:1', 'object') -bl.type('GuiMenuBar::setMenuItemChecked:4', 'bool') +bl.type('GuiMenuBar::setMenuItemChecked:4', 'boolean') bl.type('GuiMenuBar::setMenuItemEnable:1', 'object') -bl.type('GuiMenuBar::setMenuItemEnable:4', 'bool') +bl.type('GuiMenuBar::setMenuItemEnable:4', 'boolean') bl.type('GuiMenuBar::setMenuItemText:1', 'object') bl.type('GuiMenuBar::setMenuItemVisible:1', 'object') -bl.type('GuiMenuBar::setMenuItemVisible:4', 'bool') +bl.type('GuiMenuBar::setMenuItemVisible:4', 'boolean') bl.type('GuiMenuBar::setMenuText:1', 'object') bl.type('GuiMenuBar::setMenuVisible:1', 'object') -bl.type('GuiMenuBar::setMenuVisible:3', 'bool') -bl.type('GuiMessageVectorCtrl.clipToParent', 'bool') -bl.type('GuiMessageVectorCtrl.enabled', 'bool') -bl.type('GuiMessageVectorCtrl.visible', 'bool') -bl.type('GuiMessageVectorCtrl::attach', 'bool') +bl.type('GuiMenuBar::setMenuVisible:3', 'boolean') +bl.type('GuiMessageVectorCtrl.clipToParent', 'boolean') +bl.type('GuiMessageVectorCtrl.enabled', 'boolean') +bl.type('GuiMessageVectorCtrl.visible', 'boolean') +bl.type('GuiMessageVectorCtrl::attach', 'boolean') bl.type('GuiMessageVectorCtrl::attach:1', 'object') bl.type('GuiMessageVectorCtrl::attach:2', 'object') bl.type('GuiMessageVectorCtrl::detach:1', 'object') -bl.type('GuiMouseEventCtrl.clipToParent', 'bool') -bl.type('GuiMouseEventCtrl.enabled', 'bool') -bl.type('GuiMouseEventCtrl.lockMouse', 'bool') -bl.type('GuiMouseEventCtrl.visible', 'bool') -bl.type('GuiNoMouseCtrl.clipToParent', 'bool') -bl.type('GuiNoMouseCtrl.enabled', 'bool') -bl.type('GuiNoMouseCtrl.visible', 'bool') -bl.type('GuiObjectView.clipToParent', 'bool') -bl.type('GuiObjectView.enabled', 'bool') -bl.type('GuiObjectView.visible', 'bool') +bl.type('GuiMouseEventCtrl.clipToParent', 'boolean') +bl.type('GuiMouseEventCtrl.enabled', 'boolean') +bl.type('GuiMouseEventCtrl.lockMouse', 'boolean') +bl.type('GuiMouseEventCtrl.visible', 'boolean') +bl.type('GuiNoMouseCtrl.clipToParent', 'boolean') +bl.type('GuiNoMouseCtrl.enabled', 'boolean') +bl.type('GuiNoMouseCtrl.visible', 'boolean') +bl.type('GuiObjectView.clipToParent', 'boolean') +bl.type('GuiObjectView.enabled', 'boolean') +bl.type('GuiObjectView.visible', 'boolean') bl.type('GuiObjectView::dumpView:1', 'object') bl.type('GuiObjectView::hideNode:1', 'object') bl.type('GuiObjectView::loadDSQ:1', 'object') @@ -1918,14 +1918,14 @@ bl.type('GuiObjectView::setSequence:1', 'object') bl.type('GuiObjectView::setThreadPos:1', 'object') bl.type('GuiObjectView::unHideNode:1', 'object') bl.type('GuiObjectView::unMountObject:1', 'object') -bl.type('GuiPlayerView.clipToParent', 'bool') -bl.type('GuiPlayerView.enabled', 'bool') -bl.type('GuiPlayerView.visible', 'bool') +bl.type('GuiPlayerView.clipToParent', 'boolean') +bl.type('GuiPlayerView.enabled', 'boolean') +bl.type('GuiPlayerView.visible', 'boolean') bl.type('GuiPlayerView::setModel:1', 'object') bl.type('GuiPlayerView::setSeq:1', 'object') -bl.type('GuiPopUpMenuCtrl.clipToParent', 'bool') -bl.type('GuiPopUpMenuCtrl.enabled', 'bool') -bl.type('GuiPopUpMenuCtrl.visible', 'bool') +bl.type('GuiPopUpMenuCtrl.clipToParent', 'boolean') +bl.type('GuiPopUpMenuCtrl.enabled', 'boolean') +bl.type('GuiPopUpMenuCtrl.visible', 'boolean') bl.type('GuiPopUpMenuCtrl::add:1', 'object') bl.type('GuiPopUpMenuCtrl::addFront:1', 'object') bl.type('GuiPopUpMenuCtrl::addScheme:1', 'object') @@ -1938,81 +1938,81 @@ bl.type('GuiPopUpMenuCtrl::getText:1', 'object') bl.type('GuiPopUpMenuCtrl::getTextById:1', 'object') bl.type('GuiPopUpMenuCtrl::onRemove:1', 'object') bl.type('GuiPopUpMenuCtrl::replaceText:1', 'object') -bl.type('GuiPopUpMenuCtrl::replaceText:2', 'bool') +bl.type('GuiPopUpMenuCtrl::replaceText:2', 'boolean') bl.type('GuiPopUpMenuCtrl::setEnumContent:1', 'object') bl.type('GuiPopUpMenuCtrl::setSelected:1', 'object') bl.type('GuiPopUpMenuCtrl::setText:1', 'object') bl.type('GuiPopUpMenuCtrl::size:1', 'object') bl.type('GuiPopUpMenuCtrl::sort:1', 'object') -bl.type('GuiProgressCtrl.clipToParent', 'bool') -bl.type('GuiProgressCtrl.enabled', 'bool') -bl.type('GuiProgressCtrl.visible', 'bool') -bl.type('GuiRadioCtrl.clipToParent', 'bool') -bl.type('GuiRadioCtrl.enabled', 'bool') -bl.type('GuiRadioCtrl.visible', 'bool') -bl.type('GuiScrollCtrl.clipToParent', 'bool') -bl.type('GuiScrollCtrl.constantThumbHeight', 'bool') -bl.type('GuiScrollCtrl.enabled', 'bool') -bl.type('GuiScrollCtrl.visible', 'bool') -bl.type('GuiScrollCtrl.willFirstRespond', 'bool') +bl.type('GuiProgressCtrl.clipToParent', 'boolean') +bl.type('GuiProgressCtrl.enabled', 'boolean') +bl.type('GuiProgressCtrl.visible', 'boolean') +bl.type('GuiRadioCtrl.clipToParent', 'boolean') +bl.type('GuiRadioCtrl.enabled', 'boolean') +bl.type('GuiRadioCtrl.visible', 'boolean') +bl.type('GuiScrollCtrl.clipToParent', 'boolean') +bl.type('GuiScrollCtrl.constantThumbHeight', 'boolean') +bl.type('GuiScrollCtrl.enabled', 'boolean') +bl.type('GuiScrollCtrl.visible', 'boolean') +bl.type('GuiScrollCtrl.willFirstRespond', 'boolean') bl.type('GuiScrollCtrl::scrollToBottom:1', 'object') bl.type('GuiScrollCtrl::scrollToTop:1', 'object') -bl.type('GuiShapeNameHud.clipToParent', 'bool') -bl.type('GuiShapeNameHud.enabled', 'bool') -bl.type('GuiShapeNameHud.showFill', 'bool') -bl.type('GuiShapeNameHud.showFrame', 'bool') -bl.type('GuiShapeNameHud.visible', 'bool') -bl.type('GuiSliderCtrl.clipToParent', 'bool') -bl.type('GuiSliderCtrl.enabled', 'bool') -bl.type('GuiSliderCtrl.snap', 'bool') -bl.type('GuiSliderCtrl.visible', 'bool') +bl.type('GuiShapeNameHud.clipToParent', 'boolean') +bl.type('GuiShapeNameHud.enabled', 'boolean') +bl.type('GuiShapeNameHud.showFill', 'boolean') +bl.type('GuiShapeNameHud.showFrame', 'boolean') +bl.type('GuiShapeNameHud.visible', 'boolean') +bl.type('GuiSliderCtrl.clipToParent', 'boolean') +bl.type('GuiSliderCtrl.enabled', 'boolean') +bl.type('GuiSliderCtrl.snap', 'boolean') +bl.type('GuiSliderCtrl.visible', 'boolean') bl.type('GuiSliderCtrl::getValue:1', 'object') -bl.type('GuiSpeedometerHud.alignLeft', 'bool') -bl.type('GuiSpeedometerHud.alignTop', 'bool') -bl.type('GuiSpeedometerHud.clipToParent', 'bool') -bl.type('GuiSpeedometerHud.enabled', 'bool') -bl.type('GuiSpeedometerHud.keepCached', 'bool') -bl.type('GuiSpeedometerHud.lockAspectRatio', 'bool') -bl.type('GuiSpeedometerHud.mMultiply', 'bool') -bl.type('GuiSpeedometerHud.overflowImage', 'bool') -bl.type('GuiSpeedometerHud.visible', 'bool') -bl.type('GuiSpeedometerHud.wrap', 'bool') -bl.type('GuiSwatchCtrl.clipToParent', 'bool') -bl.type('GuiSwatchCtrl.enabled', 'bool') -bl.type('GuiSwatchCtrl.visible', 'bool') +bl.type('GuiSpeedometerHud.alignLeft', 'boolean') +bl.type('GuiSpeedometerHud.alignTop', 'boolean') +bl.type('GuiSpeedometerHud.clipToParent', 'boolean') +bl.type('GuiSpeedometerHud.enabled', 'boolean') +bl.type('GuiSpeedometerHud.keepCached', 'boolean') +bl.type('GuiSpeedometerHud.lockAspectRatio', 'boolean') +bl.type('GuiSpeedometerHud.mMultiply', 'boolean') +bl.type('GuiSpeedometerHud.overflowImage', 'boolean') +bl.type('GuiSpeedometerHud.visible', 'boolean') +bl.type('GuiSpeedometerHud.wrap', 'boolean') +bl.type('GuiSwatchCtrl.clipToParent', 'boolean') +bl.type('GuiSwatchCtrl.enabled', 'boolean') +bl.type('GuiSwatchCtrl.visible', 'boolean') bl.type('GuiSwatchCtrl::getColor:1', 'object') bl.type('GuiSwatchCtrl::setColor:1', 'object') -bl.type('GuiTSCtrl.clipToParent', 'bool') -bl.type('GuiTSCtrl.enabled', 'bool') -bl.type('GuiTSCtrl.visible', 'bool') -bl.type('GuiTextCtrl.clipToParent', 'bool') -bl.type('GuiTextCtrl.enabled', 'bool') -bl.type('GuiTextCtrl.visible', 'bool') +bl.type('GuiTSCtrl.clipToParent', 'boolean') +bl.type('GuiTSCtrl.enabled', 'boolean') +bl.type('GuiTSCtrl.visible', 'boolean') +bl.type('GuiTextCtrl.clipToParent', 'boolean') +bl.type('GuiTextCtrl.enabled', 'boolean') +bl.type('GuiTextCtrl.visible', 'boolean') bl.type('GuiTextCtrl::getPixelWidth:1', 'object') bl.type('GuiTextCtrl::setText:1', 'object') -bl.type('GuiTextEditCtrl.clipToParent', 'bool') -bl.type('GuiTextEditCtrl.enabled', 'bool') -bl.type('GuiTextEditCtrl.password', 'bool') -bl.type('GuiTextEditCtrl.sinkAllKeyEvents', 'bool') -bl.type('GuiTextEditCtrl.tabComplete', 'bool') -bl.type('GuiTextEditCtrl.visible', 'bool') +bl.type('GuiTextEditCtrl.clipToParent', 'boolean') +bl.type('GuiTextEditCtrl.enabled', 'boolean') +bl.type('GuiTextEditCtrl.password', 'boolean') +bl.type('GuiTextEditCtrl.sinkAllKeyEvents', 'boolean') +bl.type('GuiTextEditCtrl.tabComplete', 'boolean') +bl.type('GuiTextEditCtrl.visible', 'boolean') bl.type('GuiTextEditCtrl::getCursorPos:1', 'object') bl.type('GuiTextEditCtrl::restrictNumberInput:1', 'object') bl.type('GuiTextEditCtrl::setCursorPos:1', 'object') bl.type('GuiTextEditCtrl::updateHistorySize:1', 'object') -bl.type('GuiTextEditSliderCtrl.clipToParent', 'bool') -bl.type('GuiTextEditSliderCtrl.enabled', 'bool') -bl.type('GuiTextEditSliderCtrl.password', 'bool') -bl.type('GuiTextEditSliderCtrl.sinkAllKeyEvents', 'bool') -bl.type('GuiTextEditSliderCtrl.tabComplete', 'bool') -bl.type('GuiTextEditSliderCtrl.visible', 'bool') -bl.type('GuiTextListCtrl.clipColumnText', 'bool') -bl.type('GuiTextListCtrl.clipToParent', 'bool') -bl.type('GuiTextListCtrl.enabled', 'bool') -bl.type('GuiTextListCtrl.enumerate', 'bool') -bl.type('GuiTextListCtrl.fitParentWidth', 'bool') -bl.type('GuiTextListCtrl.resizeCell', 'bool') -bl.type('GuiTextListCtrl.visible', 'bool') +bl.type('GuiTextEditSliderCtrl.clipToParent', 'boolean') +bl.type('GuiTextEditSliderCtrl.enabled', 'boolean') +bl.type('GuiTextEditSliderCtrl.password', 'boolean') +bl.type('GuiTextEditSliderCtrl.sinkAllKeyEvents', 'boolean') +bl.type('GuiTextEditSliderCtrl.tabComplete', 'boolean') +bl.type('GuiTextEditSliderCtrl.visible', 'boolean') +bl.type('GuiTextListCtrl.clipColumnText', 'boolean') +bl.type('GuiTextListCtrl.clipToParent', 'boolean') +bl.type('GuiTextListCtrl.enabled', 'boolean') +bl.type('GuiTextListCtrl.enumerate', 'boolean') +bl.type('GuiTextListCtrl.fitParentWidth', 'boolean') +bl.type('GuiTextListCtrl.resizeCell', 'boolean') +bl.type('GuiTextListCtrl.visible', 'boolean') bl.type('GuiTextListCtrl::addRow:1', 'object') bl.type('GuiTextListCtrl::clear:1', 'object') bl.type('GuiTextListCtrl::clearSelection:1', 'object') @@ -2022,37 +2022,37 @@ bl.type('GuiTextListCtrl::getRowNumById:1', 'object') bl.type('GuiTextListCtrl::getRowText:1', 'object') bl.type('GuiTextListCtrl::getRowTextById:1', 'object') bl.type('GuiTextListCtrl::getSelectedId:1', 'object') -bl.type('GuiTextListCtrl::isRowActive', 'bool') +bl.type('GuiTextListCtrl::isRowActive', 'boolean') bl.type('GuiTextListCtrl::isRowActive:1', 'object') bl.type('GuiTextListCtrl::removeRow:1', 'object') bl.type('GuiTextListCtrl::removeRowById:1', 'object') bl.type('GuiTextListCtrl::rowCount:1', 'object') bl.type('GuiTextListCtrl::scrollVisible:1', 'object') bl.type('GuiTextListCtrl::setRowActive:1', 'object') -bl.type('GuiTextListCtrl::setRowActive:3', 'bool') +bl.type('GuiTextListCtrl::setRowActive:3', 'boolean') bl.type('GuiTextListCtrl::setRowById:1', 'object') bl.type('GuiTextListCtrl::setSelectedById:1', 'object') bl.type('GuiTextListCtrl::setSelectedRow:1', 'object') bl.type('GuiTextListCtrl::sort:1', 'object') -bl.type('GuiTextListCtrl::sort:3', 'bool') +bl.type('GuiTextListCtrl::sort:3', 'boolean') bl.type('GuiTextListCtrl::sortNumerical:1', 'object') -bl.type('GuiTextListCtrl::sortNumerical:3', 'bool') -bl.type('GuiTreeViewCtrl.allowMultipleSelections', 'bool') -bl.type('GuiTreeViewCtrl.clipToParent', 'bool') -bl.type('GuiTreeViewCtrl.enabled', 'bool') -bl.type('GuiTreeViewCtrl.recurseSets', 'bool') -bl.type('GuiTreeViewCtrl.visible', 'bool') +bl.type('GuiTextListCtrl::sortNumerical:3', 'boolean') +bl.type('GuiTreeViewCtrl.allowMultipleSelections', 'boolean') +bl.type('GuiTreeViewCtrl.clipToParent', 'boolean') +bl.type('GuiTreeViewCtrl.enabled', 'boolean') +bl.type('GuiTreeViewCtrl.recurseSets', 'boolean') +bl.type('GuiTreeViewCtrl.visible', 'boolean') bl.type('GuiTreeViewCtrl::open:1', 'object') bl.type('GuiTreeViewCtrl::open:2', 'object') -bl.type('GuiWindowCtrl.canClose', 'bool') -bl.type('GuiWindowCtrl.canMaximize', 'bool') -bl.type('GuiWindowCtrl.canMinimize', 'bool') -bl.type('GuiWindowCtrl.canMove', 'bool') -bl.type('GuiWindowCtrl.clipToParent', 'bool') -bl.type('GuiWindowCtrl.enabled', 'bool') -bl.type('GuiWindowCtrl.resizeHeight', 'bool') -bl.type('GuiWindowCtrl.resizeWidth', 'bool') -bl.type('GuiWindowCtrl.visible', 'bool') +bl.type('GuiWindowCtrl.canClose', 'boolean') +bl.type('GuiWindowCtrl.canMaximize', 'boolean') +bl.type('GuiWindowCtrl.canMinimize', 'boolean') +bl.type('GuiWindowCtrl.canMove', 'boolean') +bl.type('GuiWindowCtrl.clipToParent', 'boolean') +bl.type('GuiWindowCtrl.enabled', 'boolean') +bl.type('GuiWindowCtrl.resizeHeight', 'boolean') +bl.type('GuiWindowCtrl.resizeWidth', 'boolean') +bl.type('GuiWindowCtrl.visible', 'boolean') bl.type('HTTPObject::get:1', 'object') bl.type('HTTPObject::post:1', 'object') bl.type('HateImage::onDone:1', 'object') @@ -2075,37 +2075,37 @@ bl.type('HorseHoleBot::onBotFollow:1', 'object') bl.type('HorseHoleBot::onBotLoop:1', 'object') bl.type('InspectAddFieldDlg::doAction:1', 'object') bl.type('InspectTreeView::onSelect:1', 'object') -bl.type('Item.canSetIFLs', 'bool') -bl.type('Item.collideable', 'bool') -bl.type('Item.rotate', 'bool') -bl.type('Item.static', 'bool') +bl.type('Item.canSetIFLs', 'boolean') +bl.type('Item.collideable', 'boolean') +bl.type('Item.rotate', 'boolean') +bl.type('Item.static', 'boolean') bl.type('Item::Respawn:1', 'object') bl.type('Item::fadeIn:1', 'object') bl.type('Item::fadeOut:1', 'object') bl.type('Item::getLastStickyNormal:1', 'object') bl.type('Item::getLastStickyPos:1', 'object') bl.type('Item::getRespawnTime:1', 'object') -bl.type('Item::isRotating', 'bool') +bl.type('Item::isRotating', 'boolean') bl.type('Item::isRotating:1', 'object') -bl.type('Item::isStatic', 'bool') +bl.type('Item::isStatic', 'boolean') bl.type('Item::isStatic:1', 'object') bl.type('Item::schedulePop:1', 'object') -bl.type('Item::setCollisionTimeout', 'bool') +bl.type('Item::setCollisionTimeout', 'boolean') bl.type('Item::setCollisionTimeout:1', 'object') bl.type('Item::setCollisionTimeout:2', 'object') bl.type('Item::setRespawnTime:1', 'object') bl.type('Item::setThrower:1', 'object') -bl.type('ItemData.doColorShift', 'bool') -bl.type('ItemData.emap', 'bool') -bl.type('ItemData.firstPersonOnly', 'bool') -bl.type('ItemData.inheritEnergyFromMount', 'bool') -bl.type('ItemData.isInvincible', 'bool') -bl.type('ItemData.lightOnlyStatic', 'bool') -bl.type('ItemData.observeThroughObject', 'bool') -bl.type('ItemData.renderWhenDestroyed', 'bool') -bl.type('ItemData.sticky', 'bool') -bl.type('ItemData.thirdPersonOnly', 'bool') -bl.type('ItemData.useEyePoint', 'bool') +bl.type('ItemData.doColorShift', 'boolean') +bl.type('ItemData.emap', 'boolean') +bl.type('ItemData.firstPersonOnly', 'boolean') +bl.type('ItemData.inheritEnergyFromMount', 'boolean') +bl.type('ItemData.isInvincible', 'boolean') +bl.type('ItemData.lightOnlyStatic', 'boolean') +bl.type('ItemData.observeThroughObject', 'boolean') +bl.type('ItemData.renderWhenDestroyed', 'boolean') +bl.type('ItemData.sticky', 'boolean') +bl.type('ItemData.thirdPersonOnly', 'boolean') +bl.type('ItemData.useEyePoint', 'boolean') bl.type('ItemData::create:1', 'object') bl.type('ItemData::onAdd:1', 'object') bl.type('ItemData::onBallCollision:1', 'object') @@ -2132,7 +2132,7 @@ bl.type('JoinServerPassGui::enterPass:1', 'object') bl.type('LeftHandedGunImage::onFire:1', 'object') bl.type('LeftHandedGunImage::onMount:1', 'object') bl.type('LeftHandedGunImage::onUnMount:1', 'object') -bl.type('Lightning.useFog', 'bool') +bl.type('Lightning.useFog', 'boolean') bl.type('Lightning::strikeObject:1', 'object') bl.type('Lightning::strikeObject:2', 'object') bl.type('Lightning::strikeRandomPoint:1', 'object') @@ -2166,7 +2166,7 @@ bl.type('MessageBoxOKCancelDlg::onSleep:1', 'object') bl.type('MessageBoxOKDlg::onSleep:1', 'object') bl.type('MessageBoxYesNoDlg::onSleep:1', 'object') bl.type('MessageVector::clear:1', 'object') -bl.type('MessageVector::deleteLine', 'bool') +bl.type('MessageVector::deleteLine', 'boolean') bl.type('MessageVector::deleteLine:1', 'object') bl.type('MessageVector::dump:1', 'object') bl.type('MessageVector::getLineIndexByTag:1', 'object') @@ -2174,11 +2174,11 @@ bl.type('MessageVector::getLineTag:1', 'object') bl.type('MessageVector::getLineText:1', 'object') bl.type('MessageVector::getLineTextByTag:1', 'object') bl.type('MessageVector::getNumLines:1', 'object') -bl.type('MessageVector::insertLine', 'bool') +bl.type('MessageVector::insertLine', 'boolean') bl.type('MessageVector::insertLine:1', 'object') -bl.type('MessageVector::popBackLine', 'bool') +bl.type('MessageVector::popBackLine', 'boolean') bl.type('MessageVector::popBackLine:1', 'object') -bl.type('MessageVector::popFrontLine', 'bool') +bl.type('MessageVector::popFrontLine', 'boolean') bl.type('MessageVector::popFrontLine:1', 'object') bl.type('MessageVector::pushBackLine:1', 'object') bl.type('MessageVector::pushFrontLine:1', 'object') @@ -2189,15 +2189,15 @@ bl.type('MiniGameInviteGui::Ignore:1', 'object') bl.type('MiniGameInviteGui::onSleep:1', 'object') bl.type('MiniGameInviteGui::onWake:1', 'object') bl.type('MiniGameSO::reset:1', 'object') -bl.type('MissionMarker.canSetIFLs', 'bool') -bl.type('MissionMarkerData.emap', 'bool') -bl.type('MissionMarkerData.firstPersonOnly', 'bool') -bl.type('MissionMarkerData.inheritEnergyFromMount', 'bool') -bl.type('MissionMarkerData.isInvincible', 'bool') -bl.type('MissionMarkerData.observeThroughObject', 'bool') -bl.type('MissionMarkerData.renderWhenDestroyed', 'bool') -bl.type('MissionMarkerData.thirdPersonOnly', 'bool') -bl.type('MissionMarkerData.useEyePoint', 'bool') +bl.type('MissionMarker.canSetIFLs', 'boolean') +bl.type('MissionMarkerData.emap', 'boolean') +bl.type('MissionMarkerData.firstPersonOnly', 'boolean') +bl.type('MissionMarkerData.inheritEnergyFromMount', 'boolean') +bl.type('MissionMarkerData.isInvincible', 'boolean') +bl.type('MissionMarkerData.observeThroughObject', 'boolean') +bl.type('MissionMarkerData.renderWhenDestroyed', 'boolean') +bl.type('MissionMarkerData.thirdPersonOnly', 'boolean') +bl.type('MissionMarkerData.useEyePoint', 'boolean') bl.type('MissionMarkerData::create:1', 'object') bl.type('NMH_Type::send:1', 'object') bl.type('NMH_Type::type:1', 'object') @@ -2208,7 +2208,7 @@ bl.type('NetConnection::connect:1', 'object') bl.type('NetConnection::connectArranged:1', 'object') bl.type('NetConnection::connectLocal:1', 'object') bl.type('NetConnection::getAddress:1', 'object') -bl.type('NetConnection::getFinishedInitialGhost', 'bool') +bl.type('NetConnection::getFinishedInitialGhost', 'boolean') bl.type('NetConnection::getFinishedInitialGhost:1', 'object') bl.type('NetConnection::getGhostID:1', 'object') bl.type('NetConnection::getGhostsActive:1', 'object') @@ -2217,18 +2217,18 @@ bl.type('NetConnection::getPing:1', 'object') bl.type('NetConnection::getPort:1', 'object') bl.type('NetConnection::getProtocolVersion:1', 'object') bl.type('NetConnection::getRawIP:1', 'object') -bl.type('NetConnection::isLan', 'bool') +bl.type('NetConnection::isLan', 'boolean') bl.type('NetConnection::isLan:1', 'object') -bl.type('NetConnection::isLocal', 'bool') +bl.type('NetConnection::isLocal', 'boolean') bl.type('NetConnection::isLocal:1', 'object') -bl.type('NetConnection::isLocalConnection', 'bool') +bl.type('NetConnection::isLocalConnection', 'boolean') bl.type('NetConnection::isLocalConnection:1', 'object') bl.type('NetConnection::resolveGhostID:1', 'object') bl.type('NetConnection::resolveObjectFromGhostIndex', 'object') bl.type('NetConnection::resolveObjectFromGhostIndex:1', 'object') bl.type('NetConnection::sendDisconnectPacket:1', 'object') bl.type('NetConnection::setFinishedInitialGhost:1', 'object') -bl.type('NetConnection::setFinishedInitialGhost:2', 'bool') +bl.type('NetConnection::setFinishedInitialGhost:2', 'boolean') bl.type('NetConnection::transmitPaths:1', 'object') bl.type('NetGraph::cancel:1', 'object') bl.type('NetGraph::toggleKey:1', 'object') @@ -2243,7 +2243,7 @@ bl.type('NewChatSO::addLine:1', 'object') bl.type('NewPlayerListGui::clickList:1', 'object') bl.type('NewPlayerListGui::onWake:1', 'object') bl.type('Observer::onTrigger:1', 'object') -bl.type('OpenALInitDriver', 'bool') +bl.type('OpenALInitDriver', 'boolean') bl.type('OptAudioDriverList::onSelect:1', 'object') bl.type('OptGraphicsBPPMenu::init:1', 'object') bl.type('OptGraphicsBorderlessToggle::onAction:1', 'object') @@ -2268,8 +2268,8 @@ bl.type('PSD_Window::ShowAllPrintRatiosTab:1', 'object') bl.type('PainHighImage::onDone:1', 'object') bl.type('PainLowImage::onDone:1', 'object') bl.type('PainMidImage::onDone:1', 'object') -bl.type('ParticleData.animateTexture', 'bool') -bl.type('ParticleData.useInvAlpha', 'bool') +bl.type('ParticleData.animateTexture', 'boolean') +bl.type('ParticleData.useInvAlpha', 'boolean') bl.type('ParticleData::reload:1', 'object') bl.type('ParticleEditor::initEditor:1', 'object') bl.type('ParticleEditor::openEmitterPane:1', 'object') @@ -2277,23 +2277,23 @@ bl.type('ParticleEditor::openParticlePane:1', 'object') bl.type('ParticleEditor::resetEmitterNode:1', 'object') bl.type('ParticleEditor::startup:1', 'object') bl.type('ParticleEditor::updateEmitterNode:1', 'object') -bl.type('ParticleEmitterData.doDetail', 'bool') -bl.type('ParticleEmitterData.doFalloff', 'bool') -bl.type('ParticleEmitterData.orientOnVelocity', 'bool') -bl.type('ParticleEmitterData.orientParticles', 'bool') -bl.type('ParticleEmitterData.overrideAdvance', 'bool') -bl.type('ParticleEmitterData.useEmitterColors', 'bool') -bl.type('ParticleEmitterData.useEmitterSizes', 'bool') +bl.type('ParticleEmitterData.doDetail', 'boolean') +bl.type('ParticleEmitterData.doFalloff', 'boolean') +bl.type('ParticleEmitterData.orientOnVelocity', 'boolean') +bl.type('ParticleEmitterData.orientParticles', 'boolean') +bl.type('ParticleEmitterData.overrideAdvance', 'boolean') +bl.type('ParticleEmitterData.useEmitterColors', 'boolean') +bl.type('ParticleEmitterData.useEmitterSizes', 'boolean') bl.type('ParticleEmitterData::reload:1', 'object') -bl.type('ParticleEmitterNode.pointPlacement', 'bool') -bl.type('ParticleEmitterNode.spherePlacement', 'bool') +bl.type('ParticleEmitterNode.pointPlacement', 'boolean') +bl.type('ParticleEmitterNode.spherePlacement', 'boolean') bl.type('ParticleEmitterNode::getEmitterDataBlock:1', 'object') bl.type('ParticleEmitterNode::onRemove:1', 'object') bl.type('ParticleEmitterNode::setColor:1', 'object') bl.type('ParticleEmitterNode::setEmitterDataBlock:1', 'object') -bl.type('Path.isLooping', 'bool') +bl.type('Path.isLooping', 'boolean') bl.type('Path::getPathId:1', 'object') -bl.type('PathCamera.canSetIFLs', 'bool') +bl.type('PathCamera.canSetIFLs', 'boolean') bl.type('PathCamera::popFront:1', 'object') bl.type('PathCamera::pushBack:1', 'object') bl.type('PathCamera::pushFront:1', 'object') @@ -2301,24 +2301,24 @@ bl.type('PathCamera::reset:1', 'object') bl.type('PathCamera::setPosition:1', 'object') bl.type('PathCamera::setState:1', 'object') bl.type('PathCamera::setTarget:1', 'object') -bl.type('PathCameraData.emap', 'bool') -bl.type('PathCameraData.firstPersonOnly', 'bool') -bl.type('PathCameraData.inheritEnergyFromMount', 'bool') -bl.type('PathCameraData.isInvincible', 'bool') -bl.type('PathCameraData.observeThroughObject', 'bool') -bl.type('PathCameraData.renderWhenDestroyed', 'bool') -bl.type('PathCameraData.thirdPersonOnly', 'bool') -bl.type('PathCameraData.useEyePoint', 'bool') -bl.type('PhysicalZone.isWater', 'bool') +bl.type('PathCameraData.emap', 'boolean') +bl.type('PathCameraData.firstPersonOnly', 'boolean') +bl.type('PathCameraData.inheritEnergyFromMount', 'boolean') +bl.type('PathCameraData.isInvincible', 'boolean') +bl.type('PathCameraData.observeThroughObject', 'boolean') +bl.type('PathCameraData.renderWhenDestroyed', 'boolean') +bl.type('PathCameraData.thirdPersonOnly', 'boolean') +bl.type('PathCameraData.useEyePoint', 'boolean') +bl.type('PhysicalZone.isWater', 'boolean') bl.type('PhysicalZone::activate:1', 'object') bl.type('PhysicalZone::deactivate:1', 'object') bl.type('PhysicalZone::sendUpdate:1', 'object') bl.type('PhysicalZone::setAppliedForce:1', 'object') bl.type('PhysicalZone::setWaterColor:1', 'object') bl.type('PlayGui::createInvHUD:1', 'object') -bl.type('Player.canSetIFLs', 'bool') +bl.type('Player.canSetIFLs', 'boolean') bl.type('Player::ActivateStuff:1', 'object') -bl.type('Player::checkDismountPoint', 'bool') +bl.type('Player::checkDismountPoint', 'boolean') bl.type('Player::checkDismountPoint:1', 'object') bl.type('Player::clearControlObject:1', 'object') bl.type('Player::emote:1', 'object') @@ -2334,26 +2334,26 @@ bl.type('Player::getMaxUnderwaterBackwardSpeed:1', 'object') bl.type('Player::getMaxUnderwaterForwardSpeed:1', 'object') bl.type('Player::getMaxUnderwaterSideSpeed:1', 'object') bl.type('Player::getState:1', 'object') -bl.type('Player::getWorldSpaceMovement', 'bool') +bl.type('Player::getWorldSpaceMovement', 'boolean') bl.type('Player::getWorldSpaceMovement:1', 'object') -bl.type('Player::isCrouched', 'bool') +bl.type('Player::isCrouched', 'boolean') bl.type('Player::isCrouched:1', 'object') -bl.type('Player::isFirstPerson', 'bool') +bl.type('Player::isFirstPerson', 'boolean') bl.type('Player::isFirstPerson:1', 'object') -bl.type('Player::setActionThread', 'bool') +bl.type('Player::setActionThread', 'boolean') bl.type('Player::setActionThread:1', 'object') -bl.type('Player::setActionThread:3', 'bool') -bl.type('Player::setActionThread:4', 'bool') -bl.type('Player::setArmThread', 'bool') +bl.type('Player::setActionThread:3', 'boolean') +bl.type('Player::setActionThread:4', 'boolean') +bl.type('Player::setArmThread', 'boolean') bl.type('Player::setArmThread:1', 'object') -bl.type('Player::setControlObject', 'bool') +bl.type('Player::setControlObject', 'boolean') bl.type('Player::setControlObject:1', 'object') bl.type('Player::setControlObject:2', 'object') bl.type('Player::setDecalName:1', 'object') bl.type('Player::setFaceName:1', 'object') -bl.type('Player::setHeadUp', 'bool') +bl.type('Player::setHeadUp', 'boolean') bl.type('Player::setHeadUp:1', 'object') -bl.type('Player::setHeadUp:2', 'bool') +bl.type('Player::setHeadUp:2', 'boolean') bl.type('Player::setLookLimits:1', 'object') bl.type('Player::setMaxBackwardSpeed:1', 'object') bl.type('Player::setMaxCrouchBackwardSpeed:1', 'object') @@ -2365,27 +2365,27 @@ bl.type('Player::setMaxUnderwaterBackwardSpeed:1', 'object') bl.type('Player::setMaxUnderwaterForwardSpeed:1', 'object') bl.type('Player::setMaxUnderwaterSideSpeed:1', 'object') bl.type('Player::setWorldSpaceMovement:1', 'object') -bl.type('Player::setWorldSpaceMovement:2', 'bool') -bl.type('PlayerData.canJet', 'bool') -bl.type('PlayerData.canRide', 'bool') -bl.type('PlayerData.emap', 'bool') -bl.type('PlayerData.firstPersonOnly', 'bool') -bl.type('PlayerData.inheritEnergyFromMount', 'bool') -bl.type('PlayerData.isInvincible', 'bool') -bl.type('PlayerData.observeThroughObject', 'bool') -bl.type('PlayerData.renderFirstPerson', 'bool') -bl.type('PlayerData.renderWhenDestroyed', 'bool') -bl.type('PlayerData.rideAble', 'bool') -bl.type('PlayerData.thirdPersonOnly', 'bool') -bl.type('PlayerData.useEyePoint', 'bool') +bl.type('Player::setWorldSpaceMovement:2', 'boolean') +bl.type('PlayerData.canJet', 'boolean') +bl.type('PlayerData.canRide', 'boolean') +bl.type('PlayerData.emap', 'boolean') +bl.type('PlayerData.firstPersonOnly', 'boolean') +bl.type('PlayerData.inheritEnergyFromMount', 'boolean') +bl.type('PlayerData.isInvincible', 'boolean') +bl.type('PlayerData.observeThroughObject', 'boolean') +bl.type('PlayerData.renderFirstPerson', 'boolean') +bl.type('PlayerData.renderWhenDestroyed', 'boolean') +bl.type('PlayerData.rideAble', 'boolean') +bl.type('PlayerData.thirdPersonOnly', 'boolean') +bl.type('PlayerData.useEyePoint', 'boolean') bl.type('PlayerData::onDriverLeave:1', 'object') bl.type('PlayerSportArmor::onTrigger:1', 'object') bl.type('PlayerSportTurboArmor::onTrigger:1', 'object') bl.type('PlayerTeleportImage::onDone:1', 'object') -bl.type('Precipitation.doCollision', 'bool') -bl.type('Precipitation.rotateWithCamVel', 'bool') -bl.type('Precipitation.useTrueBillboards', 'bool') -bl.type('Precipitation.useTurbulence', 'bool') +bl.type('Precipitation.doCollision', 'boolean') +bl.type('Precipitation.rotateWithCamVel', 'boolean') +bl.type('Precipitation.useTrueBillboards', 'boolean') +bl.type('Precipitation.useTurbulence', 'boolean') bl.type('Precipitation::setPercentange:1', 'object') bl.type('PrintGunImage::onFire:1', 'object') bl.type('PrintGunImage::onHitObject:1', 'object') @@ -2401,12 +2401,12 @@ bl.type('Projectile::getLastImpactVelocity:1', 'object') bl.type('Projectile::getVelocity:1', 'object') bl.type('Projectile::onAdd:1', 'object') bl.type('Projectile::playSportBallSound:1', 'object') -bl.type('ProjectileData.collideWithPlayers', 'bool') -bl.type('ProjectileData.explodeOnDeath', 'bool') -bl.type('ProjectileData.explodeOnPlayerImpact', 'bool') -bl.type('ProjectileData.hasLight', 'bool') -bl.type('ProjectileData.hasWaterLight', 'bool') -bl.type('ProjectileData.isBallistic', 'bool') +bl.type('ProjectileData.collideWithPlayers', 'boolean') +bl.type('ProjectileData.explodeOnDeath', 'boolean') +bl.type('ProjectileData.explodeOnPlayerImpact', 'boolean') +bl.type('ProjectileData.hasLight', 'boolean') +bl.type('ProjectileData.hasWaterLight', 'boolean') +bl.type('ProjectileData.isBallistic', 'boolean') bl.type('ProjectileData::Damage:1', 'object') bl.type('ProjectileData::impactImpulse:1', 'object') bl.type('ProjectileData::onCollision:1', 'object') @@ -2416,7 +2416,7 @@ bl.type('ProjectileData::radiusImpulse:1', 'object') bl.type('QueueSO::dumpVals:1', 'object') bl.type('QueueSO::pop:1', 'object') bl.type('QueueSO::push:1', 'object') -bl.type('QuotaObject.AutoDelete', 'bool') +bl.type('QuotaObject.AutoDelete', 'boolean') bl.type('QuotaObject::dumpAllocs:1', 'object') bl.type('QuotaObject::getAllocs_Schedules:1', 'object') bl.type('QuotaObject::killObjects:1', 'object') @@ -2450,7 +2450,7 @@ bl.type('SceneObject::getWorldBox:1', 'object') bl.type('SceneObject::getWorldBoxCenter:1', 'object') bl.type('SceneObject::setScale:1', 'object') bl.type('SceneObject::setTransform:1', 'object') -bl.type('ScopeAlwaysShape.canSetIFLs', 'bool') +bl.type('ScopeAlwaysShape.canSetIFLs', 'boolean') bl.type('ScriptObject::getVariable:1', 'object') bl.type('ScriptObject::setVariable:1', 'object') bl.type('SelectNetworkGui::onSleep:1', 'object') @@ -2468,12 +2468,12 @@ bl.type('ServerSettingsGui::getVariablesFromFile:1', 'object') bl.type('ServerSettingsGui::getVariablesFromGui:1', 'object') bl.type('ServerSettingsGui::onRender:1', 'object') bl.type('ServerSettingsGui::onWake:1', 'object') -bl.type('ShapeBase.canSetIFLs', 'bool') +bl.type('ShapeBase.canSetIFLs', 'boolean') bl.type('ShapeBase::applyDamage:1', 'object') -bl.type('ShapeBase::applyImpulse', 'bool') +bl.type('ShapeBase::applyImpulse', 'boolean') bl.type('ShapeBase::applyImpulse:1', 'object') bl.type('ShapeBase::applyRepair:1', 'object') -bl.type('ShapeBase::canCloak', 'bool') +bl.type('ShapeBase::canCloak', 'boolean') bl.type('ShapeBase::canCloak:1', 'object') bl.type('ShapeBase::disableNodeColor:1', 'object') bl.type('ShapeBase::getCameraFov:1', 'object') @@ -2489,13 +2489,13 @@ bl.type('ShapeBase::getEnergyPercent:1', 'object') bl.type('ShapeBase::getEyePoint:1', 'object') bl.type('ShapeBase::getEyeTransform:1', 'object') bl.type('ShapeBase::getEyeVector:1', 'object') -bl.type('ShapeBase::getImageAmmo', 'bool') +bl.type('ShapeBase::getImageAmmo', 'boolean') bl.type('ShapeBase::getImageAmmo:1', 'object') -bl.type('ShapeBase::getImageLoaded', 'bool') +bl.type('ShapeBase::getImageLoaded', 'boolean') bl.type('ShapeBase::getImageLoaded:1', 'object') bl.type('ShapeBase::getImageSkinTag:1', 'object') bl.type('ShapeBase::getImageState:1', 'object') -bl.type('ShapeBase::getImageTrigger', 'bool') +bl.type('ShapeBase::getImageTrigger', 'boolean') bl.type('ShapeBase::getImageTrigger:1', 'object') bl.type('ShapeBase::getMountNode:1', 'object') bl.type('ShapeBase::getMountNodeObject', 'object') @@ -2522,117 +2522,117 @@ bl.type('ShapeBase::getVelocity:1', 'object') bl.type('ShapeBase::getWaterCoverage:1', 'object') bl.type('ShapeBase::getWhiteOut:1', 'object') bl.type('ShapeBase::hideNode:1', 'object') -bl.type('ShapeBase::isCloaked', 'bool') +bl.type('ShapeBase::isCloaked', 'boolean') bl.type('ShapeBase::isCloaked:1', 'object') -bl.type('ShapeBase::isDestroyed', 'bool') +bl.type('ShapeBase::isDestroyed', 'boolean') bl.type('ShapeBase::isDestroyed:1', 'object') -bl.type('ShapeBase::isDisabled', 'bool') +bl.type('ShapeBase::isDisabled', 'boolean') bl.type('ShapeBase::isDisabled:1', 'object') -bl.type('ShapeBase::isEnabled', 'bool') +bl.type('ShapeBase::isEnabled', 'boolean') bl.type('ShapeBase::isEnabled:1', 'object') -bl.type('ShapeBase::isHidden', 'bool') +bl.type('ShapeBase::isHidden', 'boolean') bl.type('ShapeBase::isHidden:1', 'object') -bl.type('ShapeBase::isImageFiring', 'bool') +bl.type('ShapeBase::isImageFiring', 'boolean') bl.type('ShapeBase::isImageFiring:1', 'object') -bl.type('ShapeBase::isImageMounted', 'bool') +bl.type('ShapeBase::isImageMounted', 'boolean') bl.type('ShapeBase::isImageMounted:1', 'object') bl.type('ShapeBase::isImageMounted:2', 'object') -bl.type('ShapeBase::isMounted', 'bool') +bl.type('ShapeBase::isMounted', 'boolean') bl.type('ShapeBase::isMounted:1', 'object') -bl.type('ShapeBase::isNodeVisible', 'bool') +bl.type('ShapeBase::isNodeVisible', 'boolean') bl.type('ShapeBase::isNodeVisible:1', 'object') -bl.type('ShapeBase::mountImage', 'bool') +bl.type('ShapeBase::mountImage', 'boolean') bl.type('ShapeBase::mountImage:1', 'object') bl.type('ShapeBase::mountImage:2', 'object') -bl.type('ShapeBase::mountImage:4', 'bool') -bl.type('ShapeBase::mountObject', 'bool') +bl.type('ShapeBase::mountImage:4', 'boolean') +bl.type('ShapeBase::mountObject', 'boolean') bl.type('ShapeBase::mountObject:1', 'object') bl.type('ShapeBase::mountObject:2', 'object') bl.type('ShapeBase::mountObject:3', 'object') -bl.type('ShapeBase::pauseThread', 'bool') +bl.type('ShapeBase::pauseThread', 'boolean') bl.type('ShapeBase::pauseThread:1', 'object') -bl.type('ShapeBase::playAudio', 'bool') +bl.type('ShapeBase::playAudio', 'boolean') bl.type('ShapeBase::playAudio:1', 'object') bl.type('ShapeBase::playAudio:3', 'object') -bl.type('ShapeBase::playThread', 'bool') +bl.type('ShapeBase::playThread', 'boolean') bl.type('ShapeBase::playThread:1', 'object') bl.type('ShapeBase::setCameraFov:1', 'object') bl.type('ShapeBase::setCloaked:1', 'object') -bl.type('ShapeBase::setCloaked:2', 'bool') +bl.type('ShapeBase::setCloaked:2', 'boolean') bl.type('ShapeBase::setDamageFlash:1', 'object') bl.type('ShapeBase::setDamageLevel:1', 'object') -bl.type('ShapeBase::setDamageState', 'bool') +bl.type('ShapeBase::setDamageState', 'boolean') bl.type('ShapeBase::setDamageState:1', 'object') bl.type('ShapeBase::setDamageVector:1', 'object') bl.type('ShapeBase::setEnergyLevel:1', 'object') bl.type('ShapeBase::setHidden:1', 'object') -bl.type('ShapeBase::setHidden:2', 'bool') +bl.type('ShapeBase::setHidden:2', 'boolean') bl.type('ShapeBase::setIflFrame:1', 'object') -bl.type('ShapeBase::setImageAmmo', 'bool') +bl.type('ShapeBase::setImageAmmo', 'boolean') bl.type('ShapeBase::setImageAmmo:1', 'object') -bl.type('ShapeBase::setImageAmmo:3', 'bool') -bl.type('ShapeBase::setImageLoaded', 'bool') +bl.type('ShapeBase::setImageAmmo:3', 'boolean') +bl.type('ShapeBase::setImageLoaded', 'boolean') bl.type('ShapeBase::setImageLoaded:1', 'object') -bl.type('ShapeBase::setImageLoaded:3', 'bool') -bl.type('ShapeBase::setImageTrigger', 'bool') +bl.type('ShapeBase::setImageLoaded:3', 'boolean') +bl.type('ShapeBase::setImageTrigger', 'boolean') bl.type('ShapeBase::setImageTrigger:1', 'object') -bl.type('ShapeBase::setImageTrigger:3', 'bool') +bl.type('ShapeBase::setImageTrigger:3', 'boolean') bl.type('ShapeBase::setNodeColor:1', 'object') bl.type('ShapeBase::setRepairRate:1', 'object') bl.type('ShapeBase::setShapeName:1', 'object') bl.type('ShapeBase::setShapeNameColor:1', 'object') bl.type('ShapeBase::setShapeNameDistance:1', 'object') bl.type('ShapeBase::setSkinName:1', 'object') -bl.type('ShapeBase::setThreadDir', 'bool') +bl.type('ShapeBase::setThreadDir', 'boolean') bl.type('ShapeBase::setThreadDir:1', 'object') -bl.type('ShapeBase::setThreadDir:3', 'bool') -bl.type('ShapeBase::setVelocity', 'bool') +bl.type('ShapeBase::setThreadDir:3', 'boolean') +bl.type('ShapeBase::setVelocity', 'boolean') bl.type('ShapeBase::setVelocity:1', 'object') bl.type('ShapeBase::setWhiteOut:1', 'object') bl.type('ShapeBase::startFade:1', 'object') -bl.type('ShapeBase::startFade:4', 'bool') -bl.type('ShapeBase::stopAudio', 'bool') +bl.type('ShapeBase::startFade:4', 'boolean') +bl.type('ShapeBase::stopAudio', 'boolean') bl.type('ShapeBase::stopAudio:1', 'object') -bl.type('ShapeBase::stopThread', 'bool') +bl.type('ShapeBase::stopThread', 'boolean') bl.type('ShapeBase::stopThread:1', 'object') bl.type('ShapeBase::unHideNode:1', 'object') -bl.type('ShapeBase::unMountObject', 'bool') +bl.type('ShapeBase::unMountObject', 'boolean') bl.type('ShapeBase::unMountObject:1', 'object') bl.type('ShapeBase::unMountObject:2', 'object') bl.type('ShapeBase::unmount:1', 'object') -bl.type('ShapeBase::unmountImage', 'bool') +bl.type('ShapeBase::unmountImage', 'boolean') bl.type('ShapeBase::unmountImage:1', 'object') -bl.type('ShapeBaseData.emap', 'bool') -bl.type('ShapeBaseData.firstPersonOnly', 'bool') -bl.type('ShapeBaseData.inheritEnergyFromMount', 'bool') -bl.type('ShapeBaseData.isInvincible', 'bool') -bl.type('ShapeBaseData.observeThroughObject', 'bool') -bl.type('ShapeBaseData.renderWhenDestroyed', 'bool') -bl.type('ShapeBaseData.thirdPersonOnly', 'bool') -bl.type('ShapeBaseData.useEyePoint', 'bool') +bl.type('ShapeBaseData.emap', 'boolean') +bl.type('ShapeBaseData.firstPersonOnly', 'boolean') +bl.type('ShapeBaseData.inheritEnergyFromMount', 'boolean') +bl.type('ShapeBaseData.isInvincible', 'boolean') +bl.type('ShapeBaseData.observeThroughObject', 'boolean') +bl.type('ShapeBaseData.renderWhenDestroyed', 'boolean') +bl.type('ShapeBaseData.thirdPersonOnly', 'boolean') +bl.type('ShapeBaseData.useEyePoint', 'boolean') bl.type('ShapeBaseData::Damage:1', 'object') -bl.type('ShapeBaseData::checkDeployPos', 'bool') +bl.type('ShapeBaseData::checkDeployPos', 'boolean') bl.type('ShapeBaseData::checkDeployPos:1', 'object') bl.type('ShapeBaseData::getDeployTransform:1', 'object') bl.type('ShapeBaseData::onInventory:1', 'object') bl.type('ShapeBaseData::onPickup:1', 'object') bl.type('ShapeBaseData::onThrow:1', 'object') bl.type('ShapeBaseData::onUse:1', 'object') -bl.type('ShapeBaseImageData.accuFire', 'bool') -bl.type('ShapeBaseImageData.cloakable', 'bool') -bl.type('ShapeBaseImageData.correctMuzzleVector', 'bool') -bl.type('ShapeBaseImageData.doColorShift', 'bool') -bl.type('ShapeBaseImageData.emap', 'bool') -bl.type('ShapeBaseImageData.firstPerson', 'bool') -bl.type('ShapeBaseImageData.firstPersonParticles', 'bool') -bl.type('ShapeBaseImageData.stateAllowImageChange', 'bool') -bl.type('ShapeBaseImageData.stateDirection', 'bool') -bl.type('ShapeBaseImageData.stateEjectShell', 'bool') -bl.type('ShapeBaseImageData.stateFire', 'bool') -bl.type('ShapeBaseImageData.stateIgnoreLoadedForReady', 'bool') -bl.type('ShapeBaseImageData.stateSequenceRandomFlash', 'bool') -bl.type('ShapeBaseImageData.stateWaitForTimeout', 'bool') -bl.type('ShapeBaseImageData.usesEnergy', 'bool') +bl.type('ShapeBaseImageData.accuFire', 'boolean') +bl.type('ShapeBaseImageData.cloakable', 'boolean') +bl.type('ShapeBaseImageData.correctMuzzleVector', 'boolean') +bl.type('ShapeBaseImageData.doColorShift', 'boolean') +bl.type('ShapeBaseImageData.emap', 'boolean') +bl.type('ShapeBaseImageData.firstPerson', 'boolean') +bl.type('ShapeBaseImageData.firstPersonParticles', 'boolean') +bl.type('ShapeBaseImageData.stateAllowImageChange', 'boolean') +bl.type('ShapeBaseImageData.stateDirection', 'boolean') +bl.type('ShapeBaseImageData.stateEjectShell', 'boolean') +bl.type('ShapeBaseImageData.stateFire', 'boolean') +bl.type('ShapeBaseImageData.stateIgnoreLoadedForReady', 'boolean') +bl.type('ShapeBaseImageData.stateSequenceRandomFlash', 'boolean') +bl.type('ShapeBaseImageData.stateWaitForTimeout', 'boolean') +bl.type('ShapeBaseImageData.usesEnergy', 'boolean') bl.type('ShapeBaseImageData::onBallTrigger:1', 'object') bl.type('SharkHoleBot::onAdd:1', 'object') bl.type('SharkHoleBot::onBotCollision:1', 'object') @@ -2701,7 +2701,7 @@ bl.type('SimObject::getVariable:1', 'object') bl.type('SimObject::onCameraEnterOrbit:1', 'object') bl.type('SimObject::onCameraLeaveOrbit:1', 'object') bl.type('SimObject::processInputEvent:1', 'object') -bl.type('SimObject::save', 'bool') +bl.type('SimObject::save', 'boolean') bl.type('SimObject::save:1', 'object') bl.type('SimObject::schedule:1', 'object') bl.type('SimObject::scheduleNoQuota:1', 'object') @@ -2719,16 +2719,16 @@ bl.type('SimSet::deleteAll:1', 'object') bl.type('SimSet::getCount:1', 'object') bl.type('SimSet::getObject', 'object') bl.type('SimSet::getObject:1', 'object') -bl.type('SimSet::isMember', 'bool') +bl.type('SimSet::isMember', 'boolean') bl.type('SimSet::isMember:1', 'object') bl.type('SimSet::listObjects:1', 'object') bl.type('SimSet::pushToBack:1', 'object') bl.type('SimSet::remove:1', 'object') bl.type('SkiItem::onUse:1', 'object') bl.type('SkiWeaponImage::onFire:1', 'object') -bl.type('Sky.noRenderBans', 'bool') -bl.type('Sky.renderBottomTexture', 'bool') -bl.type('Sky.windEffectPrecipitation', 'bool') +bl.type('Sky.noRenderBans', 'boolean') +bl.type('Sky.renderBottomTexture', 'boolean') +bl.type('Sky.windEffectPrecipitation', 'boolean') bl.type('Sky::getWindVelocity:1', 'object') bl.type('Sky::sendUpdate:1', 'object') bl.type('Sky::setWindVelocity:1', 'object') @@ -2867,29 +2867,29 @@ bl.type('Slayer_Teams_Advanced_Selector::onSelect:1', 'object') bl.type('Slayer_Teams_MovePlayerName::refreshList:1', 'object') bl.type('Slayer_Teams_Selector::onDeleteKey:1', 'object') bl.type('Slayer_Teams_Selector::onSelect:1', 'object') -bl.type('SpawnSphere.canSetIFLs', 'bool') -bl.type('StaticShape.canSetIFLs', 'bool') +bl.type('SpawnSphere.canSetIFLs', 'boolean') +bl.type('StaticShape.canSetIFLs', 'boolean') bl.type('StaticShape::explode:1', 'object') -bl.type('StaticShapeData.emap', 'bool') -bl.type('StaticShapeData.firstPersonOnly', 'bool') -bl.type('StaticShapeData.inheritEnergyFromMount', 'bool') -bl.type('StaticShapeData.isInvincible', 'bool') -bl.type('StaticShapeData.noIndividualDamage', 'bool') -bl.type('StaticShapeData.observeThroughObject', 'bool') -bl.type('StaticShapeData.renderWhenDestroyed', 'bool') -bl.type('StaticShapeData.thirdPersonOnly', 'bool') -bl.type('StaticShapeData.useEyePoint', 'bool') +bl.type('StaticShapeData.emap', 'boolean') +bl.type('StaticShapeData.firstPersonOnly', 'boolean') +bl.type('StaticShapeData.inheritEnergyFromMount', 'boolean') +bl.type('StaticShapeData.isInvincible', 'boolean') +bl.type('StaticShapeData.noIndividualDamage', 'boolean') +bl.type('StaticShapeData.observeThroughObject', 'boolean') +bl.type('StaticShapeData.renderWhenDestroyed', 'boolean') +bl.type('StaticShapeData.thirdPersonOnly', 'boolean') +bl.type('StaticShapeData.useEyePoint', 'boolean') bl.type('StaticShapeData::Damage:1', 'object') bl.type('StaticShapeData::create:1', 'object') bl.type('StaticShapeData::onAdd:1', 'object') -bl.type('SteamAPI_Init', 'bool') -bl.type('SteamEnabled', 'bool') +bl.type('SteamAPI_Init', 'boolean') +bl.type('SteamEnabled', 'boolean') bl.type('SteamGreenLightGui::ClickBack:1', 'object') bl.type('SteamGreenLightGui::clickForward:1', 'object') bl.type('SteamGreenLightGui::onRender:1', 'object') bl.type('SteamGreenLightGui::onWake:1', 'object') -bl.type('SteamSetLobbyIP', 'bool') -bl.type('SteamSetLobbyPort', 'bool') +bl.type('SteamSetLobbyIP', 'boolean') +bl.type('SteamSetLobbyPort', 'boolean') bl.type('Sun::sendUpdate:1', 'object') bl.type('TCPObject::connect:1', 'object') bl.type('TCPObject::delete:1', 'object') @@ -2898,7 +2898,7 @@ bl.type('TCPObject::listen:1', 'object') bl.type('TCPObject::saveBufferToFile:1', 'object') bl.type('TCPObject::send:1', 'object') bl.type('TCPObject::setBinary:1', 'object') -bl.type('TCPObject::setBinary:2', 'bool') +bl.type('TCPObject::setBinary:2', 'boolean') bl.type('TCPObject::setBinarySize:1', 'object') bl.type('TankShellProjectile::onCollision:1', 'object') bl.type('TankSmokeImage::onDone:1', 'object') @@ -2907,7 +2907,7 @@ bl.type('TankVehicle::Damage:1', 'object') bl.type('Trigger::getNumObjects:1', 'object') bl.type('Trigger::getObject:1', 'object') bl.type('Trigger::onAdd:1', 'object') -bl.type('Trigger::removeObjectById', 'bool') +bl.type('Trigger::removeObjectById', 'boolean') bl.type('Trigger::removeObjectById:1', 'object') bl.type('TriggerData::onAdd:1', 'object') bl.type('TriggerData::onEnterTrigger:1', 'object') @@ -2917,9 +2917,9 @@ bl.type('TrustInviteGui::ClickAccept:1', 'object') bl.type('TrustInviteGui::ClickIgnore:1', 'object') bl.type('TrustInviteGui::ClickReject:1', 'object') bl.type('TrustInviteGui::Ignore:1', 'object') -bl.type('VBOSupport', 'bool') -bl.type('Vehicle.canSetIFLs', 'bool') -bl.type('Vehicle.disableMove', 'bool') +bl.type('VBOSupport', 'boolean') +bl.type('Vehicle.canSetIFLs', 'boolean') +bl.type('Vehicle.disableMove', 'boolean') bl.type('Vehicle::finalExplosion:1', 'object') bl.type('Vehicle::lavaDamage:1', 'object') bl.type('Vehicle::onActivate:1', 'object') @@ -2929,68 +2929,68 @@ bl.type('Vehicle::onRemove:1', 'object') bl.type('Vehicle::setAngularVelocity:1', 'object') bl.type('Vehicle::teleportEffect:1', 'object') bl.type('Vehicle::tumbleCheck:1', 'object') -bl.type('VehicleData.cameraRoll', 'bool') -bl.type('VehicleData.emap', 'bool') -bl.type('VehicleData.firstPersonOnly', 'bool') -bl.type('VehicleData.inheritEnergyFromMount', 'bool') -bl.type('VehicleData.isInvincible', 'bool') -bl.type('VehicleData.observeThroughObject', 'bool') -bl.type('VehicleData.renderWhenDestroyed', 'bool') -bl.type('VehicleData.rideAble', 'bool') -bl.type('VehicleData.thirdPersonOnly', 'bool') -bl.type('VehicleData.useEyePoint', 'bool') +bl.type('VehicleData.cameraRoll', 'boolean') +bl.type('VehicleData.emap', 'boolean') +bl.type('VehicleData.firstPersonOnly', 'boolean') +bl.type('VehicleData.inheritEnergyFromMount', 'boolean') +bl.type('VehicleData.isInvincible', 'boolean') +bl.type('VehicleData.observeThroughObject', 'boolean') +bl.type('VehicleData.renderWhenDestroyed', 'boolean') +bl.type('VehicleData.rideAble', 'boolean') +bl.type('VehicleData.thirdPersonOnly', 'boolean') +bl.type('VehicleData.useEyePoint', 'boolean') bl.type('VehicleData::onCollision:1', 'object') bl.type('VehicleData::onDriverLeave:1', 'object') bl.type('VehicleData::onEnterLiquid:1', 'object') bl.type('VehicleData::onLeaveLiquid:1', 'object') -bl.type('VehicleSpawnMarker.canSetIFLs', 'bool') -bl.type('VehicleSpawnMarker.reColorVehicle', 'bool') -bl.type('VehicleSpawnMarker::getReColorVehicle', 'bool') +bl.type('VehicleSpawnMarker.canSetIFLs', 'boolean') +bl.type('VehicleSpawnMarker.reColorVehicle', 'boolean') +bl.type('VehicleSpawnMarker::getReColorVehicle', 'boolean') bl.type('VehicleSpawnMarker::getReColorVehicle:1', 'object') bl.type('VehicleSpawnMarker::getUiName:1', 'object') bl.type('VehicleSpawnMarker::onAdd:1', 'object') bl.type('VehicleSpawnMarker::onRemove:1', 'object') bl.type('VehicleSpawnMarker::setData:1', 'object') -bl.type('VehicleSpawnMarker::setData:3', 'bool') +bl.type('VehicleSpawnMarker::setData:3', 'boolean') bl.type('WandImage::onFire:1', 'object') bl.type('WandImage::onHitObject:1', 'object') bl.type('WandImage::onPreFire:1', 'object') bl.type('WandImage::onStopFire:1', 'object') bl.type('WandItem::onUse:1', 'object') -bl.type('WayPoint.canSetIFLs', 'bool') +bl.type('WayPoint.canSetIFLs', 'boolean') bl.type('Weapon::onInventory:1', 'object') bl.type('Weapon::onPickup:1', 'object') bl.type('Weapon::onUse:1', 'object') bl.type('WeaponImage::onFire:1', 'object') bl.type('WeaponImage::onMount:1', 'object') bl.type('WeaponImage::onUnMount:1', 'object') -bl.type('WheeledVehicle.canSetIFLs', 'bool') -bl.type('WheeledVehicle.disableMove', 'bool') +bl.type('WheeledVehicle.canSetIFLs', 'boolean') +bl.type('WheeledVehicle.disableMove', 'boolean') bl.type('WheeledVehicle::getWheelCount:1', 'object') -bl.type('WheeledVehicle::getWheelPowered', 'bool') +bl.type('WheeledVehicle::getWheelPowered', 'boolean') bl.type('WheeledVehicle::getWheelPowered:1', 'object') -bl.type('WheeledVehicle::setWheelPowered', 'bool') +bl.type('WheeledVehicle::setWheelPowered', 'boolean') bl.type('WheeledVehicle::setWheelPowered:1', 'object') -bl.type('WheeledVehicle::setWheelPowered:3', 'bool') -bl.type('WheeledVehicle::setWheelSpring', 'bool') +bl.type('WheeledVehicle::setWheelPowered:3', 'boolean') +bl.type('WheeledVehicle::setWheelSpring', 'boolean') bl.type('WheeledVehicle::setWheelSpring:1', 'object') -bl.type('WheeledVehicle::setWheelSteering', 'bool') +bl.type('WheeledVehicle::setWheelSteering', 'boolean') bl.type('WheeledVehicle::setWheelSteering:1', 'object') -bl.type('WheeledVehicle::setWheelTire', 'bool') +bl.type('WheeledVehicle::setWheelTire', 'boolean') bl.type('WheeledVehicle::setWheelTire:1', 'object') -bl.type('WheeledVehicleData.cameraRoll', 'bool') -bl.type('WheeledVehicleData.emap', 'bool') -bl.type('WheeledVehicleData.firstPersonOnly', 'bool') -bl.type('WheeledVehicleData.inheritEnergyFromMount', 'bool') -bl.type('WheeledVehicleData.isInvincible', 'bool') -bl.type('WheeledVehicleData.isSled', 'bool') -bl.type('WheeledVehicleData.observeThroughObject', 'bool') -bl.type('WheeledVehicleData.renderWhenDestroyed', 'bool') -bl.type('WheeledVehicleData.rideAble', 'bool') -bl.type('WheeledVehicleData.steeringUseAutoReturn', 'bool') -bl.type('WheeledVehicleData.steeringUseStrafeSteering', 'bool') -bl.type('WheeledVehicleData.thirdPersonOnly', 'bool') -bl.type('WheeledVehicleData.useEyePoint', 'bool') +bl.type('WheeledVehicleData.cameraRoll', 'boolean') +bl.type('WheeledVehicleData.emap', 'boolean') +bl.type('WheeledVehicleData.firstPersonOnly', 'boolean') +bl.type('WheeledVehicleData.inheritEnergyFromMount', 'boolean') +bl.type('WheeledVehicleData.isInvincible', 'boolean') +bl.type('WheeledVehicleData.isSled', 'boolean') +bl.type('WheeledVehicleData.observeThroughObject', 'boolean') +bl.type('WheeledVehicleData.renderWhenDestroyed', 'boolean') +bl.type('WheeledVehicleData.rideAble', 'boolean') +bl.type('WheeledVehicleData.steeringUseAutoReturn', 'boolean') +bl.type('WheeledVehicleData.steeringUseStrafeSteering', 'boolean') +bl.type('WheeledVehicleData.thirdPersonOnly', 'boolean') +bl.type('WheeledVehicleData.useEyePoint', 'boolean') bl.type('WheeledVehicleData::Damage:1', 'object') bl.type('WheeledVehicleData::create:1', 'object') bl.type('WheeledVehicleData::onAdd:1', 'object') @@ -3001,29 +3001,29 @@ bl.type('WhoTalkSO::Display:1', 'object') bl.type('WhoTalkSO::HasID:1', 'object') bl.type('WhoTalkSO::addID:1', 'object') bl.type('WhoTalkSO::removeID:1', 'object') -bl.type('WorldEditor.axisGizmoActive', 'bool') -bl.type('WorldEditor.boundingBoxCollision', 'bool') -bl.type('WorldEditor.clipToParent', 'bool') -bl.type('WorldEditor.enabled', 'bool') -bl.type('WorldEditor.isDirty', 'bool') -bl.type('WorldEditor.objectsUseBoxCenter', 'bool') -bl.type('WorldEditor.planarMovement', 'bool') -bl.type('WorldEditor.renderMissionArea', 'bool') -bl.type('WorldEditor.renderNav', 'bool') -bl.type('WorldEditor.renderObjHandle', 'bool') -bl.type('WorldEditor.renderObjText', 'bool') -bl.type('WorldEditor.renderPlane', 'bool') -bl.type('WorldEditor.renderPlaneHashes', 'bool') -bl.type('WorldEditor.renderPopupBackground', 'bool') -bl.type('WorldEditor.renderSelectionBox', 'bool') -bl.type('WorldEditor.selectionLocked', 'bool') -bl.type('WorldEditor.showMousePopupInfo', 'bool') -bl.type('WorldEditor.snapRotations', 'bool') -bl.type('WorldEditor.snapToGrid', 'bool') -bl.type('WorldEditor.toggleIgnoreList', 'bool') -bl.type('WorldEditor.visible', 'bool') +bl.type('WorldEditor.axisGizmoActive', 'boolean') +bl.type('WorldEditor.boundingBoxCollision', 'boolean') +bl.type('WorldEditor.clipToParent', 'boolean') +bl.type('WorldEditor.enabled', 'boolean') +bl.type('WorldEditor.isDirty', 'boolean') +bl.type('WorldEditor.objectsUseBoxCenter', 'boolean') +bl.type('WorldEditor.planarMovement', 'boolean') +bl.type('WorldEditor.renderMissionArea', 'boolean') +bl.type('WorldEditor.renderNav', 'boolean') +bl.type('WorldEditor.renderObjHandle', 'boolean') +bl.type('WorldEditor.renderObjText', 'boolean') +bl.type('WorldEditor.renderPlane', 'boolean') +bl.type('WorldEditor.renderPlaneHashes', 'boolean') +bl.type('WorldEditor.renderPopupBackground', 'boolean') +bl.type('WorldEditor.renderSelectionBox', 'boolean') +bl.type('WorldEditor.selectionLocked', 'boolean') +bl.type('WorldEditor.showMousePopupInfo', 'boolean') +bl.type('WorldEditor.snapRotations', 'boolean') +bl.type('WorldEditor.snapToGrid', 'boolean') +bl.type('WorldEditor.toggleIgnoreList', 'boolean') +bl.type('WorldEditor.visible', 'boolean') bl.type('WorldEditor::addUndoState:1', 'object') -bl.type('WorldEditor::canPasteSelection', 'bool') +bl.type('WorldEditor::canPasteSelection', 'boolean') bl.type('WorldEditor::canPasteSelection:1', 'object') bl.type('WorldEditor::clearIgnoreList:1', 'object') bl.type('WorldEditor::clearSelection:1', 'object') @@ -3036,10 +3036,10 @@ bl.type('WorldEditor::getSelectedObject:1', 'object') bl.type('WorldEditor::getSelectionCentroid:1', 'object') bl.type('WorldEditor::getSelectionSize:1', 'object') bl.type('WorldEditor::hideSelection:1', 'object') -bl.type('WorldEditor::hideSelection:2', 'bool') +bl.type('WorldEditor::hideSelection:2', 'boolean') bl.type('WorldEditor::ignoreObjClass:1', 'object') bl.type('WorldEditor::lockSelection:1', 'object') -bl.type('WorldEditor::lockSelection:2', 'bool') +bl.type('WorldEditor::lockSelection:2', 'boolean') bl.type('WorldEditor::pasteSelection:1', 'object') bl.type('WorldEditor::redirectConsole:1', 'object') bl.type('WorldEditor::redo:1', 'object') @@ -3060,26 +3060,26 @@ bl.type('ZombieHoleBot::onBotFollow:1', 'object') bl.type('ZombieHoleBot::onBotLoop:1', 'object') bl.type('aboutDlg::onWake:1', 'object') bl.type('aboutText::onURL:1', 'object') -bl.type('activateKeyboard', 'bool') +bl.type('activateKeyboard', 'boolean') bl.type('addBanGui::ban:1', 'object') bl.type('addBanGui::clickForever:1', 'object') bl.type('addBanGui::onSleep:1', 'object') bl.type('addBanGui::onWake:1', 'object') bl.type('addBanGui::setVictim:1', 'object') -bl.type('addCardProfile:11', 'bool') -bl.type('addCardProfile:12', 'bool') -bl.type('addCardProfile:13', 'bool') -bl.type('addCardProfile:3', 'bool') -bl.type('addCardProfile:4', 'bool') -bl.type('addCardProfile:5', 'bool') -bl.type('addCardProfile:6', 'bool') -bl.type('addCardProfile:7', 'bool') -bl.type('addCardProfile:8', 'bool') -bl.type('addCardProfile:9', 'bool') -bl.type('addMaterialMapping', 'bool') -bl.type('addOSCardProfile:3', 'bool') -bl.type('addOSCardProfile:4', 'bool') -bl.type('addOSCardProfile:5', 'bool') +bl.type('addCardProfile:11', 'boolean') +bl.type('addCardProfile:12', 'boolean') +bl.type('addCardProfile:13', 'boolean') +bl.type('addCardProfile:3', 'boolean') +bl.type('addCardProfile:4', 'boolean') +bl.type('addCardProfile:5', 'boolean') +bl.type('addCardProfile:6', 'boolean') +bl.type('addCardProfile:7', 'boolean') +bl.type('addCardProfile:8', 'boolean') +bl.type('addCardProfile:9', 'boolean') +bl.type('addMaterialMapping', 'boolean') +bl.type('addOSCardProfile:3', 'boolean') +bl.type('addOSCardProfile:4', 'boolean') +bl.type('addOSCardProfile:5', 'boolean') bl.type('adminGui::ClickClearBricks:1', 'object') bl.type('adminGui::ClickGameMode:1', 'object') bl.type('adminGui::ClickServerSettings:1', 'object') @@ -3090,10 +3090,10 @@ bl.type('adminGui::openEnvGui:1', 'object') bl.type('adminGui::sortList:1', 'object') bl.type('adminGui::sortNumList:1', 'object') bl.type('adminGui::spy:1', 'object') -bl.type('alxIsPlaying', 'bool') -bl.type('alxSetChannelVolume', 'bool') -bl.type('amIDrivingAVehicle', 'bool') -bl.type('amIStrafeSteering', 'bool') +bl.type('alxIsPlaying', 'boolean') +bl.type('alxSetChannelVolume', 'boolean') +bl.type('amIDrivingAVehicle', 'boolean') +bl.type('amIStrafeSteering', 'boolean') bl.type('ammo::onInventory:1', 'object') bl.type('authTCPobj_Client::onConnectFailed:1', 'object') bl.type('authTCPobj_Client::onConnected:1', 'object') @@ -3198,14 +3198,14 @@ bl.type('colorGui::popUp:1', 'object') bl.type('colorGui::setMode:1', 'object') bl.type('colorGui::update:1', 'object') bl.type('commandToClient:1', 'object') -bl.type('compile', 'bool') +bl.type('compile', 'boolean') bl.type('connectingGui::cancel:1', 'object') bl.type('connectingGui::onWake:1', 'object') -bl.type('containerBoxClear', 'bool') -bl.type('containerBoxEmpty', 'bool') +bl.type('containerBoxClear', 'boolean') +bl.type('containerBoxEmpty', 'boolean') bl.type('containerRayCast:4', 'object') -bl.type('createCanvas', 'bool') -bl.type('createPath', 'bool') +bl.type('createCanvas', 'boolean') +bl.type('createPath', 'boolean') bl.type('customAvatarGui::ClickX:1', 'object') bl.type('customAvatarGui::onWake:1', 'object') bl.type('customAvatar_modelSelect::onSelect:1', 'object') @@ -3218,7 +3218,7 @@ bl.type('defaultControlsGui::apply:1', 'object') bl.type('defaultControlsGui::clickClose:1', 'object') bl.type('defaultControlsGui::onSleep:1', 'object') bl.type('defaultControlsGui::onWake:1', 'object') -bl.type('discoverFile', 'bool') +bl.type('discoverFile', 'boolean') bl.type('dodgeballImage::onBallTrigger:1', 'object') bl.type('dodgeballImage::onCharge:1', 'object') bl.type('dodgeballImage::onFire:1', 'object') @@ -3226,20 +3226,20 @@ bl.type('dodgeballImage::onMount:1', 'object') bl.type('dodgeballImage::onUnMount:1', 'object') bl.type('dodgeballItem::onUse:1', 'object') bl.type('dodgeballProjectile::onCollision:1', 'object') -bl.type('doesAllowConnections', 'bool') -bl.type('dofScreenShot', 'bool') -bl.type('enableJoystick', 'bool') -bl.type('enableMouse', 'bool') -bl.type('enableWinConsole:1', 'bool') +bl.type('doesAllowConnections', 'boolean') +bl.type('dofScreenShot', 'boolean') +bl.type('enableJoystick', 'boolean') +bl.type('enableMouse', 'boolean') +bl.type('enableWinConsole:1', 'boolean') bl.type('escapeMenu::clickAdmin:1', 'object') bl.type('escapeMenu::clickLoadBricks:1', 'object') bl.type('escapeMenu::clickMinigames:1', 'object') bl.type('escapeMenu::clickSaveBricks:1', 'object') bl.type('escapeMenu::onWake:1', 'object') bl.type('escapeMenu::toggle:1', 'object') -bl.type('exec', 'bool') -bl.type('fileCopy', 'bool') -bl.type('fileDelete', 'bool') +bl.type('exec', 'boolean') +bl.type('fileCopy', 'boolean') +bl.type('fileDelete', 'boolean') bl.type('filtersGui::onSleep:1', 'object') bl.type('filtersGui::onWake:1', 'object') bl.type('flatPaintProjectile::onCollision:1', 'object') @@ -3251,9 +3251,9 @@ bl.type('footballImage::onMount:1', 'object') bl.type('footballImage::onUnMount:1', 'object') bl.type('footballProjectile::onCollision:1', 'object') bl.type('footballProjectile::onRest:1', 'object') -bl.type('fxDTSBrick.isBasePlate', 'bool') -bl.type('fxDTSBrick.isPlanted', 'bool') -bl.type('fxDTSBrick::canExplode', 'bool') +bl.type('fxDTSBrick.isBasePlate', 'boolean') +bl.type('fxDTSBrick.isPlanted', 'boolean') +bl.type('fxDTSBrick::canExplode', 'boolean') bl.type('fxDTSBrick::canExplode:1', 'object') bl.type('fxDTSBrick::colorVehicle:1', 'object') bl.type('fxDTSBrick::delete:1', 'object') @@ -3281,31 +3281,31 @@ bl.type('fxDTSBrick::getPrintID:1', 'object') bl.type('fxDTSBrick::getShapeFxID:1', 'object') bl.type('fxDTSBrick::getUpBrick', 'object') bl.type('fxDTSBrick::getUpBrick:1', 'object') -bl.type('fxDTSBrick::hasFakePathToGround', 'bool') +bl.type('fxDTSBrick::hasFakePathToGround', 'boolean') bl.type('fxDTSBrick::hasFakePathToGround:1', 'object') -bl.type('fxDTSBrick::hasPathToGround', 'bool') +bl.type('fxDTSBrick::hasPathToGround', 'boolean') bl.type('fxDTSBrick::hasPathToGround:1', 'object') -bl.type('fxDTSBrick::isBasePlate', 'bool') +bl.type('fxDTSBrick::isBasePlate', 'boolean') bl.type('fxDTSBrick::isBasePlate:1', 'object') -bl.type('fxDTSBrick::isColliding', 'bool') +bl.type('fxDTSBrick::isColliding', 'boolean') bl.type('fxDTSBrick::isColliding:1', 'object') -bl.type('fxDTSBrick::isDead', 'bool') +bl.type('fxDTSBrick::isDead', 'boolean') bl.type('fxDTSBrick::isDead:1', 'object') -bl.type('fxDTSBrick::isExposed', 'bool') +bl.type('fxDTSBrick::isExposed', 'boolean') bl.type('fxDTSBrick::isExposed:1', 'object') -bl.type('fxDTSBrick::isFakeDead', 'bool') +bl.type('fxDTSBrick::isFakeDead', 'boolean') bl.type('fxDTSBrick::isFakeDead:1', 'object') -bl.type('fxDTSBrick::isInSceneGraph', 'bool') +bl.type('fxDTSBrick::isInSceneGraph', 'boolean') bl.type('fxDTSBrick::isInSceneGraph:1', 'object') -bl.type('fxDTSBrick::isInTree', 'bool') +bl.type('fxDTSBrick::isInTree', 'boolean') bl.type('fxDTSBrick::isInTree:1', 'object') -bl.type('fxDTSBrick::isPlanted', 'bool') +bl.type('fxDTSBrick::isPlanted', 'boolean') bl.type('fxDTSBrick::isPlanted:1', 'object') -bl.type('fxDTSBrick::isRayCasting', 'bool') +bl.type('fxDTSBrick::isRayCasting', 'boolean') bl.type('fxDTSBrick::isRayCasting:1', 'object') -bl.type('fxDTSBrick::isRendering', 'bool') +bl.type('fxDTSBrick::isRendering', 'boolean') bl.type('fxDTSBrick::isRendering:1', 'object') -bl.type('fxDTSBrick::isTreeRendering', 'bool') +bl.type('fxDTSBrick::isTreeRendering', 'boolean') bl.type('fxDTSBrick::isTreeRendering:1', 'object') bl.type('fxDTSBrick::killBrick:1', 'object') bl.type('fxDTSBrick::onDeath:1', 'object') @@ -3314,40 +3314,40 @@ bl.type('fxDTSBrick::onRemove:1', 'object') bl.type('fxDTSBrick::plant:1', 'object') bl.type('fxDTSBrick::sendWrenchData:1', 'object') bl.type('fxDTSBrick::setColliding:1', 'object') -bl.type('fxDTSBrick::setColliding:2', 'bool') +bl.type('fxDTSBrick::setColliding:2', 'boolean') bl.type('fxDTSBrick::setColor:1', 'object') bl.type('fxDTSBrick::setColorFX:1', 'object') -bl.type('fxDTSBrick::setDataBlock', 'bool') +bl.type('fxDTSBrick::setDataBlock', 'boolean') bl.type('fxDTSBrick::setDataBlock:1', 'object') bl.type('fxDTSBrick::setItem:1', 'object') bl.type('fxDTSBrick::setItemPosition:1', 'object') bl.type('fxDTSBrick::setItemRespawntime:1', 'object') bl.type('fxDTSBrick::setPrint:1', 'object') bl.type('fxDTSBrick::setRayCasting:1', 'object') -bl.type('fxDTSBrick::setRayCasting:2', 'bool') +bl.type('fxDTSBrick::setRayCasting:2', 'boolean') bl.type('fxDTSBrick::setRendering:1', 'object') -bl.type('fxDTSBrick::setRendering:2', 'bool') +bl.type('fxDTSBrick::setRendering:2', 'boolean') bl.type('fxDTSBrick::setShapeFX:1', 'object') bl.type('fxDTSBrick::setTrusted:1', 'object') -bl.type('fxDTSBrick::setTrusted:2', 'bool') +bl.type('fxDTSBrick::setTrusted:2', 'boolean') bl.type('fxDTSBrick::trustCheckFinished:1', 'object') -bl.type('fxDTSBrick::willCauseChainKill', 'bool') +bl.type('fxDTSBrick::willCauseChainKill', 'boolean') bl.type('fxDTSBrick::willCauseChainKill:1', 'object') -bl.type('fxDTSBrickData.alwaysShowWireFrame', 'bool') +bl.type('fxDTSBrickData.alwaysShowWireFrame', 'boolean') bl.type('fxDTSBrickData.brickSizeX', 'object') bl.type('fxDTSBrickData.brickSizeY', 'object') bl.type('fxDTSBrickData.brickSizeZ', 'object') -bl.type('fxDTSBrickData.canCoverBottom', 'bool') -bl.type('fxDTSBrickData.canCoverEast', 'bool') -bl.type('fxDTSBrickData.canCoverNorth', 'bool') -bl.type('fxDTSBrickData.canCoverSouth', 'bool') -bl.type('fxDTSBrickData.canCoverTop', 'bool') -bl.type('fxDTSBrickData.canCoverWest', 'bool') -bl.type('fxDTSBrickData.hasPrint', 'bool') -bl.type('fxDTSBrickData.indestructable', 'bool') -bl.type('fxDTSBrickData.isWaterBrick', 'bool') +bl.type('fxDTSBrickData.canCoverBottom', 'boolean') +bl.type('fxDTSBrickData.canCoverEast', 'boolean') +bl.type('fxDTSBrickData.canCoverNorth', 'boolean') +bl.type('fxDTSBrickData.canCoverSouth', 'boolean') +bl.type('fxDTSBrickData.canCoverTop', 'boolean') +bl.type('fxDTSBrickData.canCoverWest', 'boolean') +bl.type('fxDTSBrickData.hasPrint', 'boolean') +bl.type('fxDTSBrickData.indestructable', 'boolean') +bl.type('fxDTSBrickData.isWaterBrick', 'boolean') bl.type('fxDTSBrickData::disappear:1', 'object') -bl.type('fxDTSBrickData::getBlockArrayBit', 'bool') +bl.type('fxDTSBrickData::getBlockArrayBit', 'boolean') bl.type('fxDTSBrickData::getBlockArrayBit:1', 'object') bl.type('fxDTSBrickData::getMaxSide:1', 'object') bl.type('fxDTSBrickData::getVolume:1', 'object') @@ -3367,13 +3367,13 @@ bl.type('fxDTSBrickData::onTrustCheckFinished:1', 'object') bl.type('fxDTSBrickData::onUse:1', 'object') bl.type('fxDTSBrickData::openTreasureChest:1', 'object') bl.type('fxDTSBrickData::reappear:1', 'object') -bl.type('fxDayCycle.targetUseDefaultVector', 'bool') +bl.type('fxDayCycle.targetUseDefaultVector', 'boolean') bl.type('fxDayCycle::sendUpdate:1', 'object') bl.type('fxDayCycle::setDayLength:1', 'object') bl.type('fxDayCycle::setDayOffset:1', 'object') bl.type('fxDayCycle::setEnabled:1', 'object') -bl.type('fxDayCycle::setEnabled:2', 'bool') -bl.type('fxLight.Enable', 'bool') +bl.type('fxDayCycle::setEnabled:2', 'boolean') +bl.type('fxLight.Enable', 'boolean') bl.type('fxLight::attachToBrick:1', 'object') bl.type('fxLight::attachToBrick:2', 'object') bl.type('fxLight::attachToObject:1', 'object') @@ -3384,46 +3384,46 @@ bl.type('fxLight::getTransform:1', 'object') bl.type('fxLight::onRemove:1', 'object') bl.type('fxLight::reset:1', 'object') bl.type('fxLight::setEnable:1', 'object') -bl.type('fxLight::setEnable:2', 'bool') -bl.type('fxLightData.AnimBrightness', 'bool') -bl.type('fxLightData.AnimColor', 'bool') -bl.type('fxLightData.AnimOffsets', 'bool') -bl.type('fxLightData.AnimRadius', 'bool') -bl.type('fxLightData.AnimRotation', 'bool') -bl.type('fxLightData.ConstantSizeOn', 'bool') -bl.type('fxLightData.FlareOn', 'bool') -bl.type('fxLightData.FlareTP', 'bool') -bl.type('fxLightData.LerpBrightness', 'bool') -bl.type('fxLightData.LerpColor', 'bool') -bl.type('fxLightData.LerpOffset', 'bool') -bl.type('fxLightData.LerpRadius', 'bool') -bl.type('fxLightData.LerpRotation', 'bool') -bl.type('fxLightData.LightOn', 'bool') -bl.type('fxLightData.LinkFlare', 'bool') -bl.type('fxLightData.LinkFlareSize', 'bool') -bl.type('fxLightData.SingleColorKeys', 'bool') -bl.type('fxPlane.additiveBlend', 'bool') -bl.type('fxPlane.blend', 'bool') -bl.type('fxPlane.colorMultiply', 'bool') -bl.type('fxPlane.isSolid', 'bool') +bl.type('fxLight::setEnable:2', 'boolean') +bl.type('fxLightData.AnimBrightness', 'boolean') +bl.type('fxLightData.AnimColor', 'boolean') +bl.type('fxLightData.AnimOffsets', 'boolean') +bl.type('fxLightData.AnimRadius', 'boolean') +bl.type('fxLightData.AnimRotation', 'boolean') +bl.type('fxLightData.ConstantSizeOn', 'boolean') +bl.type('fxLightData.FlareOn', 'boolean') +bl.type('fxLightData.FlareTP', 'boolean') +bl.type('fxLightData.LerpBrightness', 'boolean') +bl.type('fxLightData.LerpColor', 'boolean') +bl.type('fxLightData.LerpOffset', 'boolean') +bl.type('fxLightData.LerpRadius', 'boolean') +bl.type('fxLightData.LerpRotation', 'boolean') +bl.type('fxLightData.LightOn', 'boolean') +bl.type('fxLightData.LinkFlare', 'boolean') +bl.type('fxLightData.LinkFlareSize', 'boolean') +bl.type('fxLightData.SingleColorKeys', 'boolean') +bl.type('fxPlane.additiveBlend', 'boolean') +bl.type('fxPlane.blend', 'boolean') +bl.type('fxPlane.colorMultiply', 'boolean') +bl.type('fxPlane.isSolid', 'boolean') bl.type('fxPlane::sendUpdate:1', 'object') -bl.type('fxSunLight.AnimAzimuth', 'bool') -bl.type('fxSunLight.AnimBrightness', 'bool') -bl.type('fxSunLight.AnimColor', 'bool') -bl.type('fxSunLight.AnimElevation', 'bool') -bl.type('fxSunLight.AnimRotation', 'bool') -bl.type('fxSunLight.AnimSize', 'bool') -bl.type('fxSunLight.Enable', 'bool') -bl.type('fxSunLight.FlareTP', 'bool') -bl.type('fxSunLight.LerpAzimuth', 'bool') -bl.type('fxSunLight.LerpBrightness', 'bool') -bl.type('fxSunLight.LerpColor', 'bool') -bl.type('fxSunLight.LerpElevation', 'bool') -bl.type('fxSunLight.LerpRotation', 'bool') -bl.type('fxSunLight.LerpSize', 'bool') -bl.type('fxSunLight.LinkFlareSize', 'bool') -bl.type('fxSunLight.LockToRealSun', 'bool') -bl.type('fxSunLight.SingleColorKeys', 'bool') +bl.type('fxSunLight.AnimAzimuth', 'boolean') +bl.type('fxSunLight.AnimBrightness', 'boolean') +bl.type('fxSunLight.AnimColor', 'boolean') +bl.type('fxSunLight.AnimElevation', 'boolean') +bl.type('fxSunLight.AnimRotation', 'boolean') +bl.type('fxSunLight.AnimSize', 'boolean') +bl.type('fxSunLight.Enable', 'boolean') +bl.type('fxSunLight.FlareTP', 'boolean') +bl.type('fxSunLight.LerpAzimuth', 'boolean') +bl.type('fxSunLight.LerpBrightness', 'boolean') +bl.type('fxSunLight.LerpColor', 'boolean') +bl.type('fxSunLight.LerpElevation', 'boolean') +bl.type('fxSunLight.LerpRotation', 'boolean') +bl.type('fxSunLight.LerpSize', 'boolean') +bl.type('fxSunLight.LinkFlareSize', 'boolean') +bl.type('fxSunLight.LockToRealSun', 'boolean') +bl.type('fxSunLight.SingleColorKeys', 'boolean') bl.type('fxSunLight::reset:1', 'object') bl.type('fxSunLight::sendUpdate:1', 'object') bl.type('fxSunLight::setAzimuthKeys:1', 'object') @@ -3478,8 +3478,8 @@ bl.type('fxSunLight::setUseRotation:1', 'object') bl.type('fxSunLight::setUseSize:1', 'object') bl.type('getBrickLimit', 'object') bl.type('getCurrentQuotaObject', 'object') -bl.type('getParticleDisconnectMode', 'bool') -bl.type('glTexImage3D', 'bool') +bl.type('getParticleDisconnectMode', 'boolean') +bl.type('glTexImage3D', 'boolean') bl.type('glowPaintProjectile::onCollision:1', 'object') bl.type('greenKeyImage::onFire:1', 'object') bl.type('greenKeyImage::onHitObject:1', 'object') @@ -3518,24 +3518,24 @@ bl.type('horseSoccerBallStandImage::onBallTrigger:1', 'object') bl.type('horseSoccerBallStandImage::onFire:1', 'object') bl.type('horseSoccerBallStandImage::onMount:1', 'object') bl.type('horseSoccerBallStandImage::onUnMount:1', 'object') -bl.type('isDeviceFullScreenOnly', 'bool') -bl.type('isEventPending', 'bool') -bl.type('isFile', 'bool') -bl.type('isFullScreen', 'bool') -bl.type('isFunction', 'bool') -bl.type('isJoystickDetected', 'bool') -bl.type('isKoreanBuild', 'bool') -bl.type('isLANAddress', 'bool') -bl.type('isMacintosh', 'bool') -bl.type('isObject', 'bool') -bl.type('isPackage', 'bool') -bl.type('isUnlocked', 'bool') -bl.type('isWindows', 'bool') -bl.type('isWriteableFileName', 'bool') +bl.type('isDeviceFullScreenOnly', 'boolean') +bl.type('isEventPending', 'boolean') +bl.type('isFile', 'boolean') +bl.type('isFullScreen', 'boolean') +bl.type('isFunction', 'boolean') +bl.type('isJoystickDetected', 'boolean') +bl.type('isKoreanBuild', 'boolean') +bl.type('isLANAddress', 'boolean') +bl.type('isMacintosh', 'boolean') +bl.type('isObject', 'boolean') +bl.type('isPackage', 'boolean') +bl.type('isUnlocked', 'boolean') +bl.type('isWindows', 'boolean') +bl.type('isWriteableFileName', 'boolean') bl.type('jelloPaintProjectile::onCollision:1', 'object') bl.type('joinMiniGameGui::ClickLeave:1', 'object') bl.type('joinMiniGameGui::onWake:1', 'object') -bl.type('lockMouse:1', 'bool') +bl.type('lockMouse:1', 'boolean') bl.type('mm_Fade::OnWait:1', 'object') bl.type('mm_Fade::onDone:1', 'object') bl.type('newMessageHud::onSleep:1', 'object') @@ -3543,7 +3543,7 @@ bl.type('newMessageHud::onWake:1', 'object') bl.type('newMessageHud::open:1', 'object') bl.type('newMessageHud::updatePosition:1', 'object') bl.type('newMessageHud::updateTypePosition:1', 'object') -bl.type('nextResolution', 'bool') +bl.type('nextResolution', 'boolean') bl.type('noHudGui::onRender:1', 'object') bl.type('noHudGui::onSleep:1', 'object') bl.type('noHudGui::onWake:1', 'object') @@ -3569,14 +3569,14 @@ bl.type('optionsDlg::updateMaxViewDistance:1', 'object') bl.type('optionsDlg::updateTempBrickBlockers:1', 'object') bl.type('paintProjectile::onCollision:1', 'object') bl.type('pearlPaintProjectile::onCollision:1', 'object') -bl.type('playJournal:2', 'bool') +bl.type('playJournal:2', 'boolean') bl.type('postServerTCPObj::onConnectFailed:1', 'object') bl.type('postServerTCPObj::onConnected:1', 'object') bl.type('postServerTCPObj::onDNSFailed:1', 'object') bl.type('postServerTCPObj::onDisconnect:1', 'object') bl.type('postServerTCPObj::onLine:1', 'object') -bl.type('prevResolution', 'bool') -bl.type('protocolRegistryCheck', 'bool') +bl.type('prevResolution', 'boolean') +bl.type('protocolRegistryCheck', 'boolean') bl.type('pushBroomImage::onFire:1', 'object') bl.type('pushBroomImage::onStopFire:1', 'object') bl.type('queryMasterTCPObj::onConnectFailed:1', 'object') @@ -3590,11 +3590,11 @@ bl.type('redKeyImage::onFire:1', 'object') bl.type('redKeyImage::onHitObject:1', 'object') bl.type('redKeyImage::onPreFire:1', 'object') bl.type('redKeyImage::onStopFire:1', 'object') -bl.type('redbookClose', 'bool') -bl.type('redbookOpen', 'bool') -bl.type('redbookPlay', 'bool') -bl.type('redbookSetVolume', 'bool') -bl.type('redbookStop', 'bool') +bl.type('redbookClose', 'boolean') +bl.type('redbookOpen', 'boolean') +bl.type('redbookPlay', 'boolean') +bl.type('redbookSetVolume', 'boolean') +bl.type('redbookStop', 'boolean') bl.type('regNameGui::onClose:1', 'object') bl.type('regNameGui::onSleep:1', 'object') bl.type('regNameGui::onType:1', 'object') @@ -3607,7 +3607,7 @@ bl.type('regName_tcpObj::onDisconnect:1', 'object') bl.type('regName_tcpObj::onLine:1', 'object') bl.type('saveBricksGui::onSleep:1', 'object') bl.type('saveBricksGui::onWake:1', 'object') -bl.type('screenShot', 'bool') +bl.type('screenShot', 'boolean') bl.type('selectBLIDGui::onSleep:1', 'object') bl.type('selectBLIDGui::onWake:1', 'object') bl.type('selectBLIDGui::select:1', 'object') @@ -3616,20 +3616,20 @@ bl.type('servAuthTCPobj::onConnectFailed:1', 'object') bl.type('servAuthTCPobj::onConnected:1', 'object') bl.type('servAuthTCPobj::onDNSFailed:1', 'object') bl.type('servAuthTCPobj::onLine:1', 'object') -bl.type('serverCmdSymbolHandeler', 'bool') -bl.type('setClipboard', 'bool') +bl.type('serverCmdSymbolHandeler', 'boolean') +bl.type('setClipboard', 'boolean') bl.type('setCurrentQuotaObject:1', 'object') -bl.type('setDisplayDevice', 'bool') -bl.type('setDisplayDevice:5', 'bool') -bl.type('setEchoFileLoads:1', 'bool') +bl.type('setDisplayDevice', 'boolean') +bl.type('setDisplayDevice:5', 'boolean') +bl.type('setEchoFileLoads:1', 'boolean') bl.type('setJoinIP_tcpObj::onLine:1', 'object') -bl.type('setNetPort', 'bool') -bl.type('setRes', 'bool') -bl.type('setScreenMode', 'bool') -bl.type('setScreenMode:4', 'bool') -bl.type('setServerInfo', 'bool') -bl.type('setVerticalSync', 'bool') -bl.type('setVerticalSync:1', 'bool') +bl.type('setNetPort', 'boolean') +bl.type('setRes', 'boolean') +bl.type('setScreenMode', 'boolean') +bl.type('setScreenMode:4', 'boolean') +bl.type('setServerInfo', 'boolean') +bl.type('setVerticalSync', 'boolean') +bl.type('setVerticalSync:1', 'boolean') bl.type('skiVehicle::onAdd:1', 'object') bl.type('skiVehicle::onDriverLeave:1', 'object') bl.type('skiVehicle::onImpact:1', 'object') @@ -3653,22 +3653,22 @@ bl.type('spearImage::onCharge:1', 'object') bl.type('spearImage::onFire:1', 'object') bl.type('stablePaintProjectile::onCollision:1', 'object') bl.type('swirlPaintProjectile::onCollision:1', 'object') -bl.type('switchBitDepth', 'bool') +bl.type('switchBitDepth', 'boolean') bl.type('swordImage::onPreFire:1', 'object') bl.type('swordImage::onStopFire:1', 'object') bl.type('ti_tcp::onConnectFailed:1', 'object') bl.type('ti_tcp::onConnected:1', 'object') bl.type('ti_tcp::onDisconnect:1', 'object') bl.type('ti_tcp::onLine:1', 'object') -bl.type('toggleFullScreen', 'bool') -bl.type('trace:1', 'bool') +bl.type('toggleFullScreen', 'boolean') +bl.type('trace:1', 'boolean') bl.type('unBanGui::clickUnBan:1', 'object') bl.type('unBanGui::onSleep:1', 'object') bl.type('unBanGui::onWake:1', 'object') bl.type('unBanGui::sortList:1', 'object') bl.type('unBanGui::sortNumList:1', 'object') bl.type('unBanGui::unBan:1', 'object') -bl.type('upnpAdd', 'bool') +bl.type('upnpAdd', 'boolean') bl.type('wrenchBotDlg::LoadDataBlocks:1', 'object') bl.type('wrenchBotDlg::Respawn:1', 'object') bl.type('wrenchBotDlg::botOff:1', 'object') @@ -3694,7 +3694,8 @@ bl.type('ShapeBase::getPendingImage', 'object') bl.type('SimObject::getGroup', 'object') bl.type('containerSearchNext', 'object') bl.type('fxDTSBrick.client', 'object') -bl.type('getDataBlock', 'object') +bl.type('GameBase::getDataBlock', 'object') +bl.type('fxDTSBrick::getDataBlock', 'object') bl.type('alxPlay:1', 'object') -- Manually entered diff --git a/src/util/libbl.lua b/src/util/libbl.lua index 838594c..a903169 100644 --- a/src/util/libbl.lua +++ b/src/util/libbl.lua @@ -106,21 +106,29 @@ local function valToTs(val) error('valToTs: could not convert '..type(val), 3) end end +local function convertValFromTs(val, typ) + if typ=='boolean' then + return tsBool(val) + elseif typ=='object' then + return toTsObject(val) + else + error('valFromTs: invalid force type '..typ, 4) + end +end bl._forceType = bl._forceType or {} -local function valFromTs(val, name) +local function valFromTs(val, name, name2) -- todo: ensure name and name2 are already lowercase if type(val)~='string' then error('valFromTs: expected string, got '..type(val), 3) end if name then - local nameL = name:lower() - if bl._forceType[nameL] then - local typ = bl._forceType[nameL] - if typ=='boolean' then - return tsBool(val) - elseif typ=='object' then - return toTsObject(val) - else - error('valFromTs: invalid force type '..typ, 3) - end + name = name:lower() + if bl._forceType[name] then + return convertValFromTs(val, bl._forceType[name]) + end + end + if name2 then + name2 = name2:lower() + if bl._forceType[name2] then + return convertValFromTs(val, bl._forceType[name2]) end end -- '' -> nil @@ -151,22 +159,35 @@ end local function arglistToTs(args) return map(args, valToTs) end -function bl.type(name, typ) - if typ~='bool' and typ~='boolean' and typ~='object' and typ~=nil then - error('bl.type: can only set type to \'bool\' or \'object\' or nil', 2) end - if not isValidFuncNameNsArgn(name) then - error('bl.type: invalid function or variable name \''..name..'\'', 2) end - if typ=='bool' then typ='boolean' end - - bl._forceType[name:lower()] = typ - -- apply to children (wip) - --local class, rest = name:match('^([a-zA-Z0-9_]+)(::.+)$') - --if not class then - -- class, rest = name:match('^([a-zA-Z0-9_]+)(%..+)$') end - --if class then - -- - --end +local function classFromForceTypeStr(name) + local class, rest = name:match('^([a-zA-Z0-9_]+)(::.+)$') + if not class then + class, rest = name:match('^([a-zA-Z0-9_]+)(%..+)$') end + return class,rest end +local setForceType +setForceType = function(ftname, typ) + if typ~='boolean' and typ~='object' and typ~=nil then + error('bl.type: can only set type to \'boolean\', \'object\', or nil', 2) end + if not isValidFuncNameNsArgn(ftname) then + error('bl.type: invalid function or variable name \''..ftname..'\'', 2) end + + ftname = ftname:lower() + + bl._forceType[ftname] = typ + + -- apply to child classes if present + local cname, rest = classFromForceTypeStr(ftname) + if cname then + local meta = bl._objectUserMetas[cname] + if meta then + for chcname,_ in pairs(meta._children) do + setForceType(chcname..rest, typ) + end + end + end +end +bl.type = setForceType -- Value detection @@ -210,40 +231,47 @@ end local tsClassMeta = { __tostring = function(t) return 'torqueClass:'..t._name.. - (t._inherit and (':'..t._inherit) or '') + (t._inherit and (':'..t._inherit._name) or '') end, } bl._objectUserMetas = bl._objectUserMetas or {} -function bl.class(name, inherit) - if not ( type(name)=='string' and isValidFuncName(name) ) then +function bl.class(cname, inhname) + if not ( type(cname)=='string' and isValidFuncName(cname) ) then error('bl.class: argument #1: invalid class name', 2) end - if not ( inherit==nil or (type(inherit)=='string' and isValidFuncName(inherit)) ) then + if not ( inhname==nil or (type(inhname)=='string' and isValidFuncName(inhname)) ) then error('bl.class: argument #2: inherit name must be a string or nil', 2) end - name = name:lower() + cname = cname:lower() - local met = bl._objectUserMetas[name] or { - _name = name, + local met = bl._objectUserMetas[cname] or { + _name = cname, _inherit = nil, _children = {}, } - bl._objectUserMetas[name] = met + bl._objectUserMetas[cname] = met setmetatable(met, tsClassMeta) - if inherit then - inherit = inherit:lower() + if inhname then + inhname = inhname:lower() - local inh = bl._objectUserMetas[inherit] - if not inh then error('bl.class: argument #2: \''..inherit..'\' is not the '.. + local inh = bl._objectUserMetas[inhname] + if not inh then error('bl.class: argument #2: \''..inhname..'\' is not the '.. 'name of an existing class', 2) end - inh._children[name] = true + inh._children[cname] = true local inhI = met._inherit if inhI and inhI~=inh then error('bl.class: argument #2: class already exists and '.. 'inherits a different parent.', 2) end - met._inherit = inh + + -- apply inherited method and field types + for ftname, typ in pairs(bl._forceType) do + local cname2, rest = classFromForceTypeStr(ftname) + if cname2==inhname then + setForceType(cname..rest, typ) + end + end end end local function objectInheritedMetas(name) @@ -279,11 +307,15 @@ local tsObjectMeta = { return function(t, ...) local args = {...} local argsS = arglistToTs(args) - return valFromTs(_bllua_ts.callobj(rawget(t,'_tsObjectId'), name, unpack(argsS)), + return valFromTs( + _bllua_ts.callobj(rawget(t,'_tsObjectId'), name, unpack(argsS)), + rawget(t,'_tsName') and rawget(t,'_tsName')..'::'..name, rawget(t,'_tsNamespace')..'::'..name) end else - return valFromTs(_bllua_ts.getfield(rawget(t,'_tsObjectId'), name), + return valFromTs( + _bllua_ts.getfield(rawget(t,'_tsObjectId'), name), + rawget(t,'_tsName') and rawget(t,'_tsName')..'.'..name, rawget(t,'_tsNamespace')..'.'..name) end end @@ -489,7 +521,7 @@ local tsMeta = { -- bl.set(name, value) -- Used to set global variables function bl.set(name, val) - _bllua_ts.call('_bllua_set_var', name, valToTs(val)) + _bllua_ts.setvar(name, valToTs(val)) end -- Utility functions @@ -499,7 +531,7 @@ function bl.call(func, ...) return _bllua_ts.call(func, unpack(argsS)) end function bl.eval(code) - return valFromTs(_bllua_ts.call('eval', code)) + return valFromTs(_bllua_ts.eval(code)) end function bl.exec(file) return valFromTs(_bllua_ts.call('exec', file)) @@ -524,8 +556,13 @@ function bl.array(name, ...) local rest = {...} return name..table.concat(rest, '_') end -function _bllua_call(name, ...) - -- todo: call ts->lua using this instead of directly +function _bllua_call(fnameS, ...) + local args = arglistFromTs(fnameS:lower(), {...}) + if not _G[fnameS] then + error('luacall: no global lua function named \''..fnameS..'\'') end + -- todo: library fields and object methods + local res = _G[fnameS](args) + return valToTs(res) end -- bl.schedule: Use TS's schedule function to schedule lua calls @@ -544,7 +581,7 @@ function bl.schedule(time, cb, ...) bl._scheduleNextId = bl._scheduleNextId+1 local args = {...} local handle = tonumber(_bllua_ts.call('schedule', - time, 0, 'luacall', '_bllua_schedule_callback', id)) + time, 0, '_bllua_luacall', '_bllua_schedule_callback', id)) local sch = { callback = cb, args = args, @@ -554,8 +591,9 @@ function bl.schedule(time, cb, ...) bl._scheduleTable[id] = sch return sch end -function _bllua_schedule_callback(id) - id = tonumber(id) or error('_bllua_schedule_callback: invalid id: '..tostring(id)) +function _bllua_schedule_callback(idS) + local id = tonumber(idS) or + error('_bllua_schedule_callback: invalid id: '..tostring(idS)) local sch = bl._scheduleTable[id] if not sch then error('_bllua_schedule_callback: no schedule with id '..id) end bl._scheduleTable[id] = nil @@ -563,26 +601,48 @@ function _bllua_schedule_callback(id) end -- serverCmd and clientCmd --- bl.serverCmd('suicide', function(client) client.player:kill() end) bl._cmds = bl._cmds or {} -function _bllua_process_cmd(cmdS, clientS, ...) - local client = toTsObject(clientS) - local argsS = {...} - local args = arglistFromTs(cmdS, argsS) - local func = bl._cmds[cmdS] +function _bllua_process_cmd(cmdS, ...) + local cmd = cmdS:lower() + local args = arglistFromTs(cmd, {...}) + local func = bl._cmds[cmd] if not func then error('_bllua_process_cmd: no cmd named \''..cmd..'\'') end - pcall(func, client, unpack(args)) + func(unpack(args)) --pcall(func, unpack(args)) end local function addCmd(cmd, func) if not isValidFuncName(cmd) then error('addCmd: invalid function name \''..tostring(cmd)..'\'') end - bl._servercmds[cmd] = func - local arglist = '%a,%b,%c,%d,%e,%f,%g,%h' - _bllua_ts.eval('function '..cmd..'(%cl,'..arglist..'){'.. - 'luacall(_bllua_process_cmd,"'..cmd..'",%cl,'..arglist..');}') + bl._cmds[cmd] = func + local arglist = '%a,%b,%c,%d,%e,%f,%g,%h,%i,%j,%k,%l,%m,%n,%o,%p' + _bllua_ts.eval('function '..cmd..'('..arglist..'){'.. + '_bllua_luacall(_bllua_process_cmd,"'..cmd..'",'..arglist..');}') +end +function bl.addServerCmd(name, func) + name = name:lower() + addCmd('servercmd'..name, func) + bl._forceType['servercmd'..name..':1'] = 'object' +end +function bl.addClientCmd(name, func) + name = name:lower() + addCmd('clientcmd'..name, func) +end + +-- commandToServer and commandToClient +function bl.commandToServer(cmd, ...) + _bllua_ts.call('commandToServer', + _bllua_ts.call('addTaggedString', cmd), + unpack(arglistToTs({...}))) +end +function bl.commandToClient(cmd, ...) + _bllua_ts.call('commandToClient', + _bllua_ts.call('addTaggedString', cmd), + unpack(arglistToTs({...}))) +end +function bl.commandToAll(cmd, ...) + _bllua_ts.call('commandToAll', + _bllua_ts.call('addTaggedString', cmd), + unpack(arglistToTs({...}))) end -function bl.serverCmd(name, func) addCmd('serverCmd'..name, func) end -function bl.clientCmd(name, func) addCmd('clientCmd'..name, func) end -- Hooks (using TS packages) local function isPackageActive(pkg) @@ -603,42 +663,67 @@ local function deactivatePackage(pkg) _bllua_ts.call('deactivatePackage', pkg) end end +local hookNargs = 8 +local hookArglistLocal = '%a,%b,%c,%d,%e,%f,%g,%h' +local hookArglistGlobal = '$_bllua_hook_arg1,$_bllua_hook_arg2,$_bllua_hook_arg3,$_bllua_hook_arg4,$_bllua_hook_arg5,$_bllua_hook_arg6,$_bllua_hook_arg7,$_bllua_hook_arg8' bl._hooks = bl._hooks or {} -function _bllua_process_hook(pkgS, nameS, timeS, ...) - local argsS = {...} - local args = arglistFromTs(nameS, argsS) - +function _bllua_process_hook_before(pkgS, nameS, ...) + local args = arglistFromTs(nameS, {...}) local func = bl._hooks[pkgS] and bl._hooks[pkgS][nameS] and - bl._hooks[pkgS][nameS][timeS] + bl._hooks[pkgS][nameS].before if not func then - error('_bllua_process_hook: no hook for '..pkgS..':'..nameS..':'..timeS) end - - pcall(func, args) + error('_bllua_process_hook_before: no hook for '..pkgs..':'..nameS) end + _bllua_ts.setvar('_bllua_hook_abort', '0') + func(args) --pcall(func, args) + if args._return then + _bllua_ts.setvar('_bllua_hook_abort', '1') + _bllua_ts.setvar('_bllua_hook_return', valToTs(args._return)) + end + for i=1,hookNargs do + _bllua_ts.setvar('_bllua_hook_arg'..i, valToTs(args[i])) + end +end +function _bllua_process_hook_after(pkgS, nameS, resultS, ...) + nameS = nameS:lower() + local args = arglistFromTs(nameS, {...}) + args._return = valFromTs(resultS, nameS) + local func = bl._hooks[pkgS] and bl._hooks[pkgS][nameS] and + bl._hooks[pkgS][nameS].after + if not func then + error('_bllua_process_hook_after: no hook for '..pkgs..':'..nameS) end + func(args) --pcall(func, args) + return valToTs(args._return) end local function updateHook(pkg, name, hk) - local arglist = '%a,%b,%c,%d,%e,%f,%g,%h' local beforeCode = hk.before and - ('luacall("_bllua_process_hook", "'..pkg..'", "'..name.. - '", "before", '..arglist..');') or '' - local parentCode = hk.override and - ('luacall("_bllua_process_hook", "'..pkg..'", "'..name.. - '", "override", '..arglist..');') or - (tsIsFunctionNsname(name) and - ('parent::'..name:match('[^:]+$')..'('..arglist..');') or '') + ('_bllua_luacall("_bllua_process_hook_before", "'..pkg..'","'..name.. + '",'..hookArglistLocal..');') or '' + local arglist = (hk.before and hookArglistGlobal or hookArglistLocal) + local parentCode = + tsIsFunctionNsname(name) and -- only call parent if it exists + (hk.before and + 'if($_bllua_hook_abort)return $_bllua_hook_return; else ' or '').. + ((hk.after and '%result=' or 'return ').. + 'parent::'..name:match('[^:]+$').. + '('..arglist..');') or '' local afterCode = hk.after and - ('luacall("_bllua_process_hook", "'..pkg..'", "'..name.. - '", "after", '..arglist..');') or '' - bl.eval('package '..pkg..'{function '..name..'('..arglist..'){'.. - beforeCode..parentCode..afterCode..'}};') + ('return _bllua_luacall("_bllua_process_hook_after","'..pkg..'","'..name..'",%result,'.. + arglist..');') or '' + local code = + 'package '..pkg..'{'.. + 'function '..name..'('..hookArglistLocal..'){'.. + beforeCode..parentCode..afterCode.. + '}'.. + '};' + _bllua_ts.eval(code) end function bl.hook(pkg, name, time, func) if not isValidFuncName(pkg) then error('bl.hook: argument #1: invalid package name \''..tostring(pkg)..'\'', 2) end if not isValidFuncNameNs(name) then error('bl.hook: argument #2: invalid function name \''..tostring(name)..'\'', 2) end - if time~='before' and time~='after' and time~='override' then - error('bl.hook: argument #3: time must be one of '.. - '\'before\' \'after\' \'override\'', 2) end + if time~='before' and time~='after' then + error('bl.hook: argument #3: time must be \'before\' or \'after\'', 2) end if type(func)~='function' then error('bl.hook: argument #4: expected a function', 2) end @@ -654,9 +739,8 @@ function bl.unhook(pkg, name, time) error('bl.unhook: argument #1: invalid package name \''..tostring(pkg)..'\'', 2) end if not isValidFuncNameNs(name) then error('bl.unhook: argument #2: invalid function name \''..tostring(name)..'\'', 2) end - if time~='before' and time~='after' and time~='override' then - error('bl.unhook: argument #3: time must be one of '.. - '\'before\' \'after\' \'override\'', 2) end + if time~='before' and time~='after' then + error('bl.unhook: argument #3: time must be \'before\' or \'after\'', 2) end if not name then if bl._hooks[pkg] then @@ -679,15 +763,16 @@ function bl.unhook(pkg, name, time) end updateHook(pkg, name, {}) else - if time~='before' and time~='after' and time~='override' then - error('bl.unhook: argument #3: time must be nil or one of '.. - '\'before\' \'after\' \'override\'', 2) end + if time~='before' and time~='after' then + error('bl.unhook: argument #3: time must be nil, \'before\', or \'after\'', 2) end bl._hooks[pkg][name][time] = nil if table.empty(bl._hooks[pkg][name]) and table.empty(bl._hooks[pkg]) then bl._hooks[pkg] = nil deactivatePackage(pkg) + updateHook(pkg, name, {}) + else + updateHook(pkg, name, bl._hooks[pkg][name]) end - updateHook(pkg, name, bl._hooks[pkg][name]) end else --error('bl.unhook: no hooks registered for function \''..name.. diff --git a/src/util/libts.lua b/src/util/libts-lua.lua similarity index 97% rename from src/util/libts.lua rename to src/util/libts-lua.lua index 3ed7f8b..96ef5fc 100644 --- a/src/util/libts.lua +++ b/src/util/libts-lua.lua @@ -213,4 +213,8 @@ function _bllua_smarteval(code) end end -_bllua_ts.call('echo', ' Executed libts.lua') +function ts.setvar(name, val) + _bllua_ts.call('_bllua_set_var', name, val) +end + +_bllua_ts.call('echo', ' Executed libts-lua.lua') diff --git a/src/util/libts-support.cs b/src/util/libts-ts.cs similarity index 72% rename from src/util/libts-support.cs rename to src/util/libts-ts.cs index c928408..292c40e 100644 --- a/src/util/libts-support.cs +++ b/src/util/libts-ts.cs @@ -49,4 +49,26 @@ function _bllua_set_var(%name, %val) { return ""; } -echo(" Executed libts-support.cs"); +// Public Lua library for TS +function luacall(%func, %a,%b,%c,%d,%e,%f,%g,%h,%i,%j,%k,%l,%m,%n,%o,%p) { + if($_bllua_active) + return _bllua_luacall("_bllua_call", %func, %a,%b,%c,%d,%e,%f,%g,%h,%i,%j,%k,%l,%m,%n,%o,%p); +} +function luaexec(%fn) { + if($_bllua_active) + return _bllua_luacall("_bllua_exec", %fn); +} +function luaeval(%code) { + if($_bllua_active) + return _bllua_luacall("_bllua_eval", %code); +} +function luaget(%name) { + if($_bllua_active) + return _bllua_luacall("_bllua_getvar", %name); +} +function luaset(%name, %val) { + if($_bllua_active) + _bllua_luacall("_bllua_setvar", %name, %val); +} + +echo(" Executed libts-ts.cs");