Reduced cyclomatic complexity in BMAttackPower
Reduced cyclomatic complexity in BMAttackPower by removing conditions from if statement
Fixed BMAttackPower
Refactored BMAttackPower to split some logic from validate_attack() into validate_attacker()
Refactored BMAttackShadow to split some logic from validate_attack() into validate_attacker()
Removed need for Object.keys()
Renamed BMAttack*::is_attack_valid() to BMAttack*::are_skills_compatible()
Changed BMAttack to an abstract class
Added @inheritdoc to see if it will correctly suppress UnusedFormalParameter warnings
Changed @inheritdoc to {@inheritDoc} to see if that works
Attempt to suppress warning by using //NOPMD
Fixed UnusedFormalParameter warning by removing unused parameter altogether
Made BMAttack->are_skills_compatible() into an abstract function
More minor changes addressing PMD warnings
Fixed all UnusedFormalParameter warnings
Attempt to suppress UnusedLocalVariable warnings by using //NOPMD
Use @SuppressWarnings(PHPMD.*) instead of //NOPMD, which doesn't seem to work.
mysql.inc.php and mysql.test.inc.php now use function conn() instead of defining $conn directly
Changed require to require_once
Added missing initialisation of $conn