--- deliantra/Deliantra/Deliantra.pm 2007/12/26 18:26:15 1.120 +++ deliantra/Deliantra/Deliantra.pm 2009/09/02 22:38:57 1.132 @@ -6,9 +6,9 @@ package Deliantra; -our $VERSION = '1.14'; +our $VERSION = '1.25'; -use strict; +use common::sense; use base 'Exporter'; @@ -26,11 +26,7 @@ use JSON::XS qw(decode_json encode_json); -our $LIB = $ENV{DELIANTRA_LIBDIR} || $ENV{CROSSFIRE_LIBDIR}; - -our $OLDDIR = $ENV{HOME} ? "$ENV{HOME}/.crossfire" - : $ENV{AppData} ? "$ENV{APPDATA}/crossfire" - : File::Spec->tmpdir . "/crossfire"; +our $LIB = $ENV{DELIANTRA_LIBDIR}; our $VARDIR = $ENV{HOME} ? "$ENV{HOME}/.deliantra" : $ENV{AppData} ? "$ENV{APPDATA}/deliantra" @@ -75,7 +71,7 @@ name name_pl custom_name attach title race slaying skill msg lore other_arch - face animation is_animated + sound sound_destroy face animation is_animated magicmap smoothlevel smoothface str dex con wis pow cha int hp maxhp sp maxsp grace maxgrace @@ -157,7 +153,7 @@ all => MOVE_ALL, ); -our @MOVE_TYPE = keys %MOVE_TYPE; +our @MOVE_TYPE = qw(all walk flying fly_low fly_high swim boat ship); { package Deliantra::MoveType; @@ -188,6 +184,10 @@ 'eq' => sub { "$_[0]" eq "$_[1]" }, 'ne' => sub { "$_[0]" ne "$_[1]" }, ; + + sub TO_JSON { + $_[0][0] + } } sub Deliantra::MoveType::new { @@ -437,6 +437,8 @@ normalize_object $ob; + return if $ob->{_atype} eq "object"; + my $arch = $ARCH{$ob->{_name}} or (warn "$ob->{_name}: no such archetype", return $ob); @@ -490,7 +492,7 @@ sub attr_freeze($) { my ($ob) = @_; - $ob->{attach} = Deliantra::encode_json $ob->{attach} + $ob->{attach} = JSON::XS->new->utf8->canonical->encode ($ob->{attach}) if exists $ob->{attach}; $ob @@ -520,7 +522,7 @@ my ($more, $prev); my $comment; - open my $fh, "<:raw:perlio:utf8", $path + open my $fh, "<:utf8", $path or Carp::croak "$path: $!"; # binmode $fh;