Scrutinizer GitHub App not installed

We could not synchronize checks via GitHub's checks API since Scrutinizer's GitHub App is not installed for this repository.

Install GitHub App

Passed
Push — master ( 6a117c...f6d76c )
by Dan
05:46 queued 02:12
created

AbstractSmrCombatWeapon::getEmpDamage()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 1
dl 0
loc 2
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php declare(strict_types=1);
2
3
abstract class AbstractSmrCombatWeapon {
4
	/**
5
	 * Reduce the damage done to planets by this factor
6
	 */
7
	const PLANET_DAMAGE_MOD = 0.2;
8
9
	protected $gameTypeID;
10
	protected $name;
11
	protected $raceID;
12
	protected $maxDamage;
13
	protected $shieldDamage;
14
	protected $armourDamage;
15
	protected $accuracy;
16
	protected $damageRollover;
17
	
18
	public function getBaseAccuracy() {
19
		return $this->accuracy;
20
	}
21
	
22
	public function getName() {
23
		return $this->name;
24
	}
25
	
26
	public function getRaceID() {
27
		return $this->raceID;
28
	}
29
	
30
	public function getRaceName() {
31
		return Globals::getRaceName($this->getRaceID());
32
	}
33
	
34
	public function getMaxDamage() {
35
		return $this->maxDamage;
36
	}
37
	
38
	public function getShieldDamage() {
39
		return $this->shieldDamage;
40
	}
41
	
42
	public function getArmourDamage() {
43
		return $this->armourDamage;
44
	}
45
	
46
	public function isDamageRollover() {
47
		return $this->damageRollover;
48
	}
49
	
50
	public function canShootForces() {
51
		return true;
52
	}
53
	
54
	public function canShootPorts() {
55
		return true;
56
	}
57
	
58
	public function canShootPlanets() {
59
		return true;
60
	}
61
	
62
	public function canShootTraders() {
63
		return true;
64
	}
65
	
66
	public function getDamage() {
67
		return array('MaxDamage' => $this->getMaxDamage(), 'Shield' => $this->getShieldDamage(), 'Armour' => $this->getArmourDamage(), 'Rollover' => $this->isDamageRollover());
68
	}
69
	
70
	abstract public function &getModifiedDamageAgainstForces(AbstractSmrPlayer $weaponPlayer, SmrForce $forces);
71
	abstract public function &getModifiedDamageAgainstPort(AbstractSmrPlayer $weaponPlayer, SmrPort $port);
72
	abstract public function &getModifiedDamageAgainstPlanet(AbstractSmrPlayer $weaponPlayer, SmrPlanet $planet);
73
	abstract public function &getModifiedPortDamageAgainstPlayer(SmrPort $port, AbstractSmrPlayer $targetPlayer);
74
	abstract public function &getModifiedDamageAgainstPlayer(AbstractSmrPlayer $weaponPlayer, AbstractSmrPlayer $targetPlayer);
75
	abstract public function &getModifiedForceDamageAgainstPlayer(SmrForce $forces, AbstractSmrPlayer $targetPlayer);
76
	
77
	protected function &doPlayerDamageToForce(array &$return, AbstractSmrPlayer $weaponPlayer, SmrForce $forces) {
78
		$return['WeaponDamage'] =& $this->getModifiedDamageAgainstForces($weaponPlayer,$forces);
79
		$return['ActualDamage'] =& $forces->doWeaponDamage($return['WeaponDamage']);
80
		if($return['ActualDamage']['KillingShot']) {
81
			$return['KillResults'] =& $forces->killForcesByPlayer($weaponPlayer);
82
		}
83
		return $return;
84
	}
85
	
86
	protected function &doPlayerDamageToPlayer(array &$return, AbstractSmrPlayer $weaponPlayer, AbstractSmrPlayer $targetPlayer) {
87
		$return['WeaponDamage'] =& $this->getModifiedDamageAgainstPlayer($weaponPlayer,$targetPlayer);
88
		$return['ActualDamage'] =& $targetPlayer->getShip()->doWeaponDamage($return['WeaponDamage']);
89
90
		if($return['ActualDamage']['KillingShot']) {
91
			$return['KillResults'] =& $targetPlayer->killPlayerByPlayer($weaponPlayer);
92
		}
93
		return $return;
94
	}
95
	
96
	protected function &doPlayerDamageToPort(array &$return, AbstractSmrPlayer $weaponPlayer, SmrPort $port) {
97
		$return['WeaponDamage'] =& $this->getModifiedDamageAgainstPort($weaponPlayer,$port);
98
		$return['ActualDamage'] =& $port->doWeaponDamage($return['WeaponDamage']);
99
		if($return['ActualDamage']['KillingShot']) {
100
			$return['KillResults'] =& $port->killPortByPlayer($weaponPlayer);
101
		}
102
		return $return;
103
	}
104
	
105
	protected function &doPlayerDamageToPlanet(array &$return, AbstractSmrPlayer $weaponPlayer, SmrPlanet $planet, $delayed) {
106
		$return['WeaponDamage'] =& $this->getModifiedDamageAgainstPlanet($weaponPlayer,$planet);
107
		$return['ActualDamage'] =& $planet->doWeaponDamage($return['WeaponDamage'],$delayed);
108
		if($return['ActualDamage']['KillingShot']) {
109
			$return['KillResults'] =& $planet->killPlanetByPlayer($weaponPlayer);
110
		}
111
		return $return;
112
	}
113
	
114
	protected function &doPortDamageToPlayer(array &$return, SmrPort $port, AbstractSmrPlayer $targetPlayer) {
115
		$return['WeaponDamage'] =& $this->getModifiedPortDamageAgainstPlayer($port,$targetPlayer);
116
		$return['ActualDamage'] =& $targetPlayer->getShip()->doWeaponDamage($return['WeaponDamage']);
117
118
		if($return['ActualDamage']['KillingShot']) {
119
			$return['KillResults'] =& $targetPlayer->killPlayerByPort($port);
120
		}
121
		return $return;
122
	}
123
	
124
	protected function &doPlanetDamageToPlayer(array &$return, SmrPlanet $planet, AbstractSmrPlayer $targetPlayer) {
125
		$return['WeaponDamage'] =& $this->getModifiedPlanetDamageAgainstPlayer($planet,$targetPlayer);
0 ignored issues
show
Bug introduced by
The method getModifiedPlanetDamageAgainstPlayer() does not exist on AbstractSmrCombatWeapon. Since it exists in all sub-types, consider adding an abstract or default implementation to AbstractSmrCombatWeapon. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

125
		$return['WeaponDamage'] =& $this->/** @scrutinizer ignore-call */ getModifiedPlanetDamageAgainstPlayer($planet,$targetPlayer);
Loading history...
126
		$return['ActualDamage'] =& $targetPlayer->getShip()->doWeaponDamage($return['WeaponDamage']);
127
128
		if($return['ActualDamage']['KillingShot']) {
129
			$return['KillResults'] =& $targetPlayer->killPlayerByPlanet($planet);
130
		}
131
		return $return;
132
	}
133
	
134
	protected function &doForceDamageToPlayer(array &$return, SmrForce $forces, AbstractSmrPlayer $targetPlayer) {
135
		$return['WeaponDamage'] =& $this->getModifiedForceDamageAgainstPlayer($forces,$targetPlayer);
136
		$return['ActualDamage'] =& $targetPlayer->getShip()->doWeaponDamage($return['WeaponDamage']);
137
138
		if($return['ActualDamage']['KillingShot']) {
139
			$return['KillResults'] =& $targetPlayer->killPlayerByForces($forces);
140
		}
141
		return $return;
142
	}
143
	
144
	abstract public function &shootForces(AbstractSmrPlayer $weaponPlayer, SmrForce $forces);
145
	abstract public function &shootPlayer(AbstractSmrPlayer $weaponPlayer, AbstractSmrPlayer $targetPlayer);
146
	abstract public function &shootPlayerAsForce(SmrForce $forces, AbstractSmrPlayer $targetPlayer);
147
}
148