mirror of
https://github.com/pragma-/pbot.git
synced 2025-02-17 05:50:56 +01:00
Add quickest-correct-streak logic to CJeopardy answer module
Todo: Add to `rank`, `scores`, and `reset`.
This commit is contained in:
parent
5908a74570
commit
51d8a136ce
@ -49,7 +49,12 @@ CREATE TABLE IF NOT EXISTS Scores (
|
|||||||
lifetime_hints INTEGER DEFAULT 0,
|
lifetime_hints INTEGER DEFAULT 0,
|
||||||
last_wrong_timestamp NUMERIC DEFAULT 0,
|
last_wrong_timestamp NUMERIC DEFAULT 0,
|
||||||
last_correct_timestamp NUMERIC DEFAULT 0,
|
last_correct_timestamp NUMERIC DEFAULT 0,
|
||||||
quickest_correct NUMERIC DEFAULT 0
|
quickest_correct NUMERIC DEFAULT 0,
|
||||||
|
correct_streak_timestamp NUMERIC DEFAULT 0,
|
||||||
|
highest_quick_correct_streak INTEGER DEFAULT 0,
|
||||||
|
quickest_correct_streak NUMERIC DEFAULT 0,
|
||||||
|
lifetime_highest_quick_correct_streak INTEGER_DEFAULT 0,
|
||||||
|
lifetime_quickest_correct_streak NUMERIC DEFAULT 0
|
||||||
)
|
)
|
||||||
SQL
|
SQL
|
||||||
};
|
};
|
||||||
|
@ -98,6 +98,7 @@ if (defined $ret) {
|
|||||||
my $elapsed = scalar gettimeofday - $last_timestamp;
|
my $elapsed = scalar gettimeofday - $last_timestamp;
|
||||||
my $duration;
|
my $duration;
|
||||||
if ($elapsed < 2) {
|
if ($elapsed < 2) {
|
||||||
|
$elapsed = 0.01 if $elapsed <= 0.01;
|
||||||
$duration = sprintf("%.2f", $elapsed);
|
$duration = sprintf("%.2f", $elapsed);
|
||||||
} else {
|
} else {
|
||||||
$duration = sprintf("%d", $elapsed);
|
$duration = sprintf("%d", $elapsed);
|
||||||
@ -207,6 +208,30 @@ foreach my $answer (@valid_answers) {
|
|||||||
$player_data->{lifetime_highest_correct_streak} = $player_data->{highest_correct_streak};
|
$player_data->{lifetime_highest_correct_streak} = $player_data->{highest_correct_streak};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($player_data->{correct_streak} == 1) {
|
||||||
|
$player_data->{correct_streak_timestamp} = scalar gettimeofday;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $dont_print_streak = 0;
|
||||||
|
|
||||||
|
if (($player_data->{correct_streak} > $player_data->{highest_quick_correct_streak})
|
||||||
|
or ($player_data->{correct_streak} == $player_data->{highest_quick_correct_streak}
|
||||||
|
and (gettimeofday - $player_data->{correct_streak_timestamp} < $player_data->{quickest_correct_streak}))) {
|
||||||
|
$player_data->{highest_quick_correct_streak} = $player_data->{correct_streak};
|
||||||
|
$player_data->{quickest_correct_streak} = gettimeofday - $player_data->{correct_streak_timestamp};
|
||||||
|
|
||||||
|
if ($player_data->{highest_quick_correct_streak} > $player_data->{lifetime_highest_quick_correct_streak}) {
|
||||||
|
$player_data->{lifetime_highest_quick_correct_streak} = $player_data->{highest_quick_correct_streak};
|
||||||
|
$player_data->{lifetime_quickest_correct_streak} = $player_data->{quickest_correct_streak};
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($player_data->{highest_quick_correct_streak} >= 3) {
|
||||||
|
print "$color{orange}$nick$color{cyan} just set a new personal quickest correct answer streak of $color{orange}$player_data->{highest_quick_correct_streak} $color{cyan}correct answers in $color{orange}", duration($player_data->{quickest_correct_streak}), "$color{cyan}!$color{reset}\n";
|
||||||
|
$dont_print_streak = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
unless ($dont_print_streak) {
|
||||||
my %streaks = (
|
my %streaks = (
|
||||||
3 => "$color{orange}$nick$color{cyan} is on a $color{orange}3$color{cyan} correct answer streak!",
|
3 => "$color{orange}$nick$color{cyan} is on a $color{orange}3$color{cyan} correct answer streak!",
|
||||||
4 => "$color{orange}$nick$color{cyan} is hot with a $color{orange}4$color{cyan} correct answer streak!",
|
4 => "$color{orange}$nick$color{cyan} is hot with a $color{orange}4$color{cyan} correct answer streak!",
|
||||||
@ -221,7 +246,8 @@ foreach my $answer (@valid_answers) {
|
|||||||
if (exists $streaks{$player_data->{correct_streak}}) {
|
if (exists $streaks{$player_data->{correct_streak}}) {
|
||||||
print "$streaks{$player_data->{correct_streak}}$color{reset}\n";
|
print "$streaks{$player_data->{correct_streak}}$color{reset}\n";
|
||||||
} elsif ($player_data->{correct_streak} > 10) {
|
} elsif ($player_data->{correct_streak} > 10) {
|
||||||
print "$color{orange}$nick$color{cyan} IS UNTOUCHABLE WITH A $color{orange}$player_data->{correct_streak}$color{cyan} CORRECT ANSWER STREAK$color{reset}\n";
|
print "$color{orange}$nick$color{cyan} IS UNTOUCHABLE WITH A $color{orange}$player_data->{correct_streak}$color{cyan} CORRECT ANSWER STREAK!$color{reset}\n";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$scores->update_player_data($player_id, $player_data);
|
$scores->update_player_data($player_id, $player_data);
|
||||||
@ -241,7 +267,7 @@ foreach my $answer (@valid_answers) {
|
|||||||
my $question = `./cjeopardy.pl $channel`;
|
my $question = `./cjeopardy.pl $channel`;
|
||||||
|
|
||||||
if ($hint_only_mode) {
|
if ($hint_only_mode) {
|
||||||
my $hint = `./cjeopardy_hint.pl $channel`;
|
my $hint = `./cjeopardy_hint.pl candide $channel`;
|
||||||
$hint =~ s/^Hint: //;
|
$hint =~ s/^Hint: //;
|
||||||
print "Next hint: $hint\n";
|
print "Next hint: $hint\n";
|
||||||
} else {
|
} else {
|
||||||
@ -286,22 +312,14 @@ if ($player_data->{highest_wrong_streak} > $player_data->{lifetime_highest_wrong
|
|||||||
$player_data->{lifetime_highest_wrong_streak} = $player_data->{highest_wrong_streak};
|
$player_data->{lifetime_highest_wrong_streak} = $player_data->{highest_wrong_streak};
|
||||||
}
|
}
|
||||||
|
|
||||||
=cut
|
|
||||||
my %streaks = (
|
my %streaks = (
|
||||||
3 => "$color{red}Guessing, are we, $color{orange}$nick$color{red}?",
|
5 => "Guessing, are we, $nick?",
|
||||||
4 => "$color{red}Please use better guesses, $color{orange}$nick!",
|
7 => "Think of your correct/incorrect ratio! Use a hint, $nick!",
|
||||||
5 => "$color{red}Are you even trying, $color{orange}$nick$color{red}?!",
|
|
||||||
6 => "$color{red}Try a little bit harder, $color{orange}$nick$color{red}.",
|
|
||||||
7 => "$color{red}Maybe you should go look it up, $color{orange}$nick$color{red}.",
|
|
||||||
8 => "$color{red}For fuck's sake, go look it up already, $color{orange}$nick$color{red}!",
|
|
||||||
9 => "$color{red}Are you sure you weren't dropped on your head, $color{orange}$nick$color{red}?",
|
|
||||||
10 => "$color{red}Have you been checked for mental retardation yet, $color{orange}$nick$color{red}?"
|
|
||||||
);
|
);
|
||||||
|
|
||||||
if (exists $streaks{$player_data->{wrong_streak}}) {
|
if (exists $streaks{$player_data->{wrong_streak}}) {
|
||||||
print "$streaks{$player_data->{wrong_streak}}$color{reset}\n";
|
print "$streaks{$player_data->{wrong_streak}}$color{reset}\n";
|
||||||
}
|
}
|
||||||
=cut
|
|
||||||
|
|
||||||
$scores->update_player_data($player_id, $player_data);
|
$scores->update_player_data($player_id, $player_data);
|
||||||
$scores->end;
|
$scores->end;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user