Loading

Paste #pgxdnm3kj

  1. /* ******************************************************************
  2.  * Definition of the industry tile, its callbacks, and graphics chain
  3.  * ******************************************************************/
  4.             spriteset(oil_rig_spriteset_0_0, "src/graphics/industries/groundtiles.png") {
  5.                     tmpl_ground_tile(360, 10)
  6.             }
  7.             spriteset(oil_rig_spriteset_0_0_snow, "src/graphics/industries/groundtiles.png") {
  8.                     tmpl_ground_tile(220, 10)
  9.             }
  10.         spritelayout oil_rig_spritelayout_1 {
  11.             // Industry-specific ground (snow aware)
  12.             // non-snow
  13.             childsprite {
  14.                 sprite: GROUNDSPRITE_WATER;
  15.                 recolour_mode: RECOLOUR_REMAP;
  16.                 palette: PALETTE_USE_DEFAULT;
  17.                 hide_sprite: (LOAD_TEMP(13));
  18.                 always_draw: 1;
  19.             }
  20.             childsprite {
  21.                 sprite: oil_rig_spriteset_0_0(0);
  22.                 recolour_mode: RECOLOUR_REMAP;
  23.                 palette: PALETTE_USE_DEFAULT;
  24.                 hide_sprite: (LOAD_TEMP(13));
  25.                 always_draw: 1;
  26.             }
  27.             // snow
  28.             childsprite {
  29.                 sprite: GROUNDSPRITE_WATER;
  30.                 recolour_mode: RECOLOUR_REMAP;
  31.                 palette: PALETTE_USE_DEFAULT;
  32.                 hide_sprite: (!LOAD_TEMP(13));
  33.                 always_draw: 1;
  34.             }
  35.             childsprite {
  36.                 sprite: oil_rig_spriteset_0_0_snow(0);
  37.                 recolour_mode: RECOLOUR_REMAP;
  38.                 palette: PALETTE_USE_DEFAULT;
  39.                 hide_sprite: (!LOAD_TEMP(13));
  40.                 always_draw: 1;
  41.             }
  42.                     // buildings (snow aware)
  43.                     building {
  44.                         sprite: 2096;
  45.                         recolour_mode: RECOLOUR_REMAP;
  46.                         palette: PALETTE_USE_DEFAULT;
  47.                         xoffset: 0;
  48.                         yoffset: 0;
  49.                         zoffset: 0;
  50.                         xextent: 16;
  51.                         yextent: 16;
  52.                         zextent: 16;
  53.                         always_draw: 0;
  54.                         hide_sprite: (LOAD_TEMP(255));
  55.                     }
  56.                     building {
  57.                         sprite: 2096;
  58.                         recolour_mode: RECOLOUR_REMAP;
  59.                         palette: PALETTE_USE_DEFAULT;
  60.                         xoffset: 0;
  61.                         yoffset: 0;
  62.                         zoffset: 0;
  63.                         xextent: 16;
  64.                         yextent: 16;
  65.                         zextent: 16;
  66.                         always_draw: 0;
  67.                         hide_sprite: (LOAD_TEMP(245));
  68.                     }
  69.         }
  70.         spritelayout oil_rig_spritelayout_2 {
  71.             // Industry-specific ground (snow aware)
  72.             // non-snow
  73.             childsprite {
  74.                 sprite: GROUNDSPRITE_WATER;
  75.                 recolour_mode: RECOLOUR_REMAP;
  76.                 palette: PALETTE_USE_DEFAULT;
  77.                 hide_sprite: (LOAD_TEMP(13));
  78.                 always_draw: 1;
  79.             }
  80.             childsprite {
  81.                 sprite: oil_rig_spriteset_0_0(0);
  82.                 recolour_mode: RECOLOUR_REMAP;
  83.                 palette: PALETTE_USE_DEFAULT;
  84.                 hide_sprite: (LOAD_TEMP(13));
  85.                 always_draw: 1;
  86.             }
  87.             // snow
  88.             childsprite {
  89.                 sprite: GROUNDSPRITE_WATER;
  90.                 recolour_mode: RECOLOUR_REMAP;
  91.                 palette: PALETTE_USE_DEFAULT;
  92.                 hide_sprite: (!LOAD_TEMP(13));
  93.                 always_draw: 1;
  94.             }
  95.             childsprite {
  96.                 sprite: oil_rig_spriteset_0_0_snow(0);
  97.                 recolour_mode: RECOLOUR_REMAP;
  98.                 palette: PALETTE_USE_DEFAULT;
  99.                 hide_sprite: (!LOAD_TEMP(13));
  100.                 always_draw: 1;
  101.             }
  102.                     // buildings (snow aware)
  103.                     building {
  104.                         sprite: 2097;
  105.                         recolour_mode: RECOLOUR_REMAP;
  106.                         palette: PALETTE_USE_DEFAULT;
  107.                         xoffset: 0;
  108.                         yoffset: 0;
  109.                         zoffset: 0;
  110.                         xextent: 16;
  111.                         yextent: 16;
  112.                         zextent: 16;
  113.                         always_draw: 0;
  114.                         hide_sprite: (LOAD_TEMP(255));
  115.                     }
  116.                     building {
  117.                         sprite: 2097;
  118.                         recolour_mode: RECOLOUR_REMAP;
  119.                         palette: PALETTE_USE_DEFAULT;
  120.                         xoffset: 0;
  121.                         yoffset: 0;
  122.                         zoffset: 0;
  123.                         xextent: 16;
  124.                         yextent: 16;
  125.                         zextent: 16;
  126.                         always_draw: 0;
  127.                         hide_sprite: (LOAD_TEMP(245));
  128.                     }
  129.         }
  130.         spritelayout oil_rig_spritelayout_3 {
  131.             // Industry-specific ground (snow aware)
  132.             // non-snow
  133.             childsprite {
  134.                 sprite: GROUNDSPRITE_WATER;
  135.                 recolour_mode: RECOLOUR_REMAP;
  136.                 palette: PALETTE_USE_DEFAULT;
  137.                 hide_sprite: (LOAD_TEMP(13));
  138.                 always_draw: 1;
  139.             }
  140.             childsprite {
  141.                 sprite: oil_rig_spriteset_0_0(0);
  142.                 recolour_mode: RECOLOUR_REMAP;
  143.                 palette: PALETTE_USE_DEFAULT;
  144.                 hide_sprite: (LOAD_TEMP(13));
  145.                 always_draw: 1;
  146.             }
  147.             // snow
  148.             childsprite {
  149.                 sprite: GROUNDSPRITE_WATER;
  150.                 recolour_mode: RECOLOUR_REMAP;
  151.                 palette: PALETTE_USE_DEFAULT;
  152.                 hide_sprite: (!LOAD_TEMP(13));
  153.                 always_draw: 1;
  154.             }
  155.             childsprite {
  156.                 sprite: oil_rig_spriteset_0_0_snow(0);
  157.                 recolour_mode: RECOLOUR_REMAP;
  158.                 palette: PALETTE_USE_DEFAULT;
  159.                 hide_sprite: (!LOAD_TEMP(13));
  160.                 always_draw: 1;
  161.             }
  162.                     // buildings (snow aware)
  163.                     building {
  164.                         sprite: 2098;
  165.                         recolour_mode: RECOLOUR_REMAP;
  166.                         palette: PALETTE_USE_DEFAULT;
  167.                         xoffset: 0;
  168.                         yoffset: 0;
  169.                         zoffset: 0;
  170.                         xextent: 16;
  171.                         yextent: 16;
  172.                         zextent: 16;
  173.                         always_draw: 0;
  174.                         hide_sprite: (LOAD_TEMP(255));
  175.                     }
  176.                     building {
  177.                         sprite: 2098;
  178.                         recolour_mode: RECOLOUR_REMAP;
  179.                         palette: PALETTE_USE_DEFAULT;
  180.                         xoffset: 0;
  181.                         yoffset: 0;
  182.                         zoffset: 0;
  183.                         xextent: 16;
  184.                         yextent: 16;
  185.                         zextent: 16;
  186.                         always_draw: 0;
  187.                         hide_sprite: (LOAD_TEMP(245));
  188.                     }
  189.         }
  190.         spritelayout oil_rig_spritelayout_4 {
  191.             // Industry-specific ground (snow aware)
  192.             // non-snow
  193.             childsprite {
  194.                 sprite: GROUNDSPRITE_WATER;
  195.                 recolour_mode: RECOLOUR_REMAP;
  196.                 palette: PALETTE_USE_DEFAULT;
  197.                 hide_sprite: (LOAD_TEMP(13));
  198.                 always_draw: 1;
  199.             }
  200.             childsprite {
  201.                 sprite: oil_rig_spriteset_0_0(0);
  202.                 recolour_mode: RECOLOUR_REMAP;
  203.                 palette: PALETTE_USE_DEFAULT;
  204.                 hide_sprite: (LOAD_TEMP(13));
  205.                 always_draw: 1;
  206.             }
  207.             // snow
  208.             childsprite {
  209.                 sprite: GROUNDSPRITE_WATER;
  210.                 recolour_mode: RECOLOUR_REMAP;
  211.                 palette: PALETTE_USE_DEFAULT;
  212.                 hide_sprite: (!LOAD_TEMP(13));
  213.                 always_draw: 1;
  214.             }
  215.             childsprite {
  216.                 sprite: oil_rig_spriteset_0_0_snow(0);
  217.                 recolour_mode: RECOLOUR_REMAP;
  218.                 palette: PALETTE_USE_DEFAULT;
  219.                 hide_sprite: (!LOAD_TEMP(13));
  220.                 always_draw: 1;
  221.             }
  222.                     // buildings (snow aware)
  223.                     building {
  224.                         sprite: 2099;
  225.                         recolour_mode: RECOLOUR_REMAP;
  226.                         palette: PALETTE_USE_DEFAULT;
  227.                         xoffset: 0;
  228.                         yoffset: 0;
  229.                         zoffset: 0;
  230.                         xextent: 16;
  231.                         yextent: 16;
  232.                         zextent: 16;
  233.                         always_draw: 0;
  234.                         hide_sprite: (LOAD_TEMP(255));
  235.                     }
  236.                     building {
  237.                         sprite: 2099;
  238.                         recolour_mode: RECOLOUR_REMAP;
  239.                         palette: PALETTE_USE_DEFAULT;
  240.                         xoffset: 0;
  241.                         yoffset: 0;
  242.                         zoffset: 0;
  243.                         xextent: 16;
  244.                         yextent: 16;
  245.                         zextent: 16;
  246.                         always_draw: 0;
  247.                         hide_sprite: (LOAD_TEMP(245));
  248.                     }
  249.         }
  250.         spritelayout oil_rig_spritelayout_null {
  251.             // Industry-specific ground (snow aware)
  252.             // non-snow
  253.             childsprite {
  254.                 sprite: GROUNDSPRITE_WATER;
  255.                 recolour_mode: RECOLOUR_REMAP;
  256.                 palette: PALETTE_USE_DEFAULT;
  257.                 hide_sprite: (LOAD_TEMP(13));
  258.                 always_draw: 1;
  259.             }
  260.             childsprite {
  261.                 sprite: GROUNDSPRITE_WATER;
  262.                 recolour_mode: RECOLOUR_REMAP;
  263.                 palette: PALETTE_USE_DEFAULT;
  264.                 hide_sprite: (LOAD_TEMP(13));
  265.                 always_draw: 1;
  266.             }
  267.             // snow
  268.             childsprite {
  269.                 sprite: GROUNDSPRITE_WATER;
  270.                 recolour_mode: RECOLOUR_REMAP;
  271.                 palette: PALETTE_USE_DEFAULT;
  272.                 hide_sprite: (!LOAD_TEMP(13));
  273.                 always_draw: 1;
  274.             }
  275.             childsprite {
  276.                 sprite: GROUNDSPRITE_WATER;
  277.                 recolour_mode: RECOLOUR_REMAP;
  278.                 palette: PALETTE_USE_DEFAULT;
  279.                 hide_sprite: (!LOAD_TEMP(13));
  280.                 always_draw: 1;
  281.             }
  282.         }
  283.         switch(FEAT_INDUSTRYTILES, SELF, oil_rig_layout_1_graphics_switch, relative_pos) {
  284.                 relative_coord(0, 0): oil_rig_spritelayout_null;
  285.                 relative_coord(0, 1): oil_rig_spritelayout_null;
  286.                 relative_coord(0, 2): oil_rig_spritelayout_null;
  287.                 relative_coord(0, 3): oil_rig_spritelayout_null;
  288.                 relative_coord(0, 4): oil_rig_spritelayout_null;
  289.                 relative_coord(0, 5): oil_rig_spritelayout_null;
  290.                 relative_coord(0, 6): oil_rig_spritelayout_null;
  291.                 relative_coord(0, 7): oil_rig_spritelayout_null;
  292.                 relative_coord(0, 8): oil_rig_spritelayout_null;
  293.                 relative_coord(0, 9): oil_rig_spritelayout_null;
  294.                 relative_coord(0, 10): oil_rig_spritelayout_null;
  295.                 relative_coord(1, 0): oil_rig_spritelayout_null;
  296.                 relative_coord(1, 10): oil_rig_spritelayout_null;
  297.                 relative_coord(2, 0): oil_rig_spritelayout_null;
  298.                 relative_coord(2, 10): oil_rig_spritelayout_null;
  299.                 relative_coord(3, 0): oil_rig_spritelayout_null;
  300.                 relative_coord(3, 10): oil_rig_spritelayout_null;
  301.                 relative_coord(4, 0): oil_rig_spritelayout_null;
  302.                 relative_coord(4, 3): oil_rig_spritelayout_null;
  303.                 relative_coord(4, 4): oil_rig_spritelayout_null;
  304.                 relative_coord(4, 5): oil_rig_spritelayout_4;
  305.                 relative_coord(4, 10): oil_rig_spritelayout_null;
  306.                 relative_coord(5, 0): oil_rig_spritelayout_null;
  307.                 relative_coord(5, 5): oil_rig_spritelayout_3;
  308.                 relative_coord(5, 4): oil_rig_spritelayout_2;
  309.                 relative_coord(5, 3): oil_rig_spritelayout_1;
  310.                 relative_coord(5, 10): oil_rig_spritelayout_null;
  311.                 relative_coord(6, 0): oil_rig_spritelayout_null;
  312.                 relative_coord(6, 10): oil_rig_spritelayout_null;
  313.                 relative_coord(7, 0): oil_rig_spritelayout_null;
  314.                 relative_coord(7, 10): oil_rig_spritelayout_null;
  315.                 relative_coord(8, 0): oil_rig_spritelayout_null;
  316.                 relative_coord(8, 10): oil_rig_spritelayout_null;
  317.                 relative_coord(9, 0): oil_rig_spritelayout_null;
  318.                 relative_coord(9, 10): oil_rig_spritelayout_null;
  319.             oil_rig_spritelayout_null; // a default is needed, but should never be reached, layout definitions are explicit
  320.         }
  321.     switch(FEAT_INDUSTRYTILES, PARENT, oil_rig_industry_graphics_switch_layouts, layout_num) {
  322.             1: oil_rig_layout_1_graphics_switch;
  323.         oil_rig_layout_1_graphics_switch; // default
  324.     }
  325.     switch(FEAT_INDUSTRYTILES, SELF, oil_rig_industry_construction_state_graphics_switch, construction_state) {
  326.         0..2: spritelayout_default_construction_states;
  327.         oil_rig_industry_graphics_switch_layouts; // default
  328.     }
  329.     switch(FEAT_INDUSTRYTILES, SELF, oil_rig_store_temp_vars,
  330.             [STORE_TEMP(terrain_type == TILETYPE_SNOW, 13)
  331.                     , STORE_TEMP(0,
  332.                                  255)
  333.                     , STORE_TEMP(construction_state != 3 ? 1 : LOAD_TEMP(255),
  334.                                  255)
  335.                     , STORE_TEMP(LOAD_TEMP(13) == 0 ? 1 : LOAD_TEMP(255),
  336.                                  245)
  337.                     , STORE_TEMP(LOAD_TEMP(13) == 1 ? 1 : LOAD_TEMP(255),
  338.                                  255)
  339.             ]) {
  340.         oil_rig_industry_construction_state_graphics_switch; // default
  341.     }
  342.     switch(FEAT_INDUSTRYTILES, PARENT, oil_rig_industry_master_graphics_switch, STORE_TEMP(random_bits, 14)) {
  343.         oil_rig_store_temp_vars; // default
  344.     }
  345.     switch (FEAT_INDUSTRYTILES, SELF, oil_rig_tile_fence_station, [
  346.                 STORE_TEMP(LOAD_TEMP(9) * (nearby_tile_class(-1,  0) != TILE_CLASS_STATION), 9),
  347.                 STORE_TEMP(LOAD_TEMP(10) * (nearby_tile_class( 0, -1) != TILE_CLASS_STATION), 10),
  348.                 STORE_TEMP(LOAD_TEMP(11) * (nearby_tile_class( 0,  1) != TILE_CLASS_STATION), 11),
  349.                 STORE_TEMP(LOAD_TEMP(12) * (nearby_tile_class( 1,  0) != TILE_CLASS_STATION), 12),
  350.             ]) {
  351.         oil_rig_industry_master_graphics_switch;
  352.     }
  353.     switch (FEAT_INDUSTRYTILES, SELF, oil_rig_tile_fence_industry, [
  354.                 STORE_TEMP(LOAD_TEMP(9) * !nearby_tile_is_same_industry(-1,  0), 9),
  355.                 STORE_TEMP(LOAD_TEMP(10) * !nearby_tile_is_same_industry( 0, -1), 10),
  356.                 STORE_TEMP(LOAD_TEMP(11) * !nearby_tile_is_same_industry( 0,  1), 11),
  357.                 STORE_TEMP(LOAD_TEMP(12) * !nearby_tile_is_same_industry( 1,  0), 12),
  358.             ]) {
  359.         oil_rig_tile_fence_station;
  360.     }
  361.     switch (FEAT_INDUSTRYTILES, SELF, oil_rig_tile_fences, [
  362.                 STORE_TEMP(0, 1),
  363.                 STORE_TEMP(0, 2),
  364.                 STORE_TEMP(0, 3),
  365.                 STORE_TEMP(0, 4),
  366.                 STORE_TEMP(1, 9),
  367.                 STORE_TEMP(1, 10),
  368.                 STORE_TEMP(1, 11),
  369.                 STORE_TEMP(1, 12),
  370.                 STORE_TEMP(0, 5),
  371.                 STORE_TEMP(0, 6),
  372.                 STORE_TEMP(0, 7),
  373.                 STORE_TEMP(0, 8),
  374.                 ]) {
  375.         oil_rig_tile_fence_industry;
  376.     }
  377.     switch(FEAT_INDUSTRYTILES, SELF, oil_rig_tile_1_lc_1,
  378.         (nearby_tile_class( 1,  1) == TILE_CLASS_INDUSTRY) |
  379.         (nearby_tile_class( 1,  0) == TILE_CLASS_INDUSTRY) |
  380.         (nearby_tile_class( 1, -1) == TILE_CLASS_INDUSTRY) |
  381.         (nearby_tile_class( 0, -1) == TILE_CLASS_INDUSTRY) |
  382.         (nearby_tile_class(-1, -1) == TILE_CLASS_INDUSTRY) |
  383.         (nearby_tile_class(-1,  0) == TILE_CLASS_INDUSTRY) |
  384.         (nearby_tile_class(-1,  1) == TILE_CLASS_INDUSTRY) |
  385.         (nearby_tile_class( 0,  1) == TILE_CLASS_INDUSTRY)) {
  386.         1: return CB_RESULT_LOCATION_DISALLOW;
  387.         return CB_RESULT_LOCATION_ALLOW;
  388.     }
  389.     switch (FEAT_INDUSTRYTILES, PARENT, oil_rig_tile_1_lc_0, (
  390.                 (((extra_callback_info2 & 0xFF00) >> 8) == IND_CREATION_FUND) ||
  391.                 (((extra_callback_info2 & 0xFF00) >> 8) == IND_CREATION_PROSPECT)
  392.                 )
  393.             ) {
  394.         1: return CB_RESULT_LOCATION_ALLOW;
  395.         oil_rig_tile_1_lc_1;
  396.     }
  397.     item(FEAT_INDUSTRYTILES, oil_rig_tile_1, 213) {
  398.         property {
  399.             substitute:         0;
  400.             land_shape_flags:   0;
  401.             animation_triggers: bitmask();
  402.         }
  403.         graphics {
  404.                 tile_check: oil_rig_tile_1_lc_0;
  405.             oil_rig_tile_fences;
  406.         }
  407.     }
  408.         if (economy==0) {
  409.         }
  410.         if (economy==1) {
  411.         }
  412.         if (economy==4) {
  413.         }
  414.         if (economy==5) {
  415.         }
  416.         if (economy==3) {
  417.                 item(FEAT_INDUSTRYTILES, oil_rig_tile_1, 213) {
  418.                     property {
  419.                         accepted_cargos:  [[cargotype("ENSP"), 8]];
  420.                     }
  421.                 }
  422.         }
  423.         if (economy==2) {
  424.                 item(FEAT_INDUSTRYTILES, oil_rig_tile_1, 213) {
  425.                     property {
  426.                         accepted_cargos:  [[cargotype("ENSP"), 8]];
  427.                     }
  428.                 }
  429.         }
  430. /* *************************************************
  431.  * Definition of the industry
  432.  * *************************************************/
  433.     tilelayout oil_rig_layout_1_tilelayout {
  434.             0, 0: 255;
  435.             0, 1: 255;
  436.             0, 2: 255;
  437.             0, 3: 255;
  438.             0, 4: 255;
  439.             0, 5: 255;
  440.             0, 6: 255;
  441.             0, 7: 255;
  442.             0, 8: 255;
  443.             0, 9: 255;
  444.             0, 10: 255;
  445.             1, 0: 255;
  446.             1, 10: 255;
  447.             2, 0: 255;
  448.             2, 10: 255;
  449.             3, 0: 255;
  450.             3, 10: 255;
  451.             4, 0: 255;
  452.             4, 3: 24;
  453.             4, 4: 24;
  454.             4, 5: oil_rig_tile_1;
  455.             4, 10: 255;
  456.             5, 0: 255;
  457.             5, 5: oil_rig_tile_1;
  458.             5, 4: oil_rig_tile_1;
  459.             5, 3: oil_rig_tile_1;
  460.             5, 10: 255;
  461.             6, 0: 255;
  462.             6, 10: 255;
  463.             7, 0: 255;
  464.             7, 10: 255;
  465.             8, 0: 255;
  466.             8, 10: 255;
  467.             9, 0: 255;
  468.             9, 10: 255;
  469.     }
  470. switch(FEAT_INDUSTRIES, SELF, oil_rig_extra_text, [
  471.     STORE_TEMP((primary_level1_requirement * 1) |
  472.     (primary_level2_requirement * 1) << 16, 0x100),
  473.     LOAD_PERM(3)
  474. ]) {
  475.     primary_level2_bonus: return string(STR_PRIMARY_PRODUCTION_4X);
  476.     primary_level1_bonus: return string(STR_PRIMARY_PRODUCTION_2X);
  477.     return string(STR_PRIMARY_PRODUCTION_1X);
  478. }
  479. switch (FEAT_INDUSTRIES, SELF, oil_rig_cargo_subtype_display, 1) {
  480.     return 0x3800 + string(STR_EMPTY);
  481. }
  482. /* Primary production which is boosted by supplies */
  483.     produce(oil_rig_production, 9999, 9999, 9999, 0, 0, 0);
  484.     switch(FEAT_INDUSTRIES, SELF, oil_rig_produce, STORE_PERM(waiting_cargo_1 + waiting_cargo_2 + waiting_cargo_3 + LOAD_PERM(0), 0)) {
  485.         oil_rig_production;
  486.     }
  487.     produce(oil_rig_production_256, 0, 0, 0, LOAD_TEMP(9) * production_rate_1 / 100, LOAD_TEMP(9) * production_rate_2 / 100, 0);
  488.     switch(FEAT_INDUSTRIES, SELF, oil_rig_produce_256_ticks,
  489.             [STORE_TEMP(
  490.                 LOAD_PERM(0) +
  491.                 LOAD_PERM(1) +
  492.                 LOAD_PERM(2),
  493.             8),
  494.             STORE_TEMP((LOAD_TEMP(8) >= (1 * primary_level2_requirement)) ? primary_level2_bonus :
  495.                        (LOAD_TEMP(8) >= (1 * primary_level1_requirement)) ? primary_level1_bonus : 0, 9),
  496.             STORE_PERM(LOAD_TEMP(9), 3)
  497.             ]) {
  498.         oil_rig_production_256;
  499.     }
  500. /* =================================== */
  501. /* Production change evaluated monthly */
  502. /* =================================== */
  503.     switch(FEAT_INDUSTRIES, SELF, oil_rig_monthly_update, [
  504.         STORE_PERM(LOAD_PERM(1), 2),
  505.         STORE_PERM(LOAD_PERM(0), 1),
  506.         STORE_PERM(0, 0)
  507.     ]) {
  508.         return CB_RESULT_IND_PROD_NO_CHANGE;
  509.     }
  510. switch(FEAT_INDUSTRIES, SELF, oil_rig_check_availability_param, restrict_open_during_gameplay) {
  511.     1..255: return CB_RESULT_IND_NO_CONSTRUCTION;         // disallow when restrictions in place
  512.     return CB_RESULT_IND_PROBABILITY_FROM_PROPERTY;       // we may build
  513. }
  514. switch (FEAT_INDUSTRIES, SELF, oil_rig_check_map_gen, extra_callback_info2 == IND_CREATION_GENERATION) {
  515.     1: return CB_RESULT_IND_PROBABILITY_FROM_PROPERTY;
  516.     oil_rig_check_availability_param;
  517. }
  518. switch (FEAT_INDUSTRIES, SELF, oil_rig_available_game_mode, game_mode == GAMEMODE_GAME) {
  519.     1: oil_rig_check_map_gen;
  520.     return CB_RESULT_IND_PROBABILITY_FROM_PROPERTY;
  521. }
  522.     /* 1967 */
  523.     switch (FEAT_INDUSTRIES, SELF, oil_rig_check_availability_0, current_date) {
  524.         date(1967,1,1) .. date(5000000,12,31): oil_rig_available_game_mode;
  525.         return CB_RESULT_IND_NO_CONSTRUCTION;
  526.     }
  527.     /* 1967 */
  528.     switch (FEAT_INDUSTRIES, SELF, oil_rig_check_availability_1, current_date) {
  529.         date(1967,1,1) .. date(5000000,12,31): oil_rig_available_game_mode;
  530.         return CB_RESULT_IND_NO_CONSTRUCTION;
  531.     }
  532.     /* 1967 */
  533.     switch (FEAT_INDUSTRIES, SELF, oil_rig_check_availability_4, current_date) {
  534.         date(1967,1,1) .. date(5000000,12,31): oil_rig_available_game_mode;
  535.         return CB_RESULT_IND_NO_CONSTRUCTION;
  536.     }
  537.     /* 1967 */
  538.     switch (FEAT_INDUSTRIES, SELF, oil_rig_check_availability_5, current_date) {
  539.         date(1967,1,1) .. date(5000000,12,31): oil_rig_available_game_mode;
  540.         return CB_RESULT_IND_NO_CONSTRUCTION;
  541.     }
  542.     /* 1967 */
  543.     switch (FEAT_INDUSTRIES, SELF, oil_rig_check_availability_3, current_date) {
  544.         date(1967,1,1) .. date(5000000,12,31): oil_rig_available_game_mode;
  545.         return CB_RESULT_IND_NO_CONSTRUCTION;
  546.     }
  547.     /* 1967 */
  548.     switch (FEAT_INDUSTRIES, SELF, oil_rig_check_availability_2, current_date) {
  549.         date(1967,1,1) .. date(5000000,12,31): oil_rig_available_game_mode;
  550.         return CB_RESULT_IND_NO_CONSTRUCTION;
  551.     }
  552. switch (FEAT_INDUSTRIES, SELF, oil_rig_check_availability, economy) {
  553.         0: oil_rig_check_availability_0;
  554.         1: oil_rig_check_availability_1;
  555.         4: oil_rig_check_availability_4;
  556.         5: oil_rig_check_availability_5;
  557.         3: oil_rig_check_availability_3;
  558.         2: oil_rig_check_availability_2;
  559. }
  560.     switch (FEAT_INDUSTRIES, SELF, oil_rig_min_distance_17, industry_distance(17)) {
  561.         0 .. 16: return CB_RESULT_LOCATION_DISALLOW;
  562.         return CB_RESULT_LOCATION_ALLOW;
  563.     }
  564.     switch (FEAT_INDUSTRIES, SELF, oil_rig_min_distance_49, industry_distance(49)) {
  565.         0 .. 16: return CB_RESULT_LOCATION_DISALLOW;
  566.         oil_rig_min_distance_17;
  567.     }
  568.     switch (FEAT_INDUSTRIES, SELF, oil_rig_min_distance_88, industry_distance(88)) {
  569.         0 .. 16: return CB_RESULT_LOCATION_DISALLOW;
  570.         oil_rig_min_distance_49;
  571.     }
  572.     switch (FEAT_INDUSTRIES, SELF, oil_rig_min_distance_74, industry_distance(74)) {
  573.         0 .. 16: return CB_RESULT_LOCATION_DISALLOW;
  574.         oil_rig_min_distance_88;
  575.     }
  576.     switch (FEAT_INDUSTRIES, SELF, oil_rig_coast_distance, water_distance) {
  577.         0 .. param_max_coastal_distance: oil_rig_min_distance_74;
  578.         return CB_RESULT_LOCATION_DISALLOW;
  579.     }
  580.     switch (FEAT_INDUSTRIES, SELF, oil_rig_min_distance_16, industry_distance(16)) {
  581.         0 .. 56: return CB_RESULT_LOCATION_DISALLOW;
  582.         oil_rig_coast_distance;
  583.     }
  584.     switch (FEAT_INDUSTRIES, SELF, oil_rig_check_location, (
  585.                 (extra_callback_info2 == IND_CREATION_FUND) ||
  586.                 (extra_callback_info2 == IND_CREATION_PROSPECT)
  587.                 )
  588.             ) {
  589.         1: return CB_RESULT_LOCATION_ALLOW;
  590.         oil_rig_min_distance_16;
  591.     }
  592.         if (economy==3) {
  593.             item(FEAT_INDUSTRIES, oil_rig, 16) {
  594.                 property {
  595.                     substitute: 5;
  596.                     override: 5;
  597.                     map_colour: 151;
  598.                     life_type: IND_LIFE_TYPE_EXTRACTIVE;
  599.                     min_cargo_distr: 5;
  600.                     spec_flags: bitmask(IND_FLAG_BUILT_ON_WATER, IND_FLAG_AI_CREATES_AIR_AND_SHIP_ROUTES);
  601.                     layouts: [oil_rig_layout_1_tilelayout];
  602.                     conflicting_ind_types: []; // set this prop empty, FIRS has it's own better checks for this
  603.                     random_sound_effects: []; // set this empty to avoid spurious default industry sounds (as of May 2017 FIRS does not yet use sound effects)
  604.                     name: TTD_STR_INDUSTRY_NAME_OIL_RIG;
  605.                     prod_multiplier: [29, 4];
  606.                     input_multiplier_1: [0, 0];
  607.                     input_multiplier_2: [0, 0];
  608.                     input_multiplier_3: [0, 0];
  609.                     prob_random: 6;
  610.                     prob_in_game: 6;
  611.                     prospect_chance: 0.75;
  612.                     fund_cost_multiplier: 255;
  613.                     remove_cost_multiplier: 0;
  614.                     remove_cost_multiplier: 0;
  615.                     accept_cargo_types: [cargotype("ENSP")];
  616.                     prod_cargo_types: [cargotype("OIL_"),cargotype("PASS")];
  617.                     nearby_station_name: string(STR_STATION, string(STR_TOWN),string(STR_STATION_OIL_RIG));
  618.                 }
  619.             }
  620.         }
  621.         if (economy==2) {
  622.             item(FEAT_INDUSTRIES, oil_rig, 16) {
  623.                 property {
  624.                     substitute: 5;
  625.                     override: 5;
  626.                     map_colour: 151;
  627.                     life_type: IND_LIFE_TYPE_EXTRACTIVE;
  628.                     min_cargo_distr: 5;
  629.                     spec_flags: bitmask(IND_FLAG_BUILT_ON_WATER, IND_FLAG_AI_CREATES_AIR_AND_SHIP_ROUTES);
  630.                     layouts: [oil_rig_layout_1_tilelayout];
  631.                     conflicting_ind_types: []; // set this prop empty, FIRS has it's own better checks for this
  632.                     random_sound_effects: []; // set this empty to avoid spurious default industry sounds (as of May 2017 FIRS does not yet use sound effects)
  633.                     name: TTD_STR_INDUSTRY_NAME_OIL_RIG;
  634.                     prod_multiplier: [29, 4];
  635.                     input_multiplier_1: [0, 0];
  636.                     input_multiplier_2: [0, 0];
  637.                     input_multiplier_3: [0, 0];
  638.                     prob_random: 6;
  639.                     prob_in_game: 6;
  640.                     prospect_chance: 0.75;
  641.                     fund_cost_multiplier: 255;
  642.                     remove_cost_multiplier: 0;
  643.                     remove_cost_multiplier: 0;
  644.                     accept_cargo_types: [cargotype("ENSP")];
  645.                     prod_cargo_types: [cargotype("OIL_"),cargotype("PASS")];
  646.                     nearby_station_name: string(STR_STATION, string(STR_TOWN),string(STR_STATION_OIL_RIG));
  647.                 }
  648.             }
  649.         }
  650.         if (economy==3) {
  651.             item(FEAT_INDUSTRIES, oil_rig, 16) {
  652.                 graphics {
  653.                     construction_probability: oil_rig_check_availability;
  654.                     build_prod_change:        randomise_primary_production_on_build;
  655.                     produce_cargo_arrival:    oil_rig_produce;
  656.                     produce_256_ticks:        oil_rig_produce_256_ticks;
  657.                     monthly_prod_change:      oil_rig_monthly_update;
  658.                     random_prod_change:       return CB_RESULT_IND_PROD_NO_CHANGE;
  659.                     location_check:           oil_rig_check_location;
  660.                     extra_text_fund:          return string(STR_FUND_AVAILABLE_FROM, 1967);
  661.                     extra_text_industry:      oil_rig_extra_text;
  662.                     cargo_subtype_display:    oil_rig_cargo_subtype_display;
  663.                     colour:                   switch_colour;
  664.                 }
  665.             }
  666.         }
  667.         if (economy==2) {
  668.             item(FEAT_INDUSTRIES, oil_rig, 16) {
  669.                 graphics {
  670.                     construction_probability: oil_rig_check_availability;
  671.                     build_prod_change:        randomise_primary_production_on_build;
  672.                     produce_cargo_arrival:    oil_rig_produce;
  673.                     produce_256_ticks:        oil_rig_produce_256_ticks;
  674.                     monthly_prod_change:      oil_rig_monthly_update;
  675.                     random_prod_change:       return CB_RESULT_IND_PROD_NO_CHANGE;
  676.                     location_check:           oil_rig_check_location;
  677.                     extra_text_fund:          return string(STR_FUND_AVAILABLE_FROM, 1967);
  678.                     extra_text_industry:      oil_rig_extra_text;
  679.                     cargo_subtype_display:    oil_rig_cargo_subtype_display;
  680.                     colour:                   switch_colour;
  681.                 }
  682.             }
  683.         }

Comments