Advertisement
Guest User

Untitled

a guest
Feb 24th, 2017
374
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.02 KB | None | 0 0
  1. #define init
  2. /// Initialize global variables
  3. global.time = 0;
  4. global.IDPDKills = 0;
  5. global.IDPD_old = 0;
  6. global.IDPDTimer = 1800/6;//1800 = 1 minute
  7. global.IDPDDifficulty = 1;
  8.  
  9. global.CrownAngry = false;
  10. global.CrownSndTimer = 1800 / 12;//5 seconds
  11. global.SpawnType = "normal"
  12.  
  13. global.Heat = 0;
  14. global.IDPDSpawns = 0;
  15. global.enemies_max = 0;
  16. global.freak = -1;
  17. global.elite = -1;
  18.  
  19. /// Sprites. Wow.
  20. global.sprPopoCrownRage = sprite_add_base64("iVBORw0KGgoAAAANSUhEUgAAAJAAAAAQCAYAAAD59vZgAAACBUlEQVRoge2YPU/CQBzGHwyJixuTW8sHIDFhgoEyiMSFxESNo0wMmtC4iBObLnwEYpwIkJAQEwMy+JLIRDRBF5eWL+DG4nQOyNmWKz1e7DHck5Dyb/8vv3tybdIG4FBYiRLnOaeMQS/glSNKkt9fBa1BWImSL/UY68ouAMA8VG3JatXExsP+1IYiDZD8/vPTDTSGB0AhVZh0EWrVtEGyIEQaIPnF8AenJcZIGR+bBgDgNj/qe0nS6D+2mINXwQDJ7y+/6waKaGkAwFHmYOIcr/w2QPL7z8/cQMNkHSBlOqjSrNGFsIaz5LcBkl8Mv+sTqKBn0dU0xLbCAEaL6L4ZKOhZGxRLq2CA5PeHf42r2xwq6FmcFq9QadYAjBaR0DQaT9MwWQcAmwFj8RqwqCQ/Hz/zCfQ9uEMq/xvcfNquhYrnvnyHWOQOlPyLi5d/6lvYvFoFAxaR5OeXbQOFzGsYgx7iicxE4stTc5SjRJc121XzGiD5l6NZ+OkGspwkY1iGAsag5zpYpAGSXww/604gOb2E99dnnF2c4L7VRyodwd7Otlv+RP2M8wD8fQH1MiCsRL0ewZJfLD/I+JfTS8Qae5Fba+KJDGm0OzRutDtePWzznPWcPSS/eH66CNaRp47WWIY7r3nVsup5eljzWEeeOsnPrufpsRQ5B7L+89TyxP8hyc8f4wfyyJaTqbgmwwAAAABJRU5ErkJggg==", 9, 8, 8);
  21.  
  22. global.sprPopoCrownIdle = sprite_add_base64("iVBORw0KGgoAAAANSUhEUgAAAMAAAAAQCAYAAABA4nAoAAACbklEQVRoge2aMWgTURjHf1cKBRuwUVukOOQSBKeI6CDpkLiFLpls6dhMjs1mtm5xEQdndZQqFEqXlA4mg8VBEYODIM05dSvt4P4cru95d70773I1Kbz3QeC+e+/3vf/B+9/duxcLoFh4QNoY/vqsjg2vN581Jql/2nNOpOCtkHOG15S/IANNRL/XABzb6wDMFJYjydyHx5FthteazzqBJ6J/OqIfAM6q7cvtLSeuu+E157NO4Kzjj8JPparoiVEee4bXi3dWbd/vMoXUH2sAr2MC7kn0uDO83nxcJDFQzPhZeaU/9BWoXT2kcq8IwHeGAOxuuMxB9RkvN5/GDmx4vXkZ9paj7vwhEzB0HRBWIyRi+TT6Qw3Q6ZfIbbrvauVanUGvq9rKtTp37j+0fnz5FCna8HrzF2nAYCThpf5yrQ6g9Mvcqz92ESwv/u3OO9YaKyq/On8zVoDh9eY7/RKV3qvI9iQGlLwcv/PitcqTao/ivfot8L1PiWN7nZnCMrsbgoOvQ58TZb7WWAGw5LdcwxtesuB+BaqIvwZot5pqAp6FNeh1CfLgfkkap/4pcDclTk6PAKzrzhvShuH15s/Cx7ZbTaq1Gu1W81w+6HXDFtEWwLj1BxcSAmCp2jjX8WN/B3DdZpeKlnM4jNzNM7x+fH5ukfzcIoD4/eh9qju45E9Oj8auP+2WsrUwXyQ3ey3uvyCG15Av3r7L8Oe3rBN4YvoV/KT1XABiqdoQ23v7Kt/e2xf/KG54vXnVN4z31pi9kr+M+t0CgLixcMtXTOZJBBheW97bN4xPW2MS16+KqOOAeMMbPikb5Eep8d/1/wFMTgKqjvoWfAAAAABJRU5ErkJggg==", 12, 8, 8);
  23.  
  24. global.sprPopoCrownWalk = sprite_add_base64("iVBORw0KGgoAAAANSUhEUgAAAGAAAAAQCAYAAADpunr5AAAB7UlEQVRYheVYPU/CQBh+Skhc2PwDUHcSEyYZymIkLiQmahzdOhhDZVEnNl2Ig4ubI4EYEuICMgiDTp2Iqy1/wM39HMDm2l6vd1yNgb5Jk97d+z4fd71rQUNCoedLRDTXmdlaUryrzp9VBaDjq3AKANjI70fW5l4Pmf1p5c/SDRUDrHCPC752oeNy89PInw31SAL8ZaSBP5M4IhW0YPpeZruvOz93BxQ6rvcUBAF4L7Ir4xM72zoA4AMOAOC5Pud8N25x37wUNrDu/MwFUDVwM9lCrjk/K4uVKqbjgTdWrFRjv0LSxM9cAFUDdO50PEC738VJ7SiElYSBVefnvgNoAJYYOpyZrW26j1673e/CqFS8WrotegangT+jCsATIRNp5fcdQc7M1nSAfHO+g2OCODMbZaeOi/N5x9NCz9ukDwDQ86XILZxG/qAQAgBloxZCFjHwi2FaLTzcNaLGubVx/DIYjeszvAymnpbecISDvV1evYr/ON8i2kFMq0UWQliXSHj5ZaNGesMRMa0W6Q1HohiR/IIYngeOF2n9ArWscek5CCawRIiEz4CAeF+tabWizAstYMyEcScx4NOHJTCBTD5ZD6FVFHwCmFiSC+erUeGVzKfrQv6pvmW00HVL/wJXKf4PwSp/NYgcUYnh/gCJlW7pldez/AAAAABJRU5ErkJggg==", 6, 8, 8);
  25.  
  26. global.sprNoPopo = sprite_add_base64("iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABWElEQVRIiWNgoCdQUjD5TzMzlBRM/q9hYPhPiSU4zYBJwDA5luAygxFZQdeDM3ANZQomJFmArvfegzOMKBbgsuSL42q8BvPsD8VpOFaAzatiiff/f93BgILFEu//JztosWlEt4BYw5lwWYIcB10PzjDoZiD4uhkmGMFCEoAFCzZX4gpCkn3AwMDAsHzjKgzXobt8+cZVeB2LNbaVFEz+5zZ0wPmTGyqwGo6uBlvqYcFlc8PCmwwf92fDLMQa5gcPHGBgYGBg2P9QkkEYhzk4LUDyDYbhMH7ZAQaGew/OMPA7TsWpH2ccsCt44XQ5DHQ9OMOgpGDCwK7gRcidGK7GmlpOXrz3/+TFezhTFzazMCIFphBfhDIwQCIVm+/QIxqrBcQmxUj/MILlEMHCLrehg8HKUInh2Pl7KIbDxLD5BNkSmhfXcMNpVeFgKKBJlYmsgFzDqWkGSQAAXTgqFGy6TFUAAAAASUVORK5CYII=", 0, 0, 0);
  27.  
  28. /// Disables everyone but Rogue
  29. for(var i = 0;i<=15;i++){
  30. if (i != 12)
  31. {
  32. race_set_active(i, 0);
  33. }
  34. }
  35.  
  36. /// MOTD
  37. /*
  38. repeat(16){trace("")}
  39. trace("Only One Gunfu For Every Runfu Challenge:")
  40. trace("- Rogue Only")
  41. trace("- IDPD spawn every 10 seconds")
  42. trace("- Starting Weapon is automatically cursed")
  43. trace("- <Empty> Secondary Weapon Slot is also cursed")
  44. trace("- Weapon Pickups will automatically destroy themselves periodically.")
  45. trace("- Weapon Drops destroy themselves. Only One Gunfu for Every Runfu")
  46. trace("Today's Mission is to Reach the Nuclear Throne. Good Luck!")
  47. trace("")
  48. */
  49. trace("Loaded Crown of Popo. Type /heathelp or /quickrundown for more info");
  50.  
  51. #define chat_command
  52. switch(argument0){
  53. case "showheat":
  54. trace("HEAT: " + string(global.Heat));
  55. return true;
  56. break;
  57. case "setheat":
  58. global.Heat = real(argument1);
  59. trace("HEAT SET TO " + string(real(argument1)));
  60. return true;
  61. break;
  62. case "spawntype":
  63. if argument1 = "normal" || argument1 = "van"{
  64. global.SpawnType = argument1;
  65. trace("IDPD Spawns set to " + string(argument1));
  66. }else trace("Invalid Entry (type 'normal' or 'van')");
  67. return true;
  68. break;
  69. case "spawntimer":
  70. global.IDPDTimer = real(argument1) * 30;
  71. trace("Spawn Timer set to " + string(global.IDPDTimer / 30) + " seconds");
  72. return true;
  73. break;
  74. case "preset":
  75. if argument1 = "easy"{
  76. global.SpawnType = "normal";
  77. global.IDPDTimer = 30 * 30;
  78. global.IDPDDifficulty = 0;
  79. global.Heat = 0;
  80. trace("PRESET: Easy Mode");
  81. }
  82. if argument1 = "normal"{
  83. global.SpawnType = "normal";
  84. global.IDPDTimer = 15 * 30;
  85. global.IDPDDifficulty = 1;
  86. global.Heat = 1;
  87. trace("PRESET: Normal Mode");
  88. }
  89. if argument1 = "hard"{
  90. global.SpawnType = "van";
  91. global.IDPDTimer = 12 * 30;
  92. GameCont.popolevel = 5;
  93. global.IDPDDifficulty = 2;
  94. global.Heat = 3;
  95. trace("PRESET: Hard Mode");
  96. }
  97. if argument1 = "saniblues"{
  98. global.SpawnType = "van";
  99. global.IDPDTimer = 6 * 30;
  100. GameCont.popolevel = 10;
  101. global.IDPDDifficulty = 3;
  102. global.Heat = 6;
  103. trace("PRESET: Saniblues");
  104. }
  105. if argument1 = "reallydad"{
  106. global.SpawnType = "van";
  107. global.IDPDTimer = 3 * 30;
  108. GameCont.popolevel = 20;
  109. global.IDPDDifficulty = 4;
  110. global.Heat = 10;
  111. trace("PRESET: reallyjoel's dad");
  112. }
  113. return true;
  114. break;
  115. case "bock":
  116. sound_play(sndMutant9Hurt);
  117. return true;
  118. break;
  119. case "heathelp":
  120. trace("/heathelp: Displays this message!")
  121. trace("/quickrundown: Displays MoTD");
  122. trace("/showheat: Displays current Heat level")
  123. trace("/setheat <int:number>: Sets heat.")
  124. trace(" Setting heat over 10 can have dangerous results!");
  125. trace("/spawntype <str:type>: IDPD portal type. 'normal/van'");
  126. trace("/spawntimer <int:number>: Sets spawn intervals, in seconds. Default: 15");
  127. trace("/preset <str:type>: Assigns the above variables automatically.")
  128. trace(" Presets: easy, normal, hard, saniblues, reallydad");
  129. trace("/bock: bock");
  130. return true;
  131. break;
  132. case "quickrundown":
  133. repeat(16){trace("")}
  134. trace("Only One Gunfu For Every Runfu Challenge:");
  135. trace("- Rogue Only");
  136. trace("- IDPD spawn every 10 seconds");
  137. trace("- Starting Weapon is automatically cursed");
  138. trace("- <Empty> Secondary Weapon Slot is also cursed");
  139. trace("- Weapon Pickups will automatically destroy themselves periodically");
  140. trace("- Weapon Drops destroy themselves. Only One Gunfu for Every Runfu");
  141. trace("- Vans stop if they pass the player, and blow up after one second");
  142. trace("Good Luck!")
  143. trace("");
  144. return true;
  145. break;
  146. default:
  147. return false;
  148. break;
  149. }
  150.  
  151. #define step
  152. if (!instance_exists(Portal) && (!instance_exists(Spiral)) && instance_exists(Player))
  153. global.time++;
  154. global.CrownSndTimer --;
  155.  
  156. var enemies_current;
  157. var enemyratio;
  158. enemyratio = 0;
  159. enemies_current = instance_number(enemy) - instance_number(Grunt) - instance_number(Inspector) - instance_number(Shielder) - instance_number(EliteGrunt) - instance_number(EliteInspector) - instance_number(EliteShielder) - instance_number(PopoFreak);
  160. if !instance_exists(Spiral){
  161. if global.enemies_max = 0 global.enemies_max = enemies_current;
  162. }else{
  163. global.IDPDSpawns = 0;
  164. global.enemies_max = 0;
  165. }
  166. with(Player){
  167. wep = 81;
  168. bwep = 0;
  169. curse = 1;
  170. bcurse = 1;
  171. }
  172. if global.enemies_max > 0 && enemies_current > 0 && instance_exists(Player){
  173. for(i=1;i<=GameCont.loops + global.Heat - global.IDPDSpawns;i++){
  174. enemyratio = (((enemies_current * 100)/global.enemies_max)/100); // 0.00 to 1.00
  175. if (enemyratio <= (1 / (GameCont.loops + global.Heat + 1)) * (global.Heat - global.IDPDSpawns) || enemies_current = 0){
  176. do{
  177. global.IDPDSpawns++;
  178. repeat(2) instance_create(0,0,IDPDSpawn);
  179. wait 15;
  180. }until enemyratio >= (global.Heat - global.IDPDSpawns) * 0.10;
  181. }
  182. }
  183. }
  184.  
  185. with(Van){
  186. if ("processed" not in self){
  187. walls = 6;
  188. yspd = 0;
  189. processed = 1;
  190. }
  191. if instance_exists(Player) && drivespeed > 0{
  192. if global.IDPDDifficulty >= 3 {
  193. if instance_nearest(x,y,Player).y > y yspd += 0.25
  194. else yspd -= 0.25;
  195. yspd = clamp(yspd,-1.5,1.5);
  196. y += yspd;
  197. }
  198. if right = 1{
  199. if instance_nearest(x,y,Player).x < x drivespeed *= 0.95;
  200. }else{
  201. if instance_nearest(x,y,Player).x > x drivespeed *= 0.95;
  202. }
  203. if drivespeed <= 0.20 drivespeed = 0;
  204. }
  205. if drivespeed < 1 meleedamage = 0;
  206. if drivespeed <= 0 && drawspr = 1155{
  207. my_health -= maxhealth/30;
  208. if my_health -1 <= 0{
  209. if random(3) < 1 instance_create(x,y,RoguePickup);
  210. }
  211. }
  212. }
  213.  
  214.  
  215. if !instance_exists(GenCont) && !instance_exists(Crown) && instance_exists(Player){
  216. instance_create(Player.x,Player.y,Crown);
  217. }
  218. /// FORCES THE PLAYER TO HAVE THE ROGUE RIFLE
  219. /// Crown stuff
  220. if instance_exists(Crown){
  221. with(Crown){
  222. /// Sets sprites when angry and when not.
  223. if global.CrownAngry = true{
  224. spr_idle = global.sprPopoCrownRage;
  225. spr_walk = global.sprPopoCrownRage;
  226. }else{
  227. spr_idle = global.sprPopoCrownIdle;
  228. spr_walk = global.sprPopoCrownWalk;
  229. }
  230. /// Collisions with fellow Crowns
  231. if collision_circle(x,y,6,Crown,0,1){
  232. with(collision_circle(x,y,6,Crown,0,1)){
  233. motion_add(point_direction(other.x,other.y,x,y),2)
  234. }
  235. }
  236. /// Needs the Player
  237. if instance_exists(Player){
  238. /// Depth correction
  239. if y > Player.y depth = Player.depth-1
  240. else depth = Player.depth+1;
  241. /// Teleports back to the player if stuck
  242. if (distance_to_object(Player) > 180){//Just slightly greater than the screen width
  243. repeat(10) instance_create(x+6-random(12),y+6-random(12),Dust);
  244. x = Player.x;
  245. y = Player.y;
  246. repeat(10) instance_create(x+6-random(12),y+6-random(12),Dust);
  247. sound_play_pitch(sndPickupDisappear,1);
  248. }
  249. }
  250.  
  251. /// Flip the sprite
  252. if (((direction+270) mod 360)>180) image_xscale = 1
  253. else image_xscale = -1;
  254.  
  255. /// Idle noises. Chance to increase the timer, rather than play it at set intervals.
  256. if random(6) < 1 && global.CrownSndTimer <= 0{
  257. sound_play_pitch(choose(sndCuzWep,sndCuzGreet,sndCuzGreet,sndCuzOutaway),1.20+random(0.2));
  258. global.CrownSndTimer = 1800 / (20+irandom(20));
  259. }else{
  260. if global.CrownSndTimer <= 0 global.CrownSndTimer += irandom(30);
  261. }
  262. }
  263. }
  264. /// Increased chance to turn Ammo Chests to IDPD Chests during generation
  265. if instance_exists(GenCont){
  266. with(AmmoChest){
  267. if random(10) < 1{
  268. instance_create(x,y,IDPDChest);
  269. instance_destroy();
  270. }
  271. }
  272. }
  273. /// Forces Present and Weapon chests to convert
  274. if !instance_exists(GenCont){
  275. with(AmmoChestMystery){
  276. instance_create(x,y,IDPDChest);
  277. instance_destroy();
  278. }
  279. with(WeaponChest){
  280. if random(2) < 1{
  281. var tempvar = choose(16,-16)
  282. instance_create(x+tempvar,y+tempvar,IDPDChest);
  283. }
  284. instance_create(x,y,IDPDChest);
  285. instance_destroy();
  286. }
  287. }
  288. /// IDPD Deaths. Handles drops and increments the global.IDPDKills
  289. /// IDPD Freaks are not IDPD, nor are they people.
  290. if instance_exists(LilHunter){
  291. with(LilHunter){
  292. if team != 3 team = 3;//Sets team to IDPD
  293. if my_health <= 0{
  294. repeat(3) instance_create(x,y,RoguePickup);
  295. instance_destroy();
  296. }
  297. }
  298. }
  299. with(Grunt){
  300. if my_health <= 0{
  301. if random(24) < 1 instance_create(x,y,RoguePickup);
  302. instance_destroy();
  303. }
  304. }
  305. with(Inspector){
  306. if my_health <= 0{
  307. if random(16) < 1 instance_create(x,y,RoguePickup);
  308. instance_destroy();
  309. }
  310. }
  311. with(Shielder){
  312. if my_health <= 0{
  313. if random(16) < 1 instance_create(x,y,RoguePickup);
  314. instance_destroy();
  315. }
  316. }
  317. with(EliteGrunt){
  318. if my_health <= 0{
  319. if random(4) < 1 instance_create(x,y,RoguePickup);
  320. instance_destroy();
  321. }
  322. }
  323. with(EliteInspector){
  324. if my_health <= 0{
  325. if random(4) < 1 instance_create(x,y,RoguePickup);
  326. instance_destroy();
  327. }
  328. }
  329. with(EliteShielder){
  330. if my_health <= 0{
  331. if random(4) < 1 instance_create(x,y,RoguePickup);
  332. instance_destroy();
  333. }
  334. }
  335. with(IDPDSpawn){
  336. if ("processed" not in self){
  337. if global.IDPDDifficulty = 3 && random(12) <= 1 elite = 1;
  338. if global.IDPDDifficulty > 3 elite = 1;
  339. processed = 1;
  340. }
  341. }
  342. if ((GameCont.area = 1 && GameCont.subarea = 1 && GameCont.loops = 0) || (GameCont.area = 0)) && instance_exists(GenCont){
  343. global.IDPDKills = 0;
  344. global.IDPD_old = 0;
  345. }
  346. if (global.time mod 30 = 1){
  347. with(WepPickup) instance_destroy();
  348. }
  349. if (global.time > global.IDPDTimer) = 1{
  350. if global.SpawnType = "van" && global.IDPDDifficulty != 4{
  351. repeat(max(GameCont.loops,1)) instance_create(10010,10010,VanSpawn);
  352. }else{
  353. repeat(2) instance_create(10010,10010,IDPDSpawn);
  354. }
  355. if instance_exists(Crown){
  356. with(Crown){
  357. sound_play_pitch(sndMutant16Chst,1.25);
  358. global.CrownAngry = true;
  359. image_index = 0;
  360. }
  361. }
  362. global.time = 0;
  363. }
  364.  
  365. if global.time mod 15 = 0{
  366. var IDPDCount = instance_number(Grunt) + instance_number(Inspector) + instance_number(Shielder) + instance_number(LilHunter) + instance_number(EliteGrunt) + instance_number(EliteInspector) + instance_number(EliteShielder);
  367. if IDPDCount < global.IDPD_old{
  368. var tempvar = global.IDPD_old - IDPDCount;
  369. if !(instance_exists(GenCont) || instance_exists(Spiral)){
  370. global.IDPDKills += tempvar;
  371. }
  372. }
  373. global.IDPD_old = IDPDCount;
  374. }
  375. #define draw
  376. var xoffset = view_xview;
  377. var yoffset = view_yview;
  378. var xstart = 0;
  379. var ystart = 50;
  380.  
  381. if instance_exists(Crown){
  382. with(Crown){
  383. if global.CrownAngry = true{
  384. draw_sprite(sprEmoteIndicator, 5, x, y);
  385. if image_index + image_speed >= image_number
  386. global.CrownAngry = false;
  387. }
  388. }
  389. }
  390. draw_set_halign(fa_left);
  391. draw_set_font(fntSmall);
  392.  
  393. draw_sprite(global.sprNoPopo, 0, xoffset + xstart, yoffset + ystart);
  394.  
  395. draw_text_nt(xoffset + xstart + 24, yoffset + ystart, "DEAD POPO: " + string(global.IDPDKills));
  396. draw_text_nt(xoffset + xstart + 24, yoffset + ystart + 10, "LIVE POPO: " + string(instance_number(Grunt) + instance_number(Inspector) + instance_number(Shielder) + instance_number(EliteGrunt) + instance_number(EliteInspector) + instance_number(EliteShielder))); //Freaks aren't IDPD anymore, or People for that matter
  397. draw_text_nt(xoffset + xstart + 24, yoffset + ystart + 20, "TIME2POPO: " + string(global.IDPDTimer - global.time));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement