//Created by student A import './variables.js'; import { randomNumber, userInput } from './functions.js'; import { inventoryMenuM } from './inventory.js'; // InitCombat function (currently not used in final game) // First sets the proper level of the enemy, then sets the stats of the enemy and runs combat() with it as a parameter. function initCombat(enemy) { if (enemy.minLevel > level) { var enemyLevelFinal = enemy.minLevel; } else if (enemy.maxLevel < level) { var enemyLevelFinal = enemy.minLevel; } else { var enemyLevelFinal = level; } if (enemy.armor.value > 85 && enemy.armor.unit == "dr") { var enemyArmor = 85; } else { var enemyArmor = enemy.armor.value; } var enemyStats = {level: enemyLevelFinal, health: enemy.health+enemyLevelFinal, weapon: enemy.weapon, armor: enemyArmor, armorUnit: enemy.armor.unit}; var playerStats = {level: level, health: health, weapon: equippedWeapon, armor: equippedArmor, armorUnit: equippedArmor.unit, chem: "placeholder"}; combat(enemyStats); } // Combat function (currently not used in final game) // Gives a menu to attack the enemy, open inventoryM(), or view player stats. Menu will repeat until enemy.health is not > 0 function combat(enemy) { console.clear(); console.log("You enter combat with "+enemy.name+"..."); let combatInput; while (enemy.health > 0) { while (true) { console.log("What would you like to do?"); console.log("-----------------------"); console.log("1) Attack"); console.log("2) Check your Inventory"); console.log("3) View Stats"); combatInput = userInput("Enter: "); // Input validation if (combatInput != "1" && combatInput != "2" && combatInput != "3") { console.log("Invalid input. Please enter 1, 2, or 3."); } else { break; } } switch(combatInput) { case "1": console.log("You attack "+enemy.name+" with your "+equippedWeapon.name+"!"); sleep(2); let attackRoll = randomNumber(1,100); if (attackRoll <= 10) { console.log("You critically hit "+enemy.name+" dealing "+damageCalc(player, true)+" damage!"); sleep(2); } else if (attackRoll <= 50) { console.log("You hit "+enemy.name+" dealing "+damageCalc(player, false)+" damage!"); sleep(2); } else if (attackRoll <= 90) { console.log("You miss "+enemy.name+"!"); sleep(2); } else { console.log("You critically miss "+enemy.name+", dealing 3 damage to yourself!"); health-3; sleep(2); } console.log(enemy.name+" Attacks you with thier "+enemyStats.weapon.name+"!"); sleep(2); let enemyRoll = randomNumber(1,100); if (attackRoll <= 10) { console.log(enemy.name+" critically hit you dealing "+damageCalc(enemy, true)+" damage!"); sleep(2); } else if (attackRoll <= 50) { console.log(enemy.name+" hit you dealing "+damageCalc(player, false)+" damage!"); sleep(2); } else if (attackRoll <= 90) { console.log(enemy.name+" misses you!"); sleep(2); } else { console.log(enemy.name+" critically misses, dealing 3 damage to themself!"); enemyStats.health-3; sleep(2); } case "2": inventoryMenuM(); break; case "3": console.clear(); console.log("Player Stats"); console.log("-------------"); console.log("Name: "+name); console.log("Level: "+level); console.log("Current Health: "+health+"/"+healthCap); console.log("Radiation Points: "+radPoints); console.log("Radiation Severity: "+radSeverity); console.log("Walk Rate: "+walkRate); console.log("Food Amt: "+food); console.log("Food Rate: "+foodRate); console.log("Distance to next POI: " + pois[poiCounter].location-location); console.log("Current Path: "+path); userInput("\n[Press Enter to return]"); break; } } } // damageCalc() function (currently not used in final game) // If the attacker parameter = the player it runs the respective menus, checking for damage dealt and returns it. // Vice versa if attacker = enemy // If crit = true 3 extra damage is applied regardless of armor calculations. function damageCalc(attacker, crit) { if (attacker = player) { if (playerStats.chem == "psycho") { var damageOutput = playerStats.weapon.damage*1.5; } else { var damageOutput = playerStats.weapon.damage; } if (crit) { damageOutput+3; } if (enemyStats.armorUnit == "dr"){ let drDamage = damageOutput-(enemyStats.armor.value/100); enemyStats.health = enemyStats.health-drDamage; return drDamage; } if (enemyStats.armorUnit == "dt") { let dtDamage = enemyStats.health-(damageOutput-armor); if (dtDamage < 0) { dtDamage = 0; } enemyStats.health - dtDamage; return dtDamage; } } else { if (playerStats.chem == "medx") { var damageOutput = enemyStats.weapon.damage*(-1.5); } else { var damageOutput = enemyStats.weapon.damage; } if (crit) { damageOutput+3; } if (playerStats.armorUnit == "dr"){ let drDamage = damageOutput-(playerStats.armor.value/100) playerStats.health = playerStats.health-drDamage; return drDamage; } if (playerStats.armorUnit == "dt") { let dtDamage = playerStats.health-(damageOutput-armor); if (dtDamage < 0) { dtDamage = 0; } playerStats.health - dtDamage; return dtDamage; } } }