sr2lua/sh_rn_sciencemuseum.lua

  1. --Make more peds in the upstairs area 
  2.  
  3. --Tables-------- 
  4. servers = {"sh_rn_sciencemuseum_SM_ServerA180","sh_rn_sciencemuseum_SM_ServerA160","sh_rn_sciencemuseum_SM_ServerA140", "sh_rn_sciencemuseum_SM_ServerA120", "sh_rn_sciencemuseum_SM_ServerA100", "sh_rn_sciencemuseum_SM_ServerA080", "sh_rn_sciencemuseum_SM_ServerA060", "sh_rn_sciencemuseum_SM_ServerA040", "sh_rn_sciencemuseum_SM_ServerA020", "sh_rn_sciencemuseum_SM_ServerA200", "sh_rn_sciencemuseum_SM_ServerA220", "sh_rn_sciencemuseum_SM_ServerA240"} 
  5. lts = {"sh_rn_sciencemuseum_$cleut1","sh_rn_sciencemuseum_$cleut2","sh_rn_sciencemuseum_$cleut3","sh_rn_sciencemuseum_$cleut4","sh_rn_sciencemuseum_$cleut5", "sh_rn_sciencemuseum_$cleut6", "sh_rn_sciencemuseum_$cleut7", "sh_rn_sciencemuseum_$cleut8", "sh_rn_sciencemuseum_$cleut9", "sh_rn_sciencemuseum_$cleut10", "sh_rn_sciencemuseum_$cleut11", "sh_rn_sciencemuseum_$cleut12"} 
  6. peds = {"sh_rn_sciencemuseum_$c058", "sh_rn_sciencemuseum_$c059", "sh_rn_sciencemuseum_$c060", "sh_rn_sciencemuseum_$c061", "sh_rn_sciencemuseum_$c062", "sh_rn_sciencemuseum_$c064" } 
  7. group_one = {"sh_rn_sciencemuseum_$c000", "sh_rn_sciencemuseum_$c001", "sh_rn_sciencemuseum_$c002", "sh_rn_sciencemuseum_$c003", "sh_rn_sciencemuseum_$c004", "sh_rn_sciencemuseum_$c005", "sh_rn_sciencemuseum_$c006", "sh_rn_sciencemuseum_$c007", "sh_rn_sciencemuseum_$c008", "sh_rn_sciencemuseum_$c009", "sh_rn_sciencemuseum_$c012", "sh_rn_sciencemuseum_$c010", "sh_rn_sciencemuseum_$c011", "sh_rn_sciencemuseum_$c013"} 
  8. --Globals------- 
  9. server_total = sizeof_table(servers) 
  10. server_destroyed = 0 
  11. lt_total = sizeof_table(lts) 
  12. lt_killed = 0 
  13. peds_total = sizeof_table(peds) 
  14. group_one_total = sizeof_table(group_one) 
  15. local_inarea = false 
  16. remote_inarea = false 
  17. helipath = "sh_rn_sciencemuseum_$pathattack" 
  18. attack_in_area=false 
  19. heli_attack_thread = "" 
  20. in_attack_loop = false 
  21.  
  22. function sh_rn_sciencemuseum_start(checkpoint, is_restart) 
  23. 	 
  24. 	set_mission_author("David Bowring") 
  25. 	--checkpoint="heli" 
  26. 	character_slots_cap_for_team("police", 0) 
  27. 	if checkpoint==MISSION_START_CHECKPOINT then 
  28. 	mission_start_fade_out() 
  29. 	teleport_coop("sh_rn_sciencemuseum_$nstart1","sh_rn_sciencemuseum_$nstart2")	 
  30. 	door_lock("sh_rn_sciencemuseum_a0", true) 
  31. 	door_lock("sh_rn_sciencemuseum_060", true) 
  32. 	notoriety_set_max("police", 0) 
  33. 	notoriety_set_max("ronin", 3) 
  34. 	group_create("sh_rn_sciencemuseum_$GroupOne", true) 
  35. 	--group_create("sh_rn_sciencemuseum_$Gpeds", true) 
  36. 	if (not is_restart) then 
  37. 		cutscene_play("sh_rn_sciencemuseumct1") 
  38. 	end 
  39.  
  40. 	--set on trigger callbacks 
  41. 	on_trigger("sh_rn_sciencemuseum_objectiveone", "sh_rn_sciencemuseum_$trigger1") 
  42. 	on_trigger("sh_rn_sciencemuseum_spawntwo", "sh_rn_sciencemuseum_$trigger2") --Spawns group 2 
  43. 	on_trigger("sh_rn_sciencemuseum_spawnthree", "sh_rn_sciencemuseum_$trigger3")	--Spawns group 3 
  44. 	on_trigger("sh_rn_sciencemuseum_spawnthree", "sh_rn_sciencemuseum_$theli") 
  45. 	on_trigger("sh_rn_sciencemuseum_objectivetwo", "sh_rn_sciencemuseum_$trigger4a") --Spawns group 4 
  46. 	on_trigger("sh_rn_sciencemuseum_objectivetwo", "sh_rn_sciencemuseum_$trigger4b") --Spawns group 4 
  47. 	on_trigger("sh_rn_sciencemuseum_objectivetwo", "sh_rn_sciencemuseum_$trigger4b") --Spawns group 4 
  48. 	on_trigger("sh_rn_sciencemuseum_heli_attack", "sh_rn_sciencemuseum_$heliattack")	 
  49. 	marker_add_navpoint("sh_rn_sciencemuseum_$trigger1", MINIMAP_ICON_LOCATION, INGAME_EFFECT_LOCATION) 
  50. 	trigger_enable("sh_rn_sciencemuseum_$trigger1", true) 
  51. 	mission_start_fade_in() 
  52.  
  53. 	for i = 1, group_one_total, 1 do 
  54. 		wander_start(group_one[i], group_one[i], 40) 
  55. 	end 
  56.  
  57. 	else 
  58. 		---sh_rn_sciencemuseum_heli_attack() 
  59. 		fade_in(1) 
  60. 		on_trigger("sh_rn_sciencemuseum_heli_attack", "sh_rn_sciencemuseum_$heliattack") 
  61. 		sh_rn_sciencemuseum_objectivethree() 
  62.  
  63. 	end 
  64.  
  65. 		--[[ 
  66. 		--Stop the first floor peds from just leaving the museum at will 
  67. 		for i = 1, peds_total, 1 do	 
  68. 			wander_start(peds[i], peds[i], 20) 
  69. 		end 
  70. 		--]] 
  71.  
  72. end 
  73.  
  74.  
  75.  
  76. function sh_rn_sciencemuseum_objectiveone() --Get to the museum 
  77.  
  78. 	delay(5)  
  79. 	trigger_enable("sh_rn_sciencemuseum_$trigger1", false) 
  80. 	trigger_enable("sh_rn_sciencemuseum_$trigger2", true)	 
  81. 	marker_remove_navpoint("sh_rn_sciencemuseum_$trigger1") 
  82. 	--marker_add_navpoint("sh_rn_sciencemuseum_$tservers", MINIMAP_ICON_LOCATION, INGAME_EFFECT_LOCATION) 
  83. 	mission_help_table("sh_rn_sciencemuseum_instruct_one") -- "Get to the servers!" (needs to change) 
  84. 	marker_add_navpoint("sh_rn_sciencemuseum_$navServers", MINIMAP_ICON_LOCATION, INGAME_EFFECT_LOCATION) 
  85. 	notoriety_set_min("ronin", 3) 
  86. 	notoriety_set_max("ronin", 3) 
  87.  
  88. end 
  89.  
  90.  
  91.  
  92. function sh_rn_sciencemuseum_spawntwo() 
  93. 	trigger_enable("sh_rn_sciencemuseum_$trigger2", false) 
  94. 	trigger_enable("sh_rn_sciencemuseum_$trigger3", true) 
  95. 	trigger_enable("sh_rn_sciencemuseum_$theli", true) 
  96. 	group_create("sh_rn_sciencemuseum_$GroupTwo", true) 
  97. 	group_create("sh_rn_sciencemuseum_$Gpeds2", true) 
  98. 	release_to_world("sh_rn_sciencemuseum_$Gpeds") 
  99. 	release_to_world("sh_rn_sciencemuseum_$Gpeds2") 
  100. 	release_to_world("sh_rn_sciencemuseum_$GroupOne") 
  101. 	 
  102. end 
  103.  
  104.  
  105.  
  106. function sh_rn_sciencemuseum_spawnthree()	 
  107. 	trigger_enable("sh_rn_sciencemuseum_$theli", false) 
  108. 	trigger_enable("sh_rn_sciencemuseum_$trigger3", false) 
  109. 	trigger_enable("sh_rn_sciencemuseum_$trigger4a", true) 
  110. 	trigger_enable("sh_rn_sciencemuseum_$trigger4b", true) 
  111. 	door_lock("sh_rn_sciencemuseum_a0", false) 
  112. 	door_lock("sh_rn_sciencemuseum_060", false) 
  113. 	group_create("sh_rn_sciencemuseum_$GroupThree", true) 
  114. 	--group_create("sh_rn_sciencemuseum_$Gpeds3", true) 
  115. 	--release_to_world("sh_rn_sciencemuseum_$Gpeds3") 
  116. 	release_to_world("sh_rn_sciencemuseum_$GroupTwo")	 
  117. end 
  118.  
  119.  
  120.  
  121. function sh_rn_sciencemuseum_objectivetwo() --Destroy the Servers 
  122.  
  123.  
  124. 	trigger_enable("sh_rn_sciencemuseum_$trigger4a", false) 
  125. 	trigger_enable("sh_rn_sciencemuseum_$trigger4b", false) 
  126.  
  127. 	group_create("sh_rn_sciencemuseum_$GroupFour", true) 
  128. 	group_create("sh_rn_sciencemuseum_$Gpeds4", true) 
  129. 	release_to_world("sh_rn_sciencemuseum_$Gpeds4") 
  130. 	--release_to_world("sh_rn_sciencemuseum_$GroupTwo") 
  131. 	notoriety_set_min("ronin", 3) 
  132. 	marker_remove_navpoint("sh_rn_sciencemuseum_$navServers") 
  133. 	mission_help_table("sh_rn_sciencemuseum_instruct_two") --"Destroy the Ronin Servers" 
  134. 	objective_text(0, "sh_rn_sciencemuseum_serversleft", server_destroyed, server_total) --"Servers Left: %s/%s" 
  135. 	mission_debug("objective two enabled")	 
  136.  
  137. 		for i = 1, server_total, 1 do 
  138. 			marker_add_mover(servers[i], MINIMAP_ICON_KILL, INGAME_EFFECT_KILL) 
  139. 			on_mover_destroyed("sh_rn_sciencemuseum_killcount_server", servers[i]) 
  140. 		end 
  141.  
  142.  
  143. end 
  144.  
  145.  
  146.  
  147. function sh_rn_sciencemuseum_objectivethree() --Kill the Reinforcements 
  148. 	 
  149. 	marker_add_navpoint("sh_rn_sciencemuseum_$trigger4a", MINIMAP_ICON_LOCATION, INGAME_EFFECT_LOCATION) 
  150. 	marker_add_navpoint("sh_rn_sciencemuseum_$trigger4b", MINIMAP_ICON_LOCATION, INGAME_EFFECT_LOCATION) 
  151. 	trigger_enable("sh_rn_sciencemuseum_$heliattack", true) 
  152. 	mission_help_table("MSN_SH_RN_SCIENCEMUSEUM_INSTRUCT_GETOUT") 
  153. 	 
  154. 	 
  155. 	--[[ 
  156. 	group_create("sh_rn_sciencemuseum_$GReinforcements", true)	 
  157. 	objective_text(0, "sh_rn_sciencemuseum_roninleft", lt_killed, lt_total) --"Reinforcements Left: %s/%s" 
  158.  
  159. 	 
  160. 		for i = 1, lt_total, 1 do 
  161. 			marker_add_npc(lts[i], MINIMAP_ICON_KILL, INGAME_EFFECT_KILL) 
  162. 			attack(lts[i],LOCAL_PLAYER) 
  163. 			on_death("sh_rn_sciencemuseum_killcount_lt", lts[i]) 
  164. 		end 
  165.  
  166. 	--]] 
  167. 	 
  168. 	 
  169. end 
  170.  
  171.  
  172.  
  173. --using meshes for servers 
  174. function sh_rn_sciencemuseum_killcount_server(mesh) 
  175.  
  176. 	 
  177. 	server_destroyed = server_destroyed + 1 
  178. 	marker_remove_mover(mesh) 
  179. 	objective_text(0, "sh_rn_sciencemuseum_serversleft", server_destroyed, server_total ) 
  180. 	 
  181. 		if (server_destroyed == server_total) then 
  182. 			objective_text_clear(0) 
  183. 			delay(1) 
  184. 			--sh_rn_sciencemuseum_heli_attack() 
  185. 			sh_rn_sciencemuseum_objectivethree() 
  186. 		end 
  187.  
  188. end 
  189.  
  190.  
  191.  
  192. function sh_rn_sciencemuseum_killcount_lt(char) 
  193. 	lt_killed = lt_killed + 1 
  194. 	marker_remove_npc(char) 
  195. 	objective_text(0, "sh_rn_sciencemuseum_roninleft",lt_killed, lt_total ) 
  196. 	if (lt_killed == lt_total) then 
  197. 		group_destroy("sh_rn_sciencemuseum_$GReinforcements") 
  198. 		objective_text_clear(0) 
  199. 		delay(3) 
  200. 		mission_end_success("sh_rn_sciencemuseum") 
  201. 	end 
  202. end 
  203.  
  204.  
  205.  
  206.  
  207.  
  208. function sh_rn_sciencemuseum_success()	 
  209. 	--mission_end_success("sh_rn_sciencemuseum_success")  
  210. end 
  211.  
  212. function sh_rn_sciencemuseum_success_heli() 
  213. 	on_take_damage("", "sh_rn_sciencemuseum_$vAttackHeli")  
  214. 	mission_debug("Success Called") 
  215. 	mission_end_success("sh_rn_sciencemuseum")  
  216. end 
  217.  
  218. function sh_rn_sciencemuseum_cleanup() 
  219. 	on_trigger("", "sh_rn_sciencemuseum_$trigger1") 
  220. 	on_trigger("", "sh_rn_sciencemuseum_$trigger2") --Spawns group 2 
  221. 	on_trigger("", "sh_rn_sciencemuseum_$trigger3")	--Spawns group 3 
  222. 	on_trigger("", "sh_rn_sciencemuseum_$theli") 
  223. 	on_trigger("", "sh_rn_sciencemuseum_$trigger4a") --Spawns group 4 
  224. 	on_trigger("", "sh_rn_sciencemuseum_$trigger4b") --Spawns group 4 
  225. 	on_trigger("", "sh_rn_sciencemuseum_$trigger4b") --Spawns group 4 
  226. 	on_trigger("", "sh_rn_sciencemuseum_$heliattack") 
  227. 	marker_remove_navpoint("sh_rn_sciencemuseum_$trigger1") 
  228. 	marker_remove_navpoint("sh_rn_sciencemuseum_$heliattack") 
  229. 	marker_remove_navpoint("sh_rn_sciencemuseum_$navServers") 
  230. 	marker_remove_navpoint("sh_rn_sciencemuseum_$trigger4a") 
  231. 	marker_remove_navpoint("sh_rn_sciencemuseum_$trigger4b") 
  232. 	for i = 1, server_total, 1 do			 
  233. 		marker_remove_mover(servers[i]) 
  234. 		on_mover_destroyed("", servers[i]) 
  235. 	end 
  236. end 
  237.  
  238.  
  239.  
  240. function sh_rn_sciencemuseum_heli_attack() 
  241. 	attack_in_area=true 
  242. 	mission_set_checkpoint("heli") 
  243. 	marker_remove_navpoint("sh_rn_sciencemuseum_$trigger4a") 
  244. 	marker_remove_navpoint("sh_rn_sciencemuseum_$trigger4b") 
  245. 	mission_help_table("sh_rn_sciencemuseum_instruct_three") --"Kill all Ronin reinforcements!" 
  246. 	trigger_enable("sh_rn_sciencemuseum_$heliattack", false) 
  247. 	group_create("sh_rn_sciencemuseum_$Gheli", true)	 
  248. 	mission_debug("heli created") 
  249. 	turn_invulnerable("sh_rn_sciencemuseum_$c098", false) 
  250. 	vehicle_enter_teleport("sh_rn_sciencemuseum_$c098", "sh_rn_sciencemuseum_$vAttackHeli", 0)  
  251. 	vehicle_enter_teleport("sh_rn_sciencemuseum_$c098 (0)", "sh_rn_sciencemuseum_$vAttackHeli", 1) 
  252. 	delay(.5) 
  253. 	mission_debug("Drivers Seated") 
  254. 	set_unjackable_flag("sh_rn_sciencemuseum_$vAttackHeli", true) 
  255. 	helicopter_fly_to("sh_rn_sciencemuseum_$vAttackHeli", -1, "sh_rn_sciencemuseum_$nhover1") 
  256. 	--trigger_enable("sh_rn_sciencemuseum_$heliattack", true) 
  257. 	heli_attack_thread = thread_new("sh_rn_sciencemuseum_heli_attack_pattern") 
  258. end 
  259.  
  260.  
  261. function sh_rn_sciencemuseum_heli_attack_enter() 
  262. 	attack_in_area=true 
  263. 	helicopter_set_dont_move_in_combat("sh_rn_sciencemuseum_$vAttackHeli", true)	 
  264. 	helicopter_fly_to("sh_rn_sciencemuseum_$vAttackHeli", -1, "sh_rn_sciencemuseum_$nhover1") 
  265. 	heli_attack_thread = thread_new("sh_rn_sciencemuseum_heli_attack_pattern") 
  266. end 
  267.  
  268. function sh_rn_sciencemuseum_heli_attack_exit() 
  269. 	thread_kill(heli_attack_thread) 
  270. 	helicopter_set_dont_move_in_combat("sh_rn_sciencemuseum_$vAttackHeli", false)	 
  271. 	vehicle_chase("sh_rn_sciencemuseum_$vAttackHeli", LOCAL_PLAYER) 
  272. end 
  273.  
  274.  
  275. function sh_rn_sciencemuseum_heli_attack_pattern() 
  276. 	mission_debug("Fly to about to begin")	 
  277. 	on_vehicle_destroyed("sh_rn_sciencemuseum_success_heli","sh_rn_sciencemuseum_$vAttackHeli") 
  278. 	--helicopter_fly_to_direct("sh_rn_sciencemuseum_$vAttackHeli", "sh_rn_sciencemuseum_$nhover1", -1) 
  279. 	marker_add_vehicle("sh_rn_sciencemuseum_$vAttackHeli",MINIMAP_ICON_KILL, INGAME_EFFECT_VEHICLE_KILL) 
  280. 	helicopter_set_dont_move_in_combat("sh_rn_sciencemuseum_$vAttackHeli", true)	 
  281. 	helicopter_fly_to_direct("sh_rn_sciencemuseum_$vAttackHeli", -1, "sh_rn_sciencemuseum_$nattack3") 
  282. 	helicopter_set_missile_chance("sh_rn_sciencemuseum_$vAttackHeli", 0.3)	 
  283. 	vehicle_chase("sh_rn_sciencemuseum_$vAttackHeli", LOCAL_PLAYER) 
  284. 	on_take_damage("sh_rn_sciencemuseum_heli_attack_closest", "sh_rn_sciencemuseum_$vAttackHeli")  
  285. 	on_trigger("sh_rn_sciencemuseum_heli_attack_enter","sh_rn_sciencemuseum_$heliattack") 
  286. 	on_trigger_exit("sh_rn_sciencemuseum_heli_attack_exit","sh_rn_sciencemuseum_$heliattack")	 
  287.    --teleport_vehicle("sh_rn_sciencemuseum_$vAttackHeli","sh_rn_sciencemuseum_$nhover1")	 
  288. end 
  289.  
  290.  
  291. -- Handle a helicopter taking damage 
  292. function sh_rn_sciencemuseum_heli_attack_closest(attacked_object, char, percent_health_remaining) 
  293.  
  294. 	-- Determine if the helicopter is even functioning any more. 
  295. 	local heli_is_operational = ( vehicle_exists(attacked_object) and (not vehicle_is_destroyed(attacked_object))) 
  296. 	if (not heli_is_operational) then 
  297. 		return		 
  298. 	end 
  299.  
  300. 	if (percent_health_remaining < .5) then 
  301. 		helicopter_set_missile_chance("sh_rn_sciencemuseum_$vAttackHeli", .99)	 
  302. 		mission_debug("damage %50") 
  303. 	end 
  304.  
  305. 	-- Determine if the damage source is a valid target for retribution. If it isn't, then return. 
  306. 	local is_valid_target = ( (char ~= nil) and character_exists(char) and (not character_is_dead(char)) ) 
  307. 	if (not is_valid_target) then 
  308. 		return 
  309. 	end 
  310. 	 
  311. 	if in_attack_loop==false then 
  312. 		in_attack_loop=true 
  313. 		 
  314. 		mission_debug("helicopte target is"..char,5) 
  315.  
  316. 		vehicle_chase("sh_rn_sciencemuseum_$vAttackHeli", char) 
  317. 		delay(15) 
  318. 		in_attack_loop = false 
  319. 	end 
  320. end