1 | #! perl |
1 | #! perl |
2 | |
2 | |
3 | # wizard commands |
3 | # wizard commands |
4 | |
4 | |
5 | cf::register_command goto => 0, sub { |
5 | cf::register_command goto => sub { |
6 | my ($ob, $arg) = @_; |
6 | my ($ob, $arg) = @_; |
7 | |
7 | |
8 | return unless $ob->flag (cf::FLAG_WIZ) || $cf::CFG{nopriv_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->destroy; |
|
|
19 | |
|
|
20 | 1 |
19 | }; |
21 | }; |
20 | |
22 | |
|
|
23 | cf::register_command wizpass => sub { |
|
|
24 | my ($ob, $arg) = @_; |
|
|
25 | |
|
|
26 | return unless $ob->may ("command_wizpass"); |
|
|
27 | |
|
|
28 | my $new_val = length $arg ? $arg * 1 : !$ob->flag (cf::FLAG_WIZPASS); |
|
|
29 | |
|
|
30 | $ob->flag (cf::FLAG_WIZPASS, $new_val); |
|
|
31 | |
|
|
32 | $ob->reply (undef, |
|
|
33 | $new_val |
|
|
34 | ? "You will now walk through walls.\n" |
|
|
35 | : "You will now be stopped by walls.\n", |
|
|
36 | ); |
|
|
37 | |
|
|
38 | 1 |
|
|
39 | }; |
|
|
40 | |
|
|
41 | cf::register_command wizcast => sub { |
|
|
42 | my ($ob, $arg) = @_; |
|
|
43 | |
|
|
44 | return unless $ob->may ("command_wizcast"); |
|
|
45 | |
|
|
46 | my $new_val = length $arg ? $arg * 1 : !$ob->flag (cf::FLAG_WIZCAST); |
|
|
47 | |
|
|
48 | $ob->flag (cf::FLAG_WIZCAST, $new_val); |
|
|
49 | |
|
|
50 | $ob->reply (undef, |
|
|
51 | $new_val |
|
|
52 | ? "You can now cast spells anywhere." |
|
|
53 | : "You now cannot cast spells in no-magic areas.", |
|
|
54 | ); |
|
|
55 | |
|
|
56 | 1 |
|
|
57 | }; |
|
|
58 | |
|
|
59 | cf::register_command wizlook => 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 => sub { |
|
|
75 | my ($ob, $arg) = @_; |
|
|
76 | |
|
|
77 | return unless $ob->may ($method); |
|
|
78 | |
|
|
79 | $ob->$method ($arg) |
|
|
80 | }; |
|
|
81 | } |
|
|
82 | |