zitot

aoe2scenarioparser - secondary relic cart doesn't respawn bug

Apr 13th, 2023
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.30 KB | None | 0 0
  1. from AoE2ScenarioParser.datasets.players import PlayerId
  2. from AoE2ScenarioParser.datasets.units import UnitInfo
  3. from AoE2ScenarioParser.scenarios.aoe2_de_scenario import AoE2DEScenario
  4. from AoE2ScenarioParser.datasets.trigger_lists import ObjectState
  5. from AoE2ScenarioParser.datasets.trigger_lists import ObjectAttribute
  6. ATTR_SET = 1
  7.  
  8. from pathlib import Path
  9.  
  10. userprofile = str(Path.home())
  11. scenario_folder = userprofile + "\\Games\\Age of Empires 2 DE\\76561198259295632\\resources\\_common\\scenario\\"
  12.  
  13. # The scenario object.
  14. scenario_name = "hello world"
  15.  
  16. # Define Scenario file
  17. scenario = AoE2DEScenario.from_file(f"{scenario_folder}{scenario_name}.aoe2scenario")
  18.  
  19. # Save reference to the manager, so you don't have to do "scenario.trigger_manager..." each time
  20. trigger_manager = scenario.trigger_manager
  21. unit_manager = scenario.unit_manager
  22. map_manager = scenario.map_manager
  23.  
  24. map_width = map_manager.map_width
  25.  
  26. bird = trigger_manager.add_trigger("bird")
  27. bird.enabled = 1
  28. bird.new_effect.modify_attribute(
  29. object_list_unit_id = UnitInfo.MACAW.ID,
  30. quantity = UnitInfo.RELIC_CART.ID,
  31. object_attributes = ObjectAttribute.DEAD_UNIT_ID,
  32. operation = ATTR_SET,
  33. source_player = PlayerId.GAIA
  34. )
  35. bird.new_effect.modify_attribute(
  36. object_list_unit_id = UnitInfo.MACAW.ID,
  37. quantity = 0,
  38. object_attributes = ObjectAttribute.HIT_POINTS,
  39. operation = ATTR_SET,
  40. source_player = PlayerId.GAIA
  41. )
  42.  
  43. chatter = trigger_manager.add_trigger("chatter")
  44. chatter.enabled = 1
  45. chatter.looping = 1
  46. chatter.new_effect.script_call(message='void fn() {xsChatData("Gaia Relics: " + xsGetObjectCount(0, 1304));}')
  47. def createRow(y):
  48. tiles = []
  49. for x in range(map_width):
  50. trigger = trigger_manager.add_trigger(f"{x} {y}")
  51. trigger.enabled = 0
  52. trigger.new_condition.objects_in_area(1, UnitInfo.RELIC_CART.ID, PlayerId.GAIA, x, y, x, y, object_state = ObjectState.DYING)
  53. trigger.new_effect.create_object(UnitInfo.MACAW.ID, PlayerId.GAIA, x, y)
  54. trigger.new_effect.change_view(source_player = 1, location_x = x, location_y = y)
  55.  
  56. tiles.append(trigger)
  57.  
  58. row_manager = trigger_manager.add_trigger(f"Row manager {y}")
  59. row_manager.new_condition.objects_in_area(1, UnitInfo.RELIC_CART.ID, PlayerId.GAIA, 0, y, map_width-1, y, object_state = ObjectState.DYING)
  60.  
  61. tiles_in_row_disabler = trigger_manager.add_trigger(f"tiles_in_row_disabler {y}")
  62. tiles_in_row_disabler.enabled = 0
  63. tiles_in_row_disabler.new_effect.send_chat(1, message="Removed dying relic cart from play.")
  64. tiles_in_row_disabler.new_effect.remove_object(UnitInfo.RELIC_CART.ID, PlayerId.GAIA, object_state = ObjectState.DYING)
  65. tiles_in_row_disabler.new_effect.activate_trigger(row_manager.trigger_id)
  66.  
  67. for tile in tiles:
  68. tile.new_effect.activate_trigger(tiles_in_row_disabler.trigger_id)
  69. tiles_in_row_disabler.new_effect.deactivate_trigger(tile.trigger_id)
  70. row_manager.new_effect.activate_trigger(tile.trigger_id)
  71.  
  72. return row_manager
  73.  
  74. rows = []
  75. for y in range(map_width):
  76. row = createRow(y)
  77. row.enabled = 1
  78. row.looping = 0
  79. rows.append(row)
  80.  
  81. # rows_manager = trigger_manager.add_trigger("All rows manager")
  82. # rows_manager.enabled = 1
  83. # rows_manager.new_condition.
  84. # for row in rows:
  85. # rows_manager.new_effect.activate_trigger(row.trigger_id)
  86.  
  87. scenario.write_to_file(f"{scenario_folder}{scenario_name}_output.aoe2scenario")
  88.  
Advertisement
Add Comment
Please, Sign In to add comment