Guest User

Untitled

a guest
Aug 6th, 2011
410
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.61 KB | None | 0 0
  1. function SkirmishDefense:SceneTest()
  2. --[[ THIS TEST IS DONE AUTOMATICALLY BY THE GAME NOW; IT SCANS THE SCRIPT FOR ANY MENTIONS OF "GetArea" AND TESTS THE SCENES FOR HAVING THOSE USED AREAS DEFINED!
  3. -- See if the required areas are present in the test scene
  4. if not (TestScene:HasArea("LZ Team 1") and TestScene:HasArea("LZ Team 2")) then
  5. -- If the test scene failed the compatibility test, invalidate it
  6. TestScene = nil;
  7. end
  8. --]]
  9. end
  10.  
  11. function SkirmishDefense:StartActivity()
  12. print("START! -- SkirmishDefense:StartActivity()!");
  13. self.playertally = 0;
  14. self.playerlist = {};
  15. for player = Activity.PLAYER_1, Activity.MAXPLAYERCOUNT - 1 do
  16. if self:PlayerActive(player) and self:PlayerHuman(player) then
  17. self.playerlist[player + 1] = true;
  18. self.playertally = self.playertally + 1;
  19. -- Check if we already have a brain assigned
  20. if not self:GetPlayerBrain(player) then
  21. local foundBrain = MovableMan:GetUnassignedBrain(self:GetTeamOfPlayer(player));
  22. -- If we can't find an unassigned brain in the scene to give each player, then force to go into editing mode to place one
  23. if not foundBrain then
  24. self.ActivityState = Activity.EDITING;
  25. AudioMan:ClearMusicQueue();
  26. AudioMan:PlayMusic("Base.rte/Music/dBSoundworks/ccambient4.ogg", -1, -1);
  27. else
  28. -- Set the found brain to be the selected actor at start
  29. self:SetPlayerBrain(foundBrain, player);
  30. self:SwitchToActor(foundBrain, player, self:GetTeamOfPlayer(player));
  31. self:SetLandingZone(self:GetPlayerBrain(player).Pos, player);
  32. -- Set the observation target to the brain, so that if/when it dies, the view flies to it in observation mode
  33. self:SetObservationTarget(self:GetPlayerBrain(player).Pos, player);
  34. end
  35. end
  36. end
  37. end
  38. self.WList = { "Grenade Launcher", "Blaster", "Nailgun", "Pistol", "Sniper Rifle", "Heavy Sniper Rifle", "Gatling Gun", "Flamer", "Napalm Flamer", "Spike Launcher", "Flak Cannon", "Auto Pistol", "Shotgun", "Auto Shotgun", "Mauler Shotgun", "Bazooka", "AK-47", "YAK4700", "TommyGun", "Uzi", "M16", "Shortgun", "Spas12", "Spaz1200", "Rifle Long", "Desert Eagle", "Glock", "Luger", "Peacemaker" }
  39. self.AList = { "Mia", "Dafred", "Dimitri", "Gordon", "Brutus", "Sandra", "Soldier Light", "Soldier Heavy", "Browncoat Light", "Browncoat Heavy" };
  40. self.ESpawnTimer = Timer();
  41. self.LZ = SceneMan.Scene:GetArea("LZ Team 1");
  42. self.EnemyLZ = SceneMan.Scene:GetArea("LZ Team 2");
  43.  
  44. if self.Difficulty <= GameActivity.CAKEDIFFICULTY then
  45. self:SetTeamFunds(10000, Activity.TEAM_1);
  46. self:SetTeamFunds(10000, Activity.TEAM_2);
  47. self:SetTeamFunds(10000, Activity.TEAM_3);
  48. self:SetTeamFunds(10000, Activity.TEAM_4);
  49. self.BaseSpawnTime = 6000;
  50. self.RandomSpawnTime = 8000;
  51. elseif self.Difficulty <= GameActivity.EASYDIFFICULTY then
  52. self:SetTeamFunds(8000, Activity.TEAM_1);
  53. self:SetTeamFunds(8000, Activity.TEAM_2);
  54. self:SetTeamFunds(8000, Activity.TEAM_3);
  55. self:SetTeamFunds(8000, Activity.TEAM_4);
  56. self.BaseSpawnTime = 5500;
  57. self.RandomSpawnTime = 7000;
  58. elseif self.Difficulty <= GameActivity.MEDIUMDIFFICULTY then
  59. self:SetTeamFunds(6000, Activity.TEAM_1);
  60. self:SetTeamFunds(6000, Activity.TEAM_2);
  61. self:SetTeamFunds(6000, Activity.TEAM_3);
  62. self:SetTeamFunds(6000, Activity.TEAM_4);
  63. self.BaseSpawnTime = 5000;
  64. self.RandomSpawnTime = 6000;
  65. elseif self.Difficulty <= GameActivity.HARDDIFFICULTY then
  66. self:SetTeamFunds(4000, Activity.TEAM_1);
  67. self:SetTeamFunds(4000, Activity.TEAM_2);
  68. self:SetTeamFunds(4000, Activity.TEAM_3);
  69. self:SetTeamFunds(4000, Activity.TEAM_4);
  70. self.BaseSpawnTime = 4500;
  71. self.RandomSpawnTime = 5000;
  72. elseif self.Difficulty <= GameActivity.NUTSDIFFICULTY then
  73. self:SetTeamFunds(2000, Activity.TEAM_1);
  74. self:SetTeamFunds(2000, Activity.TEAM_2);
  75. self:SetTeamFunds(2000, Activity.TEAM_3);
  76. self:SetTeamFunds(2000, Activity.TEAM_4);
  77. self.BaseSpawnTime = 4000;
  78. self.RandomSpawnTime = 4500;
  79. elseif self.Difficulty <= GameActivity.MAXDIFFICULTY then
  80. self:SetTeamFunds(1000, Activity.TEAM_1);
  81. self:SetTeamFunds(1000, Activity.TEAM_2);
  82. self:SetTeamFunds(1000, Activity.TEAM_3);
  83. self:SetTeamFunds(1000, Activity.TEAM_4);
  84. self.BaseSpawnTime = 3500;
  85. self.RandomSpawnTime = 4000;
  86. end
  87.  
  88. self.StartTimer = Timer();
  89. self.TimeLeft = self.BaseSpawnTime + math.random(self.RandomSpawnTime);
  90. end
  91.  
  92. function SkirmishDefense:PauseActivity(pause)
  93. print("PAUSE! -- SkirmishDefense:PauseActivity()!");
  94. end
  95.  
  96. function SkirmishDefense:EndActivity()
  97. print("END! -- SkirmishDefense:EndActivity()!");
  98.  
  99. end
  100.  
  101. function SkirmishDefense:UpdateActivity()
  102.  
  103. if self.ActivityState ~= Activity.OVER and self.ActivityState ~= Activity.EDITING then
  104. MovableMan:OpenAllDoors(false,Activity.NOTEAM)
  105. -- Clear all objective markers, they get re-added each frame
  106. self:ClearObjectivePoints();
  107.  
  108. for player = Activity.PLAYER_1, Activity.MAXPLAYERCOUNT - 1 do
  109. if self:PlayerActive(player) and self:PlayerHuman(player) then
  110. if not self.StartTimer:IsPastSimMS(3000) then
  111. FrameMan:SetScreenText("Destroy the enemy brain(s)!", player, 333, 5000, true);
  112. end
  113. -- The current player's team
  114. local team = self:GetTeamOfPlayer(player);
  115. -- Check if any player's brain is dead
  116. if not MovableMan:IsActor(self:GetPlayerBrain(player)) then
  117. self:SetPlayerBrain(nil, player);
  118. self:ResetMessageTimer(player);
  119. FrameMan:ClearScreenText(player);
  120. FrameMan:SetScreenText("Your brain has been destroyed!", player, 333, -1, false);
  121. if self.playerlist[player + 1] == true then
  122. self.playerlist[player + 1] = false;
  123. self.playertally = self.playertally - 1;
  124. end
  125. else
  126. --Add objective points
  127. self:AddObjectivePoint("Protect!", self:GetPlayerBrain(player).AboveHUDPos, team, GameActivity.ARROWDOWN);
  128. for player2 = Activity.PLAYER_1, Activity.MAXPLAYERCOUNT - 1 do
  129. if player2 ~= player and self:PlayerActive(player2) and self:PlayerHuman(player2) and MovableMan:IsActor(self:GetPlayerBrain(player2)) then
  130. local team2 = self:GetTeamOfPlayer(player2);
  131. self:AddObjectivePoint("Destroy!", self:GetPlayerBrain(player2).AboveHUDPos, team, GameActivity.ARROWDOWN);
  132. end
  133. end
  134. end
  135. end
  136. end
  137.  
  138. --Spawn the AI.
  139. if self.CPUTeam == nil then
  140. self.CPUTeam = Activity.NOTEAM;
  141. for player = Activity.PLAYER_1, Activity.MAXPLAYERCOUNT - 1 do
  142. if self:PlayerActive(player) and not(self:PlayerHuman(player)) then
  143. local team = self:GetTeamOfPlayer(player);
  144. self.CPUTeam = team;
  145. end
  146. end
  147. end
  148.  
  149. if self.CPUTeam ~= Activity.NOTEAM and self.ESpawnTimer:LeftTillSimMS(self.TimeLeft) <= 0 and MovableMan:GetMOIDCount() <= 210 then
  150. local actor = {};
  151. for x = 0, math.ceil(math.random(3)) do
  152. local y = math.random();
  153. if y > 0.05 then
  154. actor[x] = CreateAHuman(self.AList[math.random(#self.AList)]);
  155. actor[x].Team = self.CPUTeam;
  156. actor[x].AIMode = Actor.AIMODE_BRAINHUNT;
  157. actor[x]:AddInventoryItem(CreateHDFirearm(self.WList[math.random(#self.WList)]));
  158. actor[x]:AddInventoryItem(CreateHDFirearm("Medium Digger"));
  159. else
  160. actor[x] = CreateACrab("Dreadnought");
  161. actor[x].Team = self.CPUTeam;
  162. actor[x].AIMode = Actor.AIMODE_BRAINHUNT;
  163. end
  164. end
  165. local ship = nil;
  166. local z = math.random();
  167. if z > 0.90 then
  168. ship = CreateACRocket("Drop Crate","Dummy.rte");
  169. elseif z > 0.80 then
  170. ship = CreateACRocket("Rocklet","Dummy.rte");
  171. elseif z > 0.60 then
  172. ship = CreateACDropShip("Drop Ship","Dummy.rte");
  173. elseif z > 0.40 then
  174. ship = CreateACDropShip("Drop Ship MK1","Coalition.rte");
  175. elseif z > 0.20 then
  176. ship = CreateACRocket("Rocket MK2","Coalition.rte");
  177. else
  178. ship = CreateACRocket("Rocket MK1","Coalition.rte");
  179. end
  180. for n = 0, #actor do
  181. ship:AddInventoryItem(actor[n]);
  182. end
  183. ship.Team = self.CPUTeam;
  184. local w = math.random();
  185. if w > 0.5 then
  186. ship.Pos = Vector(self.EnemyLZ:GetRandomPoint().X,-50);
  187. else
  188. ship.Pos = Vector(self.LZ:GetRandomPoint().X,-50);
  189. end
  190. MovableMan:AddActor(ship);
  191. self.ESpawnTimer:Reset();
  192. self.TimeLeft = self.BaseSpawnTime + math.random(self.RandomSpawnTime);
  193. end
  194.  
  195. --Win/Lose Conditions
  196. if self.CPUTeam == Activity.NOTEAM then
  197. if self.playertally == 1 then
  198. for i = 1, #self.playerlist do
  199. if self.playerlist[i] == true then
  200. self.WinnerTeam = i - 1;
  201. ActivityMan:EndActivity();
  202. end
  203. end
  204. end
  205. else
  206. if self.playertally == 0 then
  207. self.WinnerTeam = self.CPUTeam;
  208. ActivityMan:EndActivity();
  209. end
  210. end
  211. else
  212. MovableMan:OpenAllDoors(true,Activity.NOTEAM)
  213. self.StartTimer:Reset();
  214. end
  215. end
Advertisement
Add Comment
Please, Sign In to add comment