ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/ext/dmcommands.ext
Revision: 1.2
Committed: Mon Jan 1 13:31:47 2007 UTC (17 years, 4 months ago) by root
Branch: MAIN
Changes since 1.1: +30 -1 lines
Log Message:
this is close to working

File Contents

# Content
1 #! perl
2
3 # wizard commands
4
5 cf::register_command goto => sub {
6 my ($ob, $arg) = @_;
7
8 return unless $ob->may ("command_goto");
9
10 my $portal = cf::object::new "exit";
11
12 $portal->slaying ($arg);
13 $portal->stats->hp (0);
14 $portal->stats->sp (0);
15
16 $portal->apply ($ob);
17
18 $portal->destroy;
19
20 1
21 };
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 cf::register_command maps => sub {
72 my ($ob, $arg) = @_;
73
74 no re 'eval'; $arg = qr<$arg>;
75
76 my $format = "%2s %2s %-30.30s\n";
77
78 my $msg = sprintf $format, "Pl", "Fl", "Reset", "Name";
79
80 for (sort keys %cf::MAP) {
81 my $map = $cf::MAP{$_}
82 or next;
83
84 $msg
85 }
86
87 1
88 };
89
90 cf::register_command reset => sub {
91 my ($ob, $arg) = @_;
92
93 return unless $ob->may ("command_reset");
94
95 $ob->reply (undef, "You can temporarily see through walls.");
96
97 1
98 };
99
100 for my $command (qw(teleport summon arrest kick banish)) {
101 my $method = "command_$command";
102
103 cf::register_command $command => sub {
104 my ($ob, $arg) = @_;
105
106 return unless $ob->may ($method);
107
108 $ob->$method ($arg)
109 };
110 }
111