Certain stock villians crash

In this forum you will find and post information regarding the modding of Star Wars Battlefront 2. DO NOT POST MOD IDEAS/REQUESTS.

Moderator: Moderators

Post Reply
RepSharpshooter
Gametoast Staff
Gametoast Staff
Posts: 1351
Joined: Tue Jul 10, 2007 4:10 pm

Certain stock villians crash

Post by RepSharpshooter »

I am adding the Mos Eisly hero assault characters to one of my Battle Arena modes. Upon load, all of the heroes work, but when I select certain villians, the map crashes. Darth Maul and Count Dooku crash. When I select Grievous, he is there but has no head.

I get these errors in the bf2log:
Hidden/Spoiler:
Message Severity: 3
.\Source\DisplaySoldier.cpp(349)
DisplaySoldier 'cis_hero_grievous' failed to find animmap _sabre

Message Severity: 3
.\Source\DisplaySoldier.cpp(240)
DisplaySoldier 'cis_hero_jangofett' failed to find animmap fett_pistol
Here is the relevant part of my lua:
Hidden/Spoiler:
function ScriptInit()
StealArtistHeap(1536*1024)

ReadDataFile("dc:Load\\common.lvl")
ReadDataFile("ingame.lvl")



SetMaxFlyHeight(20)
SetMaxPlayerFlyHeight(20)
--SetMemoryPoolSize("SoldierAnimation", 8000)
SetMemoryPoolSize("FLEffectObject::OffsetMatrix", 300)
SetMemoryPoolSize ("ClothData",20)
SetMemoryPoolSize ("Combo",30) -- should be ~ 2x number of jedi classes
SetMemoryPoolSize ("Combo::State",500) -- should be ~12x #Combo
SetMemoryPoolSize ("Combo::Transition",500) -- should be a bit bigger than #Combo::State
SetMemoryPoolSize ("Combo::Condition",500) -- should be a bit bigger than #Combo::State
SetMemoryPoolSize ("Combo::Attack",400) -- should be ~8-12x #Combo
SetMemoryPoolSize ("Combo::DamageSample",4000) -- should be ~8-12x #Combo::Attack
SetMemoryPoolSize ("Combo::Deflect",88) -- should be ~1x #combo

ReadDataFile("sound\\tat.lvl;tat2gcw")
--ReadDataFile("dc:sound\\baa.lvl;baacw")




--[[
print("reading in gam side")
ReadDataFile("SIDE\\gam.lvl",
"gam_inf_gamorreanguard")

print("reading in snw side")
ReadDataFile("SIDE\\snw.lvl",
"snw_inf_wampa")

print("reading in geo side")
ReadDataFile("SIDE\\geo.lvl",
"gen_inf_geonosian",
"geo_inf_acklay")



,
"cis_inf_rifleman",
"cis_inf_droideka"
--]]

ReadDataFile("SIDE\\all.lvl",
"all_hero_luke_jedi",
"all_hero_hansolo_tat",
"all_hero_leia",
"all_hero_chewbacca")

ReadDataFile("SIDE\\imp.lvl",
"imp_hero_darthvader",
"imp_hero_emperor",
"imp_hero_bobafett")

ReadDataFile("SIDE\\rep.lvl",
"rep_hero_yoda",
"rep_hero_macewindu",
"rep_hero_anakin",
"rep_hero_aalya",
"rep_hero_kiyadimundi",
"rep_hero_obiwan")

ReadDataFile("SIDE\\cis.lvl",
"cis_hero_grievous",
"cis_hero_darthmaul",
"cis_hero_countdooku",
"cis_hero_jangofett")




SetClassProperty("geo_inf_geonosian","NoEnterVehicles","1")
SetClassProperty("cis_inf_rifleman","NoEnterVehicles","1")
SetClassProperty("gam_inf_gamorreanguard","NoEnterVehicles","1")
SetClassProperty("geo_inf_acklay","NoEnterVehicles","1")
SetClassProperty("snw_inf_wampa","NoEnterVehicles","1")


--ReadDataFile("dc:ingame.lvl")

SetupTeams{
hero = {
team = ALL,
units = 32,
reinforcements = -1,
soldier = { "all_hero_hansolo_tat",1,2},
assault = { "all_hero_chewbacca", 1,2},
engineer= { "all_hero_luke_jedi", 1,2},
sniper = { "rep_hero_obiwan", 1,2},
officer = { "rep_hero_yoda", 1,2},
special = { "rep_hero_macewindu", 1,2},
},
}

