public function buildRulebook($owner = -1) { //Build rulebook or retrieve it from the cache. $out = Cache::remember('rulebook', 24 * 60, function () { $baseRulebook = []; $baseRulebook['sects'] = $this->expandSects(RulebookSect::get()); $baseRulebook['clans'] = $this->expandClans(RulebookClan::get()); $baseRulebook['rituals'] = $this->sortByGroups(RulebookRitual::whereNull('owner')->get(), "rituals"); $baseRulebook['backgrounds'] = $this->sortByGroups(RulebookBackground::orderBy('name')->get(), "backgrounds"); $baseRulebook['disciplines'] = $this->expandDisciplines(RulebookDiscipline::orderBy('name')->get()); $baseRulebook['natures'] = RulebookNature::get(); $baseRulebook['abilities'] = $this->sortByGroups(RulebookAbility::where('owner', null)->orderBy('name')->get(), "abilities"); $baseRulebook["paths"] = $this->expandPaths(RulebookPath::get()); $baseRulebook["derangements"] = RulebookDerangement::get(); $baseRulebook['merits'] = $this->sortByGroups(RulebookMerit::orderBy("cost")->get(), "merits"); $baseRulebook['flaws'] = $this->sortByGroups(RulebookFlaw::orderBy("cost")->get(), "flaws"); return $baseRulebook; }); if ($owner != -1) { $out['custom_abilities'] = RulebookAbility::where('owner', $owner)->get(); $out['elder_powers'] = RulebookElderPower::where('owner_id', $owner)->get(); $out['combo_disciplines'] = RulebookComboDiscipline::where('owner_id', $owner)->get(); $out['custom_rituals'] = RulebookRitual::where('owner', $owner)->get(); } return Response::json($out); }
public function disciplines() { $discipline_ids = explode(",", $this->disciplines); $disciplines = []; foreach ($discipline_ids as $id) { $disciplines[] = RulebookDiscipline::find($id); } return $disciplines; }
} } } if ($key == "disciplines" && sizeof($value) > 0) { echo "<h5>Disciplines</h5>"; foreach ($value as $k => $v) { //Get rank difference $r1 = isset($v["ranks"][0]) ? $v["ranks"][0] : 0; $r2 = isset($v["ranks"][1]) ? $v["ranks"][1] : 0; $diff = $r2 - $r1; if (strpos($k, "-") !== FALSE) { $parts = explode("-", $k); $k = $parts[0]; $path = $parts[1]; } $discipline = RulebookDiscipline::find($k); if (isset($path)) { $discipline = RulebookDisciplinePath::find($path); } if ($diff != 0) { $order = $diff > 0 ? [$r1, $r2] : [$r2, $r1]; for ($i = $order[0]; $i < $order[1]; $i++) { $diff_array = $diff > 0 ? [null, $discipline->ranks()->get()[$i]->name . " (" . $discipline->name . " " . ($i + 1) . ")"] : [$discipline->ranks()->get()[$i]->name . " (" . $discipline->name . " " . ($i + 1) . ")", null]; print_change("", $diff_array, ["Purchased .", "[change]", "Removed ."]); } } } } if ($key == "elderPowers" && sizeof($value) > 0) { echo "<h5>Elder Powers</h5>"; foreach ($value as $k => $v) {
public function testStorytellerPurchaseHardPath() { self::$version->setEditingUser(self::$storyteller); self::$version->updateDiscipline(RulebookDiscipline::find(4), 0, 21); //This is another free basic. $this->assertCostDifference(-3, function () { self::$version->updateDiscipline(RulebookDiscipline::find(4), 1, 21); }); $this->assertCostDifference(0, function () { self::$version->updateDiscipline(RulebookDiscipline::find(4), 2, 21); }); $this->assertCostDifference(0, function () { self::$version->updateDiscipline(RulebookDiscipline::find(4), 3, 21); }); $this->assertCostDifference(0, function () { self::$version->updateDiscipline(RulebookDiscipline::find(4), 4, 21); }); $this->assertCostDifference(0, function () { self::$version->updateDiscipline(RulebookDiscipline::find(4), 5, 21); }); }
public function save() { $user = Auth::user(); $character = Character::find(Input::get('characterId')); if (!$character) { $character = new Character(); $characterIsNew = true; } if (!isset($character->user_id)) { $character->user_id = $user->id; } $character->name = Input::get("sheet.name"); $character->save(); CharacterVersion::where('character_id', $character->id)->where('version', '>', $character->approved_version)->delete(); $version = CharacterVersion::createNewVersion($character, Input::has("comment") ? Input::get("comment") : null); if ($version->isNewCharacter()) { $version->setHasDroppedMorality(Input::get("sheet.hasDroppedMorality") == "true"); } try { $version->setEditingUser($user); if (Input::get("sheet.sect.selected")) { $version->setSect(RulebookSect::find(Input::get("sheet.sect.selected")), RulebookSect::find(Input::get("sheet.sect.displaying"))); } if (Input::get("sheet.clan.selected")) { $version->setClan(RulebookClan::find(Input::get("sheet.clan.selected")), RulebookClan::find(Input::get("sheet.clan.displaying"))); } $version->setClanOptions(Input::get("sheet.clanOptions.0"), Input::get("sheet.clanOptions.1"), Input::get("sheet.clanOptions.2")); if (Input::get("sheet.nature")) { $version->setNature(RulebookNature::find(Input::get("sheet.nature"))); } if (Input::get("sheet.willpower")) { $version->setWillpower(Input::get("sheet.willpower.dots"), Input::get("sheet.willpower.traits")); } if (Input::get("sheet.attributes")) { $version->setAttributes(Input::get("sheet.attributes.physicals"), Input::get("sheet.attributes.mentals"), Input::get("sheet.attributes.socials")); } foreach ((array) Input::get("sheet.abilities") as $ability) { if (array_key_exists("specialization", $ability)) { $version->addAbilityWithSpecialization(RulebookAbility::find($ability["id"]), $ability["count"], $ability["specialization"], $ability["name"]); } else { $version->addAbility(RulebookAbility::find($ability["id"]), $ability["count"], $ability["name"]); } } foreach ((array) Input::get("sheet.disciplines") as $discipline) { $version->updateDiscipline(RulebookDiscipline::find($discipline["id"]), $discipline["count"], array_key_exists("path", $discipline) ? $discipline["path"] : 0); } foreach ((array) Input::get("newRituals") as $newRitualData) { $version->addRitualToBook($newRitualData["name"], $newRitualData["description"], $newRitualData["type"]); } foreach ((array) Input::get("sheet.rituals") as $ritualId) { $version->addRitual($ritualId); } if (Input::get("sheet.path")) { $version->updatePath(RulebookPath::find(Input::get("sheet.path")), Input::get("sheet.virtues.0"), Input::get("sheet.virtues.1"), Input::get("sheet.virtues.2"), Input::get("sheet.virtues.3")); } foreach ((array) Input::get("sheet.merits") as $meritData) { $version->addMerit(RulebookMerit::find($meritData["id"]), array_key_exists("description", $meritData) ? $meritData["description"] : null); } foreach ((array) Input::get("sheet.flaws") as $flawData) { $version->addFlaw(RulebookFlaw::find($flawData["id"]), array_key_exists("description", $flawData) ? $flawData["description"] : null); } foreach ((array) Input::get("sheet.derangements") as $derangementData) { $version->addDerangement(RulebookDerangement::find($derangementData["id"]), array_key_exists("description", $derangementData) ? $derangementData["description"] : null); } foreach ((array) Input::get("sheet.backgrounds") as $backgroundData) { $version->addBackground(RulebookBackground::find($backgroundData["id"]), $backgroundData["count"], array_key_exists("description", $backgroundData) ? $backgroundData["description"] : null); } foreach ((array) Input::get("sheet.elderPowers") as $elderData) { $version->addElderPower($elderData); } foreach ((array) Input::get("sheet.comboDisciplines") as $comboData) { $version->addComboDiscipline($comboData); } $version->clearUntouchedRecords(); } catch (Exception $e) { throw $e; } return $version; }
public function inClanDisciplines($version = -1) { if ($version == -1) { $version = $this->activeVersion(); } $clanDefinition = $this->clan($version)->first()->definition; if ($clanDefinition->name == "Caitiff") { $clanOptions = $this->clanOptions($version)->first(); $disciplines = []; $disciplines[] = RulebookDiscipline::where('name', $clanOptions->option1)->first(); $disciplines[] = RulebookDiscipline::where('name', $clanOptions->option2)->first(); $disciplines[] = RulebookDiscipline::where('name', $clanOptions->option3)->first(); } else { if ($clanDefinition->name == "Malkavian") { $clanOptions = $this->clanOptions($version)->first(); $disciplines = $clanDefinition->disciplines(); if ($clanOptions->option2) { $disciplines[] = RulebookDiscipline::where('name', $clanOptions->option2)->first(); } } else { if ($clanDefinition->name == "Tremere") { $clanOptions = $this->clanOptions($version)->first(); $disciplines = $clanDefinition->disciplines(); if ($clanOptions->option1) { $disciplines[] = RulebookDiscipline::where('name', $clanOptions->option1)->first(); } } else { $disciplines = $clanDefinition->disciplines(); } } } return $disciplines; }