tf2_line_parser 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +2 -0
- data/Gemfile.lock +13 -11
- data/README.md +0 -5
- data/lib/tf2_line_parser/events/airshot.rb +4 -7
- data/lib/tf2_line_parser/events/assist.rb +1 -4
- data/lib/tf2_line_parser/events/capture_block.rb +2 -5
- data/lib/tf2_line_parser/events/charge_deployed.rb +2 -4
- data/lib/tf2_line_parser/events/chat.rb +2 -10
- data/lib/tf2_line_parser/events/connect.rb +2 -6
- data/lib/tf2_line_parser/events/console_say.rb +2 -5
- data/lib/tf2_line_parser/events/current_score.rb +1 -4
- data/lib/tf2_line_parser/events/damage.rb +4 -7
- data/lib/tf2_line_parser/events/disconnect.rb +21 -0
- data/lib/tf2_line_parser/events/domination.rb +1 -3
- data/lib/tf2_line_parser/events/event.rb +12 -18
- data/lib/tf2_line_parser/events/final_score.rb +1 -4
- data/lib/tf2_line_parser/events/headshot_damage.rb +5 -9
- data/lib/tf2_line_parser/events/heal.rb +3 -4
- data/lib/tf2_line_parser/events/kill.rb +4 -6
- data/lib/tf2_line_parser/events/match_end.rb +2 -5
- data/lib/tf2_line_parser/events/medic_death.rb +5 -6
- data/lib/tf2_line_parser/events/pickup_item.rb +3 -5
- data/lib/tf2_line_parser/events/player_action_event.rb +2 -5
- data/lib/tf2_line_parser/events/point_capture.rb +2 -5
- data/lib/tf2_line_parser/events/pvp_event.rb +3 -3
- data/lib/tf2_line_parser/events/revenge.rb +1 -3
- data/lib/tf2_line_parser/events/role_change.rb +3 -5
- data/lib/tf2_line_parser/events/round_event_with_variables.rb +1 -4
- data/lib/tf2_line_parser/events/round_event_without_variables.rb +1 -4
- data/lib/tf2_line_parser/events/round_length.rb +3 -6
- data/lib/tf2_line_parser/events/round_stalemate.rb +2 -5
- data/lib/tf2_line_parser/events/round_start.rb +2 -5
- data/lib/tf2_line_parser/events/round_win.rb +2 -5
- data/lib/tf2_line_parser/events/score.rb +4 -7
- data/lib/tf2_line_parser/events/spawn.rb +2 -4
- data/lib/tf2_line_parser/events/suicide.rb +3 -5
- data/lib/tf2_line_parser/events/unknown.rb +3 -6
- data/lib/tf2_line_parser/line.rb +1 -4
- data/lib/tf2_line_parser/parser.rb +1 -2
- data/lib/tf2_line_parser/player.rb +1 -4
- data/lib/tf2_line_parser/version.rb +2 -1
- data/lib/tf2_line_parser.rb +14 -15
- data/spec/fixtures/logs/broder_vs_epsilon.log +1 -0
- data/spec/lib/tf2_line_parser/parser_spec.rb +167 -148
- data/spec/lib/tf2_line_parser/player_spec.rb +5 -7
- data/spec/spec_helper.rb +3 -1
- data/tf2_line_parser.gemspec +11 -10
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 63ba39004702334d3877c7656e29ace89831fa7fd14d476364675e894ceb0333
|
4
|
+
data.tar.gz: 9e5454836fbc05685e7a428015f3772d7d1d193073d74b8c469910445660b2df
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6c9372fa0970de3e30f809605bf054eac603bb3d2115fe6718f5c5c1afdbad18f302ce08feaa3e5afe8f33ac0a180b24543f2a2d5edd641ba46978b45d3268df
|
7
|
+
data.tar.gz: e4b2ef25b0756e89d3db87808c3cb91e00d4219880127fbf267e23c8cec4194908de1d4563f150b837e79197653ba835b2b282d03b1f3aee1075acde1ac774db
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,19 +1,20 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
tf2_line_parser (0.2.
|
4
|
+
tf2_line_parser (0.2.1)
|
5
5
|
activesupport
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
|
-
activesupport (
|
10
|
+
activesupport (6.1.3.2)
|
11
11
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
12
|
-
i18n (
|
13
|
-
minitest (
|
14
|
-
tzinfo (~>
|
12
|
+
i18n (>= 1.6, < 2)
|
13
|
+
minitest (>= 5.1)
|
14
|
+
tzinfo (~> 2.0)
|
15
|
+
zeitwerk (~> 2.3)
|
15
16
|
coderay (1.1.1)
|
16
|
-
concurrent-ruby (1.
|
17
|
+
concurrent-ruby (1.1.8)
|
17
18
|
coveralls (0.8.21)
|
18
19
|
json (>= 1.8, < 3)
|
19
20
|
simplecov (~> 0.14.1)
|
@@ -22,10 +23,11 @@ GEM
|
|
22
23
|
tins (~> 1.6)
|
23
24
|
diff-lcs (1.3)
|
24
25
|
docile (1.1.5)
|
25
|
-
i18n (
|
26
|
+
i18n (1.8.10)
|
27
|
+
concurrent-ruby (~> 1.0)
|
26
28
|
json (2.1.0)
|
27
29
|
method_source (0.8.2)
|
28
|
-
minitest (5.
|
30
|
+
minitest (5.14.4)
|
29
31
|
pry (0.10.4)
|
30
32
|
coderay (~> 1.1.0)
|
31
33
|
method_source (~> 0.8.1)
|
@@ -54,10 +56,10 @@ GEM
|
|
54
56
|
term-ansicolor (1.6.0)
|
55
57
|
tins (~> 1.0)
|
56
58
|
thor (0.19.4)
|
57
|
-
thread_safe (0.3.6)
|
58
59
|
tins (1.15.0)
|
59
|
-
tzinfo (
|
60
|
-
|
60
|
+
tzinfo (2.0.4)
|
61
|
+
concurrent-ruby (~> 1.0)
|
62
|
+
zeitwerk (2.4.2)
|
61
63
|
|
62
64
|
PLATFORMS
|
63
65
|
ruby
|
data/README.md
CHANGED
@@ -6,10 +6,5 @@ I plan to use this for my own stats parsing tool.
|
|
6
6
|
## Requirements
|
7
7
|
* Ruby
|
8
8
|
|
9
|
-
## Missing events
|
10
|
-
* Connect
|
11
|
-
* Disconnect
|
12
|
-
* Enter game
|
13
|
-
|
14
9
|
## Credits
|
15
10
|
* nTraum, I stole most of the regexes from his [TF2Stats](https://github.com/nTraum/tf2stats/) project.
|
@@ -1,9 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module TF2LineParser
|
3
4
|
module Events
|
4
|
-
|
5
5
|
class Airshot < Damage
|
6
|
-
|
7
6
|
def self.regex
|
8
7
|
@regex ||= /#{regex_time} #{regex_player} triggered "damage" #{regex_damage_against}\(damage "(?'value'\d+)"\)(?:( #{regex_realdamage})?( #{regex_weapon})?( #{regex_airshot})?)$/.freeze
|
9
8
|
end
|
@@ -13,20 +12,18 @@ module TF2LineParser
|
|
13
12
|
end
|
14
13
|
|
15
14
|
def self.attributes
|
16
|
-
@attributes ||= [
|
15
|
+
@attributes ||= %i[time player_nick player_steamid player_team target_nick target_steamid
|
16
|
+
target_team value weapon airshot]
|
17
17
|
end
|
18
18
|
|
19
19
|
def initialize(time, player_name, player_steamid, player_team, target_name, target_steamid, target_team, value, weapon, airshot)
|
20
20
|
@time = parse_time(time)
|
21
21
|
@player = Player.new(player_name, player_steamid, player_team)
|
22
|
-
if target_name
|
23
|
-
@target = Player.new(target_name, target_steamid, target_team)
|
24
|
-
end
|
22
|
+
@target = Player.new(target_name, target_steamid, target_team) if target_name
|
25
23
|
@value = value.to_i
|
26
24
|
@weapon = weapon
|
27
25
|
@airshot = (airshot.to_i == 1)
|
28
26
|
end
|
29
|
-
|
30
27
|
end
|
31
28
|
end
|
32
29
|
end
|
@@ -1,14 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module TF2LineParser
|
3
4
|
module Events
|
4
|
-
|
5
5
|
class Assist < PVPEvent
|
6
|
-
|
7
6
|
def self.regex
|
8
7
|
@regex ||= /#{regex_time} #{regex_player} triggered "kill assist" against #{regex_target}/.freeze
|
9
8
|
end
|
10
|
-
|
11
9
|
end
|
12
|
-
|
13
10
|
end
|
14
11
|
end
|
@@ -1,15 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module TF2LineParser
|
3
4
|
module Events
|
4
|
-
|
5
5
|
class CaptureBlock < Event
|
6
|
-
|
7
6
|
def self.regex
|
8
7
|
@regex ||= /#{regex_time} #{regex_player} triggered "captureblocked" #{regex_cap}/.freeze
|
9
8
|
end
|
10
9
|
|
11
10
|
def self.attributes
|
12
|
-
@attributes ||= [
|
11
|
+
@attributes ||= %i[time player_nick player_steamid player_team cp_number cp_name]
|
13
12
|
end
|
14
13
|
|
15
14
|
def initialize(time, player_name, player_steam_id, player_team, cap_number, cap_name)
|
@@ -18,8 +17,6 @@ module TF2LineParser
|
|
18
17
|
@cap_number = cap_number
|
19
18
|
@cap_name = cap_name
|
20
19
|
end
|
21
|
-
|
22
20
|
end
|
23
|
-
|
24
21
|
end
|
25
22
|
end
|
@@ -1,22 +1,20 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module TF2LineParser
|
3
4
|
module Events
|
4
|
-
|
5
5
|
class ChargeDeployed < Event
|
6
|
-
|
7
6
|
def self.regex
|
8
7
|
@regex ||= /#{regex_time} #{regex_player} triggered "chargedeployed"/.freeze
|
9
8
|
end
|
10
9
|
|
11
10
|
def self.attributes
|
12
|
-
@attributes ||= [
|
11
|
+
@attributes ||= %i[time player_nick player_steamid player_team]
|
13
12
|
end
|
14
13
|
|
15
14
|
def initialize(time, name, steam_id, team)
|
16
15
|
@time = parse_time(time)
|
17
16
|
@player = Player.new(name, steam_id, team)
|
18
17
|
end
|
19
|
-
|
20
18
|
end
|
21
19
|
end
|
22
20
|
end
|
@@ -1,10 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module TF2LineParser
|
3
4
|
module Events
|
4
|
-
|
5
|
-
|
6
5
|
class Chat < Event
|
7
|
-
|
8
6
|
def initialize(time, player_name, player_steam_id, player_team, message)
|
9
7
|
@time = parse_time(time)
|
10
8
|
@player = Player.new(player_name, player_steam_id, player_team)
|
@@ -12,26 +10,20 @@ module TF2LineParser
|
|
12
10
|
end
|
13
11
|
|
14
12
|
def self.attributes
|
15
|
-
@attributes ||= [
|
13
|
+
@attributes ||= %i[time player_nick player_steamid player_team message]
|
16
14
|
end
|
17
|
-
|
18
15
|
end
|
19
16
|
|
20
17
|
class Say < Chat
|
21
|
-
|
22
18
|
def self.regex
|
23
19
|
@regex ||= /#{regex_time} #{regex_player} say #{regex_message}/.freeze
|
24
20
|
end
|
25
|
-
|
26
21
|
end
|
27
22
|
|
28
23
|
class TeamSay < Chat
|
29
|
-
|
30
24
|
def self.regex
|
31
25
|
@regex ||= /#{regex_time} #{regex_player} say_team #{regex_message}/.freeze
|
32
26
|
end
|
33
|
-
|
34
27
|
end
|
35
|
-
|
36
28
|
end
|
37
29
|
end
|
@@ -1,10 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module TF2LineParser
|
3
4
|
module Events
|
4
|
-
|
5
|
-
|
6
5
|
class Connect < Event
|
7
|
-
|
8
6
|
def initialize(time, player_name, player_steam_id, player_team, message)
|
9
7
|
@time = parse_time(time)
|
10
8
|
@player = Player.new(player_name, player_steam_id, player_team)
|
@@ -12,14 +10,12 @@ module TF2LineParser
|
|
12
10
|
end
|
13
11
|
|
14
12
|
def self.attributes
|
15
|
-
@attributes ||= [
|
13
|
+
@attributes ||= %i[time player_nick player_steamid player_team message]
|
16
14
|
end
|
17
15
|
|
18
16
|
def self.regex
|
19
17
|
@regex ||= /#{regex_time} #{regex_player} connected, address #{regex_message}/.freeze
|
20
18
|
end
|
21
|
-
|
22
19
|
end
|
23
|
-
|
24
20
|
end
|
25
21
|
end
|
@@ -1,23 +1,20 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module TF2LineParser
|
3
4
|
module Events
|
4
|
-
|
5
5
|
class ConsoleSay < Event
|
6
|
-
|
7
6
|
def self.regex
|
8
7
|
@regex ||= /#{regex_time} #{regex_console} say #{regex_message}/.freeze
|
9
8
|
end
|
10
9
|
|
11
10
|
def self.attributes
|
12
|
-
@attributes ||= [
|
11
|
+
@attributes ||= %i[time message]
|
13
12
|
end
|
14
13
|
|
15
14
|
def initialize(time, message)
|
16
15
|
@time = parse_time(time)
|
17
16
|
@message = message
|
18
17
|
end
|
19
|
-
|
20
18
|
end
|
21
|
-
|
22
19
|
end
|
23
20
|
end
|
@@ -1,9 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module TF2LineParser
|
3
4
|
module Events
|
4
|
-
|
5
5
|
class Damage < Event
|
6
|
-
|
7
6
|
def self.regex
|
8
7
|
@regex ||= /#{regex_time} #{regex_player} triggered "damage" #{regex_damage_against}\(damage "(?'value'\d+)"\)(?:( #{regex_realdamage})?( #{regex_weapon})?)$/.freeze
|
9
8
|
end
|
@@ -21,19 +20,17 @@ module TF2LineParser
|
|
21
20
|
end
|
22
21
|
|
23
22
|
def self.attributes
|
24
|
-
@attributes ||= [
|
23
|
+
@attributes ||= %i[time player_nick player_steamid player_team target_nick target_steamid
|
24
|
+
target_team value weapon]
|
25
25
|
end
|
26
26
|
|
27
27
|
def initialize(time, player_name, player_steamid, player_team, target_name, target_steamid, target_team, value, weapon)
|
28
28
|
@time = parse_time(time)
|
29
29
|
@player = Player.new(player_name, player_steamid, player_team)
|
30
|
-
if target_name
|
31
|
-
@target = Player.new(target_name, target_steamid, target_team)
|
32
|
-
end
|
30
|
+
@target = Player.new(target_name, target_steamid, target_team) if target_name
|
33
31
|
@value = value.to_i
|
34
32
|
@weapon = weapon
|
35
33
|
end
|
36
|
-
|
37
34
|
end
|
38
35
|
end
|
39
36
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module TF2LineParser
|
4
|
+
module Events
|
5
|
+
class Disconnect < Event
|
6
|
+
def initialize(time, player_name, player_steam_id, player_team, message)
|
7
|
+
@time = parse_time(time)
|
8
|
+
@player = Player.new(player_name, player_steam_id, player_team)
|
9
|
+
@message = message
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.attributes
|
13
|
+
@attributes ||= %i[time player_nick player_steamid player_team message]
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.regex
|
17
|
+
@regex ||= /#{regex_time} #{regex_player} disconnected \(reason #{regex_message}\)/.freeze
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -1,13 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module TF2LineParser
|
3
4
|
module Events
|
4
|
-
|
5
5
|
class Domination < PVPEvent
|
6
|
-
|
7
6
|
def self.regex
|
8
7
|
@regex ||= /#{regex_time} #{regex_player} triggered "domination" against #{regex_target}.*/.freeze
|
9
8
|
end
|
10
|
-
|
11
9
|
end
|
12
10
|
end
|
13
11
|
end
|
@@ -1,48 +1,44 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
module TF2LineParser
|
3
2
|
|
3
|
+
module TF2LineParser
|
4
4
|
module Events
|
5
|
-
|
6
5
|
class Event
|
7
|
-
|
8
|
-
|
9
|
-
attr_accessor :team, :score, :value, :item, :role, :length, :method
|
10
|
-
attr_accessor :player, :target, :healing, :ubercharge, :customkill, :weapon, :airshot
|
11
|
-
|
6
|
+
attr_accessor :time, :type, :cap_number, :cap_name, :message, :unknown, :team, :score, :value, :item, :role,
|
7
|
+
:length, :method, :player, :target, :healing, :ubercharge, :customkill, :weapon, :airshot
|
12
8
|
|
13
9
|
def self.time_format
|
14
|
-
@time_format ||= '%m/%d/%Y - %T'
|
10
|
+
@time_format ||= '%m/%d/%Y - %T'
|
15
11
|
end
|
16
12
|
|
17
13
|
def self.regex_time
|
18
|
-
@regex_time ||= 'L (?\'time\'.*):'
|
14
|
+
@regex_time ||= 'L (?\'time\'.*):'
|
19
15
|
end
|
20
16
|
|
21
17
|
def self.regex_player
|
22
|
-
@regex_player ||= '"(?\'player_nick\'.+)<(?\'player_uid\'\d+)><(?\'player_steamid\'(\[\S+\]|STEAM_\S+))><(?\'player_team\'Red|Blue|Spectator|TERRORIST|CT||)>"'
|
18
|
+
@regex_player ||= '"(?\'player_nick\'.+)<(?\'player_uid\'\d+)><(?\'player_steamid\'(\[\S+\]|STEAM_\S+))><(?\'player_team\'Red|Blue|Spectator|TERRORIST|CT||)>"'
|
23
19
|
end
|
24
20
|
|
25
21
|
def self.regex_target
|
26
|
-
@regex_target ||= '"(?\'target_nick\'.+)<(?\'target_uid\'\d+)><(?\'target_steamid\'(\[\S+\]|STEAM_\S+))><(?\'target_team\'Red|Blue|TERRORIST|CT)>"'
|
22
|
+
@regex_target ||= '"(?\'target_nick\'.+)<(?\'target_uid\'\d+)><(?\'target_steamid\'(\[\S+\]|STEAM_\S+))><(?\'target_team\'Red|Blue|TERRORIST|CT)>"'
|
27
23
|
end
|
28
24
|
|
29
25
|
def self.regex_cap
|
30
|
-
@regex_cap ||= '\(cp "(?\'cp_number\'\d+)"\) \(cpname "(?\'cp_name\'.\w*)'
|
26
|
+
@regex_cap ||= '\(cp "(?\'cp_number\'\d+)"\) \(cpname "(?\'cp_name\'.\w*)'
|
31
27
|
end
|
32
28
|
|
33
29
|
def self.regex_console
|
34
|
-
@regex_console ||= '"Console<0><Console><Console>"'
|
30
|
+
@regex_console ||= '"Console<0><Console><Console>"'
|
35
31
|
end
|
36
32
|
|
37
33
|
def self.regex_message
|
38
|
-
@regex_message ||= '"(?\'message\'.*)"'
|
34
|
+
@regex_message ||= '"(?\'message\'.*)"'
|
39
35
|
end
|
40
36
|
|
41
37
|
def self.types
|
42
|
-
#ordered by how common the messages are
|
38
|
+
# ordered by how common the messages are
|
43
39
|
@types ||= [Damage, Heal, PickupItem, Assist, Kill, CaptureBlock, PointCapture, ChargeDeployed,
|
44
40
|
MedicDeath, RoleChange, Spawn, Airshot, HeadshotDamage, Suicide, Say, TeamSay, Domination, Revenge, RoundWin, CurrentScore,
|
45
|
-
RoundLength, RoundStart, Connect, ConsoleSay, MatchEnd, FinalScore,
|
41
|
+
RoundLength, RoundStart, Connect, Disconnect, ConsoleSay, MatchEnd, FinalScore,
|
46
42
|
RoundStalemate, Unknown].freeze
|
47
43
|
end
|
48
44
|
|
@@ -55,8 +51,6 @@ module TF2LineParser
|
|
55
51
|
def parse_time(time_string)
|
56
52
|
Time.strptime(time_string, Event.time_format)
|
57
53
|
end
|
58
|
-
|
59
54
|
end
|
60
|
-
|
61
55
|
end
|
62
56
|
end
|
@@ -1,32 +1,28 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module TF2LineParser
|
3
4
|
module Events
|
4
|
-
|
5
5
|
class HeadshotDamage < Damage
|
6
|
-
|
7
6
|
def self.regex
|
8
7
|
@regex ||= /#{regex_time} #{regex_player} triggered "damage" #{regex_damage_against}\(damage "(?'value'\d+)"\)(?:( #{regex_realdamage})?( #{regex_weapon})?) #{regex_headshot}$/.freeze
|
9
8
|
end
|
10
9
|
|
11
10
|
def self.regex_headshot
|
12
|
-
@regex_headshot ||=
|
11
|
+
@regex_headshot ||= '\(headshot "(?\'headshot\'\d+)"\)'
|
13
12
|
end
|
14
13
|
|
15
14
|
def self.attributes
|
16
|
-
@attributes ||= [
|
15
|
+
@attributes ||= %i[time player_nick player_steamid player_team target_nick target_steamid
|
16
|
+
target_team value weapon]
|
17
17
|
end
|
18
18
|
|
19
19
|
def initialize(time, player_name, player_steamid, player_team, target_name, target_steamid, target_team, value, weapon)
|
20
20
|
@time = parse_time(time)
|
21
21
|
@player = Player.new(player_name, player_steamid, player_team)
|
22
|
-
if target_name
|
23
|
-
@target = Player.new(target_name, target_steamid, target_team)
|
24
|
-
end
|
22
|
+
@target = Player.new(target_name, target_steamid, target_team) if target_name
|
25
23
|
@value = value.to_i
|
26
24
|
@weapon = weapon
|
27
25
|
end
|
28
|
-
|
29
26
|
end
|
30
27
|
end
|
31
28
|
end
|
32
|
-
|
@@ -1,15 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module TF2LineParser
|
3
4
|
module Events
|
4
|
-
|
5
5
|
class Heal < Event
|
6
|
-
|
7
6
|
def self.regex
|
8
7
|
@regex ||= /#{regex_time} #{regex_player} triggered "healed" against #{regex_target} \(healing "(?'value'\d+)"\)/.freeze
|
9
8
|
end
|
10
9
|
|
11
10
|
def self.attributes
|
12
|
-
@attributes ||= [
|
11
|
+
@attributes ||= %i[time player_nick player_steamid player_team target_nick target_steamid
|
12
|
+
target_team value]
|
13
13
|
end
|
14
14
|
|
15
15
|
def initialize(time, player_name, player_steam_id, player_team, target_name, target_steam_id, target_team, value)
|
@@ -19,6 +19,5 @@ module TF2LineParser
|
|
19
19
|
@value = value.to_i
|
20
20
|
end
|
21
21
|
end
|
22
|
-
|
23
22
|
end
|
24
23
|
end
|
@@ -1,15 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module TF2LineParser
|
3
4
|
module Events
|
4
|
-
|
5
5
|
class Kill < PVPEvent
|
6
|
-
|
7
6
|
def self.regex
|
8
7
|
@regex ||= /#{regex_time} #{regex_player} killed #{regex_target} #{regex_weapon} #{regex_customkill}/.freeze
|
9
8
|
end
|
10
9
|
|
11
10
|
def self.regex_weapon
|
12
|
-
@regex_weapon ||= 'with "(?\'weapon\'\w*)"'
|
11
|
+
@regex_weapon ||= 'with "(?\'weapon\'\w*)"'
|
13
12
|
end
|
14
13
|
|
15
14
|
def self.regex_customkill
|
@@ -17,7 +16,8 @@ module TF2LineParser
|
|
17
16
|
end
|
18
17
|
|
19
18
|
def self.attributes
|
20
|
-
@attributes ||= [
|
19
|
+
@attributes ||= %i[time player_nick player_steamid player_team target_nick target_steamid
|
20
|
+
target_team weapon customkill]
|
21
21
|
end
|
22
22
|
|
23
23
|
def initialize(time, player_name, player_steam_id, player_team, target_name, target_steam_id, target_team, weapon, customkill)
|
@@ -27,8 +27,6 @@ module TF2LineParser
|
|
27
27
|
@weapon = weapon
|
28
28
|
@customkill = customkill
|
29
29
|
end
|
30
|
-
|
31
30
|
end
|
32
|
-
|
33
31
|
end
|
34
32
|
end
|
@@ -1,22 +1,19 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module TF2LineParser
|
3
4
|
module Events
|
4
|
-
|
5
5
|
class MatchEnd < RoundEventWithVariables
|
6
|
-
|
7
6
|
def self.round_variable_regex
|
8
7
|
@round_variable_regex ||= /reason "(?'reason'.*)"/.freeze
|
9
8
|
end
|
10
9
|
|
11
10
|
def self.round_type
|
12
|
-
|
11
|
+
'Game_Over'
|
13
12
|
end
|
14
13
|
|
15
14
|
def self.round_variable
|
16
15
|
@round_variable ||= :reason
|
17
16
|
end
|
18
|
-
|
19
17
|
end
|
20
|
-
|
21
18
|
end
|
22
19
|
end
|
@@ -1,19 +1,19 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module TF2LineParser
|
3
4
|
module Events
|
4
|
-
|
5
5
|
class MedicDeath < Event
|
6
|
-
|
7
6
|
def self.regex
|
8
7
|
@regex ||= /#{regex_time} #{regex_player} triggered "medic_death" against #{regex_target} #{regex_medic_death_info}/.freeze
|
9
8
|
end
|
10
9
|
|
11
10
|
def self.regex_medic_death_info
|
12
|
-
@regex_healing ||= '\(healing "(?\'healing\'\d+)"\) \(ubercharge "(?\'ubercharge\'\d+)"\)'
|
11
|
+
@regex_healing ||= '\(healing "(?\'healing\'\d+)"\) \(ubercharge "(?\'ubercharge\'\d+)"\)'
|
13
12
|
end
|
14
13
|
|
15
14
|
def self.attributes
|
16
|
-
@attributes ||= [
|
15
|
+
@attributes ||= %i[time player_nick player_steamid player_team target_nick target_steamid
|
16
|
+
target_team healing ubercharge]
|
17
17
|
end
|
18
18
|
|
19
19
|
def initialize(time, player_name, player_steam_id, player_team, target_name, target_steam_id, target_team, healing, ubercharge)
|
@@ -21,9 +21,8 @@ module TF2LineParser
|
|
21
21
|
@player = Player.new(player_name, player_steam_id, player_team)
|
22
22
|
@target = Player.new(target_name, target_steam_id, target_team)
|
23
23
|
@healing = healing.to_i
|
24
|
-
@ubercharge = (ubercharge ==
|
24
|
+
@ubercharge = (ubercharge == '1')
|
25
25
|
end
|
26
|
-
|
27
26
|
end
|
28
27
|
end
|
29
28
|
end
|
@@ -1,21 +1,19 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module TF2LineParser
|
3
4
|
module Events
|
4
|
-
|
5
5
|
class PickupItem < PlayerActionEvent
|
6
|
-
|
7
6
|
def self.action_text
|
8
|
-
@action_text ||=
|
7
|
+
@action_text ||= 'picked up item'
|
9
8
|
end
|
10
9
|
|
11
10
|
def self.regex_action
|
12
|
-
@regex_item ||= '\"(?\'item\'.*)\"'
|
11
|
+
@regex_item ||= '\"(?\'item\'.*)\"'
|
13
12
|
end
|
14
13
|
|
15
14
|
def self.item
|
16
15
|
:item
|
17
16
|
end
|
18
|
-
|
19
17
|
end
|
20
18
|
end
|
21
19
|
end
|