Also improved the display of features and generally iterated on their manipulation. Characters now fetch the relevant effects directly when making a calculation, simplifying almost everything. Effects now store a reference to their source if they have one. Effect names are now optional, they can be fetched from the source's name if the source exists.
50 lines
1.1 KiB
JavaScript
50 lines
1.1 KiB
JavaScript
Effects = new Meteor.Collection("effects");
|
|
|
|
/*
|
|
* Effects are reason-value attached to skills and abilities
|
|
* that modify their final value or presentation in some way
|
|
*/
|
|
Schemas.Effect = new SimpleSchema({
|
|
charId: {
|
|
type: String,
|
|
regEx: SimpleSchema.RegEx.Id
|
|
},
|
|
name: {
|
|
type: String,
|
|
optional: true //TODO make necessary if there is no owner
|
|
},
|
|
operation: {
|
|
type: String,
|
|
defaultValue: "add",
|
|
allowedValues: ["base", "proficiency","add","mul","min","max","advantage","disadvantage","passiveAdd","fail","conditional"]
|
|
},
|
|
value: {
|
|
type: Number,
|
|
decimal: true,
|
|
optional: true
|
|
},
|
|
calculation: {
|
|
type: String,
|
|
optional: true
|
|
},
|
|
//indicates what the effect originated from
|
|
type: {
|
|
type: String,
|
|
defaultValue: "editable",
|
|
allowedValues: ["editable", "feature", "buff", "equipment", "inate"]
|
|
},
|
|
//the id of the feature, buff or item that created this effect
|
|
sourceId: {
|
|
type: String,
|
|
regEx: SimpleSchema.RegEx.Id,
|
|
optional: true
|
|
},
|
|
//which stat the effect is applied to
|
|
stat: {
|
|
type: String,
|
|
optional: true
|
|
}
|
|
});
|
|
|
|
Effects.attachSchema(Schemas.Effect);
|