--- deliantra/Deliantra-Client/DC/Protocol.pm 2007/08/22 16:52:34 1.161 +++ deliantra/Deliantra-Client/DC/Protocol.pm 2007/08/22 21:14:06 1.162 @@ -480,7 +480,14 @@ my $sktbl = $::STATWIDS->{skill_tbl}; my @skills = keys %{ $self->{skill_info} }; - if (grep +(exists $stats->{$_}) != (exists $prev->{$_}), @skills) { + my @order = sort { $stats->{$b->[0]}[1] <=> $stats->{$a->[0]}[1] or $a->[1] cmp $b->[1] } + map [$_, $self->{skill_info}{$_}], + grep exists $stats->{$_}, + @skills; + + if ($self->{stat_order} ne join ",", map $_->[0], @order) { + $self->{stat_order} = join ",", map $_->[0], @order; + $sktbl->clear; my $sw = $self->{skillwid}{""} ||= [ @@ -502,12 +509,7 @@ my @TOOLTIP_EXP = (tooltip => "Experience. The experience points you have in this skill.$TOOLTIP_ALL", can_events => 1, can_hover => 1); my ($x, $y) = (0, 1); - for ( - sort { $stats->{$b->[0]}[1] <=> $stats->{$a->[0]}[1] or $a->[1] cmp $b->[1] } - map [$_, $self->{skill_info}{$_}], - grep exists $stats->{$_}, - @skills - ) { + for (@order) { my ($idx, $name) = @$_; my $spell_cb = sub { @@ -563,6 +565,8 @@ } for (grep exists $stats->{$_}, @skills) { + next if $prev->{$_} == $stats->{$_}; + my $sw = $self->{skillwid}{$_}; $sw->[0]->set_text (::formsep ($stats->{$_}[1])); $sw->[1]->set_text ($stats->{$_}[0] * 1);