I am making very good progress towards releasing the next version of AGElint, v1.1. Probably by this weekend; if not, then very soon after that.
The biggest advances in the next release:
- Removing genericalness from the txt.y parser.
- Better describing errors, and not so readily defaulting to the generic, often uninformative "syntax error".
agelint errors are categorized as (a) ERRORs, including "syntax errors"; (b) WARNINGs; and (c) NOTICEs.
Here are the latest ERRORs, with instance counts, for RUS (1.04):
[root@berto agelint]# $ROOT/games/ageod/agelint/counterrs rus
errors in rus:
problematic cases:
2 FixedDate
2 ListParams1
1 SetName
1 DescEvent
1 CustomNames
1 ChgRgnDecisionFP
1 MinDate
fully vetted and confirmed:
1 Attributes
1 CheckPowerRatio
1 $Imgfam0
1 MindDate
1 NULL
1 Objectives
1 SetLevel
1 Side1
1 StrParam0
2 AddSubFacRgn
2 ChangeActorPool
2 ChgEvtOccurs
2 EvalAreaPowerRatio
2 SelectRegion
2 SetAdvRevolt
3 EvalUnqUnit
3 NULL
3 SetEvtOccurs
5 FlavorName
5 PickFromRegList
6 Effect_Str_Success
8 EvalLoyalty
9 SetUnitPoolInfos
11 StartEvent
13 SelectFaction
18 SetControl
19 AI.SetLocalInterest
36 AlterCuSubUnit
43 EvalEvent
62 SelectSubUnits
"Problematic cases" are a (very small) handful of cases where I can't yet discern the error, else I can see the error but programming a meaningful ERROR (or WARNING) message will be rather difficult. As you can see, there are just a very few remaining problematic cases. Most of the ERROR instances are fully vetted and
real.
Those are just the ERRORs. Not shown are the WARNINGs and NOTICEs. There are many more WARNINGs and NOTICEs, so all in all we're looking at hundreds and hundreds of bugs of all types.
Not shown, too, are errors for the various chk*.pl scripts (such as chkaliases.pl). The above error counts are agelint-reported errors only.
Here are the latest agelint-reported ERRORs, with instance counts, for four of the other AGEOD games (no results for PON):
[root@berto agelint]# $ROOT/games/ageod/agelint/counterrs acw
errors in acw:
1 ActorUnderUse
1 AddXPtoGroup
1 $Alpine
1 BlockadeCoo
1 BuildLevel
1 BusieCost
1 EvalMorale
1 Families
1 $Imgfam0
1 MaxDate
1 PickFromRegList
1 ScenDuration
1 SetAIPoolRatios
2 Alias
2 CommandMinima
2 DisplayTag
2 EvalBlockade
2 FixType
2 SetEvtOccurs
3 RemoveCuUnit
3 StartEvent
4 AddToRegList
4 PickUnit
5 HQStackBadNb
5 IsCityScape
8 Kentucky
8 SelRegFromArea
17 CountUnits
86 ChangeActorPool
112 EvalSubUnitCount
166 CustomNames
[root@berto agelint]# $ROOT/games/ageod/agelint/counterrs ncp
errors in ncp:
1 $-1
1 Actions
1 AdjectiveF
1 $Alpine
1 BusieCost
1 ChgFactionTag
1 CustomNames
1 EvalVP
1 FactionFileID
1 GenMsg
1 $Imgfam0
1 IsCityScape
1 MaxDate
1 MaxRank
1 Objectives
1 OffFire
1 SetLevel
1 SetName
1 StrParam0
1 test.sct
2 NumCreate
2 Text
5 CountUnits
12 SelectSubUnits
[root@berto agelint]# $ROOT/games/ageod/agelint/counterrs rop
errors in rop:
1 Actions
1 BusieCost
1 EndEvent
1 FillAmmo
1 $FRA
1 $Imgfam0
1 SetLevel
1 $Steppe
1 StrParam0
2 GenTextMsg
2 StartEvent
5 AI.SetLocalInterest
6 Text
15 AddGarrison
39 AltercuSubUnit
106 SelectSubUnits
[root@berto agelint]# $ROOT/games/ageod/agelint/counterrs wia
errors in wia:
1 BusieCost
1 ChangeRgnOwner
1 $ENG
1 FixedDate
1 GenMsg
1 $Imgfam0
1 IsCityScape
1 ListParams0
1 ScenText
1 StrParam0
1 Z
3 ScenDispName
3 SelectRegInArea
5 Actions
8 RemoveStructure
9 EvalUnqUnit
10 Leader
30 SelectSubUnits
138 CountUnits
For the four games, none of these results have been vetted yet. From experience, I infer that cases with high instance counts, such as
86 ChangeActorPool
112 EvalSubUnitCount
166 CustomNames
are likely not genuine. Probably they require txt.y parser refinements to accommodate nuances particular to each game. The smaller the instance counts, such as
1 ActorUnderUse
1 AddXPtoGroup
1 $Alpine
1 BlockadeCoo
1 BuildLevel
1 BusieCost
1 EvalMorale
1 Families
1 $Imgfam0
1 MaxDate
1 PickFromRegList
1 ScenDuration
1 SetAIPoolRatios
2 Alias
2 CommandMinima
2 DisplayTag
2 EvalBlockade
2 FixType
2 SetEvtOccurs
3 RemoveCuUnit
3 StartEvent
4 AddToRegList
4 PickUnit
5 HQStackBadNb
5 IsCityScape
8 Kentucky
8 SelRegFromArea
17 CountUnits
the more likely they signal genuine errors. ('8 Kentucky' looks to me like a quite obvious error.)
NOTE: I will not be releasing full bug reports (with agelint ERRORs, WARNINGs, NOTICEs; also chk*.pl and other errors) for RUS or any of the other games as I have done in the past. I make tools only. It's up to you to make use of those tools, and to run your own bug reports.
Anyway, at this point, I draw encouragement from these results. For AGElint v1.1, I want to fully vet results for RUS, ACW, and probably also NCP. I may decide to release before fully vetting the ROP & WIA results. (PON is back-burnered, off the stove even.) The vetting process for all games will continue in the weeks ahead -- involving, importantly, user feedback here at the forum.
So, things are looking good. You can expect to see a new and improved AGElint release sooner rather than later. Stay tuned.