Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function heroesOfCodeAndLogicVII(arr) {
- let heroNumber = Number(arr.shift())
- let heroes = {}
- arr.splice(0, heroNumber).map(row => row.split(' ')).map(row => {
- heroes[row[0]] = { hp: Number(row[1]), mp: Number(row[2]) }
- })
- let commandParser = {
- 'CastSpell': castSpell,
- 'TakeDamage': takeDamage,
- 'Recharge': recharge,
- 'Heal': heal
- }
- arr.forEach(line => {
- let [command, ...args] = line.split(' - ')
- if (command !== 'End') {
- console.log(commandParser[command](heroes, ...args))
- }
- })
- Object.entries(heroes).sort((a, b) => a[0].localeCompare(b[0])).sort((a, b) => b[1].hp - a[1].hp)
- .map(row => console.log(`${row[0]}\n HP: ${row[1].hp}\n MP: ${row[1].mp}`))
- function castSpell(heroes, heroName, mpNeeded, spellName) {
- mpNeeded = Number(mpNeeded)
- let hero = heroes[heroName]
- if (hero.mp >= mpNeeded) {
- hero.mp -= mpNeeded
- return `${heroName} has successfully cast ${spellName} and now has ${hero.mp} MP!`
- }
- return `${heroName} does not have enough MP to cast ${spellName}!`
- }
- function takeDamage(heroes, heroName, damage, attacker) {
- damage = Number(damage)
- let hero = heroes[heroName]
- hero.hp -= damage
- if (hero.hp > 0) {
- return `${heroName} was hit for ${damage} HP by ${attacker} and now has ${hero.hp} HP left!`
- }
- delete heroes[heroName]
- return `${heroName} has been killed by ${attacker}!`
- }
- function recharge(heroes, heroName, amount) {
- amount = Number(amount)
- let hero = heroes[heroName]
- let oldValue = hero.mp
- hero.mp = Math.min(200, hero.mp + amount)
- return `${heroName} recharged for ${hero.mp - oldValue} MP!`
- }
- function heal(heroes, heroName, amount) {
- amount = Number(amount)
- let hero = heroes[heroName]
- let oldValue = hero.hp
- hero.hp = Math.min(100, hero.hp + amount)
- return `${heroName} healed for ${hero.hp - oldValue} HP!`
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement