Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function HeroesGame(input){
- let heroesCount = input.shift();
- let heroObj ={};
- for(let i = 0; i <heroesCount; i++){
- let tokens = input[i];
- tokens = tokens.split(" ");
- heroObj[tokens[0]] = [Number(tokens[1]), Number(tokens[2])];
- if(Number(tokens[1]) > 100){
- tokens[1] = 100;
- }
- if(Number(tokens[2]) > 200){
- tokens[2] = 200;
- }
- }
- input.splice(0, heroesCount)
- let i = 0;
- let command = input[i];
- while(command !== "End"){
- let tokens = command.split(" - ");
- let action = tokens[0];
- let name = tokens[1];
- if(action === "CastSpell"){
- let mpNeed = Number(tokens[2]);
- let spellName = tokens[3]
- castSpell(name,mpNeed, spellName)
- }else if(action === "TakeDamage"){
- let dmg = Number(tokens[2]);
- let attacker = tokens[3];
- takeDmg(name, dmg, attacker);
- }else if(action === "Recharge"){
- let amount = Number(tokens[2]);
- recharge(name, amount)
- }else if(action === "Heal"){
- let amount = Number(tokens[2]);
- heal(name, amount)
- }
- i++
- command = input[i];
- }
- for(let key in heroObj){
- console.log(key)
- console.log(` HP: ${heroObj[key][0]}`)
- console.log(` MP: ${heroObj[key][1]}`)
- }
- function castSpell(name, mpNeeded, spellName){
- if(heroObj[name][1] >= mpNeeded){
- console.log(`${name} has successfully cast ${spellName} and now has ${heroObj[name][1] - mpNeeded} MP!`)
- heroObj[name][1] -= mpNeeded;
- }else{console.log(`${name} does not have enough MP to cast ${spellName}!`);}
- }
- function takeDmg(name, dmg, attacker){
- if(heroObj[name][0] > dmg){
- console.log(`${name} was hit for ${dmg} HP by ${attacker} and now has ${heroObj[name][0] - dmg} HP left!`)
- heroObj[name][0] -= dmg;
- }else{
- console.log(`${name} has been killed by ${attacker}!`);
- delete heroObj[name];
- }
- }
- function recharge(name, amount){
- if(heroObj[name][1] < 200){
- let forDiff = heroObj[name][1]
- heroObj[name][1] = heroObj[name][1] + amount;
- if(heroObj[name][1] > 200){
- let diff = 200 - forDiff;
- heroObj[name][1] = 200;
- console.log(`${name} recharged for ${diff} MP!`);
- }else{
- console.log(`${name} recharged for ${amount} MP!`);
- }
- }
- }
- // function heal(name, amount){
- // if(heroObj[name][0] < 100){
- // let forDiff = heroObj[name][0]
- // heroObj[name][0] = heroObj[name][0] + amount;
- // if(heroObj[name][0] > 100){
- // let diff = 100 - forDiff;
- // heroObj[name][0] = 100;
- // console.log(`${name} healed for ${diff} HP!`);
- // }else{
- // console.log(`${name} healed for ${amount} HP!`);
- // }
- // }
- // }
- function heal(name, amount){
- let diff = Math.min((100 - heroObj[name][0]), amount)
- heroObj[name][0]+=diff
- console.log(`${name} healed for ${diff} HP!`)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement