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

# User Rev Content
1 root 1.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 root 1.2 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 root 1.1 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