AddUnitClass(ALL,"all_hero_leia", 1,2)
AddUnitClass(ALL,"rep_hero_aalya", 1,2)
AddUnitClass(ALL,"rep_hero_kiyadimundi",1,2)

SetupTeams{
villain = {
team = IMP,
units = 32,
reinforcements = -1,
soldier = { "imp_hero_bobafett", 1,2},
assault = { "imp_hero_darthvader",1,2},
engineer= { "cis_hero_darthmaul", 1,2},
sniper = { "cis_hero_jangofett", 1,2},
officer = { "cis_hero_grievous", 1,2},
special = { "imp_hero_emperor", 1,2},

},
}
AddUnitClass(IMP, "rep_hero_anakin",1,2)
AddUnitClass(IMP, "cis_hero_countdooku",1,2)

SetTeamAsFriend(1,2)
SetTeamAsFriend(2,1)


--Pools of extra characters for Ambushes.
AddUnitClass(ambushTeam1, "geo_inf_geonosian",16,16)
AddUnitClass(ambushTeam1, "gam_inf_gamorreanguard",16,16)
SetUnitCount(ambushTeam1, 32)
AddAIGoal(ambushTeam1, "Deathmatch", 100)

--Pools of extra characters for Ambushes.
AddUnitClass(ambushTeam2, "cis_inf_rifleman",16,16)
AddUnitClass(ambushTeam2, "cis_inf_droideka",16,16)
SetUnitCount(ambushTeam2, 32)
AddAIGoal(ambushTeam2, "Deathmatch", 100)


--Pools of extra characters for Ambushes.
AddUnitClass(ambushTeam3, "snw_inf_wampa",16,16)
AddUnitClass(ambushTeam3, "geo_inf_acklay",16,16)
SetUnitCount(ambushTeam3, 32)
AddAIGoal(ambushTeam3, "Deathmatch", 100)

--AddUnitClass(ambushTeam33, "cis_inf_marine")
--SetUnitCount(ambushTeam33, ambushCount33)
--SetTeamAsEnemy(ambushTeam33, REP)
--AddAIGoal(ambushTeam33, "Deathmatch", 100)
--[[
AddUnitClass(ambushTeam3, "cis_inf_rifleman")
SetUnitCount(ambushTeam3, ambushCount3)
--SetTeamAsEnemy(ambushTeam33, REP)
-- AddAIGoal(ambushTeam3, "Conquest", 100)
AddAIGoal(ambushTeam3, "Deathmatch", 100)

AddUnitClass(ambushTeam4, "cis_inf_droideka")
SetUnitCount(ambushTeam4, ambushCount4)
--SetTeamAsEnemy(ambushTeam33, REP)
-- AddAIGoal(ambushTeam4, "Conquest", 100)
AddAIGoal(ambushTeam4, "Deathmatch", 100)

AddUnitClass(ambushTeam5, "snw_inf_wampa")
SetUnitCount(ambushTeam5, ambushCount5)
--SetTeamAsEnemy(ambushTeam33, REP)
-- AddAIGoal(ambushTeam5, "Conquest", 100)
AddAIGoal(ambushTeam5, "Deathmatch", 100)

AddUnitClass(ambushTeam2, "geo_inf_acklay")
SetUnitCount(ambushTeam2, ambushCount2)
--SetTeamAsEnemy(ambushTeam33, REP)
-- AddAIGoal(ambushTeam2, "Conquest", 100)
AddAIGoal(ambushTeam2, "Deathmatch", 100)
--]]
print("ambushteam1")
print(ambushTeam1)
print("ambushTeam33")
--print(ambushTeam33)

SetTeamAsEnemy(ambushTeam1, ATT)
SetTeamAsEnemy(ambushTeam1, DEF)
SetTeamAsEnemy(ATT, ambushTeam1)
SetTeamAsEnemy(DEF, ambushTeam1)

SetTeamAsEnemy(ambushTeam2, ATT)
SetTeamAsEnemy(ambushTeam2, DEF)
SetTeamAsEnemy(ATT, ambushTeam2)
SetTeamAsEnemy(DEF, ambushTeam2)



SetTeamAsEnemy(ambushTeam3, ATT)
SetTeamAsEnemy(ambushTeam3, DEF)
SetTeamAsEnemy(ATT, ambushTeam3)
SetTeamAsEnemy(DEF, ambushTeam3)

-- SetTeamAsEnemy(ambushTeam4, ATT)
-- SetTeamAsEnemy(ambushTeam4, DEF)
-- SetTeamAsEnemy(ATT, ambushTeam4)
-- SetTeamAsEnemy(DEF, ambushTeam4)

