function GameBaseData::onAdd(%data, %obj) { if(%data.targetTypeTag !$= "") %obj.target = createTarget(%obj, %data.targetNameTag, "", "", %data.targetTypeTag, 0, 0); else %obj.target = -1; } function GameBaseData::onRemove(%data, %obj) { %target = %obj.getTarget(); // first 32 targets are team targets if(%target >= 32) freeTarget(%target); } function InteriorInstance::damage() { } function TerrainBlock::damage() { } function ForceFieldBare::damage() { } function GameBaseData::shouldApplyImpulse(%data, %obj) { return %data.shouldApplyImpulse; } function ShapeBaseData::onAdd(%data, %obj) { Parent::onAdd(%data, %obj); // if it's a deployed object, schedule the ambient thread to play in a little while if(%data.deployAmbientThread) %obj.schedule(750, "playThread", $AmbientThread, "ambient"); // check for ambient animation that should always be played if(%data.alwaysAmbient) %obj.playThread($AmbientThread, "ambient"); } function SimObject::setOwnerClient(%obj, %cl) { %obj.client = %cl; } function SimObject::getOwnerClient(%obj) { if(isObject(%obj)) return %obj.client; return 0; } // recursive objective init functions for mission group function SimGroup::objectiveInit(%this) { for (%i = 0; %i < %this.getCount(); %i++) %this.getObject(%i).objectiveInit(); } function SimObject::objectiveInit(%this) { } function GameBase::objectiveInit(%this) { //error("Initializing object " @ %this @ ", " @ %this.getDataBlock().getName()); %this.getDataBlock().objectiveInit(%this); } // tag strings are ignored if they start with an underscore function GameBase::getGameName(%this) { %name = ""; if(%this.nameTag !$= "") %name = %this.nameTag; else { %name = getTaggedString(%this.getDataBlock().targetNameTag); if((%name !$= "") && (getSubStr(%name, 0, 1) $= "_")) %name = ""; } %type = getTaggedString(%this.getDataBlock().targetTypeTag); if((%type !$= "") && (getSubStr(%type, 0, 1) !$= "_")) { if(%name !$= "") return(%name @ " " @ %type); else return(%type); } return(%name); }