Установил аддон, скопировал скрипты, удалил.
В скрипте03 (Heroes WT), как я понял, всё привязано к дополнительным классам "Speedy" и т.п., много лишнего и ненужного (для моей цели).
Вот кусок этого скрипта
; give bonuses to Speedies and correct bonus of Logistics, called from FU23072
!?FU23103; vx16 = hero number
!!IF:Wvx16;
!!VRw48:S-1; reset flag, used in FU23106
!!VRw101:S0; reset Merchant flags
!!HEvx16:P?y1/?y2/?y3;
!!TRy1/y2/y3:T?y4/?y99/?y99/?y99/?y99/?y99/?y99/?y99; y4 = terrain type
!!HEvx16:X?y5/?y6/?y99/?y99/?y99/?y99/?y99; specialty
!!VRy7:S0;
!!VRy7&y5=0/y6=2:S1; y7=1 iff hero is Logistics specilist
!!FU23080:Pvx16/3; get Speedy level
! !IF:M^23103, spec=%Y5-%Y6, terr=%Y4, sp=%W24^;
!!FU23104&y4<>8:Pvx16/v6100/y7; FU23104 called iff hero is on land (not water)
!?FU23104; called from FU23103, Speedy or Logist bonuses
; x1 = hero number, x2 - Speedy level, x3 - Logist flag
! !FU&x2=0/x3=0:E; exit if no Speedy or Logist
! !IF:L^h%X1, s/l %X2/%X3^;
!!VRy3:S99; y3 = slowest army speed
!!VRy4:S0; y4 = fastest army speed
;slot#0
!!HEx1:C0/0/?y6/?y7; y6 = army type
!!MA&y6>-1:Sy6/?y8; y8 = army speed
!!VRy3&y6>-1/y8<y3:Sy8;
!!VRy4&y6>-1/y8>y4:Sy8;
;slot#1
!!HEx1:C0/1/?y6/?y7; y6 = army type
!!MA&y6>-1:Sy6/?y8; y8 = army speed
!!VRy3&y6>-1/y8<y3:Sy8;
!!VRy4&y6>-1/y8>y4:Sy8;
;slot#2
!!HEx1:C0/2/?y6/?y7; y6 = army type
!!MA&y6>-1:Sy6/?y8; y8 = army speed
!!VRy3&y6>-1/y8<y3:Sy8;
!!VRy4&y6>-1/y8>y4:Sy8;
;slot#3
!!HEx1:C0/3/?y6/?y7; y6 = army type
!!MA&y6>-1:Sy6/?y8; y8 = army speed
!!VRy3&y6>-1/y8<y3:Sy8;
!!VRy4&y6>-1/y8>y4:Sy8;
;slot#4
!!HEx1:C0/4/?y6/?y7; y6 = army type
!!MA&y6>-1:Sy6/?y8; y8 = army speed
!!VRy3&y6>-1/y8<y3:Sy8;
!!VRy4&y6>-1/y8>y4:Sy8;
;slot#5
!!HEx1:C0/5/?y6/?y7; y6 = army type
!!MA&y6>-1:Sy6/?y8; y8 = army speed
!!VRy3&y6>-1/y8<y3:Sy8;
!!VRy4&y6>-1/y8>y4:Sy8;
;slot#6
!!HEx1:C0/6/?y6/?y7; y6 = army type
!!MA&y6>-1:Sy6/?y8; y8 = army speed
!!VRy3&y6>-1/y8<y3:Sy8;
!!VRy4&y6>-1/y8>y4:Sy8;
;set movements y7, y8 from table
!!VRy3&y3>11/y3<99:S11; !!VRy4&y4>11:S11; all speeds faster 11th are set to 11th
!!VRy7&y3=99:S2000; !!VRy8&y4=0:S2000;
!!VRy7&y3=1:S1360; !!VRy8&y4=1:S1360;
!!VRy7&y3=2:S1430; !!VRy8&y4=2:S1430;
!!VRy7&y3=3:S1500; !!VRy8&y4=3:S1500;
!!VRy7&y3=4:S1560; !!VRy8&y4=4:S1560;
!!VRy7&y3=5:S1630; !!VRy8&y4=5:S1630;
!!VRy7&y3=6:S1700; !!VRy8&y4=6:S1700;
!!VRy7&y3=7:S1760; !!VRy8&y4=7:S1760;
!!VRy7&y3=8:S1830; !!VRy8&y4=8:S1830;
!!VRy7&y3=9:S1900; !!VRy8&y4=9:S1900;
!!VRy7&y3=10:S1960; !!VRy8&y4=10:S1960;
!!VRy7&y3=11:S2000; !!VRy8&y4=11:S2000;
; Logistics correction
!!HEx1:S2/?y5; y5 = Logistics level
!!HEx1:W?y1/1; get hero's movement
!!HEx1:Ed/?y6/1; get hero's level
!!VRy9&x3=0:Sy5+10*y7:10; base SoD MPs for non-logist
!!VRy9&x3=1:Sy6*5+100*y5+1000*y7:1000; base SoD MPs for logist
!!VRy10:Sy1-y9; y10=bonus (stables, arts, monster spec.)
! !IF:M^num=%X1, spec=%X3, lvl=%Y6, log=%Y5, s=%Y7 f=%Y8, SoD=%Y9, old=%Y1, bonus=%Y10, notroop=%Y3^;
!!VRy7&x2=1:+y8:2; basic Speedy
!!VRy7&x2=2:+y8+y8+y8:4; adv. Speedy
!!VRy7&x2=3:Sy8; expert Speedy
!!VRy7&y3=99:S1300; hero with no troops
!!VRy11:Sy5+10*y7:10; base TE MPs for non-logist
! !VRy11&x3=1/y5>0:S10*y5+105*y7:100; base TE MPs for logist
!!VRy11&x3=1:Sy6*25:10+100*y5+1000*y7:1000; new base TE MPs for logist
! !IF:M^num=%X1, spec=%X3, lvl=%Y6, log=%Y5, sTE=%Y7, SOD=%Y9 TE=%Y11^;
!!VRy1:Sy11+y10; add bonus
!!HEx1:A2/70/?y99/?y12;
!!HEx1:A2/98/?y99/?y13;
!!VRy1&y12>0:-100; Equestrian's Gloves correction
!!VRy1&y13>0:-200; Boots of Speed correction
!!VRy1&y1<0:S0;
!!HEx1:Wy1; set hero' TP's back
!!HEx1:Gy1; to Grail digging
Я хотел изменить исходный скрипт сборки EraII+WoG (30 wog - enhanced secondary skills) вот этот кусок
** function for pathfinding x1 = hero x2 = pathfinding
!?FU7025;
!!HEx1:P?v7023/?v7024/?v7025; [get hero's position]
!!TR7023:T?y1/d/d/d/d/d/d/d; [get terrain type]
!!FU&y1=8:E; [exit if on water]
!!HEx1:W?y2; [get movement if on land]
!!VRy2&x2=1/y2<1760:S1760; [set to 1760 if basic]
!!VRy2&x2=2/y2<1900:S1900; [set to 1900 if advanced]
!!VRy2&x2=3/y2<2000:S2000; [set to 2000 if expert]
!!HEx1:Wy2 Gy2; [set movement, reset intial movement if on land]
** end of function
(Значения минимального передвижения я менял сам.)
По сути нужно:
- определить текущий ход героя (X);
- найти (хотя бы!) минимальную скорость юнита в армии (y), соотнести по таблице значений с количеством хода героя для этой скорости (Y);
- далее: (2000-Y)+X при pathfinding=3 (при 1 и 2 можно разность делить на 3 и на 2, соответственно).
Можно сделать и с учетом максимальной скорости юнита, как то (0.5*MaxS + 0.5*MinS, 0.75*MaxS + 0.25*MinS, MaxS), но главное корректно внедрить этот кусок в уже существующий исходный скрипт (30 wog - enhanced secondary skills), чтоб он нормально интегрировался и не баговал.