1 |
|
2 |
# parse the crossfire -m8 output |
3 |
|
4 |
BEGIN { |
5 |
crosscmd = crosscmd " 2>&1"; |
6 |
god = 0; |
7 |
while (crosscmd | getline buff == 1) { |
8 |
if(buff ~ /GOD/) { god++; gift[god] =0; name[god] = get_entry(buff,2," "); } |
9 |
if(!god) continue; |
10 |
if(buff ~ /enemy:/) enemy[god] = get_entry(buff,2," "); |
11 |
if(buff ~ /aligned/) aligned[god] = get_entry(buff,2," "); |
12 |
if(buff ~ /enemy_race/) erace[god] = get_entry(buff,2," "); |
13 |
if(buff ~ /servant/) servant[god] = get_entry(get_entry(get_entry(buff,2,": "),1,")"),2"("); |
14 |
if(buff ~ /Attacks:/) atype[god] = get_entry(get_entry(buff,2,": "),1,")"); |
15 |
if(buff ~ /Immune:/) immune[god] = get_entry(get_entry(buff,2,": "),1,")"); |
16 |
if(buff ~ /Prot:/) prot[god] = get_entry(get_entry(buff,2,": "),1,")"); |
17 |
if(buff ~ /Vuln:/) vuln[god] = get_entry(get_entry(buff,2,": "),1,")"); |
18 |
if(buff ~ /Attuned:/) attuned[god] = get_entry(get_entry(buff,2,": "),1,")"); |
19 |
if(buff ~ /Repelled:/) repelled[god] = get_entry(get_entry(buff,2,": "),1,")"); |
20 |
if(buff ~ /Denied:/) denied[god] = get_entry(get_entry(buff,2,": "),1,")"); |
21 |
if(buff ~ /Desc:/) desc[god] = get_entry(get_entry(buff,2,": "),1,","); |
22 |
if(buff ~ /Priest/ || gift[god]) { |
23 |
if(!buff) continue; |
24 |
special[god,gift[god]++] = buff; |
25 |
} |
26 |
# printf(" %s \n", buff); |
27 |
} |
28 |
close(crosscmd); |
29 |
for(i=1;i<=god;i++) { |
30 |
printf("<table border=1 cellpadding=3 width=100%%><tr><th width=20%%>%s</th><td>%s</td></tr>\n", name[i], capitalize(desc[i])); |
31 |
if(enemy[i]) printf("<tr><td>Enemy cult:</td><td>%s</td></tr>\n", enemy[i]); |
32 |
# if(servant[i]) printf("<tr><td>Servant:</td><td>%s</td></tr>\n ", servant[i]); |
33 |
if(aligned[i]) prt_var("<tr><td>Aligned race(s):",aligned[i],",",3); |
34 |
if(erace[i]) prt_var("<tr><td>Enemy race(s): ",erace[i],",",3); |
35 |
if(atype[i]) prt_var("<tr><td>Attacktype(s): ",atype[i],",",3); |
36 |
if(immune[i]) prt_var("<tr><td>Immunity: ",immune[i],",",3); |
37 |
if(prot[i]) prt_var("<tr><td>Protected: ",prot[i],",",3); |
38 |
if(vuln[i]) prt_var("<tr><td>Vulnerable: ",vuln[i],",",3); |
39 |
if(attuned[i]) prt_var("<tr><td>Attuned: ",attuned[i],",",3); |
40 |
if(repelled[i]) prt_var("<tr><td>Repelled: ",repelled[i],",",3); |
41 |
if(denied[i]) prt_var("<tr><td>Denied: ",denied[i],",",3); |
42 |
for(j=1;j<gift[i];j++) { |
43 |
if(j==1) printf("<tr><td>Added gifts/limits:</td><td> "); |
44 |
if (j!=1) print(", "); |
45 |
printf("%s",special[i,j]); |
46 |
} |
47 |
if (gift[i]!=0) print("</td></tr>\n"); |
48 |
print("</table><p>"); |
49 |
} |
50 |
} |
51 |
|
52 |
function prt_var (hstr,vstr,sep,len) { |
53 |
printf("%s </td><td> ",hstr); prtlong(vstr,sep,len); |
54 |
} |
55 |
|
56 |
|
57 |
function get_entry (str,start,sep) { |
58 |
nr = split(str, var, sep); |
59 |
for(k=start;k<=nr;k++) { |
60 |
if(var[k]==" ") continue; |
61 |
break; |
62 |
} |
63 |
while(var[k] ~ /_/ ) { sub("_", " ", var[k]); } |
64 |
return var[k]; |
65 |
} |
66 |
|
67 |
function prtlong (str,sep,max) { |
68 |
nr = split(str, var, sep); |
69 |
printf("\n"); |
70 |
for(l=1;l<=nr;l++) { |
71 |
if(var[l] == "(null)") var[l] = "None"; |
72 |
if(l==nr) printf("%s </td></tr>\n",capitalize(var[l])); |
73 |
else printf("%s,",capitalize(var[l])); |
74 |
} |
75 |
} |
76 |
|
77 |
function capitalize(str) { |
78 |
return toupper(substr(str, 1, 1)) substr(str, 2); |
79 |
} |
80 |
|