Page 1 of 1

Loading two heroes from pre-munged sides

Posted: Sun Feb 19, 2012 3:01 pm
by Locutus
Hi!
Finally I got time to start swbf2 modding again (using this sentence to apologize that didn't answer my pm's for quite some time).
I'm currently working on a new map and I'd like to use Kit Fisto and the Two-sword General Grievous as heroes. Both heroes were released with pre-munged files, but when I try to load both the games crashes the moment you try to play with the hero added in the second line.

Code: Select all

ReadDataFile("dc:SIDE\\kit.lvl", 
   			                    "rep_hero_fisto") 
                             
    ReadDataFile("dc:SIDE\\lis.lvl", 
   			                    "lis_hero_grievous") 
Is there any way to load both?


Here's my lua:
Hidden/Spoiler:
--
-- Copyright (c) 2005 Pandemic Studios, LLC. All rights reserved.
--

-- load the gametype script
ScriptCB_DoFile("ObjectiveConquest")
ScriptCB_DoFile("setup_teams")
ScriptCB_DoFile("LinkedTurrets")

-- REP Attacking (attacker is always #1)
REP = 1;
CIS = 2;
-- These variables do not change
ATT = REP;
DEF = CIS;


function ScriptPostLoad()

--BlockPlanningGraphArcs("Connection51")

--This defines the CPs. These need to happen first
cp1 = CommandPost:New{name = "cp1"}
cp2 = CommandPost:New{name = "cp2"}
cp3 = CommandPost:New{name = "cp3"}
cp4 = CommandPost:New{name = "cp4"}
cp5 = CommandPost:New{name = "cp5"}
cp6 = CommandPost:New{name = "cp6"}



--This sets up the actual objective. This needs to happen after cp's are defined
conquest = ObjectiveConquest:New{teamATT = ATT, teamDEF = DEF,
textATT = "game.modes.con",
textDEF = "game.modes.con2",
multiplayerRules = true}

--This adds the CPs to the objective. This needs to happen after the objective is set up
conquest:AddCommandPost(cp1)
conquest:AddCommandPost(cp2)
conquest:AddCommandPost(cp3)
conquest:AddCommandPost(cp4)
conquest:AddCommandPost(cp5)
conquest:AddCommandPost(cp6)

-- Bridge();
--IsObjectAlive (all_prop_blockaderunner, bridge)

conquest:Start()

EnableSPHeroRules()


--Cloudcar = TargetType:New{classname = "bes_fly_cloudcar", killLimit = 1, icon = nil}
--cc_count = 1

-- Cloudcar.OnDestroy = function(self, objectPtr)
-- cc_count = cc_count - 1
-- if cc_count == 0 then
-- PlayAnimation("cortest")
-- end
-- end
cc_count = 0
animateobja = OnObjectKill(
function(object, killer)
if GetEntityName(object) == "bes_fly_cloudcar5" then
cc_count = cc_count + 1
if cc_count == 2 then
PlayAnimation("cortest")
end
end
end
)

animateobjb = OnObjectKill(
function(object, killer)
if GetEntityName(object) == "bes_fly_cloudcar1" then
cc_count = cc_count + 1
if cc_count == 2 then
PlayAnimation("cortest")
end
end
end
)

killobja = OnObjectKill(
function(object, killer)
if killer and IsCharacterHuman(killer) and GetEntityName(object) == "test_turr_1" then
AddAssaultDestroyPoints(killer)
end
end
)

killobjb = OnObjectKill(
function(object, killer)
if killer and IsCharacterHuman(killer) and GetEntityName(object) == "test_turr_2" then
AddAssaultDestroyPoints(killer)
end
end
)

killobjc = OnObjectKill(
function(object, killer)
if killer and IsCharacterHuman(killer) and GetEntityName(object) == "test_turr_3" then
AddAssaultDestroyPoints(killer)
end
end
)

killobjd = OnObjectKill(
function(object, killer)
if killer and IsCharacterHuman(killer) and GetEntityName(object) == "test_turr_4" then
AddAssaultDestroyPoints(killer)
end
end
)

killobje = OnObjectKill(
function(object, killer)
if killer and IsCharacterHuman(killer) and GetEntityName(object) == "test_turr_5" then
AddAssaultDestroyPoints(killer)
end
end
)

killobjf = OnObjectKill(
function(object, killer)
if killer and IsCharacterHuman(killer) and GetEntityName(object) == "test_turr_6" then
AddAssaultDestroyPoints(killer)
end
end
)



-- function Bridge()
-- bridge_timer = CreateTimer("bridge_timer")
-- SetTimerValue(bridge_timer, 320)
-- StartTimer(bridge_timer)
-- OnTimerElapse(
-- function(timer)
-- UnblockPlanningGraphArcs("Connection51");
-- DisableBarriers("bridgebarrier1");
-- DisableBarriers("bridgebarrier2");
-- DisableBarriers("barrier321");
-- print("Auf Kameraden, es geht los!")
-- DestroyTimer(timer)
-- end,
-- bridgetimer
-- )
-- end

function SetupTurrets()
turretLinkageCIS = LinkedTurrets:New{ team = CIS, mainframe = "cis-defense",
turrets = {"test_turr_1", "test_turr_2", "test_turr_3"} }
turretLinkageCIS:Init()
end

function SetupTurrets()
turretLinkageREP = LinkedTurrets:New{ team = REP, mainframe = "rep-defense",
turrets = {"test_turr_4", "test_turr_5", "test_turr_6"} }
turretLinkageREP:Init()
end



AddDeathRegion("dr1")
AddDeathRegion("dr2")


end




---------------------------------------------------------------------------
-- FUNCTION: ScriptInit
-- PURPOSE: This function is only run once
-- INPUT:
-- OUTPUT:
-- NOTES: The name, 'ScriptInit' is a chosen convention, and each
-- mission script must contain a version of this function, as
-- it is called from C to start the mission.
---------------------------------------------------------------------------
function ScriptInit()

--tell the game to load our loading image
ReadDataFile("dc:Load\\common.lvl")

ReadDataFile("ingame.lvl")


SetMaxFlyHeight(64)
SetMaxPlayerFlyHeight (64)

SetMemoryPoolSize ("ClothData",100)
SetMemoryPoolSize ("Combo",1000) -- should be ~ 2x number of jedi classes
SetMemoryPoolSize ("Combo::State",9000) -- should be ~12x #Combo
SetMemoryPoolSize ("Combo::Transition",9000) -- should be a bit bigger than #Combo::State
SetMemoryPoolSize ("Combo::Condition",900) -- should be a bit bigger than #Combo::State
SetMemoryPoolSize ("Combo::Attack",9000) -- should be ~8-12x #Combo
SetMemoryPoolSize ("Combo::DamageSample",9999) -- should be ~8-12x #Combo::Attack
SetMemoryPoolSize ("Combo::Deflect",9000) -- should be ~1x #combo

ReadDataFile("dc:sound\\HTM.lvl;htmcw")
ReadDataFile("sound\\yav.lvl;yav1cw")
ReadDataFile("SIDE\\rep.lvl",
"rep_inf_ep3_rifleman",
"rep_inf_ep3_rocketeer",
"rep_inf_ep3_engineer",
"rep_inf_ep3_sniper",
"rep_inf_ep3_officer",
"rep_inf_ep3_jettrooper",
"rep_hover_fightertank",
"rep_hero_anakin",
"rep_hover_barcspeeder")
ReadDataFile("SIDE\\cis.lvl",
"cis_inf_rifleman",
"cis_inf_rocketeer",
"cis_inf_engineer",
"cis_inf_sniper",
"cis_inf_officer",
"cis_inf_droideka",
"cis_hero_darthmaul",
"cis_hover_aat")


ReadDataFile("SIDE\\tur.lvl",
"tur_bldg_spa_all_cannon")

ReadDataFile("dc:SIDE\\kit.lvl",
"rep_hero_fisto")

ReadDataFile("dc:SIDE\\lis.lvl",
"lis_hero_grievous")



SetupTeams{
rep = {
team = REP,
units = 20,
reinforcements = 150,
soldier = { "rep_inf_ep3_rifleman",9, 25},
assault = { "rep_inf_ep3_rocketeer",1, 4},
engineer = { "rep_inf_ep3_engineer",1, 4},
sniper = { "rep_inf_ep3_sniper",1, 4},
officer = {"rep_inf_ep3_officer",1, 4},
special = { "rep_inf_ep3_jettrooper",1, 4},

},
cis = {
team = CIS,
units = 20,
reinforcements = 150,
soldier = { "cis_inf_rifleman",9, 25},
assault = { "cis_inf_rocketeer",1, 4},
engineer = { "cis_inf_engineer",1, 4},
sniper = { "cis_inf_sniper",1, 4},
officer = {"cis_inf_officer",1, 4},
special = { "cis_inf_droideka",1, 4},
}
}

SetHeroClass(CIS, "lis_hero_grievous")
SetHeroClass(REP, "rep_hero_fisto")


-- Level Stats
-- ClearWalkers()
AddWalkerType(0, 4) -- 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 = 1024
SetMemoryPoolSize("Aimer", 75)
SetMemoryPoolSize("AmmoCounter", weaponCnt)
SetMemoryPoolSize("BaseHint", 1024)
SetMemoryPoolSize("EnergyBar", weaponCnt)
SetMemoryPoolSize("EntityCloth", 32)
SetMemoryPoolSize("EntityFlyer", 32)
SetMemoryPoolSize("EntityHover", 32)
SetMemoryPoolSize("EntityLight", 200)
SetMemoryPoolSize("EntitySoundStream", 4)
SetMemoryPoolSize("EntitySoundStatic", 32)
SetMemoryPoolSize("MountedTurret", 32)
SetMemoryPoolSize("Navigator", 128)
SetMemoryPoolSize("Obstacle", 1024)
SetMemoryPoolSize("PathNode", 1024)
SetMemoryPoolSize("SoundSpaceRegion", 64)
SetMemoryPoolSize("TreeGridStack", 1024)
SetMemoryPoolSize("UnitAgent", 128)
SetMemoryPoolSize("UnitController", 128)
SetMemoryPoolSize("Weapon", weaponCnt)
SetMemoryPoolSize("EntityRemoteTerminal", 12)
SetMemoryPoolSize("MountedTurret", 70)

SetSpawnDelay(10.0, 0.25)
--ReadDataFile("dc:UCM\\UCM.lvl", "UCM_conquest")
ReadDataFile("dc:UCM\\UCM.lvl", "UCM_conquest")
SetDenseEnvironment("false")




-- Sound

SetSoundEffect("ScopeDisplayZoomIn", "binocularzoomin")
SetSoundEffect("ScopeDisplayZoomOut", "binocularzoomout")

voiceSlow = OpenAudioStream("sound\\global.lvl", "rep_unit_vo_slow")
AudioStreamAppendSegments("sound\\global.lvl", "cis_unit_vo_slow", voiceSlow)
AudioStreamAppendSegments("sound\\global.lvl", "global_vo_slow", voiceSlow)

voiceQuick = OpenAudioStream("sound\\global.lvl", "rep_unit_vo_quick")
AudioStreamAppendSegments("sound\\global.lvl", "cis_unit_vo_quick", voiceQuick)

OpenAudioStream("sound\\global.lvl", "cw_music")
OpenAudioStream("dc:sound\\htm.lvl", "htm_hero_vo_quick");
-- OpenAudioStream("sound\\global.lvl", "global_vo_quick")
-- OpenAudioStream("sound\\global.lvl", "global_vo_slow")
OpenAudioStream("sound\\yav.lvl", "yav1")
OpenAudioStream("sound\\yav.lvl", "yav1")
OpenAudioStream("sound\\yav.lvl", "yav1_emt")

SetBleedingVoiceOver(REP, REP, "rep_off_com_report_us_overwhelmed", 1)
SetBleedingVoiceOver(REP, CIS, "rep_off_com_report_enemy_losing", 1)
SetBleedingVoiceOver(CIS, REP, "cis_off_com_report_enemy_losing", 1)
SetBleedingVoiceOver(CIS, CIS, "cis_off_com_report_us_overwhelmed", 1)

SetOutOfBoundsVoiceOver(2, "cisleaving")
SetOutOfBoundsVoiceOver(1, "repleaving")

SetAmbientMusic(REP, 1.0, "rep_yav_amb_start", 0,1)
SetAmbientMusic(REP, 0.8, "rep_yav_amb_middle", 1,1)
SetAmbientMusic(REP, 0.2, "rep_yav_amb_end", 2,1)
SetAmbientMusic(CIS, 1.0, "cis_yav_amb_start", 0,1)
SetAmbientMusic(CIS, 0.8, "cis_yav_amb_middle", 1,1)
SetAmbientMusic(CIS, 0.2, "cis_yav_amb_end", 2,1)

SetVictoryMusic(REP, "rep_yav_amb_victory")
SetDefeatMusic (REP, "rep_yav_amb_defeat")
SetVictoryMusic(CIS, "cis_yav_amb_victory")
SetDefeatMusic (CIS, "cis_yav_amb_defeat")

SetSoundEffect("ScopeDisplayZoomIn", "binocularzoomin")
SetSoundEffect("ScopeDisplayZoomOut", "binocularzoomout")
--SetSoundEffect("BirdScatter", "birdsFlySeq1")
--SetSoundEffect("WeaponUnableSelect", "com_weap_inf_weaponchange_null")
--SetSoundEffect("WeaponModeUnableSelect", "com_weap_inf_modechange_null")
SetSoundEffect("SpawnDisplayUnitChange", "shell_select_unit")
SetSoundEffect("SpawnDisplayUnitAccept", "shell_menu_enter")
SetSoundEffect("SpawnDisplaySpawnPointChange", "shell_select_change")
SetSoundEffect("SpawnDisplaySpawnPointAccept", "shell_menu_enter")
SetSoundEffect("SpawnDisplayBack", "shell_menu_exit")


--OpeningSateliteShot
AddCameraShot(0.634142, -0.010264, 0.773047, 0.012512, 170.609879, 45.829781, -174.404480);
AddCameraShot(0.432235, -0.048634, -0.894802, -0.100681, 4.130234, 59.789005, -191.375732);
AddCameraShot(0.932976, -0.083817, -0.348639, -0.031321, 73.343254, 52.536682, -123.949089);
AddCameraShot(0.856000, 0.142202, -0.490315, 0.081453, -81.838860, 35.117371, -22.050468);


end

Re: Loading two heroes from pre-munged sides

Posted: Sun Feb 19, 2012 3:07 pm
by ARCTroopaNate
This is a stupid question but have you put the munged sides folders for those two sides in your ABC sides folder in your addon folder? I forgot to do that one time when I was loading stuff from a munged side.

Re: Loading two heroes from pre-munged sides

Posted: Sun Feb 19, 2012 3:44 pm
by Locutus
Yes.
When I -only- add Grievous in the code I can play him.
When I -only- add Kit Fisto I can play him as well.
But when I add both I can only play the hero that I added first in the script. The other one appears in the selection screen (I can see the model and so on) but as soon I try to spawn the game crashes.

Re: Loading two heroes from pre-munged sides

Posted: Sun Feb 19, 2012 3:54 pm
by willinator
I wonder if you're having an animation issue. Kit Fisto has one of the most complicated combos in the history of the game, and Manderek's grievous isn't exactly diet either. Maybe you've run out of animation space?

Re: Loading two heroes from pre-munged sides

Posted: Sun Feb 19, 2012 4:18 pm
by Locutus
If that's the case: Is there anything I could do about?

Re: Loading two heroes from pre-munged sides

Posted: Sun Feb 19, 2012 4:43 pm
by willinator
Yes, you can. Compare the Mos Eisley Assault LUA to yours, and look for this section

Code: Select all

    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
Mos Eisley's pools are maxed out, change your LUA to match it.

Re: Loading two heroes from pre-munged sides

Posted: Sun Feb 19, 2012 4:54 pm
by Locutus
Thanks.
Unfortunately it didn't help :/
Guess I have to use different heroes...

Re: Loading two heroes from pre-munged sides

Posted: Sun Feb 19, 2012 9:51 pm
by AQT
You don't need to load Anakin and Darth Maul if you're not going to use them. Even if you're not using them, loading them puts them into memory, and you are already using two memory intensive characters. Also, be sure to fill up the SoldierAnimation memory pool.
Locutus wrote:Finally I got time to start swbf2 modding again (using this sentence to apologize that didn't answer my pm's for quite some time).
But you've been lurking around between the last time you posted and just recently. :o

Re: Loading two heroes from pre-munged sides

Posted: Mon Feb 20, 2012 9:43 am
by Locutus
AQT wrote:You don't need to load Anakin and Darth Maul if you're not going to use them. Even if you're not using them, loading them puts them into memory, and you are already using two memory intensive characters. Also, be sure to fill up the SoldierAnimation memory pool.
You're right, I totally forgot about it.
Noobish question again:Where am I supposed to increase the SoldierAnimation memory pool and to what value?
AQT wrote:
Locutus wrote:Finally I got time to start swbf2 modding again (using this sentence to apologize that didn't answer my pm's for quite some time).
But you've been lurking around between the last time you posted and just recently. :o
Actually no. I was using a browser addon automatically checking the forums for updates and pm's. When I logged it regularly a few days ago I just found out that the pm checking did not work.
Sorry again that I didn't check earlier.

Re: Loading two heroes from pre-munged sides

Posted: Mon Feb 20, 2012 2:54 pm
by Marth8880
Locutus wrote:
AQT wrote:You don't need to load Anakin and Darth Maul if you're not going to use them. Even if you're not using them, loading them puts them into memory, and you are already using two memory intensive characters. Also, be sure to fill up the SoldierAnimation memory pool.
You're right, I totally forgot about it.
Noobish question again:Where am I supposed to increase the SoldierAnimation memory pool and to what value?
BFront2.log errors explained (NOT FOR QUESTIONS)

Re: Loading two heroes from pre-munged sides

Posted: Mon Feb 20, 2012 6:22 pm
by Locutus
Thank you.
Seems like I'm learning everyday something new. Unfortunately it didn't help...

Error log only refers to this, so I assume the max. animations are exceeded:
Hidden/Spoiler:
Message Severity: 2
C:\Battlefront2\main\Battlefront2\Source\Combo.cpp(2290)
Combo[91e0f927]::State[JUMPATTACK_WINDUP]::Animation: failed to add 'jumpattack1' [f6cfc20c]

Message Severity: 2
C:\Battlefront2\main\Battlefront2\Source\Combo.cpp(2290)
Combo[91e0f927]::State[JUMPATTACK_WINDUP2]::Animation: failed to add 'jumpattack1' [f6cfc20c]

Message Severity: 2
C:\Battlefront2\main\Battlefront2\Source\Combo.cpp(2290)
Combo[91e0f927]::State[JUMPATTACK_POSE]::Animation: failed to add 'jumpattack2' [f9cfc6c5]

Message Severity: 2
C:\Battlefront2\main\Battlefront2\Source\Combo.cpp(2290)
Combo[91e0f927]::State[JUMPATTACK_POSE2]::Animation: failed to add 'jumpattack2' [f9cfc6c5]