Adeptus Titanicus Mission Generator
About this app
Generate missions for Adeptus Titanicus using faction and battle value selections.
Adeptus Titanicus Mission Generator Adeptus Titanicus Mission Generator Select Faction: Loyalists Traitors Select Battle Value: 1000 1500 2000 2500 3000 3500 4000 4500 5000 5500 6000 Generate Mission
Related apps
Put this on your site
Source
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Adeptus Titanicus Mission Generator</title>
<meta name="description" content="Generate missions for Adeptus Titanicus using faction and battle value selections.">
<meta name="keywords" content="Adeptus Titanicus, Mission Generator, Wargaming, Board Games, Warhammer 40k">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.min.js" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.6.0/css/fontawesome.min.css" crossorigin="anonymous">
<script type="text/javascript">
function generateMission() {
const faction = document.getElementById('faction').value;
const bvLimit = parseInt(document.getElementById('bv').value);
const selectedTitans = getEnemyTitans(bvLimit);
const attackerMission = getAttackerMission(bvLimit, selectedTitans.titans);
const defenderMission = getDefenderMission(bvLimit, selectedTitans.titans);
document.getElementById('result').innerHTML = `
<h3>${faction} Mission</h3>
<h4>Enemy Titans: ${selectedTitans.titans.join(', ')}</h4>
<h4>Total BR: ${selectedTitans.totalBR}</h4>
<h4>Attacker Mission:</h4>
<p><strong>${attackerMission.title}</strong>: ${attackerMission.majorVictory} (Major Victory), ${attackerMission.minorVictory} (Minor Victory).</p>
<h4>Defender Mission:</h4>
<p><strong>${defenderMission.title}</strong>: ${defenderMission.majorVictory} (Major Victory), ${defenderMission.minorVictory} (Minor Victory).</p>
`;
}
function getEnemyTitans(bvLimit) {
const titanTypes = [
{ name: "Warlord Death Bringer", BR: 840 },
{ name: "Warlord Eclipse", BR: 630 },
{ name: "Warlord Nightgaunt", BR: 360 },
{ name: "Warlord Nemesis", BR: 1170 },
];
const selectedTitans = [];
let totalBR = 0;
shuffleArray(titanTypes);
for (const titan of titanTypes) {
if (totalBR + titan.BR <= bvLimit) {
selectedTitans.push(`${titan.name} (BR: ${titan.BR})`);
totalBR += titan.BR;
}
}
if (totalBR < bvLimit) {
for (const titan of titanTypes) {
if (!selectedTitans.includes(`${titan.name} (BR: ${titan.BR})`) && totalBR + titan.BR <= bvLimit) {
selectedTitans.push(`${titan.name} (BR: ${titan.BR})`);
totalBR += titan.BR;
}
}
}
return { titans: selectedTitans, totalBR: totalBR };
}
function shuffleArray(array) {
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
}
function getAttackerMission(bv, enemyTitans) {
const missions = [
{ title: 'Engage & Destroy', majorVictory: `Disable or destroy the entire opposing force (${enemyTitans.join(', ')}).`, minorVictory: 'Score more Victory Points than your opponent.' },
{ title: 'Propaganda Wars', majorVictory: `Disable or destroy one opposing Titan (${enemyTitans.join(', ')}) without your opponent scoring any Victory Points.`, minorVictory: 'End the game without your Titans disabled or destroyed, and score more Victory Points.' },
{ title: 'War of Attrition', majorVictory: 'Score twice as many Victory Points as your opponent.', minorVictory: 'Score more Victory Points than your opponent.' },
{ title: 'Blitzkrieg', majorVictory: 'Score more Victory Points than your opponent and exit half the value of your force over the opposing player’s table edge.', minorVictory: 'Exit half the points value of your force over the opposing player’s table edge.' },
{ title: 'Convoy', majorVictory: `Exit the Titan carrying the cargo over the opposing player’s table edge.`, minorVictory: 'Exit carrying cargo and score more Victory Points than your opponent.' },
{ title: 'Rescue Mission', majorVictory: 'Exit the Titan carrying the spy from your own table edge.', minorVictory: 'Pick up the spy and score more Victory Points than your opponent.' },
{ title: 'Spoiling Attack', majorVictory: `Disable or destroy one opposing Titan (${enemyTitans.join(', ')}) and score more Victory Points than your opponent.`, minorVictory: 'Score more Victory Points than your opponent.' },
{ title: 'Break-Out', majorVictory: 'Exit more than half the points value of your force over the opposing player’s table edge.', minorVictory: 'Score more Victory Points than your opponent.' }
];
return missions[Math.floor(Math.random() * missions.length)];
}
function getDefenderMission(bv, enemyTitans) {
const missions = [
{ title: 'Engage & Destroy', majorVictory: `Destroy or disable the entire enemy force including ${enemyTitans.join(', ')}.`, minorVictory: 'Score more Victory Points than your opponent.' },
{ title: 'Tripwire Defence', majorVictory: 'Stop your opponent achieving any Major Victory conditions and score more Victory Points.', minorVictory: 'Score more Victory Points than your opponent.' },
{ title: 'The Trap', majorVictory: `Destroy or disable the entire opposing force including ${enemyTitans.join(', ')}.`, minorVictory: 'Score more Victory Points than your opponent.' },
{ title: 'Defensive Line', majorVictory: 'Stop your opponent achieving any Major Victory conditions and score more Victory Points.', minorVictory: 'Score more Victory Points than your opponent.' },
{ title: 'Covering Force', majorVictory: 'Exit more than half your force from your own table edge.', minorVictory: 'Score more Victory Points than your opponent.' },
{ title: 'Holding Action', majorVictory: 'Score more Victory Points than your opponent and exit at least half your force’s points from your own table edge.', minorVictory: 'Score more Victory Points than your opponent.' },
{ title: 'No Retreat', majorVictory: `Disable or destroy at least one opposing Titan (${enemyTitans.join(', ')}) and score more Victory Points.`, minorVictory: 'Score more Victory Points than your opponent.' }
];
return missions[Math.floor(Math.random() * missions.length)];
}
document.addEventListener("DOMContentLoaded", function() {
document.getElementById('generate').addEventListener('click', generateMission);
});
function saveLocal() {
const faction = document.getElementById('faction').value;
const bv = document.getElementById('bv').value;
localStorage.setItem('faction', faction);
localStorage.setItem('bv', bv);
}
function loadLocal() {
const faction = localStorage.getItem('faction');
const bv = localStorage.getItem('bv');
if (faction) document.getElementById('faction').value = faction;
if (bv) document.getElementById('bv').value = bv;
}
window.onload = loadLocal;
</script>
<style>
body {
background: linear-gradient(135deg, #4caf50, #8bc34a);
color: white;
font-family: 'Arial', sans-serif;
}
#main-container {
max-width: 600px;
margin: 50px auto;
padding: 20px;
border-radius: 10px;
box-shadow: 0 0 15px rgba(0, 0, 0, 0.5);
background: rgba(255, 255, 255, 0.2);
}
h1, h3 {
text-align: center;
}
label {
font-weight: bold;
}
button {
width: 100%;
margin-top: 20px;
}
</style>
</head>
<body>
<div id="main-container" class="container">
<h1>Adeptus Titanicus Mission Generator</h1>
<div class="mb-3">
<label for="faction" class="form-label">Select Faction:</label>
<select id="faction" class="form-select">
<option value="Loyalists">Loyalists</option>
<option value="Traitors">Traitors</option>
</select>
</div>
<div class="mb-3">
<label for="bv" class="form-label">Select Battle Value:</label>
<select id="bv" class="form-select">
<option value="1000">1000</option>
<option value="1500">1500</option>
<option value="2000">2000</option>
<option value="2500">2500</option>
<option value="3000">3000</option>
<option value="3500">3500</option>
<option value="4000">4000</option>
<option value="4500">4500</option>
<option value="5000">5000</option>
<option value="5500">5500</option>
<option value="6000">6000</option>
</select>
</div>
<button id="generate" class="btn btn-primary">Generate Mission</button>
<div id="result" class="mt-4"></div>
</div>
</body>
</html>
NEW APPS
These are apps made by the community!