[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;
CIS = 2;
TAR = 3;
CIV = 4;
-- These variables do not change
ATT = REP;
DEF = CIS;
function ScriptPostLoad()
--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"}
--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:Start()
--LET'S KILL SOME TARGETS - BEGIN KTT
ForceHumansOntoTeam1() --no pesky cheaters
AICanCaptureCP("cp1", 2, false) --yeah, fairly self explanatory...
AICanCaptureCP("cp2", 2, false)
AICanCaptureCP("cp3", 2, false)
AICanCaptureCP("cp4", 2, false)
AICanCaptureCP("cp1", 3, false)
AICanCaptureCP("cp2", 3, false)
AICanCaptureCP("cp3", 3, false)
AICanCaptureCP("cp4", 3, false)
AICanCaptureCP("cp1", 4, false)
AICanCaptureCP("cp2", 4, false)
AICanCaptureCP("cp3", 4, false)
AICanCaptureCP("cp4", 4, false)
target = GetTeamMember(3,0) --set the target as the first dude on team 3
AddAIGoal(3, "deathmatch", 100) --don't get distracted by cps
AddAIGoal(4, "deathmatch", 100)
SelectCharacterClass(target, "cis_hero_darthmaul") --i'm maul about dat bass
SpawnCharacter(target, GetPathPoint("cp4_spawn", 0)) --target spawnpoint
print("Target setup complete")
--civs =
--SelectCharacterClass(civs, "cis_hero_darthmaul") --i'm maul about dat bass
--SpawnCharacter(civs, GetPathPoint("cp4_spawn", 0)) --target spawnpoint
dummy = CreateTimer("dummy") --let's give the game some time to gather its thoughts
SetTimerValue(dummy, 0.5)
StartTimer(dummy)
print("Timer dummy elapsed")
OnTimerElapse(
function(timer)
ClearAIGoals(2) --so the guards follow the target, this i will be removing/changing later
AddAIGoal(2, "follow", 1000, GetCharacterUnit(target)) --i'm watching you / excuse me??
MapAddEntityMarker(GetCharacterUnit(target), "hud_objective_icon_circle", 5, 1, "RED", true, true, true) --map marker
DestroyTimer(dummy)
print("Map marker created")
end,
dummy
)
SetTeamAsFriend(1,2) --make love not war (for now)
SetTeamAsNeutral(1,3)
SetTeamAsFriend(1,4)
SetTeamAsFriend(2,1)
SetTeamAsFriend(2,3)
SetTeamAsFriend(2,4)
SetTeamAsFriend(3,1)
SetTeamAsFriend(3,2)
SetTeamAsFriend(3,4)
SetTeamAsFriend(4,1)
SetTeamAsFriend(4,2)
SetTeamAsFriend(4,3)
print("Team diplomacy set")
tarhp = nil
onfirstspawn = OnCharacterSpawn(
function(character)
if IsCharacterHuman(character) then --fortunately no turing test needed here
ReleaseCharacterSpawn(onfirstspawn)
onfirstspawn = nil
--MoveCameraToEntity(GetCharacterUnit(target)) --so far have not discovered why this is here
--AllowAISpawn(2, false)
AllowAISpawn(3, false)
--AllowAISpawn(4, false)
tarhp = GetObjectHealth(GetCharacterUnit(target)) --not sure about this either...
--ShowMessageText("level.abc.kill")
end
end
)
deftimer = CreateTimer("deftimer") --let's give the game some time to gather its thoughts
SetTimerValue(deftimer, 1.0)
deathcheck = OnCharacterDeath( --this is a really interesting way of checking for victory/defeat
function(character, killer)
if GetNumTeamMembersAlive(1) == 0 then --if you are not alive then you are dead and therefore lose
StartTimer(deftimer)
print("Starting defeat timer...")
elseif GetNumTeamMembersAlive(3) == 0 then --this town ain't big enough for the two of us
ClearAIGoals(2) --now that the target is dead the minions must re-focus...
AddAIGoal(2, "destroy", 1000, GetCharacterUnit(killer)) --...on AVENGING HIS DEATH!!
ActivateRegion("choppa") --this is the choppa
SetTeamAsEnemy(1,2) --friends off
SetTeamAsEnemy(2,1) --likewise
MapAddRegionMarker("choppa", "hud_objective_icon_circle", 5, 1, "BLUE", true, true, true) --get to da choppa
print("Target eliminated")
print("Safe zone activated")
end
end)
OnTimerElapse(
function(timer)
MissionDefeat(1)
print("Mission defeat")
DestroyTimer(deftimer)
end,
deftimer
)
i = 1
TEAM = OnCharacterDeath(
function(character, killer)
if GetObjectTeam(killer) == 1 then --if anyone dies and the killer was on team 1?
SpawnCharacter(GetTeamMember(1,i),GetEntityMatrix(killer)) --i'm not sure who we're spawning
i = i + 1
print("LOOK AT ME EVERYONE!!")
end
end)
wincheck = OnEnterRegion(
function(region, character)
MissionVictory(1)
print("Congration you done it (victory)")
end,
"choppa"
)
state = 1
AllowAISpawn(1, false) --in space, no one can hear you... wait...
dmgcheck = OnObjectDamage(function(object, damager)
print("check damage")
if GetObjectTeam(GetCharacterUnit(damager)) == 1 and state == 1 then --if you touch anything...
ClearAIGoals(3)
--AllowAISpawn(4, false)
AddAIGoal(3, "follow", 1000, "cp4") --he'll run away
ClearAIGoals(2)
AddAIGoal(2, "destroy", 500, GetCharacterUnit(damager)) --and they'll try to kill you
AddAIGoal(2, "follow", 500, GetCharacterUnit(target))
SetTeamAsEnemy(1,2)
SetTeamAsEnemy(2,1)
state = 2
print("Damage confirmed")
end
end)
DisableAIAutoBalance()
--END KTT
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(30)
SetMaxPlayerFlyHeight (30)
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("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_hero_anakin")
ReadDataFile("SIDE\\cis.lvl",
"cis_inf_rifleman",
"cis_inf_engineer",
"cis_hero_darthmaul")
ReadDataFile("SIDE\\tur.lvl",
"tur_bldg_laser",
"tur_bldg_tower")
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 = 10,
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},
}
}
SetTeamName (3, "target")
AddUnitClass (3, "cis_hero_darthmaul", 1)
SetUnitCount (3, 50)
SetTeamName (4, "civilians")
AddUnitClass (4, "cis_inf_engineer",40, 50)
SetUnitCount (4, 50)
SetHeroClass(CIS, "cis_inf_droideka")
SetHeroClass(REP, "rep_hero_anakin")
-- 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)
SetSpawnDelay(10.0, 0.25)
--ReadDataFile("dc:JER\\JER.lvl", "JER_conquest")
ReadDataFile("dc:JER\\JER.lvl", "JER_conquest")
SetDenseEnvironment("false")
SetAttackingTeam(ATT)
-- 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]