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

Comparing deliantra/server/ext/commands.ext (file contents):
Revision 1.21 by pippijn, Fri Mar 2 10:43:01 2007 UTC vs.
Revision 1.34 by pippijn, Fri Mar 2 15:25:37 2007 UTC

17 17
18 if (length $from) { 18 if (length $from) {
19 $item = $ob->find_best_object_match ($from) 19 $item = $ob->find_best_object_match ($from)
20 or return $ob->message ("rename: could not find a matching item to rename."); 20 or return $ob->message ("rename: could not find a matching item to rename.");
21 } else { 21 } else {
22 $item = $ob->find_marked_object () 22 $item = $ob->find_marked_object
23 or return $ob->message ("rename: no from name and no marked item found to rename."); 23 or return $ob->message ("rename: no from name and no marked item found to rename.");
24 } 24 }
25 25
26 $item->custom_name (length $to ? $to : undef); 26 $item->custom_name (length $to ? $to : undef);
27 27
87 $ob->reply (undef, (join "\n", who_listing $ob->may ("extended_who")), cf::NDI_UNIQUE | cf::NDI_DK_ORANGE); 87 $ob->reply (undef, (join "\n", who_listing $ob->may ("extended_who")), cf::NDI_UNIQUE | cf::NDI_DK_ORANGE);
88 88
89 1 89 1
90}; 90};
91 91
92cf::register_command body => sub {
93 my ($ob) = @_;
94
95 my @body_locations = ("in your range slot", "on your arm", "on your body", "on your head",
96 "around your neck", "in your skill slot", "on your finger", "around your shoulders",
97 "on your feet", "on your hands", "around your wrists", "around your waist");
98
99 # Too hard to try and make a header that lines everything up, so just
100 # give a description. (comment from C++)
101 $ob->reply (undef, "The first column is the name of the body location.");
102 $ob->reply (undef, "The second column is how many of those locations your body has.");
103 $ob->reply (undef, "The third column is how many slots in that location are available.");
104
105 for (0 .. scalar @body_locations - 1) {
106 $ob->reply (undef, (sprintf "%-30s %5d %5d", $body_locations[$_], $ob->body_info($_), $ob->body_used($_)))
107 if $ob->body_info($_) or $ob->body_used($_);
108 }
109
110 $ob->reply (undef, "You are not allowed to wear armor")
111 unless $ob->flag (cf::FLAG_USE_ARMOUR);
112 $ob->reply (undef, "You are not allowed to use weapons")
113 unless $ob->flag (cf::FLAG_USE_WEAPON);
114
115 1
116};
117
118cf::register_command mark => sub {
119 my ($pl, $arg) = @_;
120
121 if (length $arg) {
122 my $ob = $pl->find_best_object_match ($arg);
123
124 return $pl->reply (undef, "Could not find an object that matches $arg")
125 unless $ob;
126
127 $pl->contr->mark ($ob);
128 $pl->reply (undef, (sprintf "Marked item %s", $ob->name, $ob->title));
129 } else {
130 my $ob = $pl->find_marked_object;
131
132 $pl->reply (undef, $ob
133 ? (sprintf "%s %s * is marked.", $ob->name, $ob->title)
134 : "You have no marked object.");
135 }
136
137 1
138};
139
140cf::register_command who => sub {
141 my ($ob, $arg) = @_;
142
143 $ob->speed_left ($ob->speed_left - 0.25);
144
145 $ob->reply (undef, (join "\n", who_listing $ob->may ("extended_who")), cf::NDI_UNIQUE | cf::NDI_DK_ORANGE);
146
147 1
148};
149
150for my $cmd ("run", "fire") {
151 my $oncmd = "${cmd}_on";
152 cf::register_command $cmd => sub {
153 my ($ob, $arg) = @_;
154
155 $ob->reply (undef, "Can't $cmd into a non adjacent square.")
156 if $arg < 0 or $arg >= 9;
157
158 $ob->contr->$oncmd (1);
159 $ob->move_player ($arg);
160
161 1
162 };
163
164 cf::register_command "${cmd}_stop" => sub {
165 my ($ob) = @_;
166
167 $ob->contr->$oncmd (0);
168
169 1
170 };
171}
172
173cf::register_command mapinfo => sub {
174 my ($ob) = @_;
175
176 my $map = $ob->map
177 or return;
178 $ob->reply (undef, (sprintf "%s (%s) %s", $map->name, $map->path, $ob->region->longname));
179 $ob->reply (undef, (sprintf "players: %d difficulty: %d size: %d start: %dx%d timeout: %d",
180 $map->players, $map->difficulty, $map->width, $map->height, $map->enter_x, $map->enter_y, $map->timeout))
181 if $ob->flag (cf::FLAG_WIZ);
182 $ob->reply (undef, $map->msg);
183
184 1
185};
186
187cf::register_command whereami => sub {
188 my ($ob) = @_;
189
190 my $reg = $ob->region;
191 $ob->reply (undef, (sprintf "You are %s.\n%s", $reg->longname, $reg->msg));
192
193 1
194};
195
196sub _set_mode($$$@) {
197 my ($name, $ob, $arg, $slot, @choices) = @_;
198
199 my $oldmode = $ob->contr->$slot;
200
201 return $ob->reply (undef, "$name is set to $choices[$oldmode]")
202 unless $arg;
203
204 my ($idx) = grep $choices[$_] eq $arg, 0 .. $#choices
205 or return $ob->reply (undef, "$name: Unknown options '$arg', valid options are @choices"), 1;
206
207 $ob->contr->$slot ($idx);
208 $ob->reply (undef, "$name" . ($oldmode == $ob->contr->unapply ? "" : " now") . " set to " . $choices[$ob->contr->$slot]);
209}
210
211cf::register_command applymode => sub {
212 my ($ob, $arg) = @_;
213
214 _set_mode "applymode", $ob, $arg, unapply => qw(nochoice never always);
215
216 1
217};
218
219cf::register_command petmode => sub {
220 my ($ob, $arg) = @_;
221
222 _set_mode "petmode", $ob, $arg, petmode => qw(normal sad defend arena);
223
224 1
225};
226
92cf::register_command usekeys => sub { 227cf::register_command usekeys => sub {
93 my ($ob, $arg) = @_; 228 my ($ob, $arg) = @_;
94 my @types = ("inventory", "keyrings", "containers");
95 my $mapping = {
96 inventory => 1,
97 keyrings => 2,
98 containers => 3,
99 };
100 229
101 my $oldtype = $ob->contr->usekeys; 230 _set_mode "usekeys", $ob, $arg, usekeys => qw(inventory keyrings containers);
102 my $oldtype_name = $types[$oldtype];
103 231
104 return $ob->reply (undef, "usekeys is set to $oldtype_name") 232 1
105 unless $arg;
106
107 return $ob->reply (undef, "usekeys: Unknown options '$arg', valid options are inventory, keyrings, containers")
108 unless $mapping->{$arg};
109
110 $ob->contr->usekeys ($mapping->{$arg} - 1); # HACK: because of the $mapping->{$arg} check before, where $arg should not be 0
111 # but $arg would be 0 if a user enters an incorrect value
112 $ob->reply (undef, "usekeys" . ($oldtype == $ob->contr->usekeys ? "" : " now") . " set to " . $types[$ob->contr->usekeys]);
113}; 233};
114 234
115cf::register_command afk => sub { 235cf::register_command afk => sub {
116 my ($ob, $arg) = @_; 236 my ($ob, $arg) = @_;
117 237
118 $ob->contr->ns->afk ($ob->contr->ns->afk ? 0 : 1); 238 $ob->contr->ns->afk ($ob->contr->ns->afk ? 0 : 1);
119 $ob->reply (undef, $ob->contr->ns->afk ? "You are now AFK" : "You are no longer AFK"); 239 $ob->reply (undef, $ob->contr->ns->afk ? "You are now AFK" : "You are no longer AFK");
240
241 1
120}; 242};
121 243
122cf::register_command sound => sub { 244cf::register_command sound => sub {
123 my ($ob, $arg) = @_; 245 my ($ob, $arg) = @_;
124 246
125 $ob->contr->ns->sound ($ob->contr->ns->sound ? 0 : 1); 247 $ob->contr->ns->sound ($ob->contr->ns->sound ? 0 : 1);
126 $ob->reply (undef, $ob->contr->ns->sound ? "The sounds are enabled." : "Silence is golden..."); 248 $ob->reply (undef, $ob->contr->ns->sound ? "The sounds are enabled." : "Silence is golden...");
249
250 1
127}; 251};
128 252
129cf::register_command brace => sub { 253cf::register_command brace => sub {
130 my ($ob, $arg) = @_; 254 my ($ob, $arg) = @_;
131 255
132 $ob->contr->braced ($ob->contr->braced ? 0 : 1); 256 $ob->contr->braced ($ob->contr->braced ? 0 : 1);
133 $ob->reply (undef, $ob->contr->braced ? "You are braced." : "Not braced."); 257 $ob->reply (undef, $ob->contr->braced ? "You are braced." : "Not braced.");
258
259 1
260};
261
262cf::register_command 'output-count' => sub {
263 my ($ob, $arg) = @_;
264
265 return $ob->reply (undef, "Output count is presently " . $ob->contr->outputs_count)
266 unless $arg > 0;
267
268 $ob->contr->outputs_count ($arg);
269 $ob->reply (undef, "Output count now set to " . $ob->contr->outputs_count);
270
271 1
272};
273
274cf::register_command 'output-sync' => sub {
275 my ($ob, $arg) = @_;
276
277 return $ob->reply (undef, "Output sync time is presently " . $ob->contr->outputs_sync)
278 unless $arg > 0;
279
280 $ob->contr->outputs_sync ($arg);
281 $ob->reply (undef, "Output sync time now set to " . $ob->contr->outputs_sync);
282
283 1
134}; 284};
135 285
136# XXX: This has a bug. After one sets his wimpy level to 0 and resets it to 286# XXX: This has a bug. After one sets his wimpy level to 0 and resets it to
137# some other level (which may also be 0), this does not get echoed, 287# some other level (which may also be 0), this does not get echoed,
138# but it does get set. 288# but it does get set.
145 295
146 return $ob->run_away ($arg) && $ob->reply (undef, "Your new wimpy level is $arg.") 296 return $ob->run_away ($arg) && $ob->reply (undef, "Your new wimpy level is $arg.")
147 if $arg =~ /^\d+$/ and $arg <= 100; 297 if $arg =~ /^\d+$/ and $arg <= 100;
148 298
149 $ob->reply (undef, "Incorrect parameters for wimpy: $arg"); 299 $ob->reply (undef, "Incorrect parameters for wimpy: $arg");
300
301 1
150}; 302};
151 303
152cf::register_command peaceful => sub { 304cf::register_command peaceful => sub {
153 my ($ob, $arg) = @_; 305 my ($ob, $arg) = @_;
154 306
157 ." if you want to become hostile or in temple of Valriel" 309 ." if you want to become hostile or in temple of Valriel"
158 ." if you want to become peaceful again."); 310 ." if you want to become peaceful again.");
159 311
160 #$ob->contr->peaceful ($ob->contr->peaceful ? 0 : 1); 312 #$ob->contr->peaceful ($ob->contr->peaceful ? 0 : 1);
161 #$ob->reply (undef, $ob->contr->peaceful ? "You will attack other players." : "You will not attack other players."); 313 #$ob->reply (undef, $ob->contr->peaceful ? "You will attack other players." : "You will not attack other players.");
162};
163 314
315 1
316};
164 317
165cf::register_command rename => sub { 318cf::register_command rename => sub {
166 my ($ob, $arg) = @_; 319 my ($ob, $arg) = @_;
167 320
168 $ob->speed_left ($ob->speed_left - 0.25); 321 $ob->speed_left ($ob->speed_left - 0.25);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines