diff --git a/constructors.js b/constructors.js index d0bf11a..8e6d1f9 100644 --- a/constructors.js +++ b/constructors.js @@ -11,6 +11,14 @@ * @method printDetails */ +function Spell (name, cost, description) { + + this.name = name; + this.cost = cost; + this.description = description; + +} + /** * Returns a string of all of the spell's details. * The format doesn't matter, as long as it contains the spell name, cost, and description. @@ -19,6 +27,14 @@ * @return {string} details containing all of the spells information. */ + Spell.prototype.getDetails = function () { + + var string = this.name + ", " + this.cost + ", " + this.description + ". "; + + return string.toString(); + + }; + /** * A spell that deals damage. * We want to keep this code DRY (Don't Repeat Yourself). @@ -44,6 +60,19 @@ * @property {string} description */ + function DamageSpell (name, cost, damage, description) { + + this.name = name; + this.cost = cost; + this.damage = damage; + this.description = description; + + Spell.call(this, name, cost, description); + + } + + + /** * Now that you've created some spells, let's create * `Spellcaster` objects that can use them! @@ -61,6 +90,15 @@ * @method invoke */ + function Spellcaster (name, health, mana) { + + this.name = name; + this.health = health; + this.mana = mana; + this.isAlive = true; + + } + /** * @method inflictDamage * @@ -72,6 +110,20 @@ * @param {number} damage Amount of damage to deal to the spellcaster */ + Spellcaster.prototype.inflictDamage = function (damage) { + + this.health -= damage; + + if (this.health = 0 || this.health < 0) { + + this.health = 0; + + } + + this.isAlive = false; + + }; + /** * @method spendMana * @@ -82,6 +134,22 @@ * @return {boolean} success Whether mana was successfully spent. */ + Spellcaster.prototype.spendMana = function (cost) { + + if (this.mana >= cost) { + + this.mana -= cost; + + return true; + + } else { + + return false; + + } + + }; + /** * @method invoke * @@ -108,3 +176,19 @@ * @param {Spellcaster} target The spell target to be inflicted. * @return {boolean} Whether the spell was successfully cast. */ + + Spellcaster.prototype.invoke = function (spell, target) { + + if (!(spell instanceof Spell)) { + + return false; + + } else { + + return true; + + } + + + + }; \ No newline at end of file