1 | #! perl |
1 | #! perl # MANDATORY |
2 | |
2 | |
3 | use POSIX (); |
3 | use POSIX (); |
4 | |
4 | |
5 | # miscellaneous commands |
5 | # miscellaneous commands |
6 | |
6 | |
… | |
… | |
116 | }; |
116 | }; |
117 | |
117 | |
118 | cf::register_command mark => sub { |
118 | cf::register_command mark => sub { |
119 | my ($pl, $arg) = @_; |
119 | my ($pl, $arg) = @_; |
120 | |
120 | |
121 | unless (length $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 | |
… | |
… | |
150 | for my $cmd ("run", "fire") { |
150 | for 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 | return $ob->reply (undef, "Can't $cmd into a non adjacent square.") |
155 | $ob->reply (undef, "Can't $cmd into a non adjacent square.") |
156 | if $arg < 0 or $arg >= 9; |
156 | if $arg < 0 or $arg >= 9; |
157 | |
157 | |
158 | $ob->contr->$oncmd (1); |
158 | $ob->contr->$oncmd (1); |
159 | $ob->move ($arg); |
159 | $ob->move_player ($arg); |
160 | |
160 | |
161 | 1 |
161 | 1 |
162 | }; |
162 | }; |
163 | |
163 | |
164 | cf::register_command "${cmd}_stop" => sub { |
164 | cf::register_command "${cmd}_stop" => sub { |
165 | my ($ob) = @_; |
165 | my ($ob) = @_; |
166 | |
166 | |
167 | $ob->contr->$oncmd (0); |
167 | $ob->contr->$oncmd (0); |
168 | |
168 | |
… | |
… | |
253 | cf::register_command brace => sub { |
253 | cf::register_command brace => sub { |
254 | my ($ob, $arg) = @_; |
254 | my ($ob, $arg) = @_; |
255 | |
255 | |
256 | $ob->contr->braced ($ob->contr->braced ? 0 : 1); |
256 | $ob->contr->braced ($ob->contr->braced ? 0 : 1); |
257 | $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 | |
|
|
262 | cf::register_command 'output-rate' => sub { |
|
|
263 | my ($ob, $arg) = @_; |
|
|
264 | |
|
|
265 | return $ob->reply (undef, sprintf "Output rate is presently %dbps.", $ob->contr->ns->max_rate / $cf::TICK) |
|
|
266 | unless $arg > 0; |
|
|
267 | |
|
|
268 | $ob->contr->ns->max_rate ($arg * $cf::TICK); |
|
|
269 | $ob->reply (undef, sprintf "Output rate now set to%dbps.", $ob->contr->ns->max_rate / $cf::TICK); |
258 | |
270 | |
259 | 1 |
271 | 1 |
260 | }; |
272 | }; |
261 | |
273 | |
262 | cf::register_command 'output-count' => sub { |
274 | cf::register_command 'output-count' => sub { |