X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=data%2Frbot%2Fplugins%2Fgames%2Fwheelfortune.rb;h=20213e5d6c674a0808934e7eaf3a6d084397eb50;hb=452e323bfdb73d6b93ab96f5fc417891e4aa8f53;hp=e0b0930d93528d3d0e6f0295b17307351b267e92;hpb=1722101fb54bbb6a69940c80bddaa6dd0a47586d;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/data/rbot/plugins/games/wheelfortune.rb b/data/rbot/plugins/games/wheelfortune.rb index e0b0930d..20213e5d 100644 --- a/data/rbot/plugins/games/wheelfortune.rb +++ b/data/rbot/plugins/games/wheelfortune.rb @@ -11,10 +11,16 @@ class WoFQA attr_accessor :cat, :clue, :hint attr_reader :answer + attr_accessor :guessed def initialize(cat, clue, ans=nil) @cat = cat # category @clue = clue # clue phrase self.answer = ans + @guessed = false + end + + def guessed? + @guessed end def catclue @@ -149,6 +155,10 @@ class WoFGame end end + def mark_guessed(qa) + qa.guessed = true + end + def mark_winner(user) @running = false k = user.botuser @@ -259,9 +269,9 @@ class WheelOfFortune < Plugin end name = p[:name].to_s if name.empty? - name = m.source.get_botdata("wheelfortune.game_name") || @bot.config['wheelfortune.game_name'] + name = @registry["game_name_#{m.source.to_s}"] || @bot.config['wheelfortune.game_name'] else - m.source.set_botdata("wheelfortune.game_name", name.dup) + @registry["game_name_#{m.source.to_s}"] = name end @games[ch] = game = WoFGame.new(name, m.botuser, p[:single], p[:max]) @bot.say chan, _("%{who} just created a new %{name} game to %{max} points (%{single} per question, %{price} per vowel)") % { @@ -331,7 +341,7 @@ class WheelOfFortune < Plugin :name => game.name, :count => game.length } - announce(m, p.merge({ :next => true }) ) unless game.running? + announce(m, p) unless game.running? else m.reply _("something went wrong, I can't seem to understand what you're trying to set up") if clue.empty? end @@ -374,6 +384,7 @@ class WheelOfFortune < Plugin :chan => p[:chan] } end + return end cat = p[:cat].to_s @@ -416,7 +427,10 @@ class WheelOfFortune < Plugin return end game = @games[ch] - qa = p[:next] ? game.next : game.current + qa = game.current + if !qa or qa.guessed? + qa = game.next + end if !qa m.reply _("there are no %{name} questions for %{chan}, I'm waiting for %{who} to add them") % { :name => game.name, @@ -462,9 +476,7 @@ class WheelOfFortune < Plugin # m.reply "STUPID! YOU SO STUPID!" return when *game.must_buy - m.nickreply _("You must buy the %{vowel}") % { - :vowel => check - } + m.reply _("You must buy the %{vowel}") % {:vowel => check}, :nick => true when :wrong return when Numeric, :missing @@ -472,6 +484,7 @@ class WheelOfFortune < Plugin # TODO what happens when the last hint reveals the whole answer? announce(m) when :gotit + game.mark_guessed(game.current) want_more = game.mark_winner(m.source) m.reply _("%{who} got it! The answer was: %{ans}") % { :who => m.sourcenick, @@ -498,7 +511,7 @@ class WheelOfFortune < Plugin :nocolor => Irc.color() } score_table(m.channel, game) - announce(m, :next => true) + announce(m) end else # can this happen? @@ -511,6 +524,7 @@ class WheelOfFortune < Plugin ch = m.channel.irc_downcase(m.server.casemap).intern return unless game = @games[ch] return unless game.running? + return unless game.current and not game.current.guessed? check = game.check(m.message, :buy => false) react_on_check(m, ch, game, check) end