home *** CD-ROM | disk | FTP | other *** search
/ Net Power 2000 November / Net02.iso / Patch / Q3PointRelease_125.exe / Main / pak4.pk3 / botfiles / fw_items.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-09-08  |  26.5 KB  |  1,140 lines

  1. //===========================================================================
  2. //
  3. // Name:            fw_items.c
  4. // Function:        file to start with for fuzzy logic interbreeding sessions
  5. // Programmer:        Mr Elusive
  6. // Tab Size:        4 (real tabs)
  7. // Notes:            -
  8. //===========================================================================
  9.  
  10.  
  11. //#define WEAPONS_STAY
  12.  
  13. //balance range
  14. #define BR_ARMOR                30
  15. #define BR_HEALTH                30
  16. #define BR_WEAPON                30
  17. #define BR_AMMO                    30
  18. #define BR_POWERUP                30
  19.  
  20. //balance macros
  21. #define MZ(value)                (value) < 0 ? 0 : (value)
  22. #define ARMOR_SCALE(v)            balance($evalfloat(MZ(FS_ARMOR*v)), $evalfloat(MZ(FS_ARMOR*v-BR_ARMOR)), $evalfloat(MZ(FS_ARMOR*v+BR_ARMOR)))
  23. #define HEALTH_SCALE(v)            balance($evalfloat(MZ(FS_HEALTH*v)), $evalfloat(MZ(FS_HEALTH*v-BR_HEALTH)), $evalfloat(MZ(FS_HEALTH*v+BR_HEALTH)))
  24. #define WEAPON_SCALE(v)            balance($evalfloat(MZ(v)), $evalfloat(MZ(v-BR_WEAPON)), $evalfloat(MZ(v+BR_WEAPON)))
  25. #define AMMO_SCALE(v)            balance($evalfloat(MZ(v)), $evalfloat(MZ(v-BR_AMMO)), $evalfloat(MZ(v+BR_AMMO)))
  26. #define POWERUP_SCALE(v)        balance($evalfloat(MZ(v)), $evalfloat(MZ(v-BR_POWERUP)), $evalfloat(MZ(v+BR_POWERUP)))
  27.  
  28. #ifndef W_NAILGUN
  29. #define W_NAILGUN            40
  30. #define GWW_NAILGUN            40
  31. #endif
  32. #ifndef W_PROXLAUNCHER
  33. #define W_PROXLAUNCHER        40
  34. #endif
  35. #define GWW_PROXLAUNCHER    40
  36. #ifndef W_CHAINGUN
  37. #define W_CHAINGUN            40
  38. #define GWW_CHAINGUN        40
  39. #endif
  40. #ifndef W_KAMIKAZE
  41. #define W_KAMIKAZE            200
  42. #endif
  43. #ifndef W_INVULNERABILITY
  44. #define W_INVULNERABILITY    100
  45. #endif
  46. #ifndef W_PORTAL
  47. #define W_PORTAL            40
  48. #endif
  49. #ifndef W_SCOUT
  50. #define W_SCOUT                40
  51. #endif
  52. #ifndef W_GUARD
  53. #define W_GUARD                40
  54. #endif
  55. #ifndef W_DOUBLER
  56. #define W_DOUBLER            40
  57. #endif
  58. #ifndef W_AMMOREGEN
  59. #define W_AMMOREGEN            40
  60. #endif
  61.  
  62. #define W_REDCUBE            100
  63. #define W_BLUECUBE            100
  64.  
  65. //=============================================
  66. // ARMOR
  67. //=============================================
  68.  
  69. weight "item_armor_shard"
  70. {
  71.     switch(INVENTORY_SCOUT)
  72.     {
  73.         case 1:
  74.         {
  75.             switch(INVENTORY_ARMOR)
  76.             {
  77.                 case 10: return ARMOR_SCALE(20);
  78.                 case 20: return ARMOR_SCALE(20);
  79.                 case 30: return ARMOR_SCALE(20);
  80.                 case 40: return ARMOR_SCALE(20);
  81.                 case 50: return ARMOR_SCALE(20);
  82.                 case 60: return ARMOR_SCALE(15);
  83.                 case 70: return ARMOR_SCALE(15);
  84.                 case 80: return ARMOR_SCALE(15);
  85.                 case 90: return ARMOR_SCALE(15);
  86.                 case 100: return ARMOR_SCALE(15);
  87.                 case 110: return ARMOR_SCALE(10);
  88.                 case 120: return ARMOR_SCALE(10);
  89.                 case 130: return ARMOR_SCALE(10);
  90.                 case 140: return ARMOR_SCALE(10);
  91.                 case 150: return ARMOR_SCALE(10);
  92.                 case 160: return ARMOR_SCALE(10);
  93.                 case 170: return ARMOR_SCALE(10);
  94.                 case 180: return ARMOR_SCALE(10);
  95.                 case 190: return ARMOR_SCALE(10);
  96.                 case 200: return ARMOR_SCALE(10);
  97.                 default: return ARMOR_SCALE(1);
  98.             } //end switch
  99.         } //end case
  100.         default: return 0;
  101.     } //end switch
  102. } //end weight
  103.  
  104. weight "item_armor_combat"
  105. {
  106.     switch(INVENTORY_SCOUT)
  107.     {
  108.         case 1:
  109.         {
  110.             switch(INVENTORY_ARMOR)
  111.             {
  112.                 case 10: return ARMOR_SCALE(60);
  113.                 case 20: return ARMOR_SCALE(60);
  114.                 case 30: return ARMOR_SCALE(60);
  115.                 case 40: return ARMOR_SCALE(60);
  116.                 case 50: return ARMOR_SCALE(60);
  117.                 case 60: return ARMOR_SCALE(50);
  118.                 case 70: return ARMOR_SCALE(50);
  119.                 case 80: return ARMOR_SCALE(50);
  120.                 case 90: return ARMOR_SCALE(50);
  121.                 case 100: return ARMOR_SCALE(50);
  122.                 case 110: return ARMOR_SCALE(40);
  123.                 case 120: return ARMOR_SCALE(40);
  124.                 case 130: return ARMOR_SCALE(40);
  125.                 case 140: return ARMOR_SCALE(40);
  126.                 case 150: return ARMOR_SCALE(40);
  127.                 case 160: return ARMOR_SCALE(40);
  128.                 case 170: return ARMOR_SCALE(40);
  129.                 case 180: return ARMOR_SCALE(40);
  130.                 case 190: return ARMOR_SCALE(40);
  131.                 case 200: return ARMOR_SCALE(40);
  132.                 default: return ARMOR_SCALE(1);
  133.             } //end switch
  134.         } //end case
  135.         default: return 0;
  136.     } //end switch
  137. } //end weight
  138.  
  139. weight "item_armor_body"
  140. {
  141.     switch(INVENTORY_SCOUT)
  142.     {
  143.         case 1:
  144.         {
  145.             switch(INVENTORY_ARMOR)
  146.             {
  147.                 case 10: return ARMOR_SCALE(90);
  148.                 case 20: return ARMOR_SCALE(90);
  149.                 case 30: return ARMOR_SCALE(90);
  150.                 case 40: return ARMOR_SCALE(90);
  151.                 case 50: return ARMOR_SCALE(90);
  152.                 case 60: return ARMOR_SCALE(50);
  153.                 case 70: return ARMOR_SCALE(50);
  154.                 case 80: return ARMOR_SCALE(50);
  155.                 case 90: return ARMOR_SCALE(50);
  156.                 case 100: return ARMOR_SCALE(50);
  157.                 case 110: return ARMOR_SCALE(20);
  158.                 case 120: return ARMOR_SCALE(20);
  159.                 case 130: return ARMOR_SCALE(20);
  160.                 case 140: return ARMOR_SCALE(20);
  161.                 case 150: return ARMOR_SCALE(20);
  162.                 case 160: return ARMOR_SCALE(20);
  163.                 case 170: return ARMOR_SCALE(20);
  164.                 case 180: return ARMOR_SCALE(20);
  165.                 case 190: return ARMOR_SCALE(20);
  166.                 case 200: return ARMOR_SCALE(20);
  167.                 default: return ARMOR_SCALE(1);
  168.             } //end switch
  169.         } //end case
  170.         default: return 0;
  171.     } //end switch
  172. } //end weight
  173.  
  174. //=============================================
  175. // HEALTH
  176. //=============================================
  177.  
  178. weight "item_health_small"
  179. {
  180.     switch(INVENTORY_HEALTH)
  181.     {
  182.         case 10: return HEALTH_SCALE(80);
  183.         case 20: return HEALTH_SCALE(80);
  184.         case 30: return HEALTH_SCALE(80);
  185.         case 40: return HEALTH_SCALE(80);
  186.         case 50: return HEALTH_SCALE(70);
  187.         case 60: return HEALTH_SCALE(70);
  188.         case 70: return HEALTH_SCALE(60);
  189.         case 80: return HEALTH_SCALE(60);
  190.         case 90: return HEALTH_SCALE(50);
  191.         case 100: return HEALTH_SCALE(50);
  192.         default: return 0;
  193.     } //end switch
  194. } //end weight
  195.  
  196. weight "item_health"
  197. {
  198.     switch(INVENTORY_HEALTH)
  199.     {
  200.         case 10: return HEALTH_SCALE(90);
  201.         case 20: return HEALTH_SCALE(90);
  202.         case 30: return HEALTH_SCALE(90);
  203.         case 40: return HEALTH_SCALE(90);
  204.         case 50: return HEALTH_SCALE(80);
  205.         case 60: return HEALTH_SCALE(80);
  206.         case 70: return HEALTH_SCALE(60);
  207.         case 80: return HEALTH_SCALE(60);
  208.         case 90: return HEALTH_SCALE(50);
  209.         case 100: return HEALTH_SCALE(50);
  210.         default: return 0;
  211.     } //end switch
  212. } //end weight
  213.  
  214. weight "item_health_large"
  215. {
  216.     switch(INVENTORY_HEALTH)
  217.     {
  218.         case 10: return HEALTH_SCALE(100);
  219.         case 20: return HEALTH_SCALE(100);
  220.         case 30: return HEALTH_SCALE(100);
  221.         case 40: return HEALTH_SCALE(100);
  222.         case 50: return HEALTH_SCALE(90);
  223.         case 60: return HEALTH_SCALE(90);
  224.         case 70: return HEALTH_SCALE(80);
  225.         case 80: return HEALTH_SCALE(80);
  226.         case 90: return HEALTH_SCALE(50);
  227.         case 100: return HEALTH_SCALE(50);
  228.         default: return 0;
  229.     } //end switch
  230. } //end weight
  231.  
  232. weight "item_health_mega"
  233. {
  234.     switch(INVENTORY_HEALTH)
  235.     {
  236.         case 10: return HEALTH_SCALE(110);
  237.         case 20: return HEALTH_SCALE(110);
  238.         case 30: return HEALTH_SCALE(110);
  239.         case 40: return HEALTH_SCALE(110);
  240.         case 50: return HEALTH_SCALE(100);
  241.         case 60: return HEALTH_SCALE(100);
  242.         case 70: return HEALTH_SCALE(90);
  243.         case 80: return HEALTH_SCALE(90);
  244.         case 90: return HEALTH_SCALE(80);
  245.         case 100: return HEALTH_SCALE(80);
  246.         default: return HEALTH_SCALE(50);
  247.     } //end switch
  248. } //end weight
  249.  
  250. //=============================================
  251. // WEAPONS
  252. //=============================================
  253.  
  254. weight "weapon_shotgun"
  255. {
  256.     switch(INVENTORY_SHOTGUN)
  257.     {
  258.         case 1:
  259.         {
  260.             switch(INVENTORY_SHELLS)
  261.             {
  262.                 case 10: return WEAPON_SCALE(W_SHOTGUN - 10);
  263.                 default: return WEAPON_SCALE(W_SHOTGUN);
  264.             } //end switch
  265.         } //end case
  266.         default:
  267.         {
  268. #ifdef WEAPONS_STAY
  269.             switch(INVENTORY_SHELLS)
  270.             {
  271.                 case 10: return WEAPON_SCALE(GWW_SHOTGUN);
  272.                 case 100: return WEAPON_SCALE(GWW_SHOTGUN - 10);
  273.                 default: return balance(5, 3, 7);
  274.             } //end switch
  275. #else
  276.             return 1;
  277. #endif            
  278.         } //end default
  279.     } //end switch
  280. } //end weight
  281.  
  282. weight "weapon_machinegun"
  283. {
  284.     switch(INVENTORY_MACHINEGUN)
  285.     {
  286.         case 1:
  287.         {
  288.             switch(INVENTORY_BULLETS)
  289.             {
  290.                 case 40: return WEAPON_SCALE(W_MACHINEGUN - 10);
  291.                 default: return WEAPON_SCALE(W_MACHINEGUN);
  292.             } //end switch
  293.         } //end case
  294.         default:
  295.         {
  296. #ifdef WEAPONS_STAY
  297.             switch(INVENTORY_BULLETS)
  298.             {
  299.                 case 50: return WEAPON_SCALE(GWW_MACHINEGUN);
  300.                 case 200: return WEAPON_SCALE(GWW_MACHINEGUN - 10);
  301.                 default: return balance(5, 3, 7);
  302.             } //end switch
  303. #else
  304.             return 1;
  305. #endif            
  306.         } //end default
  307.     } //switch
  308. } //end weight
  309.  
  310. weight "weapon_grenadelauncher"
  311. {
  312.     switch(INVENTORY_GRENADELAUNCHER)
  313.     {
  314.         case 1: return WEAPON_SCALE(W_GRENADELAUNCHER);
  315.         default:
  316.         {
  317. #ifdef WEAPONS_STAY
  318.             switch(INVENTORY_GRENADES)
  319.             {
  320.                 case 16: return WEAPON_SCALE(GWW_GRENADELAUNCHER);
  321.                 case 50: return WEAPON_SCALE(GWW_GRENADELAUNCHER - 10);
  322.                 default: return balance(5, 3, 7);
  323.             } //end switch
  324. #else
  325.             return 1;
  326. #endif            
  327.         } //end default
  328.     } //end switch
  329. } //end weight
  330.  
  331. weight "weapon_rocketlauncher"
  332. {
  333.     switch(INVENTORY_ROCKETLAUNCHER)
  334.     {
  335.         case 1: return WEAPON_SCALE(W_ROCKETLAUNCHER);
  336.         default:
  337.         {
  338. #ifdef WEAPONS_STAY
  339.             switch(INVENTORY_ROCKETS)
  340.             {
  341.                 case 16: return WEAPON_SCALE(GWW_ROCKETLAUNCHER);
  342.                 case 50: return WEAPON_SCALE(GWW_ROCKETLAUNCHER - 10);
  343.                 default: return balance(5, 3, 7);
  344.             } //end switch
  345. #else
  346.             return 1;
  347. #endif            
  348.         } //end default
  349.     } //end switch
  350. } //end weight
  351.  
  352. weight "weapon_lightning"
  353. {
  354.     switch(INVENTORY_LIGHTNING)
  355.     {
  356.         case 1: return WEAPON_SCALE(W_LIGHTNING);
  357.         default:
  358.         {
  359. #ifdef WEAPONS_STAY
  360.             switch(INVENTORY_LIGHTNINGAMMO)
  361.             {
  362.                 case 16: return WEAPON_SCALE(GWW_LIGHTNING);
  363.                 case 50: return WEAPON_SCALE(GWW_LIGHTNING - 10);
  364.                 default: return balance(5, 3, 7);
  365.             } //end switch
  366. #else
  367.             return 1;
  368. #endif            
  369.         } //end default
  370.     } //end switch
  371. } //end weight
  372.  
  373. weight "weapon_railgun"
  374. {
  375.     switch(INVENTORY_RAILGUN)
  376.     {
  377.         case 1: return WEAPON_SCALE(W_RAILGUN);
  378.         default:
  379.         {
  380. #ifdef WEAPONS_STAY
  381.             switch(INVENTORY_SLUGS)
  382.             {
  383.                 case 16: return WEAPON_SCALE(GWW_RAILGUN);
  384.                 case 50: return WEAPON_SCALE(GWW_RAILGUN - 10);
  385.                 default: return balance(5, 3, 7);
  386.             } //end switch
  387. #else
  388.             return 1;
  389. #endif            
  390.         } //end default
  391.     } //end switch
  392. } //end weight
  393.  
  394. weight "weapon_plasmagun"
  395. {
  396.     switch(INVENTORY_PLASMAGUN)
  397.     {
  398.         case 1: return WEAPON_SCALE(W_PLASMAGUN);
  399.         default:
  400.         {
  401. #ifdef WEAPONS_STAY
  402.             switch(INVENTORY_CELLS)
  403.             {
  404.                 case 16: return WEAPON_SCALE(GWW_PLASMAGUN);
  405.                 case 50: return WEAPON_SCALE(GWW_PLASMAGUN - 10);
  406.                 default: return balance(5, 3, 7);
  407.             } //end switch
  408. #else
  409.             return 1;
  410. #endif            
  411.         } //end default
  412.     } //end switch
  413. } //end weight
  414.  
  415. weight "weapon_bfg"
  416. {
  417.     switch(INVENTORY_BFG10K)
  418.     {
  419.         case 1: return WEAPON_SCALE(W_BFG10K);
  420.         default:
  421.         {
  422. #ifdef WEAPONS_STAY
  423.             switch(INVENTORY_BFGAMMO)
  424.             {
  425.                 case 16: return WEAPON_SCALE(GWW_BFG10K);
  426.                 case 200: return WEAPON_SCALE(GWW_BFG10K - 10);
  427.                 default: return balance(5, 3, 7);
  428.             } //end switch
  429. #else
  430.             return 1;
  431. #endif            
  432.         } //end default
  433.     } //end switch
  434. } //end weight
  435.  
  436. weight "weapon_nailgun"
  437. {
  438.     switch(INVENTORY_NAILGUN)
  439.     {
  440.         case 1: return WEAPON_SCALE(W_NAILGUN);
  441.         default:
  442.         {
  443. #ifdef WEAPONS_STAY
  444.             switch(INVENTORY_NAILS)
  445.             {
  446.                 case 16: return WEAPON_SCALE(GWW_NAILGUN);
  447.                 case 200: return WEAPON_SCALE(GWW_NAILGUN - 10);
  448.                 default: return balance(5, 3, 7);
  449.             } //end switch
  450. #else
  451.             return 1;
  452. #endif            
  453.         } //end default
  454.     } //end switch
  455. } //end weight
  456.  
  457. weight "weapon_prox_launcher"
  458. {
  459.     switch(INVENTORY_PROXLAUNCHER)
  460.     {
  461.     case 1: return WEAPON_SCALE(W_PROXLAUNCHER);
  462.         default:
  463.         {
  464. #ifdef WEAPONS_STAY
  465.             switch(INVENTORY_MINES)
  466.             {
  467.                 case 16: return WEAPON_SCALE(GWW_PROXLAUNCHER);
  468.                 case 200: return WEAPON_SCALE(GWW_PROXLAUNCHER - 10);
  469.                 default: return balance(5, 3, 7);
  470.             } //end switch
  471. #else
  472.             return 1;
  473. #endif            
  474.         } //end default
  475.     } //end switch
  476. } //end weight
  477.  
  478. weight "weapon_chaingun"
  479. {
  480.     switch(INVENTORY_CHAINGUN)
  481.     {
  482.         case 1: return WEAPON_SCALE(W_CHAINGUN);
  483.         default:
  484.         {
  485. #ifdef WEAPONS_STAY
  486.             switch(INVENTORY_BELT)
  487.             {
  488.                 case 16: return WEAPON_SCALE(GWW_CHAINGUN);
  489.                 case 200: return WEAPON_SCALE(GWW_CHAINGUN - 10);
  490.                 default: return balance(5, 3, 7);
  491.             } //end switch
  492. #else
  493.             return 1;
  494. #endif            
  495.         } //end default
  496.     } //end switch
  497. } //end weight
  498.  
  499. //=============================================
  500. // AMMO
  501. //=============================================
  502.  
  503. weight "ammo_shells"
  504. {
  505.     switch(INVENTORY_SHELLS)
  506.     {
  507.         case 20: return AMMO_SCALE(20);
  508.         case 40: return AMMO_SCALE(20);
  509.         case 60: return AMMO_SCALE(20);
  510.         case 80: return AMMO_SCALE(20);
  511.         case 100: return AMMO_SCALE(20);
  512.         case 120: return AMMO_SCALE(20);
  513.         case 140: return AMMO_SCALE(20);
  514.         case 160: return AMMO_SCALE(20);
  515.         case 180: return AMMO_SCALE(20);
  516.         case 200: return AMMO_SCALE(20);
  517.         default: return 0;
  518.     } //end switch
  519. } //end weight
  520.  
  521. weight "ammo_bullets"
  522. {
  523.     switch(INVENTORY_BULLETS)
  524.     {
  525.         case 20: return AMMO_SCALE(20);
  526.         case 40: return AMMO_SCALE(20);
  527.         case 60: return AMMO_SCALE(20);
  528.         case 80: return AMMO_SCALE(20);
  529.         case 100: return AMMO_SCALE(20);
  530.         case 120: return AMMO_SCALE(20);
  531.         case 140: return AMMO_SCALE(20);
  532.         case 160: return AMMO_SCALE(20);
  533.         case 180: return AMMO_SCALE(20);
  534.         case 200: return AMMO_SCALE(20);
  535.         default: return 0;
  536.     } //end switch
  537. } //end weight
  538.  
  539. weight "ammo_grenades"
  540. {
  541.     switch(INVENTORY_GRENADES)
  542.     {
  543.         case 20: return AMMO_SCALE(20);
  544.         case 40: return AMMO_SCALE(20);
  545.         case 60: return AMMO_SCALE(20);
  546.         case 80: return AMMO_SCALE(20);
  547.         case 100: return AMMO_SCALE(20);
  548.         case 120: return AMMO_SCALE(20);
  549.         case 140: return AMMO_SCALE(20);
  550.         case 160: return AMMO_SCALE(20);
  551.         case 180: return AMMO_SCALE(20);
  552.         case 200: return AMMO_SCALE(20);
  553.         default: return 0;
  554.     } //end switch
  555. } //end weight
  556.  
  557. weight "ammo_cells"
  558. {
  559.     switch(INVENTORY_CELLS)
  560.     {
  561.         case 20: return AMMO_SCALE(20);
  562.         case 40: return AMMO_SCALE(20);
  563.         case 60: return AMMO_SCALE(20);
  564.         case 80: return AMMO_SCALE(20);
  565.         case 100: return AMMO_SCALE(20);
  566.         case 120: return AMMO_SCALE(20);
  567.         case 140: return AMMO_SCALE(20);
  568.         case 160: return AMMO_SCALE(20);
  569.         case 180: return AMMO_SCALE(20);
  570.         case 200: return AMMO_SCALE(20);
  571.         default: return 0;
  572.     } //end switch
  573. } //end weight
  574.  
  575. weight "ammo_lightning"
  576. {
  577.     switch(INVENTORY_LIGHTNINGAMMO)
  578.     {
  579.         case 20: return AMMO_SCALE(20);
  580.         case 40: return AMMO_SCALE(20);
  581.         case 60: return AMMO_SCALE(20);
  582.         case 80: return AMMO_SCALE(20);
  583.         case 100: return AMMO_SCALE(20);
  584.         case 120: return AMMO_SCALE(20);
  585.         case 140: return AMMO_SCALE(20);
  586.         case 160: return AMMO_SCALE(20);
  587.         case 180: return AMMO_SCALE(20);
  588.         case 200: return AMMO_SCALE(20);
  589.         default: return 0;
  590.     } //end switch
  591. } //end weight
  592.  
  593. weight "ammo_rockets"
  594. {
  595.     switch(INVENTORY_ROCKETS)
  596.     {
  597.         case 20: return AMMO_SCALE(20);
  598.         case 40: return AMMO_SCALE(20);
  599.         case 60: return AMMO_SCALE(20);
  600.         case 80: return AMMO_SCALE(20);
  601.         case 100: return AMMO_SCALE(20);
  602.         case 120: return AMMO_SCALE(20);
  603.         case 140: return AMMO_SCALE(20);
  604.         case 160: return AMMO_SCALE(20);
  605.         case 180: return AMMO_SCALE(20);
  606.         case 200: return AMMO_SCALE(20);
  607.         default: return 0;
  608.     } //end switch
  609. } //end weight
  610.  
  611. weight "ammo_slugs"
  612. {
  613.     switch(INVENTORY_SLUGS)
  614.     {
  615.         case 20: return AMMO_SCALE(20);
  616.         case 40: return AMMO_SCALE(20);
  617.         case 60: return AMMO_SCALE(20);
  618.         case 80: return AMMO_SCALE(20);
  619.         case 100: return AMMO_SCALE(20);
  620.         case 120: return AMMO_SCALE(20);
  621.         case 140: return AMMO_SCALE(20);
  622.         case 160: return AMMO_SCALE(20);
  623.         case 180: return AMMO_SCALE(20);
  624.         case 200: return AMMO_SCALE(20);
  625.         default: return 0;
  626.     } //end switch
  627. } //end weight
  628.  
  629. weight "ammo_bfg"
  630. {
  631.     switch(INVENTORY_BFGAMMO)
  632.     {
  633.         case 20: return AMMO_SCALE(20);
  634.         case 40: return AMMO_SCALE(20);
  635.         case 60: return AMMO_SCALE(20);
  636.         case 80: return AMMO_SCALE(20);
  637.         case 100: return AMMO_SCALE(20);
  638.         case 120: return AMMO_SCALE(20);
  639.         case 140: return AMMO_SCALE(20);
  640.         case 160: return AMMO_SCALE(20);
  641.         case 180: return AMMO_SCALE(20);
  642.         case 200: return AMMO_SCALE(20);
  643.         default: return 0;
  644.     } //end switch
  645. } //end weight
  646.  
  647. weight "ammo_nails"
  648. {
  649.     switch(INVENTORY_NAILS)
  650.     {
  651.         case 20: return AMMO_SCALE(20);
  652.         case 40: return AMMO_SCALE(20);
  653.         case 60: return AMMO_SCALE(20);
  654.         case 80: return AMMO_SCALE(20);
  655.         case 100: return AMMO_SCALE(20);
  656.         case 120: return AMMO_SCALE(20);
  657.         case 140: return AMMO_SCALE(20);
  658.         case 160: return AMMO_SCALE(20);
  659.         case 180: return AMMO_SCALE(20);
  660.         case 200: return AMMO_SCALE(20);
  661.         default: return 0;
  662.     } //end switch
  663. } //end weight
  664.  
  665. weight "ammo_nails"
  666. {
  667.     switch(INVENTORY_NAILS)
  668.     {
  669.         case 20: return AMMO_SCALE(20);
  670.         case 40: return AMMO_SCALE(20);
  671.         case 60: return AMMO_SCALE(20);
  672.         case 80: return AMMO_SCALE(20);
  673.         case 100: return AMMO_SCALE(20);
  674.         case 120: return AMMO_SCALE(20);
  675.         case 140: return AMMO_SCALE(20);
  676.         case 160: return AMMO_SCALE(20);
  677.         case 180: return AMMO_SCALE(20);
  678.         case 200: return AMMO_SCALE(20);
  679.         default: return 0;
  680.     } //end switch
  681. } //end weight
  682.  
  683. weight "ammo_mines"
  684. {
  685.     switch(INVENTORY_MINES)
  686.     {
  687.         case 20: return AMMO_SCALE(20);
  688.         case 40: return AMMO_SCALE(20);
  689.         case 60: return AMMO_SCALE(20);
  690.         case 80: return AMMO_SCALE(20);
  691.         case 100: return AMMO_SCALE(20);
  692.         case 120: return AMMO_SCALE(20);
  693.         case 140: return AMMO_SCALE(20);
  694.         case 160: return AMMO_SCALE(20);
  695.         case 180: return AMMO_SCALE(20);
  696.         case 200: return AMMO_SCALE(20);
  697.         default: return 0;
  698.     } //end switch
  699. } //end weight
  700.  
  701. weight "ammo_belt"
  702. {
  703.     switch(INVENTORY_BELT)
  704.     {
  705.         case 20: return AMMO_SCALE(20);
  706.         case 40: return AMMO_SCALE(20);
  707.         case 60: return AMMO_SCALE(20);
  708.         case 80: return AMMO_SCALE(20);
  709.         case 100: return AMMO_SCALE(20);
  710.         case 120: return AMMO_SCALE(20);
  711.         case 140: return AMMO_SCALE(20);
  712.         case 160: return AMMO_SCALE(20);
  713.         case 180: return AMMO_SCALE(20);
  714.         case 200: return AMMO_SCALE(20);
  715.         default: return 0;
  716.     } //end switch
  717. } //end weight
  718.  
  719.  
  720. //=============================================
  721. // POWERUPS
  722. //=============================================
  723.  
  724. weight "holdable_teleporter"
  725. {
  726.     switch(INVENTORY_TELEPORTER)
  727.     {
  728.         case 1:
  729.         {
  730.             switch(INVENTORY_MEDKIT)
  731.             {
  732.                 case 1:
  733.                 {
  734.                     switch(INVENTORY_PORTAL)
  735.                     {
  736.                         case 1:
  737.                         {
  738.                             switch(INVENTORY_KAMIKAZE)
  739.                             {
  740.                                 case 1:
  741.                                 {
  742.                                     switch(INVENTORY_INVULNERABILITY)
  743.                                     {
  744.                                         case 1: return POWERUP_SCALE(W_TELEPORTER);
  745.                                         default: return 0; //already has a medkit
  746.                                     } //end switch
  747.                                 } //end case
  748.                                 default: return 0; //already has a holdable
  749.                             } //end switch
  750.                         } //end case
  751.                         default: return 0; //already has a holdable
  752.                     } //end switch
  753.                 } //end case
  754.                 default: return 0; //already has a holdable
  755.             } //end switch
  756.         } //end case
  757.         default: return 0; //already has a holdable
  758.     } //end switch
  759. } //end weight
  760.  
  761. weight "holdable_medkit"
  762. {
  763.     switch(INVENTORY_TELEPORTER)
  764.     {
  765.         case 1:
  766.         {
  767.             switch(INVENTORY_MEDKIT)
  768.             {
  769.                 case 1:
  770.                 {
  771.                     switch(INVENTORY_PORTAL)
  772.                     {
  773.                         case 1:
  774.                         {
  775.                             switch(INVENTORY_KAMIKAZE)
  776.                             {
  777.                                 case 1:
  778.                                 {
  779.                                     switch(INVENTORY_INVULNERABILITY)
  780.                                     {
  781.                                         case 1: return POWERUP_SCALE(W_MEDKIT);
  782.                                         default: return 0; //already has a holdable
  783.                                     } //end switch
  784.                                 } //end case
  785.                                 default: return 0; //already has a holdable
  786.                             } //end switch
  787.                         } //end case
  788.                         default: return 0; //already has a holdable
  789.                     } //end switch
  790.                 } //end case
  791.                 default: return 0; //already has a holdable
  792.             } //end switch
  793.         } //end case
  794.         default: return 0; //already has a holdable
  795.     } //end switch
  796. } //end weight
  797.  
  798. weight "holdable_kamikaze"
  799. {
  800.     switch(INVENTORY_TELEPORTER)
  801.     {
  802.         case 1:
  803.         {
  804.             switch(INVENTORY_MEDKIT)
  805.             {
  806.                 case 1:
  807.                 {
  808.                     switch(INVENTORY_PORTAL)
  809.                     {
  810.                         case 1:
  811.                         {
  812.                             switch(INVENTORY_KAMIKAZE)
  813.                             {
  814.                                 case 1:
  815.                                 {
  816.                                     switch(INVENTORY_INVULNERABILITY)
  817.                                     {
  818.                                         case 1: return POWERUP_SCALE(W_KAMIKAZE);
  819.                                         default: return 0; //already has a holdable
  820.                                     } //end switch
  821.                                 } //end case
  822.                                 default: return 0; //already has a holdable
  823.                             } //end switch
  824.                         } //end case
  825.                         default: return 0; //already has a holdable
  826.                     } //end switch
  827.                 } //end case
  828.                 default: return 0; //already has a holdable
  829.             } //end switch
  830.         } //end case
  831.         default: return 0; //already has a holdable
  832.     } //end switch
  833. } //end weight
  834.  
  835. weight "holdable_portal"
  836. {
  837.     switch(INVENTORY_TELEPORTER)
  838.     {
  839.         case 1:
  840.         {
  841.             switch(INVENTORY_MEDKIT)
  842.             {
  843.                 case 1:
  844.                 {
  845.                     switch(INVENTORY_PORTAL)
  846.                     {
  847.                         case 1:
  848.                         {
  849.                             switch(INVENTORY_KAMIKAZE)
  850.                             {
  851.                                 case 1:
  852.                                 {
  853.                                     switch(INVENTORY_INVULNERABILITY)
  854.                                     {
  855.                                         case 1: return POWERUP_SCALE(W_PORTAL);
  856.                                         default: return 0; //already has a holdable
  857.                                     } //end switch
  858.                                 } //end case
  859.                                 default: return 0; //already has a holdable
  860.                             } //end switch
  861.                         } //end case
  862.                         default: return 0; //already has a holdable
  863.                     } //end switch
  864.                 } //end case
  865.                 default: return 0; //already has a holdable
  866.             } //end switch
  867.         } //end case
  868.         default: return 0; //already has a holdable
  869.     } //end switch
  870. } //end weight
  871.  
  872. weight "holdable_invulnerability"
  873. {
  874.     switch(INVENTORY_TELEPORTER)
  875.     {
  876.         case 1:
  877.         {
  878.             switch(INVENTORY_MEDKIT)
  879.             {
  880.                 case 1:
  881.                 {
  882.                     switch(INVENTORY_PORTAL)
  883.                     {
  884.                         case 1:
  885.                         {
  886.                             switch(INVENTORY_KAMIKAZE)
  887.                             {
  888.                                 case 1:
  889.                                 {
  890.                                     switch(INVENTORY_INVULNERABILITY)
  891.                                     {
  892.                                         case 1: return POWERUP_SCALE(W_INVULNERABILITY);
  893.                                         default: return 0; //already has a hodable
  894.                                     } //end switch
  895.                                 } //end case
  896.                                 default: return 0; //already has a holdable
  897.                             } //end switch
  898.                         } //end case
  899.                         default: return 0; //already has a holdable
  900.                     } //end switch
  901.                 } //end case
  902.                 default: return 0; //already has a holdable
  903.             } //end switch
  904.         } //end case
  905.         default: return 0; //already has a holdable
  906.     } //end switch
  907. } //end weight
  908.  
  909. weight "item_quad"
  910. {
  911.     return POWERUP_SCALE(W_QUAD);
  912. } //end weight
  913.  
  914. weight "item_enviro"
  915. {
  916.     return POWERUP_SCALE(W_ENVIRO);
  917. } //end weight
  918.  
  919. weight "item_haste"
  920. {
  921.     return POWERUP_SCALE(W_HASTE);
  922. } //end weight
  923.  
  924. weight "item_invisibility"
  925. {
  926.     return POWERUP_SCALE(W_INVISIBILITY);
  927. } //end weight
  928.  
  929. weight "item_regen"
  930. {
  931.     return POWERUP_SCALE(W_REGEN);
  932. } //end weight
  933.  
  934. weight "item_flight"
  935. {
  936.     return 0;//POWERUP_SCALE(W_FLIGHT);
  937. } //end weight
  938.  
  939. weight "item_scout"
  940. {
  941.     switch(INVENTORY_SCOUT)
  942.     {
  943.         case 1:
  944.         {
  945.             switch(INVENTORY_GUARD)
  946.             {
  947.                 case 1:
  948.                 {
  949.                     switch(INVENTORY_DOUBLER)
  950.                     {
  951.                         case 1:
  952.                         {
  953.                             switch(INVENTORY_AMMOREGEN)
  954.                             {
  955.                                 case 1: return POWERUP_SCALE(W_SCOUT);
  956.                                 default: return 0; //already has a persistant powerup
  957.                             } //end switch
  958.                         } //end case
  959.                         default: return 0; //already has a persistant powerup
  960.                     } //end switch
  961.                 } //end case
  962.                 default: return 0; //already has a persistant powerup
  963.             } //end switch
  964.         } //end case
  965.         default: return 0; //already has a persistant powerup
  966.     } //end switch
  967. } //end weight
  968.  
  969. weight "item_guard"
  970. {
  971.     switch(INVENTORY_SCOUT)
  972.     {
  973.         case 1:
  974.         {
  975.             switch(INVENTORY_GUARD)
  976.             {
  977.                 case 1:
  978.                 {
  979.                     switch(INVENTORY_DOUBLER)
  980.                     {
  981.                         case 1:
  982.                         {
  983.                             switch(INVENTORY_AMMOREGEN)
  984.                             {
  985.                                 case 1: return POWERUP_SCALE(W_GUARD);
  986.                                 default: return 0; //already has a persistant powerup
  987.                             } //end switch
  988.                         } //end case
  989.                         default: return 0; //already has a persistant powerup
  990.                     } //end switch
  991.                 } //end case
  992.                 default: return 0; //already has a persistant powerup
  993.             } //end switch
  994.         } //end case
  995.         default: return 0; //already has a persistant powerup
  996.     } //end switch
  997. } //end weight
  998.  
  999. weight "item_doubler"
  1000. {
  1001.     switch(INVENTORY_SCOUT)
  1002.     {
  1003.         case 1:
  1004.         {
  1005.             switch(INVENTORY_GUARD)
  1006.             {
  1007.                 case 1:
  1008.                 {
  1009.                     switch(INVENTORY_DOUBLER)
  1010.                     {
  1011.                         case 1:
  1012.                         {
  1013.                             switch(INVENTORY_AMMOREGEN)
  1014.                             {
  1015.                                 case 1: return POWERUP_SCALE(W_DOUBLER);
  1016.                                 default: return 0; //already has a persistant powerup
  1017.                             } //end switch
  1018.                         } //end case
  1019.                         default: return 0; //already has a persistant powerup
  1020.                     } //end switch
  1021.                 } //end case
  1022.                 default: return 0; //already has a persistant powerup
  1023.             } //end switch
  1024.         } //end case
  1025.         default: return 0; //already has a persistant powerup
  1026.     } //end switch
  1027. } //end weight
  1028.  
  1029. weight "item_ammoregen"
  1030. {
  1031.     switch(INVENTORY_SCOUT)
  1032.     {
  1033.         case 1:
  1034.         {
  1035.             switch(INVENTORY_GUARD)
  1036.             {
  1037.                 case 1:
  1038.                 {
  1039.                     switch(INVENTORY_DOUBLER)
  1040.                     {
  1041.                         case 1:
  1042.                         {
  1043.                             switch(INVENTORY_AMMOREGEN)
  1044.                             {
  1045.                                 case 1: return POWERUP_SCALE(W_AMMOREGEN);
  1046.                                 default: return 0; //already has a persistant powerup
  1047.                             } //end switch
  1048.                         } //end case
  1049.                         default: return 0; //already has a persistant powerup
  1050.                     } //end switch
  1051.                 } //end case
  1052.                 default: return 0; //already has a persistant powerup
  1053.             } //end switch
  1054.         } //end case
  1055.         default: return 0; //already has a persistant powerup
  1056.     } //end switch
  1057. } //end weight
  1058.  
  1059. //=============================================
  1060. // This is only used to pickup dropped CTF
  1061. // flags now. The logic in here makes no
  1062. // sense since the bot has specific CTF AI.
  1063. //=============================================
  1064.  
  1065. weight "team_CTF_redflag" //Red Flag
  1066. {
  1067.     switch(INVENTORY_REDFLAG)
  1068.     {
  1069.         case 1: //not carrying the red flag
  1070.         {
  1071.             switch(INVENTORY_BLUEFLAG)
  1072.             {
  1073.                 case 1: //not carrying the blue flag
  1074.                 {
  1075.                     return FLAG_WEIGHT;
  1076.                 } //end case
  1077.                 default: //bot carrying the blue flag so go back to the base
  1078.                 {
  1079.                     return 200;
  1080.                 } //end case
  1081.             } //end switch
  1082.         } //end case
  1083.         default: //bot carrying the red flag, so don't go back
  1084.         {
  1085.             return 0;
  1086.         } //end default
  1087.     } //end switch
  1088. } //end weight
  1089.  
  1090. weight "team_CTF_blueflag" //Blue Flag
  1091. {
  1092.     switch(INVENTORY_BLUEFLAG)
  1093.     {
  1094.         case 1: //not carrying the blue flag
  1095.         {
  1096.             switch(INVENTORY_REDFLAG)
  1097.             {
  1098.                 case 1: //not carrying the red flag
  1099.                 {
  1100.                     return FLAG_WEIGHT;
  1101.                 } //end case
  1102.                 default: //bot is carrying the red flag so go back to the base
  1103.                 {
  1104.                     return 200;
  1105.                 } //end case
  1106.             } //end switch
  1107.         } //end case
  1108.         default: //bot is carrying the blue flag, so don't go back
  1109.         {
  1110.             return 0;
  1111.         } //end default
  1112.     } //end switch
  1113. } //end weight
  1114.  
  1115. weight "team_CTF_neutralflag" //Neutral Flag
  1116. {
  1117.     return FLAG_WEIGHT;
  1118. } //end weight
  1119.  
  1120. weight "item_redcube" //Red Cube
  1121. {
  1122.     return W_REDCUBE;
  1123. } //end weight
  1124.  
  1125. weight "item_bluecube" //Blue Cube
  1126. {
  1127.     return W_BLUECUBE;
  1128. } //end weight
  1129.  
  1130. //=============================================
  1131. // bot roam goal
  1132. //=============================================
  1133.  
  1134. weight "item_botroam"
  1135. {
  1136.     return 1;
  1137. } //end weight
  1138.  
  1139.  
  1140.