Moved creature variables to their own collection
Another big change to the engine, expect bugs
This commit is contained in:
@@ -27,33 +27,33 @@
|
||||
>
|
||||
<v-card class="class-details mb-2">
|
||||
<v-card-title
|
||||
v-if="creature.variables.level"
|
||||
v-if="variables.level"
|
||||
class="text-h6"
|
||||
>
|
||||
Level {{ creature.variables.level.value }}
|
||||
Level {{ variables.level.value }}
|
||||
</v-card-title>
|
||||
<v-list two-line>
|
||||
<v-list-item>
|
||||
<v-list-item-content>
|
||||
<v-list-item-title
|
||||
v-if="
|
||||
creature.variables.milestoneLevels &&
|
||||
creature.variables.milestoneLevels.value
|
||||
variables.milestoneLevels &&
|
||||
variables.milestoneLevels.value
|
||||
"
|
||||
>
|
||||
{{ creature.variables.milestoneLevels.value }} Milestone levels
|
||||
{{ variables.milestoneLevels.value }} Milestone levels
|
||||
</v-list-item-title>
|
||||
<v-list-item-title
|
||||
v-if="
|
||||
!(creature.variables.milestoneLevels &&
|
||||
creature.variables.milestoneLevels.value) ||
|
||||
(creature.variables.xp &&
|
||||
creature.variables.xp.value)
|
||||
!(variables.milestoneLevels &&
|
||||
variables.milestoneLevels.value) ||
|
||||
(variables.xp &&
|
||||
variables.xp.value)
|
||||
"
|
||||
>
|
||||
{{
|
||||
creature.variables.xp &&
|
||||
creature.variables.xp.value ||
|
||||
variables.xp &&
|
||||
variables.xp.value ||
|
||||
0
|
||||
}} XP
|
||||
</v-list-item-title>
|
||||
@@ -103,6 +103,7 @@ import CreatureProperties from '/imports/api/creature/creatureProperties/Creatur
|
||||
import { nodeArrayToTree } from '/imports/api/parenting/nodesToTree.js';
|
||||
import BuildTreeNodeList from '/imports/ui/creature/buildTree/BuildTreeNodeList.vue';
|
||||
import SlotCardsToFill from '/imports/ui/creature/slots/SlotCardsToFill.vue';
|
||||
import CreatureVariables from '../../../../api/creature/creatures/CreatureVariables';
|
||||
|
||||
function traverse(tree, callback, parents = []){
|
||||
tree.forEach(node => {
|
||||
@@ -152,6 +153,9 @@ export default {
|
||||
creature(){
|
||||
return Creatures.findOne(this.creatureId);
|
||||
},
|
||||
variables() {
|
||||
return CreatureVariables.findOne({ _creatureId: this.creatureId }) || {};
|
||||
},
|
||||
classLevels(){
|
||||
return CreatureProperties.find({
|
||||
'ancestors.id': this.creatureId,
|
||||
@@ -217,8 +221,8 @@ export default {
|
||||
elementId: 'experience-add-button',
|
||||
data: {
|
||||
creatureIds: [this.creatureId],
|
||||
startAsMilestone: this.creature.variables.milestoneLevels &&
|
||||
!!this.creature.variables.milestoneLevels.value,
|
||||
startAsMilestone: this.variables.milestoneLevels &&
|
||||
!!this.variables.milestoneLevels.value,
|
||||
},
|
||||
});
|
||||
},
|
||||
@@ -228,8 +232,8 @@ export default {
|
||||
elementId: 'experience-info-button',
|
||||
data: {
|
||||
creatureId: this.creatureId,
|
||||
startAsMilestone: this.creature.variables.milestoneLevels &&
|
||||
!!this.creature.variables.milestoneLevels.value,
|
||||
startAsMilestone: this.variables.milestoneLevels &&
|
||||
!!this.variables.milestoneLevels.value,
|
||||
},
|
||||
});
|
||||
},
|
||||
|
||||
@@ -31,12 +31,12 @@
|
||||
<v-list-item-action>
|
||||
<v-list-item-title>
|
||||
<coin-value
|
||||
:value="creature.variables && creature.variables.valueTotal && creature.variables.valueTotal.value|| 0"
|
||||
:value="variables && variables.valueTotal && variables.valueTotal.value|| 0"
|
||||
/>
|
||||
</v-list-item-title>
|
||||
</v-list-item-action>
|
||||
</v-list-item>
|
||||
<v-list-item v-if="creature.variables && creature.variables.itemsAttuned && creature.variables.itemsAttuned.value">
|
||||
<v-list-item v-if="variables && variables.itemsAttuned && variables.itemsAttuned.value">
|
||||
<v-list-item-avatar>
|
||||
<v-icon>$vuetify.icons.spell</v-icon>
|
||||
</v-list-item-avatar>
|
||||
@@ -47,7 +47,7 @@
|
||||
</v-list-item-content>
|
||||
<v-list-item-action>
|
||||
<v-list-item-title>
|
||||
{{ creature.variables.itemsAttuned.value }}
|
||||
{{ variables.itemsAttuned.value }}
|
||||
</v-list-item-title>
|
||||
</v-list-item-action>
|
||||
</v-list-item>
|
||||
@@ -104,6 +104,7 @@ import getParentRefByTag from '/imports/api/creature/creatureProperties/methods/
|
||||
import BUILT_IN_TAGS from '/imports/constants/BUILT_IN_TAGS.js';
|
||||
import CoinValue from '/imports/ui/components/CoinValue.vue';
|
||||
import stripFloatingPointOddities from '/imports/api/engine/computation/utility/stripFloatingPointOddities.js';
|
||||
import CreatureVariables from '../../../../api/creature/creatures/CreatureVariables';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
@@ -138,6 +139,9 @@ export default {
|
||||
color: 1,
|
||||
variables: 1,
|
||||
}});
|
||||
},
|
||||
variables() {
|
||||
return CreatureVariables.findOne({ _creatureId: this.creatureId }) || {};
|
||||
},
|
||||
containersWithoutAncestorContainers(){
|
||||
return CreatureProperties.find({
|
||||
@@ -206,9 +210,9 @@ export default {
|
||||
},
|
||||
weightCarried(){
|
||||
return stripFloatingPointOddities(
|
||||
this.creature.variables &&
|
||||
this.creature.variables.weightCarried &&
|
||||
this.creature.variables.weightCarried.value || 0
|
||||
this.variables &&
|
||||
this.variables.weightCarried &&
|
||||
this.variables.weightCarried.value || 0
|
||||
);
|
||||
},
|
||||
},
|
||||
|
||||
@@ -180,7 +180,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures.js';
|
||||
import CreatureVariables from '/imports/api/creature/creatures/CreatureVariables.js';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties.js';
|
||||
import LibraryNodes from '/imports/api/library/LibraryNodes.js';
|
||||
import DialogBase from '/imports/ui/dialogStack/DialogBase.vue';
|
||||
@@ -297,9 +297,9 @@ export default {
|
||||
return model;
|
||||
}
|
||||
},
|
||||
creature(){
|
||||
if (!this.creatureId) return {variables: {}};
|
||||
return Creatures.findOne(this.creatureId);
|
||||
variables() {
|
||||
if (!this.creatureId) return {};
|
||||
return CreatureVariables.findOne({ _creatureId: this.creatureId }) || {};
|
||||
},
|
||||
currentLimit(){
|
||||
return this._subs['slotFillers'].data('limit') || 50;
|
||||
@@ -363,7 +363,7 @@ export default {
|
||||
if (node.slotFillerCondition){
|
||||
try {
|
||||
let parseNode = parse(node.slotFillerCondition);
|
||||
const {result: resultNode} = resolve('reduce', parseNode, this.creature.variables);
|
||||
const {result: resultNode} = resolve('reduce', parseNode, this.variables);
|
||||
if (resultNode?.parseType === 'constant'){
|
||||
if (!resultNode.value){
|
||||
node._disabledBySlotFillerCondition = true;
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
<script lang="js">
|
||||
import CreatureLogs, { logRoll } from '/imports/api/creature/log/CreatureLogs.js';
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures.js';
|
||||
import CreatureVariables from '/imports/api/creature/creatures/CreatureVariables';
|
||||
import { assertEditPermission } from '/imports/api/creature/creatures/creaturePermissions.js';
|
||||
import { parse, prettifyParseError } from '/imports/parser/parser.js';
|
||||
import resolve, { toString } from '/imports/parser/resolve.js';
|
||||
@@ -73,7 +74,7 @@ export default {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
let {result: compiled} = resolve('compile', result, this.creature.variables);
|
||||
let {result: compiled} = resolve('compile', result, this.variables);
|
||||
this.inputHint = toString(compiled);
|
||||
return;
|
||||
} catch (e){
|
||||
@@ -107,6 +108,9 @@ export default {
|
||||
creature(){
|
||||
return Creatures.findOne(this.creatureId) || {};
|
||||
},
|
||||
variables(){
|
||||
return CreatureVariables.findOne({_creatureId: this.creatureId}) || {};
|
||||
},
|
||||
editPermission(){
|
||||
try {
|
||||
assertEditPermission(this.creature, Meteor.userId());
|
||||
|
||||
@@ -126,7 +126,7 @@ import numberToSignedString from '/imports/ui/utility/numberToSignedString.js';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties.js';
|
||||
import AttributeEffect from '/imports/ui/properties/components/attributes/AttributeEffect.vue';
|
||||
import SkillProficiency from '/imports/ui/properties/components/skills/SkillProficiency.vue';
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures.js';
|
||||
import CreatureVariables from '/imports/api/creature/creatures/CreatureVariables.js';
|
||||
import getProficiencyIcon from '/imports/ui/utility/getProficiencyIcon.js';
|
||||
|
||||
export default {
|
||||
@@ -185,6 +185,9 @@ export default {
|
||||
},
|
||||
},
|
||||
meteor: {
|
||||
variables(){
|
||||
return CreatureVariables.findOne({_creatureId: this.context.creatureId}) || {};
|
||||
},
|
||||
baseEffects(){
|
||||
if (this.context.creatureId){
|
||||
let creatureId = this.context.creatureId;
|
||||
@@ -280,10 +283,8 @@ export default {
|
||||
proficiencyBonus(){
|
||||
let creatureId = this.context.creatureId;
|
||||
if (!creatureId) return;
|
||||
let creature = Creatures.findOne(creatureId)
|
||||
return creature &&
|
||||
creature.variables.proficiencyBonus &&
|
||||
creature.variables.proficiencyBonus.value;
|
||||
return this.variables.proficiencyBonus &&
|
||||
this.variables.proficiencyBonus.value;
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user