// // The event handler for the group. // // @Param ev - Allegro event variable // void AI_Group::EventHandler(ALLEGRO_EVENT &ev) { // Handler for pickups drops.Event_Handler(ev); // Spawn the boss when SPAWN_BOSS_EVENT emits. Only one boss is allowed per group. if (ev.type == SPAWN_BOSS_EVENT && !BossActive) SpawnBoss(ev.user.data1, ev.user.data2); // Spawn a pickup when an AI is killed else if (ev.type == AI_KILLED_EVENT || ev.type == BOSS_KILLED_EVENT) drops.SpawnObjectRandom(AVec2i(ev.user.data1, ev.user.data2), 25); }
void ScanInfoPlane (void) { unsigned x=0; unsigned y=0; unsigned i=0; unsigned j=0; int tile=0; unsigned far *start = NULL; start = mapsegs[1]; for (y=0;y<mapheight;y++) for (x=0;x<mapwidth;x++) { tile = *start++; if (!tile) continue; switch (tile) { case 19: case 20: case 21: case 22: SpawnPlayer(x,y,NORTH+tile-19); break; case 23: case 24: case 25: case 26: case 27: case 28: case 29: case 30: case 31: case 32: case 33: case 34: case 35: case 36: case 37: case 38: case 39: case 40: case 41: case 42: case 43: case 44: case 45: case 46: case 47: case 48: case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: case 58: case 59: case 60: case 61: case 62: case 63: case 64: case 65: case 66: case 67: case 68: case 69: case 70: case 71: case 72: case 73: // TRUCK AND SPEAR! case 74: SpawnStatic(x,y,tile-23); break; // // P wall // case 98: if (!loadedgame) gamestate.secrettotal++; break; // // guard // case 180: case 181: case 182: case 183: if (gamestate.difficulty<gd_hard) break; tile -= 36; case 144: case 145: case 146: case 147: if (gamestate.difficulty<gd_medium) break; tile -= 36; case 108: case 109: case 110: case 111: SpawnStand(en_guard,x,y,tile-108); break; case 184: case 185: case 186: case 187: if (gamestate.difficulty<gd_hard) break; tile -= 36; case 148: case 149: case 150: case 151: if (gamestate.difficulty<gd_medium) break; tile -= 36; case 112: case 113: case 114: case 115: SpawnPatrol(en_guard,x,y,tile-112); break; case 124: SpawnDeadGuard (x,y); break; // // officer // case 188: case 189: case 190: case 191: if (gamestate.difficulty<gd_hard) break; tile -= 36; case 152: case 153: case 154: case 155: if (gamestate.difficulty<gd_medium) break; tile -= 36; case 116: case 117: case 118: case 119: SpawnStand(en_officer,x,y,tile-116); break; case 192: case 193: case 194: case 195: if (gamestate.difficulty<gd_hard) break; tile -= 36; case 156: case 157: case 158: case 159: if (gamestate.difficulty<gd_medium) break; tile -= 36; case 120: case 121: case 122: case 123: SpawnPatrol(en_officer,x,y,tile-120); break; // // ss // case 198: case 199: case 200: case 201: if (gamestate.difficulty<gd_hard) break; tile -= 36; case 162: case 163: case 164: case 165: if (gamestate.difficulty<gd_medium) break; tile -= 36; case 126: case 127: case 128: case 129: SpawnStand(en_ss,x,y,tile-126); break; case 202: case 203: case 204: case 205: if (gamestate.difficulty<gd_hard) break; tile -= 36; case 166: case 167: case 168: case 169: if (gamestate.difficulty<gd_medium) break; tile -= 36; case 130: case 131: case 132: case 133: SpawnPatrol(en_ss,x,y,tile-130); break; // // dogs // case 206: case 207: case 208: case 209: if (gamestate.difficulty<gd_hard) break; tile -= 36; case 170: case 171: case 172: case 173: if (gamestate.difficulty<gd_medium) break; tile -= 36; case 134: case 135: case 136: case 137: SpawnStand(en_dog,x,y,tile-134); break; case 210: case 211: case 212: case 213: if (gamestate.difficulty<gd_hard) break; tile -= 36; case 174: case 175: case 176: case 177: if (gamestate.difficulty<gd_medium) break; tile -= 36; case 138: case 139: case 140: case 141: SpawnPatrol(en_dog,x,y,tile-138); break; // // boss // #ifndef SPEAR case 214: SpawnBoss (x,y); break; case 197: SpawnGretel (x,y); break; case 215: SpawnGift (x,y); break; case 179: SpawnFat (x,y); break; case 196: SpawnSchabbs (x,y); break; case 160: SpawnFakeHitler (x,y); break; case 178: SpawnHitler (x,y); break; #else /* Spawns different (creepier) bosses for the Spear of Destiny version. */ case 106: SpawnSpectre (x,y); break; case 107: SpawnAngel (x,y); break; case 125: SpawnTrans (x,y); break; case 142: SpawnUber (x,y); break; case 143: SpawnWill (x,y); break; case 161: SpawnDeath (x,y); break; #endif // // mutants // case 252: case 253: case 254: case 255: if (gamestate.difficulty<gd_hard) break; tile -= 18; case 234: case 235: case 236: case 237: if (gamestate.difficulty<gd_medium) break; tile -= 18; case 216: case 217: case 218: case 219: SpawnStand(en_mutant,x,y,tile-216); break; case 256: case 257: case 258: case 259: if (gamestate.difficulty<gd_hard) break; tile -= 18; case 238: case 239: case 240: case 241: if (gamestate.difficulty<gd_medium) break; tile -= 18; case 220: case 221: case 222: case 223: SpawnPatrol(en_mutant,x,y,tile-220); break; // // ghosts // /* Some enemies are the pacman's ghosts! Example: http://www.youtube.com/watch?v=zaKWLUvLrMg */ #ifndef SPEAR case 224: SpawnGhosts (en_blinky,x,y); break; case 225: SpawnGhosts (en_clyde,x,y); break; case 226: SpawnGhosts (en_pinky,x,y); break; case 227: SpawnGhosts (en_inky,x,y); break; #endif } } }