1 | package cf; |
1 | package cf; |
2 | |
2 | |
3 | use Symbol; |
3 | use Symbol; |
4 | use List::Util; |
4 | use List::Util; |
5 | use Storable; |
5 | use Storable; |
|
|
6 | |
|
|
7 | use Event; |
|
|
8 | $Event::Eval = 1; # no idea why this is required, but it is |
6 | |
9 | |
7 | use strict; |
10 | use strict; |
8 | |
11 | |
9 | our %COMMAND; |
12 | our %COMMAND; |
10 | our @EVENT; |
13 | our @EVENT; |
… | |
… | |
60 | |
63 | |
61 | # guessed hierarchies |
64 | # guessed hierarchies |
62 | |
65 | |
63 | @cf::object::player::ISA = 'cf::object'; |
66 | @cf::object::player::ISA = 'cf::object'; |
64 | @cf::object::map::ISA = 'cf::object'; |
67 | @cf::object::map::ISA = 'cf::object'; |
|
|
68 | |
|
|
69 | $Event::DIED = sub { |
|
|
70 | warn "error in event callback: @_"; |
|
|
71 | }; |
65 | |
72 | |
66 | my %ext_pkg; |
73 | my %ext_pkg; |
67 | my @exts; |
74 | my @exts; |
68 | my @hook; |
75 | my @hook; |
69 | my %command; |
76 | my %command; |
… | |
… | |
209 | if ($who->flag (FLAG_WIZ)) { |
216 | if ($who->flag (FLAG_WIZ)) { |
210 | $who->message ("reloading..."); |
217 | $who->message ("reloading..."); |
211 | |
218 | |
212 | warn "reloading...\n"; |
219 | warn "reloading...\n"; |
213 | eval { |
220 | eval { |
|
|
221 | $_->cancel for Event::all_watchers; |
|
|
222 | |
214 | unload_extension $_ for @exts; |
223 | unload_extension $_ for @exts; |
215 | delete $INC{"cf.pm"}; |
224 | delete $INC{"cf.pm"}; |
216 | |
225 | |
217 | # don't, removes xs symbols, too |
226 | # don't, removes xs symbols, too |
218 | #Symbol::delete_package $pkg; |
227 | #Symbol::delete_package $pkg; |