World with mix of many different nations. Imagine Star Wars fighting with Sauron, Steampunk conspiring against XV century Europe, Aliens fighting Djiniis, Orc fighting Morloks, Uruks fighting agains Alien Pirates! Swords, Axes, Lightsabers, Flintlock, Laser Cannons, Plasma Blasters, Arqebusiers, Blunderbuses, Antique Shields and Energy Fields, Crossbows, Magic Staves and Bows, Arrows, whatever you can imagine - now in one, huge mod with exceptional mechanics. What is it? This is Paradigm Worlds mod for Mount and Blade: Warband.

Forum Thread
  Posts  
PERSUADRATON (Games : Mount & Blade: Warband : Mods : PARADIGM WORLDS : Forum : Paradigm Worlds - New Ideas, Concepts : PERSUADRATON) Locked
Thread Options
May 16 2020 Anchor

There was a discussion about PERSUADRATON. Point is that players do not know what are rules when it comes to skills, attributes etc.

So here is code for 1.99.2 so you can see how it done. BELOW I also print code for the upcoming version 1.99.3


Main difference is that in 1.99.2 only manipulation is important and there is big bonus towards persuasion success.

In 1.99.3 there are multiple skills and attributes involved: intelligence, strength, charisma, engineer, hacking, manipulation - not at the same time of course. Process is divided to levels.

CURRENT VERSION 1.99.2


