home *** CD-ROM | disk | FTP | other *** search
/ Net Power 2000 November / Net02.iso / Patch / Q3PointRelease_125.exe / Main / pak2.pk3 / botfiles / fw_items.c < prev    next >
Encoding:
C/C++ Source or Header  |  1999-12-29  |  16.1 KB  |  660 lines

  1. //===========================================================================
  2. //
  3. // Name:            fw_items.c
  4. // Function:        file to start with for fuzzy logic interbreeding sessions
  5. // Programmer:        Mr Elusive (MrElusive@idsoftware.com)
  6. // Last update:        1999-09-08
  7. // Tab Size:        4 (real tabs)
  8. // Notes:            -
  9. //===========================================================================
  10.  
  11.  
  12. //#define WEAPONS_STAY
  13.  
  14. //balance range
  15. #define BR_ARMOR                30
  16. #define BR_HEALTH                30
  17. #define BR_WEAPON                30
  18. #define BR_AMMO                    30
  19. #define BR_POWERUP                30
  20.  
  21. //balance macros
  22. #define MZ(value)                (value) < 0 ? 0 : (value)
  23. #define ARMOR_SCALE(v)            balance($evalfloat(MZ(FS_ARMOR*v)), $evalfloat(MZ(FS_ARMOR*v-BR_ARMOR)), $evalfloat(MZ(FS_ARMOR*v+BR_ARMOR)))
  24. #define HEALTH_SCALE(v)            balance($evalfloat(MZ(FS_HEALTH*v)), $evalfloat(MZ(FS_HEALTH*v-BR_HEALTH)), $evalfloat(MZ(FS_HEALTH*v+BR_HEALTH)))
  25. #define WEAPON_SCALE(v)            balance($evalfloat(MZ(v)), $evalfloat(MZ(v-BR_WEAPON)), $evalfloat(MZ(v+BR_WEAPON)))
  26. #define AMMO_SCALE(v)            balance($evalfloat(MZ(v)), $evalfloat(MZ(v-BR_AMMO)), $evalfloat(MZ(v+BR_AMMO)))
  27. #define POWERUP_SCALE(v)        balance($evalfloat(MZ(v)), $evalfloat(MZ(v-BR_POWERUP)), $evalfloat(MZ(v+BR_POWERUP)))
  28.  
  29. //=============================================
  30. // ARMOR
  31. //=============================================
  32.  
  33. weight "item_armor_shard"
  34. {
  35.     switch(INVENTORY_ARMOR)
  36.     {
  37.         case 10: return ARMOR_SCALE(20);
  38.         case 20: return ARMOR_SCALE(20);
  39.         case 30: return ARMOR_SCALE(20);
  40.         case 40: return ARMOR_SCALE(20);
  41.         case 50: return ARMOR_SCALE(20);
  42.         case 60: return ARMOR_SCALE(15);
  43.         case 70: return ARMOR_SCALE(15);
  44.         case 80: return ARMOR_SCALE(15);
  45.         case 90: return ARMOR_SCALE(15);
  46.         case 100: return ARMOR_SCALE(15);
  47.         case 110: return ARMOR_SCALE(10);
  48.         case 120: return ARMOR_SCALE(10);
  49.         case 130: return ARMOR_SCALE(10);
  50.         case 140: return ARMOR_SCALE(10);
  51.         case 150: return ARMOR_SCALE(10);
  52.         case 160: return ARMOR_SCALE(10);
  53.         case 170: return ARMOR_SCALE(10);
  54.         case 180: return ARMOR_SCALE(10);
  55.         case 190: return ARMOR_SCALE(10);
  56.         case 200: return ARMOR_SCALE(10);
  57.         default: return ARMOR_SCALE(1);
  58.     } //end switch
  59. } //end weight
  60.  
  61. weight "item_armor_combat"
  62. {
  63.     switch(INVENTORY_ARMOR)
  64.     {
  65.         case 10: return ARMOR_SCALE(60);
  66.         case 20: return ARMOR_SCALE(60);
  67.         case 30: return ARMOR_SCALE(60);
  68.         case 40: return ARMOR_SCALE(60);
  69.         case 50: return ARMOR_SCALE(60);
  70.         case 60: return ARMOR_SCALE(50);
  71.         case 70: return ARMOR_SCALE(50);
  72.         case 80: return ARMOR_SCALE(50);
  73.         case 90: return ARMOR_SCALE(50);
  74.         case 100: return ARMOR_SCALE(50);
  75.         case 110: return ARMOR_SCALE(40);
  76.         case 120: return ARMOR_SCALE(40);
  77.         case 130: return ARMOR_SCALE(40);
  78.         case 140: return ARMOR_SCALE(40);
  79.         case 150: return ARMOR_SCALE(40);
  80.         case 160: return ARMOR_SCALE(40);
  81.         case 170: return ARMOR_SCALE(40);
  82.         case 180: return ARMOR_SCALE(40);
  83.         case 190: return ARMOR_SCALE(40);
  84.         case 200: return ARMOR_SCALE(40);
  85.         default: return ARMOR_SCALE(1);
  86.     } //end switch
  87. } //end weight
  88.  
  89. weight "item_armor_body"
  90. {
  91.     switch(INVENTORY_ARMOR)
  92.     {
  93.         case 10: return ARMOR_SCALE(90);
  94.         case 20: return ARMOR_SCALE(90);
  95.         case 30: return ARMOR_SCALE(90);
  96.         case 40: return ARMOR_SCALE(90);
  97.         case 50: return ARMOR_SCALE(90);
  98.         case 60: return ARMOR_SCALE(50);
  99.         case 70: return ARMOR_SCALE(50);
  100.         case 80: return ARMOR_SCALE(50);
  101.         case 90: return ARMOR_SCALE(50);
  102.         case 100: return ARMOR_SCALE(50);
  103.         case 110: return ARMOR_SCALE(20);
  104.         case 120: return ARMOR_SCALE(20);
  105.         case 130: return ARMOR_SCALE(20);
  106.         case 140: return ARMOR_SCALE(20);
  107.         case 150: return ARMOR_SCALE(20);
  108.         case 160: return ARMOR_SCALE(20);
  109.         case 170: return ARMOR_SCALE(20);
  110.         case 180: return ARMOR_SCALE(20);
  111.         case 190: return ARMOR_SCALE(20);
  112.         case 200: return ARMOR_SCALE(20);
  113.         default: return ARMOR_SCALE(1);
  114.     } //end switch
  115. } //end weight
  116.  
  117. //=============================================
  118. // HEALTH
  119. //=============================================
  120.  
  121. weight "item_health_small"
  122. {
  123.     switch(INVENTORY_HEALTH)
  124.     {
  125.         case 10: return HEALTH_SCALE(80);
  126.         case 20: return HEALTH_SCALE(80);
  127.         case 30: return HEALTH_SCALE(80);
  128.         case 40: return HEALTH_SCALE(80);
  129.         case 50: return HEALTH_SCALE(70);
  130.         case 60: return HEALTH_SCALE(70);
  131.         case 70: return HEALTH_SCALE(60);
  132.         case 80: return HEALTH_SCALE(60);
  133.         case 90: return HEALTH_SCALE(50);
  134.         case 100: return HEALTH_SCALE(50);
  135.         default: return 0;
  136.     } //end switch
  137. } //end weight
  138.  
  139. weight "item_health"
  140. {
  141.     switch(INVENTORY_HEALTH)
  142.     {
  143.         case 10: return HEALTH_SCALE(90);
  144.         case 20: return HEALTH_SCALE(90);
  145.         case 30: return HEALTH_SCALE(90);
  146.         case 40: return HEALTH_SCALE(90);
  147.         case 50: return HEALTH_SCALE(80);
  148.         case 60: return HEALTH_SCALE(80);
  149.         case 70: return HEALTH_SCALE(60);
  150.         case 80: return HEALTH_SCALE(60);
  151.         case 90: return HEALTH_SCALE(50);
  152.         case 100: return HEALTH_SCALE(50);
  153.         default: return 0;
  154.     } //end switch
  155. } //end weight
  156.  
  157. weight "item_health_large"
  158. {
  159.     switch(INVENTORY_HEALTH)
  160.     {
  161.         case 10: return HEALTH_SCALE(100);
  162.         case 20: return HEALTH_SCALE(100);
  163.         case 30: return HEALTH_SCALE(100);
  164.         case 40: return HEALTH_SCALE(100);
  165.         case 50: return HEALTH_SCALE(90);
  166.         case 60: return HEALTH_SCALE(90);
  167.         case 70: return HEALTH_SCALE(80);
  168.         case 80: return HEALTH_SCALE(80);
  169.         case 90: return HEALTH_SCALE(50);
  170.         case 100: return HEALTH_SCALE(50);
  171.         default: return 0;
  172.     } //end switch
  173. } //end weight
  174.  
  175. weight "item_health_mega"
  176. {
  177.     switch(INVENTORY_HEALTH)
  178.     {
  179.         case 10: return HEALTH_SCALE(110);
  180.         case 20: return HEALTH_SCALE(110);
  181.         case 30: return HEALTH_SCALE(110);
  182.         case 40: return HEALTH_SCALE(110);
  183.         case 50: return HEALTH_SCALE(100);
  184.         case 60: return HEALTH_SCALE(100);
  185.         case 70: return HEALTH_SCALE(90);
  186.         case 80: return HEALTH_SCALE(90);
  187.         case 90: return HEALTH_SCALE(80);
  188.         case 100: return HEALTH_SCALE(80);
  189.         default: return HEALTH_SCALE(50);
  190.     } //end switch
  191. } //end weight
  192.  
  193. //=============================================
  194. // WEAPONS
  195. //=============================================
  196.  
  197. weight "weapon_shotgun"
  198. {
  199.     switch(INVENTORY_SHOTGUN)
  200.     {
  201.         case 1:
  202.         {
  203.             switch(INVENTORY_SHELLS)
  204.             {
  205.                 case 10: return WEAPON_SCALE(W_SHOTGUN - 10);
  206.                 default: return WEAPON_SCALE(W_SHOTGUN);
  207.             } //end switch
  208.         } //end case
  209.         default:
  210.         {
  211. #ifdef WEAPONS_STAY
  212.             switch(INVENTORY_SHELLS)
  213.             {
  214.                 case 10: return WEAPON_SCALE(GWW_SHOTGUN);
  215.                 case 100: return WEAPON_SCALE(GWW_SHOTGUN - 10);
  216.                 default: return balance(5, 3, 7);
  217.             } //end switch
  218. #else
  219.             return 1;
  220. #endif            
  221.         } //end default
  222.     } //end switch
  223. } //end weight
  224.  
  225. weight "weapon_machinegun"
  226. {
  227.     switch(INVENTORY_MACHINEGUN)
  228.     {
  229.         case 1:
  230.         {
  231.             switch(INVENTORY_BULLETS)
  232.             {
  233.                 case 40: return WEAPON_SCALE(W_MACHINEGUN - 10);
  234.                 default: return WEAPON_SCALE(W_MACHINEGUN);
  235.             } //end switch
  236.         } //end case
  237.         default:
  238.         {
  239. #ifdef WEAPONS_STAY
  240.             switch(INVENTORY_BULLETS)
  241.             {
  242.                 case 50: return WEAPON_SCALE(GWW_MACHINEGUN);
  243.                 case 200: return WEAPON_SCALE(GWW_MACHINEGUN - 10);
  244.                 default: return balance(5, 3, 7);
  245.             } //end switch
  246. #else
  247.             return 1;
  248. #endif            
  249.         } //end default
  250.     } //switch
  251. } //end weight
  252.  
  253. weight "weapon_grenadelauncher"
  254. {
  255.     switch(INVENTORY_GRENADELAUNCHER)
  256.     {
  257.         case 1: return WEAPON_SCALE(W_GRENADELAUNCHER);
  258.         default:
  259.         {
  260. #ifdef WEAPONS_STAY
  261.             switch(INVENTORY_GRENADES)
  262.             {
  263.                 case 16: return WEAPON_SCALE(GWW_GRENADELAUNCHER);
  264.                 case 50: return WEAPON_SCALE(GWW_GRENADELAUNCHER - 10);
  265.                 default: return balance(5, 3, 7);
  266.             } //end switch
  267. #else
  268.             return 1;
  269. #endif            
  270.         } //end default
  271.     } //end switch
  272. } //end weight
  273.  
  274. weight "weapon_rocketlauncher"
  275. {
  276.     switch(INVENTORY_ROCKETLAUNCHER)
  277.     {
  278.         case 1: return WEAPON_SCALE(W_ROCKETLAUNCHER);
  279.         default:
  280.         {
  281. #ifdef WEAPONS_STAY
  282.             switch(INVENTORY_ROCKETS)
  283.             {
  284.                 case 16: return WEAPON_SCALE(GWW_ROCKETLAUNCHER);
  285.                 case 50: return WEAPON_SCALE(GWW_ROCKETLAUNCHER - 10);
  286.                 default: return balance(5, 3, 7);
  287.             } //end switch
  288. #else
  289.             return 1;
  290. #endif            
  291.         } //end default
  292.     } //end switch
  293. } //end weight
  294.  
  295. weight "weapon_lightning"
  296. {
  297.     switch(INVENTORY_LIGHTNING)
  298.     {
  299.         case 1: return WEAPON_SCALE(W_LIGHTNING);
  300.         default:
  301.         {
  302. #ifdef WEAPONS_STAY
  303.             switch(INVENTORY_LIGHTNINGAMMO)
  304.             {
  305.                 case 16: return WEAPON_SCALE(GWW_LIGHTNING);
  306.                 case 50: return WEAPON_SCALE(GWW_LIGHTNING - 10);
  307.                 default: return balance(5, 3, 7);
  308.             } //end switch
  309. #else
  310.             return 1;
  311. #endif            
  312.         } //end default
  313.     } //end switch
  314. } //end weight
  315.  
  316. weight "weapon_railgun"
  317. {
  318.     switch(INVENTORY_RAILGUN)
  319.     {
  320.         case 1: return WEAPON_SCALE(W_RAILGUN);
  321.         default:
  322.         {
  323. #ifdef WEAPONS_STAY
  324.             switch(INVENTORY_SLUGS)
  325.             {
  326.                 case 16: return WEAPON_SCALE(GWW_RAILGUN);
  327.                 case 50: return WEAPON_SCALE(GWW_RAILGUN - 10);
  328.                 default: return balance(5, 3, 7);
  329.             } //end switch
  330. #else
  331.             return 1;
  332. #endif            
  333.         } //end default
  334.     } //end switch
  335. } //end weight
  336.  
  337. weight "weapon_plasmagun"
  338. {
  339.     switch(INVENTORY_PLASMAGUN)
  340.     {
  341.         case 1: return WEAPON_SCALE(W_PLASMAGUN);
  342.         default:
  343.         {
  344. #ifdef WEAPONS_STAY
  345.             switch(INVENTORY_CELLS)
  346.             {
  347.                 case 16: return WEAPON_SCALE(GWW_PLASMAGUN);
  348.                 case 50: return WEAPON_SCALE(GWW_PLASMAGUN - 10);
  349.                 default: return balance(5, 3, 7);
  350.             } //end switch
  351. #else
  352.             return 1;
  353. #endif            
  354.         } //end default
  355.     } //end switch
  356. } //end weight
  357.  
  358. weight "weapon_bfg"
  359. {
  360.     switch(INVENTORY_BFG10K)
  361.     {
  362.         case 1: return WEAPON_SCALE(W_BFG10K);
  363.         default:
  364.         {
  365. #ifdef WEAPONS_STAY
  366.             switch(INVENTORY_BFGAMMO)
  367.             {
  368.                 case 16: return WEAPON_SCALE(GWW_BFG10K);
  369.                 case 200: return WEAPON_SCALE(GWW_BFG10K - 10);
  370.                 default: return balance(5, 3, 7);
  371.             } //end switch
  372. #else
  373.             return 1;
  374. #endif            
  375.         } //end default
  376.     } //end switch
  377. } //end weight
  378.  
  379. //=============================================
  380. // AMMO
  381. //=============================================
  382.  
  383. weight "ammo_shells"
  384. {
  385.     switch(INVENTORY_SHELLS)
  386.     {
  387.         case 20: return AMMO_SCALE(20);
  388.         case 40: return AMMO_SCALE(20);
  389.         case 60: return AMMO_SCALE(20);
  390.         case 80: return AMMO_SCALE(20);
  391.         case 100: return AMMO_SCALE(20);
  392.         case 120: return AMMO_SCALE(20);
  393.         case 140: return AMMO_SCALE(20);
  394.         case 160: return AMMO_SCALE(20);
  395.         case 180: return AMMO_SCALE(20);
  396.         case 200: return AMMO_SCALE(20);
  397.         default: return 0;
  398.     } //end switch
  399. } //end weight
  400.  
  401. weight "ammo_bullets"
  402. {
  403.     switch(INVENTORY_BULLETS)
  404.     {
  405.         case 20: return AMMO_SCALE(20);
  406.         case 40: return AMMO_SCALE(20);
  407.         case 60: return AMMO_SCALE(20);
  408.         case 80: return AMMO_SCALE(20);
  409.         case 100: return AMMO_SCALE(20);
  410.         case 120: return AMMO_SCALE(20);
  411.         case 140: return AMMO_SCALE(20);
  412.         case 160: return AMMO_SCALE(20);
  413.         case 180: return AMMO_SCALE(20);
  414.         case 200: return AMMO_SCALE(20);
  415.         default: return 0;
  416.     } //end switch
  417. } //end weight
  418.  
  419. weight "ammo_grenades"
  420. {
  421.     switch(INVENTORY_GRENADES)
  422.     {
  423.         case 20: return AMMO_SCALE(20);
  424.         case 40: return AMMO_SCALE(20);
  425.         case 60: return AMMO_SCALE(20);
  426.         case 80: return AMMO_SCALE(20);
  427.         case 100: return AMMO_SCALE(20);
  428.         case 120: return AMMO_SCALE(20);
  429.         case 140: return AMMO_SCALE(20);
  430.         case 160: return AMMO_SCALE(20);
  431.         case 180: return AMMO_SCALE(20);
  432.         case 200: return AMMO_SCALE(20);
  433.         default: return 0;
  434.     } //end switch
  435. } //end weight
  436.  
  437. weight "ammo_cells"
  438. {
  439.     switch(INVENTORY_CELLS)
  440.     {
  441.         case 20: return AMMO_SCALE(20);
  442.         case 40: return AMMO_SCALE(20);
  443.         case 60: return AMMO_SCALE(20);
  444.         case 80: return AMMO_SCALE(20);
  445.         case 100: return AMMO_SCALE(20);
  446.         case 120: return AMMO_SCALE(20);
  447.         case 140: return AMMO_SCALE(20);
  448.         case 160: return AMMO_SCALE(20);
  449.         case 180: return AMMO_SCALE(20);
  450.         case 200: return AMMO_SCALE(20);
  451.         default: return 0;
  452.     } //end switch
  453. } //end weight
  454.  
  455. weight "ammo_lightning"
  456. {
  457.     switch(INVENTORY_LIGHTNINGAMMO)
  458.     {
  459.         case 20: return AMMO_SCALE(20);
  460.         case 40: return AMMO_SCALE(20);
  461.         case 60: return AMMO_SCALE(20);
  462.         case 80: return AMMO_SCALE(20);
  463.         case 100: return AMMO_SCALE(20);
  464.         case 120: return AMMO_SCALE(20);
  465.         case 140: return AMMO_SCALE(20);
  466.         case 160: return AMMO_SCALE(20);
  467.         case 180: return AMMO_SCALE(20);
  468.         case 200: return AMMO_SCALE(20);
  469.         default: return 0;
  470.     } //end switch
  471. } //end weight
  472.  
  473. weight "ammo_rockets"
  474. {
  475.     switch(INVENTORY_ROCKETS)
  476.     {
  477.         case 20: return AMMO_SCALE(20);
  478.         case 40: return AMMO_SCALE(20);
  479.         case 60: return AMMO_SCALE(20);
  480.         case 80: return AMMO_SCALE(20);
  481.         case 100: return AMMO_SCALE(20);
  482.         case 120: return AMMO_SCALE(20);
  483.         case 140: return AMMO_SCALE(20);
  484.         case 160: return AMMO_SCALE(20);
  485.         case 180: return AMMO_SCALE(20);
  486.         case 200: return AMMO_SCALE(20);
  487.         default: return 0;
  488.     } //end switch
  489. } //end weight
  490.  
  491. weight "ammo_slugs"
  492. {
  493.     switch(INVENTORY_SLUGS)
  494.     {
  495.         case 20: return AMMO_SCALE(20);
  496.         case 40: return AMMO_SCALE(20);
  497.         case 60: return AMMO_SCALE(20);
  498.         case 80: return AMMO_SCALE(20);
  499.         case 100: return AMMO_SCALE(20);
  500.         case 120: return AMMO_SCALE(20);
  501.         case 140: return AMMO_SCALE(20);
  502.         case 160: return AMMO_SCALE(20);
  503.         case 180: return AMMO_SCALE(20);
  504.         case 200: return AMMO_SCALE(20);
  505.         default: return 0;
  506.     } //end switch
  507. } //end weight
  508.  
  509. weight "ammo_bfg"
  510. {
  511.     switch(INVENTORY_BFGAMMO)
  512.     {
  513.         case 20: return AMMO_SCALE(20);
  514.         case 40: return AMMO_SCALE(20);
  515.         case 60: return AMMO_SCALE(20);
  516.         case 80: return AMMO_SCALE(20);
  517.         case 100: return AMMO_SCALE(20);
  518.         case 120: return AMMO_SCALE(20);
  519.         case 140: return AMMO_SCALE(20);
  520.         case 160: return AMMO_SCALE(20);
  521.         case 180: return AMMO_SCALE(20);
  522.         case 200: return AMMO_SCALE(20);
  523.         default: return 0;
  524.     } //end switch
  525. } //end weight
  526.  
  527.  
  528. //=============================================
  529. // POWERUPS
  530. //=============================================
  531.  
  532. weight "holdable_teleporter"
  533. {
  534.     switch(INVENTORY_TELEPORTER)
  535.     {
  536.         case 1:
  537.         {
  538.             switch(INVENTORY_MEDKIT)
  539.             {
  540.                 case 1: return POWERUP_SCALE(W_TELEPORTER);
  541.                 default: return 0; //already has a medkit
  542.             } //end switch
  543.         } //end case
  544.         default: return 0; //already has a personal teleporter
  545.     } //end switch
  546. } //end weight
  547.  
  548. weight "holdable_medkit"
  549. {
  550.     switch(INVENTORY_MEDKIT)
  551.     {
  552.         case 1:
  553.         {
  554.             switch(INVENTORY_TELEPORTER)
  555.             {
  556.                 case 1: return POWERUP_SCALE(W_MEDKIT);
  557.                 default: return 0; //already has a personal teleporter
  558.             } //end switch
  559.         } //end case
  560.         default: return 0; //already has a medkit
  561.     } //end switch
  562. } //end weight
  563.  
  564. weight "item_quad"
  565. {
  566.     return POWERUP_SCALE(W_QUAD);
  567. } //end weight
  568.  
  569. weight "item_enviro"
  570. {
  571.     return POWERUP_SCALE(W_ENVIRO);
  572. } //end weight
  573.  
  574. weight "item_haste"
  575. {
  576.     return POWERUP_SCALE(W_HASTE);
  577. } //end weight
  578.  
  579. weight "item_invisibility"
  580. {
  581.     return POWERUP_SCALE(W_INVISIBILITY);
  582. } //end weight
  583.  
  584. weight "item_regen"
  585. {
  586.     return POWERUP_SCALE(W_REGEN);
  587. } //end weight
  588.  
  589. weight "item_flight"
  590. {
  591.     return 0;//POWERUP_SCALE(W_FLIGHT);
  592. } //end weight
  593.  
  594. //=============================================
  595. // This is only used to pickup dropped CTF
  596. // flags now. The logic in here makes no
  597. // sense since the bot has specific CTF AI.
  598. //=============================================
  599.  
  600. weight "team_CTF_redflag" //Red Flag
  601. {
  602.     switch(INVENTORY_REDFLAG)
  603.     {
  604.         case 1: //not carrying the red flag
  605.         {
  606.             switch(INVENTORY_BLUEFLAG)
  607.             {
  608.                 case 1: //not carrying the blue flag
  609.                 {
  610.                     return FLAG_WEIGHT;
  611.                 } //end case
  612.                 default: //bot carrying the blue flag so go back to the base
  613.                 {
  614.                     return 200;
  615.                 } //end case
  616.             } //end switch
  617.         } //end case
  618.         default: //bot carrying the red flag, so don't go back
  619.         {
  620.             return 0;
  621.         } //end default
  622.     } //end switch
  623. } //end weight
  624.  
  625. weight "team_CTF_blueflag" //Blue Flag
  626. {
  627.     switch(INVENTORY_BLUEFLAG)
  628.     {
  629.         case 1: //not carrying the blue flag
  630.         {
  631.             switch(INVENTORY_REDFLAG)
  632.             {
  633.                 case 1: //not carrying the red flag
  634.                 {
  635.                     return FLAG_WEIGHT;
  636.                 } //end case
  637.                 default: //bot is carrying the red flag so go back to the base
  638.                 {
  639.                     return 200;
  640.                 } //end case
  641.             } //end switch
  642.         } //end case
  643.         default: //bot is carrying the blue flag, so don't go back
  644.         {
  645.             return 0;
  646.         } //end default
  647.     } //end switch
  648. } //end weight
  649.  
  650. //=============================================
  651. // bot roam goal
  652. //=============================================
  653.  
  654. weight "item_botroam"
  655. {
  656.     return 1;
  657. } //end weight
  658.  
  659.  
  660.