From ff9fc916f63c9618f295d270e3c4ac9bd4b2a2b4 Mon Sep 17 00:00:00 2001 From: Connor Petersen Date: Thu, 11 Feb 2016 23:29:27 -0800 Subject: [PATCH 1/3] Added a call to adding a feature and 6 related effects to the newCharacterDialog event handler --- .../newCharacterDialog/newCharacterDialog.js | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/rpg-docs/client/views/character/newCharacterDialog/newCharacterDialog.js b/rpg-docs/client/views/character/newCharacterDialog/newCharacterDialog.js index dcfc96cb..d76477b2 100644 --- a/rpg-docs/client/views/character/newCharacterDialog/newCharacterDialog.js +++ b/rpg-docs/client/views/character/newCharacterDialog/newCharacterDialog.js @@ -7,6 +7,85 @@ Template.newCharacterDialog.events({ owner: Meteor.userId(), }, function(err, id){ if (err) throw err; + var featureId = Features.insert({ + name: "Base Ability Scores", + charId: id, + enabled: true, + alwaysEnabled: true, + }); + var feature = Features.findOne({_id: featureId}); + Effects.insert({ + stat: "strength", + charId: id, + parent: { + id: featureId, + collection: "Features", + group: "stat", + }, + operation: "base", + value: 10, + enabled: true, + }); + Effects.insert({ + stat: "dexterity", + charId: id, + parent: { + id: featureId, + collection: "Features", + group: "stat", + }, + operation: "base", + value: 10, + enabled: true, + }); + Effects.insert({ + stat: "constitution", + charId: id, + parent: { + id: featureId, + collection: "Features", + group: "stat", + }, + operation: "base", + value: 10, + enabled: true, + }); + Effects.insert({ + stat: "intelligence", + charId: id, + parent: { + id: featureId, + collection: "Features", + group: "stat", + }, + operation: "base", + value: 10, + enabled: true, + }); + Effects.insert({ + stat: "wisdom", + charId: id, + parent: { + id: featureId, + collection: "Features", + group: "stat", + }, + operation: "base", + value: 10, + enabled: true, + }); + Effects.insert({ + stat: "charisma", + charId: id, + parent: { + id: featureId, + collection: "Features", + group: "stat", + }, + operation: "base", + value: 10, + enabled: true, + }); Router.go("characterSheet", {_id: id}); }); } From 98047ca806ac4e04a333c30b34791dee11c849c1 Mon Sep 17 00:00:00 2001 From: Connor Petersen Date: Mon, 7 Mar 2016 23:21:42 -0800 Subject: [PATCH 2/3] Moved base-10 default to Features.js, cleaned up default Effects, and Features code to be consistent. --- rpg-docs/Model/Character/Effects.js | 129 +++++++++--------- rpg-docs/Model/Character/Features.js | 84 ++++++++++++ .../newCharacterDialog/newCharacterDialog.js | 79 ----------- 3 files changed, 150 insertions(+), 142 deletions(-) diff --git a/rpg-docs/Model/Character/Effects.js b/rpg-docs/Model/Character/Effects.js index 44cc8036..e2d7118f 100644 --- a/rpg-docs/Model/Character/Effects.js +++ b/rpg-docs/Model/Character/Effects.js @@ -59,71 +59,74 @@ Schemas.Effect = new SimpleSchema({ Effects.attachSchema(Schemas.Effect); -if (Meteor.isServer) Characters.after.insert(function(userId, char) { - Effects.insert({ - charId: char._id, - name: "Constitution modifier for each level", - stat: "hitPoints", - operation: "add", - calculation: "level * constitutionMod", - parent: { - id: char._id, - collection: "Characters", - group: "Inate", - }, - }); - Effects.insert({ - charId: char._id, - name: "Proficiency bonus by level", - stat: "proficiencyBonus", - operation: "add", - calculation: "floor(level / 4 + 1.75)", - parent: { - id: char._id, - collection: "Characters", - group: "Inate", - }, - }); - Effects.insert({ - charId: char._id, - name: "Dexterity Armor Bonus", - stat: "armor", - operation: "add", - calculation: "dexterityArmor", - parent: { - id: char._id, - collection: "Characters", - group: "Inate", - }, - }); - Effects.insert({ - charId: char._id, - name: "Natural Armor", - stat: "armor", - operation: "base", - value: 10, - parent: { - id: char._id, - collection: "Characters", - group: "Inate", - }, - }); - Effects.insert({ - charId: char._id, - name: "Natural Carrying Capacity", - stat: "carryMultiplier", - operation: "base", - value: "1", - parent: { - id: char._id, - collection: "Characters", - group: "Inate", - }, - }); -}); - Effects.attachBehaviour("softRemovable"); makeChild(Effects, ["enabled"]); //children of lots of things Effects.allow(CHARACTER_SUBSCHEMA_ALLOW); Effects.deny(CHARACTER_SUBSCHEMA_DENY); + +//give characters default character effects +Characters.after.insert(function(userId, char) { + if (Meteor.isServer) { + Effects.insert({ + charId: char._id, + name: "Constitution modifier for each level", + stat: "hitPoints", + operation: "add", + calculation: "level * constitutionMod", + parent: { + id: char._id, + collection: "Characters", + group: "Inate", + }, + }); + Effects.insert({ + charId: char._id, + name: "Proficiency bonus by level", + stat: "proficiencyBonus", + operation: "add", + calculation: "floor(level / 4 + 1.75)", + parent: { + id: char._id, + collection: "Characters", + group: "Inate", + }, + }); + Effects.insert({ + charId: char._id, + name: "Dexterity Armor Bonus", + stat: "armor", + operation: "add", + calculation: "dexterityArmor", + parent: { + id: char._id, + collection: "Characters", + group: "Inate", + }, + }); + Effects.insert({ + charId: char._id, + name: "Natural Armor", + stat: "armor", + operation: "base", + value: 10, + parent: { + id: char._id, + collection: "Characters", + group: "Inate", + }, + }); + Effects.insert({ + charId: char._id, + name: "Natural Carrying Capacity", + stat: "carryMultiplier", + operation: "base", + value: "1", + parent: { + id: char._id, + collection: "Characters", + group: "Inate", + }, + }); + } +}); diff --git a/rpg-docs/Model/Character/Features.js b/rpg-docs/Model/Character/Features.js index 24a2b5e9..8cf52975 100644 --- a/rpg-docs/Model/Character/Features.js +++ b/rpg-docs/Model/Character/Features.js @@ -35,3 +35,87 @@ makeParent(Features, ["name", "enabled"]); //parents of effects and attacks Features.allow(CHARACTER_SUBSCHEMA_ALLOW); Features.deny(CHARACTER_SUBSCHEMA_DENY); + +//give characters default feature of base ability scores of 10 +Characters.after.insert(function(userId, char) { + if (Meteor.isServer){ + var featureId = Features.insert({ + name: "Base Ability Scores", + charId: char._id, + enabled: true, + alwaysEnabled: true, + }); + Effects.insert({ + stat: "strength", + charId: char._id, + parent: { + id: featureId, + collection: "Features", + group: "stat", + }, + operation: "base", + value: 10, + enabled: true, + }); + Effects.insert({ + stat: "dexterity", + charId: char._id, + parent: { + id: featureId, + collection: "Features", + group: "stat", + }, + operation: "base", + value: 10, + enabled: true, + }); + Effects.insert({ + stat: "constitution", + charId: char._id, + parent: { + id: featureId, + collection: "Features", + group: "stat", + }, + operation: "base", + value: 10, + enabled: true, + }); + Effects.insert({ + stat: "intelligence", + charId: char._id, + parent: { + id: featureId, + collection: "Features", + group: "stat", + }, + operation: "base", + value: 10, + enabled: true, + }); + Effects.insert({ + stat: "wisdom", + charId: char._id, + parent: { + id: featureId, + collection: "Features", + group: "stat", + }, + operation: "base", + value: 10, + enabled: true, + }); + Effects.insert({ + stat: "charisma", + charId: char._id, + parent: { + id: featureId, + collection: "Features", + group: "stat", + }, + operation: "base", + value: 10, + enabled: true, + }); + } +}); diff --git a/rpg-docs/client/views/character/newCharacterDialog/newCharacterDialog.js b/rpg-docs/client/views/character/newCharacterDialog/newCharacterDialog.js index d76477b2..dcfc96cb 100644 --- a/rpg-docs/client/views/character/newCharacterDialog/newCharacterDialog.js +++ b/rpg-docs/client/views/character/newCharacterDialog/newCharacterDialog.js @@ -7,85 +7,6 @@ Template.newCharacterDialog.events({ owner: Meteor.userId(), }, function(err, id){ if (err) throw err; - var featureId = Features.insert({ - name: "Base Ability Scores", - charId: id, - enabled: true, - alwaysEnabled: true, - }); - var feature = Features.findOne({_id: featureId}); - Effects.insert({ - stat: "strength", - charId: id, - parent: { - id: featureId, - collection: "Features", - group: "stat", - }, - operation: "base", - value: 10, - enabled: true, - }); - Effects.insert({ - stat: "dexterity", - charId: id, - parent: { - id: featureId, - collection: "Features", - group: "stat", - }, - operation: "base", - value: 10, - enabled: true, - }); - Effects.insert({ - stat: "constitution", - charId: id, - parent: { - id: featureId, - collection: "Features", - group: "stat", - }, - operation: "base", - value: 10, - enabled: true, - }); - Effects.insert({ - stat: "intelligence", - charId: id, - parent: { - id: featureId, - collection: "Features", - group: "stat", - }, - operation: "base", - value: 10, - enabled: true, - }); - Effects.insert({ - stat: "wisdom", - charId: id, - parent: { - id: featureId, - collection: "Features", - group: "stat", - }, - operation: "base", - value: 10, - enabled: true, - }); - Effects.insert({ - stat: "charisma", - charId: id, - parent: { - id: featureId, - collection: "Features", - group: "stat", - }, - operation: "base", - value: 10, - enabled: true, - }); Router.go("characterSheet", {_id: id}); }); } From 4440c88417ef8976b49ffec41203f2993e50157d Mon Sep 17 00:00:00 2001 From: Stefan Zermatten Date: Wed, 9 Mar 2016 12:57:23 +0200 Subject: [PATCH 3/3] Removed grouping from effects Grouping is currently only used to differentiate effects that have the same parent, but are ambiguous as to which part of that parent they come from, like race or background. Features do not need grouped effects, because there can be no ambiguity. --- rpg-docs/Model/Character/Features.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/rpg-docs/Model/Character/Features.js b/rpg-docs/Model/Character/Features.js index 8cf52975..29b8c7d5 100644 --- a/rpg-docs/Model/Character/Features.js +++ b/rpg-docs/Model/Character/Features.js @@ -51,7 +51,6 @@ Characters.after.insert(function(userId, char) { parent: { id: featureId, collection: "Features", - group: "stat", }, operation: "base", value: 10, @@ -63,7 +62,6 @@ Characters.after.insert(function(userId, char) { parent: { id: featureId, collection: "Features", - group: "stat", }, operation: "base", value: 10, @@ -75,7 +73,6 @@ Characters.after.insert(function(userId, char) { parent: { id: featureId, collection: "Features", - group: "stat", }, operation: "base", value: 10, @@ -87,7 +84,6 @@ Characters.after.insert(function(userId, char) { parent: { id: featureId, collection: "Features", - group: "stat", }, operation: "base", value: 10, @@ -99,7 +95,6 @@ Characters.after.insert(function(userId, char) { parent: { id: featureId, collection: "Features", - group: "stat", }, operation: "base", value: 10, @@ -111,7 +106,6 @@ Characters.after.insert(function(userId, char) { parent: { id: featureId, collection: "Features", - group: "stat", }, operation: "base", value: 10,