Page 1 of 1

Wampa AI and reinforcements problems

Posted: Wed Nov 16, 2016 4:12 am
by SkinnyODST
I replaced the CIS team with SNW (Wampas) and that has worked, but the Wampa AI don`t act how I want them to. They seem to be in a deathmatch mode that I can`t get them out of, they don`t try and capture CP`s and seem to stand still until an enemy comes by. I want them to act the opposite of that. Also, their reinforcements are always going down even though they own all but 1 CP. How do I fix this?

My LUA.
Hidden/Spoiler:
[code]--
-- Copyright (c) 2005 Pandemic Studios, LLC. All rights reserved.
--

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

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


function ScriptPostLoad()

AddAIGoal(1, "Deathmatch", 100)

SetProperty("Local_CP", "Team", 1)
SetProperty("cp1", "Team", 2)
SetProperty("cp2", "Team", 2)
SetProperty("cp3", "Team", 2)
SetProperty("cp4", "Team", 2)
SetProperty("cp5", "Team", 2)
SetProperty("cp6", "Team", 2)
SetProperty("cp7", "Team", 2)



--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 = "Local_CP"}
cp7 = CommandPost:New{name = "cp7"}



--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)
conquest:AddCommandPost(cp7)

conquest:Start()

SetUberMode(1);

EnableSPHeroRules()

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()

ReadDataFile("ingame.lvl")


SetMaxFlyHeight(62)
SetMaxPlayerFlyHeight (62)

SetMemoryPoolSize ("ClothData",20)
SetMemoryPoolSize ("Combo",50) -- should be ~ 2x number of jedi classes
SetMemoryPoolSize ("Combo::State",650) -- should be ~12x #Combo
SetMemoryPoolSize ("Combo::Transition",650) -- should be a bit bigger than #Combo::State
SetMemoryPoolSize ("Combo::Condition",650) -- should be a bit bigger than #Combo::State
SetMemoryPoolSize ("Combo::Attack",550) -- should be ~8-12x #Combo
SetMemoryPoolSize ("Combo::DamageSample",6000) -- should be ~8-12x #Combo::Attack
SetMemoryPoolSize ("Combo::Deflect",100) -- should be ~1x #combo

ReadDataFile("sound\\yav.lvl;yav1cw")
ReadDataFile("dc: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_ep2_pilot",
"rep_inf_ep2_sniper",
"rep_inf_ep3_jettrooper",
"rep_inf_ep2_marine",
"rep_inf_ep2_jettrooper",
"rep_inf_ep2_jettrooper_rifleman",
"rep_inf_ep2_jettrooper_sniper",
"rep_walk_atte")

ReadDataFile("dc:SIDE\\cis.lvl",
"cis_inf_rifleman",
"cis_inf_marine",
"cis_inf_rocketeer",
"cis_inf_engineer",
"cis_inf_sniper",
"cis_inf_officer",
"cis_inf_droideka",
"cis_inf_pilot",
"cis_hover_aat",
"cis_hover_stap",
"cis_walk_spider")

ReadDataFile("dc:SIDE\\snw.lvl",
"snw_inf_wampa")


ReadDataFile("dc:SIDE\\tur.lvl",
"tur_bldg_laser",
"tur_bldg_tower",
"tur_bldg_chaingun",
"tur_bldg_built_chaingun",
"tur_yav_bldg_watchtower",
"tur_bldg_recoilless_fel_auto",
"tur_bldg_recoilless_kas",
"tur_bldg_recoilless_lg",
"tur_bldg_recoilless_md",
"tur_bldg_recoilless_myg_auto",
"tur_bldg_recoilless_nab_auto")


SetupTeams{
rep = {
team = REP,
units = 62,
reinforcements = 200,
soldier = { "rep_inf_ep2_jettrooper_rifleman",20, 35},
assault = { "rep_inf_ep2_jettrooper_sniper",1, 1},

},
snw = {
team = SNW,
units = 500,
reinforcements = 500,
soldier = { "snw_inf_wampa",30, 60},

}
}


SetClassProperty("rep_inf_ep2_jettrooper_sniper", "FleeLikeAHero", "1")

AddAIGoal(1, "Deathmatch", 100)

SetTeamName (3, "fompas")
AddUnitClass (3, "snw_inf_wampa", 100,150)
SetUnitCount (3, 150)
AddAIGoal(3, "Deathmatch", 100)

SetTeamAsEnemy(ATT,3)
SetTeamAsEnemy(3,ATT)
SetTeamAsEnemy(DEF,3)
SetTeamAsEnemy(3,DEF)


-- Level Stats
-- ClearWalkers()
AddWalkerType(0, 0) -- special -> droidekas
AddWalkerType(1, 0) -- 1x2 (1 pair of legs)
AddWalkerType(2, 1) -- 2x2 (2 pairs of legs)
AddWalkerType(3, 1) -- 3x2 (3 pairs of legs)
local weaponCnt = 1024
SetMemoryPoolSize("Aimer", 75)
SetMemoryPoolSize("AmmoCounter", weaponCnt)
SetMemoryPoolSize("BaseHint", 1024)
SetMemoryPoolSize("CommandWalker", 1)
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)

SetSpawnDelay(10.0, 0.25)
--ReadDataFile("dc:CCC\\CCC.lvl", "CCC_conquest")
ReadDataFile("dc:CCC\\CCC.lvl", "CCC_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("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.908386, -0.209095, -0.352873, -0.081226, -45.922508, -19.114113, 77.022636);

