Recent content by Dalion

  1. Dalion

    B Tutorial Scenes Scening - a definitive guide by Veledentella

    Some props have collision mesh maladjusted, therefore it is sometimes buggy and slows down agents; such props are spr_earth_stairs_b and spr_full_keep_b. In their case, some barriers must be placed on floor/ surface of them to make agents' movement normal.
    Nope, it's the sokf_type_ladder flag that slows down the agents, nothing to do with collision. Remove it and movement speed returns to normal. There's still many other situations where the barrier trick would come in handy tho, so thanks for this detailed guide, especially for the blueprints part.
  2. Dalion

    SP Tutorial Module System Example of using store_repeat_object to create list of options

    Once upon a time I was experiencing troubles with finding needed arrows with Large Bag modifier. So I decided to make a feature that you give the arrows you want to some NPC, and he assigns this modifier to it for some fee. But how does he know what arrows he should work with? Best way to do...
  3. Dalion

    OSP SP QoL Civilian outfits system for player/companions/pretenders (predetermined)

    This system allows player, companions (after they became lords) and claimants (after they became kings) to wear civilian clothes in castle hall scenes. For NPCs outfits are determined in code, and for player it is set under Camp -> Take an action -> Set civilian outfit. If player takes back all...
  4. Dalion

    PYTHON SCRIPT/SCHEME EXCHANGE

    Started Battles

    Do you know that feel when you join a started battle between two parties and turns out they still have yet to clash? Almost like they have been waiting for your join before actully start a fight. Weird feel, I know. Well guess what, it's fixed now! When you join a battle, all troops except for your party members will spawn in random spot within 10m radius from the middle of the map. So you will see kill feed from the very beginning, which should create a feeling that the battle was indeed going on when you joined. Sure it means more casualties for allies, but it's far more realistic. Reinforcements however will come from usual entrypoints for both sides.

    Just put this trigger in lead_charge mission:
    Code:
    (ti_on_agent_spawn, 0, 0,
      [
       (ge, "$g_ally_party", 0), # if player has joined already started battle
       (eq, "$attacker_reinforcement_stage", 0), # and there hasn't been any reinforcements yet
       (eq, "$defender_reinforcement_stage", 0),
      ],
      [
        (store_trigger_param_1, ":agent"),
        (assign, ":agent_to_move", -1),
        (try_begin),
          (agent_is_human, ":agent"),
          (agent_get_party_id, ":a_party", ":agent"),
          (neq, ":a_party", "p_main_party"),
          (agent_is_non_player, ":agent"),
          (assign, ":agent_to_move", ":agent"),
        (else_try), 
          (neg|agent_is_human, ":agent"),
          (agent_get_rider, ":rider", ":agent"),
          (agent_get_party_id, ":r_party", ":rider"),
          (neq, ":r_party", "p_main_party"),
          (agent_is_non_player, ":rider"),
          (assign, ":agent_to_move", ":agent"),
        (try_end),   
        (neq, ":agent_to_move", -1),
        (get_scene_boundaries, pos10, pos11),
        (set_fixed_point_multiplier, 100),
        (position_get_x, "$g_scene_max_x", pos11),
        (position_get_y, "$g_scene_max_y", pos11),
        (val_add, "$g_scene_max_x", 2400), # 2400 has been subtracted automatically because of barriers from outer terrain
        (val_add, "$g_scene_max_y", 2400),
        (store_div, ":pos_x", "$g_scene_max_x", 2),
        (store_div, ":pos_y", "$g_scene_max_x", 2),
        (init_position, pos22), # map center
        (store_random_in_range, ":x_shift", -1000, 1000),
        (store_random_in_range, ":y_shift", -1000, 1000),
        (val_add, ":pos_x", ":x_shift"),
        (val_add, ":pos_y", ":y_shift"),
        (position_set_x, pos22, ":pos_x"),
        (position_set_y, pos22, ":pos_y"),
        (agent_set_position, ":agent_to_move", pos22),
      ]),

    Shoutouts to Tocan for pointing me in the right direction here.
  5. Dalion

    [BUGS] Support Thread for v3.9

    Its one of the most annoying quests i think im just going to autofail those.
    Or you can just fix it with #13 here: https://forums.taleworlds.com/index...or-tweaks-and-talk.386332/page-6#post-9497319
  6. Dalion

    [QUESTIONS] Quick Questions//Quick Answers (Redux)

    took a Qualis Gem from Maltise. But who is she? I literally couldn't find any lore on her. Just some randomass Priestess?
    Judging by equipment there's more to her but recently I come across this screenshot on Nexus: https://www.nexusmods.com/mbwarband/images/293
    In the description author mentions his own fan-fiction lore for her, and I kinda like how "Maltise" could be just a rearranged word from "Melista". Not sure what possible connections she could have to Vendethiel though, but if you like this theory, you can consider her that.
  7. Dalion

    [MODDING] Prophesy of Pendor Tweaks and Talk

    Does anyone know how to change the Recruitment and Right to Rule Troop templates for Companions?
    For instance, I want to change the Right to Rule Troop template for Sir Jocelyn, from
    1. Silvermist Halberdier
    2. Radiant Cross Plaguewarden
    3. Knight of the Dawn
    to
    1. Sarleon Nobleman
    2. Squire of the Lion
    3. Knight of the Lion
    These are to be changed in scripts.txt. Recruitment troops are operated by ask_companions_for_unique_troops script, and Right to Rule troops by rtr_quest_troops_reward script. In both cases look at the troop IDs, they start with 360. You just have to subtract 360287970189639680 from them to get morghs editor number, or vise-versa. So, if you need Jocelyn and you know his number is 511 in morghs, then in those scrips he is 360287970189640191. Either that, or look up ids of the troops themselves, like you can just replace 360287970189640078 (Silvermist Halberdier) with 360287970189639777 (Sarleon Nobleman) and so on. These changes don't require new game, but require to send companion on a new mission obviously.

    Note, this was posted already at the POP Wiki Tweaks section
    Noted but wiki comments clutter way faster than this thread does, so I reply here.
  8. Dalion

    PYTHON SCRIPT/SCHEME EXCHANGE

    Prop Clock

    It was just an experiment, not really it's own thread level, so I'm posting it here. If you need a clock, better make it text-based, trust me you don't need props for this. But prop clock is possible too, and it looks cooler maybe.

    Final result:

    Have fun =)

    lrU1awD.jpg

    Code:
    clock_1 = (0, 0, ti_once, [], # preparing the 00:00 situation
    [
      (try_for_prop_instances, ":instance_no", "itm_linen"),
        (prop_instance_get_variation_id, ":var1", ":instance_no"),
        (eq, ":var1", 4),
        (scene_prop_set_visibility, ":instance_no", 0),
      (try_end),
      (assign, "$clock_time", 0),
      (assign, "$start_clock", 0),
    ])
    
    clock_2 = (1, 0, 0, # actual clock with 1 sec interval
    [
    (eq, "$start_clock", 1),
    ],
    [  
      (val_add, "$clock_time", 1),
      (assign, ":time", "$clock_time"),
      (store_mission_timer_a_msec, ":cur_time"), # getting msec value to make exact digits
      (val_mul, ":time", 1000),
      (val_sub, ":cur_time", ":time"),
      (val_div, ":time", 1000),
      (gt, ":cur_time", 1000),   
      (store_mod, reg1, ":time", 10),
      (call_script, "script_make_digit_of_linens", reg1, 1),
      (val_div, ":time", 10),
      (store_mod, reg2, ":time", 6),
      (call_script, "script_make_digit_of_linens", reg2, 2),
      (val_div, ":time", 6),
      (store_mod, reg3, ":time", 10),
      (call_script, "script_make_digit_of_linens", reg3, 3),
      (val_div, ":time", 10),
      (store_mod, reg4, ":time", 6),
      (call_script, "script_make_digit_of_linens", reg4, 4),
      #(tutorial_message, "@{reg4}{reg3}:{reg2}{reg1}"),  # I used this to make sure prop clock matches text one
      (play_sound, "snd_shield_hit_metal_wood"),
      (val_add, "$clock_time", 1),
    ])

    Code:
    ("make_digit_of_linens", # long but very simple script
      [
        (store_script_param_1, ":digit", 1),
        (store_script_param_2, ":position", 2),
    
        (try_for_prop_instances, ":instance_no", "itm_linen"),
          (prop_instance_get_variation_id, ":var1", ":instance_no"),
          (prop_instance_get_variation_id_2, ":var2", ":instance_no"),
          (eq, ":var2", ":position"),
          (try_begin),
            (eq, ":digit", 0),
            (try_begin),
              (eq, ":var1", 1),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 2),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 3),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 4),
              (scene_prop_set_visibility, ":instance_no", 0),
            (else_try),
              (eq, ":var1", 5),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 6),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 7),
              (scene_prop_set_visibility, ":instance_no", 1),
            (try_end),
          (else_try),
            (eq, ":digit", 1),
            (try_begin),
              (eq, ":var1", 1),
              (scene_prop_set_visibility, ":instance_no", 0),
            (else_try),
              (eq, ":var1", 2),
              (scene_prop_set_visibility, ":instance_no", 0),
            (else_try),
              (eq, ":var1", 3),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 4),
              (scene_prop_set_visibility, ":instance_no", 0),
            (else_try),
              (eq, ":var1", 5),
              (scene_prop_set_visibility, ":instance_no", 0),
            (else_try),
              (eq, ":var1", 6),
              (scene_prop_set_visibility, ":instance_no", 0),
            (else_try),
              (eq, ":var1", 7),
              (scene_prop_set_visibility, ":instance_no", 1),
            (try_end),
          (else_try),
            (eq, ":digit", 2),
            (try_begin),
              (eq, ":var1", 1),
              (scene_prop_set_visibility, ":instance_no", 0),
            (else_try),
              (eq, ":var1", 2),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 3),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 4),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 5),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 6),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 7),
              (scene_prop_set_visibility, ":instance_no", 0),
            (try_end),
          (else_try),
            (eq, ":digit", 3),
            (try_begin),
              (eq, ":var1", 1),
              (scene_prop_set_visibility, ":instance_no", 0),
            (else_try),
              (eq, ":var1", 2),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 3),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 4),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 5),
              (scene_prop_set_visibility, ":instance_no", 0),
            (else_try),
              (eq, ":var1", 6),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 7),
              (scene_prop_set_visibility, ":instance_no", 1),
            (try_end),
          (else_try),
            (eq, ":digit", 4),
            (try_begin),
              (eq, ":var1", 1),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 2),
              (scene_prop_set_visibility, ":instance_no", 0),
            (else_try),
              (eq, ":var1", 3),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 4),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 5),
              (scene_prop_set_visibility, ":instance_no", 0),
            (else_try),
              (eq, ":var1", 6),
              (scene_prop_set_visibility, ":instance_no", 0),
            (else_try),
              (eq, ":var1", 7),
              (scene_prop_set_visibility, ":instance_no", 1),
            (try_end),
          (else_try),
            (eq, ":digit", 5),
            (try_begin),
              (eq, ":var1", 1),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 2),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 3),
              (scene_prop_set_visibility, ":instance_no", 0),
            (else_try),
              (eq, ":var1", 4),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 5),
              (scene_prop_set_visibility, ":instance_no", 0),
            (else_try),
              (eq, ":var1", 6),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 7),
              (scene_prop_set_visibility, ":instance_no", 1),
            (try_end),
          (else_try),
            (eq, ":digit", 6),
            (try_begin),
              (eq, ":var1", 1),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 2),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 3),
              (scene_prop_set_visibility, ":instance_no", 0),
            (else_try),
              (eq, ":var1", 4),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 5),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 6),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 7),
              (scene_prop_set_visibility, ":instance_no", 1),
            (try_end),
          (else_try),
            (eq, ":digit", 7),
            (try_begin),
              (eq, ":var1", 1),
              (scene_prop_set_visibility, ":instance_no", 0),
            (else_try),
              (eq, ":var1", 2),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 3),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 4),
              (scene_prop_set_visibility, ":instance_no", 0),
            (else_try),
              (eq, ":var1", 5),
              (scene_prop_set_visibility, ":instance_no", 0),
            (else_try),
              (eq, ":var1", 6),
              (scene_prop_set_visibility, ":instance_no", 0),
            (else_try),
              (eq, ":var1", 7),
              (scene_prop_set_visibility, ":instance_no", 1),
            (try_end),
          (else_try),
            (eq, ":digit", 8),
            (try_begin),
              (eq, ":var1", 1),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 2),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 3),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 4),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 5),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 6),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 7),
              (scene_prop_set_visibility, ":instance_no", 1),
            (try_end),
          (else_try),
            (eq, ":digit", 9),
            (try_begin),
              (eq, ":var1", 1),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 2),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 3),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 4),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 5),
              (scene_prop_set_visibility, ":instance_no", 0),
            (else_try),
              (eq, ":var1", 6),
              (scene_prop_set_visibility, ":instance_no", 1),
            (else_try),
              (eq, ":var1", 7),
              (scene_prop_set_visibility, ":instance_no", 1),
            (try_end),
          (try_end),
        (try_end),  
      ]),

    Code:
    ("clock_trigger",0,"bucket_a","bo_bucket_a", [
      (ti_on_scene_prop_hit,
      [
        (store_trigger_param_1, ":instance_no"),
        (play_sound, "snd_dummy_hit"),
        (particle_system_burst, "psys_dummy_smoke", pos1, 3),
        (particle_system_burst, "psys_dummy_straw", pos1, 10),
        (scene_prop_slot_eq, ":instance_no", scene_prop_open_or_close_slot, 0),
        (prop_instance_get_position, pos2, ":instance_no"), # pos1 is trigger param so we use pos2
        (position_move_z, pos2, 20),
        (prop_instance_animate_to_position, ":instance_no", pos2, 20),
        (scene_prop_set_slot, ":instance_no", scene_prop_open_or_close_slot, 1),
        (assign, "$start_clock", 1),
      ]),
    
      (ti_on_scene_prop_animation_finished,
      [
        (store_trigger_param_1, ":instance_no"),
        (scene_prop_slot_eq, ":instance_no", scene_prop_open_or_close_slot, 1),
        (prop_instance_get_starting_position, pos1, ":instance_no"),
        (prop_instance_animate_to_position, ":instance_no", pos1, 100),
        (scene_prop_set_slot, ":instance_no", scene_prop_open_or_close_slot, 0),
      ]),
      ]),
  9. Dalion

    OSP Code QoL Particle Preview Presentation

    Is the description really necessary? Warband doesn't provide any ways to preview particles before using, so I made my own. IMPORTANT NOTE: I strongly advise not putting it in combat missions! Here's why: - since this presentation doesn't have prsntf_read_only flag, it disables your ability...
  10. Dalion

    OSP Code QoL Dark Souls Reference Pack

    Reserved for possible character limit exceeding in the future
  11. Dalion

    OSP Code QoL Dark Souls Reference Pack

    This thread will contain all DS references I made. If I make more in the future, they will be added here as well. As of now, we have: Enjoy!
  12. Dalion

    PYTHON SCRIPT/SCHEME EXCHANGE

    Auto-Pickup Missiles

    Recently I was trying horse archery and found one aspect of this playstyle quite frustrating. When you are low on ammo, your best bet is to collect arrows from the ground. But it's not very comfortable sometimes to point the camera on those (especially when there is a bunch of cavalry chasing you), not to mention you need to be on the correct distance from the arrow for pickup option to appear. So I decided to make this trigger. To lower the load on engine and possibly on performance, I tied it to holding a [Num_Enter] key while moving. You don't need this permanently active anyway. Two things to remember when using it:
    1) unlike the pickup via F button, this one requires you to wield the respective weapon to succeed. Just keep it in mind;
    2) it won't pickup quivers, only single missiles. That's because it would always give a full quiver, even if there was 3 arrows left after agent died. And I haven't figured out how to retrieve valid ammo amount of quivers on the ground yet.

    Have fun =)

    Code:
    missiles_auto_pickup = (0, 0, 0.6,
      [
      (neg|main_hero_fallen),
      (key_is_down, key_numpad_enter),
      ],
      [
        (set_fixed_point_multiplier, 100),
        (get_player_agent_no, ":player"),
        (agent_is_active, ":player"),
        (agent_get_position, pos1, ":player"),
        (agent_get_wielded_item, ":weapon", ":player", 0),
        (neq, ":weapon", -1), # preventing errors from bare fists
        (item_get_type, ":w_type", ":weapon"),
        (assign, ":free_slots", 0),
        (assign, ":valid_ammo", 0),
        (try_for_range_backwards, ":s", 0, 4), # retrieve the current quiver that matches weapon type. Game 
                                               # spends quivers from top to bottom, so we need backwards loop
            (agent_get_item_slot, ":slot_item", ":player", ":s"),
            (try_begin),
                (eq, ":slot_item", -1),
                (assign, ":empty_slot", ":s"),
                (val_add, ":free_slots", 1),
            (else_try),
                (item_get_type, ":m_type", ":slot_item"),
                (eq, ":m_type", itp_type_arrows),
                (eq, ":w_type", itp_type_bow),
                (assign, ":ammo_item", ":slot_item"),
                (assign, ":ammo_slot", ":s"),
            (else_try),
                (item_get_type, ":m_type", ":slot_item"),
                (eq, ":m_type", itp_type_bolts),
                (eq, ":w_type", itp_type_crossbow),
                (assign, ":ammo_item", ":slot_item"),
                (assign, ":ammo_slot", ":s"),
            (else_try),
                (item_get_type, ":m_type", ":slot_item"),
                (eq, ":m_type", itp_type_thrown),
                (eq, ":slot_item", ":weapon"), # no need to compare weapon type this time, it's a 2-in-1 check
                (assign, ":ammo_item", ":slot_item"),
                (assign, ":ammo_slot", ":s"),
            (try_end),
        (try_end),   
        (try_for_prop_instances, ":missile", -1, somt_spawned_single_ammo_item), # only single missiles, not quivers
            (prop_instance_get_position, pos2, ":missile"),
            (get_distance_between_positions, ":dist", pos2, pos1),
            (le, ":dist", 250), # pickup radius, adjust to your liking
            (prop_instance_get_scene_prop_kind, ":item", ":missile"), # get item id to compare it with current weapon
            (item_get_type, ":i_type", ":item"),
            (try_begin),
                (eq, ":i_type", itp_type_arrows),
                (eq, ":w_type", itp_type_bow),
                (assign, ":valid_ammo", 1),
            (else_try),
                (eq, ":i_type", itp_type_bolts),
                (eq, ":w_type", itp_type_crossbow),
                (assign, ":valid_ammo", 1),
            (else_try),
                (eq, ":i_type", itp_type_thrown),
                (eq, ":item", ":weapon"), 
                (assign, ":valid_ammo", 1),
            (try_end),
            (eq, ":valid_ammo", 1), #invalid ammo will be ignored without warnings
            (neg|item_has_property, ":item", itp_no_pick_up_from_ground),
            (agent_get_ammo, ":old_ammo", ":player", 1), # ONLY for total amount comparison
            (agent_get_ammo_for_slot, ":s_ammo", ":player", ":ammo_slot"), # for actual pickup calculation
            (store_add, ":new_ammo", ":s_ammo", 1),
            (agent_set_ammo, ":player", ":ammo_item", ":new_ammo"),
            (str_store_item_name, s2, ":item"),   
            (try_begin),
                (agent_get_ammo, ":cur_ammo", ":player", 1),
                (eq, ":cur_ammo", ":old_ammo"), # if these values are the same, it means there are no room for more ammo. In this
                                                # case, when you pick up something via F, game will create new quiver given there
                                                # are empty slots left. So we should replicate this behaviour
                (try_begin),
                    (ge, ":free_slots", 1),
                    (agent_equip_item, ":player", ":item", ":empty_slot"),
                    (agent_set_ammo, ":player", ":item", 1),
                    (scene_prop_set_prune_time, ":missile", 0), # remove missile from ground
                    (display_message, "@Picking up {s2}."), # duplicate default message               
                (else_try), # if there are no room for ammo in current quiver and no empty slots for new one
                    (display_message, "@Unable to take that."), # duplicate default warning
                (try_end),           
            (else_try),
                (scene_prop_set_prune_time, ":missile", 0),
                (display_message, "@Picking up {s2}."),
            (try_end),
        (try_end),   
      ])
  13. Dalion

    PYTHON SCRIPT/SCHEME EXCHANGE

    Passable Allies

    I loved it how in Bannerlord you can pass through ally troop lines. Turns out it's possible in Warband too. But, to lower the load on engine and possibly on performance, I tied this effect to holding a left [Ctrl] key while moving. You don't need this permanently active anyway. Have fun =)

    Code:
    passable_allies = (0, 0, 0,
        [
        (neg|main_hero_fallen),
        (key_is_down, key_left_control),
        ],
        [
        (set_fixed_point_multiplier, 1),
        (get_player_agent_no, ":player"),
        (agent_get_position, pos1, ":player"),
        (agent_get_team, ":p_team", ":player"),
        (try_for_agents, ":agent", pos1, 1),
            (agent_is_alive, ":agent"),
            (agent_is_human, ":agent"),
            (agent_is_non_player, ":agent"),
            (agent_get_team, ":a_team", ":agent"),
            (neg|teams_are_enemies, ":a_team", ":p_team"),
            (agent_get_speed, pos2, ":player"),
            (position_get_y, ":forward_momentum", pos2),
            (position_get_x, ":sideway_momentum", pos2),
            (convert_to_fixed_point, ":forward_momentum"),
            (convert_to_fixed_point, ":sideway_momentum"),
            (try_begin),
                (lt, ":forward_momentum", 0), # backwards moving speed is higher somehow, so we divide it in half
                (val_div, ":forward_momentum", 2),
            (try_end),
            (val_div, ":sideway_momentum", 2), # so is sideways moving speed
            (position_move_y, pos1, ":forward_momentum"),
            (position_move_x, pos1, ":sideway_momentum"),
            (agent_set_position, ":player", pos1),      
        (try_end),
        ])

    Props to SupaNinjaMan and Garedyr for support, you're the best.
  14. Dalion

    [MODDING] Prophesy of Pendor Tweaks and Talk

    I'll soon add the above and tweak #12 to the Wikia
    Seems like you frogot to remove the request about previous range button in cheatmenu with July 26th update. Also bullet trail request is still there, maybe some other too, imo the list should be revised.

    Also I can quiclkly relocate Sange Safid(location #3, closer to other fiefs) and Tuldar(location #2, it looks like a mountain pass and it would make sense to have a keep there to defend it) right now. Are you good with it?
    reloca11.jpg
Top Bottom