void process_armageddon(void) { struct PlayerInfo *player; struct Dungeon *dungeon; struct Thing *heartng; long i; SYNCDBG(6,"Starting"); //_DK_process_armageddon(); return; if (game.armageddon_cast_turn == 0) return; if (game.armageddon.count_down+game.armageddon_cast_turn > game.play_gameturn) { if (player_cannot_win(game.armageddon_caster_idx)) { // Stop the armageddon if its originator is just losing game.armageddon_cast_turn = 0; } } else if (game.armageddon.count_down+game.armageddon_cast_turn == game.play_gameturn) { for (i=0; i < PLAYERS_COUNT; i++) { player = get_player(i); if (player_exists(player)) { if (player->field_2C == 1) reveal_whole_map(player); } } } else if (game.armageddon.count_down+game.armageddon_cast_turn < game.play_gameturn) { for (i=0; i < PLAYERS_COUNT; i++) { player = get_player(i); if ( (player_exists(player)) && (player->field_2C == 1) ) { dungeon = get_dungeon(player->id_number); if ((player->victory_state == VicS_Undecided) && (dungeon->num_active_creatrs == 0)) { event_kill_all_players_events(i); set_player_as_lost_level(player); if (is_my_player_number(i)) LbPaletteSet(engine_palette); heartng = get_player_soul_container(player->id_number); if (thing_exists(heartng)) { heartng->health = -1; } } } } } }
short tunneller_doing_nothing(struct Thing *creatng) { //return _DK_tunneller_doing_nothing(creatng); struct CreatureControl *cctrl; cctrl = creature_control_get_from_thing(creatng); // Wait for some time if (game.play_gameturn - cctrl->last_mood_sound_turn <= 1) { return 1; } /* Sometimes we may have no target dungeon. In that case, destination dungeon * index is negative. */ if (cctrl->party.target_plyr_idx == -1) { script_support_send_tunneller_to_appropriate_dungeon(creatng); return 0; } if (!player_cannot_win(cctrl->party.target_plyr_idx)) { if (good_can_move_to_dungeon_heart(creatng, cctrl->party.target_plyr_idx)) { internal_set_thing_state(creatng, CrSt_GoodDoingNothing); return 1; } } cctrl->party.target_plyr_idx = good_find_enemy_dungeon(creatng); if (cctrl->party.target_plyr_idx != -1) { internal_set_thing_state(creatng, CrSt_GoodDoingNothing); return 1; } int plyr_idx; plyr_idx = get_best_dungeon_to_tunnel_to(creatng); if (plyr_idx == -1) { return 1; } struct Dungeon *dungeon; dungeon = get_dungeon(plyr_idx); if ( dungeon->num_active_creatrs || dungeon->num_active_diggers ) { struct Coord3d pos; get_random_position_in_dungeon_for_creature(plyr_idx, 1, creatng, &pos); send_tunneller_to_point_in_dungeon(creatng, plyr_idx, &pos); } else { good_setup_wander_to_dungeon_heart(creatng, plyr_idx); } return 1; }