--- deliantra/Deliantra-Client/DC/Protocol.pm 2006/07/03 22:04:25 1.52 +++ deliantra/Deliantra-Client/DC/Protocol.pm 2006/07/03 22:32:52 1.53 @@ -86,25 +86,24 @@ } sub _stat_numdiff { - my ($old, $new) = @_; + my ($self, $old, $new) = @_; my $diff = $new - $old; $diff > 0 ? "+$diff" : $diff } sub _stat_skillmaskdiff { - my ($old, $new) = @_; + my ($self, $old, $new) = @_; - my @diff; + my $diff = $old ^ $new; - my $changed = $old ^ $new; - - my @diff = map { - $changed & (1<<$_) - ? (($new & (1<<$_) ? "+" : "-") . "skill$_") - : () - } - 0 .. 31; # TODO + my @diff = map + { + $diff & $_ + ? (($new & $_ ? "+" : "-") . $self->{spell_paths}{$_}) + : () + } + sort { $a <=> $b } keys %{$self->{spell_paths}}; join "", @diff } @@ -161,7 +160,7 @@ if ( my @diffs = map { $stats->{$_->[0]} != $prev->{$_->[0]} - ? $_->[2] . $_->[1]->($prev->{$_->[0]}, $stats->{$_->[0]}) : (); + ? $_->[2] . $_->[1]->($self, $prev->{$_->[0]}, $stats->{$_->[0]}) : (); } @statchange ) {