Title: Custom CTL OpCodes Post by: Ghabry on April 30, 2017, 06:38:44 PM The latest version of the "Mod Selector" added support for custom CTL commands. To use them you need the latest version of ctldis, too.
Currently implemented commands: set_deployment_limit n - Sets the deployment limit on this map to "n". Call before "wait_for_deploy" in .func 100. Any ideas for further commands? Title: Re: Custom CTL OpCodes Post by: olly on May 01, 2017, 11:20:51 AM Not sure if it's possible but
1) could an enemy archer unit be instructed to attack closest player's unit, instead of whoever triggered his boundary 2) or stop following a unit it is after perhaps, to avoid being lured down the map. 3) could melee troops disengage after a certain amount of damage like archers on Trading Post http://wiki.dark-omen.org/do/DO/CTL/OpCodes (http://wiki.dark-omen.org/do/DO/CTL/OpCodes) Title: Re: Custom CTL OpCodes Post by: cuthalion on May 01, 2017, 01:46:51 PM When editing CTL scripts in campaigns, I missed a few things badly.
1. A randomizer. It was needed in many occasions. Among them - enemy units popping in one of 2-3 places to reduce predictable scenarios. Also, random magic books for own troops. 2 spells set at random out of a list of 6, for example. Many other scenarios. 2. I missed ability to read a unit's race. I had to hardcode all skaven and dwarvish phrases based on unit's ID. It is very clumsy but at that time there was no better solution. There maybe other things I will recall later...It has been quite a while since then so I almost forgot what CTL is in the first place :) Title: Re: Custom CTL OpCodes Post by: Ghabry on May 01, 2017, 11:24:33 PM Olly your requests are probably too complex for single opcodes. That should be achievable through smart ctl usage I assume.
Cuthalion: proper random is easy to add :) Guess I could also provide old opcodes which take a register argument instead of only constants, will add more flexibility (e.g. for addmagic) How is the unit race specified in wh32edit? Title: Re: Custom CTL OpCodes Post by: cuthalion on May 04, 2017, 03:29:37 PM Unit type. last 3 bytes are responsible for race.
if Type mod 8 = 0 - it's a human race etc. Type mod 8 = 1 is elves I think, etc. I do not have race order at hand, but I think you know it yourself, just you forgot. Update. Order is as follows: <unittype> <item value="0">(None)</item> <item value="8">Human infantry</item> <item value="9">Wood elf infantry</item> <item value="10">Dwarf infantry</item> <item value="11">Night goblin infantry</item> <item value="12">Orc infantry</item> <item value="13">Undead infantry</item> <item value="14">Townsfolk</item> <item value="15">Ogres</item> <item value="16">Human cavallry</item> <item value="20">Orc cavallry</item> <item value="21">Undead cavallry</item> <item value="24">Human archers</item> <item value="25">Wood elf archers</item> <item value="27">Night goblin archers</item> <item value="28">Orc archers</item> <item value="29">Skeleton archers</item> <item value="32">Human artillery</item> <item value="36">Orc artillery</item> <item value="37">Undead artillery</item> <item value="40">Human wizard</item> <item value="43">Night goblin shaman</item> <item value="44">Orc shaman</item> <item value="45">Evil wizard</item> <item value="61">Undead chariot</item> <item value="67">Fanatic</item> <item value="55">Monster</item> <item value="53">Dread King</item> </unittype> Title: Re: Custom CTL OpCodes Post by: Ghabry on May 04, 2017, 04:52:43 PM Aaah, yeah. That stuff. Was documented here: http://wiki.dark-omen.org/do/Talk:DO/ARM#Unit_Type_Bitfield (http://wiki.dark-omen.org/do/Talk:DO/ARM#Unit_Type_Bitfield)
Okay so CTL had only a unit type but no race check. good. Title: Re: Custom CTL OpCodes Post by: cuthalion on May 05, 2017, 11:29:25 AM One more thought related to race speech checks.
2 Years ago I had no better solution than to hardcode a set of unit ids that would talk dwarvish or skavenish, and do it for every of 25+ ctl mission files. Even if I had a simple race check at hand, I would still have to edit all 25+ ctl files. Is it possible to upsert global functions starting with certain func id? Functions that would override (at your own risk) default local functions. Title: Re: Custom CTL OpCodes Post by: Ghabry on May 05, 2017, 05:20:28 PM Global CTL functions sounds interesting. Conviniently Dark Omen has one function to do the function number -> address mapping so in theory it should be feasible to simply parse a 2nd CTL file which contains "global functions" and then to hook this lookup function... Will check how hard this is.
|