Random Aircraft facing.fscript 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. // FinalAlert2:YR Script file
  2. // Name: Change Unit Facing
  3. // Written By: Matthias Wagner
  4. // Last Change: August 21, 2001
  5. // Be careful when editing scripts, they may cause damage to maps if used improperly
  6. AllowDelete("Necessary for changing infantry");
  7. AllowAdd("Necessary for changing infantry");
  8. Is("%DeleteAllowed%","=","0","%NoDelete%");
  9. Print("Deletion must be allowed for this script to run!","%NoDelete%");
  10. Cancel("%NoDelete%");
  11. Is("%AddAllowed%","=","0","%NoAdd%");
  12. Print("Adding must be allowed for this script to run!","%NoAdd%");
  13. Cancel("%NoAdd%");
  14. Ask("%specified%","Do you want to limit random aircraft facing to a specific house?","Limit Random Aircraft facing to house");
  15. SetVariable("%House%","");
  16. UInputGetHouse("%House%","House:","%specified%");
  17. SetAutoUpdate("FALSE"); // no screen flickering...
  18. Is("%AircraftCount%","=","0","%Abort%");
  19. Cancel("%Abort%");
  20. SetVariable("%TCounter%","%AircraftCount%");
  21. // LOOP BEGIN
  22. :Loop:
  23. SetVariable("%pos%","%TCounter%");
  24. Substract("%pos%","1");
  25. GetAircraft("%data%","%pos%");
  26. SetVariable("%Differ%","0");
  27. GetParam("%param%", "%data%", "0", "%specified%");
  28. Is("%param%","!=","%House%","%Differ%","%specified%");
  29. Substract("%TCounter%","1", "%Differ%");
  30. And("%cancelloop%","%Differ%", "%TCounter%");
  31. JumpTo("Loop", "%cancelloop%");
  32. // if we are here, and Differ is set to TRUE, TCounter must be 0, so cancel script.
  33. Cancel("%Differ%");
  34. DeleteAircraft("%pos%");
  35. GetRandom("%Facing%");
  36. // convert random (0-32767) to 8 directions
  37. Divide("%Facing%","4096");
  38. // convert 8 directions to degrees
  39. Multi("%Facing%","32");
  40. SetParam("%data%","5","%Facing%");
  41. AddAircraft("%data%");
  42. Substract("%TCounter%", "1", "%TCounter%"); // only substract if >=0, else infinite loop!
  43. JumpTo("Loop","%TCounter%");