diff --git a/scripts/HTN/Trees/Red/RedForceCoordinator.xml b/scripts/HTN/Trees/Red/RedForceCoordinator.xml index a5fb135c45a2350b6b80f8da31ea5bc817de5ed0..39ed40db13ede538f555d781ad53fd38c7298ea9 100644 --- a/scripts/HTN/Trees/Red/RedForceCoordinator.xml +++ b/scripts/HTN/Trees/Red/RedForceCoordinator.xml @@ -18,6 +18,8 @@ borg.redConvoyDest=dict() borg.redFormsByUnit=dict() borg.redUnitStatus=dict() +borg.redWaitingUnits=[] + # for logging borg.redUnitActivity=dict() borg.redUnitActivityTime=dict() @@ -266,89 +268,89 @@ while len(dismounts)>0: _gt_activeNode.putVar("convoyIndex", 0) # activate one -if borg.params_activateConvoyOne: - al = ArrayList() - al.add("circle") - al.add("FIRE_CONTROL_RADAR") - al.add("TELAR") - al.add("TELAR") - al.add("TELAR") - al.add("TELAR") - al.add("TELAR") - al.add("TELAR") - al.add("TELAR") - - UtilityFuncsExp.scheduleEvent( - dm, - info.getMyAssignedName(), - "GoalTracker_CreateConvoy", - 0.001, - al) +al = ArrayList() +al.add(borg.params_activateConvoyOne) +al.add("circle") +al.add("FIRE_CONTROL_RADAR") +al.add("TELAR") +al.add("TELAR") +al.add("TELAR") +al.add("TELAR") +al.add("TELAR") +al.add("TELAR") +al.add("TELAR") + +UtilityFuncsExp.scheduleEvent( + dm, + info.getMyAssignedName(), + "GoalTracker_CreateConvoy", + 0.001, + al) # activate two -if borg.params_activateConvoyTwo: - al = ArrayList() - al.add("bigellipse") - al.add("FIRE_CONTROL_RADAR") - al.add("FIRE_CONTROL_RADAR") - al.add("TELAR") - al.add("TELAR") - al.add("TELAR") - al.add("TELAR") - al.add("TELAR") - al.add("TELAR") - al.add("TELAR") - al.add("TELAR") - al.add("TELAR") - al.add("TELAR") - al.add("TELAR") - al.add("TELAR") - al.add("TELAR") - al.add("TELAR") - - UtilityFuncsExp.scheduleEvent( - dm, - info.getMyAssignedName(), - "GoalTracker_CreateConvoy", - 5, - al) +al = ArrayList() +al.add(borg.params_activateConvoyTwo) +al.add("bigellipse") +al.add("FIRE_CONTROL_RADAR") +al.add("FIRE_CONTROL_RADAR") +al.add("TELAR") +al.add("TELAR") +al.add("TELAR") +al.add("TELAR") +al.add("TELAR") +al.add("TELAR") +al.add("TELAR") +al.add("TELAR") +al.add("TELAR") +al.add("TELAR") +al.add("TELAR") +al.add("TELAR") +al.add("TELAR") +al.add("TELAR") + +UtilityFuncsExp.scheduleEvent( + dm, + info.getMyAssignedName(), + "GoalTracker_CreateConvoy", + 5, + al) # activate three -if borg.params_activateConvoyThree: - al = ArrayList() - al.add("bigbox") - al.add("FIRE_CONTROL_RADAR") - al.add("TARGET_ACQ_RADAR") - al.add("SPT_VEH") - al.add("SPT_VEH") - al.add("SPT_VEH") - al.add("SPT_VEH") - al.add("SPT_VEH") - al.add("SPT_VEH") - al.add("SPT_VEH") - al.add("SPT_VEH") - al.add("SPT_VEH") - al.add("SPT_VEH") - al.add("SPT_VEH") - al.add("SPT_VEH") - al.add("SPT_VEH") - al.add("SPT_VEH") - al.add("SPT_VEH") - al.add("SPT_VEH") - al.add("SPT_VEH") - al.add("SPT_VEH") - al.add("SPT_VEH") - al.add("SPT_VEH") - al.add("TELAR") - al.add("TELAR") - al.add("TELAR") - - UtilityFuncsExp.scheduleEvent( - dm, - info.getMyAssignedName(), - "GoalTracker_CreateConvoy", - 10, - al) +al = ArrayList() +al.add(borg.params_activateConvoyThree) +al.add("bigbox") +al.add("FIRE_CONTROL_RADAR") +al.add("TARGET_ACQ_RADAR") +al.add("SPT_VEH") +al.add("SPT_VEH") +al.add("SPT_VEH") +al.add("SPT_VEH") +al.add("SPT_VEH") +al.add("SPT_VEH") +al.add("SPT_VEH") +al.add("SPT_VEH") +al.add("SPT_VEH") +al.add("SPT_VEH") +al.add("SPT_VEH") +al.add("SPT_VEH") +al.add("SPT_VEH") +al.add("SPT_VEH") +al.add("SPT_VEH") +al.add("SPT_VEH") +al.add("SPT_VEH") +al.add("SPT_VEH") +al.add("SPT_VEH") +al.add("SPT_VEH") +al.add("TELAR") +al.add("TELAR") +al.add("TELAR") + +UtilityFuncsExp.scheduleEvent( + dm, + info.getMyAssignedName(), + "GoalTracker_CreateConvoy", + 10, + al) </Code> <Import /> @@ -395,6 +397,11 @@ convoyIndex = _gt_activeNode.getVar("convoyIndex") # a list of the profiles the are part of this convoy profiles = state.getLastTriggerParams()[0] +# grab the activation flag. we still want to create the unit +# but we don't send them out if the activate flag is off +activateFlag = profiles.get(0) +profiles.remove(0) + # formation name to use. formation is the first string in the # profile list formName = profiles.get(0) @@ -427,8 +434,10 @@ tu = PythonUnit._py_createTacticalUnitMtry("CONVOY_"+str(convoyIndex), memberLis _gt_activeNode.putVar("convoyIndex", convoyIndex+1) # go to making the convoy move (still in this tree) -SendEntityEventDelay(info.getMyAssignedName(), "GoalTracker_MoveConvoy", [tu.getName(), formName], 1) - +if activateFlag: + SendEntityEventDelay(info.getMyAssignedName(), "GoalTracker_MoveConvoy", [tu.getName(), formName, "False"], 1) +else: + borg.redWaitingUnits.append([tu.getName(), formName]) </Code> <Import /> @@ -493,6 +502,13 @@ elif numDestChance > 0.5: if borg.params_overrideNumDests > 0: numDestinations = borg.params_overrideNumDests +# check for back unit override +backupUnit = state.getLastTriggerParams()[0].get(2) +if backupUnit == "True": + # this only happens on attack runs so we trick the system into just creating an attack + # position + numDestinations = 0 + convoyDests = [] for n in range(numDestinations): destName = borg.redDestinations[0] @@ -534,11 +550,20 @@ if state.getLastTrigger() == "doGoalTracker_StartAttackMove": <Import /> <HTNNode AllowMsg="true" Name="startAttackMove" Type="INTERRUPT"> <Parent>isMoveConvoy</Parent> - <Code IsFile="false">heardBefore = _gt_activeNode.getVar("heardAttackMsg") + <Code IsFile="false">import cxxi.model.knowledge.group.holders.NewUnitHolder as NewUnitHolder + +heardBefore = _gt_activeNode.getVar("heardAttackMsg") if heardBefore == 0: - printMessage("START ATTACK METHODOLOGY", True) + printMessage("START ATTACK METHODOLOGY WAITING UNITS:"+str(borg.redWaitingUnits), True) _gt_activeNode.putVar("heardAttackMsg", 1) + + for unitInfo in borg.redWaitingUnits: + unitName = unitInfo[0] + formName = unitInfo[1] + + SendEntityEventDelay(info.getMyAssignedName(), "GoalTracker_MoveConvoy", [unitName, formName, "True"], 1) + </Code> <Import /> </HTNNode>