+VG_STATIC int __respawn( int argc, const char *argv[] )
+{
+ struct respawn_point *rp = NULL, *r;
+
+ if( argc == 1 )
+ {
+ for( int i=0; i<world.spawn_count; i++ )
+ {
+ r = &world.spawns[i];
+ if( !strcmp( r->name, argv[0] ) )
+ {
+ rp = r;
+ break;
+ }
+ }
+
+ if( !rp )
+ vg_warn( "No spawn named '%s'\n", argv[0] );
+ }
+
+ if( !rp )
+ {
+ float min_dist = INFINITY;
+
+ for( int i=0; i<world.spawn_count; i++ )
+ {
+ r = &world.spawns[i];
+ float d = v3_dist2( r->co, localplayer.rb.co );
+
+ vg_info( "Dist %s : %f\n", r->name, d );
+ if( d < min_dist )
+ {
+ min_dist = d;
+ rp = r;
+ }
+ }
+ }
+
+ if( !rp )
+ {
+ vg_error( "No spawn found\n" );
+
+ if( !world.spawn_count )
+ return 0;
+
+ rp = &world.spawns[0];
+ }
+
+ player_spawn( &localplayer, rp );
+ return 1;
+}
+