Passed
Pull Request — master (#1821)
by Nico
52:02 queued 25:23
created

getBehaviourProbabilities()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 48
Code Lines 38

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 38
nc 1
nop 0
dl 0
loc 48
ccs 0
cts 46
cp 0
crap 2
rs 9.312
c 0
b 0
f 0
1
<?php
2
3
namespace Stu\Lib\Pirate;
4
5
enum PirateReactionTriggerEnum: int
6
{
7
    case ON_ATTACK = 1;
8
    case ON_SCAN = 2;
9
    case ON_INTERCEPTION_BEFORE = 3;
10
    case ON_INTERCEPTION_AFTER = 4;
11
    case ON_SUPPORT_CALL = 5;
12
    case ON_RAGE = 6;
13
    case ON_TRACTOR = 7;
14
    case ON_BEAM = 8;
15
16
    public function getWrath(): int
17
    {
18
        return match ($this) {
19
            self::ON_ATTACK => 30,
20
            self::ON_TRACTOR => 25,
21
            self::ON_BEAM => 15,
22
            self::ON_INTERCEPTION_BEFORE => 10,
23
            self::ON_INTERCEPTION_AFTER => 10,
24
            self::ON_SCAN => 10,
25
            self::ON_SUPPORT_CALL => 0,
26
            self::ON_RAGE => 0,
27
        };
28
    }
29
30
    public function triggerAlternativeReaction(): bool
31
    {
32
        return match ($this) {
33
            self::ON_TRACTOR => false,
34
            self::ON_ATTACK => true,
35
            self::ON_INTERCEPTION_BEFORE => false,
36
            self::ON_INTERCEPTION_AFTER => true,
37
            self::ON_BEAM => true,
38
            self::ON_SCAN => true,
39
            self::ON_SUPPORT_CALL => true,
40
            self::ON_RAGE => true
41
        };
42
    }
43
44
    /**
45
     * @return array<int, int>
46
     */
47
    public function getBehaviourProbabilities(): array
48
    {
49
        return match ($this) {
50
            self::ON_ATTACK => [
51
                PirateBehaviourEnum::RAGE->value => 50,
52
                PirateBehaviourEnum::CALL_FOR_SUPPORT->value => 25,
53
                PirateBehaviourEnum::SEARCH_FRIEND->value => 30,
54
                PirateBehaviourEnum::FLY->value => 20,
55
                PirateBehaviourEnum::HIDE->value => 20,
56
                PirateBehaviourEnum::DO_NOTHING->value => 10,
57
            ],
58
            self::ON_SCAN => [
59
                PirateBehaviourEnum::DO_NOTHING->value => 60,
60
                PirateBehaviourEnum::RAGE->value => 60,
61
                PirateBehaviourEnum::FLY->value => 20,
62
                PirateBehaviourEnum::HIDE->value => 20,
63
                PirateBehaviourEnum::SEARCH_FRIEND->value => 5,
64
            ],
65
            self::ON_INTERCEPTION_BEFORE => [
66
                PirateBehaviourEnum::FLY->value => 50,
67
                PirateBehaviourEnum::HIDE->value => 25,
68
                PirateBehaviourEnum::DO_NOTHING->value => 25
69
            ],
70
            self::ON_INTERCEPTION_AFTER => [
71
                PirateBehaviourEnum::RAGE->value => 40,
72
                PirateBehaviourEnum::CALL_FOR_SUPPORT->value => 15,
73
                PirateBehaviourEnum::SEARCH_FRIEND->value => 15,
74
                PirateBehaviourEnum::DO_NOTHING->value => 10,
75
                PirateBehaviourEnum::FLY->value => 10,
76
            ],
77
            self::ON_SUPPORT_CALL => [
78
                PirateBehaviourEnum::RAGE->value => 100,
79
                PirateBehaviourEnum::CALL_FOR_SUPPORT->value => 10
80
            ],
81
            self::ON_RAGE => [
82
                PirateBehaviourEnum::RAGE->value => 50,
83
                PirateBehaviourEnum::CALL_FOR_SUPPORT->value => 20,
84
                PirateBehaviourEnum::DO_NOTHING->value => 20
85
            ],
86
            self::ON_TRACTOR => [
87
                PirateBehaviourEnum::RAGE->value => 90,
88
                PirateBehaviourEnum::CALL_FOR_SUPPORT->value => 10
89
90
            ],
91
            self::ON_BEAM => [
92
                PirateBehaviourEnum::RAGE->value => 50,
93
                PirateBehaviourEnum::CALL_FOR_SUPPORT->value => 40,
94
                PirateBehaviourEnum::DO_NOTHING->value => 10
95
            ]
96
        };
97
    }
98
}
99