common_battle_persuadraton = (
  ti_on_agent_hit, 0, 0, [],
  [
    (store_trigger_param, ":agent_no", 2), #attacker
    (store_trigger_param, ":troop_id", 1), #defender

 (try_begin),
 
        (agent_get_wielded_item, ":item_w", ":agent_no", 0),    
        (eq, ":item_w", "itm_persuadraton"), #does attacker wields persuadraton
 
(agent_get_troop_id, ":troop_id_A", ":agent_no"),
(agent_get_troop_id, ":troop_id_D", ":troop_id"),
 

    (store_skill_level, ":persuasion_attacker", "skl_persuasion", ":troop_id_A"),
    (store_skill_level, ":persuasion_defender", "skl_persuasion", ":troop_id_D"),
 
(str_store_troop_name, s7, ":troop_id_A"),
(str_store_troop_name, s8, ":troop_id_D"),
#(display_message, "@ Persuasion attempt: {s7}"), #debug info
#(display_message, "@ Defender: {s8}"), #debug info

           
  
   
(val_mul, ":persuasion_defender", 3),   
(val_mul, ":persuasion_attacker", 5),



            (try_begin),
   (item_get_slot, ":book_read", "itm_book_cyberwar", slot_item_book_read),
   (eq, ":book_read", 1),
     (try_begin),
     (eq, ":troop_id_A", "trp_player"),
     (val_mul, ":persuasion_attacker", 13),
     (val_div, ":persuasion_attacker", 10),
     (try_end),
   (try_end),

            (try_begin),
   (item_get_slot, ":book_read", "itm_book_cyberwar", slot_item_book_read),
   (eq, ":book_read", 1),
     (try_begin),
     (eq, ":troop_id_D", "trp_player"),
     (val_mul, ":persuasion_defender", 13),
     (val_div, ":persuasion_defender", 10),
     (try_end),
   (try_end),

#######TEST#####STAART########
(assign, reg1, ":persuasion_defender"),
(assign, reg0, ":persuasion_attacker"),

 #(display_message, "@ Attacker - {s7} persuasion: {reg0}"), #debug info
 #(display_message, "@ Defender - {s8} persuasion: {reg1}"), #debug info
 
 #######TEST#####FINISH######## 
 (store_random_in_range, ":persuasion_bonus", 1, 30),  #randomize chance to persuade and...
  (val_add, ":persuasion_attacker", ":persuasion_bonus"),
  (val_sub, ":persuasion_attacker", ":persuasion_defender"),

 
            (try_begin),
               
        (store_random_in_range, ":persuasion_chance", 10, 100),  #randomize chance to persuade and...
        
        
  (try_begin),
  (ge,":persuasion_attacker", ":persuasion_chance"),   # check if persuasion skill is greater, then
        (agent_get_team, ":persuaded_faction",":agent_no"),   #get attacker team
           #MOST IMPORTANT: DEFENDER TROOP BECOMES ATTACKER TROOP
           (agent_set_team, ":troop_id", ":persuaded_faction"), #
           
     (try_begin),
    (get_player_agent_no, ":player_agent"),
    (eq, ":player_agent",":troop_id"), 
    (play_sound,"snd_quest_failed"),
                (start_presentation, "prsnt_player_damage_persuadraton"),
              (try_end), 
    
#(str_store_troop_name, s7, ":troop_id_A"),
#(str_store_troop_name, s8, ":troop_id_D"),
#(display_message, "@ DEBUG: attacker after_TROOP name: {s7}"), #debug info
#(display_message, "@ DEBUG: defender after_TROOP name: {s8}"), #debug info 
(assign, reg0, ":persuasion_attacker"),
(assign, reg1, ":persuasion_chance"),

 
 
             (try_begin), ##BATTLEFIELD MESSAGE SYSTEM ON OFF 
    (troop_get_slot, ":messages_on", "trp_running_speed", slot_troop_autofire_mode),
    (eq, ":messages_on", 1),
      (display_message,  "@***PERSUADRATON***FIGHT***WIN***{s7} VS. {s8}*** {reg0} VS. {reg1} *********",0xFFff9c00),
    (else_try),
    (eq, ":messages_on", 2), ##FULL PERSUASION REPORT
    (display_message, "@  *************PERSUADRATON***PERSUASION***FIGHT***WIN******************************",0xFFff9c00),
             (display_message, "@^^"), #debug info
             (display_message, "@  ***                         {s7} VS. {s8}                                      ***",0xFFff9c00),
             (display_message, "@  ***                       {reg0} VS. {reg1}                                    ***",0xFFff9c00),
    (try_end),    ##BATTLEFIELD MESSAGE SYSTEM ON OFF 
    
    
   (try_begin),
   (item_get_slot, ":book_read", "itm_book_cyberwar", slot_item_book_read),
   (eq, ":book_read", 1),
     (try_begin),
     (eq, ":troop_id_A", "trp_player"),
     (neg|troop_is_hero, ":troop_id_D"),
     (store_random_in_range, ":chance_constant", 1, 100),  #randomize chance to persuade and...
     (gt, ":chance_constant", 49),
     (party_force_add_members, "p_main_party", ":troop_id_D", 1),
     (else_try),
     (party_force_add_prisoners, "p_main_party", ":troop_id_D", 1),
     (try_end),
   (try_end),
 
  # (party_force_add_members, <party_id>, <troop_id>, <number>),
                                              # Adds troops to party ignoring party size limits. Mostly used to add hero troops.
  # (party_force_add_prisoners, <party_id>, <troop_id>, <number>),
                                              # Adds prisoners to party ignoring party size limits. Mostly used to add hero prisoners.
 
 
 (play_sound, "snd_orc_victory"),
 
         
  
(try_end),

   
   (try_end), 
    
 (try_end),        
  ])
 
 
 

and here is code for 1.99.3


   
 #script on attacker persuading defender to change faction during the batlle
 
 #####PERSUADRATON - item that on hit there is a chance that enemy will become attacker's ally
 # 
 

