"Complex behaviour"
Introduction
After more than 3 years, it's time for a brand-new Technical Contest!
Welverin is the only person so far who achieved BWL's Technical Modding Cross. It's awarded to those people who are good in the practical or theoretical aspects of a certain field of IE mod development. I remember Welverin to be a good developer indeed, who also partipicated in one of the Total Conversion projects of the old TeamBG. However, I doubt he is the only member who deserves the Technical Modding Cross!
The task Welverin solved was a very short one, but it required knowledge in a certain field of IE mod development, so no submissions had been received for a whole day (until Welverin solved it). The current task won't be easy either, but it's not terribly difficult.
The topic of BWL's Technical Contest #2 (the present contest which thread you're just reading) is nothing else than AI scripting! Since this is a technical contest, it doesn't offer too many possibilities for creativity, but you can show how good you're in scripting and script optimization instead!
The task
We have a hostile Fighter, Archer, Cleric and Mage. All of them have AI scripts assigned, but the actual scripts for the Cleric and Mage are missing. In their present form, their default scripts just make them attack your party, the Mage and Cleric won't do anything useful. Your task is to implement their scripts (2 BAF files) precisely according to the task's specification. The task's specification is attached to the end of the present thread as a PDF file.
Four creature files and three scripts are available, and there are two missing scripts (bwcc_m.baf and bwcc_p.baf). You can install (and later uninstall) these files as a WeiDU-based "mod" with the installer attached to the end of the present thread (testenv.zip). All you have to do is creating the two missing scripts and testing if they work in the game according to the specifications (requirements).
Please read the attached specification for more information on the task, and feel free to ask any arising questions in this topic.
Submissions
The two BAF scripts (bwcc_m.baf, bwcc_p.baf) should be put into a ZIP or RAR package. You should send the package to the contest email address AND send me a forum private message (PM) here after you have sent the email. I will reply to the PM to confirm that I've received the submission. If you don't send a PM, the submission will be ignored. This is required because I might overlook the email otherwise.
One submission is allowed, and you can send an additional, "replacement" submission within one day from the time you've sent the first one. The replacement submission (if sent within the one day limit) will completely replace the first one. Replacements sent after more than one day are ignored (but they don't invalidate the first submission). Submissions sent after the deadline won't be judged.
All files in your ZIP or RAR submissions except bwcc_m.baf and bwcc_p.baf will be ignored, so please don't include anything else. The judge (probably myself, Baronius) will install your script files to the same environment as you have in the attached WeiDU-based package, and will test them in the game (and will also read the script sources). Please see the attached specification file for more information.
DEADLINE: 31st July 2008, 24:00 GMT
Scoring and guidelines
The total score is 100. Most of it consists of minor parts, so you can get partial score for very many things. In fact, scoring will usually start with 100 and (a few) points will be decreased for each problem, glitch.
The most important aspect when judging is the conformance with requirements. That is, if the requirement says "the Druid must summon a Wolf" and your solution summons a bear, you won't get full score for that part. (There is no Druid in the present contest.)
The secondary aspect when judging is (unsurprisingly) elegance, concision, unique ideas. They don't matter nearly as much as the "conformance" (= accuracy) aspect, but they can mean bonus points to your total score. In case of "equally" conform solutions, this aspect might be used to make a difference between them (but, of course, this aspect matters in other cases too).
To sum up, focus on a "good" solution even if it's "long", instead of a "cool" solution that has "wrong" parts.
In order to get the Technical Modding Cross, the winner must have at least 70 points (from 100).
Award
The winner (or winners, depending on the number of participants) will get no less than the Technical Modding Cross of BWL, provided he or she has at least 70 points.
There will be other prizes as well. We will probably give BWL forum portraits (from our Gallery) and custom subtitles too.
Hints
If you know the basics of scripting in IE mod development and want to practise a bit, don't hesitate to enter! As written above, we give partial score in very many places, so you won't get 0 points if your solution doesn't work perfectly. Although it's limited and doesn't introduce a lot of fields of scripting, this task can still be a good practice! Also, the author of the best solution gets the Technical Modding Cross, so it might be worth a try!
A few very useful hints:
- Don't be frightened after the first glance on the specification/requirements! The second part of the solution is actually very easy and includes much copying, because it is very similar to the first part. The specification seems to be long, but it's easy to read, and it explains everything in details to make the solution easier.
- Although it makes no sense to include them in the real submission, don't be afraid to modify the test files (e.g. creatures) according to your needs! For example, you can set bad saving throws for a creature, to make your tests easier! On the other hand, make sure not to modify something that would change the requirements of the contest! For example, don't change any existing game spells used by any of the contest's files.
- Your solution should be complete and accurate, but not necessarily optimal, so don't be afraid to use many script blocks if needed! If you think a script block should be duplicated and the only difference will be a minor detail, then don't hesitate to duplicate it if it solves the problem! If you have a partial or full solution that you don't want to submit yet, and you're wondering if the number of your script blocks is reasonable or not, feel free to ask it here! I will give a public hint to everyone in my reply.