WAW Weather Function
Posted: Mon Sep 14, 2009 1:46 am
I made this function that will handle readiness hit against the regimes in WAW but now regimes can have winter prep 1-3 so it will take a cut out of the readiness reduction you experience. I just wanted to share the code to see if i did this the "hard" way. Or maybe help someone out if they had a similar idea.
0) ' Loop through our regimes
1) LOOPER: TempVar10 FROM 0 TO 4
2) ' Reset all hexes in slot 7 back to 0 so we don't accidently make units suffer readinessloss 2x
3) LOOPER: TempVar500 FROM 0 TO CheckMapWidth
4) LOOPER: TempVar501 FROM 0 TO CheckMapHeight
5) EXECUTE: ExecSetSlot(TempVar500, TempVar501, 7, 0)
6) END LOOPER
7) END LOOPER
8) ' Reset Vars
9) SETVAR: Gameslot_Winter Prep Level Var(#60) = 0
10) SETVAR: Gameslot_Winter Prep Penalty Reduction(#61) = 0
11) SETVAR: TempVar200 = 0
12) ' What level winter prep does a regime have?
13) ' Loop through 3 researches 48-50 for winter prep
14) LOOPER: TempVar11 FROM 48 TO 50
15) ' This temp var will let us know if they have winter prep 1 2 or 3
16) CHECK: CheckResearch(TempVar10, TempVar11) == 1
17) SETVAR: TempVar200 + 1
18) END CHECK
19) END LOOPER
20) ' multiple X .25 to get readiness for winter prep
21) SETVAR: Gameslot_Winter Prep Level Var(#60) = TempVar200
22) SETVAR: Gameslot_Winter Prep Penalty Reduction(#61) = TempVar200
23) SETVAR: Gameslot_Winter Prep Penalty Reduction(#61) * 25
24) ' What will the readinessloss be
25) SETVAR: TempVar300 = CheckRandomPercent
26) SETVAR: TempVar300 / 4
27) SETVAR: TempVar300 + 53
28) ' setup 301 to hold our value so we can modify it
29) SETVAR: TempVar301 = TempVar300
30) SETVAR: TempVar302 = TempVar300
31) ' 75% reduction because of level 3 winter prep
32) CHECK: TempVar200 == 3
33) SETVAR: TempVar301 / 4
34) SETVAR: TempVar301 * 2
35) END CHECK
36) ' 50% reduction because of level 2 winter prep
37) CHECK: TempVar200 == 2
38) SETVAR: TempVar301 / 2
39) END CHECK
40) ' 25% reduction because of level 1 winter prep
41) CHECK: TempVar200 == 1
42) SETVAR: TempVar301 / 4
43) END CHECK
44) CHECK: TempVar200 == 0
45) SETVAR: TempVar301 = 0
46) END CHECK
47) ' Remove from readiness reduction
48) SETVAR: TempVar302 - TempVar301
49) ' This is the primary weather event
50) LOOPER: TempVar0 FROM 0 TO CheckMapWidth
51) LOOPER: TempVar1 FROM 0 TO CheckMapHeight
52) ' Looking for slot 6 area 1
53) CHECK: CheckSlot(TempVar0, TempVar1, 6) == 1
54) ' Check to see if the owner of the hex is the same regime we're looping on right now
55) CHECK: CheckHexOwner(TempVar0, TempVar1) == TempVar10
56) ' lets set each hex in slot 6 as slot 7 area 20 for mods
57) EXECUTE: ExecSetSlot(TempVar0, TempVar1, 7, 20)
58) END CHECK
59) END CHECK
60) END LOOPER
61) END LOOPER
62) ' Now country winter prep comes into play
63) EXECUTE: ExecReadinessLossByArea(7, 20, TempVar302, 100)
64) EXECUTE: ExecMessage(TempVar10, -1, 0, 13)
65) END LOOPER
0) ' Loop through our regimes
1) LOOPER: TempVar10 FROM 0 TO 4
2) ' Reset all hexes in slot 7 back to 0 so we don't accidently make units suffer readinessloss 2x
3) LOOPER: TempVar500 FROM 0 TO CheckMapWidth
4) LOOPER: TempVar501 FROM 0 TO CheckMapHeight
5) EXECUTE: ExecSetSlot(TempVar500, TempVar501, 7, 0)
6) END LOOPER
7) END LOOPER
8) ' Reset Vars
9) SETVAR: Gameslot_Winter Prep Level Var(#60) = 0
10) SETVAR: Gameslot_Winter Prep Penalty Reduction(#61) = 0
11) SETVAR: TempVar200 = 0
12) ' What level winter prep does a regime have?
13) ' Loop through 3 researches 48-50 for winter prep
14) LOOPER: TempVar11 FROM 48 TO 50
15) ' This temp var will let us know if they have winter prep 1 2 or 3
16) CHECK: CheckResearch(TempVar10, TempVar11) == 1
17) SETVAR: TempVar200 + 1
18) END CHECK
19) END LOOPER
20) ' multiple X .25 to get readiness for winter prep
21) SETVAR: Gameslot_Winter Prep Level Var(#60) = TempVar200
22) SETVAR: Gameslot_Winter Prep Penalty Reduction(#61) = TempVar200
23) SETVAR: Gameslot_Winter Prep Penalty Reduction(#61) * 25
24) ' What will the readinessloss be
25) SETVAR: TempVar300 = CheckRandomPercent
26) SETVAR: TempVar300 / 4
27) SETVAR: TempVar300 + 53
28) ' setup 301 to hold our value so we can modify it
29) SETVAR: TempVar301 = TempVar300
30) SETVAR: TempVar302 = TempVar300
31) ' 75% reduction because of level 3 winter prep
32) CHECK: TempVar200 == 3
33) SETVAR: TempVar301 / 4
34) SETVAR: TempVar301 * 2
35) END CHECK
36) ' 50% reduction because of level 2 winter prep
37) CHECK: TempVar200 == 2
38) SETVAR: TempVar301 / 2
39) END CHECK
40) ' 25% reduction because of level 1 winter prep
41) CHECK: TempVar200 == 1
42) SETVAR: TempVar301 / 4
43) END CHECK
44) CHECK: TempVar200 == 0
45) SETVAR: TempVar301 = 0
46) END CHECK
47) ' Remove from readiness reduction
48) SETVAR: TempVar302 - TempVar301
49) ' This is the primary weather event
50) LOOPER: TempVar0 FROM 0 TO CheckMapWidth
51) LOOPER: TempVar1 FROM 0 TO CheckMapHeight
52) ' Looking for slot 6 area 1
53) CHECK: CheckSlot(TempVar0, TempVar1, 6) == 1
54) ' Check to see if the owner of the hex is the same regime we're looping on right now
55) CHECK: CheckHexOwner(TempVar0, TempVar1) == TempVar10
56) ' lets set each hex in slot 6 as slot 7 area 20 for mods
57) EXECUTE: ExecSetSlot(TempVar0, TempVar1, 7, 20)
58) END CHECK
59) END CHECK
60) END LOOPER
61) END LOOPER
62) ' Now country winter prep comes into play
63) EXECUTE: ExecReadinessLossByArea(7, 20, TempVar302, 100)
64) EXECUTE: ExecMessage(TempVar10, -1, 0, 13)
65) END LOOPER