Ascii Sector Wiki
Register
(del tab)
Tag: Source edit
(typo)
Tag: Source edit
Line 14: Line 14:
 
The quest "The Runners" spawns the escort ship 'Victory' and the pirate
 
The quest "The Runners" spawns the escort ship 'Victory' and the pirate
 
attackers at the wrong place in Rynkel, because in ASCII Sector 0.7.2 the
 
attackers at the wrong place in Rynkel, because in ASCII Sector 0.7.2 the
system has more nav points than when "The Runners" was written.
+
system has more Nav points than when "The Runners" was written.
   
 
Old savegames remain valid. Only tested on Linux, because that's all I have.
 
Old savegames remain valid. Only tested on Linux, because that's all I have.

Revision as of 18:30, 2 June 2021

Patch for ASCII Sector 0.7.2 that fixes quests, for which no source is available.

  • The Runners spawns ships at the wrong Nav point in Rynkel.

For details see affected quest's page and description at start of patch itself. Savegames remain valid.

Only tested with Linux; in theory it should work on Win and Mac, too, if you manage to get a bash script to run. Save the code to a file, mark it as executable and run it in ASCII Sector's top directory. The script makes backups of files it changes, still, no guarantees. Feedback welcome.

#!/bin/bash -e
test $# = 0 ||exec cat <<\EOF
 Patches problems in the quests of ASCII Sector 0.7.2.		--JR05/2021

 The quest "The Runners" spawns the escort ship 'Victory' and the pirate
 attackers at the wrong place in Rynkel, because in ASCII Sector 0.7.2 the
 system has more Nav points than when "The Runners" was written.

 Old savegames remain valid. Only tested on Linux, because that's all I have.
 However we only touch data files, which are identical on Win and Mac, so patch
 should work there just the same if you can somehow manage this bash script to
 run. On Win you'd appearently need to install the "Windows Subsystem for Linux"
 first? Does this include 'stat', 'cp' and 'dd', too? Mac can run bash, I've
 read, but I have no clue where the data files are located, so the script will
 likely not find them. Feedback is welcome.

 On Linux, as far as I can tell, everything is fine. The script does some basic
 checking and backs up the file before changing. Still, use at your own risk.
EOF

unset ALT FILE
while read ADDR DATA; do
	test -n "$ADDR" -a "${ADDR#\#}" = "$ADDR" ||continue #skip comment
	set -- $DATA
	# ALT/FILE lines declare (expected) sizes and names of files following
	# data lines apply to. ALTs are optional alternative patches for the
	# concluding FILE i.e. 0-∞ ALTs + 1 FILE form a group from which exactly
	# 1 patch must apply. If ALTs aren't followed by their own data lines
	# then those of the following ALTs or the final FILE are used.
	# ALTs/FILEs can't have comments, file names might include a '#'.
	if [ "$ADDR" = ALT -o "$ADDR" = FILE ]; then
		SIZE="$1"; shift
		# We only 'stat' file size, change to 'cksum' if needed.
		if [ ! -f "$*" ] || [ "$(stat -c%s "$*")" != "$SIZE" ]; then
			# No match
			if [ "$ADDR" = FILE -a -z "$ALT" ]; then
				echo "Error: No suitable '$*'. Aborted!" >&2
				exit 1
			fi
			test "$ALT" = open ||unset FILE #end of data
			test "$ADDR" = FILE &&unset ALT #end of group
			continue
		fi
		# Match
		if [ -n "$ALT" ]; then
			echo "Error: '$*' ambiguous. Aborted!" >&2
			exit 1
		fi
		FILE="$*" #expecting data
		test "$ADDR" = ALT &&ALT=open #group matched
		if [ ! -w "$FILE" ]; then
			echo "Error: Can't write '$FILE'. Aborted!" >&2
			exit 1
		fi
		if [ -e "$FILE.bak" ]; then
			echo "Backup '$FILE.bak' already exists. Bailing out!" >&2
			exit 1
		fi
		cp -av "$FILE" "$FILE.bak"
	else
		test -n "$FILE" ||continue #data doesn't apply, skip
		test "$ALT" = open &&ALT=applying
		for DATA; do
			test "${DATA#\#}" = "$DATA" ||break #skip comment
			echo -ne "\\x$DATA"
		done | dd seek=$((0x$ADDR)) bs=1 of="$FILE" conv=notrunc status=none
	fi
done <<\EOF

