Jay. Thanks. Well, it will be fun to make a mod on a somewhat popular topic for a change. I really really liked the Vietnam mod, but i was realistic enough to realize that it wouldnt be the most popular scenario that people would want (not to speak of making mods of strange wars in Central America). Interestingly though it seems that that particular mod seems to have had some devouted people. I have had several people email me who bought the computergame just to buy the Vietnam mod.
Now i was getting off topic. The reason i came into a Market Garden scenario is that the same guys who made the Vietnam boardgame (Victory Games) also have made a Market Garden boardgame (Hells Highway). Since i really really like Victory Games boardgames and would like to make mods of all their boardgames i started looking into it. In the end i felt their scale wrong for the subject. If you are fighting Market Garden you really want to feel the fighting from house to house in Arnhem. So in the end i choose to use the scale and look to the mechanics in the SPI monster boardghame Highway to the Reich instead.
Anyway this is a longwinding way to say that the boardgame that will be inspiring this mod will be SPI/DG Highway to the Reich
http://www.boardgamegeek.com/boardgame/ ... nd-edition
It will probably not follow as close to the Boardgame as Vietnam did. But i am quite sure i can achieve a cool mod anyway.
Anyway. I am still working on the the event to drop the paratroopers.
The skeleto of the Airdrop event has grown a little.
First here are the rules written as from the briefing
Air landing rules
Airlanding is attempted by playing the appropriate action card and choosing the hex where you want the unit to land.
Each time you try and land a unit there is a chance of each subunit scattering and landing in another hex than the one intended.
Scatter is determined by a random 100diceroll. To the value is added the weathervalue of the route chosen. Weather changes twice each day and is different if you choose the northern approach route or the southern approach route.
A roll of
50 or less means that the unit does not scatter
51-70 unit scatters +/- 1 hex in either direction
71-80 there is a 50 % chance unit scatters in +/-2 hexes in either direction
After scatter is resolved there is a chance that the unit takes losses during the landing.
The chance and size of losses depends on what type of landscape the unit lands in.
Terrain type...............................Percentage of loss in unit
Plain.........................................0-5%
Mixed terrain..............................0-10%
Light forest................................0-20%
Heavy forest..............................10-30%
Swamp......................................0-20%
Hills...........................................0-20%
Mountain....................................20-40%
Suburban....................................0-20%
Urban.........................................20-40%
City...........................................20-40%
River..........................................Unit automatically lost
Impassable..................................Unit automatically lost
The number of units landing on a single hex also affects losses. It is unwise to land more units in the exact same hex since losses are rolled for all units in a hex each time.
After scatter and losses are determined units will suffer an initial readiness penalty. Artillery units will always suffer a 100% readiness penalty. For other units the readiness penalty is calculated as follows (0,5*50+0,25*25+0,25*25+0,25*25).
Landing units will only have 25AP left.
Here are the current rules for air landing written in code form
0) SETVAR: TempVar11 = 0
1) ' Decide how many units drop
2) CHECK: TempVar0 == 5
3) SETVAR: TempVar17 = 5
4) END CHECK
5) CHECK: TempVar0 == 0
6) SETVAR: TempVar17 = 5
7) END CHECK
8) CHECK: TempVar0 == 1
9) SETVAR: TempVar17 = 6
10) END CHECK
11) CHECK: TempVar0 == 2
12) SETVAR: TempVar17 = 3
13) END CHECK
14) CHECK: TempVar0 == 3
15) SETVAR: TempVar17 = 6
16) END CHECK
17) CHECK: TempVar0 == 4
18) SETVAR: TempVar17 = 4
19) END CHECK
20) CHECK: TempVar0 == 6
21) SETVAR: TempVar17 = 4
22) END CHECK
23) LOOPER: TempVar12 FROM 0 TO TempVar17
24) SETVAR: TempVar10 = CheckRandomPercent
25) ' adjust for flight route chosen
26) CHECK: Gameslot_Use N Route(#10) == 1
27) SETVAR: TempVar10 + Gameslot_N R Weather(#8)
28) END CHECK
29) CHECK: Gameslot_Use S Route(#11) == 1
30) SETVAR: TempVar10 + Gameslot_S R weather(#7)
31) END CHECK
32) CHECK: TempVar10 > 50
33) CHECK: TempVar10 =< 70
34) SETVAR: TempVar2 - 1
35) SETVAR: TempVar3 - 1
36) CHECK: CheckRandomPercent < 51
37) SETVAR: TempVar2 + 2
38) END CHECK
39) CHECK: CheckRandomPercent < 51
40) SETVAR: TempVar3 + 2
41) END CHECK
42) END CHECK
43) END CHECK
44) CHECK: TempVar10 > 71
45) CHECK: TempVar10 =< 80
46) SETVAR: TempVar2 - 2
47) SETVAR: TempVar3 - 2
48) CHECK: CheckRandomPercent < 51
49) SETVAR: TempVar3 + 4
50) END CHECK
51) CHECK: CheckRandomPercent < 51
52) SETVAR: TempVar2 + 4
53) END CHECK
54) END CHECK
55) END CHECK
56) ' Losses because of landscape
57) SETVAR: TempVar16 = 5
58) CHECK: CheckLandscapeType(TempVar2, TempVar3) == 0
59) SETVAR: TempVar16 = 20
60) END CHECK
61) CHECK: CheckLandscapeType(TempVar2, TempVar3) == 2
62) SETVAR: TempVar16 = 10
63) END CHECK
64) CHECK: CheckLandscapeType(TempVar2, TempVar3) => 0
65) CHECK: CheckLandscapeType(TempVar2, TempVar3) =< 9
66) SETVAR: TempVar15 = CheckRandomPercent
67) CHECK: CheckLandscapeType(TempVar2, TempVar3) == 3
68) SETVAR: TempVar15 + 50
69) END CHECK
70) CHECK: CheckLandscapeType(TempVar2, TempVar3) => 6
71) CHECK: CheckLandscapeType(TempVar2, TempVar3) =< 7
72) SETVAR: TempVar15 + 100
73) END CHECK
74) END CHECK
75) CHECK: CheckLandscapeType(TempVar2, TempVar3) == 9
76) SETVAR: TempVar15 + 100
77) END CHECK
78) END CHECK
79) END CHECK
80) SETVAR: TempVar15 / TempVar16
81) ' adding units
82) CHECK: TempVar0 == 5
83) CHECK: TempVar11 == 0
84) EXECUTE: ExecAddUnit(5, TempVar2, TempVar3, 0)
85) END CHECK
86) CHECK: TempVar11 == 2
87) EXECUTE: ExecAddUnit(5, TempVar2, TempVar3, 0)
88) END CHECK
89) CHECK: TempVar11 == 1
90) EXECUTE: ExecAddUnit(5, TempVar2, TempVar3, 0)
91) END CHECK
92) CHECK: TempVar11 == 3
93) EXECUTE: ExecAddUnit(6, TempVar2, TempVar3, 0)
94) END CHECK
95) END CHECK
96) CHECK: TempVar0 == 4
97) CHECK: TempVar11 == 0
98) EXECUTE: ExecAddUnit(9, TempVar2, TempVar3, 0)
99) END CHECK
100) CHECK: TempVar11 == 1
101) EXECUTE: ExecAddUnit(9, TempVar2, TempVar3, 0)
102) END CHECK
103) CHECK: TempVar11 == 2
104) EXECUTE: ExecAddUnit(9, TempVar2, TempVar3, 0)
105) END CHECK
106) CHECK: TempVar11 == 3
107) EXECUTE: ExecAddUnit(12, TempVar2, TempVar3, 0)
108) END CHECK
109) CHECK: TempVar11 == 4
110) EXECUTE: ExecAddUnit(18, TempVar2, TempVar3, 0)
111) END CHECK
112) END CHECK
113) CHECK: TempVar0 == 0
114) CHECK: TempVar11 == 0
115) EXECUTE: ExecAddUnit(15, TempVar2, TempVar3, 0)
116) END CHECK
117) CHECK: TempVar11 > 0
118) CHECK: TempVar11 =< 3
119) EXECUTE: ExecAddUnit(17, TempVar2, TempVar3, 0)
120) END CHECK
121) END CHECK
122) CHECK: TempVar11 == 4
123) EXECUTE: ExecAddUnit(5, TempVar2, TempVar3, 0)
124) END CHECK
125) CHECK: TempVar11 == 5
126) EXECUTE: ExecAddUnit(11, TempVar2, TempVar3, 0)
127) END CHECK
128) END CHECK
129) CHECK: TempVar0 == 1
130) CHECK: TempVar11 > 0
131) CHECK: TempVar11 =< 6
132) EXECUTE: ExecAddUnit(8, TempVar2, TempVar3, 0)
133) END CHECK
134) END CHECK
135) CHECK: TempVar11 == 6
136) EXECUTE: ExecAddUnit(18, TempVar2, TempVar3, 0)
137) END CHECK
138) END CHECK
139) CHECK: TempVar0 == 2
140) CHECK: TempVar11 > 0
141) EXECUTE: ExecAddUnit(16, TempVar2, TempVar3, 0)
142) END CHECK
143) END CHECK
144) CHECK: TempVar0 == 3
145) CHECK: TempVar11 == 0
146) EXECUTE: ExecAddUnit(15, TempVar2, TempVar3, 0)
147) END CHECK
148) CHECK: TempVar11 > 0
149) CHECK: TempVar11 < 4
150) EXECUTE: ExecAddUnit(10, TempVar2, TempVar3, 0)
151) END CHECK
152) END CHECK
153) CHECK: TempVar11 == 4
154) EXECUTE: ExecAddUnit(18, TempVar2, TempVar3, 0)
155) END CHECK
156) CHECK: TempVar11 == 5
157) EXECUTE: ExecAddUnit(7, TempVar2, TempVar3, 0)
158) END CHECK
159) END CHECK
160) CHECK: TempVar0 == 6
161) CHECK: TempVar11 == 0
162) EXECUTE: ExecAddUnit(15, TempVar2, TempVar3, 0)
163) END CHECK
164) CHECK: TempVar11 > 0
165) CHECK: TempVar11 < 4
166) EXECUTE: ExecAddUnit(10, TempVar2, TempVar3, 0)
167) END CHECK
168) END CHECK
169) CHECK: TempVar11 == 4
170) EXECUTE: ExecAddUnit(18, TempVar2, TempVar3, 0)
171) END CHECK
172) END CHECK
173) EXECUTE: ExecRemoveTroops(TempVar2, TempVar3, 0, TempVar15)
174) EXECUTE: ExecRemoveTroops(TempVar2, TempVar3, 1, TempVar15)
175) EXECUTE: ExecRemoveTroops(TempVar2, TempVar3, 2, TempVar15)
176) EXECUTE: ExecRemoveTroops(TempVar2, TempVar3, 3, TempVar15)
177) ' Readines & AP of landed units
178) SETVAR: TempVar15 = CheckTotalUnits
179) CHECK: CheckRandomPercent < 50
180) EXECUTE: ExecUnitRdnModify(TempVar15, -50, -1, -1)
181) END CHECK
182) CHECK: CheckRandomPercent < 50
183) EXECUTE: ExecUnitRdnModify(TempVar15, -25, -1, -1)
184) END CHECK
185) CHECK: CheckRandomPercent < 50
186) EXECUTE: ExecUnitRdnModify(TempVar15, -25, -1, -1)
187) END CHECK
188) CHECK: CheckRandomPercent < 50
189) EXECUTE: ExecUnitRdnModify(TempVar15, -25, -1, -1)
190) END CHECK
191) CHECK: CheckUnitSFType(TempVar15, 2, -1) > 0
192) EXECUTE: ExecUnitRdnModify(TempVar15, -75, -1, -1)
193) END CHECK
194) EXECUTE: ExecUnitApModify(TempVar15, -75, -1, -1)
195) ' remove losses and destroy units in impassable terrain
196) CHECK: CheckLandscapeType(TempVar2, TempVar3) == 1
197) SETVAR: TempVar14 = CheckTotalUnits
198) EXECUTE: ExecMessage(0, 2, -1, -1)
199) EXECUTE: ExecRemoveunit(TempVar14)
200) END CHECK
201) CHECK: CheckLandscapeType(TempVar2, TempVar3) == 50
202) SETVAR: TempVar14 = CheckTotalUnits
203) EXECUTE: ExecMessage(0, 2, -1, -1)
204) EXECUTE: ExecRemoveunit(TempVar14)
205) END CHECK
206) SETVAR: TempVar11 + 1
207) END LOOPER
208) END CHECK
Finally screenshot shows units during a night round.
