The Plan
Produce a helicopter that can lift a single vehicle at a time. The helicopter will need to land to pick up and land to put down.
The Technique
Using bike logic in the well known technique of replacing the rider with a dummy rider when loading something.
The Problem
Picking up an object ( ie. not OCL-ing it in ) will cause the helicopter to explode, unless a move command is given while the helicopter is taking off again.
It seems that picking up an object that ejects the old one causes the "bike" to scuttle, as though there is a brief delay between ejecting and picking up. What is very odd, however, is that this does not occur when the "bike" is moving.
Attempted Workarounds
- Using another dummy to make the helicopter land for pickup.
- Using a ground locomotor [ Immediate explosion unless picked up while moving ]
- Extending the lifetime of the dummy.
- Using a real object OCL'd instead of a dummy.
- Increasing the number of slots available.
The Code
Code:
KindOf = PRELOAD TRANSPORT VEHICLE SELECTABLE SCORE CAN_CAST_REFLECTIONS ;FS_TECHNOLOGY IMMUNE_TO_CAPTURE
Behavior = ChinookAIUpdate ModuleTag_07
RotorWashParticleSystem = HelixRotorWashRing
End
Locomotor = SET_NORMAL CH54Locomotor
Locomotor = SET_SLUGGISH CH54LandingLocomotor
Behavior = RiderChangeContain ModuleTag_Rider
Rider1 = RiderDummy RIDER1 WEAPON_RIDER1 STATUS_RIDER1 AmericaDummyRiderCommandSet SET_NORMAL
Rider2 = RiderDummyLanded RIDER2 WEAPON_RIDER1 STATUS_RIDER2 AmericaDummyLandedRiderCommandSet SET_SLUGGISH
Rider3 = AmericaVehicleDozer RIDER3 WEAPON_RIDER1 STATUS_RIDER3 AmericaDummyRiderCommandSet SET_NORMAL
ScuttleDelay = 0
ScuttleStatus = TOPPLED
Slots = 1
ScatterNearbyOnExit = No
HealthRegen%PerSec = 0
BurnedDeathToUnits = No
AllowInsideKindOf = VEHICLE
ExitDelay = 250
NumberOfExitPaths = 1 ; Defaults to 1. Set 0 to not use ExitStart/ExitEnd, set higher than 1 to use ExitStart01-nn/ExitEnd01-nn
GoAggressiveOnExit = Yes ; AI Will tell people to set their mood to Aggressive on exiting
DoorOpenTime = 0
InitialPayload = RiderDummy 1
End
Behavior = OCLSpecialPower ModuleTag_DitchRider
SpecialPowerTemplate = SpecialAbilityDitchRider
OCL = OCL_RiderDummyLanded
End
Behavior = OCLSpecialPower ModuleTag_DitchRiderLanded
SpecialPowerTemplate = SpecialAbilityDitchRiderLanded
OCL = OCL_RiderDummy
End
Code:
Object RiderDummy
Side = America
EditorSorting = SYSTEM
TransportSlotCount = 1
KindOf = PRELOAD VEHICLE CLICK_THROUGH NO_SELECT IGNORED_IN_GUI
Body = ActiveBody ModuleTag_02
MaxHealth = 1
InitialHealth = 1
End
Behavior = AIUpdateInterface ModuleTag_03
End
Behavior = DeletionUpdate ModuleTag_05; Not LifetimeUpdate, since I can't die. This will DestroyObject me.
MinLifetime = 1
MaxLifetime = 1
End
End
Afterword
As always, any suggestions appreciated. Probably just something silly I've missed. Cheers.