# The Runners
ALT  32440 Resources/quests/ctha1.qst
FILE 32440 quests/ctha1.qst
# Scenes 12-13: escort and attackers in Rynkel, change Nav 4 to Nav 5
5BE1 14 4A 8D 47 42 42 83 2E 7E AB 8D 68 D1 61 6A 86 D3 E3 E3 D9 B2 48 98 C5
5BF9 2E C0 14 EA 58 39 60 E7 0B B4 CD 83 87 BB 15 61 52 E8 0A 25 E5 D9 AB EA
5C11 3D 5B EC 90 8C 20 E2 37 E2 89 33 38 7D 83 C0 4E 31 45 D3 31 9E 33 5B DE
5C29 8C C5 48 F5 01 42 88 69 33 8E D8 5A 43 13 55 62 D0 76 A7 B9 E3 FF 5A FE
5C41 F6 5B D0 AF 3A 53 E6 5A DF 0D E5 B4 6F C1 DC 3F 12 54 F1 AE C3 62 50 40
5C59 BB 49 7C 85 8F EE 48 C7 EC 4F 9B F2 98 7E
5C92 C8 27 06 FB 1E D7 70 2D D7 51 33 05 62 14 BC 76 BD 2C DE C8 A0 7D 3A 27
5CAA 12 43 93 84 17 C8 3B 3E EF 7D B8 84 DE 25 70 1B 58 2B EA 08 49 1F B7 76
5CC2 99 9F E1 71 E9 7F 45 29 9C B6 AF BB D9 73 3C 0E 14 45 91 7D 82 77 5C BE
5CDA D7 81 8C 47 E9 18 87 0F 0B 1E 0A E7 E7 56 D3 D9 53 3B C6 78 5B 12 93 AC
5CF2 58 A6 84 6E 71 3B C5 A8 F5 61 8D AD E0 FF 84 FC 19 CB 53 03 0A 51 CF 28
5D0A 8E 0E 32 77 FE 75 02 C9 48 84 D1 04 56 4D C9 6D 6C 28 C4 38 26 EC A2 6D
5D22 88 68 33 6A B0 DE FF 23 2E 7F 77 A2 4A 0E C7 1F A0 62 DB E3 83 AB 62 B4
5D3A D6 4C 6F 97 AF F3 5D BC 76 E0 F0 93 D8 38 29 C5 79 5B BE 2A CF AE 3E 3F
5D52 C2 34 79 B6 82 9C 11 4C 38 BB D4 15 BD 0E
5DA8 4F FB D0 9B C9 DC 2A CB F8 BA 2F A7 A8 60 C1 02 C3 A6 17 51 49 4A 5A 73
5DC0 DF 63 0E DA 41 F0 8A 5A 3D 2B 79 D1 48 AD 51 CD 85 9D 3A 73 36 A2 67 51
5DD8 2D 1C 8A 93 62 78 77 65 AC 6D 0D 3C 72 F6 21 85 72 8C 93 F5 26 99 90 FB
5DF0 B2 9B C7 B0 5F 8E E0 5C 1C 23 EE 5B 62 D8 95 AB ED B0 0E 34 D3 90 EF DE
5E08 26 87 42 6C 2E B7 B3 C7 90 99 48 FF B1 5F 55 46 20 01 AD A1 8C B6 21 A7
5E20 CB 1B 89 AD 2B E0 CF E3 4F 75 8B 56 A5 0E 5E DE E6 BA 5F 83 4D B0 02 3F
5E38 1E 98 6F 90 5E 4C 34 8E 56 37 EA 64 92 05 FC 6D 1E C4 5F D7 D0 D1 58 44
5E50 A8 EA C9 9C 05 98 7B 50 41
5EBE B7 EA 6E F8 DF 08 06 15 9E 69 34 31 39 70 36 6B 96 65 43 9A CF 68 FD F5
5ED6 91 B5 2B 0C B4 FB 67 EB 29 74 8D 21 BE 75 3E 2D 29 02 C6 11 8A 9D FE AB
5EEE 1B 0B 43 58 AD 69 CD 2C AA 4E 71 60 22 E2 90 AC BD 20 B0 CD DE 71 7D BC
5F06 80 41 45 96 D0 18 54 1C 90 74 46 7B A9 19 26 51 49 FE 4E 7C 18 44 AB 6F
5F1E 23 E0 5C 47 74 A7 99 4E 01 7E 4E A2 17 10 BD BC 16 C9 2D 7B 7B 19 22 1F
5F36 08 4A D8 FF F5 5B 49 47 1B 8E 1D FF 99 CC BA 5C 33 92 4A 66 05 B1 FE A3
5F4E 16 D3 65 88
5FB0 E2 ED D7 CB 33 D9 70 21 E7 FD 42 2F E4 D5 EE D8 F1 3B FF 20 49 59 85 A7
5FC8 F7 AA A0 83 08 26 A0 60 E3 E8 89 AB 3F 8F DC E6 3E 5D 16 4E 17 5F D6 CA
5FE0 B9 51 C7 47 E2 CF 82 6C DA 5D 74 05 F7 16 FF 0D 9F 81 44 E6 A5 CD 1C 84
5FF8 59 25 FC 99 AC F8 C6 C3 A2 E3 88 36 DC 98 B5 8D FF 2A A5 01 81 59 6B 00
6010 5E 92 9D 2E 8F BB 23 D4 2D D8 B7 DA A0 4A 9F 5E ED E9 A7 5C BB F0 2A BB
6028 DD E6 CD 39 8D FC 4C 68 2B 82 11 09 8A A6 B5 3E 48 C8 02 23 EF A5 89 C5
6040 1A C9 77 F9 EE C9 1B 67 EE F3 4B
6308 EF C2 87 CF C0 B5 4B B2 70 4A 5D F0 E9 7E 20 4C 87 32 E8 4F 8E 84 E4 E7
6320 77 BE C3 84 C8 14 D7 46 30 3E 88 BF 45 C1 87 65 A7 48 61 71 F0 86

EOF
echo "Done."