kag-gather 1.3.4 → 1.3.5

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