Files
MaterialDeck/src/systems/tokenHelper.js

297 lines
7.6 KiB
JavaScript

import {dnd5e} from "./dnd5e.js"
import {dnd35e} from "./dnd35e.js"
import {pf2e} from "./pf2e.js"
import {demonlord} from "./demonlord.js";
import {wfrp4e} from "./wfrp4e.js"
import {compatibleCore} from "../misc.js";
export class TokenHelper{
constructor(){
this.system;
this.setSystem();
}
setSystem() {
if (game.system.id == 'D35E' || game.system.id == 'pf1') this.system = new dnd35e();
else if (game.system.id == 'pf2e') this.system = new pf2e();
else if (game.system.id == 'demonlord') this.system = new demonlord();
else if (game.system.id == 'wfrp4e') this.system = new wfrp4e();
else this.system = new dnd5e(); //default to dnd5e
}
/***********************************************************************
* System agnostic functions
***********************************************************************/
getToken(type,identifier) {
if (type == 'selected') return this.getSelectedToken();
else if (type != 'selected' && identifier == '') return;
else if (type == 'tokenName') return this.getTokenFromTokenName(identifier);
else if (type == 'actorName') return this.getTokenFromActorName(identifier);
else if (type == 'tokenId') return this.getTokenFromTokenId(identifier);
else if (type == 'actorId') return this.getTokenFromActorId(identifier);
}
getTokenFromTokenId(id) {
return canvas.tokens.children[0].children.find(p => p.id == id);
}
getTokenFromTokenName(name) {
return canvas.tokens.children[0].children.find(p => p.name == name);
}
getTokenFromActorId(id) {
return canvas.tokens.children[0].children.find(p => p.actor.id == id);
}
getTokenFromActorName(name) {
return canvas.tokens.children[0].children.find(p => p.actor.name == name);
}
getSelectedToken() {
return canvas.tokens.controlled[0];
}
moveToken(token,dir){
if (dir == undefined) dir = 'up';
const gridSize = canvas.scene.data.grid;
let x = token.x;
let y = token.y;
if (dir == 'up') y -= gridSize;
else if (dir == 'down') y += gridSize;
else if (dir == 'right') x += gridSize;
else if (dir == 'left') x -= gridSize;
else if (dir == 'upRight') {
x += gridSize;
y -= gridSize;
}
else if (dir == 'upLeft') {
x -= gridSize;
y -= gridSize;
}
else if (dir == 'downRight') {
x += gridSize;
y += gridSize;
}
else if (dir == 'downLeft') {
x -= gridSize;
y += gridSize;
}
else if (dir == 'center') {
let location = token.getCenter(x,y);
canvas.animatePan(location);
}
if (game.user.isGM == false && game.paused == true && (token.can(game.user,"control") == false || token.checkCollision(token.getCenter(x, y)))) return;
if (compatibleCore("0.8.1")) token.document.update({x:x,y:y});
else token.update({x:x,y:y});
};
rotateToken(token,move,value) {
if (move == undefined) move = 'to';
value = isNaN(parseInt(value)) ? 0 : parseInt(value);
let rotationVal;
if (move == 'by') rotationVal = token.data.rotation + value;
else rotationVal = value;
if (compatibleCore("0.8.1")) token.document.update({rotation: rotationVal});
else token.update({rotation: rotationVal});
}
///////////////////////////////////////////////
/**
* Get name/id
*/
getTokenName(token) {
return token.name;
}
getTokenId(token) {
return token.id;
}
getActorName(token) {
return token.actor.name;
}
getActorId(token) {
return token.actor.id;
}
////////////////////////////////////////////////////
getTokenIcon(token) {
return token.data.img;
}
getActorIcon(token) {
return token.actor.data.img;
}
/***********************************************************************
* System agnostic functions
***********************************************************************/
getHP(token) {
return this.system.getHP(token);
}
getTempHP(token) {
return this.system.getTempHP(token);
}
getAC(token) {
return this.system.getAC(token);
}
getShieldHP(token) {
return this.system.getShieldHP(token);
}
getSpeed(token) {
return this.system.getSpeed(token);
}
getInitiative(token) {
return this.system.getInitiative(token);
}
toggleInitiative(token) {
return this.system.toggleInitiative(token);
}
getPassivePerception(token) {
return this.system.getPassivePerception(token);
}
getPassiveInvestigation(token) {
return this.system.getPassiveInvestigation(token);
}
getAbility(token, ability) {
return this.system.getAbility(token, ability);
}
getAbilityModifier(token, ability) {
return this.system.getAbilityModifier(token, ability);
}
getAbilitySave(token, ability) {
return this.system.getAbilitySave(token, ability);
}
getSkill(token, skill) {
return this.system.getSkill(token, skill);
}
getProficiency(token) {
return this.system.getProficiency(token);
}
/* WFRP 4E */
getFate(token) {
return this.system.getFate(token)
}
/* WFRP 4E */
getFortune(token) {
return this.system.getFortune(token)
}
/* WFRP 4E */
getCriticalWounds(token) {
return this.system.getCriticalWounds(token)
}
/* WFRP 4E */
getCorruption(token) {
return this.system.getCorruption(token)
}
/* WFRP 4E */
getAdvantage(token) {
return this.system.getAdvantage(token)
}
/* WFRP 4E */
getResolve(token) {
return this.system.getResolve(token)
}
/* WFRP 4E */
getResilience(token) {
return this.system.getResilience(token)
}
// /* PF2E */
// getStrikes(token) {
// return this.system.getStrikes(token);
// }
/**
* Conditions
*/
getConditionIcon(condition) {
return this.system.getConditionIcon(condition);
}
getConditionActive(token,condition) {
return this.system.getConditionActive(token,condition);
}
toggleCondition(token,condition) {
return this.system.toggleCondition(token,condition);
}
/* PF2E */
getConditionValue(token,condition) {
return this.system.getConditionValue(token,condition);
}
/* PF2E */
modifyConditionValue(token,condition,delta) {
return this.system.modifyConditionValue(token,condition,delta);
}
/**
* Roll
*/
roll(token,roll,options,ability,skill,save) {
return this.system.roll(token,roll,options,ability,skill,save);
}
/**
* Items
*/
getItems(token,itemType) {
return this.system.getItems(token,itemType);
}
getItemUses(item) {
return this.system.getItemUses(item);
}
/**
* Features
*/
getFeatures(token,featureType) {
return this.system.getFeatures(token,featureType);
}
getFeatureUses(item) {
return this.system.getFeatureUses(item);
}
/**
* Spells
*/
getSpells(token,level) {
return this.system.getSpells(token,level);
}
getSpellUses(token,level,item) {
return this.system.getSpellUses(token,level,item);
}
rollItem(item) {
return this.system.rollItem(item);
}
}