AddCameraShot(-0.481173, 0.024248, -0.875181, -0.044103, 14.767292, -30.602322, -144.506851);
AddCameraShot(0.999914, -0.012495, -0.004416, -0.000055, 1.143253, -33.602314, -76.884430);
AddCameraShot(0.839161, 0.012048, -0.543698, 0.007806, 19.152437, -49.802273, 24.337317);
AddCameraShot(0.467324, 0.006709, -0.883972, 0.012691, 11.825212, -49.802273, -7.000720);
AddCameraShot(0.861797, 0.001786, -0.507253, 0.001051, -11.986043, -59.702248, 23.263165);
AddCameraShot(0.628546, -0.042609, -0.774831, -0.052525, 20.429928, -48.302277, 9.771714);
AddCameraShot(0.765213, -0.051873, 0.640215, 0.043400, 57.692474, -48.302277, 16.540724);
AddCameraShot(0.264032, -0.015285, -0.962782, -0.055734, -16.681797, -42.902290, 129.553268);
AddCameraShot(-0.382320, 0.022132, -0.922222, -0.053386, 20.670977, -42.902290, 135.513001);
end

[/code]

Re: Wampa AI and reinforcements problems

Posted: Wed Nov 16, 2016 8:06 pm
by Oceans14

Code: Select all

function ScriptPostLoad()

AddAIGoal(1, "Deathmatch", 100)
You set a goal for team 1 but not team 2. I believe the ai need a goal of any kind, otherwise they'll default to deathmatch or do nothing. Add a goal for team 2 and see what happens.

Re: Wampa AI and reinforcements problems

Posted: Thu Nov 17, 2016 1:41 am
by SkinnyODST
Add a goal for team 2 and see what happens.
I did try that. I added AddAIGoal "Conquest" and nothing changed. Is that the right thing to write?

Could it have something to do with its odf? I mean Wampas are in a deathmatch style gamemode for Hoth but I had a look and couldn`t seem to find anything relating to deathmatch.

Here`s their odf file:
Hidden/Spoiler:
[code][GameObjectClass]
ClassParent = "com_jedi_default"
GeometryName = "hot_inf_wampa"

[Properties]
HUDTag = "hud_wampa"
AISizeType = "HOVER"

GeometryName = "hot_inf_wampa"
GeometryLowRes = "hot_inf_wampa_low1"
SkeletonLowRes = "wampalz"

SkeletonName = "wampa"

//this keeps the player from entering first person with this char
forcemode = 1

// well, they can't use technology!
NoEnterVehicles = 1

// do NOT kneel when dead
FleeLikeAHero = 0

// one jump animation for this dude
UseDirectionalJumps = 0

JetJump = "00.0" //The initial jump-push given when enabling the jet
JetPush = "0.0" //The constant push given while the jet is enabled (20 is gravity)
JetAcceleration = "0.0" // for characters with jet jump, use this acceleration for in air control
JetEffect = ""
JetShowHud = 0

CollisionScale = "0.0 0.0 0.0" // don't take damage from collisions

WEAPONSECTION = 1
WeaponName1 = "hot_weap_lightsaber_wampa"
WeaponAmmo1 = 0

//HEALTH
HealthType = "person"
MaxHealth = 1800.0

// Movement defaults
// These are values for an average class - some soldiers will override these
MaxSpeed = 7.0 // base forward speed
MaxStrafeSpeed = 5.25 // base right/left speed
MaxTurnSpeed = 5.0 // base turn speed
JumpHeight = 2.5 // base jump height in meters
// Speed multipliers for various actions
JumpForwardSpeedFactor = 1.3 // boost forward part of velocity by this factor when jumping
JumpStrafeSpeedFactor = 1.0 // boost side/backward part of velocity by this factor when jumping
RollSpeedFactor = 1.5 // in forward arc, boost speed by this factor when rolling
// Apparently contant for all or most classes:
Acceleration = 70.0 // accelerate to full run in about 7/70 = 0.1 seconds
SprintAccelerateTime = 0.35 // accelerate from run to sprint in this time

// ControlSpeed = "<stance> <thrustfactor> <strafefactor> <turnfactor>"
// For grounded states (stand, crouch, prone, sprint) and jet state,
// in which the thrust/strafe stick controls the player's velocity,
// these values are multipliers on the max speed and acceleration.
// For flying states (jump, roll, tumble), in which the thrust/strafe stick
// applies an acceleration, these values only multiply the acceleration.
ControlSpeed = "stand 1.00 1.00 1.00"
ControlSpeed = "crouch 0.70 0.60 1.00"
ControlSpeed = "prone 0.30 0.20 0.50"
ControlSpeed = "sprint 3.00 0.50 0.35"
ControlSpeed = "jet 0.30 0.30 1.00"
ControlSpeed = "jump 0.03 0.03 0.35"
ControlSpeed = "roll 0.02 0.02 0.35"
ControlSpeed = "tumble 0.00 0.00 0.10"

///SOUND
SndHeroSelectable = ""
SndHeroSpawned = ""
SndHeroDefeated = ""
SndHeroKiller = ""

SoldierMusic = ""
HurtSound = "wampahurt"
DeathSound = "wampadeath"
LowHealthSound = "wampa_chatter"
LowHealthThreshold = "1.1"

FoleyFXClass = "wok_inf_soldier"




[/code]

Re: Wampa AI and reinforcements problems

Posted: Fri Nov 18, 2016 1:41 am
by Oceans14
Try removing all the ai goals and see what happens. As I recall, the bone stock conquest script doesn't specify goals at all, just a gamemode. If that doesn't work, add the same goal for both teams.

I realize that's contradictory to my first post where I said they do need a goal, but when I thought about it further I believe I was getting your issue confused with something else.