Advertisement
Guest User

Untitled

a guest
Sep 29th, 2010
333
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.90 KB | None | 0 0
  1. #include common_scripts\utility;
  2. #include common_scripts\_fx;
  3. #include maps\mp\_utility;
  4.  
  5. main()
  6. {
  7. if ( isDefined( level._loadStarted ) )
  8. return;
  9.  
  10. level._loadStarted = true;
  11.  
  12. level.createFX_enabled = ( getdvar( "createfx" ) != "" );
  13.  
  14. struct_class_init();
  15.  
  16. initGameFlags();
  17. initLevelFlags();
  18.  
  19. level.generic_index = 0;
  20. // flag_struct is used as a placeholder when a flag is set without an entity
  21.  
  22. level.flag_struct = spawnstruct();
  23. level.flag_struct assign_unique_id();
  24. if ( !isdefined( level.flag ) )
  25. {
  26. level.flag = [];
  27. level.flags_lock = [];
  28. }
  29.  
  30. level.requiredMapAspectRatio = getDvarFloat( "scr_RequiredMapAspectratio", 1 );
  31. level.createClientFontString_func = maps\mp\gametypes\_hud_util::createFontString;
  32. level.HUDsetPoint_func = maps\mp\gametypes\_hud_util::setPoint;
  33. level.leaderDialogOnPlayer_func = maps\mp\_utility::leaderDialogOnPlayer;
  34.  
  35. thread maps\mp\gametypes\_tweakables::init();
  36.  
  37.  
  38. if ( !isdefined( level.func ) )
  39. level.func = [];
  40. level.func[ "precacheMpAnim" ] = ::precacheMpAnim;
  41. level.func[ "scriptModelPlayAnim" ] = ::scriptModelPlayAnim;
  42. level.func[ "scriptModelClearAnim" ] = ::scriptModelClearAnim;
  43.  
  44. // dodge this stuff for createfx tool.
  45. if( ! level.createFX_enabled )
  46. {
  47. thread maps\mp\_minefields::minefields();
  48. thread maps\mp\_radiation::radiation();
  49. thread maps\mp\_shutter::main();
  50. thread maps\mp\_destructables::init();
  51. thread common_scripts\_elevator::init();
  52. thread common_scripts\_dynamic_world::init();
  53. thread common_scripts\_destructible::init();
  54. thread common_scripts\_pipes::main();
  55. }
  56.  
  57. if ( getMapCustom( "thermal" ) == "invert" )
  58. {
  59. game["thermal_vision"] = "thermal_snowlevel_mp";
  60. SetThermalBodyMaterial( "thermalbody_snowlevel" );
  61. }
  62. else
  63. {
  64. game["thermal_vision"] = "thermal_mp";
  65. }
  66.  
  67. VisionSetNaked( getDvar( "mapname" ), 0 );
  68. VisionSetNight( "default_night_mp" );
  69. VisionSetMissilecam( "missilecam" );
  70. VisionSetThermal( game[ "thermal_vision" ] );
  71. VisionSetPain( getDvar( "mapname" ) );
  72.  
  73. lanterns = getentarray("lantern_glowFX_origin","targetname");
  74. for( i = 0 ; i < lanterns.size ; i++ )
  75. lanterns[i] thread lanterns();
  76.  
  77. maps\mp\_art::main();
  78. /#
  79. thread common_scripts\_painter::main("painter_mp");
  80. #/
  81.  
  82. setupExploders();
  83.  
  84. thread common_scripts\_fx::initFX();
  85. if ( level.createFX_enabled )
  86. maps\mp\_createfx::createfx();
  87.  
  88. if ( getdvar( "r_reflectionProbeGenerate" ) == "1" )
  89. {
  90. maps\mp\gametypes\_spawnlogic::setMapCenterForReflections();
  91. maps\mp\_global_fx::main();
  92. level waittill( "eternity" );
  93. }
  94.  
  95. thread maps\mp\_global_fx::main();
  96.  
  97. // Do various things on triggers
  98. for ( p = 0;p < 6;p ++ )
  99. {
  100. switch( p )
  101. {
  102. case 0:
  103. triggertype = "trigger_multiple";
  104. break;
  105.  
  106. case 1:
  107. triggertype = "trigger_once";
  108. break;
  109.  
  110. case 2:
  111. triggertype = "trigger_use";
  112. break;
  113.  
  114. case 3:
  115. triggertype = "trigger_radius";
  116. break;
  117.  
  118. case 4:
  119. triggertype = "trigger_lookat";
  120. break;
  121.  
  122. default:
  123. assert( p == 5 );
  124. triggertype = "trigger_damage";
  125. break;
  126. }
  127.  
  128. triggers = getentarray( triggertype, "classname" );
  129.  
  130. for ( i = 0;i < triggers.size;i ++ )
  131. {
  132. if( isdefined( triggers[ i ].script_prefab_exploder) )
  133. triggers[i].script_exploder = triggers[ i ].script_prefab_exploder;
  134.  
  135. if( isdefined( triggers[ i ].script_exploder) )
  136. level thread maps\mp\_load::exploder_load( triggers[ i ] );
  137. }
  138. }
  139.  
  140. hurtTriggers = getentarray( "trigger_hurt", "classname" );
  141.  
  142. foreach ( hurtTrigger in hurtTriggers )
  143. {
  144. hurtTrigger thread hurtPlayersThink();
  145. }
  146.  
  147. thread maps\mp\_animatedmodels::main();
  148.  
  149. // auto-sentry
  150. level.func[ "damagefeedback" ] = maps\mp\gametypes\_damagefeedback::updateDamageFeedback;
  151. level.func[ "setTeamHeadIcon" ] = maps\mp\_entityheadicons::setTeamHeadIcon;
  152. level.laserOn_func = ::laserOn;
  153. level.laserOff_func = ::laserOff;
  154.  
  155. // defaults
  156. setDvar( "sm_sunShadowScale", 1 );
  157. setDvar( "r_specularcolorscale", 2.5 );
  158. setDvar( "r_diffusecolorscale", 1 );
  159. setDvar( "r_lightGridEnableTweaks", 0 );
  160. setDvar( "r_lightGridIntensity", 1 );
  161. setDvar( "r_lightGridContrast", 0 );
  162. }
  163.  
  164. exploder_load( trigger )
  165. {
  166. level endon( "killexplodertridgers" + trigger.script_exploder );
  167. trigger waittill( "trigger" );
  168. if ( isdefined( trigger.script_chance ) && randomfloat( 1 ) > trigger.script_chance )
  169. {
  170. if ( isdefined( trigger.script_delay ) )
  171. wait trigger.script_delay;
  172. else
  173. wait 4;
  174. level thread exploder_load( trigger );
  175. return;
  176. }
  177. exploder( trigger.script_exploder );
  178. level notify( "killexplodertridgers" + trigger.script_exploder );
  179. }
  180.  
  181.  
  182. setupExploders()
  183. {
  184. // Hide exploder models.
  185. ents = getentarray( "script_brushmodel", "classname" );
  186. smodels = getentarray( "script_model", "classname" );
  187. for ( i = 0;i < smodels.size;i ++ )
  188. ents[ ents.size ] = smodels[ i ];
  189.  
  190. for ( i = 0;i < ents.size;i ++ )
  191. {
  192. if ( isdefined( ents[ i ].script_prefab_exploder ) )
  193. ents[ i ].script_exploder = ents[ i ].script_prefab_exploder;
  194.  
  195. if ( isdefined( ents[ i ].script_exploder ) )
  196. {
  197. if ( ( ents[ i ].model == "fx" ) && ( ( !isdefined( ents[ i ].targetname ) ) || ( ents[ i ].targetname != "exploderchunk" ) ) )
  198. ents[ i ] hide();
  199. else if ( ( isdefined( ents[ i ].targetname ) ) && ( ents[ i ].targetname == "exploder" ) )
  200. {
  201. ents[ i ] hide();
  202. ents[ i ] notsolid();
  203. //if ( isdefined( ents[ i ].script_disconnectpaths ) )
  204. //ents[ i ] connectpaths();
  205. }
  206. else if ( ( isdefined( ents[ i ].targetname ) ) && ( ents[ i ].targetname == "exploderchunk" ) )
  207. {
  208. ents[ i ] hide();
  209. ents[ i ] notsolid();
  210. //if ( isdefined( ents[ i ].spawnflags ) && ( ents[ i ].spawnflags & 1 ) )
  211. //ents[ i ] connectpaths();
  212. }
  213. }
  214. }
  215.  
  216. script_exploders = [];
  217.  
  218. potentialExploders = getentarray( "script_brushmodel", "classname" );
  219. for ( i = 0;i < potentialExploders.size;i ++ )
  220. {
  221. if ( isdefined( potentialExploders[ i ].script_prefab_exploder ) )
  222. potentialExploders[ i ].script_exploder = potentialExploders[ i ].script_prefab_exploder;
  223.  
  224. if ( isdefined( potentialExploders[ i ].script_exploder ) )
  225. script_exploders[ script_exploders.size ] = potentialExploders[ i ];
  226. }
  227.  
  228. potentialExploders = getentarray( "script_model", "classname" );
  229. for ( i = 0;i < potentialExploders.size;i ++ )
  230. {
  231. if ( isdefined( potentialExploders[ i ].script_prefab_exploder ) )
  232. potentialExploders[ i ].script_exploder = potentialExploders[ i ].script_prefab_exploder;
  233.  
  234. if ( isdefined( potentialExploders[ i ].script_exploder ) )
  235. script_exploders[ script_exploders.size ] = potentialExploders[ i ];
  236. }
  237.  
  238. potentialExploders = getentarray( "item_health", "classname" );
  239. for ( i = 0;i < potentialExploders.size;i ++ )
  240. {
  241. if ( isdefined( potentialExploders[ i ].script_prefab_exploder ) )
  242. potentialExploders[ i ].script_exploder = potentialExploders[ i ].script_prefab_exploder;
  243.  
  244. if ( isdefined( potentialExploders[ i ].script_exploder ) )
  245. script_exploders[ script_exploders.size ] = potentialExploders[ i ];
  246. }
  247.  
  248. if ( !isdefined( level.createFXent ) )
  249. level.createFXent = [];
  250.  
  251. acceptableTargetnames = [];
  252. acceptableTargetnames[ "exploderchunk visible" ] = true;
  253. acceptableTargetnames[ "exploderchunk" ] = true;
  254. acceptableTargetnames[ "exploder" ] = true;
  255.  
  256. for ( i = 0; i < script_exploders.size; i ++ )
  257. {
  258. exploder = script_exploders[ i ];
  259. ent = createExploder( exploder.script_fxid );
  260. ent.v = [];
  261. ent.v[ "origin" ] = exploder.origin;
  262. ent.v[ "angles" ] = exploder.angles;
  263. ent.v[ "delay" ] = exploder.script_delay;
  264. ent.v[ "firefx" ] = exploder.script_firefx;
  265. ent.v[ "firefxdelay" ] = exploder.script_firefxdelay;
  266. ent.v[ "firefxsound" ] = exploder.script_firefxsound;
  267. ent.v[ "firefxtimeout" ] = exploder.script_firefxtimeout;
  268. ent.v[ "earthquake" ] = exploder.script_earthquake;
  269. ent.v[ "damage" ] = exploder.script_damage;
  270. ent.v[ "damage_radius" ] = exploder.script_radius;
  271. ent.v[ "soundalias" ] = exploder.script_soundalias;
  272. ent.v[ "repeat" ] = exploder.script_repeat;
  273. ent.v[ "delay_min" ] = exploder.script_delay_min;
  274. ent.v[ "delay_max" ] = exploder.script_delay_max;
  275. ent.v[ "target" ] = exploder.target;
  276. ent.v[ "ender" ] = exploder.script_ender;
  277. ent.v[ "type" ] = "exploder";
  278. // ent.v[ "worldfx" ] = true;
  279. if ( !isdefined( exploder.script_fxid ) )
  280. ent.v[ "fxid" ] = "No FX";
  281. else
  282. ent.v[ "fxid" ] = exploder.script_fxid;
  283. ent.v[ "exploder" ] = exploder.script_exploder;
  284. assertEx( isdefined( exploder.script_exploder ), "Exploder at origin " + exploder.origin + " has no script_exploder" );
  285.  
  286. if ( !isdefined( ent.v[ "delay" ] ) )
  287. ent.v[ "delay" ] = 0;
  288.  
  289. if ( isdefined( exploder.target ) )
  290. {
  291. org = getent( ent.v[ "target" ], "targetname" ).origin;
  292. ent.v[ "angles" ] = vectortoangles( org - ent.v[ "origin" ] );
  293. // forward = anglestoforward( angles );
  294. // up = anglestoup( angles );
  295. }
  296.  
  297. // this basically determines if its a brush / model exploder or not
  298. if ( exploder.classname == "script_brushmodel" || isdefined( exploder.model ) )
  299. {
  300. ent.model = exploder;
  301. ent.model.disconnect_paths = exploder.script_disconnectpaths;
  302. }
  303.  
  304. if ( isdefined( exploder.targetname ) && isdefined( acceptableTargetnames[ exploder.targetname ] ) )
  305. ent.v[ "exploder_type" ] = exploder.targetname;
  306. else
  307. ent.v[ "exploder_type" ] = "normal";
  308.  
  309. ent common_scripts\_createfx::post_entity_creation_function();
  310. }
  311. }
  312.  
  313. lanterns()
  314. {
  315. if (!isdefined(level._effect["lantern_light"]))
  316. level._effect["lantern_light"] = loadfx("props/glow_latern");
  317.  
  318. loopfx("lantern_light", self.origin, 0.3, self.origin + (0,0,1));
  319. }
  320.  
  321.  
  322. hurtPlayersThink()
  323. {
  324. level endon ( "game_ended" );
  325.  
  326. wait ( randomFloat( 1.0 ) );
  327.  
  328. for ( ;; )
  329. {
  330. foreach ( player in level.players )
  331. {
  332. if ( player isTouching( self ) && isReallyAlive( player ) )
  333. player _suicide();
  334. }
  335.  
  336. wait ( 0.5 );
  337. }
  338. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement