From bfc60e7a496b1352d168ea8a33c9efb5f4d789f8 Mon Sep 17 00:00:00 2001 From: ElTata <eltata@firemail.cc> Date: Wed, 8 Apr 2020 13:17:42 +0200 Subject: [PATCH] Remove warning 'isn't numeric' when comparing new legendary stuff --- Irpg/Event.pm | 79 ++++++++++++++++++++++++++++----------------------- 1 file changed, 43 insertions(+), 36 deletions(-) diff --git a/Irpg/Event.pm b/Irpg/Event.pm index 8440995..bd489c5 100644 --- a/Irpg/Event.pm +++ b/Irpg/Event.pm @@ -36,7 +36,8 @@ sub find_item { # find item for argument player $level = $rps->{$u}{class}->real_lvl($level); if ($rps->{$u}{level} >= 25 && rand(40) < 1) { $ulevel = $rps->{$u}{class}->real_lvl(50+int(rand(25))); - if ($ulevel >= $level && $ulevel > int($rps->{$u}{item}{helm})) { + $rps->{$u}{item}{helm} =~ m/(\d+)\D?/; + if ($ulevel >= $level && $ulevel > $1) { Irpg::Irc::notice("The light of the gods shines down upon you! You have ". "found the level $ulevel Mattt's Omniscience Grand Crown! ". "Your enemies fall before you as you anticipate their ". @@ -47,7 +48,8 @@ sub find_item { # find item for argument player } elsif ($rps->{$u}{level} >= 25 && rand(40) < 1) { $ulevel = $rps->{$u}{class}->real_lvl(50+int(rand(25))); - if ($ulevel >= $level && $ulevel > int($rps->{$u}{item}{ring})) { + $rps->{$u}{item}{ring} =~ m/(\d+)\D?/; + if ($ulevel >= $level && $ulevel > $1) { Irpg::Irc::notice("The light of the gods shines down upon you! You have ". "found the level $ulevel Juliet's Glorious Ring of ". "Sparkliness! You enemies are blinded by both its glory ". @@ -59,7 +61,8 @@ sub find_item { # find item for argument player } elsif ($rps->{$u}{level} >= 30 && rand(40) < 1) { $ulevel = $rps->{$u}{class}->real_lvl(75+int(rand(25))); - if ($ulevel >= $level && $ulevel > int($rps->{$u}{item}{tunic})) { + $rps->{$u}{item}{tunic} =~ m/(\d+)\D?/; + if ($ulevel >= $level && $ulevel > $1) { Irpg::Irc::notice("The light of the gods shines down upon you! You have ". "found the level $ulevel Res0's Protectorate Plate Mail! ". "Your enemies cower in fear as their attacks have no ". @@ -70,7 +73,8 @@ sub find_item { # find item for argument player } elsif ($rps->{$u}{level} >= 35 && rand(40) < 1) { $ulevel = $rps->{$u}{class}->real_lvl(100+int(rand(25))); - if ($ulevel >= $level && $ulevel > int($rps->{$u}{item}{amulet})) { + $rps->{$u}{item}{amulet} =~ m/(\d+)\D?/; + if ($ulevel >= $level && $ulevel > $1) { Irpg::Irc::notice("The light of the gods shines down upon you! You have ". "found the level $ulevel Dwyn's Storm Magic Amulet! Your ". "enemies are swept away by an elemental fury before the ". @@ -81,7 +85,8 @@ sub find_item { # find item for argument player } elsif ($rps->{$u}{level} >= 40 && rand(40) < 1) { $ulevel = $rps->{$u}{class}->real_lvl(150+int(rand(25))); - if ($ulevel >= $level && $ulevel > int($rps->{$u}{item}{weapon})) { + $rps->{$u}{item}{weapon} =~ m/(\d+)\D?/; + if ($ulevel >= $level && $ulevel > $1) { Irpg::Irc::notice("The light of the gods shines down upon you! You have ". "found the level $ulevel Jotun's Fury Colossal Sword! Your ". "enemies' hatred is brought to a quick end as you arc your ". @@ -92,7 +97,8 @@ sub find_item { # find item for argument player } elsif ($rps->{$u}{level} >= 45 && rand(40) < 1) { $ulevel = $rps->{$u}{class}->real_lvl(175+int(rand(26))); - if ($ulevel >= $level && $ulevel > int($rps->{$u}{item}{weapon})) { + $rps->{$u}{item}{weapon} =~ m/(\d+)\D?/; + if ($ulevel >= $level && $ulevel > $1) { Irpg::Irc::notice("The light of the gods shines down upon you! You have ". "found the level $ulevel Drdink's Cane of Blind Rage! Your ". "enemies are tossed aside as you blindly swing your arm ". @@ -103,8 +109,8 @@ sub find_item { # find item for argument player } elsif ($rps->{$u}{level} >= 48 && rand(40) < 1) { $ulevel = $rps->{$u}{class}->real_lvl(250+int(rand(51))); - if ($ulevel >= $level && $ulevel > - int($rps->{$u}{item}{"pair of boots"})) { + $rps->{$u}{item}{"pair of boots"} =~ m/(\d+)\D?/; + if ($ulevel >= $level && $ulevel > $1) { Irpg::Irc::notice("The light of the gods shines down upon you! You have ". "found the level $ulevel Mrquick's Magical Boots of ". "Swiftness! Your enemies are left choking on your dust as ". @@ -115,7 +121,8 @@ sub find_item { # find item for argument player } elsif ($rps->{$u}{level} >= 52 && rand(40) < 1) { $ulevel = $rps->{$u}{class}->real_lvl(300+int(rand(51))); - if ($ulevel >= $level && $ulevel > int($rps->{$u}{item}{weapon})) { + $rps->{$u}{item}{weapon} =~ m/(\d+)\D?/; + if ($ulevel >= $level && $ulevel > $1) { Irpg::Irc::notice("The light of the gods shines down upon you! You have ". "found the level $ulevel Jeff's Cluehammer of Doom! Your ". "enemies are left with a sudden and intense clarity of ". @@ -124,24 +131,24 @@ sub find_item { # find item for argument player return; } } - if ($level > int($rps->{$u}{item}{$type})) { + my ($iteml,) = $rps->{$u}{item}{$type} =~ m/(\d+)\D?/; + if ($level > $iteml) { Irpg::Irc::notice("You found a level $level $type! Your current $type is only ". - "level ".int($rps->{$u}{item}{$type}).", so it seems Luck is ". - "with you!",$rps->{$u}{nick}); + "level ".$iteml.", so it seems Luck is with you!", $rps->{$u}{nick}); $rps->{$u}{item}{$type} = $level; } else { Irpg::Irc::notice("You found a level $level $type. Your current $type is level ". - int($rps->{$u}{item}{$type}).", so it seems Luck is against you. ". - "You toss the $type.",$rps->{$u}{nick}); + $iteml.", so it seems Luck is against you. You toss the $type.", + $rps->{$u}{nick}); } } sub hog { # summon the hand of god - #my @players = grep { $rps->{$_}{online} } keys(%$rps); - #my $player = $players[rand(@players)]; - my $player = choose_player() || return; + #my @players = grep { $rps->{$_}{online} } keys(%$rps); + #my $player = $players[rand(@players)]; + my $player = choose_player() || return; my $win = int(rand(5)); my $time = int(((5 + int(rand(71)))/100) * $rps->{$player}{next}); if ($win) { @@ -167,7 +174,7 @@ sub choose_player { my @players = grep { $rps->{$_}{online} } keys(%$rps); return unless @players; - #sort players by group of same levels + #sort players by group of same levels my %levels = (); foreach (@players) { if (exists $levels{$rps->{$_}{level}}) { @@ -177,21 +184,21 @@ sub choose_player { $levels{$rps->{$_}{level}} = [$_,]; } } - @players = @levels{sort keys %levels}; + @players = @levels{sort keys %levels}; #exponential distribution on levels (lambda = 0.5) - my $rand_val = $#players+1; - $rand_val = int(-log(rand) / 0.5) while ($rand_val > $#players); - @players = @{$players[$rand_val]}; - #then uniform distribution for players of the same level - return $players[rand(@players)]; + my $rand_val = $#players+1; + $rand_val = int(-log(rand) / 0.5) while ($rand_val > $#players); + @players = @{$players[$rand_val]}; + #then uniform distribution for players of the same level + return $players[rand(@players)]; } sub calamity { # suffer a little one - #my @players = grep { $rps->{$_}{online} } keys(%$rps); + #my @players = grep { $rps->{$_}{online} } keys(%$rps); #return unless @players; #my $player = $players[rand(@players)]; - my $player = choose_player() || return; + my $player = choose_player() || return; if (rand(10) < 1) { my @items = ("amulet","charm","weapon","tunic","set of leggings", "shield"); @@ -260,10 +267,10 @@ sub calamity { # suffer a little one } sub godsend { # bless the unworthy - #my @players = grep { $rps->{$_}{online} } keys(%$rps); - #return unless @players; - #my $player = $players[rand(@players)]; - my $player = choose_player() || return; + #my @players = grep { $rps->{$_}{online} } keys(%$rps); + #return unless @players; + #my $player = $players[rand(@players)]; + my $player = choose_player() || return; if (rand(10) < 1) { my @items = ("amulet","charm","weapon","tunic","set of leggings", "shield"); @@ -342,19 +349,19 @@ sub evilness { "pair of gloves","set of leggings","shield", "pair of boots"); my $type = $items[rand(@items)]; - if (int($rps->{$target}{item}{$type}) > int($rps->{$me}{item}{$type})) { + my ($target_lvl,) = $rps->{$target}{item}{$type} =~ m/(\d+)\D?/; + my ($me_lvl,) = $rps->{$me}{item}{$type} =~ m/(\d+)\D?/; + if ($target_lvl > $me_lvl) { my $tempitem = $rps->{$me}{item}{$type}; $rps->{$me}{item}{$type} = $rps->{$target}{item}{$type}; $rps->{$target}{item}{$type} = $tempitem; Irpg::Irc::chanmsg(Irpg::Utils::clog( - "$me stole $target\'s level ". - int($rps->{$me}{item}{$type})." $type while ". + "$me stole $target\'s level $target_lvl $type while ". pronoun(1, $rps->{$target}{gender}). ($rps->{$target}{gender} eq 'n' ? " were " : " was "). "sleeping! $me leaves ". - pronoun(2, $rps->{$me}{gender})." old level ". - int($rps->{$target}{item}{$type})." $type behind, ". - "which $target then takes.")); + pronoun(2, $rps->{$me}{gender})." old level $me_lvl ". + "$type behind, which $target then takes.")); } else { Irpg::Irc::notice("You made to steal $target\'s $type, but realized it was ". -- GitLab