From 381bcf0de69b8ae674794766db4931d0095890a9 Mon Sep 17 00:00:00 2001 From: Pablo Angulo Date: Wed, 7 Jan 2026 16:44:53 +0100 Subject: [PATCH 1/2] Add b737max200 ryanair --- lang/english.lng | 1 + .../B737/B737_MAX_200/B737_MAX_200.pnml | 23 +++++++++--------- .../B737_MAX_200/B737_MAX_200_graphic.pnml | 12 +++++++-- .../B737_MAX_200/B737_MAX_200_switch.pnml | 22 +++++++++++------ .../Boeing/B737/B737_MAX_200/Ryanair.png | Bin 0 -> 4738 bytes 5 files changed, 37 insertions(+), 21 deletions(-) create mode 100644 src/Aircraft/Boeing/B737/B737_MAX_200/Ryanair.png diff --git a/lang/english.lng b/lang/english.lng index 56ca356..ddbe7b9 100644 --- a/lang/english.lng +++ b/lang/english.lng @@ -471,6 +471,7 @@ STR_REFIT_LIVERY_Easyjet :(Easyjet) STR_REFIT_LIVERY_TAP :(TAP) STR_REFIT_LIVERY_Vueling :(Vueling) STR_REFIT_LIVERY_Wizzair :(Wizz Air) +STR_REFIT_LIVERY_Ryanair :(Ryanair) # Liveries (Oceania, Africa) diff --git a/src/Aircraft/Boeing/B737/B737_MAX_200/B737_MAX_200.pnml b/src/Aircraft/Boeing/B737/B737_MAX_200/B737_MAX_200.pnml index c996b11..aa4fa21 100644 --- a/src/Aircraft/Boeing/B737/B737_MAX_200/B737_MAX_200.pnml +++ b/src/Aircraft/Boeing/B737/B737_MAX_200/B737_MAX_200.pnml @@ -18,40 +18,41 @@ item(FEAT_AIRCRAFT, B737_MAX_200, 7057){ aircraft_type: AIRCRAFT_TYPE_LARGE; sprite_id: SPRITE_ID_NEW_AIRCRAFT; variant_group: B737_100; - + //spec speed: 952km/h; - + //Model model_life: VEHICLE_NEVER_EXPIRES; vehicle_life: 30; retire_early: 0; reliability_decay: 0; - + //Cargo passenger_capacity: 197; - mail_capacity: 19; - acceleration: 27; + mail_capacity: 19; + acceleration: 27; refittable_cargo_classes: NO_CARGO_CLASS; non_refittable_cargo_classes: NO_CARGO_CLASS; cargo_allow_refit: [PASS]; cargo_disallow_refit: []; - + //Costs refit_cost: 100; - + //Flags misc_flags: bitmask(AIRCRAFT_FLAG_2CC); sound_effect: SOUND_TAKEOFF_JET; } - + graphics { - default: sw_B737_MAX_200; + default: sw_737_MAX_200; purchase: sw_B737_MAX_200_purchase; loading_speed: 26; cost_factor: 890; running_cost_factor: 120; - cargo_subtype_text: sw_Boeing_737_MAX_200_cargo_subtype_text; - name: switch_B737MAX200_name; + cargo_subtype_text: sw_737_MAX_200_cargo_subtype_text; + passenger_capacity: sw_737_MAX_200_cargo_subtype_capacity; + name: switch_737_MAX_200_name; } } diff --git a/src/Aircraft/Boeing/B737/B737_MAX_200/B737_MAX_200_graphic.pnml b/src/Aircraft/Boeing/B737/B737_MAX_200/B737_MAX_200_graphic.pnml index 5a0c1ce..ad664c4 100644 --- a/src/Aircraft/Boeing/B737/B737_MAX_200/B737_MAX_200_graphic.pnml +++ b/src/Aircraft/Boeing/B737/B737_MAX_200/B737_MAX_200_graphic.pnml @@ -10,16 +10,24 @@ spriteset(set_B737_MAX_200_purchase, "src/Aircraft/Boeing/B737/B737_MAX_200/B737 } /*-------------------------------------------------------------------- -1. 보잉 737 MAX 200 제조사 +1. 보잉 737 MAX 200 Boeing --------------------------------------------------------------------*/ spriteset(set_B737_MAX_200, "src/Aircraft/Boeing/B737/B737_MAX_200/B737_MAX_200.png"){ tp_B737_MAX_8(0, 0) } +/*-------------------------------------------------------------------- +2. 보잉 737 MAX 200 Ryanair +--------------------------------------------------------------------*/ + +spriteset(set_B737_MAX_200_ryanair, "src/Aircraft/Boeing/B737/B737_MAX_200/Ryanair.png"){ + tp_B737_MAX_8(0, 0) +} + /*-------------------------------------------------------------------- 구매정보 --------------------------------------------------------------------*/ switch(FEAT_TRAINS, SELF, sw_B737_MAX_200_purchase, cargo_subtype) { set_B737_MAX_200_purchase; -} \ No newline at end of file +} diff --git a/src/Aircraft/Boeing/B737/B737_MAX_200/B737_MAX_200_switch.pnml b/src/Aircraft/Boeing/B737/B737_MAX_200/B737_MAX_200_switch.pnml index 5e230a1..7bba826 100644 --- a/src/Aircraft/Boeing/B737/B737_MAX_200/B737_MAX_200_switch.pnml +++ b/src/Aircraft/Boeing/B737/B737_MAX_200/B737_MAX_200_switch.pnml @@ -1,19 +1,25 @@ /*-------------------------------------------------------------------- 스위치 --------------------------------------------------------------------*/ -switch(FEAT_AIRCRAFT, SELF, sw_Boeing_737_MAX_200_cargo_subtype_text, cargo_subtype) { - 1: return string(STR_REFIT_LIVERY_Boeing); // 제조사 - 2: return string(STR_REFIT_LIVERY_Boeing); // 대한항공 +switch(FEAT_AIRCRAFT, SELF, sw_737_MAX_200_cargo_subtype_text, cargo_subtype) { + 1: return string(STR_REFIT_LIVERY_Boeing); // Manufacturer + 2: return string(STR_REFIT_LIVERY_Ryanair); // Ryanair return string(STR_REFIT_LIVERY_Boeing); } -switch(FEAT_AIRCRAFT, SELF, sw_B737_MAX_200, cargo_subtype) { - 1: set_B737_MAX_200; // 제조사 - 2: set_B737_MAX_200; // 대한항공 +switch(FEAT_AIRCRAFT, SELF, sw_737_MAX_200, cargo_subtype) { + 1: set_B737_MAX_200; // Manufacturer + 2: set_B737_MAX_200_ryanair; // Ryanair set_B737_MAX_200; } -switch (FEAT_AIRCRAFT, SELF, switch_B737MAX200_name, getbits(extra_callback_info1, 0, 8) == 0x20? getbits(extra_callback_info1, 8, 8) : 0xFFFF) { +switch (FEAT_AIRCRAFT, SELF, switch_737_MAX_200_name, getbits(extra_callback_info1, 0, 8) == 0x20? getbits(extra_callback_info1, 8, 8) : 0xFFFF) { 0: return string(STR_B737_FAMILY); return CB_RESULT_NO_TEXT; -} \ No newline at end of file +} + +switch (FEAT_AIRCRAFT, SELF, sw_737_MAX_200_cargo_subtype_capacity, cargo_subtype) +{ + 1: return 190; // default + 2: return 197; // Ryanair +} diff --git a/src/Aircraft/Boeing/B737/B737_MAX_200/Ryanair.png b/src/Aircraft/Boeing/B737/B737_MAX_200/Ryanair.png new file mode 100644 index 0000000000000000000000000000000000000000..00cf742b937ef5290b972e692e8780366393507b GIT binary patch literal 4738 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 Date: Wed, 7 Jan 2026 19:28:01 +0100 Subject: [PATCH 2/2] code boieng capacities --- .../Boeing/B737/B737_800/B737_800.pnml | 17 ++-- .../Boeing/B737/B737_800/B737_800_switch.pnml | 73 ++++++++------ .../Boeing/B737/B737_900/B737_900.pnml | 19 ++-- .../Boeing/B737/B737_900/B737_900_switch.pnml | 9 +- .../Boeing/B737/B737_900ER/B737_900ER.pnml | 19 ++-- .../B737/B737_900ER/B737_900ER_switch.pnml | 10 +- .../B737_MAX_200/B737_MAX_200_switch.pnml | 3 +- .../Boeing/B737/B737_MAX_200/Ryanair.png | Bin 4738 -> 11458 bytes .../Boeing/B737/B737_MAX_8/B737_MAX_8.pnml | 23 ++--- .../B737/B737_MAX_8/B737_MAX_8_graphic.pnml | 4 +- .../B737/B737_MAX_8/B737_MAX_8_switch.pnml | 17 +++- .../Boeing/B777/B777_200/B777_200_switch.pnml | 2 +- .../Boeing/B777/B777_200ER/B777_200ER.pnml | 19 ++-- .../B777/B777_200ER/B777_200ER_switch.pnml | 12 ++- .../Boeing/B777/B777_300/B777_300.pnml | 19 ++-- .../Boeing/B777/B777_300/B777_300_switch.pnml | 9 +- .../Boeing/B777/B777_300ER/B777_300ER.pnml | 19 ++-- .../B777/B777_300ER/B777_300ER_switch.pnml | 90 +++++++++++------- 18 files changed, 227 insertions(+), 137 deletions(-) diff --git a/src/Aircraft/Boeing/B737/B737_800/B737_800.pnml b/src/Aircraft/Boeing/B737/B737_800/B737_800.pnml index 03af687..f20c055 100644 --- a/src/Aircraft/Boeing/B737/B737_800/B737_800.pnml +++ b/src/Aircraft/Boeing/B737/B737_800/B737_800.pnml @@ -18,33 +18,33 @@ item(FEAT_AIRCRAFT, B737_800, 7001){ aircraft_type: AIRCRAFT_TYPE_SMALL; sprite_id: SPRITE_ID_NEW_AIRCRAFT; variant_group: B737_100; - + //spec speed: 965km/h; - + //Model model_life: VEHICLE_NEVER_EXPIRES; vehicle_life: 30; retire_early: 0; reliability_decay: 0; - + //Cargo passenger_capacity: 189; - mail_capacity: 19; - acceleration: 27; + mail_capacity: 19; + acceleration: 27; refittable_cargo_classes: NO_CARGO_CLASS; non_refittable_cargo_classes: NO_CARGO_CLASS; cargo_allow_refit: [PASS]; cargo_disallow_refit: []; - + //Costs refit_cost: 100; - + //Flags misc_flags: bitmask(AIRCRAFT_FLAG_2CC); sound_effect: SOUND_TAKEOFF_JET; } - + graphics { default: sw_B737_800; purchase: sw_B737_800_purchase; @@ -52,6 +52,7 @@ item(FEAT_AIRCRAFT, B737_800, 7001){ cost_factor: 234; running_cost_factor: 120; cargo_subtype_text: sw_Boeing_737_800_cargo_subtype_text; + passenger_capacity: sw_Boeing_737_800_cargo_subtype_capacity; name: switch_B737800_name; } } diff --git a/src/Aircraft/Boeing/B737/B737_800/B737_800_switch.pnml b/src/Aircraft/Boeing/B737/B737_800/B737_800_switch.pnml index 7359e62..7e98e31 100644 --- a/src/Aircraft/Boeing/B737/B737_800/B737_800_switch.pnml +++ b/src/Aircraft/Boeing/B737/B737_800/B737_800_switch.pnml @@ -2,42 +2,61 @@ Switch --------------------------------------------------------------------*/ switch(FEAT_AIRCRAFT, SELF, sw_Boeing_737_800_cargo_subtype_text, cargo_subtype) { - 1: return string(STR_REFIT_LIVERY_Boeing); // Manufacturer - 2: return string(STR_REFIT_LIVERY_Jejuair); // Jeju Air - 3: return string(STR_REFIT_LIVERY_Tway); // Tway - 4: return string(STR_REFIT_LIVERY_Jinair); // Jin Air - 5: return string(STR_REFIT_LIVERY_Koreanair); // Korean Air - 6: return string(STR_REFIT_LIVERY_Flygangwon); // Fly Gangwon - 7: return string(STR_REFIT_LIVERY_Eastar); // Easter - 8: return string(STR_REFIT_LIVERY_Jejuair_old); // Jeju Air Old - 9: return string(STR_REFIT_LIVERY_Japanairlines); // Japan Airlines + 1: return string(STR_REFIT_LIVERY_Boeing); // Manufacturer + 2: return string(STR_REFIT_LIVERY_Jejuair); // Jeju Air + 3: return string(STR_REFIT_LIVERY_Tway); // Tway + 4: return string(STR_REFIT_LIVERY_Jinair); // Jin Air + 5: return string(STR_REFIT_LIVERY_Koreanair); // Korean Air + 6: return string(STR_REFIT_LIVERY_Flygangwon); // Fly Gangwon + 7: return string(STR_REFIT_LIVERY_Eastar); // Easter + 8: return string(STR_REFIT_LIVERY_Jejuair_old); // Jeju Air Old + 9: return string(STR_REFIT_LIVERY_Japanairlines); // Japan Airlines 10: return string(STR_REFIT_LIVERY_Chinaairlines); // China Airlines - 11: return string(STR_REFIT_LIVERY_Skymarkairlines); // Skymark Airlines + 11: return string(STR_REFIT_LIVERY_Skymarkairlines); // Skymark Airlines 12: return string(STR_REFIT_LIVERY_Chinasouthern); // China Southern Airlines - 13: return string(STR_REFIT_LIVERY_Chinaeastern); // China Eastern Airlines - 14: return string(STR_REFIT_LIVERY_Unitedairlines); // United Airlines + 13: return string(STR_REFIT_LIVERY_Chinaeastern); // China Eastern Airlines + 14: return string(STR_REFIT_LIVERY_Unitedairlines); // United Airlines return string(STR_REFIT_LIVERY_Boeing); } switch(FEAT_AIRCRAFT, SELF, sw_B737_800, cargo_subtype) { - 1: set_B737_800; // Manufacturer - 2: set_B737_800_jeju; // Jeju Air - 3: set_B737_800_tway; // Tway - 4: set_B737_800_jin; // Jin Air - 5: set_B737_800_korean; // Korean Air - 6: set_B737_800_gangwon; // Fly Gangwon - 7: set_B737_800_eastar; // Easter - 8: set_B737_800_jeju_old; // Jeju Air Old - 9: set_B737_800_Japanairlines; // Japan Airlines - 10: set_B737_800_Chinaairlines; // China Airlines - 11: set_B737_800_Skymarkairlines; // Skymark Airlines - 12: set_B737_800_chinasouthern; // China Southern Airlines - 13: set_B737_800_chinaeastern; // China Eastern Airlines - 14: set_B737_800_united; // United Airlines + 1: set_B737_800; // Manufacturer + 2: set_B737_800_jeju; // Jeju Air + 3: set_B737_800_tway; // Tway + 4: set_B737_800_jin; // Jin Air + 5: set_B737_800_korean; // Korean Air + 6: set_B737_800_gangwon; // Fly Gangwon + 7: set_B737_800_eastar; // Easter + 8: set_B737_800_jeju_old; // Jeju Air Old + 9: set_B737_800_Japanairlines; // Japan Airlines + 10: set_B737_800_Chinaairlines; // China Airlines + 11: set_B737_800_Skymarkairlines; // Skymark Airlines + 12: set_B737_800_chinasouthern; // China Southern Airlines + 13: set_B737_800_chinaeastern; // China Eastern Airlines + 14: set_B737_800_united; // United Airlines set_B737_800; } switch (FEAT_AIRCRAFT, SELF, switch_B737800_name, getbits(extra_callback_info1, 0, 8) == 0x20? getbits(extra_callback_info1, 8, 8) : 0xFFFF) { 0: return string(STR_B737_FAMILY); return CB_RESULT_NO_TEXT; -} \ No newline at end of file +} + +switch (FEAT_AIRCRAFT, SELF, sw_Boeing_737_800_cargo_subtype_capacity, cargo_subtype) +{ + // Use https://seatmaps.com/es/aircraft/boeing-737-800/ as reference + 1: return 189; // default + 2: return 189; // Jeju Air + 3: return 189; // Tway + 4: return 189; // Jin Air + 5: return 138; // Korean Air + 6: return 180; // Fly Gangwon + 7: return 189; // Easter + 8: return 189; // Jeju Air Old + 9: return 165; // Japan Airlines + 10: return 174; // China Airlines + 11: return 189; // Skymark Airlines + 12: return 174; // China Southern Airlines + 13: return 189; // China Eastern Airlines + 14: return 166; // United Airlines +} diff --git a/src/Aircraft/Boeing/B737/B737_900/B737_900.pnml b/src/Aircraft/Boeing/B737/B737_900/B737_900.pnml index 930e6b7..701776c 100644 --- a/src/Aircraft/Boeing/B737/B737_900/B737_900.pnml +++ b/src/Aircraft/Boeing/B737/B737_900/B737_900.pnml @@ -18,33 +18,33 @@ item(FEAT_AIRCRAFT, B737_900, 7059){ aircraft_type: AIRCRAFT_TYPE_LARGE; sprite_id: SPRITE_ID_NEW_AIRCRAFT; variant_group: B737_100; - + //spec speed: 952km/h; - + //Model model_life: VEHICLE_NEVER_EXPIRES; vehicle_life: 30; retire_early: 0; reliability_decay: 0; - + //Cargo passenger_capacity: 180; - mail_capacity: 19; - acceleration: 27; + mail_capacity: 19; + acceleration: 27; refittable_cargo_classes: NO_CARGO_CLASS; non_refittable_cargo_classes: NO_CARGO_CLASS; cargo_allow_refit: [PASS]; cargo_disallow_refit: []; - + //Costs refit_cost: 100; - + //Flags misc_flags: bitmask(AIRCRAFT_FLAG_2CC); sound_effect: SOUND_TAKEOFF_JET; } - + graphics { default: sw_B737_900; purchase: sw_B737_900_purchase; @@ -52,6 +52,7 @@ item(FEAT_AIRCRAFT, B737_900, 7059){ cost_factor: 890; running_cost_factor: 120; cargo_subtype_text: sw_Boeing_737_900_cargo_subtype_text; + passenger_capacity: sw_Boeing_737_900_cargo_subtype_capacity; name: switch_B737900_name; - } + } } diff --git a/src/Aircraft/Boeing/B737/B737_900/B737_900_switch.pnml b/src/Aircraft/Boeing/B737/B737_900/B737_900_switch.pnml index c08f593..c880406 100644 --- a/src/Aircraft/Boeing/B737/B737_900/B737_900_switch.pnml +++ b/src/Aircraft/Boeing/B737/B737_900/B737_900_switch.pnml @@ -16,4 +16,11 @@ switch(FEAT_AIRCRAFT, SELF, sw_B737_900, cargo_subtype) { switch (FEAT_AIRCRAFT, SELF, switch_B737900_name, getbits(extra_callback_info1, 0, 8) == 0x20? getbits(extra_callback_info1, 8, 8) : 0xFFFF) { 0: return string(STR_B737_FAMILY); return CB_RESULT_NO_TEXT; -} \ No newline at end of file +} + +switch (FEAT_AIRCRAFT, SELF, sw_Boeing_737_900_cargo_subtype_capacity, cargo_subtype) +{ + // Use https://seatmaps.com/es/aircraft/boeing-737-900/ as reference + 1: return 180; // Manufacturer + 2: return 188; // Korean Air +} diff --git a/src/Aircraft/Boeing/B737/B737_900ER/B737_900ER.pnml b/src/Aircraft/Boeing/B737/B737_900ER/B737_900ER.pnml index df13563..612605b 100644 --- a/src/Aircraft/Boeing/B737/B737_900ER/B737_900ER.pnml +++ b/src/Aircraft/Boeing/B737/B737_900ER/B737_900ER.pnml @@ -18,33 +18,33 @@ item(FEAT_AIRCRAFT, B737_900ER, 7058){ aircraft_type: AIRCRAFT_TYPE_LARGE; sprite_id: SPRITE_ID_NEW_AIRCRAFT; variant_group: B737_100; - + //spec speed: 952km/h; - + //Model model_life: VEHICLE_NEVER_EXPIRES; vehicle_life: 30; retire_early: 0; reliability_decay: 0; - + //Cargo passenger_capacity: 180; - mail_capacity: 22; - acceleration: 27; + mail_capacity: 22; + acceleration: 27; refittable_cargo_classes: NO_CARGO_CLASS; non_refittable_cargo_classes: NO_CARGO_CLASS; cargo_allow_refit: [PASS]; cargo_disallow_refit: []; - + //Costs refit_cost: 100; - + //Flags misc_flags: bitmask(AIRCRAFT_FLAG_2CC); sound_effect: SOUND_TAKEOFF_JET; } - + graphics { default: sw_B737_900ER; purchase: sw_B737_900ER_purchase; @@ -52,6 +52,7 @@ item(FEAT_AIRCRAFT, B737_900ER, 7058){ cost_factor: 249; running_cost_factor: 120; cargo_subtype_text: sw_Boeing_737_900ER_cargo_subtype_text; + passenger_capacity: sw_Boeing_737_900ER_cargo_subtype_capacity; name: switch_B737900ER_name; - } + } } diff --git a/src/Aircraft/Boeing/B737/B737_900ER/B737_900ER_switch.pnml b/src/Aircraft/Boeing/B737/B737_900ER/B737_900ER_switch.pnml index 2e7a406..0911d2c 100644 --- a/src/Aircraft/Boeing/B737/B737_900ER/B737_900ER_switch.pnml +++ b/src/Aircraft/Boeing/B737/B737_900ER/B737_900ER_switch.pnml @@ -18,4 +18,12 @@ switch(FEAT_AIRCRAFT, SELF, sw_B737_900ER, cargo_subtype) { switch (FEAT_AIRCRAFT, SELF, switch_B737900ER_name, getbits(extra_callback_info1, 0, 8) == 0x20? getbits(extra_callback_info1, 8, 8) : 0xFFFF) { 0: return string(STR_B737_FAMILY); return CB_RESULT_NO_TEXT; -} \ No newline at end of file +} + +switch (FEAT_AIRCRAFT, SELF, sw_Boeing_737_900ER_cargo_subtype_capacity, cargo_subtype) +{ + // Use https://seatmaps.com/es/aircraft/boeing-737-900/ as reference + 1: return 180; // Manufacturer + 2: return 173; // Korean Air Old + 3: return 173; // Korean Air 2025 +} diff --git a/src/Aircraft/Boeing/B737/B737_MAX_200/B737_MAX_200_switch.pnml b/src/Aircraft/Boeing/B737/B737_MAX_200/B737_MAX_200_switch.pnml index 7bba826..68eccd2 100644 --- a/src/Aircraft/Boeing/B737/B737_MAX_200/B737_MAX_200_switch.pnml +++ b/src/Aircraft/Boeing/B737/B737_MAX_200/B737_MAX_200_switch.pnml @@ -20,6 +20,7 @@ switch (FEAT_AIRCRAFT, SELF, switch_737_MAX_200_name, getbits(extra_callback_inf switch (FEAT_AIRCRAFT, SELF, sw_737_MAX_200_cargo_subtype_capacity, cargo_subtype) { - 1: return 190; // default + // Use https://seatmaps.com/es/aircraft/boeing-737-max-8/ as reference + 1: return 197; // default 2: return 197; // Ryanair } diff --git a/src/Aircraft/Boeing/B737/B737_MAX_200/Ryanair.png b/src/Aircraft/Boeing/B737/B737_MAX_200/Ryanair.png index 00cf742b937ef5290b972e692e8780366393507b..759d25f4185275fbb7b940cb9249896c15566cb6 100644 GIT binary patch literal 11458 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