Loading

create effect does not cr

  1. // сокращение для отключения визуальных эффектов тяги и тяги вагонов
  2. #define disable_visual_effect_and_powered() visual_effect_and_powered(VISUAL_EFFECT_DISABLE, 0, DISABLE_WAGON_POWER)
  3. #define disable_create_effect() 0
  4. // визуальные эффекты для электротяги
  5. #define electric_visual_effect_and_powered(offset) visual_effect_and_powered(VISUAL_EFFECT_ELECTRIC, offset, DISABLE_WAGON_POWER)
  6. #define electric_create_effect(offset) STORE_TEMP(create_effect(EFFECT_SPRITE_ELECTRIC, offset, 0, 0), 0x100)
  7. // визуальные эффекты для дизельной тяги
  8. #define diesel_visual_effect_and_powered(offset) visual_effect_and_powered(VISUAL_EFFECT_DIESEL, offset, DISABLE_WAGON_POWER)
  9. #define diesel_create_effect(offset) STORE_TEMP(create_effect(EFFECT_SPRITE_DIESEL, offset, 0, 0), 0x100)
  10. // визуальные эффекты для паровой тяги
  11. #define steam_visual_effect_and_powered(offset) visual_effect_and_powered(VISUAL_EFFECT_STEAM, offset, DISABLE_WAGON_POWER)
  12. #define steam_create_effect(offset) STORE_TEMP(create_effect(EFFECT_SPRITE_STEAM, offset, 0, 0), 0x100)
  13.  
  14. // Шаблон расчёта ориентации ЭМВПС
  15. #define EMU_direction_calculation_template(name, name2)                                          \
  16. switch (FEAT_TRAINS, SELF, name##name2##_direction_template1,                                    \
  17.    STORE_TEMP(LOAD_TEMP(5) + LOAD_TEMP(6), 5))                                                   \
  18. {  name##name2##_direction_max; }                                                                \
  19. switch (FEAT_TRAINS, SELF, name##name2##_direction_template_back12,                              \
  20. [  set_offset_to(24),                                                                            \
  21.    STORE_TEMP((LOAD_TEMP(7) == name##_m) + (2 * LOAD_TEMP(5)), 5),                               \
  22.    STORE_TEMP(prev_vehicle_type_id(), 7) == name##_h ])                                          \
  23. {  name##name2##_direction_template1; }                                                          \
  24. switch (FEAT_TRAINS, SELF, name##name2##_direction_template_back11,                              \
  25. [  set_offset_to(22),                                                                            \
  26.    STORE_TEMP((LOAD_TEMP(7) == name##_m) + (2 * LOAD_TEMP(5)), 5),                               \
  27.    STORE_TEMP(prev_vehicle_type_id(), 7) == name##_h ])                                          \
  28. { 1: name##name2##_direction_template1;                                                          \
  29.      name##name2##_direction_template_back12; }                                                  \
  30. switch (FEAT_TRAINS, SELF, name##name2##_direction_template_back10,                              \
  31. [  set_offset_to(20),                                                                            \
  32.    STORE_TEMP((LOAD_TEMP(7) == name##_m) + (2 * LOAD_TEMP(5)), 5),                               \
  33.    STORE_TEMP(prev_vehicle_type_id(), 7) == name##_h ])                                          \
  34. { 1: name##name2##_direction_template1;                                                          \
  35.      name##name2##_direction_template_back11; }                                                  \
  36. switch (FEAT_TRAINS, SELF, name##name2##_direction_template_back9,                               \
  37. [  set_offset_to(18),                                                                            \
  38.    STORE_TEMP((LOAD_TEMP(7) == name##_m) + (2 * LOAD_TEMP(5)), 5),                               \
  39.    STORE_TEMP(prev_vehicle_type_id(), 7) == name##_h ])                                          \
  40. { 1: name##name2##_direction_template1;                                                          \
  41.      name##name2##_direction_template_back10; }                                                  \
  42. switch (FEAT_TRAINS, SELF, name##name2##_direction_template_back8,                               \
  43. [  set_offset_to(16),                                                                            \
  44.    STORE_TEMP((LOAD_TEMP(7) == name##_m) + (2 * LOAD_TEMP(5)), 5),                               \
  45.    STORE_TEMP(prev_vehicle_type_id(), 7) == name##_h ])                                          \
  46. { 1: name##name2##_direction_template1;                                                          \
  47.      name##name2##_direction_template_back9; }                                                   \
  48. switch (FEAT_TRAINS, SELF, name##name2##_direction_template_back7,                               \
  49. [  set_offset_to(14),                                                                            \
  50.    STORE_TEMP((LOAD_TEMP(7) == name##_m) + (2 * LOAD_TEMP(5)), 5),                               \
  51.    STORE_TEMP(prev_vehicle_type_id(), 7) == name##_h ])                                          \
  52. { 1: name##name2##_direction_template1;                                                          \
  53.      name##name2##_direction_template_back8; }                                                   \
  54. switch (FEAT_TRAINS, SELF, name##name2##_direction_template_back6,                               \
  55. [  set_offset_to(12),                                                                            \
  56.    STORE_TEMP((LOAD_TEMP(7) == name##_m) + (2 * LOAD_TEMP(5)), 5),                               \
  57.    STORE_TEMP(prev_vehicle_type_id(), 7) == name##_h ])                                          \
  58. { 1: name##name2##_direction_template1;                                                          \
  59.      name##name2##_direction_template_back7; }                                                   \
  60. switch (FEAT_TRAINS, SELF, name##name2##_direction_template_back5,                               \
  61. [  set_offset_to(10),                                                                            \
  62.    STORE_TEMP((LOAD_TEMP(7) == name##_m) + (2 * LOAD_TEMP(5)), 5),                               \
  63.    STORE_TEMP(prev_vehicle_type_id(), 7) == name##_h ])                                          \
  64. { 1: name##name2##_direction_template1;                                                          \
  65.      name##name2##_direction_template_back6; }                                                   \
  66. switch (FEAT_TRAINS, SELF, name##name2##_direction_template_back4,                               \
  67. [  set_offset_to(8),                                                                             \
  68.    STORE_TEMP((LOAD_TEMP(7) == name##_m) + (2 * LOAD_TEMP(5)), 5),                               \
  69.    STORE_TEMP(prev_vehicle_type_id(), 7) == name##_h ])                                          \
  70. { 1: name##name2##_direction_template1;                                                          \
  71.      name##name2##_direction_template_back5; }                                                   \
  72. switch (FEAT_TRAINS, SELF, name##name2##_direction_template_back3,                               \
  73. [  set_offset_to(6),                                                                             \
  74.    STORE_TEMP((LOAD_TEMP(7) == name##_m) + (2 * LOAD_TEMP(5)), 5),                               \
  75.    STORE_TEMP(prev_vehicle_type_id(), 7) == name##_h ])                                          \
  76. { 1: name##name2##_direction_template1;                                                          \
  77.      name##name2##_direction_template_back4; }                                                   \
  78. switch (FEAT_TRAINS, SELF, name##name2##_direction_template_back2,                               \
  79. [  set_offset_to(4),                                                                             \
  80.    STORE_TEMP((LOAD_TEMP(7) == name##_m) + (2 * LOAD_TEMP(5)), 5),                               \
  81.    STORE_TEMP(prev_vehicle_type_id(), 7) == name##_h ])                                          \
  82. { 1: name##name2##_direction_template1;                                                          \
  83.      name##name2##_direction_template_back3; }                                                   \
  84. switch (FEAT_TRAINS, SELF, name##name2##_direction_template_back1,                               \
  85. [  set_offset_to(2),                                                                             \
  86.    STORE_TEMP((LOAD_TEMP(7) == name##_m) + (2 * LOAD_TEMP(5)), 5),                               \
  87.    STORE_TEMP(prev_vehicle_type_id(), 7) == name##_h ])                                          \
  88. { 1: name##name2##_direction_template1;                                                          \
  89.      name##name2##_direction_template_back2; }                                                   \
  90. switch (FEAT_TRAINS, SELF, name##name2##_direction_template_back0,                               \
  91. [  set_offset_to(0),                                                                             \
  92.    STORE_TEMP(prev_vehicle_type_id(), 7) == name##_h ])                                          \
  93. { 1: name##name2##_direction_template1;                                                          \
  94.      name##name2##_direction_template_back1; }                                                   \
  95. switch (FEAT_TRAINS, SELF, name##name2##_direction_template12,                                   \
  96. [  set_offset_to(-24),                                                                           \
  97.    STORE_TEMP(2048 * (prev_vehicle_type_id() == name##_m) + LOAD_TEMP(5), 5),                    \
  98.    STORE_TEMP(12 * 4096 * (prev_vehicle_type_id() == name##_h), 6) ])                            \
  99. {  name##name2##_direction_template_back0; }                                                     \
  100. switch (FEAT_TRAINS, SELF, name##name2##_direction_template11,                                   \
  101. [  set_offset_to(-22),                                                                           \
  102.    STORE_TEMP(1024 * (prev_vehicle_type_id() == name##_m) + LOAD_TEMP(5), 5),                    \
  103.    STORE_TEMP(11 * 4096 * (prev_vehicle_type_id() == name##_h), 6) >= 4096 ])                    \
  104. { 1: name##name2##_direction_template_back0;                                                     \
  105.      name##name2##_direction_template12; }                                                       \
  106. switch (FEAT_TRAINS, SELF, name##name2##_direction_template10,                                   \
  107. [  set_offset_to(-20),                                                                           \
  108.    STORE_TEMP(512 * (prev_vehicle_type_id() == name##_m) + LOAD_TEMP(5), 5),                     \
  109.    STORE_TEMP(10 * 4096 * (prev_vehicle_type_id() == name##_h), 6) >= 4096 ])                    \
  110. { 1: name##name2##_direction_template_back0;                                                     \
  111.      name##name2##_direction_template11; }                                                       \
  112. switch (FEAT_TRAINS, SELF, name##name2##_direction_template9,                                    \
  113. [  set_offset_to(-18),                                                                           \
  114.    STORE_TEMP(256 * (prev_vehicle_type_id() == name##_m) + LOAD_TEMP(5), 5),                     \
  115.    STORE_TEMP(9 * 4096 * (prev_vehicle_type_id() == name##_h), 6) >= 4096 ])                     \
  116. { 1: name##name2##_direction_template_back0;                                                     \
  117.      name##name2##_direction_template10; }                                                       \
  118. switch (FEAT_TRAINS, SELF, name##name2##_direction_template8,                                    \
  119. [  set_offset_to(-16),                                                                           \
  120.    STORE_TEMP(128 * (prev_vehicle_type_id() == name##_m) + LOAD_TEMP(5), 5),                     \
  121.    STORE_TEMP(8 * 4096 * (prev_vehicle_type_id() == name##_h), 6) >= 4096 ])                     \
  122. { 1: name##name2##_direction_template_back0;                                                     \
  123.      name##name2##_direction_template9; }                                                        \
  124. switch (FEAT_TRAINS, SELF, name##name2##_direction_template7,                                    \
  125. [  set_offset_to(-14),                                                                           \
  126.    STORE_TEMP(64 * (prev_vehicle_type_id() == name##_m) + LOAD_TEMP(5), 5),                      \
  127.    STORE_TEMP(7 * 4096 * (prev_vehicle_type_id() == name##_h), 6) >= 4096 ])                     \
  128. { 1: name##name2##_direction_template_back0;                                                     \
  129.      name##name2##_direction_template8; }                                                        \
  130. switch (FEAT_TRAINS, SELF, name##name2##_direction_template6,                                    \
  131. [  set_offset_to(-12),                                                                           \
  132.    STORE_TEMP(32 * (prev_vehicle_type_id() == name##_m) + LOAD_TEMP(5), 5),                      \
  133.    STORE_TEMP(6 * 4096 * (prev_vehicle_type_id() == name##_h), 6) >= 4096 ])                     \
  134. { 1: name##name2##_direction_template_back0;                                                     \
  135.      name##name2##_direction_template7; }                                                        \
  136. switch (FEAT_TRAINS, SELF, name##name2##_direction_template5,                                    \
  137. [  set_offset_to(-10),                                                                           \
  138.    STORE_TEMP(16 * (prev_vehicle_type_id() == name##_m) + LOAD_TEMP(5), 5),                      \
  139.    STORE_TEMP(5 * 4096 * (prev_vehicle_type_id() == name##_h), 6) >= 4096 ])                     \
  140. { 1: name##name2##_direction_template_back0;                                                     \
  141.      name##name2##_direction_template6; }                                                        \
  142. switch (FEAT_TRAINS, SELF, name##name2##_direction_template4,                                    \
  143. [  set_offset_to(-8),                                                                            \
  144.    STORE_TEMP(8 * (prev_vehicle_type_id() == name##_m) + LOAD_TEMP(5), 5),                       \
  145.    STORE_TEMP(4 * 4096 * (prev_vehicle_type_id() == name##_h), 6) >= 4096 ])                     \
  146. { 1: name##name2##_direction_template_back0;                                                     \
  147.      name##name2##_direction_template5; }                                                        \
  148. switch (FEAT_TRAINS, SELF, name##name2##_direction_template3,                                    \
  149. [  set_offset_to(-6),                                                                            \
  150.    STORE_TEMP(4 * (prev_vehicle_type_id() == name##_m) + LOAD_TEMP(5), 5),                       \
  151.    STORE_TEMP(3 * 4096 * (prev_vehicle_type_id() == name##_h), 6) >= 4096 ])                     \
  152. { 1: name##name2##_direction_template_back0;                                                     \
  153.      name##name2##_direction_template4; }                                                        \
  154. switch (FEAT_TRAINS, SELF, name##name2##_direction_template2,                                    \
  155. [  set_offset_to(-4),                                                                            \
  156.    STORE_TEMP(2 * (prev_vehicle_type_id() == name##_m) + LOAD_TEMP(5), 5),                       \
  157.    STORE_TEMP(2 * 4096 * (prev_vehicle_type_id() == name##_h), 6) >= 4096 ])                     \
  158. { 1: name##name2##_direction_template_back0;                                                     \
  159.      name##name2##_direction_template3; }                                                        \
  160. switch (FEAT_TRAINS, SELF, name##name2##_direction_template,                                     \
  161. [  set_offset_to(-2),                                                                            \
  162.    STORE_TEMP(1 * (prev_vehicle_type_id() == name##_m), 5),                                      \
  163.    STORE_TEMP(1 * 4096 * (prev_vehicle_type_id() == name##_h), 6) >= 4096 ])                     \
  164. { 1: name##name2##_direction_template_back0;                                                     \
  165.      name##name2##_direction_template2; }                                                        \
  166.  
  167. #define EMU_46789101112_m_create_effect_template(name, left, right)                                    \
  168. switch (FEAT_TRAINS, SELF, name##_m_create_effect_left, electric_create_effect(left)) { return 1; }    \
  169. switch (FEAT_TRAINS, SELF, name##_m_create_effect_right, electric_create_effect(right)) { return 1; }  \
  170. switch (FEAT_TRAINS, SELF, name##_m_create_effect_direction_max, LOAD_TEMP(5))                         \
  171. { 0x1003: name##_m_create_effect_left;      /* Г-(М)-М-Г                 */                            \
  172.   0x2003: name##_m_create_effect_right;     /* Г-М-(М)-Г                 */                            \
  173.   0x100B: name##_m_create_effect_left;      /* Г-(М)-П-М-М-Г             */                            \
  174.   0x300B: name##_m_create_effect_left;      /* Г-М-П-(М)-М-Г             */                            \
  175.   0x400B: name##_m_create_effect_right;     /* Г-М-П-М-(М)-Г             */                            \
  176.   0x100D: name##_m_create_effect_left;      /* Г-(М)-М-П-М-Г             */                            \
  177.   0x200D: name##_m_create_effect_right;     /* Г-М-(М)-П-М-Г             */                            \
  178.   0x400D: name##_m_create_effect_right;     /* Г-М-М-П-(М)-Г             */                            \
  179.   0x1013: name##_m_create_effect_left;      /* Г-(М)-П-П-М-М-Г           */                            \
  180.   0x4013: name##_m_create_effect_left;      /* Г-М-П-П-(М)-М-Г           */                            \
  181.   0x5013: name##_m_create_effect_right;     /* Г-М-П-П-М-(М)-Г           */                            \
  182.   0x1019: name##_m_create_effect_left;      /* Г-(М)-М-П-П-М-Г           */                            \
  183.   0x2019: name##_m_create_effect_right;     /* Г-М-(М)-П-П-М-Г           */                            \
  184.   0x5019: name##_m_create_effect_right;     /* Г-М-М-П-П-(М)-Г           */                            \
  185.   0x102D: name##_m_create_effect_left;      /* Г-(М)-П-М-М-П-М-Г         */                            \
  186.   0x302D: name##_m_create_effect_left;      /* Г-М-П-(М)-М-П-М-Г         */                            \
  187.   0x402D: name##_m_create_effect_right;     /* Г-М-П-М-(М)-П-М-Г         */                            \
  188.   0x602D: name##_m_create_effect_right;     /* Г-М-П-М-М-П-(М)-Г         */                            \
  189.   0x104D: name##_m_create_effect_left;      /* Г-(М)-П-П-М-М-П-М-Г       */                            \
  190.   0x404D: name##_m_create_effect_left;      /* Г-М-П-П-(М)-М-П-М-Г       */                            \
  191.   0x504D: name##_m_create_effect_right;     /* Г-М-П-П-М-(М)-П-М-Г       */                            \
  192.   0x704D: name##_m_create_effect_right;     /* Г-М-П-П-М-М-П-(М)-Г       */                            \
  193.   0x1059: name##_m_create_effect_left;      /* Г-(М)-П-М-М-П-П-М-Г       */                            \
  194.   0x3059: name##_m_create_effect_left;      /* Г-М-П-(М)-М-П-П-М-Г       */                            \
  195.   0x4059: name##_m_create_effect_right;     /* Г-М-П-М-(М)-П-П-М-Г       */                            \
  196.   0x7059: name##_m_create_effect_right;     /* Г-М-П-М-М-П-П-(М)-Г       */                            \
  197.   0x10AD: name##_m_create_effect_left;      /* Г-(М)-П-М-П-М-М-П-М-Г     */                            \
  198.   0x30AD: name##_m_create_effect_left;      /* Г-М-П-(М)-П-М-М-П-М-Г     */                            \
  199.   0x50AD: name##_m_create_effect_left;      /* Г-М-П-М-П-(М)-М-П-М-Г     */                            \
  200.   0x60AD: name##_m_create_effect_right;     /* Г-М-П-М-П-М-(М)-П-М-Г     */                            \
  201.   0x80AD: name##_m_create_effect_right;     /* Г-М-П-М-П-М-М-П-(М)-Г     */                            \
  202.   0x10B5: name##_m_create_effect_left;      /* Г-(М)-П-М-М-П-М-П-М-Г     */                            \
  203.   0x30B5: name##_m_create_effect_left;      /* Г-М-П-(М)-М-П-М-П-М-Г     */                            \
  204.   0x40B5: name##_m_create_effect_right;     /* Г-М-П-М-(М)-П-М-П-М-Г     */                            \
  205.   0x60B5: name##_m_create_effect_right;     /* Г-М-П-М-М-П-(М)-П-М-Г     */                            \
  206.   0x80B5: name##_m_create_effect_right;     /* Г-М-П-М-М-П-М-П-(М)-Г     */                            \
  207.   0x1135: name##_m_create_effect_left;      /* Г-(М)-П-П-М-М-П-М-П-М-Г   */                            \
  208.   0x4135: name##_m_create_effect_left;      /* Г-М-П-П-(М)-М-П-М-П-М-Г   */                            \
  209.   0x5135: name##_m_create_effect_right;     /* Г-М-П-П-М-(М)-П-М-П-М-Г   */                            \
  210.   0x7135: name##_m_create_effect_right;     /* Г-М-П-П-М-М-П-(М)-П-М-Г   */                            \
  211.   0x9135: name##_m_create_effect_right;     /* Г-М-П-П-М-М-П-М-П-(М)-Г   */                            \
  212.   0x1159: name##_m_create_effect_left;      /* Г-(М)-П-М-П-М-М-П-П-М-Г   */                            \
  213.   0x3159: name##_m_create_effect_left;      /* Г-М-П-(М)-П-М-М-П-П-М-Г   */                            \
  214.   0x5159: name##_m_create_effect_left;      /* Г-М-П-М-П-(М)-М-П-П-М-Г   */                            \
  215.   0x6159: name##_m_create_effect_right;     /* Г-М-П-М-П-М-(М)-П-П-М-Г   */                            \
  216.   0x9159: name##_m_create_effect_right;     /* Г-М-П-М-П-М-М-П-П-(М)-Г   */                            \
  217.   0x12B5: name##_m_create_effect_left;      /* Г-(М)-П-М-П-М-М-П-М-П-М-Г */                            \
  218.   0x32B5: name##_m_create_effect_left;      /* Г-М-П-(М)-П-М-М-П-М-П-М-Г */                            \
  219.   0x52B5: name##_m_create_effect_left;      /* Г-М-П-М-П-(М)-М-П-М-П-М-Г */                            \
  220.   0x62B5: name##_m_create_effect_right;     /* Г-М-П-М-П-М-(М)-П-М-П-М-Г */                            \
  221.   0x82B5: name##_m_create_effect_right;     /* Г-М-П-М-П-М-М-П-(М)-П-М-Г */                            \
  222.   0xA2B5: name##_m_create_effect_right;     /* Г-М-П-М-П-М-М-П-М-П-(М)-Г */                            \
  223.           return electric_visual_effect_and_powered(left+right); }                                     \
  224.  
  225. ...
  226. EMU_46789101112_m_create_effect_template(er1, -1, 5)
  227.  
  228. EMU_direction_calculation_template(er1, _m_create_effect)
  229.  
  230. switch (FEAT_TRAINS, PARENT, er1_m_create_effect,
  231.   vehicle_type_id == er1_h)
  232. {
  233.   1: er1_m_create_effect_direction_template;
  234.      return disable_create_effect();
  235. }
  236.  
  237. // Даём тягу, только если локомотив - er1_h
  238. switch (FEAT_TRAINS, PARENT, er1_m_power,
  239.   vehicle_type_id == er1_h)
  240. {
  241.   1: return get_power_in_cb(853);
  242.      return 0;
  243. }
  244. ...
  245. item (FEAT_TRAINS, er1_m)
  246. {
  247.   property
  248.   {
  249.     name: string(STR_ER1_M_NAME);
  250.     climates_available: get_climates_available();
  251.     introduction_date: date(get_car_year(1957), 1, 1);
  252.     model_life: get_model_life(1957,1962);
  253.     retire_early: get_retire_early(1957,1962);
  254.     vehicle_life: 30;
  255.     reliability_decay: 20;
  256.     cargo_allow_refit: [PASS];
  257.     default_cargo_type: PASS;
  258.     loading_speed: 12;
  259.     cost_factor: get_emu_cost_factor();
  260.     running_cost_factor: get_emu_running_cost_factor();
  261.     sprite_id: SPRITE_ID_NEW_TRAIN;
  262.     misc_flags: bitmask(TRAIN_FLAG_TILT, TRAIN_FLAG_MU);
  263.     refit_cost: 0;
  264.     track_type: get_dc_track_type();
  265.     ai_special_flag: AI_FLAG_PASSENGER;
  266.     power: 853 hpM;
  267.     running_cost_base: RUNNING_COST_ELECTRIC;
  268.     cargo_capacity: 110;
  269.     weight: 52.5 ton;
  270.     engine_class: ENGINE_CLASS_ELECTRIC;
  271.     tractive_effort_coefficient: get_tec(35.0, 52.5);
  272.     length: 8;
  273.     effect_spawn_model_and_powered: EFFECT_SPAWN_MODEL_ELECTRIC;
  274.   }
  275.   graphics {
  276.     default: er1_m_sprites;
  277.     purchase: er1_m_purchase_sprites;
  278.     articulated_part: articulated_part_dummy4;
  279.     can_attach_wagon: er1_can_attach_wagon;
  280.     start_stop: er1_m_start_stop;
  281.     speed: speed_after30_130to100;
  282.     purchase_speed: return 130;
  283.     additional_text: return string(STR_ER1_M_PURCHASE_HINT, string(STR_SECTIONS_EMU_4_6_8_10));
  284.     cargo_subtype_text: er1_cargo_subtype_text;
  285.     power: er1_m_power;
  286.     cargo_capacity: er1_m_cargo_capacity;
  287. //    visual_effect_and_powered: electric_visual_effect_and_powered(0);
  288.     create_effect: er1_m_create_effect;
  289.   }
  290. }

Comments