--[[ SetTeamAsEnemy(ambushTeam5, ATT)
SetTeamAsEnemy(ambushTeam5, DEF)
SetTeamAsEnemy(ATT, ambushTeam5)
SetTeamAsEnemy(DEF, ambushTeam5)
--]]


--[[ SetTeamAsEnemy(ambushTeam33, ATT)
SetTeamAsEnemy(ambushTeam33, DEF)
SetTeamAsEnemy(ATT, ambushTeam33)
SetTeamAsEnemy(DEF, ambushTeam33)--]]


--SetTeamAsFriend(ambushTeam1,ambushTeam33)
--SetTeamAsFriend(ambushTeam33,ambushTeam1)

SetTeamAsFriend(ambushTeam1,ambushTeam3)
SetTeamAsFriend(ambushTeam3,ambushTeam1)

-- SetTeamAsFriend(ambushTeam1,ambushTeam4)
-- SetTeamAsFriend(ambushTeam4,ambushTeam1)

-- SetTeamAsFriend(ambushTeam1,ambushTeam5)
-- SetTeamAsFriend(ambushTeam5,ambushTeam1)

SetTeamAsFriend(ambushTeam1,ambushTeam2)
SetTeamAsFriend(ambushTeam2,ambushTeam1)



-- SetTeamAsFriend(ambushTeam33,ambushTeam3)
-- SetTeamAsFriend(ambushTeam3,ambushTeam33)

-- SetTeamAsFriend(ambushTeam33,ambushTeam4)
-- SetTeamAsFriend(ambushTeam4,ambushTeam33)

-- SetTeamAsFriend(ambushTeam33,ambushTeam5)
--SetTeamAsFriend(ambushTeam5,ambushTeam33)

-- SetTeamAsFriend(ambushTeam33,ambushTeam2)
-- SetTeamAsFriend(ambushTeam2,ambushTeam33)



-- SetTeamAsFriend(ambushTeam3,ambushTeam4)
-- SetTeamAsFriend(ambushTeam4,ambushTeam3)

-- SetTeamAsFriend(ambushTeam3,ambushTeam5)
-- SetTeamAsFriend(ambushTeam5,ambushTeam3)

SetTeamAsFriend(ambushTeam3,ambushTeam2)
SetTeamAsFriend(ambushTeam2,ambushTeam3)



-- SetTeamAsFriend(ambushTeam4,ambushTeam5)
-- SetTeamAsFriend(ambushTeam5,ambushTeam4)

-- SetTeamAsFriend(ambushTeam4,ambushTeam2)
-- SetTeamAsFriend(ambushTeam2,ambushTeam4)



-- SetTeamAsFriend(ambushTeam5,ambushTeam2)
-- SetTeamAsFriend(ambushTeam2,ambushTeam5)

--SetTeamAsFriend(ATT,DEF)
--SetTeamAsFriend(DEF,ATT)



-- Level Stats
-- ClearWalkers()
AddWalkerType(0, 64) -- special -> droidekas
AddWalkerType(1, 0) -- 1x2 (1 pair of legs)
AddWalkerType(2, 0) -- 2x2 (2 pairs of legs)
AddWalkerType(3, 0) -- 3x2 (3 pairs of legs)

local weaponCnt = 256
SetMemoryPoolSize("Aimer", 1)
SetMemoryPoolSize("AmmoCounter", weaponCnt)
SetMemoryPoolSize("BaseHint", 320)
SetMemoryPoolSize("ConnectivityGraphFollower", 23)
SetMemoryPoolSize("EnergyBar", weaponCnt)
SetMemoryPoolSize("EntityCloth",41)
SetMemoryPoolSize("EntityDefenseGridTurret", 0)
SetMemoryPoolSize("EntityDroid", 40)
SetMemoryPoolSize("EntityFlyer", 5) -- to account for 5 chewbaccas
SetMemoryPoolSize("EntityLight", 80, 80) -- stupid trickery to actually set lights to 80
SetMemoryPoolSize("EntityPortableTurret", 0) -- nobody has autoturrets AFAIK - MZ
SetMemoryPoolSize("EntitySoundStream", 2)
SetMemoryPoolSize("EntitySoundStatic", 45)
SetMemoryPoolSize("FLEffectObject::OffsetMatrix", 120)
SetMemoryPoolSize("MountedTurret", 0)
SetMemoryPoolSize("Navigator", 23)
SetMemoryPoolSize("Obstacle", 667)
SetMemoryPoolSize("Ordnance", 800) -- not much ordnance going on in the level
SetMemoryPoolSize("ParticleEmitter", 512)
SetMemoryPoolSize("ParticleEmitterInfoData", 512)
SetMemoryPoolSize("PathFollower", 23)
SetMemoryPoolSize("PathNode", 128)
SetMemoryPoolSize("ShieldEffect", 0)
SetMemoryPoolSize("TentacleSimulator", 24)
SetMemoryPoolSize("TreeGridStack", 290)
SetMemoryPoolSize("UnitAgent", 23)
SetMemoryPoolSize("UnitController", 23)
SetMemoryPoolSize("Weapon", weaponCnt)

