Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function GetShieldType(pos)
- if ( pos.z < -15 ) then
- return 1 -- rear shield
- elseif ( pos.z < -10 ) then
- if ( pos.x > 2 ) then
- return 2 -- right shields
- else
- return 3 -- left shields
- end
- else
- return 4 -- turret/midshields
- end
- end
- function setSpinners(I,level,motor)
- --I:ClearLogs()
- --I:Log("Setting spinners to " .. level)
- for s = 0,I:GetSpinnerCount()-1,1 do
- if ( I:GetSpinnerInfo(s).LocalPosition.z > -10 ) then
- --I:Log("Spinner " .. s .. " Activating!" );
- I:SetSpinnerContinuousSpeed(s,level);
- I:SetSpinnerPowerDrive(s,motor);
- end
- end
- end
- function SetAltitude(I,targetPos)
- desiredAlt = 300;
- myAlt = I:GetConstructPosition().y;
- if ( targetPos.Valid and targetPos.AltitudeAboveSeaLevel + 100 > desiredAlt ) then
- desiredAlt = targetPos.AltitudeAboveSeaLevel + 100;
- end
- motor = 1.5
- if ( myAlt < desiredAlt - 50 or desiredAlt > 400 ) then motor = 10.0 end
- if ( myAlt < desiredAlt ) then
- setSpinners(I,30,motor);
- else
- setSpinners(I,1,motor);
- end
- end
- function Update(I)
- targetPos = I:GetTargetPositionInfo(0,0);
- I:ClearLogs();
- SetAltitude(I,targetPos);
- if ( not targetPos.Valid ) then
- --I:Log("Shields Off");
- -- Turn off all shields
- I:Component_SetIntLogicAll(10,0);
- else
- for s = 0,I:Component_GetCount(10)-1,1 do
- sPos = I:Component_GetLocalPosition(10,s);
- shieldType = GetShieldType(sPos);
- turnOn = false;
- if ( shieldType == 4 ) then -- MID-SHIELD always on
- turnOn = true;
- elseif ( shieldType == 3 ) and ( targetPos.Azimuth > 30 ) then -- BACK SHIELD
- turnOn = true;
- elseif ( shieldType == 2 ) and ( targetPos.Azimuth < -30 ) then -- BACK SHIELD
- turnOn = true;
- elseif ( shieldType == 1 ) and ( targetPos.Azimuth > 90 or targetPos.Azimuth < -90 ) then -- REAR SHIELD
- turnOn = true;
- end
- if ( turnOn ) then
- I:Component_SetFloatLogic(10,s,4.0);
- else
- I:Component_SetFloatLogic(10,s,0.0);
- end
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement