示例#1
0
 public static void Pather_StartPath_WarObjects(Caravan_PathFollower __instance, int destTile, CaravanArrivalAction arrivalAction, ref bool __result, bool repathImmediately = false, bool resetPauseStatus = true)
 {
     if (__result == true)
     {
         if (arrivalAction is RimWar.Planet.CaravanArrivalAction_AttackWarObject)
         {
             //Log.Message("assigning war object action: attack");
             Caravan caravan = Traverse.Create(root: __instance).Field(name: "caravan").GetValue <Caravan>();
             CaravanArrivalAction_AttackWarObject woAction = arrivalAction as CaravanArrivalAction_AttackWarObject;
             RimWar.Planet.WorldUtility.Get_WCPT().AssignCaravanTargets(caravan, woAction.wo);
         }
         else if (arrivalAction is RimWar.Planet.CaravanArrivalAction_EngageWarObject)
         {
             //Log.Message("assigning war object action: engage");
             Caravan caravan = Traverse.Create(root: __instance).Field(name: "caravan").GetValue <Caravan>();
             CaravanArrivalAction_EngageWarObject woAction = arrivalAction as CaravanArrivalAction_EngageWarObject;
             RimWar.Planet.WorldUtility.Get_WCPT().AssignCaravanTargets(caravan, woAction.wo);
         }
         else
         {
             Caravan caravan = Traverse.Create(root: __instance).Field(name: "caravan").GetValue <Caravan>();
             List <CaravanTargetData> ctdList = RimWar.Planet.WorldUtility.Get_WCPT().caravanTargetData;
             for (int i = 0; i < ctdList.Count; i++)
             {
                 if (ctdList[i].caravan == caravan)
                 {
                     ctdList.Remove(ctdList[i]);
                 }
             }
         }
     }
 }
示例#2
0
 public static void Pather_StartPath_WarObjects(Caravan_PathFollower __instance, Caravan ___caravan, int destTile, CaravanArrivalAction arrivalAction, ref bool __result, bool repathImmediately = false, bool resetPauseStatus = true)
 {
     if (__result == true)
     {
         if (arrivalAction is RimWar.Planet.CaravanArrivalAction_AttackWarObject)
         {
             //Log.Message("assigning war object action: attack");
             CaravanArrivalAction_AttackWarObject woAction = arrivalAction as CaravanArrivalAction_AttackWarObject;
             woAction.wo.interactable = true;
             RimWar.Planet.WorldUtility.Get_WCPT().AssignCaravanTargets(___caravan, woAction.wo);
         }
         else if (arrivalAction is RimWar.Planet.CaravanArrivalAction_EngageWarObject)
         {
             //Log.Message("assigning war object action: engage");
             CaravanArrivalAction_EngageWarObject woAction = arrivalAction as CaravanArrivalAction_EngageWarObject;
             woAction.wo.interactable = true;
             RimWar.Planet.WorldUtility.Get_WCPT().AssignCaravanTargets(___caravan, woAction.wo);
         }
         else
         {
             WorldUtility.Get_WCPT().RemoveCaravanTarget(___caravan);
         }
     }
 }