1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
#!/bin/sh
# $FreeBSD$
#
# Copyright (c) 2010-2014 Andy Kosela <akosela@andykosela.com>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
inform=%%PREFIX%%/bin/inform6
ni=%%PREFIX%%/bin/ni
rules=%%DATADIR%%/Extensions
main()
{
pkg=`basename $story | cut -d. -f1 2>/dev/null`
mkdir -p $pkg.inform/Build $pkg.inform/Source $pkg.inform/Index
cp $story $pkg.inform/Source/story.ni
$ni --release --rules $rules --extension=$zsuf --package $pkg.inform
mv "$pkg.inform/Build/Debug log.txt" debug.log
if [ -s $pkg.inform/Build/auto.inf ]; then
echo ""
$inform $zopts $pkg.inform/Build/auto.inf -o $pkg.$zsuf
mv $pkg.inform/Build/Map.eps ${pkg}_map.eps 1>/dev/null 2>&1
fi
echo "Debug log: debug.log"
rm gameinfo.dbg 2>/dev/null
rm -rf $pkg.inform $pkg.materials 2>/dev/null
exit 0
}
replay()
{
if [ ! -z "`grep -e quit -e save $pkg.$$.key`" ]; then
sed -i '' '/^quit/d ; /^save/d' $pkg.$$.key
fi
if [ -z "`grep 'script off' $pkg.$$.key`" ]; then
echo "script off" >> $pkg.$$.key
fi
echo -e \
"0a\nscript\n$pkg.$$.scr\n.\n\$a\nsave\n$pkg.$$.sav\nquit\ny\ny\n.\nw" |
ed - $pkg.$$.key
if [ ! -z `echo $story | grep -e \.ulx -e \.gblorb -e \.blb` ]; then
cat $pkg.$$.key | dumb-glulxe $story 1>/dev/null 2>&1
cat $pkg.$$.scr | fold -s -72 > $pkg.$$.scr
else
cat $pkg.$$.key | frotz -QS 72 $story 1>/dev/null 2>&1
fi
echo -e \
"g/^script/d\ng/^quit/d\ng/^save/d\ng/.sav/d\ng/.scr/d\ng/^y$/d\nw" |
ed - $pkg.$$.key
echo "$pkg.$$.scr -- replay transcript file"
echo "$pkg.$$.sav -- replay save file"
echo "$pkg.$$.key -- replay walkthrough file"
exit 0
}
usage()
{
echo "Usage: i7 story.ni"
echo " i7 [-g] story.ni"
echo " i7 [-r] story.scr story"
echo " i7 [-w] story.key story"
echo ""
echo " -g : create Glulx release"
echo " -r : replay game from a transcript file"
echo " -w : replay game from a walkthrough file"
echo ""
echo "By default i7 creates Z-code v8 releases."
exit 0
}
# Start of script
if [ ! -z `echo $1 | grep '.ni\|.inf\|.txt'` ]; then
zsuf=z8
zopts=-kE2w~S~DC0xv8
story=$1
main
elif [ -z "$1" ]; then
usage
fi
while getopts g:r:w:h opts
do
case $opts in
g) story=$OPTARG
zsuf=ulx
zopts=-kE2w~S~DC0xG
main
;;
h) usage
;;
r) story=$3
pkg=`basename $OPTARG | cut -d. -f1 2>/dev/null`
grep '>' $OPTARG | cut -d'>' -f2 > $pkg.$$.key
replay
;;
w) story=$3
pkg=`basename $OPTARG | cut -d. -f1 2>/dev/null`
cp $OPTARG $pkg.$$.key
replay
;;
*) usage
;;
esac
done
|