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 ( 9eaac4...d9a8b1 )
by Dan
04:15
created

AbstractSmrCombatWeapon::getRaceID()   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 $maxDamage;
12
	protected $shieldDamage;
13
	protected $armourDamage;
14
	protected $accuracy;
15
	protected $damageRollover;
16
	
17
	public function getBaseAccuracy() {
18
		return $this->accuracy;
19
	}
20
	
21
	public function getName() {
22
		return $this->name;
23
	}
24
	
25
	public function getMaxDamage() {
26
		return $this->maxDamage;
27
	}
28
	
29
	public function getShieldDamage() {
30
		return $this->shieldDamage;
31
	}
32
	
33
	public function getArmourDamage() {
34
		return $this->armourDamage;
35
	}
36
	
37
	public function isDamageRollover() {
38
		return $this->damageRollover;
39
	}
40
	
41
	public function canShootForces() {
42
		return true;
43
	}
44
	
45
	public function canShootPorts() {
46
		return true;
47
	}
48
	
49
	public function canShootPlanets() {
50
		return true;
51
	}
52
	
53
	public function canShootTraders() {
54
		return true;
55
	}
56
	
57
	public function getDamage() {
58
		return array('MaxDamage' => $this->getMaxDamage(), 'Shield' => $this->getShieldDamage(), 'Armour' => $this->getArmourDamage(), 'Rollover' => $this->isDamageRollover());
59
	}
60
	
61
	abstract public function &getModifiedDamageAgainstForces(AbstractSmrPlayer $weaponPlayer, SmrForce $forces);
62
	abstract public function &getModifiedDamageAgainstPort(AbstractSmrPlayer $weaponPlayer, SmrPort $port);
63
	abstract public function &getModifiedDamageAgainstPlanet(AbstractSmrPlayer $weaponPlayer, SmrPlanet $planet);
64
	abstract public function &getModifiedPortDamageAgainstPlayer(SmrPort $port, AbstractSmrPlayer $targetPlayer);
65
	abstract public function &getModifiedDamageAgainstPlayer(AbstractSmrPlayer $weaponPlayer, AbstractSmrPlayer $targetPlayer);
66
	abstract public function &getModifiedForceDamageAgainstPlayer(SmrForce $forces, AbstractSmrPlayer $targetPlayer);
67
	
68
	protected function &doPlayerDamageToForce(array &$return, AbstractSmrPlayer $weaponPlayer, SmrForce $forces) {
69
		$return['WeaponDamage'] =& $this->getModifiedDamageAgainstForces($weaponPlayer,$forces);
70
		$return['ActualDamage'] =& $forces->doWeaponDamage($return['WeaponDamage']);
71
		if($return['ActualDamage']['KillingShot']) {
72
			$return['KillResults'] =& $forces->killForcesByPlayer($weaponPlayer);
73
		}
74
		return $return;
75
	}
76
	
77
	protected function &doPlayerDamageToPlayer(array &$return, AbstractSmrPlayer $weaponPlayer, AbstractSmrPlayer $targetPlayer) {
78
		$return['WeaponDamage'] =& $this->getModifiedDamageAgainstPlayer($weaponPlayer,$targetPlayer);
79
		$return['ActualDamage'] =& $targetPlayer->getShip()->doWeaponDamage($return['WeaponDamage']);
80
81
		if($return['ActualDamage']['KillingShot']) {
82
			$return['KillResults'] =& $targetPlayer->killPlayerByPlayer($weaponPlayer);
83
		}
84
		return $return;
85
	}
86
	
87
	protected function &doPlayerDamageToPort(array &$return, AbstractSmrPlayer $weaponPlayer, SmrPort $port) {
88
		$return['WeaponDamage'] =& $this->getModifiedDamageAgainstPort($weaponPlayer,$port);
89
		$return['ActualDamage'] =& $port->doWeaponDamage($return['WeaponDamage']);
90
		if($return['ActualDamage']['KillingShot']) {
91
			$return['KillResults'] =& $port->killPortByPlayer($weaponPlayer);
92
		}
93
		return $return;
94
	}
95
	
96
	protected function &doPlayerDamageToPlanet(array &$return, AbstractSmrPlayer $weaponPlayer, SmrPlanet $planet, $delayed) {
97
		$return['WeaponDamage'] =& $this->getModifiedDamageAgainstPlanet($weaponPlayer,$planet);
98
		$return['ActualDamage'] =& $planet->doWeaponDamage($return['WeaponDamage'],$delayed);
99
		if($return['ActualDamage']['KillingShot']) {
100
			$return['KillResults'] =& $planet->killPlanetByPlayer($weaponPlayer);
101
		}
102
		return $return;
103
	}
104
	
105
	protected function &doPortDamageToPlayer(array &$return, SmrPort $port, AbstractSmrPlayer $targetPlayer) {
106
		$return['WeaponDamage'] =& $this->getModifiedPortDamageAgainstPlayer($port,$targetPlayer);
107
		$return['ActualDamage'] =& $targetPlayer->getShip()->doWeaponDamage($return['WeaponDamage']);
108
109
		if($return['ActualDamage']['KillingShot']) {
110
			$return['KillResults'] =& $targetPlayer->killPlayerByPort($port);
111
		}
112
		return $return;
113
	}
114
	
115
	protected function &doPlanetDamageToPlayer(array &$return, SmrPlanet $planet, AbstractSmrPlayer $targetPlayer) {
116
		$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

116
		$return['WeaponDamage'] =& $this->/** @scrutinizer ignore-call */ getModifiedPlanetDamageAgainstPlayer($planet,$targetPlayer);
Loading history...
117
		$return['ActualDamage'] =& $targetPlayer->getShip()->doWeaponDamage($return['WeaponDamage']);
118
119
		if($return['ActualDamage']['KillingShot']) {
120
			$return['KillResults'] =& $targetPlayer->killPlayerByPlanet($planet);
121
		}
122
		return $return;
123
	}
124
	
125
	protected function &doForceDamageToPlayer(array &$return, SmrForce $forces, AbstractSmrPlayer $targetPlayer) {
126
		$return['WeaponDamage'] =& $this->getModifiedForceDamageAgainstPlayer($forces,$targetPlayer);
127
		$return['ActualDamage'] =& $targetPlayer->getShip()->doWeaponDamage($return['WeaponDamage']);
128
129
		if($return['ActualDamage']['KillingShot']) {
130
			$return['KillResults'] =& $targetPlayer->killPlayerByForces($forces);
131
		}
132
		return $return;
133
	}
134
	
135
	abstract public function &shootForces(AbstractSmrPlayer $weaponPlayer, SmrForce $forces);
136
	abstract public function &shootPlayer(AbstractSmrPlayer $weaponPlayer, AbstractSmrPlayer $targetPlayer);
137
	abstract public function &shootPlayerAsForce(SmrForce $forces, AbstractSmrPlayer $targetPlayer);
138
}
139