-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.eslintcache
1 lines (1 loc) · 66.9 KB
/
.eslintcache
1
[{"/Users/chrisfraser/projects/react_RPG/react_rpg/src/index.js":"1","/Users/chrisfraser/projects/react_RPG/react_rpg/src/reportWebVitals.js":"2","/Users/chrisfraser/projects/react_RPG/react_rpg/src/App.js":"3","/Users/chrisfraser/projects/react_RPG/react_rpg/src/screens/GameScreen.js":"4","/Users/chrisfraser/projects/react_RPG/react_rpg/src/components/GameActionBar.js":"5","/Users/chrisfraser/projects/react_RPG/react_rpg/src/components/GameBoard.js":"6","/Users/chrisfraser/projects/react_RPG/react_rpg/src/components/GameSquare.js":"7","/Users/chrisfraser/projects/react_RPG/react_rpg/src/assets/boardImages.js":"8","/Users/chrisfraser/projects/react_RPG/react_rpg/src/components/MovementPhase.js":"9","/Users/chrisfraser/projects/react_RPG/react_rpg/src/models/Character.js":"10","/Users/chrisfraser/projects/react_RPG/react_rpg/src/models/Enemy.js":"11","/Users/chrisfraser/projects/react_RPG/react_rpg/src/models/MeleePlayer.js":"12","/Users/chrisfraser/projects/react_RPG/react_rpg/src/models/meleeWeapon.js":"13","/Users/chrisfraser/projects/react_RPG/react_rpg/src/models/MeleeWeapon.js":"14","/Users/chrisfraser/projects/react_RPG/react_rpg/src/components/AttackPhase.js":"15","/Users/chrisfraser/projects/react_RPG/react_rpg/src/components/CharacterTurnSelect.js":"16","/Users/chrisfraser/projects/react_RPG/react_rpg/src/assets/WeaponImages.js":"17","/Users/chrisfraser/projects/react_RPG/react_rpg/src/models/Spell.js":"18","/Users/chrisfraser/projects/react_RPG/react_rpg/src/models/HealerPlayer.js":"19","/Users/chrisfraser/projects/react_RPG/react_rpg/src/models/MagicPlayer.js":"20","/Users/chrisfraser/projects/react_RPG/react_rpg/src/components/EquipModal.js":"21","/Users/chrisfraser/projects/react_RPG/react_rpg/src/models/Heal.js":"22","/Users/chrisfraser/projects/react_RPG/react_rpg/src/components/CharacterInfoModal.js":"23","/Users/chrisfraser/projects/react_RPG/react_rpg/src/components/RewardModal.js":"24","/Users/chrisfraser/projects/react_RPG/react_rpg/src/components/MapModal.js":"25"},{"size":500,"mtime":1608752934000,"results":"26","hashOfConfig":"27"},{"size":362,"mtime":1608752934002,"results":"28","hashOfConfig":"27"},{"size":447,"mtime":1620431751162,"results":"29","hashOfConfig":"27"},{"size":17215,"mtime":1631011798056,"results":"30","hashOfConfig":"27"},{"size":9155,"mtime":1620607150274,"results":"31","hashOfConfig":"27"},{"size":2358,"mtime":1630943382169,"results":"32","hashOfConfig":"27"},{"size":20083,"mtime":1630943343440,"results":"33","hashOfConfig":"27"},{"size":128,"mtime":1586701404653,"results":"34","hashOfConfig":"27"},{"size":1749,"mtime":1620349361481,"results":"35","hashOfConfig":"27"},{"size":10412,"mtime":1620227069417,"results":"36","hashOfConfig":"27"},{"size":13867,"mtime":1620479122219,"results":"37","hashOfConfig":"27"},{"size":3008,"mtime":1620240671718,"results":"38","hashOfConfig":"27"},{"size":154,"mtime":1610323315030,"results":"39","hashOfConfig":"27"},{"size":1163,"mtime":1620241096898,"results":"40","hashOfConfig":"27"},{"size":6190,"mtime":1620612012732,"results":"41","hashOfConfig":"27"},{"size":1592,"mtime":1613579922859,"results":"42","hashOfConfig":"27"},{"size":166,"mtime":1611517570117,"results":"43","hashOfConfig":"27"},{"size":277,"mtime":1612483278790,"results":"44","hashOfConfig":"27"},{"size":1153,"mtime":1613581310256,"results":"45","hashOfConfig":"27"},{"size":2917,"mtime":1613581382898,"results":"46","hashOfConfig":"27"},{"size":5257,"mtime":1620612891406,"results":"47","hashOfConfig":"27"},{"size":209,"mtime":1612483278790,"results":"48","hashOfConfig":"27"},{"size":3387,"mtime":1624623014459,"results":"49","hashOfConfig":"27"},{"size":5570,"mtime":1630943612771,"results":"50","hashOfConfig":"27"},{"size":6619,"mtime":1631018524413,"results":"51","hashOfConfig":"27"},{"filePath":"52","messages":"53","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"54"},"13roori",{"filePath":"55","messages":"56","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"54"},{"filePath":"57","messages":"58","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"54"},{"filePath":"59","messages":"60","errorCount":0,"warningCount":6,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"61","messages":"62","errorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":"63","usedDeprecatedRules":"54"},{"filePath":"64","messages":"65","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"54"},{"filePath":"66","messages":"67","errorCount":0,"warningCount":18,"fixableErrorCount":0,"fixableWarningCount":0,"source":"68","usedDeprecatedRules":"54"},{"filePath":"69","messages":"70","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"71"},{"filePath":"72","messages":"73","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"54"},{"filePath":"74","messages":"75","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"76","usedDeprecatedRules":"54"},{"filePath":"77","messages":"78","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"54"},{"filePath":"79","messages":"80","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"81","usedDeprecatedRules":"54"},{"filePath":"82","messages":"83","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"84","messages":"85","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"54"},{"filePath":"86","messages":"87","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"88","usedDeprecatedRules":"54"},{"filePath":"89","messages":"90","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"54"},{"filePath":"91","messages":"92","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"71"},{"filePath":"93","messages":"94","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"54"},{"filePath":"95","messages":"96","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"54"},{"filePath":"97","messages":"98","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"54"},{"filePath":"99","messages":"100","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"54"},{"filePath":"101","messages":"102","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"54"},{"filePath":"103","messages":"104","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"54"},{"filePath":"105","messages":"106","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"54"},{"filePath":"107","messages":"108","errorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},"/Users/chrisfraser/projects/react_RPG/react_rpg/src/index.js",[],["109","110"],"/Users/chrisfraser/projects/react_RPG/react_rpg/src/reportWebVitals.js",[],"/Users/chrisfraser/projects/react_RPG/react_rpg/src/App.js",[],"/Users/chrisfraser/projects/react_RPG/react_rpg/src/screens/GameScreen.js",["111","112","113","114","115","116"],"/Users/chrisfraser/projects/react_RPG/react_rpg/src/components/GameActionBar.js",["117","118","119","120"],"import React, { useState, useEffect, useRef } from 'react';\nimport './GameActionBar.css'\nimport CharacterTurnSelect from './CharacterTurnSelect.js'\nimport MovementPhase from './MovementPhase.js'\nimport AttackPhase from './AttackPhase.js'\n\nimport sword from '../assets/axe.png'\nimport background from '../assets/knight.png'\n\nconst GameActionBar = ( { \n selectedCharacter,\n setSelectedCharacter, \n currentPhase, \n setCurrentPhase, \n calculateMovementLocations, \n calculateAttackLocations,\n setMovableSquares, \n setAttackableSquares,\n playerCharacters, \n setPlayerCharacters,\n // enemyMovementPhase,\n setEnemyMovementPhase,\n usedCharacters,\n setUsedCharacters,\n equipModalIsOpen,\n setEquipModalIsOpen }) =>{\n\n // testing\n const testBox = useRef()\n const testImage = useRef()\n const test = () => {\n const element = document.getElementById(\"testBox\")\n element.classList.toggle(\"transform\")\n element.classList.toggle(\"right\")\n // element.classList.add(\"transform\")\n \n testBox.current.classList.toggle(\"transform\")\n testBox.current.classList.toggle(\"right\")\n console.log(testBox)\n // Both of the above do the same thing BUT using REF is the correct react way of doing it\n\n testImage.current.classList.toggle(\"right\")\n // testImage.current.classList.toggle(\"transform\")\n setTimeout(() => testImage.current.classList.toggle(\"right\"), 501)\n }\n const up = () => {\n testImage.current.classList.toggle(\"up\")\n testImage.current.classList.toggle(\"hidden\")\n setTimeout(() => {\n testImage.current.classList.toggle(\"up\")\n testImage.current.classList.toggle(\"hidden\")\n }, 501)\n }\n const down = () => {\n testImage.current.classList.toggle(\"down\")\n testImage.current.classList.toggle(\"hidden\")\n setTimeout(() => {\n testImage.current.classList.toggle(\"down\")\n testImage.current.classList.toggle(\"hidden\")\n }, 501)\n }\n const left = () => {\n testImage.current.classList.toggle(\"left\")\n testImage.current.classList.toggle(\"hidden\")\n setTimeout(() => {\n testImage.current.classList.toggle(\"left\")\n testImage.current.classList.toggle(\"hidden\")\n }, 501)\n }\n const right = () => {\n testImage.current.classList.toggle(\"right\")\n testImage.current.classList.toggle(\"hidden\")\n setTimeout(() => {\n testImage.current.classList.toggle(\"right\")\n testImage.current.classList.toggle(\"hidden\")\n }, 501)\n }\n // end of testing\n\n\n const startingPosition = useRef(null)\n // this didnt need to be useRef, also work with state\n // const [ startingPosition, setStartingPosition ] = useState(null)\n\n useEffect(() =>{\n if(selectedCharacter) startingPosition.current = playerCharacters[selectedCharacter][\"position\"]\n }, [selectedCharacter])\n\n\n\n\n return (\n <div>\n <p>GameActionBar</p>\n {currentPhase === \"characterTurnSelect\" && <CharacterTurnSelect\n playerCharacters={playerCharacters} \n setSelectedCharacter={setSelectedCharacter}\n usedCharacters={usedCharacters}\n setUsedCharacters={setUsedCharacters}\n setCurrentPhase={setCurrentPhase}\n calculateMovementLocations={calculateMovementLocations}\n />}\n {currentPhase === \"playerMovement\" && <MovementPhase \n selectedCharacter={selectedCharacter}\n setSelectedCharacter={setSelectedCharacter}\n setCurrentPhase={setCurrentPhase}\n calculateMovementLocations={calculateMovementLocations}\n setMovableSquares={setMovableSquares}\n playerCharacters={playerCharacters}\n setPlayerCharacters={setPlayerCharacters}\n setEnemyMovementPhase={setEnemyMovementPhase}\n calculateAttackLocations={calculateAttackLocations}\n startingPosition={startingPosition}\n />}\n {currentPhase === \"enemyMovement\" && \n <div>\n <h1>Enemy Movement Phase</h1>\n <p>Please Wait...</p>\n </div>\n }\n {currentPhase === \"playerAttack\" && <AttackPhase \n selectedCharacter={selectedCharacter}\n setSelectedCharacter={setSelectedCharacter}\n setCurrentPhase={setCurrentPhase}\n calculateAttackLocations={calculateAttackLocations}\n calculateMovementLocations={calculateMovementLocations}\n playerCharacters={playerCharacters}\n setPlayerCharacters={setPlayerCharacters}\n setAttackableSquares={setAttackableSquares}\n startingPosition={startingPosition}\n usedCharacters={usedCharacters}\n setUsedCharacters={setUsedCharacters}\n equipModalIsOpen={equipModalIsOpen}\n setEquipModalIsOpen={setEquipModalIsOpen}\n />}\n {currentPhase === \"battleWin\" && <h2>You won this battle, click the chest for your reward!</h2>}\n {currentPhase === \"battleLose\" && <h2>Game Over! Please Try Again</h2>}\n\n <div className=\"info-box main-info-box\">\n <h2>Basic Info</h2>\n <p>Click a character at any time to get its current status</p>\n <p>All player's characters act first and then all enemy characters will take their turn</p>\n <p>Select a character to control ={'>'} Move them ={'>'} change equipment/spells if necessary ={'>'} then attack if in range of an enemy</p>\n <p>Repeat until all characters have completed their turn</p>\n <p>Win by killing all enemies before they kill you!</p>\n\n <h3>Movement</h3>\n <p>All player characters can move 2 squares non-diagonally</p> \n <p>All enemy characters can move 3 squares non-diagonally</p> \n <p>All characters can move through other characters but cannot finish on the same square as another character</p> \n \n <h3>Attack</h3>\n <p>All player characters can attack a single target within 2 squares either straight up, down, left or right</p>\n <p>All enemy characters can attack a single target in an adjacent square either straight up, down, left or right</p>\n </div>\n <div className=\"bibliography-container\">\n <p><b>Bibliography</b></p>\n <div className=\"bibliography-item\">\n <img src={require('../assets/armour break.png').default} alt=\"armour break\" className=\"bibliography-image\"></img> \n <p>Shield broken by johartcamp from the Noun Project</p>\n </div>\n <div className=\"bibliography-item\">\n <img src={require('../assets/attack break.png').default} alt=\"attack break\" className=\"bibliography-image\"></img> \n <p>Sword Broken by João Filipe F. Rocha from the Noun Project</p>\n </div>\n </div>\n {/* testing!!!!!!!!!!!!!!!!!!!!!!!!!! */}\n <br/><br/><br/><br/><br/><br/><br/><br/><br/>\n <p>IGNORE THIS..... IT'S JUST TESTING</p>\n {/* <div id=\"testBox\" className=\"box transform right\" onClick={() => test()}></div>\n <div className=\"box\" ref={testBox} onClick={() => test()}></div> */}\n {/* <div className=\"box transform\" ref={testBox} onClick={() => test()}></div> */}\n {/* <input type=\"button\" id=\"button\" value=\"Click Me\" onClick={() => test()}></input> */}\n\n\n <input type=\"button\" id=\"button\" value=\"UP\" onClick={() => up()}></input>\n <input type=\"button\" id=\"button\" value=\"DOWN\" onClick={() => down()}></input>\n <input type=\"button\" id=\"button\" value=\"LEFT\" onClick={() => left()}></input>\n <input type=\"button\" id=\"button\" value=\"RIGHT\" onClick={() => right()}></input>\n {/* <div className=\"container-container\" style={{ backgroundImage: `url(${background})`, backgroundSize: \"cover\" }}> */}\n <div className=\"container-container\">\n {/* <div className=\"test-background-image-container\">\n <img src={background} alt={\"image\"} className=\"test-background-image\" onClick={() => test()}></img> \n </div>\n <div ref={testImage} className=\"test-image-container hidden\">\n <img src={sword} alt={\"image\"} className=\"test-image\" onClick={() => test()}></img> \n </div> */}\n <img src={background} alt={\"image\"} className=\"test-background-image\" onClick={() => test()}></img> \n <img src={sword} ref={testImage} alt={\"image\"} className=\"test-image hidden\" onClick={() => test()}></img> \n </div>\n\n {/* end of testing */}\n\n </div>\n )\n}\n\n\nexport default GameActionBar","/Users/chrisfraser/projects/react_RPG/react_rpg/src/components/GameBoard.js",[],"/Users/chrisfraser/projects/react_RPG/react_rpg/src/components/GameSquare.js",["121","122","123","124","125","126","127","128","129","130","131","132","133","134","135","136","137","138"],"import React, { useState, useEffect, useRef } from 'react';\n// import ReactDOM from 'react-dom'\n// import Modal from 'react-modal'\nimport './GameSquare.css'\nimport CharacterInfoModal from '../components/CharacterInfoModal.js'\nimport RewardModal from '../components/RewardModal.js'\nimport mageImage from '../assets/mage.png'\nimport knightImage from '../assets/knight.png'\nimport priestImage from '../assets/priest.png'\nimport orcImage from '../assets/orc.png'\n\nimport sword from '../assets/axe.png'\nimport EquipModal from './EquipModal.js' // REMOVE OR FIX\n\n\n// import boardImages from '../assets/boardImages'\n\nconst width = window.innerWidth\n\n\nconst GameSquare = ({ \n// ref,\n\n squareNumber, \n currentPhase,\n setCurrentPhase,\n movableSquares, \n attackableSquares,\n selectedCharacter,\n setSelectedCharacter,\n playerCharacters,\n setPlayerCharacters,\n enemyCharacters,\n setEnemyCharacters,\n handleImageClick,\n usedCharacters,\n setUsedCharacters,\n setAttackableSquares,\n displayStatusEffects,\n allChestStatus,\n setAllChestStatus,\n currentMapArea,\n weaponsCollection,\n spellsCollection,\n healsCollection,\n handleOpenMap\n }) =>{\n\n // TRYING TO GET REFS WORKING!!!!!!!!!!!!!!!\n // 1\n // console.log(\"REF!!!!\", ref)\n\n // 2\n // const testImage = useRef()\n\n\n\n // TRYING TO GET REFS WORKING!!!!!!!!!!!!!!! TO HERE\n \n\n\n const [ image, setImage ] = useState(null)\n const [ squareStyling, setSquareStyling ] = useState(\"\")\n const [ character, setCharacter ] = useState(null)\n const [ modalIsOpen, setModalIsOpen ] = useState(false)\n const [ rewardModalIsOpen, setRewardModalIsOpen ] = useState(false)\n const [randomWeapon, setRandomWeapon ] = useState(null)\n const [randomSpell, setRandomSpell ] = useState(null)\n const [randomHeal, setRandomHeal ] = useState(null)\n\n//test!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n // const [ fing, setFing ] = useState(\"meleePlayer\")\n // const meleeRef = useRef()\n // const magicRef = useRef()\n // const healerRef = useRef()\n // const characterRef = useRef()\n\n // const handleImageClick = (character) => {\n // meleeRef.current.classList.add(\"blah\")\n // }\n\n // let makeRef = meleeRef\n//test end here!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n\n// Trying animation!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\nconst testImage = useRef()\n\nconst up = () => {\n testImage.current.classList.toggle(\"up\")\n testImage.current.classList.toggle(\"hidden\")\n setTimeout(() => {\n testImage.current.classList.toggle(\"up\")\n testImage.current.classList.toggle(\"hidden\")\n }, 501)\n}\nconst down = () => {\n testImage.current.classList.toggle(\"down\")\n testImage.current.classList.toggle(\"hidden\")\n setTimeout(() => {\n testImage.current.classList.toggle(\"down\")\n testImage.current.classList.toggle(\"hidden\")\n }, 501)\n}\nconst left = () => {\n testImage.current.classList.toggle(\"left\")\n testImage.current.classList.toggle(\"hidden\")\n setTimeout(() => {\n testImage.current.classList.toggle(\"left\")\n testImage.current.classList.toggle(\"hidden\")\n }, 501)\n}\nconst right = () => {\n testImage.current.classList.toggle(\"right\")\n testImage.current.classList.toggle(\"hidden\")\n // setTimeout(() => {\n // testImage.current.classList.toggle(\"right\")\n // testImage.current.classList.toggle(\"hidden\")\n // }, 501)\n}\n\n// end animation!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n\n useEffect(() => {\n if (playerCharacters[\"magicPlayer\"][\"position\"] === squareNumber) {\n setCharacter(playerCharacters[\"magicPlayer\"])\n setImage(mageImage)\n } else if (playerCharacters[\"meleePlayer\"][\"position\"] === squareNumber) {\n setCharacter(playerCharacters[\"meleePlayer\"])\n setImage(knightImage)\n } else if (playerCharacters[\"healerPlayer\"][\"position\"] === squareNumber) {\n setCharacter(playerCharacters[\"healerPlayer\"])\n setImage(priestImage) \n } else {\n setImage(null)\n }\n // since adding id this could now be a loop!!!!!!!!!!!.......\n if (enemyCharacters[\"enemy1\"][\"position\"] === squareNumber){\n setCharacter(enemyCharacters[\"enemy1\"])\n setImage(orcImage)\n } else if (enemyCharacters[\"enemy2\"][\"position\"] === squareNumber){\n setCharacter(enemyCharacters[\"enemy2\"])\n setImage(orcImage)\n } else if (enemyCharacters[\"enemy3\"][\"position\"] === squareNumber){\n setCharacter(enemyCharacters[\"enemy3\"])\n setImage(orcImage)\n } \n }, [playerCharacters, enemyCharacters])\n\n useEffect(() => {\n let currentImage = null\n switch (selectedCharacter) {\n case \"meleePlayer\":\n currentImage = knightImage\n break\n case \"magicPlayer\":\n currentImage = mageImage\n break\n case \"healerPlayer\":\n currentImage = priestImage\n break\n default:\n currentImage = null\n }\n if (( image === null || image === currentImage ) && movableSquares.includes(squareNumber) ) {\n setSquareStyling(\"movable\")\n } else if ( attackableSquares.includes(squareNumber) && selectedCharacter === \"healerPlayer\" && \n playerCharacters[\"healerPlayer\"][\"equippedHeal\"] !== null ){\n if ( !(enemyCharacters[\"enemy1\"][\"position\"] === squareNumber || \n enemyCharacters[\"enemy2\"][\"position\"] === squareNumber || \n enemyCharacters[\"enemy3\"][\"position\"] === squareNumber) \n ) setSquareStyling(\"healable\")\n else setSquareStyling(\"\")\n } else if (attackableSquares.includes(squareNumber) && !(\n playerCharacters[\"magicPlayer\"][\"position\"] === squareNumber ||\n playerCharacters[\"healerPlayer\"][\"position\"] === squareNumber ||\n playerCharacters[\"meleePlayer\"][\"position\"] === squareNumber )) {\n // if (selectedCharacter === \"healerPlayer\" && playerCharacters[\"healerPlayer\"][\"equippedHeal\"] !== null) { \n setSquareStyling(\"attackable\")\n // }\n } else if ( attackableSquares.includes(squareNumber) && \n ( selectedCharacter === \"healerPlayer\" && playerCharacters[\"healerPlayer\"][\"equippedHeal\"] === null)\n && !(\n playerCharacters[\"magicPlayer\"][\"position\"] === squareNumber ||\n playerCharacters[\"healerPlayer\"][\"position\"] === squareNumber ||\n playerCharacters[\"meleePlayer\"][\"position\"] === squareNumber )) {\n setSquareStyling(\"attackable\")\n } else {\n setSquareStyling(\"\")\n }\n if (selectedCharacter === \"healerPlayer\" && \n playerCharacters[\"healerPlayer\"][\"equippedHeal\"] !== null && \n playerCharacters[\"healerPlayer\"][\"position\"] === squareNumber && \n currentPhase === \"playerAttack\"){\n setSquareStyling(\"healable\")\n } \n }, [movableSquares, attackableSquares, playerCharacters, currentPhase])\n\n\n const handleClickSquare = () => {\n if ( squareStyling === \"movable\"){\n const updateableCharacter = playerCharacters[selectedCharacter]\n updateableCharacter.position = squareNumber\n setPlayerCharacters(prevState => ({...prevState, [selectedCharacter]: updateableCharacter }))\n } else if ( squareStyling === \"attackable\" && image !== null) {\n setModalIsOpen(true)\n } else if ( squareStyling === \"healable\" && image !== null ){\n setModalIsOpen(true)\n }\n // left()\n }\n\n const handleModalAttack = () => {\n setModalIsOpen(false)\n // setTimeout(() => {\n // right()\n // }, 500)\n // setTimeout(() => {\n playerCharacters[selectedCharacter].attack(character, setEnemyCharacters)\n setCurrentPhase(\"characterTurnSelect\")\n setSelectedCharacter(null)\n const updatedUsedCharacters = [...usedCharacters, selectedCharacter]\n setUsedCharacters(updatedUsedCharacters)\n setAttackableSquares([])\n // }, 1002)\n\n\n }\n\n const displayChest = () => {\n console.log(\"currentMapArea\", currentMapArea);\n console.log(\"current chest status\", allChestStatus[currentMapArea - 1]);\n if (allChestStatus[currentMapArea - 1] !== \"\" && allChestStatus[currentMapArea - 1].position === squareNumber){\n if(allChestStatus[currentMapArea - 1].status === \"closed\"){\n return <img src={require('../assets/closedchest.png').default} alt={\"chest\"} className=\"chest-image\" onClick={() => handleOpenChest()}></img>\n } else {\n return <img src={require('../assets/openchest.png').default} alt={\"chest\"} className=\"chest-image\"></img>\n }\n }\n }\n\n \n\n const handleOpenChest = () => {\n const chest = {status: \"open\", position: squareNumber}\n const allChestStatusForState = allChestStatus\n allChestStatusForState[currentMapArea - 1] = chest\n\n // const allChestStatusForState = allChestStatus.map((chestStatus, index) => {\n // if ( currentMapArea === index + 1) return chest\n // else return chestStatus\n // })\n\n if (randomHeal === null && randomSpell === null && randomWeapon === null) {\n const randomWeaponIndex = Math.floor(Math.random() * weaponsCollection.length)\n setRandomWeapon(weaponsCollection[randomWeaponIndex])\n\n const randomSpellIndex = Math.floor(Math.random() * spellsCollection.length)\n setRandomSpell(spellsCollection[randomSpellIndex])\n\n const randomHealIndex = Math.floor(Math.random() * healsCollection.length)\n setRandomHeal(healsCollection[0])\n }\n\n setAllChestStatus(allChestStatusForState)\n setTimeout(() => {\n setRewardModalIsOpen(true)\n allChestStatusForState[currentMapArea - 1] = {status: \"closed\", position: squareNumber}\n setAllChestStatus(allChestStatusForState)\n \n }, 400)\n\n \n }\n\n\n const displayImage = () => {\n let htmlToReturn = null\n if (image) {\n htmlToReturn = <>\n {/* <img src={image} alt={image} className=\"game-square-image\" onClick={() => handleImageClick(character)}></img> */}\n {/* <img src={require('../assets/' + item.name + '.png').default} alt={item.name} className=\"weapon-select-modal-image\"></img> */}\n\n {/* working in tests...... */}\n <img src={image} alt={\"image\"} className=\"game-square-image\" onClick={() => handleImageClick(character)}></img> \n {/* <img src={sword} ref={testImage} alt={\"image\"} className=\"test-image hidden\"></img> */}\n\n </>\n } else htmlToReturn = <p>{squareNumber}</p>\n return htmlToReturn\n }\n\n const displayAttackAnimationWithEquipped = () => {\n let equippedType = \"\"\n switch (selectedCharacter) {\n case \"meleePlayer\":\n equippedType = \"equippedWeapon\"\n break\n case \"magicPlayer\":\n equippedType = \"equippedSpell\"\n break\n case \"healerPlayer\":\n equippedType = \"equippedHeal\"\n break\n default:\n equippedType = \"\"\n }\n // let imageToReturn = null\n // if (equippedType === \"\"){\n // imageToReturn = <img src={image} ref={testImage} alt={\"image\"} className=\"test-image hidden\"></img>\n // } else {\n // imageToReturn = <img src={require('../assets/' + playerCharacters[selectedCharacter][equippedType].name + '.png').default} ref={testImage} alt={\"image\"} className=\"test-image hidden\"></img> \n // }\n // return imageToReturn\n\n // return (\n // <>\n // {equippedType ? <img src={require('../assets/' + playerCharacters[selectedCharacter][equippedType].name + '.png').default} ref={testImage} alt={\"image\"} className=\"test-image hidden\"></img> \n // : <img src={image} ref={testImage} alt={\"image\"} className=\"test-image hidden\"></img>\n // }\n // </>\n // )\n\n return <img id={\"equipped\" + squareNumber} src={require('../assets/' + playerCharacters[selectedCharacter][equippedType].name + '.png').default} ref={testImage} alt={\"image\"} className=\"test-image hidden\"></img> \n }\n\n const displayAttackAnimationNothingEquipped = () => {\n let equippedType = \"\"\n let attackingCharacterImage = null\n switch (selectedCharacter) {\n case \"meleePlayer\":\n equippedType = \"equippedWeapon\"\n attackingCharacterImage = knightImage\n break\n case \"magicPlayer\":\n equippedType = \"equippedSpell\"\n attackingCharacterImage = mageImage\n break\n case \"healerPlayer\":\n equippedType = \"equippedHeal\"\n attackingCharacterImage = priestImage\n break\n default:\n equippedType = \"\"\n attackingCharacterImage = null\n }\n if (playerCharacters[selectedCharacter][equippedType]) {\n return null\n } else {\n return <img src={attackingCharacterImage} ref={testImage} alt={\"image\"} className=\"test-image hidden\"></img>\n }\n }\n\n\n return (\n <>\n {/* getElementTesting HERE!!!!!!!!!!!!!!!!!!!!!!!!!! */}\n {/* <div id={squareNumber} onClick={() => handleClickSquare()} className={width > 500 ? `bigger-square-container ${squareStyling}` : `smaller-square-container ${squareStyling}` }> */}\n <div id={\"square\" + squareNumber} onClick={() => handleClickSquare()} className={width > 500 ? `bigger-square-container ${squareStyling}` : `smaller-square-container ${squareStyling}` }>\n {image ? \n <>\n <progress id={\"health\" + squareNumber} value={character.healthPoints} max={character.maxHealthPoints} className=\"health-bar\"></progress>\n {character.statusEffects.find(status => status.effect === \"shield\") !== undefined && <img src={require('../assets/' + 'shield' + '.png').default} alt=\"shielded\" className=\"shield-background\" ></img>}\n <img src={image} alt={image} className=\"game-square-image\" onClick={() => handleImageClick(character)}></img> \n {/* <img src={sword} ref={testImage} alt={\"image\"} className=\"test-image hidden\"></img> */}\n \n {/* {playerCharacters[selectedCharacter] && playerCharacters[selectedCharacter].equippedWeapon && <img src={require('../assets/' + playerCharacters[selectedCharacter].equippedWeapon.name + '.png').default} ref={testImage} alt={\"image\"} className=\"test-image hidden\"></img> } */}\n {/* {playerCharacters[selectedCharacter] && displayAttackAnimationNothingEquipped() }\n {selectedCharacter === \"meleePlayer\" && playerCharacters[selectedCharacter].equippedWeapon && displayAttackAnimationWithEquipped()}\n {selectedCharacter === \"magicPlayer\" && playerCharacters[selectedCharacter].equippedSpell && displayAttackAnimationWithEquipped()}\n {selectedCharacter === \"healerPlayer\" && playerCharacters[selectedCharacter].equippedHeal && displayAttackAnimationWithEquipped()} */}\n {/* <img src={require('../assets/' + item.name + '.png').default} alt={item.name} className=\"weapon-select-modal-image\"></img> */}\n </>\n : \n // THIS IS HELPFUL DURING DEVELOPMENT!!!!!!!!!!!!!!!!!!\n // <p>{squareNumber}</p> \n null\n\n }\n\n {/* needs moved!!!!!!!!!!!!!!!!!!!! */}\n {/* <img src={sword} ref={testImage} alt={\"image\"} className=\"test-image hidden\"></img> */}\n {/* {displayImage()} */}\n\n \n {/* <img src={require('../assets/' + 'orc' + '.png').default} id={\"attackImage\" + squareNumber} alt={\"image\"} className=\"attack-image hidden\"></img> */}\n {/* starts with very small image as placeholder...... */}\n <img src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" id={\"attackImage\" + squareNumber} alt={\"image\"} className=\"attack-image hidden\"></img>\n {allChestStatus[currentMapArea - 1].position === squareNumber && displayChest()}\n </div>\n {/* {character && selectedCharacter && <Modal\n className=\"attack-modal-container\"\n appElement={document.getElementById('root')}\n isOpen={modalIsOpen}\n style={{\n overlay: {\n backgroundColor: 'rgba(0,0,0,0.7)'\n }\n }}\n >\n {playerCharacters[\"healerPlayer\"][\"equippedHeal\"] !== null ? <p>Heal {character.name} with {playerCharacters[\"healerPlayer\"][\"equippedHeal\"].name}</p> : \n <p>Attack {character.name} with {playerCharacters[selectedCharacter].type}?</p>}\n {selectedCharacter === \"meleePlayer\" && playerCharacters[selectedCharacter].equippedWeapon && <p>Current equipped Weapon is {playerCharacters[selectedCharacter].equippedWeapon.name}</p>}\n {selectedCharacter === \"magicPlayer\" && playerCharacters[selectedCharacter].equippedSpell && <p>Current equipped Spell is {playerCharacters[selectedCharacter].equippedSpell.name}</p>}\n {selectedCharacter === \"healerPlayer\" && playerCharacters[selectedCharacter].equippedHeal && <p>Current equipped heal is {playerCharacters[selectedCharacter].equippedHeal.name}</p>}\n <p>This will end this characters turn</p>\n <button onClick={() => handleModalAttack()}>Yes</button>\n <button onClick={() => setModalIsOpen(false)}>No</button>\n </Modal>} */}\n \n {character && selectedCharacter &&\n <CharacterInfoModal\n character={character}\n modalIsOpen={modalIsOpen}\n setModalIsOpen={setModalIsOpen}\n playerCharacters={playerCharacters}\n selectedCharacter={selectedCharacter}\n handleModalAttack={handleModalAttack}\n displayStatusEffects={displayStatusEffects}\n />}\n {randomSpell !== null && randomWeapon !== null && randomHeal !== null && <RewardModal \n rewardModalIsOpen={rewardModalIsOpen}\n setRewardModalIsOpen={setRewardModalIsOpen}\n playerCharacters={playerCharacters}\n randomHeal={randomHeal}\n randomWeapon={randomWeapon}\n randomSpell={randomSpell}\n setPlayerCharacters={setPlayerCharacters}\n setAllChestStatus={setAllChestStatus}\n allChestStatus={allChestStatus}\n currentMapArea={currentMapArea}\n weaponsCollection={weaponsCollection}\n spellsCollection={spellsCollection}\n healsCollection={healsCollection}\n handleOpenMap={handleOpenMap}\n />}\n\n\n {/* REMOVE OR FIX */}\n {/* {selectedCharacter && <EquipModal \n equipModalIsOpen={equipModalIsOpen} \n setEquipModalIsOpen={setEquipModalIsOpen}\n playerCharacters={playerCharacters}\n setPlayerCharacters={setPlayerCharacters}\n selectedCharacter={selectedCharacter}\n />} */}\n </>\n )\n}\n\nexport default GameSquare\n\n","/Users/chrisfraser/projects/react_RPG/react_rpg/src/assets/boardImages.js",[],["139","140"],"/Users/chrisfraser/projects/react_RPG/react_rpg/src/components/MovementPhase.js",[],"/Users/chrisfraser/projects/react_RPG/react_rpg/src/models/Character.js",["141"],"function Character(name, attackPoints, healthPoints, position) {\n this.name = name\n this.attackPoints = attackPoints\n this.healthPoints = healthPoints\n this.position = position\n this.isAlive = true\n this.statusEffects = []\n this.maxHealthPoints = healthPoints\n}\n\nCharacter.prototype.attack = function (target, setTarget, modifiedDamage = 0){\n console.log(\"TARGET\", target);\n console.log(\"THIS\", this);\n\n const targetElement = document.getElementById(\"square\" + target.position)\n const targetImage = document.getElementById(\"attackImage\" + target.position)\n const targetHealthBar = document.getElementById(\"health\" + target.position)\n\n setTimeout(() => {\n\n const startingHealth = target.healthPoints\n // let newHealth = 0\n // modifiedDamage === 0 ? newHealth = startingHealth - this.attackPoints : newHealth = startingHealth - modifiedDamage\n // target.healthPoints = newHealth\n console.log(\"THIS\", this);\n let damageDone = 0\n modifiedDamage === 0 ? damageDone = this.attackPoints : damageDone = modifiedDamage\n target.statusEffects.forEach(statusEffect => {\n if(statusEffect.effect === \"armour down\" ) damageDone *= 2\n if(statusEffect.effect === \"shield\" ) {\n const damageAfterShield = statusEffect.duration - damageDone\n if (damageAfterShield > 0 ) {\n statusEffect.duration = damageAfterShield\n damageDone = 0\n }\n else {\n damageDone = 0 - damageAfterShield\n const statusEffectsWithoutShield = target.statusEffects.filter(filterEffect => filterEffect.effect !== \"shield\")\n target.statusEffects = statusEffectsWithoutShield\n setTarget(prevState => ({...prevState, [target.id]: target }))\n }\n }\n })\n target.healthPoints = startingHealth - damageDone\n if ( target.healthPoints <= 0) {\n target.position = 100\n setTarget(prevState => ({...prevState, [target.id]: target }))\n }\n\n // SIMPLIFIED ATTACK ANIMATION !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n // const targetElement = document.getElementById(\"square\" + target.position)\n \n // const attackerElement = document.getElementById(\"square\" + this.position)\n\n let equippedType = \"\"\n let attackerIsPlayer = true\n switch (this.id) {\n case \"meleePlayer\":\n equippedType = \"equippedWeapon\"\n break\n case \"magicPlayer\":\n equippedType = \"equippedSpell\"\n break\n case \"healerPlayer\":\n equippedType = \"equippedHeal\"\n break\n default:\n equippedType = \"\"\n attackerIsPlayer = false\n }\n\n if (this[equippedType] !== null && attackerIsPlayer) {\n targetImage.src = require('../assets/' + this[equippedType].name + '.png').default \n } else {\n targetImage.src = require('../assets/' + this.type + '.png').default \n }\n\n\n // setTimeout(() => {\n // targetElement.style.backgroundColor = \"yellow\"\n // targetElement.classList.toggle(\"attacked\")\n targetImage.classList.toggle(\"hidden\")\n if (target.position <= 25) {\n targetHealthBar.value = startingHealth - damageDone\n }\n // attackerElement.style.backgroundColor = \"red\"\n }, 300)\n setTimeout(() => {\n // targetElement.style.backgroundColor = \"transparent\"\n // targetElement.classList.toggle(\"attacked\")\n targetImage.classList.toggle(\"hidden\")\n // attackerElement.style.backgroundColor = \"transparent\"\n // }, 501)\n }, 500)\n\n // END - SIMPLIFIED ATTACK ANIMATION !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n\n // MORE COMPLICATED ATTACK ANIMATION STUFF!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n // let attackDirection = null\n // if (target.position === this.position + 1 || target.position === this.position + 2) attackDirection = \"attack-right\" \n // else if (target.position === this.position - 1 || target.position === this.position - 2) attackDirection = \"attack-left\" \n // else if (target.position === this.position - 5 || target.position === this.position - 10) attackDirection = \"attack-up\" \n // else if (target.position === this.position + 5 || target.position === this.position + 10) attackDirection = \"attack-down\" \n\n // let equippedType = \"\"\n // let attackerIsPlayer = true\n // switch (this.id) {\n // case \"meleePlayer\":\n // equippedType = \"equippedWeapon\"\n // break\n // case \"magicPlayer\":\n // equippedType = \"equippedSpell\"\n // break\n // case \"healerPlayer\":\n // equippedType = \"equippedHeal\"\n // break\n // default:\n // equippedType = \"\"\n // attackerIsPlayer = false\n // }\n\n // const targetElement = document.getElementById(target.position)\n\n // if (this[equippedType] !== null && attackerIsPlayer) {\n // targetElement.src = require('../assets/' + this[equippedType].name + '.png').default \n // } else {\n // targetElement.src = require('../assets/' + this.type + '.png').default \n // }\n\n // targetElement.classList.toggle(\"hidden\")\n // targetElement.classList.toggle(attackDirection)\n // setTimeout(() => {\n // targetElement.classList.toggle(attackDirection)\n // targetElement.classList.toggle(\"hidden\")\n // }, 501)\n //END - MORE COMPLICATED ATTACK ANIMATION STUFF!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n}\n\nCharacter.prototype.addEffectToTarget = function (item, target) {\n console.log(\"item\", item)\n let stillToAdd = true\n const updatedEffects = target.statusEffects.map(statusEffect =>{\n if( item.effectName === statusEffect.effect){\n if(item.duration > statusEffect.duration) statusEffect.duration = item.duration\n stillToAdd = false\n }\n return statusEffect\n })\n if (stillToAdd) target.statusEffects.push({effect: item.effectName, duration: item.duration})\n else target.statusEffects = updatedEffects\n}\n\nexport default Character\n\n\n\n\n\n\n// // MELEEEEE!!!!!!!!!!!!!!\n// MeleePlayer.prototype.attack = function (enemy){\n// let damageDone = this.attackPoints\n// const startingHealth = enemy.healthPoints;\n\n// if(this.equippedWeapon) {\n// damageDone += this.equippedWeapon.attackPower\n// const randomNumber = Math.floor(Math.random() * 100) + 1\n// switch(this.equippedWeapon.type){\n// case(\"sword\"):\n// if(randomNumber <= 25) damageDone *= 2\n// break\n// case(\"axe\"):\n// if(randomNumber <= 10) damageDone = startingHealth\n// else if(randomNumber <= 100) addEffectToTarget(\"attack down\", enemy, 2) // should be <= 20\n// break\n// case(\"club\"):\n// if(randomNumber <= 100) addEffectToTarget(\"stun\", enemy, 1) // should be <= 25\n// break\n// }\n// }\n// enemy.statusEffects.forEach(statusEffect => {\n// if(statusEffect.effect === \"armour down\" ) damageDone *= 2\n// })\n// enemy.healthPoints = startingHealth - damageDone\n// }\n\n// const addEffectToTarget = (effectName, enemy, duration) => {\n// let stillToAdd = true\n// const updatedEffects = enemy.statusEffects.map(statusEffect =>{\n// if( effectName === statusEffect.effect){\n// if(duration > statusEffect.duration) statusEffect.duration = duration\n// stillToAdd = false\n// }\n// return statusEffect\n// })\n// if (stillToAdd) enemy.statusEffects.push({effect: effectName, duration: duration})\n// else enemy.statusEffects = updatedEffects\n// }\n// // MELEEEEE!!!!!!!!!!!!!! ENDDDDDD\n\n\n// // MAGICCCCCCCCCC!!!!!!!!!!!\n// MagicPlayer.prototype.attack = function (enemy) {\n// let damageDone = this.attackPoints\n// const startingHealth = enemy.healthPoints\n// if(this.equippedSpell) damageDone += this.equippedSpell.spellPower\n// const randomNumber = Math.floor(Math.random() * 100) + 1\n// // if ( randomNumber <= this.equippedSpell.activationChance) enemy.statusEffects.push({effect: this.equippedSpell.effectName, duration: this.equippedSpell.duration})\n// enemy.statusEffects.forEach(statusEffect => {\n// if(statusEffect.effect === \"armour down\" ) damageDone *= 2\n// })\n// if ( randomNumber <= this.equippedSpell.activationChance) addEffectToTarget(this.equippedSpell, enemy)\n// enemy.healthPoints = startingHealth - damageDone\n// }\n\n// const updateStatusEffects = (name, enemyCharacters, setEnemyCharacters) => {\n// const updatedStatusEffects = []\n// enemyCharacters[name].statusEffects.forEach(statusEffect => {\n// statusEffect.duration -= 1\n// if (statusEffect.duration > 0) updatedStatusEffects.push(statusEffect)\n// })\n// const updatableEnemy = enemyCharacters[name]\n// updatableEnemy.statusEffects = updatedStatusEffects\n// console.log(\"updatedStatusEffects\", updatedStatusEffects);\n// console.log(\"updatableEnemy\", updatableEnemy);\n// setEnemyCharacters(prevState => ({...prevState, [name]: updatableEnemy}))\n// }\n\n// const addEffectToTarget = (spell, enemy) => {\n// let stillToAdd = true\n// const updatedEffects = enemy.statusEffects.map(statusEffect =>{\n// if( spell.effectName === statusEffect.effect){\n// if(spell.duration > statusEffect.duration) statusEffect.duration = spell.duration\n// stillToAdd = false\n// }\n// return statusEffect\n// })\n// if (stillToAdd) enemy.statusEffects.push({effect: spell.effectName, duration: spell.duration})\n// else enemy.statusEffects = updatedEffects\n// }\n// // MAGICCCCCCCCCC!!!!!!!!!!! ENDDDDDDDDDDDDDDD\n\n\n// // HEALERRRRRRRR!!!!!!!!!!!!!\n// HealerPlayer.prototype.attack = function (target){\n// if ( this.equippedHeal !== null ) {\n// const startingHealth = target.healthPoints\n// const newHealth = startingHealth + this.equippedHeal.healPower\n// target.healthPoints = newHealth\n// } else Character.prototype.attack.call(this, target)\n// }\n// // HEALERRRRRRRR!!!!!!!!!!!!! ENDDDDDDDDDDDDD\n","/Users/chrisfraser/projects/react_RPG/react_rpg/src/models/Enemy.js",[],"/Users/chrisfraser/projects/react_RPG/react_rpg/src/models/MeleePlayer.js",["142"],"import Character from './Character.js'\n\nfunction MeleePlayer(name, attackPoints, healthPoints, position, type) {\n Character.call(this, name, attackPoints, healthPoints, position)\n this.type = type\n this.equippedWeapon = null\n this.weapons = []\n this.ultimateCharge = 0\n this.id = \"meleePlayer\"\n\n\n // this.statusEffects = []\n}\n\nMeleePlayer.prototype = Object.create(Character.prototype);\nObject.defineProperty(MeleePlayer.prototype, 'constructor', { \n value: MeleePlayer, \n enumerable: false, // so that it does not appear in 'for in' loop\n writable: true \n});\n\nMeleePlayer.prototype.attack = function (enemy, setEnemyCharacters){\n let damageDone = this.attackPoints\n const startingHealth = enemy.healthPoints;\n\n if(this.equippedWeapon) {\n damageDone += this.equippedWeapon.attackPower\n const randomNumber = Math.floor(Math.random() * 100) + 1\n switch(this.equippedWeapon.type){\n case(\"sword\"):\n if(randomNumber <= this.equippedWeapon.activationChance) damageDone *= 2\n break\n case(\"axe\"):\n // if(randomNumber <= 10) damageDone = startingHealth\n // else if(randomNumber <= 100) addEffectToTarget(\"attack down\", enemy, 2) // should be <= 20\n if(randomNumber <= this.equippedWeapon.activationChance) Character.prototype.addEffectToTarget.call(this, this.equippedWeapon, enemy) // should be <= 20\n break\n case(\"club\"):\n // if(randomNumber <= 100) addEffectToTarget(\"stun\", enemy, 1) // should be <= 25\n if(randomNumber <= this.equippedWeapon.activationChance) Character.prototype.addEffectToTarget.call(this, this.equippedWeapon, enemy) // should be <= 25\n break\n default:\n console.log(\"no matching weapon\");\n }\n console.log(\"weapon chance\", this.equippedWeapon.activationChance);\n console.log(\"random chance\", randomNumber);\n }\n // enemy.statusEffects.forEach(statusEffect => {\n // if(statusEffect.effect === \"armour down\" ) damageDone *= 2\n // })\n // enemy.healthPoints = startingHealth - damageDone\n // if ( enemy.healthPoints <= 0) {\n // enemy.position = 100\n // setEnemyCharacters(prevState => ({...prevState, [enemy.id]: enemy })) //here!\n // }\n Character.prototype.attack.call(this, enemy, setEnemyCharacters, damageDone)\n}\n\n// const addEffectToTarget = (effectName, enemy, duration) => {\n// let stillToAdd = true\n// const updatedEffects = enemy.statusEffects.map(statusEffect =>{\n// if( effectName === statusEffect.effect){\n// if(duration > statusEffect.duration) statusEffect.duration = duration\n// stillToAdd = false\n// }\n// return statusEffect\n// })\n// if (stillToAdd) enemy.statusEffects.push({effect: effectName, duration: duration})\n// else enemy.statusEffects = updatedEffects\n// }\n\nexport default MeleePlayer","/Users/chrisfraser/projects/react_RPG/react_rpg/src/models/meleeWeapon.js",[],"/Users/chrisfraser/projects/react_RPG/react_rpg/src/models/MeleeWeapon.js",[],"/Users/chrisfraser/projects/react_RPG/react_rpg/src/components/AttackPhase.js",["143"],"import React, { useState } from 'react';\nimport './AttackPhase.css'\nimport EquipModal from './EquipModal.js'\n// import ReactDOM from 'react-dom'\n// import Modal from 'react-modal'\n// import swordImage from '../assets/sword.png'\n// import WeaponImages from '../assets/WeaponImages.js'\n\nconst AttackPhase = ({ \n selectedCharacter,\n setSelectedCharacter, \n setCurrentPhase, \n calculateAttackLocations, \n calculateMovementLocations,\n setAttackableSquares,\n playerCharacters, \n setPlayerCharacters,\n setEnemyMovementPhase,\n startingPosition,\n usedCharacters,\n setUsedCharacters,\n equipModalIsOpen,\n setEquipModalIsOpen }) =>{\n\n // const [ weaponChangeModalIsOpen, setWeaponChangeModalIsOpen ] = useState(false)\n // const [ equipModalIsOpen, setEquipModalIsOpen ] = useState(false)\n\n let equipType = \"\"\n if (selectedCharacter === \"meleePlayer\") equipType = \"Weapon\"\n else if (selectedCharacter === \"magicPlayer\") equipType = \"Spell\"\n else if (selectedCharacter === \"healerPlayer\") equipType = \"Heal\"\n\n\n // const [ equippedWeapon, setEquippedWeapon ] = useState(playerCharacters[selectedCharacter].equippedWeapon)\n\n const handleFinishedCharacterAttack = () => {\n setAttackableSquares([])\n setCurrentPhase(\"characterTurnSelect\")\n const updatedUsedCharacters = [...usedCharacters, selectedCharacter]\n setUsedCharacters(updatedUsedCharacters)\n }\n\n const handleCancel = () => {\n setCurrentPhase(\"playerMovement\")\n calculateMovementLocations(startingPosition.current, 2)\n setAttackableSquares([])\n }\n\n const handleChangeEquipped = () => {\n // setWeaponChangeModalIsOpen(true)\n setEquipModalIsOpen(true)\n }\n\n // MOVED TO EQUIP MODAL!!!\n // const displayWeaponInventory = () => {\n // const weapons = playerCharacters[selectedCharacter].weapons\n // const displayWeaponOptions = weapons.map(weapon => {\n // let equippedStyle = false\n // if(playerCharacters[selectedCharacter].equippedWeapon && playerCharacters[selectedCharacter].equippedWeapon.name === weapon.name) equippedStyle = true\n // return (\n // <div className={equippedStyle ? \"weapon-select-modal-weapon equippedStyle\" : \"weapon-select-modal-weapon\"} onClick={() => handleEquipWeapon(weapon)}>\n // {/* <img src={swordImage} alt='sword' className=\"weapon-select-modal-image\"></img> */}\n // {/* <img src={WeaponImages[weapon.name].default} alt='sword' className=\"weapon-select-modal-image\"></img> */}\n // <p>{weapon.name}</p>\n // <img src={require('../assets/' + weapon.name + '.png').default} alt={weapon.name} className=\"weapon-select-modal-image\"></img> \n // <p>Damage: {weapon.attackPower}</p>\n // {/* <button onClick={() => handleEquipWeapon(weapon)}>Equip</button> */}\n // </div>\n // )\n // })\n // return displayWeaponOptions\n // }\n // const handleEquipWeapon = (weapon) => {\n // const updateableCharacter = playerCharacters[selectedCharacter]\n // updateableCharacter.equippedWeapon = weapon\n // setPlayerCharacters(prevState => ({...prevState, [selectedCharacter]: updateableCharacter }))\n // }\n\n return (\n <div>\n <p className=\"phase-text\">Attack Phase</p>\n <div className=\"phase-content\">\n <p>Currently Attacking with {playerCharacters[selectedCharacter].type}</p> \n <button onClick={() => handleFinishedCharacterAttack()}>End {playerCharacters[selectedCharacter].type}'s turn without attacking </button>\n {/* {selectedCharacter === \"meleePlayer\" && <button onClick={() => handleChangeEquipped()}>Change Equipped Weapon</button>}\n {selectedCharacter === \"magicPlayer\" && <button onClick={() => handleChangeEquipped()}>Change Equipped Spell</button>}\n {selectedCharacter === \"healerPlayer\" && <button onClick={() => handleChangeEquipped()}>Change Equipped Heal</button>} */}\n <button onClick={() => handleChangeEquipped()}>Change Equipped {equipType}</button>\n <button onClick={() => handleCancel()}>Back To Movement Phase</button>\n <p>You can <b>Change Equipped {equipType}</b>, <b>click a highlighted</b> enemy to attack, <b>End Turn Without attacking</b> or go <b>Back To Movement Phase</b></p>\n </div>\n {console.log(\"equipmentType111111\", selectedCharacter)}\n\n {selectedCharacter && <EquipModal \n equipModalIsOpen={equipModalIsOpen} \n setEquipModalIsOpen={setEquipModalIsOpen}\n playerCharacters={playerCharacters}\n setPlayerCharacters={setPlayerCharacters}\n selectedCharacter={selectedCharacter}\n />}\n\n\n\n {/* {selectedCharacter === \"meleePlayer\" && <Modal\n className=\"weapon-select-modal-container\"\n appElement={document.getElementById('root')}\n isOpen={weaponChangeModalIsOpen}\n style={{\n overlay: {\n backgroundColor: 'rgba(0,0,0,0.7)'\n }\n }}\n >\n <p>Change Weapon</p>\n {playerCharacters[selectedCharacter].equippedWeapon ? \n <p>Currently Equipped weapon {playerCharacters[selectedCharacter].equippedWeapon.name}</p>\n :\n <p>No Weapon Currently Equipped</p>\n }\n <div className=\"weapon-select-modal-weapons-container\">\n {displayWeaponInventory()}\n </div>\n <button className=\"weapon-select-modal-button\" onClick={() => handleEquipWeapon(null)}>Unequip Weapon</button>\n <button className=\"weapon-select-modal-button\" onClick={() => setWeaponChangeModalIsOpen(false)}>Confirm</button>\n </Modal>} */}\n </div>\n )\n\n}\n\nexport default AttackPhase","/Users/chrisfraser/projects/react_RPG/react_rpg/src/components/CharacterTurnSelect.js",[],"/Users/chrisfraser/projects/react_RPG/react_rpg/src/assets/WeaponImages.js",[],"/Users/chrisfraser/projects/react_RPG/react_rpg/src/models/Spell.js",[],"/Users/chrisfraser/projects/react_RPG/react_rpg/src/models/HealerPlayer.js",[],"/Users/chrisfraser/projects/react_RPG/react_rpg/src/models/MagicPlayer.js",[],"/Users/chrisfraser/projects/react_RPG/react_rpg/src/components/EquipModal.js",[],"/Users/chrisfraser/projects/react_RPG/react_rpg/src/models/Heal.js",[],"/Users/chrisfraser/projects/react_RPG/react_rpg/src/components/CharacterInfoModal.js",[],"/Users/chrisfraser/projects/react_RPG/react_rpg/src/components/RewardModal.js",[],"/Users/chrisfraser/projects/react_RPG/react_rpg/src/components/MapModal.js",["144","145","146","147"],{"ruleId":"148","replacedBy":"149"},{"ruleId":"150","replacedBy":"151"},{"ruleId":"152","severity":1,"message":"153","line":4,"column":8,"nodeType":"154","messageId":"155","endLine":4,"endColumn":18},{"ruleId":"152","severity":1,"message":"156","line":101,"column":29,"nodeType":"154","messageId":"155","endLine":101,"endColumn":46},{"ruleId":"152","severity":1,"message":"157","line":103,"column":13,"nodeType":"154","messageId":"155","endLine":103,"endColumn":31},{"ruleId":"152","severity":1,"message":"158","line":103,"column":33,"nodeType":"154","messageId":"155","endLine":103,"endColumn":54},{"ruleId":"152","severity":1,"message":"159","line":109,"column":11,"nodeType":"154","messageId":"155","endLine":109,"endColumn":25},{"ruleId":"160","severity":1,"message":"161","line":158,"column":8,"nodeType":"162","endLine":158,"endColumn":22,"suggestions":"163"},{"ruleId":"152","severity":1,"message":"164","line":1,"column":17,"nodeType":"154","messageId":"155","endLine":1,"endColumn":25},{"ruleId":"160","severity":1,"message":"165","line":87,"column":8,"nodeType":"162","endLine":87,"endColumn":27,"suggestions":"166"},{"ruleId":"167","severity":1,"message":"168","line":188,"column":17,"nodeType":"169","endLine":188,"endColumn":111},{"ruleId":"167","severity":1,"message":"168","line":189,"column":17,"nodeType":"169","endLine":189,"endColumn":118},{"ruleId":"152","severity":1,"message":"170","line":12,"column":8,"nodeType":"154","messageId":"155","endLine":12,"endColumn":13},{"ruleId":"152","severity":1,"message":"153","line":13,"column":8,"nodeType":"154","messageId":"155","endLine":13,"endColumn":18},{"ruleId":"152","severity":1,"message":"171","line":90,"column":7,"nodeType":"154","messageId":"155","endLine":90,"endColumn":9},{"ruleId":"152","severity":1,"message":"172","line":98,"column":7,"nodeType":"154","messageId":"155","endLine":98,"endColumn":11},{"ruleId":"152","severity":1,"message":"173","line":106,"column":7,"nodeType":"154","messageId":"155","endLine":106,"endColumn":11},{"ruleId":"152","severity":1,"message":"174","line":114,"column":7,"nodeType":"154","messageId":"155","endLine":114,"endColumn":12},{"ruleId":"160","severity":1,"message":"175","line":150,"column":8,"nodeType":"162","endLine":150,"endColumn":43,"suggestions":"176"},{"ruleId":"160","severity":1,"message":"177","line":199,"column":8,"nodeType":"162","endLine":199,"endColumn":75,"suggestions":"178"},{"ruleId":"152","severity":1,"message":"179","line":263,"column":19,"nodeType":"154","messageId":"155","endLine":263,"endColumn":34},{"ruleId":"152","severity":1,"message":"180","line":279,"column":11,"nodeType":"154","messageId":"155","endLine":279,"endColumn":23},{"ruleId":"167","severity":1,"message":"168","line":287,"column":17,"nodeType":"169","endLine":287,"endColumn":123},{"ruleId":"152","severity":1,"message":"181","line":295,"column":11,"nodeType":"154","messageId":"155","endLine":295,"endColumn":45},{"ruleId":"167","severity":1,"message":"168","line":326,"column":16,"nodeType":"169","endLine":326,"endColumn":215},{"ruleId":"152","severity":1,"message":"182","line":329,"column":11,"nodeType":"154","messageId":"155","endLine":329,"endColumn":48},{"ruleId":"167","severity":1,"message":"168","line":352,"column":20,"nodeType":"169","endLine":352,"endColumn":116},{"ruleId":"183","severity":1,"message":"184","line":365,"column":141,"nodeType":"185","messageId":"186","endLine":365,"endColumn":142},{"ruleId":"183","severity":1,"message":"184","line":365,"column":152,"nodeType":"185","messageId":"186","endLine":365,"endColumn":153},{"ruleId":"167","severity":1,"message":"168","line":390,"column":17,"nodeType":"169","endLine":390,"endColumn":188},{"ruleId":"148","replacedBy":"187"},{"ruleId":"150","replacedBy":"188"},{"ruleId":"152","severity":1,"message":"189","line":15,"column":11,"nodeType":"154","messageId":"155","endLine":15,"endColumn":24},{"ruleId":"152","severity":1,"message":"190","line":24,"column":11,"nodeType":"154","messageId":"155","endLine":24,"endColumn":25},{"ruleId":"152","severity":1,"message":"164","line":1,"column":17,"nodeType":"154","messageId":"155","endLine":1,"endColumn":25},{"ruleId":"152","severity":1,"message":"191","line":4,"column":8,"nodeType":"154","messageId":"155","endLine":4,"endColumn":16},{"ruleId":"152","severity":1,"message":"192","line":15,"column":13,"nodeType":"154","messageId":"155","endLine":15,"endColumn":27},{"ruleId":"152","severity":1,"message":"156","line":15,"column":29,"nodeType":"154","messageId":"155","endLine":15,"endColumn":46},{"ruleId":"160","severity":1,"message":"193","line":44,"column":8,"nodeType":"162","endLine":44,"endColumn":44,"suggestions":"194"},"no-native-reassign",["195"],"no-negated-in-lhs",["196"],"no-unused-vars","'EquipModal' is defined but never used.","Identifier","unusedVar","'setCurrentMapArea' is assigned a value but never used.","'discoveredMapAreas' is assigned a value but never used.","'setDiscoveredMapAreas' is assigned a value but never used.","'handleMapClick' is assigned a value but never used.","react-hooks/exhaustive-deps","React Hook useEffect has missing dependencies: 'enemy1', 'enemy2', 'enemy3', 'enemyCharacters', 'handleBattleWin', and 'playerCharacters'. Either include them or remove the dependency array.","ArrayExpression",["197"],"'useState' is defined but never used.","React Hook useEffect has a missing dependency: 'playerCharacters'. Either include it or remove the dependency array.",["198"],"jsx-a11y/img-redundant-alt","Redundant alt attribute. Screen-readers already announce `img` tags as an image. You don’t need to use the words `image`, `photo,` or `picture` (or any specified custom words) in the alt prop.","JSXOpeningElement","'sword' is defined but never used.","'up' is assigned a value but never used.","'down' is assigned a value but never used.","'left' is assigned a value but never used.","'right' is assigned a value but never used.","React Hook useEffect has a missing dependency: 'squareNumber'. Either include it or remove the dependency array.",["199"],"React Hook useEffect has missing dependencies: 'enemyCharacters', 'image', 'selectedCharacter', and 'squareNumber'. Either include them or remove the dependency array.",["200"],"'randomHealIndex' is assigned a value but never used.","'displayImage' is assigned a value but never used.","'displayAttackAnimationWithEquipped' is assigned a value but never used.","'displayAttackAnimationNothingEquipped' is assigned a value but never used.","no-useless-concat","Unexpected string concatenation of literals.","BinaryExpression","unexpectedConcat",["195"],["196"],"'targetElement' is assigned a value but never used.","'startingHealth' is assigned a value but never used.","'ReactDOM' is defined but never used.","'currentMapArea' is assigned a value but never used.","React Hook useEffect has missing dependencies: 'areaUnlockTokenAvailable' and 'calculatePossibleMapUnlockLocations'. Either include them or remove the dependency array.",["201"],"no-global-assign","no-unsafe-negation",{"desc":"202","fix":"203"},{"desc":"204","fix":"205"},{"desc":"206","fix":"207"},{"desc":"208","fix":"209"},{"desc":"210","fix":"211"},"Update the dependencies array to be: [currentPhase, enemy1, enemy2, enemy3, enemyCharacters, handleBattleWin, playerCharacters]",{"range":"212","text":"213"},"Update the dependencies array to be: [playerCharacters, selectedCharacter]",{"range":"214","text":"215"},"Update the dependencies array to be: [playerCharacters, enemyCharacters, squareNumber]",{"range":"216","text":"217"},"Update the dependencies array to be: [movableSquares, attackableSquares, playerCharacters, currentPhase, selectedCharacter, image, squareNumber, enemyCharacters]",{"range":"218","text":"219"},"Update the dependencies array to be: [mapModalIsOpen, discoveredMapAreas, areaUnlockTokenAvailable, calculatePossibleMapUnlockLocations]",{"range":"220","text":"221"},[6975,6989],"[currentPhase, enemy1, enemy2, enemy3, enemyCharacters, handleBattleWin, playerCharacters]",[2967,2986],"[playerCharacters, selectedCharacter]",[4661,4696],"[playerCharacters, enemyCharacters, squareNumber]",[7124,7191],"[movableSquares, attackableSquares, playerCharacters, currentPhase, selectedCharacter, image, squareNumber, enemyCharacters]",[2058,2094],"[mapModalIsOpen, discoveredMapAreas, areaUnlockTokenAvailable, calculatePossibleMapUnlockLocations]"]