… | |
… | |
53 | } |
53 | } |
54 | |
54 | |
55 | sub enter_map { |
55 | sub enter_map { |
56 | my ($pl) = @_; |
56 | my ($pl) = @_; |
57 | |
57 | |
|
|
58 | my $ob = $pl->ob; |
|
|
59 | |
58 | my ($map, $x, $y) |
60 | my ($map, $x, $y) |
59 | = $pl->ob->{_link_pos} |
61 | = $ob->{_link_pos} |
60 | ? @{delete $pl->ob->{_link_pos}} |
62 | ? @{delete $ob->{_link_pos}} |
61 | : ($pl->maplevel, $pl->ob->x, $pl->ob->y); |
63 | : ($pl->maplevel, $ob->x, $ob->y); |
62 | |
64 | |
63 | $pl->ob->enter_link; |
65 | $ob->enter_link; |
64 | |
66 | |
65 | if (my $time = delete $pl->{unclean_save}) { |
67 | if (my $time = delete $pl->{unclean_save}) { |
66 | if (my $m = cf::map::find $map) { |
68 | if (my $m = cf::map::find $map) { |
67 | if ($time < $m->{instantiate_time}) { |
69 | if ($time < $m->{instantiate_time} || 1) {#d# |
68 | # the map was reset in the meantime |
70 | # the map was reset in the meantime |
69 | my $age = $cf::RUNTIME - $time; |
71 | my $age = $cf::RUNTIME - $time; |
70 | warn $pl->ob->name, " map reset after logout, logout age $age\n";#d# |
72 | warn $ob->name, " map reset after logout, logout age $age\n";#d# |
71 | |
73 | |
72 | # for now, just go back to savebed |
74 | # for now, just go back to savebed |
73 | ($map, $x, $y) = $pl->savebed; |
75 | ($map, $x, $y) = $pl->savebed; |
74 | |
76 | |
75 | $pl->ns->send_drawinfo ( |
77 | $pl->ns->send_drawinfo ( |
… | |
… | |
87 | ); |
89 | ); |
88 | } |
90 | } |
89 | } |
91 | } |
90 | } |
92 | } |
91 | |
93 | |
92 | $pl->ob->goto ($map, $x, $y); |
94 | $ob->goto ($map, $x, $y); |
93 | } |
95 | } |
94 | |
96 | |
95 | # delete a player directory, be non-blocking AND synchronous... |
97 | # delete a player directory, be non-blocking AND synchronous... |
96 | # (thats hard, so we crap out and fork). |
98 | # (thats hard, so we crap out and fork). |
97 | sub nuke_playerdir { |
99 | sub nuke_playerdir { |