X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/rocl/blobdiff_plain/7f50b5a80358ff9544ad3b965ed88dcf41d252a4..338077d07f2470684827071c1f15bbc1ee782398:/elite-cmdr diff --git a/elite-cmdr b/elite-cmdr index cc8bb50..f574f68 100755 --- a/elite-cmdr +++ b/elite-cmdr @@ -1,6 +1,6 @@ #! /usr/bin/tclsh -package require "elite" "1.0.0" +package require "elite" "1.0.1" if {[llength $argv] < 1} { puts stderr "usage: $argv0 \[-OPTION | ATTR | ATTR=VALUE\] ..." @@ -76,7 +76,7 @@ proc set/seed {a v} { proc get/world {a} { global cmdr gov eco - set ww [worldinfo $cmdr(gal-seed)] + set ww [elite-galaxylist $cmdr(gal-seed)] set s [nearest-planet $ww \ [expr {$cmdr(world-x) * 4}] [expr {$cmdr(world-y) * 2}]] elite-worldinfo p $s @@ -90,12 +90,19 @@ proc dump/world {a} { } proc set/world {a v} { global cmdr + set ww [elite-galaxylist $cmdr(gal-seed)] set s [parse-planet-spec $cmdr(gal-seed) $v] if {[string equal $s ""]} { error "bad planet spec `$v'" } if {![in-galaxy-p $cmdr(gal-seed) $s]} { error "planet `[worldname $s]' not in galaxy $cmdr(gal-seed)" } elite-worldinfo p $s + set ss [nearest-planet $ww $p(x) $p(y)] + if {![string equal $s $ss]} { + set n $p(name) + elite-worldinfo p $ss + puts stderr "can't dock at $n: $p(name) is coincident" + } set cmdr(world-x) [expr {$p(x)/4}] set cmdr(world-y) [expr {$p(y)/2}] } @@ -129,6 +136,8 @@ foreach {a type} { "elite" 6400 } } credits { tenth 0 429496729.5 } + legal-status { choice 0 255 + { "clean" 0 "offender" 1 "fugitive" 50 } } cargo { int 4 255 } gal-number { int 1 8 } gal-seed { seed } @@ -231,19 +240,23 @@ for {set i 0} {$i < [llength $argv]} {incr i} { exit 1 } } - "^[a-z][a-z-]*$" { - if {![info exists attr($a)]} { - puts stderr "$argv0: no such attribute `$a'" - exit 1 - } - puts [format "%-20s %s" $a [eval \ - get/[lindex $attr($a) 0] [lrange $attr($a) 1 end] [list $a]]] - set acted 1 - } default { - if {[catch { elite-unpackcmdr cmdr [read-file $a] } err]} { - puts stderr "$argv0: couldn't read `$a': $err" - exit 1 + set n 0 + foreach aa $attrs { + if {[string match $a $aa]} { + incr n + puts [format "%-20s %s" $aa [eval \ + get/[lindex $attr($aa) 0] \ + [lrange $attr($aa) 1 end] [list $aa]]] + } + } + if {$n} { + set acted 1 + } else { + if {[catch { elite-unpackcmdr cmdr [read-file $a] } err]} { + puts stderr "$argv0: couldn't read `$a': $err" + exit 1 + } } } }