| 471 | } |
| 472 | |
| 473 | botent *newbotent() // create a new blank player |
| 474 | { |
| 475 | botent *d = new botent; |
| 476 | d->lastupdate = totalmillis; |
| 477 | setskin(d, rnd(6)); |
| 478 | weapon::equipplayer(d); |
| 479 | spawnstate(d); // move like above |
| 480 | int nextcn = 0; |
| 481 | bool lukin = true; |
| 482 | while(lukin) |
| 483 | { |
| 484 | bool used = nextcn==getclientnum(); |
| 485 | loopv(players) if(!used && players[i]) if(players[i]->clientnum==nextcn) used = true; |
| 486 | if(!used) lukin = false; else nextcn++; |
| 487 | } |
| 488 | loopv(players) if(i!=getclientnum() && !players[i]) |
| 489 | { |
| 490 | players[i] = d; |
| 491 | d->clientnum = nextcn; |
| 492 | return d; |
| 493 | } |
| 494 | if(players.length()==getclientnum()) players.add(NULL); |
| 495 | d->clientnum = nextcn; |
| 496 | players.add(d); |
| 497 | return d; |
| 498 | } |
| 499 | |
| 500 | void freebotent(botent *d) |
| 501 | { |
no test coverage detected