ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/ext/dmcommands.ext
(Generate patch)

Comparing deliantra/server/ext/dmcommands.ext (file contents):
Revision 1.12 by root, Sat Jan 13 23:06:13 2007 UTC vs.
Revision 1.27 by root, Fri Jan 11 15:08:03 2013 UTC

1#! perl 1#! perl # mandatory
2 2
3# wizard commands 3# wizard commands
4 4
5sub dm($) {
6 my ($ob) = @_;
7
8 if ($ob->flag (cf::FLAG_WIZ)) {
9 $ob->reply (undef, "You are already the Dungeon Master!");
10 return 0;
11
12 } else {
13 $ob->flag (cf::FLAG_WIZ , 1);
14 $ob->flag (cf::FLAG_WIZPASS, 1);
15 $ob->flag (cf::FLAG_WIZCAST, 1);
16 $ob->flag (cf::FLAG_WIZLOOK, 1);
17
18 $ob->contr->do_los (1);
19 $ob->contr->ns->update_command_faces;
20
21 $ob->reply (undef, "Ok, you are the Dungeon Master!");
22
23 return 1;
24 }
25}
26
27sub hide($) {
28 my ($ob) = @_;
29
30 if ($ob->contr->hidden) {
31 $ob->contr->hidden (0);
32# $ob->invisible (1);
33
34 $ob->reply (undef, "You are no longer hidden!");
35 } else {
36 $ob->contr->hidden (1);
37
38 $ob->reply (undef, "You are now hidden!");
39 }
40}
41
42cf::register_command dm => sub {
43 my ($ob, $arg) = @_;
44
45 return unless $ob->may ("command_dm");
46
47 dm $ob
48 and $ob->reply (undef, "The Dungeon Master has arrived!", cf::NDI_UNIQUE | cf::NDI_ALL | cf::NDI_LT_GREEN);
49
50 1
51};
52
53cf::register_command dmhide => sub {
54 my ($ob, $arg) = @_;
55
56 return unless $ob->may ("command_dm");
57
58 dm $ob
59 and hide $ob;
60
61 1
62};
63
64cf::register_command hide => sub {
65 my ($ob, $arg) = @_;
66 return $ob->reply (undef, "Sorry, you are not the DM!")
67 unless $ob->flag (cf::FLAG_WIZ);
68
69 hide $ob;
70
71 1
72};
73
74cf::register_command nodm => sub {
75 my ($ob, $arg) = @_;
76 return $ob->reply (undef, "Sorry, you are not the DM!")
77 unless $ob->flag (cf::FLAG_WIZ);
78
79 $ob->contr->hidden
80 and hide $ob;
81
82 $ob->flag (cf::FLAG_WIZ , 0);
83 $ob->flag (cf::FLAG_WIZPASS, 0);
84 $ob->flag (cf::FLAG_WIZCAST, 0);
85 $ob->flag (cf::FLAG_WIZLOOK, 0);
86
87 $ob->contr->do_los (1);
88 $ob->contr->ns->update_command_faces;
89
90 1
91};
92
93cf::register_command shutdown => sub {
94 my ($ob, $arg) = @_;
95 return $ob->reply (undef, "Sorry, you can't shutdown the server.")
96 unless $ob->flag (cf::FLAG_WIZ);
97
98 my $name = $ob->name;
99 cf::cleanup ("dm '$name' initiated shutdown" . ($arg ? " with reason: $arg" : "."), 0);
100
101 1
102};
103
104cf::register_command kick => sub {
105 my ($ob, $arg) = @_;
106 return unless $ob->flag (cf::FLAG_WIZ);
107
108 my $other = cf::player::find_active $arg
109 or return 0;
110 $other->kick ($ob);
111 $ob->reply (undef, "$arg is kicked out of the game.", cf::NDI_UNIQUE | cf::NDI_ALL | cf::NDI_RED);
112
113 1
114};
115
5cf::register_command goto => sub { 116cf::register_command goto => sub {
6 my ($ob, $arg) = @_; 117 my ($ob, $arg) = @_;
7 118
8 return unless $ob->may ("command_goto"); 119 return unless $ob->may ("command_goto");
9 120
10 my $portal = cf::object::new "exit"; 121 my ($path, $x, $y) = split /\s+/, $arg, 3;
11 122
12 $portal->slaying ($arg); 123 $ob->goto ($path, $x, $y);
13 $portal->stats->hp (0);
14 $portal->stats->sp (0);
15 124
16 $portal->apply ($ob); 125 1
126};
17 127
18 $portal->destroy; 128cf::register_command teleport => sub {
129 my ($ob, $arg) = @_;
130
131 return unless $ob->may ("command_teleport");
132
133 cf::async {
134 $Coro::current->{desc} = "teleport $arg";
135
136 my $other = cf::player::find $arg
137 or return $ob->reply (undef, "$arg: no such player.");
138
139 $ob->goto ($other->maplevel, $other->ob->x, $other->ob->y);
140 };
19 141
20 1 142 1
21}; 143};
22 144
23cf::register_command wizpass => sub { 145cf::register_command wizpass => sub {
59cf::register_command wizlook => sub { 181cf::register_command wizlook => sub {
60 my ($ob, $arg) = @_; 182 my ($ob, $arg) = @_;
61 183
62 return unless $ob->may ("command_wizlook"); 184 return unless $ob->may ("command_wizlook");
63 185
64 $ob->clear_los; 186 my $new_val = length $arg ? $arg * 1 : !$ob->flag (cf::FLAG_WIZLOOK);
65 187
66 $ob->reply (undef, "You can temporarily see through walls."); 188 $ob->flag (cf::FLAG_WIZLOOK, $new_val);
189
190 $ob->contr->do_los (1);
191
192 $ob->reply (undef,
193 $new_val
194 ? "You can now look through walls."
195 : "You will now see the same thing as you would normally.",
196 );
67 197
68 1 198 1
69}; 199};
70 200
71cf::register_command reset => sub { 201cf::register_command reset => sub {
72 my ($ob, $arg) = @_; 202 my ($ob, $arg) = @_;
73 203
74 return unless $ob->may ("command_reset"); 204 return unless $ob->may ("command_reset");
205
206 my $unique = $arg =~ s/^\s*--unique\s*//;
75 207
76 my $map = $ob->map; 208 my $map = $ob->map;
77 209
78 my @pl = $map->players; 210 my @pl = $map->players;
79 $_->enter_link for @pl; 211 $_->enter_link for @pl;
80 cf::async { 212 cf::async {
81 my $name = $map->visible_name; 213 my $name = $map->visible_name;
214 $Coro::current->{desc} = "reset $name";
82 215
216 $map->clear_unique_items if $unique;
83 $map->reset; 217 $map->reset;
218
84 $_->leave_link for @pl; 219 $_->leave_link for @pl;
85 220
86 $ob->reply (undef, "$name was reset."); 221 $ob->reply (undef, "$name was reset.");
87 }; 222 };
88 223
89 1 224 1
90}; 225};
91 226
227cf::register_command observe => sub {
228 my ($ob, $arg) = @_;
229
230 return unless $ob->may ("command_observe");
231
232 my $other = cf::player::find_active $arg;
233 $ob->contr->set_observe ($other ? $other->ob : undef);
234
235 1
236};
237
92for my $command (qw(teleport summon arrest kick banish)) { 238for my $command (qw(summon arrest banish)) {
93 my $method = "command_$command"; 239 my $method = "command_$command";
94 240
95 cf::register_command $command => sub { 241 cf::register_command $command => sub {
96 my ($ob, $arg) = @_; 242 my ($ob, $arg) = @_;
97 243

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines