The first house you search spawns the civilians at (0,0) (indicates there's something wrong with the house rects), but then all of the next houses you try to search stop at the "Search House 1" debug message and goes all the way to house 7 in the loop, and I have no idea why. Does anyone have a clue why this is happening?
JASS:
//====================================-----Mission 2----====================================
private function SearchHouseConditions takes nothing returns boolean
local unit u=GetFilterUnit()
local boolean b=GetPlayerId(GetOwningPlayer(u))<12 and IsUnitAliveBJ(u) and IsUnitType(u, UNIT_TYPE_HERO)
set u=null
return b
endfunction
private function SearchHouse takes nothing returns nothing
local integer i=1
local integer index=1
local unit u=GetEnteringUnit()
local unit c
local player p=GetOwningPlayer(u)
loop
exitwhen RectContainsUnit(House<i>, u) or i>HouseCount
call BJDebugMsg(I2S(i))
set i=i+1
endloop
call BJDebugMsg("Search house 1")
if HouseSearched<i>==true then
set u=null
set c=null
return
endif
call BJDebugMsg("Search house 2")
set HouseSearched<i>=true
set HousesRemaining=HousesRemaining-1
call BJDebugMsg("Search house 3")
call ShowUnit(u, false)
call PolledWait2(GetRandomReal(1,3))
if GetRandomInt(1,15)!=1 then
call FieldChat(u, 5, "|cff808000" + GetUnitName(u) + ":|r " + FoundCivsChat[GetRandomInt(1, 8)])
call PolledWait2(1.)
call ShowUnit(u, true)
loop
exitwhen index > GetRandomInt(1,3)
set c=CreateUnit(p, CivilianIDs[GetRandomInt(1,5)], GetRectCenterX(House<i>), GetRectCenterY(House<i>), GetRandomReal(0,360))
call GroupAddUnit(EscortedCivs,c)
set index=index+1
endloop
else //zombie fun
if GetRandomInt(1,3)!=1 then
call SetSoundPosition(gg_snd_Rifle1,GetUnitX(u),GetUnitY(u),10)
call StartSound(gg_snd_Rifle1)
call PolledWait2(.4)
call SetSoundPosition(gg_snd_Rifle2,GetUnitX(u),GetUnitY(u),10)
call StartSound(gg_snd_Rifle2)
call PolledWait2(.15)
call SetSoundPosition(gg_snd_ZombieDeath,GetUnitX(u),GetUnitY(u),10)
call StartSound(gg_snd_ZombieDeath)
call PolledWait2(1.5)
call FieldChat(u, 5, "|cff808000" + GetUnitName(u) + ":|r They ain039;t coming out.")
call PolledWait2(1.)
call ShowUnit(u, true)
else
call SetSoundPosition(gg_snd_Rifle1,GetUnitX(u),GetUnitY(u),10)
call StartSound(gg_snd_Rifle1)
call PolledWait2(.4)
call SetSoundPosition(gg_snd_Rifle2,GetUnitX(u),GetUnitY(u),10)
call StartSound(gg_snd_Rifle2)
call PolledWait2(.8)
call FieldChat(u, 5, "|cff808000" + GetUnitName(u) + ":|r Oh shit!")
call PolledWait2(1.)
call ShowUnit(u, true)
call SpawnInfectedOfType(ZID_Zombie, 3, House<i>)
endif
endif
set u=null
set c=null
endfunction
private function RescueCivConditions takes nothing returns boolean
local unit u=GetFilterUnit()
local boolean b=IsUnitInGroup(u, EscortedCivs)
set u=null
return b
endfunction
private function RescueCiv takes nothing returns nothing
local unit u=GetEnteringUnit()
local rect r
if RectContainsUnit(gg_rct_Town1,u) then
set r=gg_rct_Town1
else
set r=gg_rct_Town2
endif
call GroupRemoveUnit(EscortedCivs,u)
call SetUnitOwner(u, Player(12), true)
call IssuePointOrder(u, "move", GetRectCenterX(r)+GetRandomReal(-500,500), GetRectCenterY(r)+GetRandomReal(-500,500))
set u=null
set r=null
endfunction
private function MissionSearchForCivs takes nothing returns nothing
local region r=CreateRegion()
local region r2=CreateRegion()
local integer i=1
call RegionAddRect(r2,gg_rct_Town1)
call RegionAddRect(r2,gg_rct_Town2)
call TriggerRegisterEnterRegion(TC2,r2,Condition(function RescueCivConditions))
set House[1]=gg_rct_House1
set House[2]=gg_rct_House2
set House[3]=gg_rct_House3
set House[4]=gg_rct_House4
set House[5]=gg_rct_House5
set House[6]=gg_rct_House6
set House[7]=gg_rct_House7
set HouseCount=7
set HousesRemaining=HouseCount
set FoundCivsChat[1]="Come with me."
set FoundCivsChat[2]="I039;ve found some survivors."
set FoundCivsChat[3]="We gotta go, right now."
set FoundCivsChat[4]="We need to leave, now."
set FoundCivsChat[5]="I039;m here to save you, let039;s go!"
set FoundCivsChat[6]="You need to come with me."
set FoundCivsChat[7]="Found more survivors."
set FoundCivsChat[8]="I found some civilians."
loop
exitwhen i>HouseCount
call RegionAddRect(r,House<i>)
set HouseSearched<i>=false
set i=i+1
endloop
call TriggerRegisterEnterRegion(TC1,r,Condition(function SearchHouseConditions))
call Transmission(12.,"|cff808000Battallion:|r Intel reports civilians might be stranded in their homes in the outlying woods. Search the houses for survivors and lead them to the cities.")
call PolledWait2(9.)
call Transmission(17.,"|cff808000Battallion:|r There are 3 houses in the west woods, one near the southwest waterfall, one in the northwest cliffs, and 2 in the eastern mountain.")
call QuestSetDescription(OBJECTIVE_QUEST, "Search houses for civilians. There are 3 houses in the west woods, one near the southwest waterfall, one in the northwest cliffs, and 2 in the eastern mountain.")
set MissionTime=420*MissionTimeModifier
loop
exitwhen HousesRemaining==0 or MissionTime==0
call PolledWait2(1.)
endloop
if MissionTime==0 then
call AwardObjectiveXP(-20, "Civilians not rescued in time")
set OBJECTIVES_FAILED=OBJECTIVES_FAILED+1
else
call AwardObjectiveXP(80, "Civilians rescued")
set OBJECTIVES_SUCCEEDED=OBJECTIVES_SUCCEEDED+1
endif
call PolledWait2(8.)
call Mission3()
endfunction</i></i></i></i></i></i></i></i>