Search results for query: *

  1. B Tutorial Other Adding things such as overhead stab, crouching, extra formations options.

    I'm trying to add 1-handed overhead stabbing to Silverstag and was wondering if it could be done without deleting the ani_low_walk and ani_crouch_down lines.

    Deleting them and replacing with load_mod_resource = mbg_pastebin_anims causes the crouching animations to bug out which wouldn't be an issue in most other mods but Silverstag has commands to make your troops crouch for cover and stand back up again.
  2. SP Native Diplomacy 4.litdum (v1.7 has been released - 28.02.2023)

    litdum said:
    -But actually i like that standing with crosbow animation. What is the problem with it?
    The crossbow is clipping into the character's face.


    These animation are much better in my opinion:
    0v4NWzo.png
    37AKtH0.png
    Less noticeable clipping and the pose isn't ass stiff looking.
  3. SP Native Diplomacy 4.litdum (v1.7 has been released - 28.02.2023)

    I like most of the new animations but sometimes they are a little goofy:
    CKbIwIY.jpg

  4. SP Native Diplomacy 4.litdum (v1.7 has been released - 28.02.2023)

    litdum said:
    Actually i'd intended to change it but later gave up.

    This might be of some help if you decide to try again in the future:

    Sinisterius said:
    Shield Bash for single- and multiplayer (Revamped 23/10/2010).

    Features.
    Be able to bash with any shield in multi- and singleplayer.
    AI agents can also bash now -- the game is much more challenging now.
    There's a cooldown of 5seconds before you/ai can bash again.

    Notes.
    If $sp_shield_bash is 1 then the player can bash.
    If $sp_shield_bash_ai is 1 then every AI agent can bash.
    You might want to adjust the 'sp_agent_shield_bash_timer' for AI agents..
    Perhaps put the Shield skill to a use?  :razz:


    Codes.
    Code:
    ################################################
    ## Shield Bash                                ##
    ## Developed by 'xenoargh' for singleplayer.  ##
    ## Revamped by 'Sinisterius'. ##
    ## Animations Copyright (C) 2010 'xenoargh'.  ##
    ################################################
    
    
    #####
    #Add these following triggers to module_mission_templates.py,
    #above all other code. Then simply add:
    #sp_shield_bash_1,
    #sp_shield_bash_2,
    #sp_shield_bash_3,
    #To your mission templates to activate the triggers.
    sp_shield_bash_1 = (
    	0, 0, 0,
    	[
    	    (eq, "$sp_shield_bash", 1),
            (game_key_is_down, gk_defend),
            (game_key_clicked, gk_attack),
    	],
    	[
    	    (get_player_agent_no, ":agent"),
    		(agent_is_active, ":agent"),
    		(agent_is_alive, ":agent"),
    		(neg|agent_slot_ge, ":agent", sp_agent_shield_bash_timer, 1), #Less than.
    		(agent_get_wielded_item, ":item", ":agent", 1), #Offhand.
    		(gt, ":item", 0),
    		(item_get_type, ":type", ":item"),
    		(eq, ":type", itp_type_shield), #Shield equipped.
    		(agent_get_defend_action, ":action", ":agent"),
    		(eq, ":action", 2), #Blocking.
    		(agent_get_horse, ":horse", ":agent"),
    		(eq, ":horse", -1), #No horse.
    		(agent_set_slot, ":agent", sp_agent_shield_bash_timer, 5),
    		(agent_set_animation, ":agent", "anim_shield_bash"),
    		(agent_get_troop_id, ":troop", ":agent"),
    		(troop_get_type, ":type", ":troop"),
    		(try_begin),
    		    (eq, ":type", tf_male),
    			(agent_play_sound, ":agent", "snd_man_yell"),
    		(else_try),
    		    (eq, ":type", tf_female),
    			(agent_play_sound, ":agent", "snd_woman_yell"),
    		(try_end),
    		(agent_get_position, pos1, ":agent"),
    		(assign, ":victim", -1),
    		(assign, ":minimum_distance", 150),
    		(try_for_agents, ":suspect"),
    		    (agent_is_alive, ":suspect"),
    			(agent_is_human, ":suspect"),
    			(neg|agent_is_ally, ":suspect"),
    			(agent_get_position, pos2, ":suspect"),
    			(neg|position_is_behind_position, pos2, pos1), #Suspect can't be behind basher.
    			(get_distance_between_positions, ":distance", pos1, pos2),
    			(le, ":distance", ":minimum_distance"),
    			(assign, ":minimum_distance", ":distance"),
    			(assign, ":victim", ":suspect"),
    		(try_end),
    		(ge, ":victim", 0),
    		(agent_play_sound, ":victim", "snd_wooden_hit_low_armor_high_damage"),
    		(agent_get_defend_action, ":action", ":victim"),
    		(try_begin),
    		    (eq, ":action", 2), #Blocking.
    			(neg|position_is_behind_position, pos1, pos2), #If basher isn't behind victim.
    			(agent_get_wielded_item, ":item", ":victim", 1), #Offhand.
    			(gt, ":item", 0),
    			(item_get_type, ":type", ":item"),
    			(eq, ":type", itp_type_shield),
    			(agent_set_animation, ":victim", "anim_shield_bash"),
    		(else_try),
    		    (agent_set_animation, ":victim", "anim_shield_strike"),
    		(try_end),		
    	])
    sp_shield_bash_2 = (
    	1, 0, 0, [(eq, "$sp_shield_bash", 1)],
    	[
    	    (get_player_agent_no, ":agent"),
    		(agent_is_active, ":agent"),
    		(agent_is_alive, ":agent"),
    		(agent_get_slot, ":timer", ":agent", sp_agent_shield_bash_timer),
    		(val_sub, ":timer", 1),
    		(val_max, ":timer", 0),
    		(agent_set_slot, ":agent", sp_agent_shield_bash_timer, ":timer"),
    	])
    sp_shield_bash_3 = (
    	0.25, 0, 0, [(eq, "$sp_shield_bash_ai", 1)],
    	[
    	    (get_player_agent_no, ":player_agent"),
    	    (try_for_agents, ":agent"),
    		    (neq, ":agent", ":player_agent"),
    		    (agent_is_alive, ":agent"),
    			(agent_is_human, ":agent"),
    			(try_begin),
    		    	(neg|agent_slot_ge, ":agent", sp_agent_shield_bash_timer, 1), #Less than.
    				(agent_slot_eq, ":agent", slot_agent_is_running_away, 0), #Isn't routing.
    		    	(agent_get_wielded_item, ":item", ":agent", 1), #Offhand.
    				(gt, ":item", 0),
    		    	(item_get_type, ":type", ":item"),
    		    	(eq, ":type", itp_type_shield), #Shield equipped.
    		    	(agent_get_attack_action, ":action", ":agent"),
    		    	(eq, ":action", 0), #Free.
    		    	(agent_get_horse, ":horse", ":agent"),
    		    	(eq, ":horse", -1), #No horse.
    				(agent_get_team, ":team", ":agent"),
    				(agent_get_position, pos1, ":agent"),
    				(assign, ":victim", -1),
    				(assign, ":minimum_distance", 125),
    				(try_for_agents, ":suspect"),
    				    (agent_is_alive, ":suspect"),
    					(agent_is_human, ":suspect"),
    					(agent_get_position, pos2, ":suspect"),
    					(neg|position_is_behind_position, pos2, pos1), #Suspect can't be behind basher.
    					(agent_get_team, ":suspect_team", ":suspect"),
    					(neq, ":suspect_team", ":team"),
    					(get_distance_between_positions, ":distance", pos1, pos2),
    					(le, ":distance", ":minimum_distance"),
    					(assign, ":minimum_distance", ":distance"),
    					(assign, ":victim", ":suspect"),
    				(try_end),
    				(ge, ":victim", 0),
    				(agent_get_horse, ":horse", ":victim"),
    				(eq, ":horse", -1),
    				(store_random_in_range, ":rand", 15, 26),
    		    	(agent_set_slot, ":agent", sp_agent_shield_bash_timer, ":rand"), #20 is 20*0.25=5seconds.
    				(agent_set_animation, ":agent", "anim_shield_bash"),
    				(agent_get_troop_id, ":troop", ":agent"),
    				(troop_get_type, ":type", ":troop"),
    				(try_begin),
    				    (eq, ":type", tf_male),
    					(agent_play_sound, ":agent", "snd_man_yell"),
    				(else_try),
    				    (eq, ":type", tf_female),
    					(agent_play_sound, ":agent", "snd_woman_yell"),
    				(try_end),
    				(agent_play_sound, ":victim", "snd_wooden_hit_low_armor_high_damage"),
    				(agent_get_defend_action, ":action", ":victim"),
    				(try_begin),
    				    (eq, ":action", 2), #Blocking.
    					(neg|position_is_behind_position, pos1, pos2), #If basher isn't behind victim.
    					(agent_get_wielded_item, ":item", ":victim", 1), #Offhand.
    		        	(gt, ":item", 0),
    					(item_get_type, ":type", ":item"),
    					(eq, ":type", itp_type_shield),
    					(agent_set_animation, ":victim", "anim_shield_bash"),
    				(else_try),
    				    (agent_set_animation, ":victim", "anim_shield_strike"),
    				(try_end),					
    			(try_end),
    			(agent_get_slot, ":timer", ":agent", sp_agent_shield_bash_timer),
    			(val_sub, ":timer", 1),
    			(val_max, ":timer", 0),
    			(agent_set_slot, ":agent", sp_agent_shield_bash_timer, ":timer"),
    		(try_end),
    	])
    Code:
    #####
    #The following animations go into module_animations.py.
    #Simply replace two unused human animations with these animations.
    #You can adjust the duration of the bash, simply modify the '0.50' to
    #your liking. So '1.0' is 1second and '0.50' is half a second.
    ["shield_bash", acf_enforce_all|acf_align_with_ground, amf_priority_striked|amf_play|amf_accurate_body|amf_restart,
        [0.50, "defend_shield_parry_all", 1, 50, blend_in_defense], #Adjust duration for balance.  Currently at 0.50 seconds, fixed.
        [0.50, "defend_shield_right", 1, 50, blend_in_defense],
        [0.50, "defend_shield_left", 1, 50, blend_in_defense],
        [0.50, "defend_shield_right", 1, 50, blend_in_defense],   
    ],
    ["shield_strike", acf_enforce_all|acf_align_with_ground, amf_priority_striked|amf_play|amf_accurate_body|amf_restart,
        [1.0, "anim_human", blow+5000, blow+5010, arf_blend_in_3|arf_make_custom_sound],
        [1.7, "anim_human", blow+5400, blow+5453, arf_blend_in_2|arf_make_custom_sound],
        [1.44, "anim_human", blow+5400, blow+5445, arf_blend_in_2|arf_make_custom_sound],   
    ],
    Code:
    #####
    #This goes into module_constants.py, agent slots.
    sp_agent_shield_bash_timer = 50
    Code:
    ################################################
    ## Shield Bash                                ##
    ## Developed by 'xenoargh' for singleplayer.  ##
    ## Revamped for multiplayer by 'Sinisterius'. ##
    ## Animations Copyright (C) 2010 'xenoargh'.  ##
    ################################################
    
    
    #####
    #Add the following block of code to module_scripts.py,
    #game_receive_network_message, right under the store_script_param's.
    #That's all you need to do.
    	(try_begin),
            (eq, ":event_type", rpw_shield_bash_server),
       
            #Get sender data & max players.
            (player_is_active, ":player_no"),
            (player_get_agent_id, ":agent_no", ":player_no"),
            (agent_is_active, ":agent_no"),
            (get_max_players, ":max_players"),
       
            #Check if the sender is in the correct condition.
    		(neg|player_slot_ge, ":player_no", rpw_shield_bash_timer, 1), #Less than.
            (agent_get_wielded_item, ":shield", ":agent_no", 1), #Offhand item.
            (this_or_next|is_between, ":shield", "itm_roman_shield_square", "itm_roman_shield_end"),
    		(is_between, ":shield", "itm_gallic_shield_1", "itm_gallic_shield_end"),
            (agent_get_defend_action, ":action", ":agent_no"),
            (eq, ":action", 2), #Blocking.
            (agent_get_horse, ":horse", ":agent_no"),
            (eq, ":horse", -1), #No horse.
       
            #If everything is correct, then set the sender agent up for bash.
    		(player_set_slot, ":player_no", rpw_shield_bash_timer, 2), #Actually is 2*2.5=5seconds.
            (agent_set_animation, ":agent_no", "anim_shield_bash"),
            (agent_get_troop_id, ":troop_no", ":agent_no"),
            (troop_get_type, ":type_no", ":troop_no"),
            (try_begin),
                (eq, ":type_no", tf_male),
                (try_for_range, ":player", 0, ":max_players"),
                    (player_is_active, ":player"),
                    (multiplayer_send_2_int_to_player, ":player", rpw_agent_play_sound_client, ":agent_no", "snd_man_yell"),
                (try_end),
            (else_try),
                (eq, ":type_no", tf_female),
                (try_for_range, ":player", 0, ":max_players"),
                    (player_is_active, ":player"),
                    (multiplayer_send_2_int_to_player, ":player", rpw_agent_play_sound_client, ":agent_no", "snd_woman_yell"),
                (try_end),
            (try_end),
       
            #Bash. Get the closest agent within 100cm~1m.
            (agent_get_position, pos1, ":agent_no"),
            (assign, ":minimum_distance", 150),
            (assign, ":victim", -1),
            (try_for_agents, ":suspect"),
                (neq, ":suspect", ":agent_no"), #Suspect can't be our local agent.
                (agent_is_active, ":suspect"),
                (agent_is_alive, ":suspect"),
                (agent_is_human, ":suspect"),
          
                #Compare distances.
                (agent_get_position, pos2, ":suspect"),
                (neg|position_is_behind_position, pos2, pos1), #Suspect can't be behind basher.
                (get_distance_between_positions, ":distance", pos1, pos2),
                (le, ":distance", ":minimum_distance"),
          
                #If distance is sufficient..
                (assign, ":minimum_distance", ":distance"),
                (assign, ":victim", ":suspect"),
            (try_end),
       
            #If we have the victim, aka the closest agent, then deal with him. Else, do nothing.
            (ge, ":victim", 0),
            (agent_get_horse, ":horse", ":victim"),
            (eq, ":horse", -1), #No horse.
            (try_for_range, ":player", 0, ":max_players"),
                (player_is_active, ":player"),
                (multiplayer_send_2_int_to_player, ":player", rpw_agent_play_sound_client, ":victim", "snd_wooden_hit_low_armor_high_damage"),
            (try_end),
    		(agent_get_defend_action, ":action", ":victim"),
    		(try_begin),
    			(eq, ":action", 2), #Blocking.
    			(neg|position_is_behind_position, pos1, pos2), #If basher isn't behind victim.
                (agent_get_wielded_item, ":shield", ":victim", 1), #Offhand item.
    			(try_begin),
                    (this_or_next|is_between, ":shield", "itm_roman_shield_square", "itm_roman_shield_end"),
    	        	(is_between, ":shield", "itm_gallic_shield_1", "itm_gallic_shield_end"),
                    (position_move_y, pos2, -50),
                    (position_get_distance_to_ground_level, ":distance", pos2),
                    (try_begin),
                        (le, ":distance", 25),
                        (agent_set_animation, ":victim", "anim_shield_bash"),
                        (agent_set_position, ":victim", pos2),
                    (else_try),
                        (agent_set_animation, ":victim", "anim_shield_bash"),
                    (try_end),
    			(try_end),
    		(else_try),
                (agent_get_position, pos2, ":victim"),
                (position_move_y, pos2, -75),
                (position_get_distance_to_ground_level, ":distance", pos2),
                (try_begin),
                    (le, ":distance", 25),
                    (agent_set_animation, ":victim", "anim_shield_strike"),
                    (agent_set_position, ":victim", pos2),
                (else_try),
                    (agent_set_animation, ":victim", "anim_shield_strike"),
                (try_end),
    		(try_end),
    	(else_try),
    	    (neq, multiplayer_is_server),
    		(try_begin),
    		    (eq, ":event_type", rpw_agent_play_sound_client),
    			(store_script_param, ":agent", 3),
    			(store_script_param, ":sound", 4),
    			(agent_play_sound, ":agent", ":sound"),
    		(try_end),
    	(try_end),
    Code:
    #####
    #Add these following triggers to module_mission_templates.py,
    #above all other code. Then simply add:
    #mp_shield_bash_1,
    #mp_shield_bash_2,
    #To your mission templates to activate the triggers.
    mp_shield_bash_1 = (
    	0, 0, 0,
    	[
    	    #Get player input for shield bash.
            (game_key_is_down, gk_defend),
            (game_key_clicked, gk_attack),
        ],
        [
    	    #If input is given, then initialize a bash.
            (multiplayer_send_message_to_server, rpw_shield_bash_server),
        ])
    mp_shield_bash_2 = (
    	2.5, 0, 0, [],
    	[
    	    #Update each players shield bash timer.
    		#Do this every 2.5 seconds for optimization issues.
    	    (multiplayer_is_server),
    	    (get_max_players, ":max"),
    		(try_for_range, ":player", 0, ":max"),
    		    (player_is_active, ":player"),
    			(player_get_slot, ":value", ":player", rpw_shield_bash_timer),
    			(val_sub, ":value", 1),
    			(val_max, ":value", 0),
    			(player_set_slot, ":player", rpw_shield_bash_timer, ":value"),
    		(try_end),
    	])
    Code:
    #####
    #The following animations go into module_animations.py.
    #Simply replace two unused human animations with these animations.
    #You can adjust the duration of the bash, simply modify the '0.50' to
    #your liking. So '1.0' is 1second and '0.50' is half a second.
    ["shield_bash", acf_enforce_all|acf_align_with_ground, amf_priority_striked|amf_play|amf_accurate_body|amf_restart,
        [0.50, "defend_shield_parry_all", 1, 50, blend_in_defense], #Adjust duration for balance.  Currently at 0.50 seconds, fixed.
        [0.50, "defend_shield_right", 1, 50, blend_in_defense],
        [0.50, "defend_shield_left", 1, 50, blend_in_defense],
        [0.50, "defend_shield_right", 1, 50, blend_in_defense],   
    ],
    ["shield_strike", acf_enforce_all|acf_align_with_ground, amf_priority_striked|amf_play|amf_accurate_body|amf_restart,
        [1.0, "anim_human", blow+5000, blow+5010, arf_blend_in_3|arf_make_custom_sound],
        [1.7, "anim_human", blow+5400, blow+5453, arf_blend_in_2|arf_make_custom_sound],
        [1.44, "anim_human", blow+5400, blow+5445, arf_blend_in_2|arf_make_custom_sound],   
    ],
    Code:
    #####
    #Add this to header_common.py, right before 'multiplayer message types' and
    #after other multiplayer_event_x's.
    rpw_shield_bash_server = 150
    rpw_agent_play_sound_client = 151
    Code:
    #####
    #This goes into module_constants.py, player slots.
    rpw_shield_bash_timer = 50

    Turanien said:
    How would we shift the balance so that the stuns are more likely to occur than knock-downs? (Works great now, by the way! Thank you)

    Sinisterius said:
    You can create two seperate animations and use a store_random_in_range to determine which one to use.

    Code:
    (store_random_in_range, ":rand", 0, 100),
    (try_begin),
        (ge, ":rand", 25), #100-25=75% chance.
        <play_anim 1>
    (else_try),
        #Random is below 25..
        <play_anim 2>
    (try_end),

    Full thread here: https://forums.taleworlds.com/index.php/topic,134163.0.html



  5. SP Native Diplomacy 4.litdum (v1.7 has been released - 28.02.2023)

    Is it possible to change how the Shield Bash attack works?
    It knocking people on the ground seems a little too strong, perhaps make it like a kick with more damage?

    If it's too much of a pain to tweak can we get an option to turn it off?
  6. SP Native Diplomacy 4.litdum (v1.7 has been released - 28.02.2023)

    This mod is very enjoyable, great job Litdum!

    What features do you plan on adding in the future?

    If you're looking for inspiration I'd suggest these mods:

    Dickplomacy—http://www.moddb.com/mods/dickplomacy or http://www.nexusmods.com/mbwarband/mods/6130/?
    Features:
    bandit lairs take 1 week to respawn, bandit parties won't spawn unless there is a bandit lair
    refugee parties will spawn when a village is looted
    more marriage options: polygamy toggle added; same sex marriage options added when prejudice setting set to 'off'
    battle formations and upstab added
    new horse archery AI added
    you can choose which foods your army will consume
    capturing and ransoming noble ladies actually works now
    some quests from the original mount&blade re-added: duel for lady's honor and collect debt from lord
    several native bugs are fixed (prisoners attacking you during rescue)
    you can tell your companions to separate from your party and hold on to troops and follow you
    you can have your wife lead a party if she is "adventurous"
    you can design your own banner with the custom banner system
    heraldic horse

    Anon's Modded Diplomacy—http://www.mediafire.com/download/7ex3306kg24jjd9/Diplomacy+Modded.7z
    Description:
    The closest thing I could get to a Native+ mod. Replaces all the old original M&B models with new updated ones which all adhere to the native art style. Adds a secondary melee mode for two of the 2h swords, a handgonne, a flail, a katar, the tabar-shispar, upstab, 1h upstab, crouching, pike bracing, the rudimentary WFAS formations system, optional textures, a new troop in the manhunter/bandit line that uses the handgonne, better arena scenes, and all of the assets from my Way of the Sword mod are in the brf files but the vast majority aren't utilized in game. Which means if you want to add more you can easily do so.
    Otherwise this does not affect native balance.
    >Where is the handgonne?
    Check the chest in Rivacheg.

    Formations and AI by Motomataru—http://www.nexusmods.com/mountandblade/mods/3784/?
    Demo video:


    Various combat improvements—https://forums.taleworlds.com/index.php/topic,353520.0.html
    Overhead Stabbing (1handed & 2handed)
    Crouching & Pike Bracing
    Halfswording
    Mordhau
    Module.ini options

    I think most if not all of the features featured in these mods fit well with yours.
    If I had the time and commitment I'd be trying to compile these myself but sadly I do not.
    So I hope you'll find at least some of these suggestions good enough to add to your own mod.

    Thanks for reading.


  7. SP Native Diplomacy 4.litdum (v1.7 has been released - 28.02.2023)

    litdum said:
    I couldnt understand what that doesnt look right is if you talk about that picture.

    What I meant by not looking right is that the texture looks (for lack of a better word) bad.
    I have no experience in modding so beggars can't be choosers but, I actually prefer the "normal" women NPCs to this "Wandering Woman."

    litdum said:
    A few casttle courtyards are still a bit small so they may seem crowded for now but they will be made larger in later versions.

    I found that it felt too crowded in the actual villages as well.

    If there is an easy way to change the "Wandering Woman's" texture and/or the amount of villager NPCs in villages/towns please tell me.
  8. SP Native Diplomacy 4.litdum (v1.7 has been released - 28.02.2023)

    Can't post images yes but this doesn't look right: imgur/GwSTyhP.png

    Also the amount of villager NPCs should be reduced in my opinion.
Back
Top Bottom