SetSpawnDelay(10.0, 0.25)
--ReadDataFile("dc:BAA\\BAA.lvl", "BAA_conquest")
ReadDataFile("dc:BAA\\BAA.lvl", "BAA_WAVE")
SetDenseEnvironment("false")
I can't find anything in the world wrong with the lua, I've copied it line by line from tat2g_eli yet it still crashes on maul and dooku, and grievous has no head. I've tried commenting a few things out, but with no effect.
User avatar
Maveritchell
Jedi Admin
Jedi Admin
Posts: 7366
Joined: Mon Aug 21, 2006 11:03 pm

Re: Certain stock villians crash

Post by Maveritchell »

So when you say "I copied it line-by-line" you are of course omitting the fact that you're also loading in a number of other units that have melee animationbanks and combos. :wink:
RepSharpshooter
Gametoast Staff
Gametoast Staff
Posts: 1351
Joined: Tue Jul 10, 2007 4:10 pm

Re: Certain stock villians crash

Post by RepSharpshooter »

But I commented those out :(

I even just now commented out all the local teams, same problem.

EDIT: maybe it's a munging issue

EDIT2: It was, for some reason it stopped copying over the munged files. Good to know I'm not insane. But if so, I'll still have this memory problem when I add the local sides back in.
User avatar
Maveritchell
Jedi Admin
Jedi Admin
Posts: 7366
Joined: Mon Aug 21, 2006 11:03 pm

Re: Certain stock villians crash

Post by Maveritchell »

What you have is an animation error, so something that's "too much" is getting loaded in somewhere. I'd back up parts of your script and just edit in blocks straight from tat2g_eli - like replacing the whole ScriptInit (with of course keeping your .wld loaded). It looks like you're fine, so unless I'm missing something obvious your best course of action is just to replace until it works and then work backwards.
RepSharpshooter
Gametoast Staff
Gametoast Staff
Posts: 1351
Joined: Tue Jul 10, 2007 4:10 pm

Re: Certain stock villians crash

Post by RepSharpshooter »

Message Severity: 3
.\Source\SoldierAnimatorClass.cpp(1412)
Out of space for soldier animation banks (max 18)
:| Well I suppose I have to cut some of the units out.
MandeRek
Sith Master
Sith Master
Posts: 2766
Joined: Tue Oct 02, 2007 10:51 am
Projects :: Battlefront Zer0
Games I'm Playing :: SWTOR
xbox live or psn: No gamertag set
Location: Ghosting around GT
Contact:

Re: Certain stock villians crash

Post by MandeRek »

I still dont get.. What is -out of animationbanks-? Does it mean to much custom anims are loaded, with the max of 18, and you probably have 3 per unit? Does this mean we can use 20 Jedi with one animbank and we're save?
User avatar
Maveritchell
Jedi Admin
Jedi Admin
Posts: 7366
Joined: Mon Aug 21, 2006 11:03 pm

Re: Certain stock villians crash

Post by Maveritchell »

RepSharpshooter wrote:
Message Severity: 3
.\Source\SoldierAnimatorClass.cpp(1412)
Out of space for soldier animation banks (max 18)
:| Well I suppose I have to cut some of the units out.
Which was what I tried to mention earlier - stock hero assault is a good representation of the upper limit of what you can add in animationwise.
MandeRek wrote:I still dont get.. What is -out of animationbanks-? Does it mean to much custom anims are loaded, with the max of 18, and you probably have 3 per unit? Does this mean we can use 20 Jedi with one animbank and we're save?
You can have a combo memory error or an animationbank error. If you have too many different animation "states" loaded (this is what complicated melee animationbanks will have), the game will hit a limit and you'll get a combo error. The error above is a "banks" error, and it just means that too many different animationbanks are loaded. The stock hero assault adds 17 (each hero has a custom animationbank except for Luke).
Post Reply