dest.tx += 12*dx; dest.ty += 12*dy;
dest.tx += 20*dx; dest.ty += 20*dy;
void Missile_launcher::handle_event	(	unsigned long curtime,	long udata	)	{	Game_window *gwin = Game_window::get_game_window();	Tile_coord src = egg->get_abs_tile_coord();					// Is egg off the screen?	if (!gwin->get_win_tile_rect().has_point(src.tx, src.ty))		return;			// Return w'out adding back to queue.	Projectile_effect *proj = 0;	if (dir < 8)			// Direction given?		{			// Get adjacent tile in direction.		Tile_coord adj = src.get_neighbor(dir%8);					// Make it go 12 tiles.		int dx = adj.tx - src.tx, dy = adj.ty - src.ty;		Tile_coord dest = src;		dest.tx += 12*dx;		dest.ty += 12*dy;		proj = new Projectile_effect(src, dest, shapenum, weapon);		}	else				// Target a party member.		{		Actor *party[9];		int psize = gwin->get_party(party, 1);		int cnt = psize;		int n = rand()%psize;	// Pick one at random.					// Find one we can hit.		for (int i = n; !proj && cnt; cnt--, i = (i + 1)%psize)			if (Fast_pathfinder_client::is_straight_path(src,					party[i]->get_abs_tile_coord()))				proj = new Projectile_effect(					src, party[i], shapenum, weapon);		}	if (proj)		gwin->add_effect(proj);					// Add back to queue for next time.	gwin->get_tqueue()->add(curtime + delay, this, udata);	}