From eaafb42317332fb3ceae2f7fb56dc80d5c6ce4c1 Mon Sep 17 00:00:00 2001 From: Redo Date: Sat, 4 Oct 2025 00:49:19 -0500 Subject: [PATCH] rework hooks, proper arg conversion for luacall from ts, fix+rename bl.addServerCmd/addClientCmd, remove 'bool' from ts.type (only use 'boolean'), more dedefault typedefs, support typedefs on named objects, typedef inheritance, reorganize libts --- BlockLua.dll | Bin 369710 -> 374823 bytes readme.md | 30 +- src/bllua4.cpp | 6 +- src/ts-env.cs | 26 - src/util/libbl-support.cs | 5 +- src/util/libbl-types.lua | 1545 ++++++++++---------- src/util/libbl.lua | 269 ++-- src/util/{libts.lua => libts-lua.lua} | 6 +- src/util/{libts-support.cs => libts-ts.cs} | 24 +- 9 files changed, 1005 insertions(+), 906 deletions(-) rename src/util/{libts.lua => libts-lua.lua} (97%) rename src/util/{libts-support.cs => libts-ts.cs} (72%) diff --git a/BlockLua.dll b/BlockLua.dll index e30628e265cf2b30947f77ba4d21ab0a808aa7ee..68f65ae06770b81e774aaa1e409fe2ce6a992c66 100644 GIT binary patch delta 36326 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 NaCh6rjfQ92{~v!F#`FLH delta 30605 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 " @ %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");