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.29 by pippijn, Fri Mar 2 12:16:55 2007 UTC vs.
Revision 1.33 by pippijn, Fri Mar 2 15:09:05 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
116}; 116};
117 117
118cf::register_command mark => sub { 118cf::register_command mark => sub {
119 my ($pl, $arg) = @_; 119 my ($pl, $arg) = @_;
120 120
121 if (!$arg) { 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 {
122 my $ob = $pl->find_marked_object; 130 my $ob = $pl->find_marked_object;
123 131
124 $pl->reply (undef, $ob 132 $pl->reply (undef, $ob
125 ? (sprintf "%s %s * is marked.", $ob->name, $ob->title) 133 ? (sprintf "%s %s * is marked.", $ob->name, $ob->title)
126 : "You have no marked object."); 134 : "You have no marked object.");
127 } else {
128 my $ob = $pl->find_best_object_match ($arg);
129
130 return $pl->reply (undef, "Could not find an object that matches $arg")
131 unless $ob;
132
133 $pl->contr->mark ($ob);
134 $pl->reply (undef, (sprintf "Marked item %s", $ob->name, $ob->title));
135 } 135 }
136 136
137 1 137 1
138}; 138};
139 139
150for my $cmd ("run", "fire") { 150for my $cmd ("run", "fire") {
151 my $oncmd = "${cmd}_on"; 151 my $oncmd = "${cmd}_on";
152 cf::register_command $cmd => sub { 152 cf::register_command $cmd => sub {
153 my ($ob, $arg) = @_; 153 my ($ob, $arg) = @_;
154 154
155 $ob->contr->$oncmd (1);
156
155 return $ob->reply (undef, "Can't $cmd into a non adjacent square.") 157 return $ob->reply (undef, "Can't $cmd into a non adjacent square.")
156 if $arg < 0 or $arg >= 9; 158 if $arg < 0 or $arg >= 9;
157 159
158 $ob->contr->$oncmd (1);
159 $ob->move ($arg); 160 $ob->move ($arg);
160 161
161 1 162 1
162 }; 163 };
163 164
191 $ob->reply (undef, (sprintf "You are %s.\n%s", $reg->longname, $reg->msg)); 192 $ob->reply (undef, (sprintf "You are %s.\n%s", $reg->longname, $reg->msg));
192 193
193 1 194 1
194}; 195};
195 196
197sub _set_mode($$$@) {
198 my ($name, $ob, $arg, $slot, @choices) = @_;
199
200 my $oldmode = $ob->contr->$slot;
201
202 return $ob->reply (undef, "$name is set to $choices[$oldmode]")
203 unless $arg;
204
205 my ($idx) = grep $choices[$_] eq $arg, 0 .. $#choices
206 or return $ob->reply (undef, "$name: Unknown options '$arg', valid options are @choices"), 1;
207
208 $ob->contr->$slot ($idx);
209 $ob->reply (undef, "$name" . ($oldmode == $ob->contr->unapply ? "" : " now") . " set to " . $choices[$ob->contr->$slot]);
210}
211
196cf::register_command applymode => sub { 212cf::register_command applymode => sub {
197 my ($ob, $arg) = @_; 213 my ($ob, $arg) = @_;
198 my @types = ("nochoice", "never", "always");
199 my $mapping = {
200 nochoice => 1,
201 never => 2,
202 always => 3,
203 };
204 214
205 my $oldmode = $ob->contr->unapply; 215 _set_mode "applymode", $ob, $arg, unapply => qw(nochoice never always);
206 my $oldmode_name = $types[$oldmode];
207
208 return $ob->reply (undef, "applymode is set to $oldmode_name")
209 unless $arg;
210
211 return $ob->reply (undef, "applymode: Unknown options '$arg', valid options are @types")
212 unless $mapping->{$arg};
213
214 $ob->contr->unapply ($mapping->{$arg} - 1); # HACK: because of the $mapping->{$arg} check before, where $arg should not be 0
215 # but $arg would be 0 if a user enters an incorrect value
216 $ob->reply (undef, "applymode" . ($oldmode == $ob->contr->unapply ? "" : " now") . " set to " . $types[$ob->contr->unapply]);
217 216
218 1 217 1
219}; 218};
220 219
221cf::register_command petmode => sub { 220cf::register_command petmode => sub {
222 my ($ob, $arg) = @_; 221 my ($ob, $arg) = @_;
223 my @types = ("normal", "sad", "defend", "arena");
224 my $mapping = {
225 normal => 1,
226 sad => 2,
227 defend => 3,
228 arena => 4,
229 };
230 222
231 my $oldtype = $ob->contr->petmode; 223 _set_mode "petmode", $ob, $arg, petmode => qw(normal sad defend arena);
232 my $oldtype_name = $types[$oldtype];
233
234 return $ob->reply (undef, "petmode is set to $oldtype_name")
235 unless $arg;
236
237 return $ob->reply (undef, "petmode: Unknown options '$arg', valid options are @types")
238 unless $mapping->{$arg};
239
240 $ob->contr->petmode ($mapping->{$arg} - 1); # HACK: because of the $mapping->{$arg} check before, where $arg should not be 0
241 # but $arg would be 0 if a user enters an incorrect value
242 $ob->reply (undef, "petmode" . ($oldtype == $ob->contr->petmode ? "" : " now") . " set to " . $types[$ob->contr->petmode]);
243 224
244 1 225 1
245}; 226};
246 227
247cf::register_command usekeys => sub { 228cf::register_command usekeys => sub {
248 my ($ob, $arg) = @_; 229 my ($ob, $arg) = @_;
249 my @types = ("inventory", "keyrings", "containers");
250 my $mapping = {
251 inventory => 1,
252 keyrings => 2,
253 containers => 3,
254 };
255 230
256 my $oldtype = $ob->contr->usekeys; 231 _set_mode "usekeys", $ob, $arg, usekeys => qw(inventory keyrings containers);
257 my $oldtype_name = $types[$oldtype];
258
259 return $ob->reply (undef, "usekeys is set to $oldtype_name")
260 unless $arg;
261
262 return $ob->reply (undef, "usekeys: Unknown options '$arg', valid options are @types")
263 unless $mapping->{$arg};
264
265 $ob->contr->usekeys ($mapping->{$arg} - 1); # HACK: because of the $mapping->{$arg} check before, where $arg should not be 0
266 # but $arg would be 0 if a user enters an incorrect value
267 $ob->reply (undef, "usekeys" . ($oldtype == $ob->contr->usekeys ? "" : " now") . " set to " . $types[$ob->contr->usekeys]);
268 232
269 1 233 1
270}; 234};
271 235
272cf::register_command afk => sub { 236cf::register_command afk => sub {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines