The example i am looking at is getting the AI
from: http://epicwar.com/maps/17274/ (HLW Lition 7.95 with AI)
to: http://epicwar.com/maps/23671/ (HLWL 7.97 original)
As the main gameplay is identical, and the update is only bugfixes, that is what I am looking at doing.
Addit:
Unprotected: 7.95 AI Unprotected: 7.97 original Obvious AI triggers:
Code: Select all
//***********************************************IACO MODIFACATION****************************//
function O42765 takes nothing returns boolean
return(GetPlayerSlotState(GetEnumPlayer())==PLAYER_SLOT_STATE_PLAYING)
endfunction
function O42889 takes nothing returns nothing
if(O42765())then
call CreateNUnitsAtLoc(1,'ewsp',GetEnumPlayer(),GetPlayerStartLocationLoc(GetEnumPlayer()),bj_UNIT_FACING)
else
call DoNothing()
endif
endfunction
function O42890 takes nothing returns nothing
if(O42765())then
if((GetEnumPlayer()==Player(1))or(GetEnumPlayer()==Player(2))or(GetEnumPlayer()==Player(3))or(GetEnumPlayer()==Player(4)))then
set udg_integer30=GetRandomInt(1,udg_integer29)
call CreateNUnitsAtLoc(1,udg_integers06[udg_integers07[udg_integer30]],GetEnumPlayer(),GetRectCenter(udg_rect24),bj_UNIT_FACING)
call SelectUnitForPlayerSingle(GetLastCreatedUnit(),GetOwningPlayer(GetLastCreatedUnit()))
call DisplayTextToForce(GetPlayersAll(),("A computer chose "+GetUnitName(GetLastCreatedUnit())))
call AdjustPlayerStateBJ(50,GetEnumPlayer(),PLAYER_STATE_RESOURCE_GOLD)
set udg_integers07[udg_integer30]=udg_integer29
set udg_integer29=(udg_integer29-1)
if(GetAIDifficulty(GetEnumPlayer())==AI_DIFFICULTY_INSANE)then
call SetPlayerHandicapXP(GetEnumPlayer(),2.5)
elseif(GetAIDifficulty(GetEnumPlayer())==AI_DIFFICULTY_NORMAL)then
call SetPlayerHandicapXP(GetEnumPlayer(),1.5)
endif
endif
if((GetEnumPlayer()==Player(5))or GetEnumPlayer()==Player(6)or GetEnumPlayer()==Player(7)or GetEnumPlayer()==Player(8)or GetEnumPlayer()==Player(9))then
set udg_integer30=GetRandomInt(1,udg_integer29)
call CreateNUnitsAtLoc(1,udg_integers06[udg_integers07[udg_integer30]],GetEnumPlayer(),GetRectCenter(udg_rect25),bj_UNIT_FACING)
call SelectUnitForPlayerSingle(GetLastCreatedUnit(),GetOwningPlayer(GetLastCreatedUnit()))
call DisplayTextToForce(GetPlayersAll(),("A computer chose "+GetUnitName(GetLastCreatedUnit())))
call AdjustPlayerStateBJ(50,GetEnumPlayer(),PLAYER_STATE_RESOURCE_GOLD)
set udg_integers07[udg_integer30]=udg_integer29
set udg_integer29=(udg_integer29-1)
if(GetAIDifficulty(GetEnumPlayer())==AI_DIFFICULTY_INSANE)then
call SetPlayerHandicapXP(GetEnumPlayer(),2.5)
elseif(GetAIDifficulty(GetEnumPlayer())==AI_DIFFICULTY_NORMAL)then
call SetPlayerHandicapXP(GetEnumPlayer(),1.5)
endif
endif
else
call DoNothing()
endif
endfunction
function O42995 takes nothing returns nothing
call ForForce(GetPlayersByMapControl(MAP_CONTROL_USER),function O42889)
call ForForce(GetPlayersByMapControl(MAP_CONTROL_COMPUTER),function O42890)
call DisableTrigger(udg_trigger02)
call DisableTrigger(udg_trigger03)
endfunction
///////////////////AI
//Achat dans les batiments et ou str,int,agi//
function O42997 takes nothing returns nothing
local player PlayerActu=GetEnumPlayer()
local integer GoldOfPlayer
local group Town
local integer Rand=GetRandomInt(0,4)
local unit BuyBulding
local integer Cpt=0
local unit HeroActu=FirstOfGroup(GetUnitsOfPlayerAll(PlayerActu))
set Town=GetUnitsOfPlayerAndTypeId(PlayerActu,'htow')
set GoldOfPlayer=GetPlayerState(PlayerActu,PLAYER_STATE_RESOURCE_GOLD)
if((IsUnitGroupEmptyBJ(Town))==false)then//Ville lvl 1
set BuyBulding=FirstOfGroup(Town)
loop
exitwhen(GoldOfPlayer<5 or Cpt==10)//Fix boucle infini//don't find function UnitsInStock()
set Cpt=Cpt+1
set GoldOfPlayer=GetPlayerState(PlayerActu,PLAYER_STATE_RESOURCE_GOLD)
if(GoldOfPlayer>9000)then//Fix to many creeps:(
if(GoldOfPlayer>=30000)then
if(IssueTrainOrderByIdBJ(BuyBulding,'n00B'))then
set udg_integers08[GetPlayerId(PlayerActu)]=3
endif
endif
else
if(IssueTrainOrderByIdBJ(BuyBulding,'n00C')==false)then
if(IssueTrainOrderByIdBJ(BuyBulding,'n009')==false)then
if(IssueTrainOrderByIdBJ(BuyBulding,'n008')==false)then
if(IssueTrainOrderByIdBJ(BuyBulding,'n007')==false)then
if(IssueTrainOrderByIdBJ(BuyBulding,'n006')==false)then
if(IssueTrainOrderByIdBJ(BuyBulding,'n005')==false)then
if(IssueTrainOrderByIdBJ(BuyBulding,'n004')==false)then
if(IssueTrainOrderByIdBJ(BuyBulding,'n003')==false)then
if(IssueTrainOrderByIdBJ(BuyBulding,'n002')==false)then
if(IssueTrainOrderByIdBJ(BuyBulding,'n001')==false)then
call DoNothing()
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endloop
endif
set Town=GetUnitsOfPlayerAndTypeId(PlayerActu,1868984948)
if((IsUnitGroupEmptyBJ(Town))==false)then//Ville lvl 2
set BuyBulding=FirstOfGroup(Town)
loop
exitwhen(GoldOfPlayer<1000 or Cpt==10)//Fix boucle infini//don't find function UnitsInStock()
set Cpt=Cpt+1
set GoldOfPlayer=GetPlayerState(PlayerActu,PLAYER_STATE_RESOURCE_GOLD)
if(GoldOfPlayer>=100000)then
call IssueTrainOrderByIdBJ(BuyBulding,'n00M')
elseif(GoldOfPlayer>10000 and udg_integers08[GetPlayerId(PlayerActu)]==3)then
if(GetHeroInt(HeroActu,false)>=GetHeroStr(HeroActu,false)and GetHeroInt(HeroActu,false)>=GetHeroAgi(HeroActu,false))then
call O129851mod(PlayerActu)//int
elseif(GetHeroStr(HeroActu,false)>=GetHeroInt(HeroActu,false)and GetHeroStr(HeroActu,false)>=GetHeroAgi(HeroActu,false))then
call O129229mod(PlayerActu)//str
elseif(GetHeroAgi(HeroActu,false)>=GetHeroStr(HeroActu,false)and GetHeroAgi(HeroActu,false)>=GetHeroInt(HeroActu,false))then
call O129530mod(PlayerActu)//agi
endif
set udg_integers08[GetPlayerId(PlayerActu)]=2
elseif(GoldOfPlayer>10000 and udg_integers08[GetPlayerId(PlayerActu)]==2)then
if(GetHeroInt(HeroActu,false)>=GetHeroStr(HeroActu,false)and GetHeroInt(HeroActu,false)>=GetHeroAgi(HeroActu,false))then
call O129851mod(PlayerActu)//int
elseif(GetHeroStr(HeroActu,false)>=GetHeroInt(HeroActu,false)and GetHeroStr(HeroActu,false)>=GetHeroAgi(HeroActu,false))then
call O129530mod(PlayerActu)//agi
elseif(GetHeroAgi(HeroActu,false)>=GetHeroStr(HeroActu,false)and GetHeroAgi(HeroActu,false)>=GetHeroInt(HeroActu,false))then
call O129229mod(PlayerActu)//str
endif
set udg_integers08[GetPlayerId(PlayerActu)]=1
elseif(GoldOfPlayer>20000 and udg_integers08[GetPlayerId(PlayerActu)]==1)then
if(GetHeroInt(HeroActu,false)>=GetHeroStr(HeroActu,false)and GetHeroInt(HeroActu,false)>=GetHeroAgi(HeroActu,false))then
call O129851mod(PlayerActu)//int
elseif(GetHeroStr(HeroActu,false)>=GetHeroInt(HeroActu,false)and GetHeroStr(HeroActu,false)>=GetHeroAgi(HeroActu,false))then
call O129229mod(PlayerActu)//str
elseif(GetHeroAgi(HeroActu,false)>=GetHeroStr(HeroActu,false)and GetHeroAgi(HeroActu,false)>=GetHeroInt(HeroActu,false))then
call O129530mod(PlayerActu)//agi
endif
set udg_integers08[GetPlayerId(PlayerActu)]=10
elseif(GoldOfPlayer>70000 and udg_integers08[GetPlayerId(PlayerActu)]==10)then
if(GetHeroInt(HeroActu,false)>=GetHeroStr(HeroActu,false)and GetHeroInt(HeroActu,false)>=GetHeroAgi(HeroActu,false))then
call O129851mod(PlayerActu)//int
elseif(GetHeroStr(HeroActu,false)>=GetHeroInt(HeroActu,false)and GetHeroStr(HeroActu,false)>=GetHeroAgi(HeroActu,false))then
call O129229mod(PlayerActu)//str
elseif(GetHeroAgi(HeroActu,false)>=GetHeroStr(HeroActu,false)and GetHeroAgi(HeroActu,false)>=GetHeroInt(HeroActu,false))then
call O129530mod(PlayerActu)//agi
endif
set udg_integers08[GetPlayerId(PlayerActu)]=9
elseif(GoldOfPlayer>70000 and udg_integers08[GetPlayerId(PlayerActu)]==9)then
if(GetHeroInt(HeroActu,false)>=GetHeroStr(HeroActu,false)and GetHeroInt(HeroActu,false)>=GetHeroAgi(HeroActu,false))then
call O129530mod(PlayerActu)//agi
elseif(GetHeroStr(HeroActu,false)>=GetHeroInt(HeroActu,false)and GetHeroStr(HeroActu,false)>=GetHeroAgi(HeroActu,false))then
call O129530mod(PlayerActu)//agi
elseif(GetHeroAgi(HeroActu,false)>=GetHeroStr(HeroActu,false)and GetHeroAgi(HeroActu,false)>=GetHeroInt(HeroActu,false))then
call O129229mod(PlayerActu)//str
endif
set udg_integers08[GetPlayerId(PlayerActu)]=20
else
if(IssueTrainOrderByIdBJ(BuyBulding,'n00N')==false)then
if(IssueTrainOrderByIdBJ(BuyBulding,'n00L')==false)then
if(IssueTrainOrderByIdBJ(BuyBulding,'n00K')==false)then
if(IssueTrainOrderByIdBJ(BuyBulding,'n00J')==false)then
if(IssueTrainOrderByIdBJ(BuyBulding,'n00I')==false)then
if(IssueTrainOrderByIdBJ(BuyBulding,'n00H')==false)then
if(IssueTrainOrderByIdBJ(BuyBulding,'n00G')==false)then
if(IssueTrainOrderByIdBJ(BuyBulding,'n00F')==false)then
if(IssueTrainOrderByIdBJ(BuyBulding,'n00E')==false)then
if(IssueTrainOrderByIdBJ(BuyBulding,'n00D')==false)then
call DoNothing()
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endloop
endif
set Town=GetUnitsOfPlayerAndTypeId(PlayerActu,'unp2')
if((IsUnitGroupEmptyBJ(Town))==false)then//Ville lvl 3
set BuyBulding=FirstOfGroup(Town)
loop
exitwhen(GoldOfPlayer<2250 or Cpt==10)//Fix boucle infini//don't find function UnitsInStock()
set Cpt=Cpt+1
set GoldOfPlayer=GetPlayerState(PlayerActu,PLAYER_STATE_RESOURCE_GOLD)
if((GoldOfPlayer>=300000 and Rand!=0 and Rand!=4))then
if(Rand==1)then//achat de comp_nce principal
if(GetHeroInt(HeroActu,false)>=GetHeroStr(HeroActu,false)and GetHeroInt(HeroActu,false)>=GetHeroAgi(HeroActu,false))then
call O129851mod(PlayerActu)//int
elseif(GetHeroStr(HeroActu,false)>=GetHeroInt(HeroActu,false)and GetHeroStr(HeroActu,false)>=GetHeroAgi(HeroActu,false))then
call O129229mod(PlayerActu)//str
elseif(GetHeroAgi(HeroActu,false)>=GetHeroStr(HeroActu,false)and GetHeroAgi(HeroActu,false)>=GetHeroInt(HeroActu,false))then
call O129530mod(PlayerActu)//agi
endif
elseif(Rand==2)then
call SetPlayerState(PlayerActu,PLAYER_STATE_RESOURCE_GOLD,0)//acheter bois
call SetPlayerState(PlayerActu,PLAYER_STATE_RESOURCE_LUMBER,GetPlayerState(PlayerActu,PLAYER_STATE_RESOURCE_LUMBER)+10)
elseif(Rand==3)then//acheter Comp_nce secondaire
if(GetHeroInt(HeroActu,false)>=GetHeroStr(HeroActu,false)and GetHeroInt(HeroActu,false)>=GetHeroAgi(HeroActu,false))then
call O129530mod(PlayerActu)//agi
elseif(GetHeroStr(HeroActu,false)>=GetHeroInt(HeroActu,false)and GetHeroStr(HeroActu,false)>=GetHeroAgi(HeroActu,false))then
call O129530mod(PlayerActu)//agi
elseif(GetHeroAgi(HeroActu,false)>=GetHeroStr(HeroActu,false)and GetHeroAgi(HeroActu,false)>=GetHeroInt(HeroActu,false))then
call O129229mod(PlayerActu)//str
endif
endif
else
if(IssueTrainOrderByIdBJ(BuyBulding,'n00Q')==false)then
if(IssueTrainOrderByIdBJ(BuyBulding,'ufro')==false)then
if(IssueTrainOrderByIdBJ(BuyBulding,'n012')==false)then
if(IssueTrainOrderByIdBJ(BuyBulding,'n011')==false)then
if(IssueTrainOrderByIdBJ(BuyBulding,'n010')==false)then
if(IssueTrainOrderByIdBJ(BuyBulding,'n00Z')==false)then
if(IssueTrainOrderByIdBJ(BuyBulding,'n00Y')==false)then
if(IssueTrainOrderByIdBJ(BuyBulding,'n00X')==false)then
if(IssueTrainOrderByIdBJ(BuyBulding,'n00W')==false)then
if(IssueTrainOrderByIdBJ(BuyBulding,'n00V')==false)then
if(IssueTrainOrderByIdBJ(BuyBulding,'n00U')==false)then
if(IssueTrainOrderByIdBJ(BuyBulding,'n00T')==false)then
if(IssueTrainOrderByIdBJ(BuyBulding,'n00S')==false)then
if(IssueTrainOrderByIdBJ(BuyBulding,'n00R')==false)then
call DoNothing()
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endloop
endif
endfunction
function O42996 takes nothing returns nothing
call ForForce(GetPlayersByMapControl(MAP_CONTROL_COMPUTER),function O42997)
endfunction
//Mouvement des h_s//
function O42999 takes nothing returns nothing
//S'il y a des unites devant le cercle:le hros y vas
local group DevantLeCercle1=GetUnitsInRectOfPlayer(Rect(3700.0,700.0,4430.0,-450.0),Player(11))//rect haut
local group DevantLeCercle2=GetUnitsInRectOfPlayer(Rect(3700.0,-4650.0,4430.0,-6000.0),Player(10))
local unit Her=FirstOfGroup(GetUnitsOfPlayerAll(GetEnumPlayer()))
if(udg_integer32<0)then
if(IsUnitGroupEmptyBJ(DevantLeCercle1)==false and GetPlayerTeam(GetEnumPlayer())==GetPlayerTeam(Player(10)))then
if(RectContainsUnit(Rect(3700.0,700.0,4430.0,-450.0),Her)==false)then
call IssueTargetOrderBJ(Her,"attack",FirstOfGroup(DevantLeCercle1))
endif
elseif(IsUnitGroupEmptyBJ(DevantLeCercle2)==false and GetPlayerTeam(GetEnumPlayer())==GetPlayerTeam(Player(11)))then
if(RectContainsUnit(Rect(3700.0,-4650.0,4430.0,-6000.0),Her)==false)then
call IssueTargetOrderBJ(Her,"attack",FirstOfGroup(DevantLeCercle2))
endif
endif
//S'il a plus de vie go to fontaine
if(GetUnitLifePercent(Her)<25.0 and GetPlayerTeam(GetEnumPlayer())==GetPlayerTeam(Player(10)))then
call IssuePointOrderLocBJ(Her,"move",Location(4430.0,700.0))
elseif(GetUnitLifePercent(Her)<25.0 and GetPlayerTeam(GetEnumPlayer())==GetPlayerTeam(Player(11)))then
call IssuePointOrderLocBJ(Her,"move",Location(4430.0,-4650.0))
endif
else//premier mouvement
if(GetEnumPlayer()==Player(0)or GetEnumPlayer()==Player(2))then
call IssuePointOrderLocBJ(Her,"move",Location(1500.0,885.0))
elseif(GetEnumPlayer()==Player(1)or GetEnumPlayer()==Player(3)or GetEnumPlayer()==Player(4))then
call IssuePointOrderLocBJ(Her,"move",Location(1500.0,-644.0))
elseif(GetEnumPlayer()==Player(5)or GetEnumPlayer()==Player(8)or GetEnumPlayer()==Player(7))then
call IssuePointOrderLocBJ(Her,"move",Location(1500.0,-4610.0))
elseif(GetEnumPlayer()==Player(6)or GetEnumPlayer()==Player(9))then
call IssuePointOrderLocBJ(Her,"move",Location(1500.0,-6100.0))
endif
set udg_integer32=udg_integer32-1
endif
endfunction
function O42998 takes nothing returns nothing
call ForForce(GetPlayersByMapControl(MAP_CONTROL_COMPUTER),function O42999)
endfunction
//Evolution des h_s//
function O43021 takes nothing returns nothing
local unit Hero=FirstOfGroup(GetUnitsOfPlayerAll(GetEnumPlayer()))
local integer array S123
local integer array skills1
local integer lvl=0
if(GetHeroSkillPoints(Hero)>0)then
if(GetUnitTypeId(Hero)=='E00B')then
set skills1[1]='A000'
set skills1[2]='A00T'
set skills1[3]='A02Y'
set skills1[4]='A000'
set skills1[5]='A00T'
set skills1[6]='A03C'
set skills1[7]='A02Y'
set skills1[8]='A000'
set skills1[9]='A00T'
set skills1[10]='A02Y'
set skills1[11]='A000'
set skills1[12]='A00T'
set skills1[13]='A02Y'
set skills1[14]='A000'
set skills1[15]='A00T'
set skills1[16]='A03C'
set skills1[17]='A02Y'
set skills1[18]='A000'
set skills1[19]='A00T'
set skills1[20]='A02Y'
set skills1[21]='A000'
set skills1[22]='A00T'
set skills1[23]='A02Y'
set skills1[24]='A000'
set skills1[25]='A00T'
set skills1[26]='A03C'
set skills1[27]='A02Y'
set skills1[28]='A000'
set skills1[29]='A00T'
set skills1[30]='A02Y'
set lvl=GetHeroLevel(Hero)
if(lvl<=30)then
call SelectHeroSkill(Hero,skills1[lvl])
else
call SelectHeroSkill(Hero,'A000')
endif
elseif(GetUnitTypeId(Hero)=='E00E')then
set skills1[1]='A000'
set skills1[2]='A02I'
set skills1[3]='A002'
set skills1[4]='A000'
set skills1[5]='A02I'
set skills1[6]='A032'
set skills1[7]='A002'
set skills1[8]='A000'
set skills1[9]='A02I'
set skills1[10]='A002'
set lvl=GetHeroLevel(Hero)
if(lvl<=30)then
call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
else
call SelectHeroSkill(Hero,'A000')
endif
elseif(GetUnitTypeId(Hero)=='E00O')then
set skills1[1]='A04S'
set skills1[2]='A00Y'
set skills1[3]='A000'
set skills1[4]='A04S'
set skills1[5]='A00Y'
set skills1[6]='A04O'
set skills1[7]='A000'
set skills1[8]='A04S'
set skills1[9]='A00Y'
set skills1[10]='A000'
set lvl=GetHeroLevel(Hero)
if(lvl<=30)then
call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
else
call SelectHeroSkill(Hero,'A000')
endif
elseif(GetUnitTypeId(Hero)=='E00Q')then
set skills1[1]='A050'
set skills1[2]='A051'
set skills1[3]='A000'
set skills1[4]='A050'
set skills1[5]='A051'
set skills1[6]='A053'
set skills1[7]='A000'
set skills1[8]='A050'
set skills1[9]='A051'
set skills1[10]='A000'
set lvl=GetHeroLevel(Hero)
if(lvl<=30)then
call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
else
call SelectHeroSkill(Hero,'A000')
endif
elseif(GetUnitTypeId(Hero)=='H000')then
set skills1[1]='A000'
set skills1[2]='A00Z'
set skills1[3]='A034'
set skills1[4]='A000'
set skills1[5]='A00Z'
set skills1[6]='A02V'
set skills1[7]='A034'
set skills1[8]='A000'
set skills1[9]='A00Z'
set skills1[10]='A034'
set lvl=GetHeroLevel(Hero)
if(lvl<=30)then
call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
else
call SelectHeroSkill(Hero,'A000')
endif
elseif(GetUnitTypeId(Hero)=='H001')then
set skills1[1]='A000'
set skills1[2]='A00Q'
set skills1[3]='A00G'
set skills1[4]='A000'
set skills1[5]='A00Q'
set skills1[6]='AUin'
set skills1[7]='A00G'
set skills1[8]='A000'
set skills1[9]='A00Q'
set skills1[10]='A00G'
set lvl=GetHeroLevel(Hero)
if(lvl<=30)then
call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
else
call SelectHeroSkill(Hero,'A000')
endif
elseif(GetUnitTypeId(Hero)=='H002')then
set skills1[1]='A000'
set skills1[2]='A04H'
set skills1[3]='A01E'
set skills1[4]='A000'
set skills1[5]='A04H'
set skills1[6]='A01F'
set skills1[7]='A01E'
set skills1[8]='A000'
set skills1[9]='A04H'
set skills1[10]='A01E'
set lvl=GetHeroLevel(Hero)
if(lvl<=30)then
call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
else
call SelectHeroSkill(Hero,'A000')
endif
elseif(GetUnitTypeId(Hero)=='H003')then
set skills1[1]='A000'
set skills1[2]='A03Y'
set skills1[3]='A00H'
set skills1[4]='A000'
set skills1[5]='A03Y'
set skills1[6]='A01B'
set skills1[7]='A00H'
set skills1[8]='A000'
set skills1[9]='A03Y'
set skills1[10]='A00H'
set lvl=GetHeroLevel(Hero)
if(lvl<=30)then
call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
else
call SelectHeroSkill(Hero,'A000')
endif
elseif(GetUnitTypeId(Hero)=='H007')then
set skills1[1]='A000'
set skills1[2]='A02L'
set skills1[3]='A01D'
set skills1[4]='A000'
set skills1[5]='A02L'
set skills1[6]='A04J'
set skills1[7]='A01D'
set skills1[8]='A000'
set skills1[9]='A02L'
set skills1[10]='A01D'
set lvl=GetHeroLevel(Hero)
if(lvl<=30)then
call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
else
call SelectHeroSkill(Hero,'A000')
endif
elseif(GetUnitTypeId(Hero)=='H00D')then
set skills1[1]='A04V'
set skills1[2]='A04U'
set skills1[3]='A000'
set skills1[4]='A04V'
set skills1[5]='A04U'
set skills1[6]='A04W'
set skills1[7]='A000'
set skills1[8]='A04V'
set skills1[9]='A04U'
set skills1[10]='A000'
set lvl=GetHeroLevel(Hero)
if(lvl<=30)then
call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
else
call SelectHeroSkill(Hero,'A000')
endif
elseif(GetUnitTypeId(Hero)=='H00V')then
set skills1[1]='A054'
set skills1[2]='A055'
set skills1[3]='A000'
set skills1[4]='A054'
set skills1[5]='A055'
set skills1[6]='A056'
set skills1[7]='A000'
set skills1[8]='A054'
set skills1[9]='A055'
set skills1[10]='A000'
set lvl=GetHeroLevel(Hero)
if(lvl<=30)then
call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
else
call SelectHeroSkill(Hero,'A000')
endif
elseif(GetUnitTypeId(Hero)=='N026')then
set skills1[1]='A04Y'
set skills1[2]='A04Z'
set skills1[3]='A000'
set skills1[4]='A04Y'
set skills1[5]='A04Z'
set skills1[6]='A053'
set skills1[7]='A000'
set skills1[8]='A04Y'
set skills1[9]='A04Z'
set skills1[10]='A000'
set lvl=GetHeroLevel(Hero)
if(lvl<=30)then
call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
else
call SelectHeroSkill(Hero,'A000')
endif
elseif(GetUnitTypeId(Hero)=='Nbrn')then
set skills1[1]='A000'
set skills1[2]='A015'
set skills1[3]='A00C'
set skills1[4]='A000'
set skills1[5]='A015'
set skills1[6]='A017'
set skills1[7]='A00C'
set skills1[8]='A000'
set skills1[9]='A015'
set skills1[10]='A00C'
set lvl=GetHeroLevel(Hero)
if(lvl<=30)then
call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
else
call SelectHeroSkill(Hero,'A000')
endif
elseif(GetUnitTypeId(Hero)=='Nngs')then
set skills1[1]='A000'
set skills1[2]='A012'
set skills1[3]='A00R'
set skills1[4]='A000'
set skills1[5]='A012'
set skills1[6]='A00M'
set skills1[7]='A00R'
set skills1[8]='A000'
set skills1[9]='A012'
set skills1[10]='A00R'
set lvl=GetHeroLevel(Hero)
if(lvl<=30)then
call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
else
call SelectHeroSkill(Hero,'A000')
endif
elseif(GetUnitTypeId(Hero)=='Npbm')then
set skills1[1]='A000'
set skills1[2]='A018'
set skills1[3]='A019'
set skills1[4]='A000'
set skills1[5]='A018'
set skills1[6]='A00S'
set skills1[7]='A019'
set skills1[8]='A000'
set skills1[9]='A018'
set skills1[10]='A019'
set lvl=GetHeroLevel(Hero)
if(lvl<=30)then
call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
else
call SelectHeroSkill(Hero,'A000')
endif
elseif(GetUnitTypeId(Hero)=='Ntin')then
set skills1[1]='A041'
set skills1[2]='A000'
set skills1[3]='A000'
set skills1[4]='A041'
set skills1[5]='A000'
set skills1[6]='AOre'
set skills1[7]='A000'
set skills1[8]='A041'
set skills1[9]='A000'
set skills1[10]='A000'
set lvl=GetHeroLevel(Hero)
if(lvl<=30)then
call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
else
call SelectHeroSkill(Hero,'A000')
endif
elseif(GetUnitTypeId(Hero)=='O001')then
set skills1[1]='A000'
set skills1[2]='A043'
set skills1[3]='A000'
set skills1[4]='A000'
set skills1[5]='A043'
set skills1[6]='A046'
set skills1[7]='A000'
set skills1[8]='A000'
set skills1[9]='A043'
set skills1[10]='A000'
set lvl=GetHeroLevel(Hero)
if(lvl<=30)then
call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
else
call SelectHeroSkill(Hero,'A000')
endif
elseif(GetUnitTypeId(Hero)=='O002')then
set skills1[1]='A000'
set skills1[2]='A02Z'
set skills1[3]='A00U'
set skills1[4]='A000'
set skills1[5]='A02Z'
set skills1[6]='A00W'
set skills1[7]='A00U'
set skills1[8]='A000'
set skills1[9]='A02Z'
set skills1[10]='A00U'
set lvl=GetHeroLevel(Hero)
if(lvl<=30)then
call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
else
call SelectHeroSkill(Hero,'A000')
endif
elseif(GetUnitTypeId(Hero)=='O00C')then
set skills1[1]='A000'
set skills1[2]='A039'
set skills1[3]='A000'
set skills1[4]='A000'
set skills1[5]='A039'
set skills1[6]='A03A'
set skills1[7]='A000'
set skills1[8]='A000'
set skills1[9]='A039'
set skills1[10]='A000'
set skills1[11]='A000'
set skills1[12]='A039'
set skills1[13]='A000'
set skills1[14]='A000'
set skills1[15]='A039'
set skills1[16]='A03A'
set skills1[17]='A000'
set skills1[18]='A000'
set skills1[19]='A039'
set skills1[20]='A000'
set skills1[21]='A000'
set skills1[22]='A039'
set skills1[23]='A000'
set skills1[24]='A000'
set skills1[25]='A039'
set skills1[26]='A03A'
set skills1[27]='A000'
set skills1[28]='A000'
set skills1[29]='A039'
set skills1[30]='A000'
set lvl=GetHeroLevel(Hero)
if(lvl<=30)then
call SelectHeroSkill(Hero,skills1[lvl])
else
call SelectHeroSkill(Hero,'A000')
endif
elseif(GetUnitTypeId(Hero)=='U008')then
set skills1[1]='A04P'
set skills1[2]='A04Q'
set skills1[3]='A000'
set skills1[4]='A04P'
set skills1[5]='A04Q'
set skills1[6]='A042'
set skills1[7]='A000'
set skills1[8]='A04P'
set skills1[9]='A04Q'
set skills1[10]='A000'
set skills1[11]='A04P'
set skills1[12]='A04Q'
set skills1[13]='A000'
set skills1[14]='A04P'
set skills1[15]='A04Q'
set skills1[16]='A042'
set skills1[17]='A000'
set skills1[18]='A04P'
set skills1[19]='A04Q'
set skills1[20]='A000'
set skills1[21]='A04P'
set skills1[22]='A04Q'
set skills1[23]='A000'
set skills1[24]='A04P'
set skills1[25]='A04Q'
set skills1[26]='A042'
set skills1[27]='A000'
set skills1[28]='A04P'
set skills1[29]='A04Q'
set skills1[30]='A000'
set lvl=GetHeroLevel(Hero)
if(lvl<=30)then
call SelectHeroSkill(Hero,skills1[lvl])
else
call SelectHeroSkill(Hero,'A000')
endif
elseif(GetUnitTypeId(Hero)=='U00C')then
set skills1[1]='A00E'
set skills1[2]='A052'
set skills1[3]='A000'
set skills1[4]='A00E'
set skills1[5]='A052'
set skills1[6]='A053'
set skills1[7]='A000'
set skills1[8]='A00E'
set skills1[9]='A052'
set skills1[10]='A000'
set skills1[11]='A00E'
set skills1[12]='A052'
set skills1[13]='A000'
set skills1[14]='A00E'
set skills1[15]='A052'
set skills1[16]='A053'
set skills1[17]='A000'
set skills1[18]='A00E'
set skills1[19]='A052'
set skills1[20]='A000'
set skills1[21]='A00E'
set skills1[22]='A052'
set skills1[23]='A000'
set skills1[24]='A00E'
set skills1[25]='A052'
set skills1[26]='A053'
set skills1[27]='A000'
set skills1[28]='A00E'
set skills1[29]='A052'
set skills1[30]='A000'
set lvl=GetHeroLevel(Hero)
if(lvl<=30)then
call SelectHeroSkill(Hero,skills1[lvl])
else
call SelectHeroSkill(Hero,'A000')
endif
else
set S123[1]='A000'
set S123[2]='A000'
set S123[3]='A000'
set S123[4]='A000'
set S123[5]='A000'
set S123[6]='A000'
set S123[7]='A000'
set S123[8]='A000'
set S123[9]='A000'
set S123[10]='A000'
set lvl=GetHeroLevel(Hero)
call SelectHeroSkill(Hero,S123[ModuloInteger(lvl,10)+1])
endif
endif
endfunction
function O43020 takes nothing returns nothing
call ForForce(GetPlayersByMapControl(MAP_CONTROL_COMPUTER),function O43021)
endfunction
//***************************************END IACO MODIFACATION*****************************//
Getting compile errors on saving the 7.95 AI when deprotected, but not the 7.97 (there seems to be less protection). When the AI script is merged into the 7.97, there are also compile errors; basically, the same ones.
I believe the in-lining of the script is not complete; although I can do that, it seems to bee looking for variables too.
2nd Problem:
On the player select screen, unable to choose computer as a player. not sure where this is called.
Any advice would be useful.
Cheers Cheers