player.cs 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673
  1. //-----------------------------------------------------------------------------
  2. // Copyright (c) 2012 GarageGames, LLC
  3. //
  4. // Permission is hereby granted, free of charge, to any person obtaining a copy
  5. // of this software and associated documentation files (the "Software"), to
  6. // deal in the Software without restriction, including without limitation the
  7. // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
  8. // sell copies of the Software, and to permit persons to whom the Software is
  9. // furnished to do so, subject to the following conditions:
  10. //
  11. // The above copyright notice and this permission notice shall be included in
  12. // all copies or substantial portions of the Software.
  13. //
  14. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  15. // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  16. // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  17. // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  18. // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  19. // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
  20. // IN THE SOFTWARE.
  21. //-----------------------------------------------------------------------------
  22. //----------------------------------------------------------------------------
  23. // Player Audio Profiles
  24. //----------------------------------------------------------------------------
  25. datablock SFXProfile(DeathCrySound)
  26. {
  27. fileName = "art/sound/orc_death";
  28. description = AudioClose3d;
  29. preload = true;
  30. };
  31. datablock SFXProfile(PainCrySound)
  32. {
  33. fileName = "art/sound/orc_pain";
  34. description = AudioClose3d;
  35. preload = true;
  36. };
  37. //----------------------------------------------------------------------------
  38. datablock SFXProfile(FootLightSoftSound)
  39. {
  40. filename = "art/sound/lgtStep_mono_01";
  41. description = AudioClosest3d;
  42. preload = true;
  43. };
  44. datablock SFXProfile(FootLightHardSound)
  45. {
  46. filename = "art/sound/hvystep_ mono_01";
  47. description = AudioClose3d;
  48. preload = true;
  49. };
  50. datablock SFXProfile(FootLightMetalSound)
  51. {
  52. filename = "art/sound/metalstep_mono_01";
  53. description = AudioClose3d;
  54. preload = true;
  55. };
  56. datablock SFXProfile(FootLightSnowSound)
  57. {
  58. filename = "art/sound/snowstep_mono_01";
  59. description = AudioClosest3d;
  60. preload = true;
  61. };
  62. datablock SFXProfile(FootLightShallowSplashSound)
  63. {
  64. filename = "art/sound/waterstep_mono_01";
  65. description = AudioClose3d;
  66. preload = true;
  67. };
  68. datablock SFXProfile(FootLightWadingSound)
  69. {
  70. filename = "art/sound/waterstep_mono_01";
  71. description = AudioClose3d;
  72. preload = true;
  73. };
  74. datablock SFXProfile(FootLightUnderwaterSound)
  75. {
  76. filename = "art/sound/waterstep_mono_01";
  77. description = AudioClosest3d;
  78. preload = true;
  79. };
  80. //----------------------------------------------------------------------------
  81. // Splash
  82. //----------------------------------------------------------------------------
  83. datablock ParticleData(PlayerSplashMist)
  84. {
  85. dragCoefficient = 2.0;
  86. gravityCoefficient = -0.05;
  87. inheritedVelFactor = 0.0;
  88. constantAcceleration = 0.0;
  89. lifetimeMS = 400;
  90. lifetimeVarianceMS = 100;
  91. useInvAlpha = false;
  92. spinRandomMin = -90.0;
  93. spinRandomMax = 500.0;
  94. textureName = "art/shapes/actors/common/splash";
  95. colors[0] = "0.7 0.8 1.0 1.0";
  96. colors[1] = "0.7 0.8 1.0 0.5";
  97. colors[2] = "0.7 0.8 1.0 0.0";
  98. sizes[0] = 0.5;
  99. sizes[1] = 0.5;
  100. sizes[2] = 0.8;
  101. times[0] = 0.0;
  102. times[1] = 0.5;
  103. times[2] = 1.0;
  104. };
  105. datablock ParticleEmitterData(PlayerSplashMistEmitter)
  106. {
  107. ejectionPeriodMS = 5;
  108. periodVarianceMS = 0;
  109. ejectionVelocity = 3.0;
  110. velocityVariance = 2.0;
  111. ejectionOffset = 0.0;
  112. thetaMin = 85;
  113. thetaMax = 85;
  114. phiReferenceVel = 0;
  115. phiVariance = 360;
  116. overrideAdvance = false;
  117. lifetimeMS = 250;
  118. particles = "PlayerSplashMist";
  119. };
  120. datablock ParticleData(PlayerBubbleParticle)
  121. {
  122. dragCoefficient = 0.0;
  123. gravityCoefficient = -0.50;
  124. inheritedVelFactor = 0.0;
  125. constantAcceleration = 0.0;
  126. lifetimeMS = 400;
  127. lifetimeVarianceMS = 100;
  128. useInvAlpha = false;
  129. textureName = "art/shapes/actors/common/splash";
  130. colors[0] = "0.7 0.8 1.0 0.4";
  131. colors[1] = "0.7 0.8 1.0 0.4";
  132. colors[2] = "0.7 0.8 1.0 0.0";
  133. sizes[0] = 0.1;
  134. sizes[1] = 0.3;
  135. sizes[2] = 0.3;
  136. times[0] = 0.0;
  137. times[1] = 0.5;
  138. times[2] = 1.0;
  139. };
  140. datablock ParticleEmitterData(PlayerBubbleEmitter)
  141. {
  142. ejectionPeriodMS = 1;
  143. periodVarianceMS = 0;
  144. ejectionVelocity = 2.0;
  145. ejectionOffset = 0.5;
  146. velocityVariance = 0.5;
  147. thetaMin = 0;
  148. thetaMax = 80;
  149. phiReferenceVel = 0;
  150. phiVariance = 360;
  151. overrideAdvance = false;
  152. particles = "PlayerBubbleParticle";
  153. };
  154. datablock ParticleData(PlayerFoamParticle)
  155. {
  156. dragCoefficient = 2.0;
  157. gravityCoefficient = -0.05;
  158. inheritedVelFactor = 0.1;
  159. constantAcceleration = 0.0;
  160. lifetimeMS = 600;
  161. lifetimeVarianceMS = 100;
  162. useInvAlpha = false;
  163. spinRandomMin = -90.0;
  164. spinRandomMax = 500.0;
  165. textureName = "art/particles/millsplash01";
  166. colors[0] = "0.7 0.8 1.0 0.20";
  167. colors[1] = "0.7 0.8 1.0 0.20";
  168. colors[2] = "0.7 0.8 1.0 0.00";
  169. sizes[0] = 0.2;
  170. sizes[1] = 0.4;
  171. sizes[2] = 1.6;
  172. times[0] = 0.0;
  173. times[1] = 0.5;
  174. times[2] = 1.0;
  175. };
  176. datablock ParticleEmitterData(PlayerFoamEmitter)
  177. {
  178. ejectionPeriodMS = 10;
  179. periodVarianceMS = 0;
  180. ejectionVelocity = 3.0;
  181. velocityVariance = 1.0;
  182. ejectionOffset = 0.0;
  183. thetaMin = 85;
  184. thetaMax = 85;
  185. phiReferenceVel = 0;
  186. phiVariance = 360;
  187. overrideAdvance = false;
  188. particles = "PlayerFoamParticle";
  189. };
  190. datablock ParticleData( PlayerFoamDropletsParticle )
  191. {
  192. dragCoefficient = 1;
  193. gravityCoefficient = 0.2;
  194. inheritedVelFactor = 0.2;
  195. constantAcceleration = -0.0;
  196. lifetimeMS = 600;
  197. lifetimeVarianceMS = 0;
  198. textureName = "art/shapes/actors/common/splash";
  199. colors[0] = "0.7 0.8 1.0 1.0";
  200. colors[1] = "0.7 0.8 1.0 0.5";
  201. colors[2] = "0.7 0.8 1.0 0.0";
  202. sizes[0] = 0.8;
  203. sizes[1] = 0.3;
  204. sizes[2] = 0.0;
  205. times[0] = 0.0;
  206. times[1] = 0.5;
  207. times[2] = 1.0;
  208. };
  209. datablock ParticleEmitterData( PlayerFoamDropletsEmitter )
  210. {
  211. ejectionPeriodMS = 7;
  212. periodVarianceMS = 0;
  213. ejectionVelocity = 2;
  214. velocityVariance = 1.0;
  215. ejectionOffset = 0.0;
  216. thetaMin = 60;
  217. thetaMax = 80;
  218. phiReferenceVel = 0;
  219. phiVariance = 360;
  220. overrideAdvance = false;
  221. orientParticles = true;
  222. particles = "PlayerFoamDropletsParticle";
  223. };
  224. datablock ParticleData( PlayerWakeParticle )
  225. {
  226. textureName = "art/particles/wake";
  227. dragCoefficient = "0.0";
  228. gravityCoefficient = "0.0";
  229. inheritedVelFactor = "0.0";
  230. lifetimeMS = "2500";
  231. lifetimeVarianceMS = "200";
  232. windCoefficient = "0.0";
  233. useInvAlpha = "1";
  234. spinRandomMin = "30.0";
  235. spinRandomMax = "30.0";
  236. animateTexture = true;
  237. framesPerSec = 1;
  238. animTexTiling = "2 1";
  239. animTexFrames = "0 1";
  240. colors[0] = "1 1 1 0.1";
  241. colors[1] = "1 1 1 0.7";
  242. colors[2] = "1 1 1 0.3";
  243. colors[3] = "0.5 0.5 0.5 0";
  244. sizes[0] = "1.0";
  245. sizes[1] = "2.0";
  246. sizes[2] = "3.0";
  247. sizes[3] = "3.5";
  248. times[0] = "0.0";
  249. times[1] = "0.25";
  250. times[2] = "0.5";
  251. times[3] = "1.0";
  252. };
  253. datablock ParticleEmitterData( PlayerWakeEmitter )
  254. {
  255. ejectionPeriodMS = "200";
  256. periodVarianceMS = "10";
  257. ejectionVelocity = "0";
  258. velocityVariance = "0";
  259. ejectionOffset = "0";
  260. thetaMin = "89";
  261. thetaMax = "90";
  262. phiReferenceVel = "0";
  263. phiVariance = "1";
  264. alignParticles = "1";
  265. alignDirection = "0 0 1";
  266. particles = "PlayerWakeParticle";
  267. };
  268. datablock ParticleData( PlayerSplashParticle )
  269. {
  270. dragCoefficient = 1;
  271. gravityCoefficient = 0.2;
  272. inheritedVelFactor = 0.2;
  273. constantAcceleration = -0.0;
  274. lifetimeMS = 600;
  275. lifetimeVarianceMS = 0;
  276. colors[0] = "0.7 0.8 1.0 1.0";
  277. colors[1] = "0.7 0.8 1.0 0.5";
  278. colors[2] = "0.7 0.8 1.0 0.0";
  279. sizes[0] = 0.5;
  280. sizes[1] = 0.5;
  281. sizes[2] = 0.5;
  282. times[0] = 0.0;
  283. times[1] = 0.5;
  284. times[2] = 1.0;
  285. };
  286. datablock ParticleEmitterData( PlayerSplashEmitter )
  287. {
  288. ejectionPeriodMS = 1;
  289. periodVarianceMS = 0;
  290. ejectionVelocity = 3;
  291. velocityVariance = 1.0;
  292. ejectionOffset = 0.0;
  293. thetaMin = 60;
  294. thetaMax = 80;
  295. phiReferenceVel = 0;
  296. phiVariance = 360;
  297. overrideAdvance = false;
  298. orientParticles = true;
  299. lifetimeMS = 100;
  300. particles = "PlayerSplashParticle";
  301. };
  302. datablock SplashData(PlayerSplash)
  303. {
  304. numSegments = 15;
  305. ejectionFreq = 15;
  306. ejectionAngle = 40;
  307. ringLifetime = 0.5;
  308. lifetimeMS = 300;
  309. velocity = 4.0;
  310. startRadius = 0.0;
  311. acceleration = -3.0;
  312. texWrap = 5.0;
  313. texture = "art/particles/millsplash01";
  314. emitter[0] = PlayerSplashEmitter;
  315. emitter[1] = PlayerSplashMistEmitter;
  316. colors[0] = "0.7 0.8 1.0 0.0";
  317. colors[1] = "0.7 0.8 1.0 0.3";
  318. colors[2] = "0.7 0.8 1.0 0.7";
  319. colors[3] = "0.7 0.8 1.0 0.0";
  320. times[0] = 0.0;
  321. times[1] = 0.4;
  322. times[2] = 0.8;
  323. times[3] = 1.0;
  324. };
  325. //----------------------------------------------------------------------------
  326. // Foot puffs
  327. //----------------------------------------------------------------------------
  328. datablock ParticleData(LightPuff)
  329. {
  330. dragCoefficient = 2.0;
  331. gravityCoefficient = -0.01;
  332. inheritedVelFactor = 0.6;
  333. constantAcceleration = 0.0;
  334. lifetimeMS = 800;
  335. lifetimeVarianceMS = 100;
  336. useInvAlpha = true;
  337. spinRandomMin = -35.0;
  338. spinRandomMax = 35.0;
  339. colors[0] = "1.0 1.0 1.0 1.0";
  340. colors[1] = "1.0 1.0 1.0 0.0";
  341. sizes[0] = 0.1;
  342. sizes[1] = 0.8;
  343. times[0] = 0.3;
  344. times[1] = 1.0;
  345. times[2] = 1.0;
  346. textureName = "art/particles/dustParticle.png";
  347. };
  348. datablock ParticleEmitterData(LightPuffEmitter)
  349. {
  350. ejectionPeriodMS = 35;
  351. periodVarianceMS = 10;
  352. ejectionVelocity = 0.2;
  353. velocityVariance = 0.1;
  354. ejectionOffset = 0.0;
  355. thetaMin = 20;
  356. thetaMax = 60;
  357. phiReferenceVel = 0;
  358. phiVariance = 360;
  359. overrideAdvance = false;
  360. useEmitterColors = true;
  361. particles = "LightPuff";
  362. };
  363. //----------------------------------------------------------------------------
  364. // Liftoff dust
  365. //----------------------------------------------------------------------------
  366. datablock ParticleData(LiftoffDust)
  367. {
  368. dragCoefficient = 1.0;
  369. gravityCoefficient = -0.01;
  370. inheritedVelFactor = 0.0;
  371. constantAcceleration = 0.0;
  372. lifetimeMS = 1000;
  373. lifetimeVarianceMS = 100;
  374. useInvAlpha = true;
  375. spinRandomMin = -90.0;
  376. spinRandomMax = 500.0;
  377. colors[0] = "1.0 1.0 1.0 1.0";
  378. sizes[0] = 1.0;
  379. times[0] = 1.0;
  380. textureName = "art/particles/dustParticle";
  381. };
  382. datablock ParticleEmitterData(LiftoffDustEmitter)
  383. {
  384. ejectionPeriodMS = 5;
  385. periodVarianceMS = 0;
  386. ejectionVelocity = 2.0;
  387. velocityVariance = 0.0;
  388. ejectionOffset = 0.0;
  389. thetaMin = 90;
  390. thetaMax = 90;
  391. phiReferenceVel = 0;
  392. phiVariance = 360;
  393. overrideAdvance = false;
  394. useEmitterColors = true;
  395. particles = "LiftoffDust";
  396. };
  397. //----------------------------------------------------------------------------
  398. datablock DecalData(PlayerFootprint)
  399. {
  400. size = 0.4;
  401. material = CommonPlayerFootprint;
  402. };
  403. datablock DebrisData( PlayerDebris )
  404. {
  405. explodeOnMaxBounce = false;
  406. elasticity = 0.15;
  407. friction = 0.5;
  408. lifetime = 4.0;
  409. lifetimeVariance = 0.0;
  410. minSpinSpeed = 40;
  411. maxSpinSpeed = 600;
  412. numBounces = 5;
  413. bounceVariance = 0;
  414. staticOnMaxBounce = true;
  415. gravModifier = 1.0;
  416. useRadiusMass = true;
  417. baseRadius = 1;
  418. velocity = 20.0;
  419. velocityVariance = 12.0;
  420. };
  421. // ----------------------------------------------------------------------------
  422. // This is our default player datablock that all others will derive from.
  423. // ----------------------------------------------------------------------------
  424. datablock PlayerData(DefaultPlayerData)
  425. {
  426. renderFirstPerson = false;
  427. firstPersonShadows = true;
  428. computeCRC = false;
  429. // Third person shape
  430. shapeFile = "art/shapes/actors/Soldier/soldier_rigged.DAE";
  431. cameraMaxDist = 3;
  432. allowImageStateAnimation = true;
  433. // First person arms
  434. imageAnimPrefixFP = "soldier";
  435. shapeNameFP[0] = "art/shapes/actors/Soldier/FP/FP_SoldierArms.DAE";
  436. cmdCategory = "Clients";
  437. cameraDefaultFov = 55.0;
  438. cameraMinFov = 5.0;
  439. cameraMaxFov = 65.0;
  440. debrisShapeName = "art/shapes/actors/common/debris_player.dts";
  441. debris = playerDebris;
  442. throwForce = 30;
  443. minLookAngle = "-1.4";
  444. maxLookAngle = "0.9";
  445. maxFreelookAngle = 3.0;
  446. mass = 120;
  447. drag = 1.3;
  448. maxdrag = 0.4;
  449. density = 1.1;
  450. maxDamage = 100;
  451. maxEnergy = 60;
  452. repairRate = 0.33;
  453. rechargeRate = 0.256;
  454. runForce = 4320;
  455. runEnergyDrain = 0;
  456. minRunEnergy = 0;
  457. maxForwardSpeed = 8;
  458. maxBackwardSpeed = 6;
  459. maxSideSpeed = 6;
  460. sprintForce = 4320;
  461. sprintEnergyDrain = 0;
  462. minSprintEnergy = 0;
  463. maxSprintForwardSpeed = 14;
  464. maxSprintBackwardSpeed = 8;
  465. maxSprintSideSpeed = 6;
  466. sprintStrafeScale = 0.25;
  467. sprintYawScale = 0.05;
  468. sprintPitchScale = 0.05;
  469. sprintCanJump = true;
  470. crouchForce = 405;
  471. maxCrouchForwardSpeed = 4.0;
  472. maxCrouchBackwardSpeed = 2.0;
  473. maxCrouchSideSpeed = 2.0;
  474. swimForce = 4320;
  475. maxUnderwaterForwardSpeed = 8.4;
  476. maxUnderwaterBackwardSpeed = 7.8;
  477. maxUnderwaterSideSpeed = 4.0;
  478. jumpForce = "747";
  479. jumpEnergyDrain = 0;
  480. minJumpEnergy = 0;
  481. jumpDelay = "15";
  482. airControl = 0.3;
  483. fallingSpeedThreshold = -6.0;
  484. landSequenceTime = 0.33;
  485. transitionToLand = false;
  486. recoverDelay = 0;
  487. recoverRunForceScale = 0;
  488. minImpactSpeed = 10;
  489. minLateralImpactSpeed = 20;
  490. speedDamageScale = 0.4;
  491. boundingBox = "0.65 0.75 1.85";
  492. crouchBoundingBox = "0.65 0.75 1.3";
  493. swimBoundingBox = "1 2 2";
  494. pickupRadius = 1;
  495. // Damage location details
  496. boxHeadPercentage = 0.83;
  497. boxTorsoPercentage = 0.49;
  498. boxHeadLeftPercentage = 0.30;
  499. boxHeadRightPercentage = 0.60;
  500. boxHeadBackPercentage = 0.30;
  501. boxHeadFrontPercentage = 0.60;
  502. // Foot Prints
  503. decalOffset = 0.25;
  504. footPuffEmitter = "LightPuffEmitter";
  505. footPuffNumParts = 10;
  506. footPuffRadius = "0.25";
  507. dustEmitter = "LightPuffEmitter";
  508. splash = PlayerSplash;
  509. splashVelocity = 4.0;
  510. splashAngle = 67.0;
  511. splashFreqMod = 300.0;
  512. splashVelEpsilon = 0.60;
  513. bubbleEmitTime = 0.4;
  514. splashEmitter[0] = PlayerWakeEmitter;
  515. splashEmitter[1] = PlayerFoamEmitter;
  516. splashEmitter[2] = PlayerBubbleEmitter;
  517. mediumSplashSoundVelocity = 10.0;
  518. hardSplashSoundVelocity = 20.0;
  519. exitSplashSoundVelocity = 5.0;
  520. // Controls over slope of runnable/jumpable surfaces
  521. runSurfaceAngle = 38;
  522. jumpSurfaceAngle = 80;
  523. maxStepHeight = 0.35; //two meters
  524. minJumpSpeed = 20;
  525. maxJumpSpeed = 30;
  526. horizMaxSpeed = 68;
  527. horizResistSpeed = 33;
  528. horizResistFactor = 0.35;
  529. upMaxSpeed = 80;
  530. upResistSpeed = 25;
  531. upResistFactor = 0.3;
  532. footstepSplashHeight = 0.35;
  533. //NOTE: some sounds commented out until wav's are available
  534. // Footstep Sounds
  535. FootSoftSound = FootLightSoftSound;
  536. FootHardSound = FootLightHardSound;
  537. FootMetalSound = FootLightMetalSound;
  538. FootSnowSound = FootLightSnowSound;
  539. FootShallowSound = FootLightShallowSplashSound;
  540. FootWadingSound = FootLightWadingSound;
  541. FootUnderwaterSound = FootLightUnderwaterSound;
  542. //FootBubblesSound = FootLightBubblesSound;
  543. //movingBubblesSound = ArmorMoveBubblesSound;
  544. //waterBreathSound = WaterBreathMaleSound;
  545. //impactSoftSound = ImpactLightSoftSound;
  546. //impactHardSound = ImpactLightHardSound;
  547. //impactMetalSound = ImpactLightMetalSound;
  548. //impactSnowSound = ImpactLightSnowSound;
  549. //impactWaterEasy = ImpactLightWaterEasySound;
  550. //impactWaterMedium = ImpactLightWaterMediumSound;
  551. //impactWaterHard = ImpactLightWaterHardSound;
  552. groundImpactMinSpeed = "45";
  553. groundImpactShakeFreq = "4.0 4.0 4.0";
  554. groundImpactShakeAmp = "1.0 1.0 1.0";
  555. groundImpactShakeDuration = 0.8;
  556. groundImpactShakeFalloff = 10.0;
  557. //exitingWater = ExitingWaterLightSound;
  558. cameraMinDist = "0";
  559. DecalData = "PlayerFootprint";
  560. // Allowable Inventory Items
  561. mainWeapon = Ryder;
  562. maxInv[Lurker] = 1;
  563. maxInv[LurkerClip] = 20;
  564. maxInv[LurkerGrenadeLauncher] = 1;
  565. maxInv[LurkerGrenadeAmmo] = 20;
  566. maxInv[Ryder] = 1;
  567. maxInv[RyderClip] = 10;
  568. maxInv[ProxMine] = 5;
  569. maxInv[DeployableTurret] = 5;
  570. // available skins (see materials.cs in model folder)
  571. availableSkins = "base DarkBlue DarkGreen LightGreen Orange Red Teal Violet Yellow";
  572. };