Knaust1 Posted May 5, 2010 Share Posted May 5, 2010 I cannot win that scenario even if Allied troops occupied every site of the village and there are no more enemy troops and tanks Now I examined the MissionWin trigger The condition for victory to be checked is this one SetWorkArmy (Army,2) set @check=GetNUnitsInArea(ARMY,2,All,"Gorod",NO_PANIC,NOT_EMPTY,OK_WEAPON,CREW) SetWorkArmy (Army,2) set @check=GetNUnitsInArea(ARMY,2,All,"Gorod",NO_PANIC,NOT_EMPTY,OK_WEAPON,CREW) MUL(@check10,100) DIV(@check10,@check) if (@check10<@check) then ... MissionWin() Now as @check10 is equal to @check, the if condition cannot be satisfied. Please tell me where I am wrong Link to comment Share on other sites More sharing options...
Sneaksie Posted May 6, 2010 Share Posted May 6, 2010 Where is @check10? Only @check is calculated here. Link to comment Share on other sites More sharing options...
Knaust1 Posted May 6, 2010 Author Share Posted May 6, 2010 Where is @check10? Only @check is calculated here. oopppss....sorry...I missed it the test must be read as SetWorkArmy (Army,2) set @check=GetNUnitsInArea(ARMY,2,All,"Gorod",NO_PANIC ,NOT_EMPTY,OK_WEAPON,CREW) SetWorkArmy (Army,2) set @check10=GetNUnitsInArea(ARMY,2,All,"Gorod",NO_PANIC ,NOT_EMPTY,OK_WEAPON,CREW) MUL(@check10,100) DIV(@check10,@check) if (@check10<@check) then ... MissionWin() Link to comment Share on other sites More sharing options...
Sneaksie Posted May 6, 2010 Share Posted May 6, 2010 No, you've missed some important pieces. //Calculating soldiers in Gorod zone SetWorkArmy ( ARMY , 2 ) set @check = GetNUnitsInArea ( ARMY , 2 , ALL , "Gorod" , NO_PANIC , NOT_EMPTY , OK_WEAPON , CREW ) //wait one minute Delay ( 60000 ) //Calculating soldiers in Gorod zone again SetWorkArmy ( ARMY , 2 ) set @check10 = GetNUnitsInArea ( ARMY , 2 , ALL , "Gorod" , NO_PANIC , NOT_EMPTY , OK_WEAPON , CREW ) //Calculating percentage of surviving enemy soldiers after one minute MUL ( @check10 , 100 ) DIV ( @check10 , @check ) //Compare if ( @check10 < @check ) then //So, mission will be won if you're either killing enemy soldiers really quickly (their number after one minute is ten times lower) or there are no enemy soldiers left. It looks weird (percentage compared with actual number), but would work anyway. Link to comment Share on other sites More sharing options...
Knaust1 Posted May 6, 2010 Author Share Posted May 6, 2010 No, you've missed some important pieces. //Calculating soldiers in Gorod zone SetWorkArmy ( ARMY , 2 ) set @check = GetNUnitsInArea ( ARMY , 2 , ALL , "Gorod" , NO_PANIC , NOT_EMPTY , OK_WEAPON , CREW ) //wait one minute Delay ( 60000 ) //Calculating soldiers in Gorod zone again SetWorkArmy ( ARMY , 2 ) set @check10 = GetNUnitsInArea ( ARMY , 2 , ALL , "Gorod" , NO_PANIC , NOT_EMPTY , OK_WEAPON , CREW ) //Calculating percentage of surviving enemy soldiers after one minute MUL ( @check10 , 100 ) DIV ( @check10 , @check ) //Compare if ( @check10 < @check ) then //So, mission will be won if you're either killing enemy soldiers really quickly (their number after one minute is ten times lower) or there are no enemy soldiers left. It looks weird (percentage compared with actual number), but would work anyway. uhmmm...the mission doesn't want to end, either winning or losing...and it looks like there are no enemy left so have I to wait for one day or more in order to achieve a result? moreover if no enemy left then @check=0 @check10=0 too then @check10<@check cannot be satisfied (0<0) Link to comment Share on other sites More sharing options...
Sneaksie Posted May 6, 2010 Share Posted May 6, 2010 Yes, but this check should have been satisfied earlier: @check=any number, @check10=0. I would add another condition, just in case: if ( @check = 0 ) then MissionWin() If you're positive that there are no enemies in that village, then something gone wrong. Check how often this trigger for calculating victory conditions is being called - there is no point of waiting much more than that. Link to comment Share on other sites More sharing options...
Knaust1 Posted May 6, 2010 Author Share Posted May 6, 2010 Yes, but this check should have been satisfied earlier: @check=any number, @check10=0. I would add another condition, just in case: if ( @check = 0 ) then MissionWin() If you're positive that there are no enemies in that village, then something gone wrong. Check how often this trigger for calculating victory conditions is being called - there is no point of waiting much more than that. about 10 minutes but I can't see any point where the Mission_Win trigger is called, neither in the init trigger moreover I edited the init trigger as such as the first instruction MissionWinButton ( ACTIVATE ) Delay ( 30000 ) MissionWin ( ) Halt and the scenario doesn't terminate Well no problem! Link to comment Share on other sites More sharing options...
Gnasher Posted May 6, 2010 Share Posted May 6, 2010 try playing with setfogofwar disabled this will tell you if you really have wiped out the opposing side rather than having some little shyster hiding in a building. HTH Link to comment Share on other sites More sharing options...
Knaust1 Posted May 6, 2010 Author Share Posted May 6, 2010 try playing with setfogofwar disabled this will tell you if you really have wiped out the opposing side rather than having some little shyster hiding in a building. HTH I cannot see any fog of war control button Link to comment Share on other sites More sharing options...
Recommended Posts