// ------------------------------------------------------------------------------- //when the wall has used all its hitpoints, this will destroy it void blast_blastable_wall(segment *seg, int side) { int Connectside; segment *csegp; int a, n; Assert(seg->sides[side].wall_num != -1); Walls[seg->sides[side].wall_num].hps = -1; //say it's blasted csegp = &Segments[seg->children[side]]; Connectside = find_connect_side(seg, csegp); Assert(Connectside != -1); kill_stuck_objects(seg->sides[side].wall_num); kill_stuck_objects(csegp->sides[Connectside].wall_num); //if this is an exploding wall, explode it if (WallAnims[Walls[seg->sides[side].wall_num].clip_num].flags & WCF_EXPLODES) explode_wall(seg-Segments,side); else { //if not exploding, set final frame, and make door passable a = Walls[seg->sides[side].wall_num].clip_num; n = WallAnims[a].num_frames; wall_set_tmap_num(seg,side,csegp,Connectside,a,n-1); Walls[seg->sides[side].wall_num].flags |= WALL_BLASTED; Walls[csegp->sides[Connectside].wall_num].flags |= WALL_BLASTED; } }
// ------------------------------------------------------------------------------- //when the wall has used all its hitpoints, this will destroy it void blast_blastable_wall(segment *seg, int side) { int Connectside; segment *csegp; int a, n; Assert(seg->sides[side].wall_num != -1); csegp = &Segments[seg->children[side]]; Connectside = find_connect_side(seg, csegp); Assert(Connectside != -1); kill_stuck_objects(seg->sides[side].wall_num); kill_stuck_objects(csegp->sides[Connectside].wall_num); a = Walls[seg->sides[side].wall_num].clip_num; n = WallAnims[a].num_frames; if (!(WallAnims[Walls[seg->sides[side].wall_num].clip_num].flags & WCF_EXPLODES)) wall_set_tmap_num(seg,side,csegp,Connectside,a,n-1); Walls[seg->sides[side].wall_num].flags |= WALL_BLASTED; Walls[csegp->sides[Connectside].wall_num].flags |= WALL_BLASTED; //if this is an exploding wall, explode it if (WallAnims[Walls[seg->sides[side].wall_num].clip_num].flags & WCF_EXPLODES) explode_wall(seg-Segments,side); }