Bug fixes.
This commit is contained in:
1 parent
a9d6e3482b
commit
8ec0a389d5
1 file changed
+28
-10
+28
-10
@@ -7,7 +7,7 @@ use warnings;
|
||||
use feature qw(switch);
|
||||
use API::Std qw(cmd_add cmd_del trans hook_add hook_del timer_add timer_del trans conf_get has_priv match_user);
|
||||
use API::IRC qw(privmsg notice cmode);
|
||||
my ($GAME, $PGAME, $GAMECHAN, $GAMETIME, %PLAYERS, %NICKS, @STATIC, $PHASE, $SEEN, $VISIT, $GUARD, %KILL, %WKILL, %LYNCH, %SPOKE, %WARN, $LVOTEN, $SHOT, $BULLETS, $DETECTED);
|
||||
my ($GAME, $PGAME, $GAMECHAN, $GAMETIME, %PLAYERS, %NICKS, @STATIC, $PHASE, $SEEN, $VISIT, $GUARD, %KILL, %WKILL, %LYNCH, %SPOKE, %WARN, $LVOTEN, @SHOT, $BULLETS, $DETECTED);
|
||||
my $FCHAR = (conf_get('fantasy_pf'))[0][0];
|
||||
|
||||
# Initialization subroutine.
|
||||
@@ -322,7 +322,7 @@ sub cmd_wolf {
|
||||
}
|
||||
|
||||
# Check if they've been shot today.
|
||||
if ($SHOT eq lc $src->{nick}) {
|
||||
if (lc $src->{nick} ~~ @SHOT) {
|
||||
notice($src->{svr}, $src->{nick}, 'You\'re wounded and resting, thus you are unable to vote for the day.');
|
||||
return;
|
||||
}
|
||||
@@ -373,7 +373,7 @@ sub cmd_wolf {
|
||||
}
|
||||
|
||||
# Check if they've been shot today.
|
||||
if ($SHOT eq lc $src->{nick}) {
|
||||
if (lc $src->{nick} ~~ @SHOT) {
|
||||
notice($src->{svr}, $src->{nick}, 'You\'re wounded and resting, thus you are unable to vote for the day.');
|
||||
return;
|
||||
}
|
||||
@@ -440,7 +440,7 @@ sub cmd_wolf {
|
||||
privmsg($src->{svr}, $src->{chan}, "$src->{nick}: No votes yet.");
|
||||
}
|
||||
my $plyru = keys %PLAYERS;
|
||||
if ($SHOT) { $plyru-- }
|
||||
if (scalar @SHOT) { for (0..$#SHOT) { $plyru-- } }
|
||||
privmsg($src->{svr}, $src->{chan}, "$src->{nick}: \2".keys(%PLAYERS)."\2 players, \2$LVOTEN\2 votes required to lynch, \2$plyru\2 players available to vote.");
|
||||
}
|
||||
when ('SHOOT') {
|
||||
@@ -529,7 +529,7 @@ sub cmd_wolf {
|
||||
}
|
||||
default { # Only hurt.
|
||||
privmsg($src->{svr}, $src->{chan}, "\2$real\2 is a villager, and is hurt but will have a full recovery.");
|
||||
$SHOT = lc $real;
|
||||
push @SHOT, lc $real;
|
||||
# Delete any votes they might've made today.
|
||||
foreach my $plyr (keys %LYNCH) {
|
||||
if (exists $LYNCH{$plyr}{lc $real}) { delete $LYNCH{$plyr}{lc $real} }
|
||||
@@ -1148,7 +1148,8 @@ sub _init_day {
|
||||
privmsg($gsvr, $gchan, 'The villagers must now vote for who to lynch. Use "'.$FCHAR.$COMMANDS{lynch}.'" to cast your vote. '.$LVOTEN.' votes are required to lynch.');
|
||||
|
||||
# Clear variables.
|
||||
$SEEN = $GUARD = $VISIT = $SHOT = 0;
|
||||
$SEEN = $GUARD = $VISIT = 0;
|
||||
@SHOT = ();
|
||||
%KILL = ();
|
||||
%WKILL = ();
|
||||
|
||||
@@ -1246,6 +1247,8 @@ sub _chkbed {
|
||||
sub _getrole {
|
||||
my ($plyr, $lev) = @_;
|
||||
|
||||
if (!$plyr) { return 'person' }
|
||||
|
||||
my $role;
|
||||
if (exists $PLAYERS{$plyr}) {
|
||||
if ($lev == 1) {
|
||||
@@ -1293,7 +1296,13 @@ sub _player_del {
|
||||
}
|
||||
if ($VISIT) { if ($VISIT eq $player) { $VISIT = 0 } }
|
||||
if ($GUARD) { if ($GUARD eq $player) { $GUARD = 0 } }
|
||||
if ($SHOT) { if ($SHOT eq $player) { $SHOT = 0 } }
|
||||
if (scalar @SHOT) {
|
||||
for (0..$#SHOT) {
|
||||
if ($SHOT[$_] eq lc $player) {
|
||||
splice @SHOT, $_, 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($SEEN) { if ($SEEN eq $player) { $SEEN = 0 } }
|
||||
|
||||
# Update LVOTEN.
|
||||
@@ -1333,7 +1342,7 @@ sub _lynchmng {
|
||||
|
||||
# Now check if we have anyone who has enough votes for judgment.
|
||||
foreach my $acc (keys %LYNCH) {
|
||||
if (keys %{$LYNCH{$acc}} >= $LVOTEN) { _judgment($acc) }
|
||||
if (keys %{$LYNCH{$acc}} >= $LVOTEN) { _judgment($acc); last }
|
||||
}
|
||||
|
||||
return 1;
|
||||
@@ -1380,7 +1389,7 @@ sub _gameover {
|
||||
# Clear all variables.
|
||||
if ($PHASE) { if ($PHASE eq 'n') { timer_del('werewolf.goto_daytime') } }
|
||||
timer_del('werewolf.chkbed');
|
||||
$GAME = $PGAME = $GAMECHAN = $GAMETIME = $PHASE = $SEEN = $VISIT = $GUARD = $LVOTEN = $SHOT = $BULLETS = $DETECTED = 0;
|
||||
$GAME = $PGAME = $GAMECHAN = $GAMETIME = $PHASE = $SEEN = $VISIT = $GUARD = $LVOTEN = $BULLETS = $DETECTED = 0;
|
||||
%PLAYERS = ();
|
||||
%NICKS = ();
|
||||
%KILL = ();
|
||||
@@ -1389,6 +1398,7 @@ sub _gameover {
|
||||
%SPOKE = ();
|
||||
%WARN = ();
|
||||
@STATIC = ();
|
||||
@SHOT = ();
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -1464,6 +1474,14 @@ sub on_nick {
|
||||
delete $SPOKE{lc $src->{nick}};
|
||||
delete $WARN{lc $src->{nick}};
|
||||
if ($SHOT) { if ($SHOT eq lc $src->{nick}) { $SHOT = $new } }
|
||||
if (scalar @SHOT) {
|
||||
for (0..$#SHOT) {
|
||||
if ($SHOT[$_] eq lc $src->{nick}) {
|
||||
splice @SHOT, $_, 1;
|
||||
push @SHOT, $new;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($GUARD) { if ($GUARD eq lc $src->{nick}) { $GUARD = $new } }
|
||||
if ($VISIT) { if ($VISIT eq lc $src->{nick}) { $VISIT = $new } }
|
||||
if (exists $KILL{lc $src->{nick}}) {
|
||||
@@ -1480,7 +1498,7 @@ sub on_nick {
|
||||
}
|
||||
while (my ($accu, $ser) = each %LYNCH) {
|
||||
if ($ser eq lc $src->{nick}) {
|
||||
$LYNCH{$accu}{$ser} = 1;
|
||||
$LYNCH{$accu}{$new} = 1;
|
||||
delete $LYNCH{$accu}{lc $src->{nick}};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user