kag-gather 1.3.4 → 1.3.5

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.
data/lib/kag/match.rb DELETED
@@ -1,158 +0,0 @@
1
- require 'cinch'
2
- require 'symboltable'
3
- require 'kag/config'
4
- require 'kag/team'
5
-
6
- module KAG
7
- class Match < SymbolTable
8
-
9
- def self.type_as_string
10
- ms = KAG::Config.instance[:match_size].to_i
11
- ts = (ms / 2).ceil
12
- "#{ts.to_s}v#{ts.to_s} #{KAG::Config.instance[:match_type]}"
13
- end
14
-
15
- def setup_teams
16
- self[:players].shuffle!
17
- match_size = KAG::Config.instance[:match_size].to_i
18
- match_size = 2 if match_size < 2
19
-
20
- lb = (match_size / 2).ceil.to_i
21
- lb = 1 if lb < 1
22
-
23
- debug "MATCH SIZE #{match_size.to_s}"
24
- debug "LOWER BOUND: #{lb.to_s}"
25
- debug "PLAYERS: #{self[:players].join(",")}"
26
-
27
- self[:teams] = []
28
- self[:teams] << KAG::Team.new({
29
- :players => self[:players].slice(0,lb),
30
- :match => self,
31
- :color => "\x0312",
32
- :name => "Blue"
33
- }).setup
34
- self[:teams] << KAG::Team.new({
35
- :players => self[:players].slice(lb,match_size),
36
- :match => self,
37
- :color => "\x0304",
38
- :name => "Red"
39
- }).setup
40
- self[:teams]
41
- end
42
-
43
- def start
44
- self[:end_votes] = 0 unless self[:end_votes]
45
- self[:subs_needed] = []
46
- setup_teams
47
- restart_map
48
- end
49
-
50
- def text_for_match_start
51
- msg = "MATCH: #{KAG::Match.type_as_string} - "
52
- self[:teams].each do |team|
53
- msg = msg+" "+team.text_for_match_start
54
- end
55
- msg+" \x0301(!end when done)"
56
- end
57
-
58
- def notify_teams_of_match_start
59
- messages = {}
60
- self[:teams].each do |t|
61
- ms = t.notify_of_match_start
62
- ms.each do |nick,msg|
63
- messages[nick] = msg
64
- end
65
- end
66
- messages
67
- end
68
-
69
- def add_end_vote
70
- self[:end_votes] = 0 unless self[:end_votes] > 0
71
- self[:end_votes] = self[:end_votes] + 1
72
- end
73
-
74
- def voted_to_end?
75
- evt = KAG::Config.instance[:end_vote_threshold].to_i
76
- evt = 3 if evt < 1
77
- self[:end_votes] >= evt
78
- end
79
-
80
- def get_needed_end_votes_left
81
- evt = KAG::Config.instance[:end_vote_threshold].to_i
82
- evt - self[:end_votes]
83
- end
84
-
85
- def has_player?(nick)
86
- playing = false
87
- self[:teams].each do |team|
88
- playing = true if team.has_player?(nick)
89
- end
90
- playing
91
- end
92
-
93
- def cease
94
- if self.server
95
- if self.server.has_rcon?
96
- self[:teams].each do |team|
97
- team.kick_all
98
- end
99
- else
100
- debug "NO RCON, so could not kick!"
101
- end
102
- self.server.disconnect
103
- self.server.delete(:match)
104
- true
105
- else
106
- debug "No server for match defined!"
107
- false
108
- end
109
- end
110
-
111
- def restart_map
112
- if self.server.has_rcon?
113
- self.server.restart_map
114
- else
115
- debug "Cannot restart map, no RCON defined"
116
- end
117
- end
118
-
119
- def remove_player(nick)
120
- sub = false
121
- self[:teams].each do |team|
122
- if team.has_player?(nick)
123
- sub = team.remove_player(nick)
124
- end
125
- end
126
- if sub
127
- self[:subs_needed] << sub
128
- end
129
- sub
130
- end
131
-
132
- def needs_sub?
133
- self[:subs_needed].length > 0
134
- end
135
-
136
- def sub_in(nick)
137
- placement = false
138
- if needs_sub?
139
- placement = self[:subs_needed].shift
140
- end
141
- placement
142
- end
143
-
144
- def rename_player(last_nick,new_nick)
145
- self[:teams].each do |team|
146
- if team.has_player?(last_nick)
147
- team.rename_player(last_nick,new_nick)
148
- end
149
- end
150
- end
151
-
152
- def debug(msg)
153
- if KAG::Config.instance[:debug]
154
- puts msg
155
- end
156
- end
157
- end
158
- end
data/lib/kag/report.rb DELETED
@@ -1,146 +0,0 @@
1
- require 'symboltable'
2
- require 'kag/data'
3
- require 'kag/config'
4
-
5
- module KAG
6
- class Report < SymbolTable
7
-
8
- def initialize(gather,m,user)
9
- hash = {
10
- :nick => user.nick,
11
- :authname => user.authname,
12
- :host => user.host,
13
- :realname => user.realname,
14
- :gather => gather,
15
- :message => m,
16
- :count => 1
17
- }
18
- super(hash)
19
- _ensure_data
20
- if reported?
21
- if can_report?
22
- if past_threshold?
23
- ignore
24
- else
25
- up_report_count
26
- end
27
- else
28
- self.gather.reply self.message,"You have already reported #{self[:nick]}. You can only report a user once."
29
- end
30
- else
31
- report
32
- end
33
- end
34
-
35
- def can_report?
36
- r = _report
37
- if r and r[:reporters]
38
- !r[:reporters].include?(self.message.user.authname)
39
- else
40
- true
41
- end
42
- end
43
-
44
- def _ensure_data
45
- data[:reported] = {} unless data[:reported]
46
- data[:ignored] = {} unless data[:ignored]
47
- end
48
-
49
- def reported?
50
- data[:reported].key?(self[:host].to_sym)
51
- end
52
-
53
- def report
54
- puts self.message.inspect
55
- c = self.dup
56
- c.delete(:gather)
57
- c.delete(:message)
58
- c[:reporters] = [self.message.user.authname]
59
- data[:reported][self[:host].to_sym] = c
60
- data.save
61
-
62
- self.gather.reply self.message,"User #{self[:nick]} reported." if self.gather.class == KAG::Gather
63
- end
64
-
65
- def ignore
66
- c = self.clone
67
- c.delete(:gather)
68
- c.delete(:message)
69
- data[:ignored][self[:host].to_sym] = c
70
- data.save
71
- self.gather.reply self.message,"User #{self[:nick]} ignored." if self.gather.class == KAG::Gather
72
- end
73
-
74
- def past_threshold?
75
- _report[:count].to_i > KAG::Config.instance[:report_threshold].to_i
76
- end
77
-
78
- def up_report_count
79
- _report[:count] = _report[:count].to_i + 1
80
- _report[:reporters] = [] unless _report[:reporters]
81
- _report[:reporters] << self.message.user.authname
82
- data.save
83
-
84
- self.gather.reply message,"User #{self[:nick]} reported. #{self[:nick]} has now been reported #{data[:reported][self[:host].to_sym][:count]} times." if self.gather.class == KAG::Gather
85
- end
86
-
87
- def self.ignore(gather,message,user)
88
- KAG::Config.data[:ignored] = {} unless KAG::Config.data[:ignored]
89
- if KAG::Config.data[:ignored] and !KAG::Config.data[:ignored].key?(user.host.to_sym)
90
- c = SymbolTable.new({
91
- :nick => user.nick,
92
- :authname => user.authname,
93
- :host => user.host,
94
- :realname => user.realname,
95
- :gather => gather,
96
- :message => message,
97
- :reporters => [message.user.authname]
98
- })
99
- KAG::Config.data[:ignored][user.host.to_sym] = c
100
- KAG::Config.data.save
101
-
102
- gather.reply message,"User #{user.nick} added to ignore list." if gather.class == KAG::Gather
103
- true
104
- else
105
- gather.reply message,"User #{user.nick} already in ignore list!" if gather.class == KAG::Gather
106
- false
107
- end
108
- end
109
-
110
- def self.remove(gather,message,user)
111
- if KAG::Config.data[:reported] and KAG::Config.data[:reported].key?(user.host.to_sym)
112
- KAG::Config.data[:reported].delete(user.host.to_sym)
113
- KAG::Config.data.save
114
-
115
- gather.reply message,"User #{user.nick} removed from report list." if gather.class == KAG::Gather
116
- true
117
- else
118
- gather.reply message,"User #{user.nick} not in report list!" if gather.class == KAG::Gather
119
- false
120
- end
121
- end
122
-
123
- def self.unignore(gather,message,user)
124
- if KAG::Config.data[:ignored] and KAG::Config.data[:ignored].key?(user.host.to_sym)
125
- KAG::Config.data[:ignored].delete(user.host.to_sym)
126
- KAG::Config.data.save
127
-
128
- gather.reply message,"User #{user.nick} removed from ignore list." if gather.class == KAG::Gather
129
- true
130
- else
131
- gather.reply message,"User #{user.nick} not in ignore list!" if gather.class == KAG::Gather
132
- false
133
- end
134
- end
135
-
136
- protected
137
-
138
- def data
139
- KAG::Config.data
140
- end
141
-
142
- def _report
143
- data[:reported][self[:host].to_sym]
144
- end
145
- end
146
- end
data/lib/kag/team.rb DELETED
@@ -1,82 +0,0 @@
1
- require 'cinch'
2
- require 'cinch/user'
3
- require 'symboltable'
4
- require 'kag/config'
5
-
6
- module KAG
7
- class Team < SymbolTable
8
-
9
- def setup
10
- setup_classes
11
- self
12
- end
13
-
14
- def setup_classes
15
- classes = KAG::Config.instance[:classes].clone
16
- classes.shuffle!
17
- players = self[:players].clone
18
- self[:players] = {}
19
- players.each do |p|
20
- self[:players][p.to_sym] = classes.shift
21
- end
22
- self
23
- end
24
-
25
- def notify_of_match_start
26
- server = self.match.server
27
- msg = "Join \x0305#{server[:key]} - #{server[:ip]}:#{server[:port]} \x0306password #{server[:password]}\x0301 | Visit kag://#{server[:ip]}/#{server[:password]} | "
28
- msg = msg + " \x0303Class: " if KAG::Config.instance[:pick_classes]
29
-
30
- messages = {}
31
- self[:players].each do |nick,cls|
32
- player_msg = msg.clone
33
- player_msg = player_msg+cls if KAG::Config.instance[:pick_classes] and cls and !cls.empty?
34
- player_msg = player_msg+" #{self[:color]}#{self[:name]} with: #{self[:players].keys.join(", ")}"
35
- messages[nick] = player_msg
36
- end
37
- messages
38
- end
39
-
40
- def text_for_match_start
41
- "#{self[:color]}#{self[:players].keys.join(", ")} (#{self[:name]})"
42
- end
43
-
44
- def has_player?(nick)
45
- self[:players].keys.include?(nick.to_sym)
46
- end
47
-
48
- def rename_player(last_nick,new_nick)
49
- if has_player?(nick)
50
- cls = self[:players][last_nick.to_sym]
51
- self[:players].delete(last_nick.to_sym)
52
- self[:players][new_nick.to_sym] = cls
53
- end
54
- end
55
-
56
- def remove_player(nick)
57
- if has_player?(nick)
58
- sub = {}
59
- sub[:cls] = self[:players][nick]
60
- sub[:team] = self.clone
61
- sub[:msg] = "Sub needed at #{self.match.server[:ip]} for #{sub[:team][:name]}, #{sub[:cls]} Class! Type !sub to claim it!"
62
- sub[:channel_msg] = "#{nick} is now subbing in for #{self[:name]} at #{self.match.server[:key]}. Subs still needed: #{self.match[:subs_needed].length}"
63
- sub[:private_msg] = "Please #{self.match.server.text_join} | #{sub[:cls]} on the #{self[:name]} Team"
64
- self[:players].delete(nick)
65
-
66
- if self.match and self.match.server
67
- self.match.server.kick(nick)
68
- end
69
-
70
- sub
71
- else
72
- false
73
- end
74
- end
75
-
76
- def kick_all
77
- self[:players].each do |nick,cls|
78
- self.match.server.kick(nick.to_s)
79
- end
80
- end
81
- end
82
- end