… | |
… | |
3 | # wizard commands |
3 | # wizard commands |
4 | |
4 | |
5 | cf::register_command goto => 0, sub { |
5 | cf::register_command goto => 0, sub { |
6 | my ($ob, $arg) = @_; |
6 | my ($ob, $arg) = @_; |
7 | |
7 | |
8 | return unless $ob->flag (cf::FLAG_WIZ) || $cf::CFG{unpriv_goto}; |
8 | return unless $ob->may ("command_goto"); |
9 | |
9 | |
10 | my $portal = cf::object::new "exit"; |
10 | my $portal = cf::object::new "exit"; |
11 | |
11 | |
12 | $portal->slaying ($arg); |
12 | $portal->slaying ($arg); |
13 | $portal->stats->hp (0); |
13 | $portal->stats->hp (0); |
14 | $portal->stats->sp (0); |
14 | $portal->stats->sp (0); |
15 | |
15 | |
16 | $portal->apply ($ob); |
16 | $portal->apply ($ob); |
17 | |
17 | |
18 | $portal->free; |
18 | $portal->free; |
|
|
19 | |
|
|
20 | 1 |
19 | }; |
21 | }; |
20 | |
22 | |
21 | cf::register_command wizpass => 0, sub { |
23 | cf::register_command wizpass => 0, sub { |
22 | my ($ob, $arg) = @_; |
24 | my ($ob, $arg) = @_; |
23 | |
25 | |
24 | return unless $ob->flag (cf::FLAG_WIZ) || $cf::CFG{unpriv_wizpass}; |
26 | return unless $ob->may ("command_wizpass"); |
25 | |
27 | |
26 | my $new_val = length $arg ? $arg * 1 : !$ob->flag (cf::FLAG_WIZPASS); |
28 | my $new_val = length $arg ? $arg * 1 : !$ob->flag (cf::FLAG_WIZPASS); |
27 | |
29 | |
28 | $ob->flag (cf::FLAG_WIZPASS, $new_val); |
30 | $ob->flag (cf::FLAG_WIZPASS, $new_val); |
29 | |
31 | |
30 | $ob->reply (undef, |
32 | $ob->reply (undef, |
31 | $new_val |
33 | $new_val |
32 | ? "You will now walk through walls.\n" |
34 | ? "You will now walk through walls.\n" |
33 | : "You will now be stopped by walls.\n", |
35 | : "You will now be stopped by walls.\n", |
34 | ); |
36 | ); |
|
|
37 | |
|
|
38 | 1 |
35 | }; |
39 | }; |
36 | |
40 | |
37 | cf::register_command wizcast => 0, sub { |
41 | cf::register_command wizcast => 0, sub { |
38 | my ($ob, $arg) = @_; |
42 | my ($ob, $arg) = @_; |
39 | |
43 | |
40 | return unless $ob->flag (cf::FLAG_WIZ) || $cf::CFG{unpriv_wizcast}; |
44 | return unless $ob->may ("command_wizcast"); |
41 | |
45 | |
42 | my $new_val = length $arg ? $arg * 1 : !$ob->flag (cf::FLAG_WIZCAST); |
46 | my $new_val = length $arg ? $arg * 1 : !$ob->flag (cf::FLAG_WIZCAST); |
43 | |
47 | |
44 | $ob->flag (cf::FLAG_WIZCAST, $new_val); |
48 | $ob->flag (cf::FLAG_WIZCAST, $new_val); |
45 | |
49 | |
46 | $ob->reply (undef, |
50 | $ob->reply (undef, |
47 | $new_val |
51 | $new_val |
48 | ? "You can now cast spells anywhere." |
52 | ? "You can now cast spells anywhere." |
49 | : "You now cannot cast spells in no-magic areas.", |
53 | : "You now cannot cast spells in no-magic areas.", |
50 | ); |
54 | ); |
|
|
55 | |
|
|
56 | 1 |
51 | }; |
57 | }; |
52 | |
58 | |
|
|
59 | cf::register_command wizlook => 0, sub { |
|
|
60 | my ($ob, $arg) = @_; |
|
|
61 | |
|
|
62 | return unless $ob->may ("command_wizlook"); |
|
|
63 | |
|
|
64 | $ob->clear_los; |
|
|
65 | |
|
|
66 | $ob->reply (undef, "You can temporarily see through walls."); |
|
|
67 | |
|
|
68 | 1 |
|
|
69 | }; |
|
|
70 | |
|
|
71 | for my $command (qw(reset teleport summon arrest kick banish)) { |
|
|
72 | my $method = "command_$command"; |
|
|
73 | |
|
|
74 | cf::register_command $command => 0, sub { |
|
|
75 | my ($ob, $arg) = @_; |
|
|
76 | |
|
|
77 | return unless $ob->may ($method); |
|
|
78 | |
|
|
79 | $ob->$method ($arg) |
|
|
80 | }; |
|
|
81 | } |
|
|
82 | |