class ActionConstructor { bool ConstructActions( out array actionsArray, out map actionNameActionMap ) { TTypenameArray action_array_names = new TTypenameArray; RegisterActions(action_array_names); Sort(action_array_names,action_array_names.Count()); actionsArray = new array; actionNameActionMap = new map; ActionBase new_action; for(int i = 0; i < action_array_names.Count(); i++) { new_action = ActionBase.Cast(action_array_names[i].Spawn()); if(new_action) { new_action.CreateConditionComponents(); new_action.SetID(actionsArray.Count()); actionsArray.Insert(new_action); actionNameActionMap.Insert(action_array_names[i], new_action); } } return true; } void RegisterActions(TTypenameArray actions) { // SingleUse Actions actions.Insert(ActionOpen); actions.Insert(ActionClose); actions.Insert(ActionConsumeSingle); actions.Insert(ActionForceConsumeSingle); actions.Insert(ActionMeasureTemperatureSelf); actions.Insert(ActionMeasureTemperatureTarget); actions.Insert(ActionDisinfectSelf); actions.Insert(ActionDisinfectTarget); actions.Insert(ActionPlugIn); actions.Insert(ActionTogglePlaceObject); actions.Insert(ActionTogglePlaceObjectDigging); actions.Insert(ActionTurnOnWhileInHands); actions.Insert(ActionTurnOffWhileInHands); actions.Insert(ActionPlantSeed); actions.Insert(ActionAttachSeeds); actions.Insert(ActionDisinfectPlantBit); actions.Insert(ActionTurnOnHeatpack); actions.Insert(ActionTurnOnTransmitter); actions.Insert(ActionTurnOffTransmitter); actions.Insert(ActionWashHandsItemContinuous); actions.Insert(ActionPlaceFireplaceIndoor); actions.Insert(ActionPlaceOvenIndoor); actions.Insert(ActionCreateIndoorFireplace); actions.Insert(ActionCreateGreenhouseGardenPlot); actions.Insert(ActionCreateIndoorOven); actions.Insert(ActionAttach); actions.Insert(ActionAttachOnProxy); actions.Insert(ActionAttachOnTrap); actions.Insert(ActionPlugTargetIntoThis); actions.Insert(ActionEmptySeedsPack); actions.Insert(ActionInjectSelf); actions.Insert(ActionInjectTarget); actions.Insert(ActionInjectEpinephrineSelf); actions.Insert(ActionInjectEpinephrineTarget); actions.Insert(ActionInjectMorphineSelf); actions.Insert(ActionInjectMorphineTarget); actions.Insert(ActionAttachOnSelection); actions.Insert(ActionTurnOnWeaponFlashlight); actions.Insert(ActionTurnOffWeaponFlashlight); actions.Insert(ActionNextCombinationLockDial); actions.Insert(ActionAttachToConstruction); actions.Insert(ActionClapBearTrapWithThisItem); actions.Insert(ActionDisarmMine); actions.Insert(ActionPlaceFireplaceIntoBarrel); actions.Insert(ActionStopEngine); actions.Insert(ActionStopEngineBoat); actions.Insert(ActionUnfoldMap); actions.Insert(ActionFoldMap); actions.Insert(ActionDropItem); actions.Insert(ActionDropItemSimple); actions.Insert(ActionSwitchSeats); actions.Insert(ActionTurnOnHeadtorch); actions.Insert(ActionTurnOffHeadtorch); actions.Insert(ActionTurnOnHelmetFlashlight); actions.Insert(ActionTurnOffHelmetFlashlight); actions.Insert(ActionToggleNVG); actions.Insert(ActionAttachOnTentProxy); actions.Insert(ActionTriggerRemotely); actions.Insert(ActionDisarmExplosive); actions.Insert(ActionDisarmExplosiveWithRemoteDetonator); actions.Insert(ActionDisarmExplosiveWithRemoteDetonatorUnpaired); actions.Insert(ActionEatPillFromBottle); actions.Insert(ActionEatTabletFromWrapper); // Continuous use actions actions.Insert(ActionWorldCraft); actions.Insert(ActionCraftImprovisedHandsCover); actions.Insert(ActionCraftImprovisedHeadCover); actions.Insert(ActionCraftImprovisedFeetCover); actions.Insert(ActionCraftImprovisedFaceCover); actions.Insert(ActionCraftImprovisedTorsoCover); actions.Insert(ActionCraftImprovisedLegsCover); actions.Insert(ActionCraftImprovisedEyePatch); actions.Insert(ActionCraftRopeBelt); actions.Insert(ActionDeCraftRopeBelt); actions.Insert(ActionCraftBoneKnife); actions.Insert(ActionCraftArmband); actions.Insert(ActionCraftBoneKnifeEnv); actions.Insert(ActionCraftStoneKnifeEnv); actions.Insert(ActionSkinning); actions.Insert(ActionPlaceObject); actions.Insert(ActionDeployObject); actions.Insert(ActionDeployHuntingTrap); actions.Insert(ActionMineTree); actions.Insert(ActionMineBush); actions.Insert(ActionMineRock); actions.Insert(ActionMineRock1H); actions.Insert(ActionDigGardenPlot); actions.Insert(ActionDismantleGardenPlot); actions.Insert(ActionWaterPlant); actions.Insert(ActionFertilizeSlot); actions.Insert(ActionDisinfectPlant); actions.Insert(ActionFillObject); actions.Insert(ActionDefibrilateSelf); actions.Insert(ActionDefibrilateTarget); actions.Insert(ActionTestBloodSelf); actions.Insert(ActionTestBloodTarget); actions.Insert(ActionGiveBloodSelf); actions.Insert(ActionGiveBloodTarget); actions.Insert(ActionGiveSalineSelf); actions.Insert(ActionGiveSalineTarget); actions.Insert(ActionCollectBloodSelf); actions.Insert(ActionCollectBloodTarget); actions.Insert(ActionCollectSampleSelf); actions.Insert(ActionCollectSampleTarget); actions.Insert(ActionCoverHeadSelf); actions.Insert(ActionUncoverHeadSelf); actions.Insert(ActionCoverHeadTarget); actions.Insert(ActionShave); actions.Insert(ActionSplintSelf); actions.Insert(ActionSplintTarget); actions.Insert(ActionForceDrink); actions.Insert(ActionForceFeed); actions.Insert(ActionForceFeedSmall); actions.Insert(ActionEatBig); actions.Insert(ActionEatMeat); actions.Insert(ActionEatFruit); actions.Insert(ActionDrink); actions.Insert(ActionDrinkCookingPot); actions.Insert(ActionBandageSelf); actions.Insert(ActionBandageTarget); actions.Insert(ActionRestrainTarget); actions.Insert(ActionRestrainSelf); actions.Insert(ActionUnrestrainTarget); actions.Insert(ActionUnrestrainSelf); actions.Insert(ActionFillBottleBase); actions.Insert(ActionFillBottleSnow); actions.Insert(ActionUpgradeTorchFromGasPump); actions.Insert(ActionRefuelTorch); actions.Insert(ActionTuneFrequency); actions.Insert(ActionTuneRadioStation); actions.Insert(ActionIgniteFireplaceByAir); actions.Insert(ActionLightItemOnFire); actions.Insert(ActionLightItemOnFireWithBlowtorch); actions.Insert(ActionExtinguishFireplaceByLiquid); actions.Insert(ActionExtinguishFireplaceByExtinguisher); actions.Insert(ActionSewSelf); actions.Insert(ActionSewTarget); actions.Insert(ActionBuryAshes); actions.Insert(ActionCookOnStick); actions.Insert(ActionFillGeneratorTank); actions.Insert(ActionSawPlanks); actions.Insert(ActionBuryBody); actions.Insert(ActionEatCan); actions.Insert(ActionEatSmallCan); actions.Insert(ActionForceFeedCan); actions.Insert(ActionWaterGardenSlot); actions.Insert(ActionWringClothes); actions.Insert(ActionLoadMagazine); actions.Insert(ActionEmptyMagazine); actions.Insert(ActionBuildPart); actions.Insert(ActionActionBuildPartNoTool); actions.Insert(ActionDismantlePart); actions.Insert(ActionDestroyPart); actions.Insert(ActionCPR); actions.Insert(ActionDrinkPondContinuous); actions.Insert(ActionEatSnowContinuous); actions.Insert(ActionDrinkThroughContinuous); actions.Insert(ActionEat); actions.Insert(ActionEatSmall); actions.Insert(ActionMineTreeBark); actions.Insert(ActionDigWorms); actions.Insert(ActionShaveTarget); actions.Insert(ActionDrinkWellContinuous); actions.Insert(ActionUncoverHeadTarget); actions.Insert(ActionLockDoors); actions.Insert(ActionUnlockDoors); actions.Insert(ActionUnpackBox); actions.Insert(ActionWashHandsWater); actions.Insert(ActionWashHandsSnow); actions.Insert(ActionWashHandsWell); actions.Insert(ActionDrinkCan); actions.Insert(ActionBuildOven); actions.Insert(ActionDismantleOven); actions.Insert(ActionBuildStoneCircle); actions.Insert(ActionDismantleStoneCircle); actions.Insert(ActionFillFuel); actions.Insert(ActionDrainLiquid); actions.Insert(ActionPourLiquid); actions.Insert(ActionStartEngine); actions.Insert(ActionStartEngineBoat); actions.Insert(ActionRaiseMegaphone); actions.Insert(ActionActivateTrap); actions.Insert(ActionEmptyBottleBase); actions.Insert(ActionEmptyCookingPot); actions.Insert(ActionViewOptics); actions.Insert(ActionToggleNVMode); actions.Insert(ActionViewBinoculars); actions.Insert(ActionFoldBaseBuildingObject); actions.Insert(ActionMountBarbedWire); actions.Insert(ActionUnmountBarbedWire); actions.Insert(ActionDialCombinationLock); actions.Insert(ActionDialCombinationLockOnTarget); actions.Insert(ActionFillCoolant); actions.Insert(ActionFillOil); actions.Insert(ActionGagSelf); actions.Insert(ActionGagTarget); actions.Insert(ActionUngagSelf); actions.Insert(ActionUngagTarget); actions.Insert(ActionDigInStash); actions.Insert(ActionDigOutStash); actions.Insert(ActionMineBushByHand); actions.Insert(ActionBreakLongWoodenStick); actions.Insert(ActionFishingNew); actions.Insert(ActionRepairTent); actions.Insert(ActionRepairTentPart); actions.Insert(ActionRepairPart); actions.Insert(ActionRepairCarPart); actions.Insert(ActionRepairCarPartWithBlowtorch); actions.Insert(ActionRepairCarChassis); actions.Insert(ActionRepairBoatChassis); actions.Insert(ActionRepairCarChassisWithBlowtorch); actions.Insert(ActionRepairCarEngineWithBlowtorch); actions.Insert(ActionRepairBoatEngine); actions.Insert(ActionRepairShelter); actions.Insert(ActionRepairItemWithBlowtorch); actions.Insert(ActionLockAttachment); actions.Insert(ActionUnpackGift); actions.Insert(ActionPackGift); actions.Insert(ActionAttachExplosivesTrigger); actions.Insert(ActionArmExplosive); actions.Insert(ActionTurnValve); actions.Insert(ActionTurnValveUndergroundReservoir); actions.Insert(ActionEatCereal); actions.Insert(ActionUnlockShippingContainer); // Interact actions actions.Insert(ActionPullOutPlug); actions.Insert(ActionUnplugThisByCord); actions.Insert(ActionTurnOnWhileOnGround); actions.Insert(ActionTurnOffWhileOnGround); actions.Insert(ActionTurnOnPowerGenerator); actions.Insert(ActionTurnOffPowerGenerator); actions.Insert(ActionTurnOnSpotlight); actions.Insert(ActionTurnOffSpotlight); actions.Insert(ActionRemoveSeed); actions.Insert(ActionRemovePlant); actions.Insert(ActionHarvestCrops); actions.Insert(ActionFoldObject); actions.Insert(ActionRepositionPluggedItem); actions.Insert(ActionTurnOnTransmitterOnGround); actions.Insert(ActionTurnOffTransmitterOnGround); actions.Insert(ActionTuneFrequencyOnGround); actions.Insert(ActionToggleTentOpen); actions.Insert(ActionPackTent); actions.Insert(ActionOpenBarrel); actions.Insert(ActionCloseBarrel); actions.Insert(ActionOpenBarrelHoles); actions.Insert(ActionCloseBarrelHoles); actions.Insert(ActionOpenDoors); actions.Insert(ActionCloseDoors); actions.Insert(ActionLockedDoors); actions.Insert(ActionEnterLadder); actions.Insert(ActionExitLadder); actions.Insert(ActionGetInTransport); actions.Insert(ActionTakeItem); actions.Insert(ActionDetachPowerSourceFromPanel); actions.Insert(ActionSwapItemToHands); actions.Insert(ActionTakeItemToHands); actions.Insert(ActionOpenCarDoors); actions.Insert(ActionCloseCarDoors); actions.Insert(ActionOpenCarDoorsOutside); actions.Insert(ActionCloseCarDoorsOutside); actions.Insert(ActionGetOutTransport); actions.Insert(ActionAnimateSeats); actions.Insert(ActionSidePlateInteract); actions.Insert(ActionDetach); actions.Insert(ActionOpenFence); actions.Insert(ActionCloseFence); actions.Insert(ActionNextCombinationLockDialOnTarget); actions.Insert(ActionCheckPulseTarget); actions.Insert(ActionUnpin); actions.Insert(ActionPin); actions.Insert(ActionRaiseFlag); actions.Insert(ActionLowerFlag); actions.Insert(ActionDeconstructShelter); actions.Insert(ActionBuildShelter); actions.Insert(ActionDetachFromTarget); actions.Insert(ActionDetachFromTarget_SpecificSlot_WoodenLogs); actions.Insert(ActionDetachFromTarget_SpecificSlot_WoodenPlanks); actions.Insert(ActionDetachFromTarget_SpecificSlot_MetalSheets); actions.Insert(ActionDetachFromTarget_SpecificSlotsCategory_Barrel); actions.Insert(ActionDetachFromTarget_SpecificSlotsCategory_WoodenCrate); actions.Insert(ActionTakeArrow); actions.Insert(ActionTakeArrowToHands); actions.Insert(ActionOperatePanelPowerStation); //vehicle actions actions.Insert(ActionSwitchLights); actions.Insert(ActionCarHornShort); actions.Insert(ActionCarHornLong); actions.Insert(ActionPushCar); actions.Insert(ActionPushBoat); #ifdef DIAG_DEVELOPER //Instant action - debug actions.Insert(ActionDebug); #endif //Weapon actions.Insert(FirearmActionAttachMagazine); actions.Insert(FirearmActionLoadMultiBullet); actions.Insert(FirearmActionLoadBullet); actions.Insert(ActionLoadMagazineQuick); actions.Insert(FirearmActionAttachMagazineQuick); actions.Insert(FirearmActionMechanicManipulate); actions.Insert(FirearmActionUnjam); actions.Insert(FirearmActionDetachMagazine); actions.Insert(FirearmActionLoadBulletQuick); actions.Insert(FirearmActionLoadMultiBulletQuick); actions.Insert(FirearmActionLoadMultiBulletRadial); actions.Insert(ActionPullBodyFromTransport); actions.Insert(ActionSetAlarmClock); actions.Insert(ActionTurnOnAlarmClock); actions.Insert(ActionTurnOffAlarmClock); actions.Insert(ActionAttachWithSwitch); actions.Insert(ActionSetKitchenTimer); actions.Insert(ActionResetKitchenTimer); actions.Insert(ActionUseUndergroundPanel); actions.Insert(ActionUseUndergroundLever); actions.Insert(ActionUnrestrainTargetHands); actions.Insert(ActionCraftBolts); actions.Insert(ActionCraftBoltsFeather); actions.Insert(ActionDeCraftWitchHoodCoif); actions.Insert(ActionDeCraftDrysackBag); actions.Insert(ActionDummyContinuousRelease); } };