common_battle_persuadraton = (
  ti_on_agent_hit, 0, 0, [],
  [
       (store_trigger_param, ":agent_no", 2), #attacker
    (store_trigger_param, ":troop_id", 1), #defender

 
 
 
 (try_begin),
 
        (agent_get_wielded_item, ":item_w", ":agent_no", 0),    
        (eq, ":item_w", "itm_persuadraton"), #does attacker wields persuadraton
 
(agent_get_troop_id, ":troop_id_A", ":agent_no"),
(agent_get_troop_id, ":troop_id_D", ":troop_id"), 
 
(str_store_troop_name, s7, ":troop_id_A"),
(str_store_troop_name, s8, ":troop_id_D"), 





    #calculating ATTACKER
    #1-manipulation power
    (store_skill_level, ":persuasion_attacker", "skl_persuasion", ":troop_id_A"),
    (store_attribute_level, ":charisma_attacker", ":troop_id_A", ca_charisma),
     
    #2-hacking power
    (store_skill_level, ":hacker_attacker", "skl_hacking", ":troop_id_A"),
    (store_skill_level, ":engineer_attacker", "skl_engineer", ":troop_id_A"),
    (store_attribute_level, ":intelligence_attacker", ":troop_id_A", ca_intelligence),
            
             (store_character_level, ":troop_level_attacker", ":troop_id_A"),
   
   
    (val_div, ":charisma_attacker", 2),  #(1-63)   max: 63
    (val_mul, ":persuasion_attacker", 2), #(1-30)   max: 30
   
   
    (val_div, ":intelligence_attacker", 2),   #(1-63)   max: 63
    (val_mul, ":hacker_attacker", 3), #(1-45)   max: 30
    (val_mul, ":engineer_attacker", 2), #(1-30)   max: 30
   
   
    (store_add, ":attacker_manipulation_power", ":charisma_attacker",":persuasion_attacker"), #m######
    (store_add, ":attacker_hacking_power", ":intelligence_attacker",":hacker_attacker"), #h#######
      (val_add, ":attacker_hacking_power", ":engineer_attacker"), #(1-30)   max: 30########
   
   
   
   
    #calculating DEFENDER
   (store_skill_level, ":persuasion_defender", "skl_persuasion", ":troop_id_D"),
    (store_attribute_level, ":charisma_defender", ":troop_id_D", ca_charisma),
     
    #2-hacking power
    (store_skill_level, ":hacker_defender", "skl_hacking", ":troop_id_D"),
    (store_skill_level, ":engineer_defender", "skl_engineer", ":troop_id_D"),
    (store_attribute_level, ":intelligence_defender", ":troop_id_D", ca_intelligence),
            
             (store_character_level, ":troop_level_defender", ":troop_id_D"),
   
   
    (val_div, ":charisma_defender", 2),  #(1-63)   max: 63
    (val_mul, ":persuasion_defender", 2), #(1-30)   max: 30
   
   
    (val_div, ":intelligence_defender", 2),   #(1-63)   max: 63
    (val_mul, ":hacker_defender", 3), #(1-45)   max: 30
    (val_mul, ":engineer_defender", 2), #(1-30)   max: 30
   
   
    (store_add, ":defender_manipulation_power", ":charisma_defender",":persuasion_defender"), #m######
    (store_add, ":defender_hacking_power", ":intelligence_defender",":hacker_defender"), #h#######
      (val_add, ":defender_hacking_power", ":engineer_defender"), #(1-30)   max: 30########
   
   
    



            (try_begin),
   (item_get_slot, ":book_read", "itm_book_cyberwar", slot_item_book_read),
   (eq, ":book_read", 1),
     (try_begin),
     (eq, ":troop_id_A", "trp_player"),
     (val_mul, ":attacker_hacking_power", 13),
     (val_div, ":attacker_hacking_power", 10),
     (try_end),
   (try_end),

            (try_begin),
   (item_get_slot, ":book_read", "itm_book_cyberwar", slot_item_book_read),
   (eq, ":book_read", 1),
     (try_begin),
     (eq, ":troop_id_D", "trp_player"),
     (val_mul, ":defender_hacking_power", 13),
     (val_div, ":defender_hacking_power", 10),
     (try_end),
   (try_end),


  
 



#######TEST#####STAART#######

#    LEVEL 1 - MANIPULATION Attack
 (store_random_in_range, ":attacker_bonus", 1, 30),  #randomize chance  
 (store_random_in_range, ":defender_bonus", 1, 30),  #randomize chance  
 
     (val_add, ":attacker_manipulation_power", ":attacker_bonus"),  
     (val_add, ":defender_manipulation_power", ":defender_bonus"),  
      
 (ge,":attacker_manipulation_power", ":defender_manipulation_power"),   


#    LEVEL 2 - Persuadraton connecting to central nervous system 
 #2-hacking power
    (store_skill_level, ":bodybuilding_defender", "skl_ironflesh", ":troop_id_D"), #(1-30)   max: 30
    (store_skill_level, ":vanguard_defender", "skl_shield", ":troop_id_D"), #(1-30)   max: 30
    (store_attribute_level, ":strength_defender", ":troop_id_D", ca_strength), #(1-30)   max: 63
    (val_div, ":strength_defender", 4),  
     
    (val_add, ":strength_defender", ":bodybuilding_defender"),  
    (val_add, ":strength_defender", ":vanguard_defender"),  
    
      (try_begin),
    (troop_get_type, ":defender_race", ":troop_id_D"),
    (eq, ":defender_race", tf_beauty_fem),
    (val_add, ":strength_defender",30),  
      (try_end),
  
 
 
      (try_begin),
   (this_or_next|is_between, ":troop_id_D", kings_begin, kings_end), 
   (this_or_next|is_between, ":troop_id_D", lords_begin, lords_end),
   (is_between, ":troop_id_D", boss_begin, boss_end),
      (val_add, ":strength_defender",20),  
      (try_end),
    
    
  (try_begin),
  (agent_get_wielded_item, ":shield_item", ":troop_id", 0),
     (eq, ":shield_item", "itm_depersuadraton_noisener"), 
       (store_skill_level, ":hacker_bonus", "skl_hacking", ":troop_id_D"),
       (store_skill_level, ":engineer_bonus", "skl_engineer", ":troop_id_D"),
   
     (val_add, ":strength_defender",":hacker_bonus"),  
     (val_add, ":strength_defender",":engineer_bonus"),  
     (val_add, ":strength_defender",35),  
     
      (try_end),
    
    
    (store_random_in_range, ":persuasion_chance", 1, 101),  #randomize chance to persuade and...
    (lt,":strength_defender", ":persuasion_chance"),   #Check for defender organism to defend against neural connection
 
 
 #    LEVEL 3 - Persuadraton connected and starting HACKING 
 
 
 (store_random_in_range, ":hacking_bonus_attacker", 1, 30),  #randomize chance to persuade and...
 (store_random_in_range, ":hacking_bonus_defender", 1, 30),  #randomize chance to persuade and...
  (val_add, ":attacker_hacking_power", ":hacking_bonus_attacker"),
  (val_add, ":defender_hacking_power", ":hacking_bonus_defender"),
  
  
            (try_begin),   #critical chance = if attacker hacking skillx3 is lower than d100 roll then add troop level to its hacking power
     (store_random_in_range, ":hacking_critical", 1, 100), 
        (lt,":hacker_attacker", ":hacking_critical"),   #Check for defender organism to defend against neural connection
        (val_add, ":attacker_hacking_power", ":troop_level_attacker",),
         (try_end), 
  
  
           (try_begin),   #critical chance = if attacker hacking skillx3 is lower than d100 roll then add troop level to its hacking power
     (store_random_in_range, ":hacking_critical", 1, 100), 
        (lt,":hacker_defender", ":hacking_critical"),   #Check for defender organism to defend against neural connection
        (val_add, ":defender_hacking_power", ":troop_level_defender"),
         (try_end), 
  
  
  
  
  (val_sub, ":attacker_hacking_power", ":defender_hacking_power"),     ###attackers hacking power - defender hacking power = real hack power

            (try_begin), 
        (lt,":attacker_hacking_power", 0),           
     (store_random_in_range, ":hacking_critical", 1, 100), 
        (lt,":intelligence_attacker", ":hacking_critical"),   #If attacker hacking power is lower than defender's, than attacker get system crash and loose of sanity in consequence
             (call_script, "script_change_troop_sanity", ":troop_id_A", -1), 
         (try_end), 
            
            
 
             
               
        (store_random_in_range, ":hacking_chance", 1, 100),  #test against succesful hacking 
        
        
   
  (ge,":attacker_hacking_power", ":hacking_chance"),   # check if persuasion skill is greater, then
        (agent_get_team, ":persuaded_faction",":agent_no"),   #get attacker team
           #MOST IMPORTANT: DEFENDER TROOP BECOMES ATTACKER TROOP
           (agent_set_team, ":troop_id", ":persuaded_faction"), #
           
     (try_begin),
    (get_player_agent_no, ":player_agent"),
    (eq, ":player_agent",":troop_id"), 
    (play_sound,"snd_quest_failed"),
                (start_presentation, "prsnt_player_damage_persuadraton"),
              (try_end), 
    
#(str_store_troop_name, s7, ":troop_id_A"),
#(str_store_troop_name, s8, ":troop_id_D"),
#(display_message, "@ DEBUG: attacker after_TROOP name: {s7}"), #debug info
#(display_message, "@ DEBUG: defender after_TROOP name: {s8}"), #debug info 
(assign, reg0, ":attacker_hacking_power"),
(assign, reg1, ":defender_hacking_power"),

 
 
             (try_begin), ##BATTLEFIELD MESSAGE SYSTEM ON OFF 
    (troop_get_slot, ":messages_on", "trp_running_speed", slot_troop_autofire_mode),
    (eq, ":messages_on", 1),
      (display_message,  "@***PERSUADRATON***FIGHT***WIN***{s7} VS. {s8}*** {reg0} VS. {reg1} *********",0xFFff9c00),
    (else_try),
    (eq, ":messages_on", 2), ##FULL PERSUASION REPORT
    (display_message, "@  *************PERSUADRATON***PERSUASION***FIGHT***WIN******************************",0xFFff9c00),
             (display_message, "@^^"), #debug info
             (display_message, "@  ***                         {s7} VS. {s8}                                      ***",0xFFff9c00),
             (display_message, "@  ***                       {reg0} VS. {reg1}                                    ***",0xFFff9c00),
    (try_end),    ##BATTLEFIELD MESSAGE SYSTEM ON OFF 
    
    
   (try_begin),
   (item_get_slot, ":book_read", "itm_book_cyberwar", slot_item_book_read),
   (eq, ":book_read", 1),
     (try_begin),
     (eq, ":troop_id_A", "trp_player"),
     (neg|troop_is_hero, ":troop_id_D"),
     (store_random_in_range, ":chance_constant", 1, 100),  #randomize chance to persuade and...
     (gt, ":chance_constant", 49),
     (party_force_add_members, "p_main_party", ":troop_id_D", 1),
     (else_try),
     (party_force_add_prisoners, "p_main_party", ":troop_id_D", 1),
     (try_end),
   (try_end),
 
  # (party_force_add_members, <party_id>, <troop_id>, <number>),
                                              # Adds troops to party ignoring party size limits. Mostly used to add hero troops.
  # (party_force_add_prisoners, <party_id>, <troop_id>, <number>),
                                              # Adds prisoners to party ignoring party size limits. Mostly used to add hero prisoners.
 
 
 (play_sound, "snd_orc_victory"),
 
         
  
  (try_end),   
  ])
 
 
 


May 16 2020 Anchor

that looks much better, may i suggest, if possible, making it so high level troops are harder to hack than low level/tier ones by default? i mean it makes sence and it also makes it more fair and balanced, making companions and hero units either inmune to hacking or very resistant would also be a very welcomed addition

Reply to thread
click to sign in and post

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.