Ticket #15060: lgc.VersionCheck.lgc

File lgc.VersionCheck.lgc, 2.7 KB (added by sluicebox, 5 weeks ago)
Line 
1[
2[ lgc.VersionCheck
3[
4[
5[ This logic uses takes advantage of AGI's failure to validate
6[ string numbers to determine what version of AGI is running.
7[ Because the data in agidata.ovl varies between versions, by
8[ testing certain string values it is possible to know exactly
9[ which version is running
10
11[ s29=" Durgan" means 2.089
12s1 = m1;
13if (compare.strings(s1, s29)) {
14 IntVersion = VERSION_2089;
15 goto(found);
16}
17
18[ s41="uit." means 2.272
19s1 = m2;
20if (compare.strings(s1, s41)) {
21 IntVersion = VERSION_2272;
22 goto(found);
23}
24
25[ s55="ersion 2.xxx" means 2.411 through 2.440
26s1 = m3;
27if (compare.strings(s1, s55)) {
28 IntVersion = VERSION_2411;
29 goto(found);
30}
31s1 = m4;
32if (compare.strings(s1, s55)) {
33 IntVersion = VERSION_2425;
34 goto(found);
35}
36s1 = m5;
37if (compare.strings(s1, s55)) {
38 IntVersion = VERSION_2426;
39 goto(found);
40}
41s1 = m6;
42if (compare.strings(s1, s55)) {
43 IntVersion = VERSION_2435;
44 goto(found);
45}
46s1 = m7;
47if (compare.strings(s1, s55)) {
48 IntVersion = VERSION_2439;
49 goto(found);
50}
51s1 = m8;
52if (compare.strings(s1, s55)) {
53 IntVersion = VERSION_2440;
54 goto(found);
55}
56
57[ s56=".xxx" means 2.903 through 2.917
58s1 = m9;
59if (compare.strings(s1, s56)) {
60 IntVersion = VERSION_2903;
61 goto(found);
62}
63
64s1 = m10;
65if (compare.strings(s1, s56)) {
66 IntVersion = VERSION_2911;
67 goto(found);
68}
69s1 = m11;
70if (compare.strings(s1, s56)) {
71 IntVersion = VERSION_2912;
72 goto(found);
73}
74s1 = m12;
75if (compare.strings(s1, s56)) {
76 IntVersion = VERSION_2915;
77 goto(found);
78}
79s1 = m13;
80if (compare.strings(s1, s56)) {
81 IntVersion = VERSION_2917;
82 goto(found);
83}
84
85[ s56="ersion 2.936" means 2.936
86s1 = m14;
87if (compare.strings(s1, s56)) {
88 IntVersion = VERSION_2936;
89 goto(found);
90}
91
92[ not found
93IntVersion = 0;
94
95:found
96[ verify version supports menus
97if (IntVersion <= 2) {
98 print("Flag Quest requires an interpreter version that supports "
99 "menus. This interpreter does not. Your quest has failed.");
100 quit(1);
101}
102
103return();
104
105[*****
106[ messages [ declared messages go here
107[*****
108#message 1 " Durgan" [2.089
109#message 2 "uit." [2.272
110#message 3 "ersion 2.411" [2.411
111#message 4 "ersion 2.425" [2.425
112#message 5 "ersion 2.426" [2.426
113#message 6 "ersion 2.435" [2.435
114#message 7 "ersion 2.439" [2.439
115#message 8 "ersion 2.440" [2.440
116#message 9 ".903" [2.903
117#message 10 ".911" [2.911
118#message 11 ".912" [2.912
119#message 12 ".915" [2.915
120#message 13 ".917" [2.917
121#message 14 "ersion 2.936" [2.936
122#message 15 "ss ESC to quit." [3.002.086
123#message 16 "98" [3.002.098
124#message 17 "2.102" [3.002.102
125#message 18 "2.107" [3.002.107
126#message 19 "2.149" [3.002.149