It's kind of annoying how blocks look like magical forcefields, especially vs riders. Nobody should be able to block attacks on their mount's feet unless they're riding something appropriately tiny like a donkey.
Fairly easy to do bonus damage vs horses/people currently riding a horse, I think someone already posted sample code in another thread. (Tydeus?)
Only tricky bit is dealing extra damage to someone who was just dehorsed by that same stab unless you get the dehorsed guy's animation, but being vulnerable from the dismount is probably enough anyway, so just extra damage on the horse seems like enough.
The basic logic is below, haven't touched the module system in a long time, so please excuse any bad formatting.
# Trigger Param 1: receiver agent no
# Trigger Param 2: dealer agent no
# Trigger Param 3: inflicted damage
# Trigger Param 6: item kind no
# Trigger Param 8: missile item kind no
# Trigger Result: if set, damage dealt to agent
ti_on_agent_hit
(try_begin),
(agent_get_troop_id, :agent_troop_no, param1),
(eq, :agent_troop_no, -1), #Horses have a troopid of -1
(assign, :should_multiply, 0), #using this to determine if/which multiplier should be used.
(try_begin), #begin try block for pike/long spear
(gt, param6, 0),
(this_or_next_eq, param6, (itemkinds number of -3 pike)), # An alternative for pike and long spear is check for length of 245 length or greater with the WSE item_get_weapon_length operation, since nothing is as long or longer than long spear besides the pike.
....
(this_or_next_eq, param6, (itemkinds number of +3 pike)),
(this_or_next_eq, param6, (itemkinds number of -3 long spear)),
...
(eq, param6, (itemkinds number of +3 long spear)),
(assign, :should_multiply, 1)
(else_try), #begin try for throwing lance
(gt, param8, 0),
(this_or_next_eq, param8, (itemkinds number of -3 throwing lance in throwing mode)), #An alternative these throwing lance checks is check if WSE operation item_get_weapon_length returns 120 on param8, since there are no other missiles that are 120 length.
...
(eq, param8, (itemkinds number of +3 throwing lance in throwing mode)),
(assign, :should_multiply, 2),
(try_end),
(gt, :should_multiply, 0),
(try_begin),
(eq, :should_multiply, 1),
#do some math on the trigger result based on whatever formula is determined for long spear/pike
(else_try),
(eq, :should_multiply, 2),
#do some math on the trigger result based on whatever formula is determined for throwing lance
(try_end),
(try_end),