Advertisement
Guest User

Untitled

a guest
Apr 20th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.73 KB | None | 0 0
  1. // Healers'IA
  2. // IA Protection:
  3. var IaProtection = false;
  4. if (getFightContext() == FIGHT_CONTEXT_CHALLENGE and IaProtection) {
  5. moveTowardCell(randInt(0, 612));
  6. for (var i = 0; i < 10; i++) {
  7. lama();
  8. }
  9. }
  10. // INCLUDES:
  11. include("Cases Accessibles Opti");
  12. //I) Globals:
  13. global moi = getLeek();
  14. global TotalLife = getTotalLife();
  15. global Solo = false;
  16. global LastStuck;
  17. global StuckIndicator;
  18. // II) Variables
  19. var MaCellule = getCell();
  20. var MyMp = getMP();
  21. var ReachableCells = getReachableCells([MaCellule: 0], MyMp, false);
  22. var MyLife = getLife();
  23. var MyStrenght = getStrength();
  24. var Arme = getWeapon();
  25. var AliveEnemies = getAliveEnemies();
  26. var EnReachableCells = [];
  27. var EnemyDanger = [];
  28. var enemy;
  29. var EnemyBulbs = [];
  30. var CellSafe = [];
  31. var CellPasSafe = [];
  32. var HidenCell = 0;
  33. var CellToUse;
  34. var Safe = true;
  35. var multi = false;
  36. var SafeShoot = false;
  37. var Stuck = false;
  38. var moove = true;
  39. var Nenemy = getNearestEnemy();
  40. var Messages = getMessages();
  41. var Heal = false;
  42. var HealTarget;
  43. var Shield = false;
  44. var ShieldTarget;
  45. var SafeHelp = false;
  46. var HelpTarget;
  47. // Fonction:
  48. function PunyBulb() {
  49. say("fonction punny bulb ");
  50. }
  51.  
  52. // Tour 1:
  53. if (tour == 1) {
  54. if (getFightType() == FIGHT_TYPE_SOLO) {
  55. Solo = true;
  56. }
  57. setWeapon(WEAPON_GRENADE_LAUNCHER);
  58. summon(CHIP_PUNY_BULB, getCellToUseChip(CHIP_PUNY_BULB, moi), PunyBulb());
  59. useChip(CHIP_LEATHER_BOOTS, moi);
  60. }
  61.  
  62. //3) Cache cache
  63. // On sélectionne les ennemis, puis on filtre les cases safes
  64.  
  65. for (var i in AliveEnemies) {
  66. if (getCellDistance(MaCellule, getCell(i)) <= 20) {
  67. push(EnemyDanger, i);
  68. }
  69. }
  70. for (var e in EnemyDanger) {
  71. var a = getReachableCells([getCell(e): 0], getMP(e), false);
  72. for (var clea: var i in a) {
  73. push(EnReachableCells, clea);
  74. }
  75. }
  76. for (var i in EnReachableCells) {
  77. for (var cle2: var e in ReachableCells) {
  78. if (lineOfSight(i, cle2)) {
  79. push(CellPasSafe, cle2);
  80.  
  81. }
  82.  
  83. }
  84. }
  85. for (var cle: var i in ReachableCells) {
  86. if (!inArray(CellPasSafe, cle)) {
  87. push(CellSafe, cle);
  88. }
  89. }
  90. // Target Filter:
  91.  
  92. if (Solo) {
  93. for (var i in AliveEnemies) {
  94. if (!isSummon(i)) {
  95. enemy = i;
  96. } else {
  97. push(EnemyBulbs, i);
  98. }
  99. }
  100. Nenemy = enemy;
  101. } else {
  102. for (var i in Messages) {
  103. if (getMessageType(i) == MESSAGE_ATTACK) {
  104. enemy = getMessageParams(i);
  105. }
  106.  
  107. }
  108.  
  109. if (enemy == null) {
  110. enemy = Nenemy;
  111. }
  112. }
  113.  
  114. // Autres Variables
  115. var CellToUseCWeapeon = getCellToUseWeapon(enemy);
  116. var EnemyCell = getCell(enemy);
  117. var EnLife = getLife(enemy);
  118. // HEAL / SHIELD
  119. if (!Solo) {
  120. var RatioVie = 10000;
  121. var RatioShield = 1000000;
  122. for (var i in Messages) {
  123. if (getMessageType(i) == MESSAGE_HEAL) {
  124. var MessageParamHeal = getMessageParams(i);
  125. if (MessageParamHeal < RatioVie) {
  126. RatioVie = MessageParamHeal;
  127. HealTarget = getMessageAuthor(i);
  128. Heal = true;
  129. }
  130.  
  131. }
  132. if (getMessageType(i) == MESSAGE_SHIELD) {
  133. var MessageParamShield = getMessageParams(i);
  134. if (MessageParamShield < RatioShield) {
  135. RatioShield = MessageParamShield;
  136. ShieldTarget = getMessageAuthor(i);
  137. Shield = true;
  138. }
  139.  
  140. }
  141.  
  142. }
  143. }
  144. if (Heal and Shield) {
  145. if (HealTarget != ShieldTarget) {
  146. if (getPathLength(getCell(HealTarget), MaCellule) < getPath(ShieldTarget, MaCellule)) {
  147. HelpTarget = HealTarget;
  148. Shield = false;
  149. } else {
  150. HelpTarget = ShieldTarget;
  151. Heal = false;
  152. }
  153. } else {
  154. HelpTarget = HealTarget;
  155. }
  156. }
  157.  
  158.  
  159. //5) Safety
  160. if (isEmpty(CellSafe)) {
  161. Safe = false;
  162. }
  163. // OneShot
  164. if (45 * (1 + getStrength() / 100) * (1 - getRelativeShield(enemy) / 100) - getAbsoluteShield(enemy) >= EnLife and getCellDistance(MaCellule, CellToUseCWeapeon) <= MyMp) {
  165. moveTowardCell(CellToUseCWeapeon);
  166. useWeapon(enemy);
  167. }
  168. //6) Stuck
  169. if (StuckIndicator == MyMp) {
  170. if (LastStuck == tour - 1 and getCellDistance(MaCellule, getCell(Nenemy)) == 1) {
  171. Stuck = true;
  172. LastStuck = 0;
  173. }
  174. debugC(LastStuck, COLOR_RED);
  175. LastStuck = tour;
  176. } else {
  177. Stuck = false;
  178. }
  179.  
  180. if (Stuck) {
  181. sendAll(MESSAGE_CUSTOM, "stuck");
  182. setWeapon(WEAPON_BROADSWORD);
  183. Heal = false;
  184. Shield = false;
  185. if (MyLife >= 1 / 2 * TotalLife) {
  186. useChip(CHIP_WALL, moi);
  187. useWeapon(Nenemy);
  188. useWeapon(Nenemy);
  189. } else {
  190. if (MyLife <= 3 * TotalLife) {
  191. useChip(CHIP_SHIELD, moi);
  192. useChip(CHIP_CURE, moi);
  193. useChip(CHIP_BANDAGE, moi);
  194. useChip(CHIP_VACCINE, moi);
  195. } else {
  196. summon(CHIP_PUNY_BULB, getCellToUseChip(CHIP_PUNY_BULB, moi), PunyBulb());
  197. useChip(CHIP_SHIELD, moi);
  198. useChip(CHIP_CURE, moi);
  199. useChip(CHIP_BANDAGE, moi);
  200. useChip(CHIP_VACCINE, moi);
  201. }
  202. }
  203. }
  204. // Remttre le lance grenades
  205. if (!Stuck and getWeapon() != WEAPON_GRENADE_LAUNCHER) {
  206. setWeapon(WEAPON_GRENADE_LAUNCHER);
  207. }
  208. // Déplacements
  209. if (Safe) {
  210. var distance = 100000;
  211. for (var e in CellSafe) {
  212. if (getCellDistance(MaCellule, e) < distance) {
  213. distance = getCellDistance(MaCellule, e);
  214. HidenCell = e;
  215. }
  216. }
  217. if (getPathLength(MaCellule, HidenCell) + getPathLength(MaCellule, CellToUseCWeapeon) <= MyMp) {
  218. SafeShoot = true;
  219. }
  220. // HEAL / SHIELD
  221. if (Heal) {
  222.  
  223. if (getPathLength(MaCellule, HidenCell) + getPathLength(MaCellule, getCellToUseChip(CHIP_CURE, HelpTarget)) <= MyMp) {
  224. SafeHelp = true;
  225. }
  226. if (SafeHelp) {
  227. moveTowardCell(getCellToUseChip(CHIP_CURE, HelpTarget));
  228. useChip(CHIP_CURE, HelpTarget);
  229. useChip(CHIP_VACCINE, HelpTarget);
  230. useChip(CHIP_BANDAGE, HelpTarget);
  231. moveTowardCell(HidenCell);
  232. moove = false;
  233. } else {
  234. if (SafeShoot) {
  235. if (moove) {
  236. moveTowardCell(CellToUseCWeapeon);
  237. }
  238. useWeapon(enemy);
  239. if (moove) {
  240. moveTowardCell(HidenCell);
  241. moove = false;
  242. }
  243. } else {
  244. if (moove) {
  245. moveTowardCell(HidenCell);
  246. moove = false;
  247. }
  248. }
  249.  
  250. }
  251. }
  252.  
  253. if (Shield and Heal or Shield) {
  254. if (getPathLength(MaCellule, HidenCell) + getPathLength(MaCellule, getCellToUseChip(CHIP_SHIELD, HelpTarget)) <= MyMp) {
  255. SafeHelp = true;
  256. }
  257. if (SafeHelp) {
  258. moveTowardCell(getCellToUseChip(CHIP_SHIELD, HelpTarget));
  259. useChip(CHIP_SHIELD, HelpTarget);
  260. useChip(CHIP_RAMPART, HelpTarget);
  261. useChip(CHIP_WALL, HelpTarget);
  262. moveTowardCell(HidenCell);
  263. moove = false;
  264. } else {
  265. if (SafeShoot) {
  266. if (moove) {
  267. moveTowardCell(CellToUseCWeapeon);
  268. }
  269. useWeapon(enemy);
  270. if (moove) {
  271. moveTowardCell(HidenCell);
  272. moove = false;
  273. }
  274. } else {
  275. if (moove) {
  276. moveTowardCell(HidenCell);
  277. moove = false;
  278. }
  279. }
  280.  
  281. }
  282. }
  283. // COMBAT
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294. }
  295.  
  296.  
  297.  
  298.  
  299. debug(getName(HelpTarget));
  300. debug(getName(enemy));
  301. debug(getName(HealTarget));
  302. debug(getName(ShieldTarget));
  303. debug(Messages);
  304. debug(getName(0));
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337. // StuckIndicator:
  338. StuckIndicator = getMP();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement