tf2_line_parser 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|