… | |
… | |
55 | } |
55 | } |
56 | |
56 | |
57 | sub check_clean_save { |
57 | sub check_clean_save { |
58 | my ($pl) = @_; |
58 | my ($pl) = @_; |
59 | |
59 | |
60 | unless (delete $pl->{clean_save}) { |
60 | if (my $time = delete $pl->{unclean_save}) { |
|
|
61 | $pl->ns->send_drawinfo ( |
|
|
62 | "You didn't use a savebed to leave this realm. This is very dangerous, " |
|
|
63 | . "as lots of things could happen when you leave by other means, such as cave-ins, " |
|
|
64 | . "or monsters suddenly snapping your body. Better use a savebed next time.", |
|
|
65 | cf::NDI_RED |
|
|
66 | ); |
61 | #d#TODO |
67 | #d#TODO |
62 | } |
68 | } |
63 | } |
69 | } |
64 | |
70 | |
65 | # delete a player directory, be non-blocking AND synchronous... |
71 | # delete a player directory, be non-blocking AND synchronous... |
… | |
… | |
156 | nuke_str $pass; |
162 | nuke_str $pass; |
157 | # password matches, wonderful |
163 | # password matches, wonderful |
158 | my $pl = cf::player::find $user or next; |
164 | my $pl = cf::player::find $user or next; |
159 | $pl->connect ($ns); |
165 | $pl->connect ($ns); |
160 | check_clean_save $pl; |
166 | check_clean_save $pl; |
161 | $pl->{clean_save} = 1; |
|
|
162 | last; |
167 | last; |
163 | } elsif (can_cleanup $pl, $mtime) { |
168 | } elsif (can_cleanup $pl, $mtime) { |
164 | Coro::Timer::sleep 1; |
169 | Coro::Timer::sleep 1; |
165 | |
170 | |
166 | $ns->send_drawinfo ( |
171 | $ns->send_drawinfo ( |
… | |
… | |
328 | |
333 | |
329 | if ($cleanly) { |
334 | if ($cleanly) { |
330 | $_->ob->message ("$name left the game.", cf::NDI_DK_ORANGE | cf::NDI_UNIQUE) for cf::player::list; |
335 | $_->ob->message ("$name left the game.", cf::NDI_DK_ORANGE | cf::NDI_UNIQUE) for cf::player::list; |
331 | } else { |
336 | } else { |
332 | $_->ob->message ("$name uncerimoniously disconnected.", cf::NDI_DK_ORANGE | cf::NDI_UNIQUE) for cf::player::list; |
337 | $_->ob->message ("$name uncerimoniously disconnected.", cf::NDI_DK_ORANGE | cf::NDI_UNIQUE) for cf::player::list; |
333 | delete $pl->{clean_save}; |
338 | $pl->{unclean_save} = $cf::RUNTIME; |
334 | } |
339 | } |
335 | }, |
340 | }, |
336 | ); |
341 | ); |
337 | |
342 | |
338 | cf::client->attach ( |
343 | cf::client->attach ( |