* Initializes a new savegame with * everything available. */
| 380 | * everything available. |
| 381 | */ |
| 382 | void NewBattleState::initSave() |
| 383 | { |
| 384 | const Ruleset *rule = _game->getRuleset(); |
| 385 | SavedGame *save = new SavedGame(); |
| 386 | Base *base = new Base(rule); |
| 387 | const YAML::Node &starter = _game->getRuleset()->getStartingBase(); |
| 388 | base->load(starter, save, true, true); |
| 389 | save->getBases()->push_back(base); |
| 390 | |
| 391 | // kill everything we don't want in this base |
| 392 | for (std::vector<Soldier*>::iterator i = base->getSoldiers()->begin(); i != base->getSoldiers()->end(); ++i) delete (*i); |
| 393 | base->getSoldiers()->clear(); |
| 394 | for (std::vector<Craft*>::iterator i = base->getCrafts()->begin(); i != base->getCrafts()->end(); ++i) delete (*i); |
| 395 | base->getCrafts()->clear(); |
| 396 | base->getItems()->getContents()->clear(); |
| 397 | |
| 398 | _craft = new Craft(rule->getCraft(_crafts[_cbxCraft->getSelected()]), base, 1); |
| 399 | base->getCrafts()->push_back(_craft); |
| 400 | |
| 401 | // Generate soldiers |
| 402 | for (int i = 0; i < 30; ++i) |
| 403 | { |
| 404 | Soldier *soldier = rule->genSoldier(save); |
| 405 | |
| 406 | for (int n = 0; n < 5; ++n) |
| 407 | { |
| 408 | if (RNG::percent(70)) |
| 409 | continue; |
| 410 | soldier->promoteRank(); |
| 411 | |
| 412 | UnitStats* stats = soldier->getCurrentStats(); |
| 413 | stats->tu += RNG::generate(0, 5); |
| 414 | stats->stamina += RNG::generate(0, 5); |
| 415 | stats->health += RNG::generate(0, 5); |
| 416 | stats->bravery += RNG::generate(0, 5); |
| 417 | stats->reactions += RNG::generate(0, 5); |
| 418 | stats->firing += RNG::generate(0, 5); |
| 419 | stats->throwing += RNG::generate(0, 5); |
| 420 | stats->strength += RNG::generate(0, 5); |
| 421 | stats->psiStrength += RNG::generate(0, 5); |
| 422 | stats->melee += RNG::generate(0, 5); |
| 423 | stats->psiSkill += RNG::generate(0, 20); |
| 424 | } |
| 425 | UnitStats* stats = soldier->getCurrentStats(); |
| 426 | stats->bravery = (int)ceil(stats->bravery / 10.0) * 10; // keep it a multiple of 10 |
| 427 | |
| 428 | base->getSoldiers()->push_back(soldier); |
| 429 | if (i < _craft->getRules()->getSoldiers()) |
| 430 | soldier->setCraft(_craft); |
| 431 | } |
| 432 | |
| 433 | // Generate items |
| 434 | const std::vector<std::string> &items = rule->getItemsList(); |
| 435 | for (std::vector<std::string>::const_iterator i = items.begin(); i != items.end(); ++i) |
| 436 | { |
| 437 | RuleItem *rule = _game->getRuleset()->getItem(*i); |
| 438 | if (rule->getBattleType() != BT_CORPSE && rule->isRecoverable()) |
| 439 | { |
nothing calls this directly
no test coverage detected