Hooks.once("ready", async function () {
|
|
if (!game.automatedevocations) {
|
|
game.automatedevocations = {};
|
|
game.automatedevocations[game.system.id] = {};
|
|
}
|
|
if(game.system.id == "dnd5e"){
|
|
game.automatedevocations.dnd5e = {
|
|
"Arcane Hand":[
|
|
{
|
|
creature: "Arcane Hand",
|
|
number: 1,
|
|
},
|
|
],
|
|
"Flaming Sphere":[
|
|
{
|
|
creature: "Flaming Sphere",
|
|
number: 1,
|
|
},
|
|
],
|
|
"Spiritual Weapon":[
|
|
{
|
|
creature: "Spiritual Weapon",
|
|
number: 1,
|
|
},
|
|
],
|
|
"Guardian of Faith":[
|
|
{
|
|
creature: "Spectral Guardian",
|
|
number: 1,
|
|
},
|
|
],
|
|
"Faithful Hound":[
|
|
{
|
|
creature: "Phantom Watchdog",
|
|
number: 1,
|
|
},
|
|
],
|
|
"Find Steed":[
|
|
{
|
|
creature: "Warhorse",
|
|
number: 1,
|
|
},
|
|
{
|
|
creature: "Pony",
|
|
number: 1,
|
|
},
|
|
{
|
|
creature: "Camel",
|
|
number: 1,
|
|
},
|
|
{
|
|
creature: "Elk",
|
|
number: 1,
|
|
},
|
|
{
|
|
creature: "Mastiff",
|
|
number: 1,
|
|
},
|
|
],
|
|
"Giant Insect":[
|
|
{
|
|
creature: "Giant Centipede",
|
|
number: 10,
|
|
},
|
|
{
|
|
creature: "Giant Spider",
|
|
number: 3,
|
|
},
|
|
{
|
|
creature: "Giant Wasp",
|
|
number: 5,
|
|
},
|
|
{
|
|
creature: "Giant Scorpion",
|
|
number: 1,
|
|
},
|
|
],
|
|
"Arcane Sword":[
|
|
{
|
|
creature: "Arcane Sword",
|
|
number: 1,
|
|
},
|
|
],
|
|
"Conjure Animals": (data) => {
|
|
let multiplier = 1;
|
|
if (data.level >= 5) multiplier = 2;
|
|
if (data.level >= 7) multiplier = 3;
|
|
let beasts = game.actors
|
|
.filter(
|
|
(a) =>
|
|
a.system.details.type?.value == "beast" &&
|
|
a.system.details.cr <= 2
|
|
)
|
|
.sort((a, b) => {
|
|
return a.system.details.cr < b.system.details.cr ? 1 : -1;
|
|
});
|
|
let creatures = [];
|
|
for (let beast of beasts) {
|
|
let number = 1;
|
|
const cr = beast.system.details.cr;
|
|
if(cr==2) number = 1;
|
|
else if(cr==1) number = 2;
|
|
else if(cr==0.5) number = 4;
|
|
else if(cr<=0.25) number = 8;
|
|
creatures.push({
|
|
creature: beast.name,
|
|
number: number*multiplier,
|
|
});
|
|
}
|
|
return creatures;
|
|
},
|
|
"Conjure Celestial": (data) => {
|
|
let celestials = game.actors
|
|
.filter(
|
|
(a) =>
|
|
a.system.details.type?.value == "celestial" &&
|
|
a.system.details.cr <= 4
|
|
)
|
|
.sort((a, b) => {
|
|
return a.system.details.cr < b.system.details.cr ? 1 : -1;
|
|
});
|
|
let creatures = [];
|
|
for (let celestial of celestials) {
|
|
creatures.push({
|
|
creature: celestial.name,
|
|
number: 1,
|
|
});
|
|
}
|
|
return creatures;
|
|
},
|
|
"Conjure Elemental": (data) => {
|
|
let elementals = game.actors
|
|
.filter(
|
|
(a) =>
|
|
a.system.details.type?.value == "elemental" &&
|
|
a.system.details.cr <= data.level
|
|
)
|
|
.sort((a, b) => {
|
|
return a.system.details.cr < b.system.details.cr ? 1 : -1;
|
|
});
|
|
let creatures = [];
|
|
for (let elemental of elementals) {
|
|
creatures.push({
|
|
creature: elemental.name,
|
|
number: 1,
|
|
});
|
|
}
|
|
return creatures;
|
|
},
|
|
"Conjure Fey": (data) => {
|
|
let feys = game.actors
|
|
.filter(
|
|
(a) =>
|
|
a.system.details.type?.value == "fey" &&
|
|
a.system.details.cr <= data.level
|
|
)
|
|
.sort((a, b) => {
|
|
return a.system.details.cr < b.system.details.cr ? 1 : -1;
|
|
});
|
|
let creatures = [];
|
|
for (let fey of feys) {
|
|
creatures.push({
|
|
creature: fey.name,
|
|
number: 1,
|
|
});
|
|
}
|
|
return creatures;
|
|
},
|
|
"Conjure Minor Elementals": (data) => {
|
|
let multiplier = 1;
|
|
if (data.level >= 6) multiplier = 2;
|
|
if (data.level >= 8) multiplier = 3;
|
|
let elementals = game.actors
|
|
.filter(
|
|
(a) =>
|
|
a.system.details.type?.value == "elemental" &&
|
|
a.system.details.cr <= 2
|
|
)
|
|
.sort((a, b) => {
|
|
return a.system.details.cr < b.system.details.cr ? 1 : -1;
|
|
});
|
|
|
|
let creatures = [];
|
|
for (let elemental of elementals) {
|
|
let number = 1;
|
|
const cr = elemental.system.details.cr;
|
|
if(cr==2) number = 1;
|
|
else if(cr==1) number = 2;
|
|
else if(cr==0.5) number = 4;
|
|
else if(cr<=0.25) number = 8;
|
|
creatures.push({
|
|
creature: elemental.name,
|
|
number: number*multiplier,
|
|
});
|
|
}
|
|
return creatures;
|
|
},
|
|
"Conjure Woodland Beings": (data) => {
|
|
let multiplier = 1;
|
|
if (data.level >= 6) multiplier = 2;
|
|
if (data.level >= 8) multiplier = 3;
|
|
let feys = game.actors
|
|
.filter(
|
|
(a) =>
|
|
a.system.details.type?.value == "fey" &&
|
|
a.system.details.cr <= data.level
|
|
)
|
|
.sort((a, b) => {
|
|
return a.system.details.cr < b.system.details.cr ? 1 : -1;
|
|
});
|
|
let creatures = [];
|
|
for (let fey of feys) {
|
|
let number = 1;
|
|
const cr = fey.system.details.cr;
|
|
if(cr==2) number = 1;
|
|
else if(cr==1) number = 2;
|
|
else if(cr==0.5) number = 4;
|
|
else if(cr<=0.25) number = 8;
|
|
creatures.push({
|
|
creature: fey.name,
|
|
number: number*multiplier,
|
|
});
|
|
}
|
|
return creatures;
|
|
},
|
|
"Animate Dead": (data) => {
|
|
let multiplier = 1 + (data.level-3)*2;
|
|
return [
|
|
{
|
|
creature: "Skeleton",
|
|
number: multiplier,
|
|
},
|
|
{
|
|
creature: "Zombie",
|
|
number: multiplier,
|
|
}
|
|
]
|
|
},
|
|
"Create Undead": (data) => {
|
|
let multiplier = data.level-3
|
|
if(data.level == 8){
|
|
return [
|
|
{
|
|
creature: "Ghoul",
|
|
number: 5,
|
|
},
|
|
{
|
|
creature: "Ghast",
|
|
number: 2,
|
|
},
|
|
{
|
|
creature: "Wights",
|
|
number: 2,
|
|
}
|
|
]
|
|
};
|
|
if(data.level == 9){
|
|
return [
|
|
{
|
|
creature: "Ghoul",
|
|
number: 6,
|
|
},
|
|
{
|
|
creature: "Ghast",
|
|
number: 3,
|
|
},
|
|
{
|
|
creature: "Wights",
|
|
number: 3,
|
|
},
|
|
{
|
|
creature: "Mummy",
|
|
number: 2,
|
|
}
|
|
]
|
|
};
|
|
return [
|
|
{
|
|
creature: "Ghoul",
|
|
number: multiplier,
|
|
}
|
|
]
|
|
},
|
|
"Find Familiar": [
|
|
{
|
|
creature: "Bat",
|
|
number: 1,
|
|
},
|
|
{
|
|
creature: "Cat",
|
|
number: 1,
|
|
},
|
|
{
|
|
creature: "Crab",
|
|
number: 1,
|
|
},
|
|
{
|
|
creature: "Frog",
|
|
number: 1,
|
|
},
|
|
{
|
|
creature: "Hawk",
|
|
number: 1,
|
|
},
|
|
{
|
|
creature: "Lizard",
|
|
number: 1,
|
|
},
|
|
{
|
|
creature: "Octopus",
|
|
number: 1,
|
|
},
|
|
{
|
|
creature: "Owl",
|
|
number: 1,
|
|
},
|
|
{
|
|
creature: "Poisonous Snake",
|
|
number: 1,
|
|
},
|
|
{
|
|
creature: "Quipper",
|
|
number: 1,
|
|
},
|
|
{
|
|
creature: "Rat",
|
|
number: 1,
|
|
},
|
|
{
|
|
creature: "Raven",
|
|
number: 1,
|
|
},
|
|
{
|
|
creature: "Sea Horse",
|
|
number: 1,
|
|
},
|
|
{
|
|
creature: "Spider",
|
|
number: 1,
|
|
},
|
|
{
|
|
creature: "Weasel",
|
|
number: 1,
|
|
},
|
|
],
|
|
};
|
|
}
|
|
game.automatedevocations.originalBindings = deepClone(game.automatedevocations[game.system.id]);
|
|
game.automatedevocations[game.system.id] = mergeObject(game.automatedevocations[game.system.id],game.settings.get(AECONSTS.MN, "customautospells"))
|
|
});
|