LSP Kit Combat Project Age of Machinery [Released!]

Users who are viewing this thread

HyperCharge

Section Moderator
Hi there, i was tried that hardly. But cause of some bugs, I was abandoned it. This code could make mods more impressive including my. I'm bringing back to work myself.

Progress( = Done, = Will be added, = Partly done):

Porting artillery
Hunting
Adding artillery to sieges

DONE



Features:

  • Artillery
    • field artillery
      Options for building are in the camp menu, you need engineers for catapults.
      Engineers are new upgrades of "swadian sharpshooter", "vaegir marksman", "rhodok sharpshooter" and "watchmen".
      Use backspace in battle to access the artillery GUI.

    • siege artillery
      WARNING: Not in every sieges.
      Due lack of scene building, the only castles that features artillery is Ismirala, Grunwalder and Jelbegi Castle.

  • Hunting
    Herds can be found in forests.
    • Deer Hunting
    • Boar Hunting
  • Source
    • Its included in the compiled module that I have released.

Artillery:
Probably most characteristic for this mod and therefore name giving.

Field Artillery:
This mod is contains a large variety here. Artillery can be build from different engineers of the factions. The numbers of siege engines in battle is limited to 5 per team.

The factions:

Swadians:
Swadian engineers are the best ones in Calradia. With their advanced technology, they are frightened by their enemies.
They are famous for their trebuchets.

Vaegirs:
Vaegir craftsmen are building mangonels.

Rhodoks:
Rhodoks are quite similar to Vaegirs. Average engineers. Using mangonels mostly.

Nords, Khergits and Sarranids:
Weak artillery. Those factions use mercenary engineers in their armies who build onagers.

The artillery:
Be careful to your soldiers, every single enemy projectile can kill around 6-10 if it can make it. So, field artillery battles are very dangerous. You can give a lot of casualties. That's also improves the strategy  :fruity:

Trebuchets:
Very effective. Longest reach and largest destruction. Long reloading time and big map speed penalty.
o3rdro.jpg

Mangonels:
Long reach and good destruction. Averange reloading time and big map speed penality.
Zk75dA.jpg

Onager:
Averange reach and destruction. Fast reloading and small map speed penality.
YkrdWa.jpg

The projectiles:

Rocks:
The standard ammonition. Round rocks.

Advantage:
As the rock continues to bounce near the ground after hitting it, it can fly through multiple rows of enemies.

Disadvantage:
Quite small area damaged.
NArLJL.jpg

burning tar/pitch:
Barrels of thermal weapons.

Advantage:
Area damage. Big causalities, if a close formation is hit.

Disadvantage:
Quite inaccurate and likely to miss the target.
pzB5Mo.jpg

Swadian fire:
Balls of cloth in burning, liquid substance. Greek fire in reality.
Effect is similar to burning tar/pitch, but more destructive. A secret weapon of the Swadians only.

1vMpB5.jpg


Control:
Artillery is controlled using a modified battle interface.
L1Q5Ob.jpg

Siege Artillery:
Not yet done and not sure if they will be.

Problems:
All castle scenes would have to be modified.
Defenders have usually little space for those big engines.
A collision system would have to be created
Building destruction is hard to make I think. I couldn't even give a hp to wall.  :facepalm:



Other pictures;

vnZWbm.jpg

dkXgPr.jpg

pBEJWq.jpg

lvE5WE.jpg

pBEJGq.jpg

4b0yaY.jpg

knEdOv.jpg

VvEWrR.jpg

m1EAo2.jpg

If you want to use it in your mods, give credits to Highlander. He is the man who created this beauty. I just ported it to Warband.


Download :
http://www.mediafire.com/download/cguu8crkpt79uc6/Project+Age+of+Machinery.rar

https://www.kirmiziperfect.com/mount-blade-warband-mods/project-age-of-machinery/



Tutorial to add this to sieges;

https://forums.taleworlds.com/index.php/topic,344460.msg8323396.html#msg8323396



Credits;

Highlander( for releasing age of machinery code about 8 years ago.  :smile:), mtarini( I used his windy flora shader to make the game look more real  :fruity:)
 
Thanks.

When adding this to another vanilla module system, it never gives local variable warnings. Because there is no variables.txt in vanilla. That's why we need to do that manually.

Code:
("prepare_artillery",
  [
        (set_fixed_point_multiplier,100),
        (try_for_range,":scene_prop","spr_art_mangonel","spr_cannonball"),
        (scene_prop_get_num_instances,":num_instances",":scene_prop"),
        (try_for_range,":instance_no",0,":num_instances"),
         (scene_prop_get_instance,":cannon_instance",":scene_prop",":instance_no"),
	 (item_set_slot,":cannon_instance",205,0),
	 (neg|all_enemies_defeated,2),
         (neg|main_hero_fallen,0),
         (get_player_agent_no,":player_agent"),
         (agent_get_team,":players_team",":player_agent"),
	 (item_get_slot,":cannon_team",":cannon_instance",204),
	 (this_or_next|neq,":cannon_team",":players_team"),
	 (eq,"$artillery_firing",1),
         (item_get_slot,":interrupt_time",":cannon_instance",206),
	 (le,":interrupt_time",50),
         (prop_instance_get_position,pos1,":cannon_instance"),
	 (assign,":goon",0),
	 (try_for_agents,":agent"),
	   (agent_is_alive,":agent"),
	   (agent_get_troop_id,":troop_id",":agent"),
	   (agent_slot_eq,":agent",13,":cannon_instance"),
	   (agent_get_position,pos3,":agent"),
	   (get_distance_between_positions,":distance",pos3,pos1),
	   (lt,":distance",1000),
	   (assign,":goon",1),
	 (try_end),
	 (eq,":goon",1),
         (item_get_slot,":team",":cannon_instance",204),
         (call_script,"script_team_get_average_position_of_enemies_infantry",":team",":cannon_instance"),
	 (copy_position,pos2,pos0),
	 (get_distance_between_positions,":distance",pos2,pos1),
	 (try_begin),
	   (gt,":distance",2000),#at least 20 metres distance from cannon
	   (call_script,"script_position_face_position",pos1,pos2),
	   (try_begin),
	     (gt,"$face_degrees",180),
	     (val_sub,"$face_degrees",360),
	   (try_end),
	   (store_mul,":rotation_time","$face_degrees",7),
	   (try_begin),
	     (lt,":rotation_time",0),
	     (val_mul,":rotation_time",-1),
	   (try_end),
	   (try_begin),
	     (neg|is_between,"$face_degrees",-2,2),
	     (prop_instance_animate_to_position,":cannon_instance",pos1,":rotation_time"),
	     (try_begin),
	      (eq,":scene_prop","spr_art_onager"),
	      (scene_prop_get_instance,":gear_instance","spr_art_onager_gear",":instance_no"),
	      (prop_instance_animate_to_position,":gear_instance",pos1,":rotation_time"),
	     (else_try),
	      (eq,":scene_prop","spr_art_trebuchet"),
	      (scene_prop_get_instance,":gear_instance","spr_art_trebuchet_gear",":instance_no"),
	      (prop_instance_animate_to_position,":gear_instance",pos1,":rotation_time"),
	     (else_try),
	      (eq,":scene_prop","spr_art_mangonel"),
	      (scene_prop_get_instance,":gear_instance","spr_art_mangonel_gear",":instance_no"),
	      (prop_instance_animate_to_position,":gear_instance",pos1,":rotation_time"),
	      (scene_prop_get_instance,":gear_instance","spr_art_mangonel_sails",":instance_no"),
	      (prop_instance_animate_to_position,":gear_instance",pos1,":rotation_time"),
	     (try_end),
	   (try_end),
#	   (assign,reg1,"$face_degrees"),
#	   (display_message,"@degrees: {reg1}"),
	   (le,":interrupt_time",0),
	   (is_between,"$face_degrees",-5,5),
	   (item_set_slot,":cannon_instance",205,1),
	 (try_end),
	(try_end),
	(try_end),
  ]),

(try_for_agents,":agent"),
  (agent_is_alive,":agent"),
  (agent_get_troop_id,":troop_id",":agent"),
  (agent_slot_eq,":agent",13,":cannon_instance"),
  (agent_get_position,pos3,":agent"),
  (get_distance_between_positions,":distance",pos3,pos1),
  (lt,":distance",1000),
  (assign,":goon",1),
(try_end),

I think we have to remove agent_get_troop_id. It isn't used by anything.  :smile:

MLk7kN.png

But there's have also ":cannon_no" variable that it is not used in artillery_spawn scripts. I have done the same thing to these scripts too. Now, we need solve the others.  :roll: I will update the source when build module is cleaned.
 
I noticed that if I remove the cannon_no variables, it spawns some catapults itself even i don't buy it. So they will stay, but here is the problem. Giving damage to necessary agent;

Code:
("agent_deliver_damage_to_agent",
  [
      (store_script_param, ":agent_deliverer", 1),
      (store_script_param, ":agent", 2),
      (store_script_param, ":damage", 3),
      (store_agent_hit_points,":health",":agent",1),
      (val_sub,":health",":damage"),
      (try_begin),
        (lt,":health",0),
	(agent_set_hit_points,":agent",0,1),
        (agent_deliver_damage_to_agent,":agent_deliverer",":agent", 250),
      (else_try),
	(agent_set_hit_points,":agent",":health",1),
      (try_end),
  ]),

("projectile_physics_field",
  [
      (set_fixed_point_multiplier,100),
      (try_for_range,":ammo","spr_cannonball","spr_cannonball_start_position"),
      (scene_prop_get_num_instances,":num_cannonballs",":ammo"),
      (try_for_range,":instance_no",0,":num_cannonballs"),
      (scene_prop_get_instance,":instance", ":ammo", ":instance_no"),
      (item_get_slot,":moving",":instance",216),
      (eq,":moving",1),
      (item_get_slot,":time",":instance",215),
      (prop_instance_get_position,pos1,":instance"),
      (val_mul,":time",360),
      (val_div,":time",-40),
      (position_rotate_x,pos1,":time"),
      (position_rotate_y,pos1,":time"),
      (try_for_agents,":agent"),
        (agent_is_alive,":agent"),
(agent_get_position,pos2,":agent"),
(position_move_z,pos2,100),
(position_transform_position_to_local,pos3,pos1,pos2),
(position_get_x,":mad:_value",pos3),
(position_get_y,":y_value",pos3),
(position_get_z,":z_value",pos3),
(try_begin),
  (le,":mad:_value",50),
  (ge,":mad:_value",-50),
  (try_begin),
    (le,":z_value",100),
    (ge,":z_value",-100),
    (try_begin),
      (le,":y_value",200),
      (ge,":y_value",-200),
      (agent_set_hit_points,":agent",0),
      (call_script,"script_get_cannon_instance",":instance"),
      (assign,":stop",0),
      (try_for_agents,":agent_deliverer"),
      (eq,":stop",0),
      (agent_slot_eq,":agent_deliverer",13,reg0),
      (agent_deliver_damage_to_agent,":agent_deliverer",":agent"),
      (assign,":stop",1),
      (try_end),
      (eq,":stop",0),
      (agent_deliver_damage_to_agent,":agent",":agent"),
    (try_end),
  (try_end),
(try_end),
      (try_end),
      (position_get_z,":pos1z",pos1),
      (copy_position,pos2,pos1),
      (position_set_z,pos2,10000),
      (position_set_z_to_ground_level,pos2),
      (position_get_z,":pos2z",pos2),
      (val_sub,":pos1z",":pos2z"),
      (try_begin),
        (try_begin),
  (le,":pos1z",100),
          (particle_system_burst, "psys_cannon_ground_hit", pos1, 3),
          (particle_system_burst, "psys_cannon_ground_hit_b", pos1, 3),
(try_end),
(le,":pos1z",40),
        (item_get_slot,":z_direction",":instance",214),
        (item_get_slot,":time",":instance",215),
(store_mul,":gravity",":time","$gravity_used"),
(val_div,":gravity",5),
(val_sub,":z_direction",":gravity"),
(le,":z_direction",0),
#        (val_mul,":z_direction",2),
        (val_div,":z_direction",-3),
        (store_random_in_range,reg1,0,3),
        (val_add,reg1,"snd_groundhit1"),
        (play_sound,reg1),
(try_begin),
          (eq,":ammo","spr_cannonball"),
  (try_begin),
  (le,":z_direction",80),
  (item_set_slot,":instance",216,0),
  (position_set_z,pos1,10000),
  (position_set_z_to_ground_level,pos1,10000),
  (position_move_z,pos1,5),
          (prop_instance_animate_to_position,":instance",pos1,1),
  (else_try),
  (scene_prop_get_instance,":start_instance","spr_cannonball_start_position",":instance_no"),
  (prop_instance_animate_to_position,":start_instance",pos1,1),
          (item_get_slot,":mad:_direction",":instance",212),
          (item_get_slot,":y_direction",":instance",213),
  (val_div,":mad:_direction",3),
  (val_div,":y_direction",3),
  (val_mul,":mad:_direction",2),
  (val_mul,":y_direction",2),
  (item_set_slot,":instance",212,":mad:_direction"),
  (item_set_slot,":instance",213,":y_direction"),
  (item_set_slot,":instance",214,":z_direction"),
  (item_set_slot,":instance",215,0),
          (call_script,"script_force_movement",":instance"),
  (try_end),
        (else_try),
          (ge,":ammo","spr_rock_ammo"),
  (item_set_slot,":instance",216,0),
  (position_set_z,pos1,10000),
  (position_set_z_to_ground_level,pos1),
  (position_move_z,pos1,5),
          (prop_instance_animate_to_position,":instance",pos1,1),
  (call_script,"script_cannon_explosion_effects",pos1),
          (store_random_in_range,reg1,0,4),
          (val_add,reg1,"snd_cannon_shot1"),
          (play_sound,reg1),
(try_begin),
          (eq,":ammo","spr_rock_ammo"),
  (assign,":max_damage",1600000),
  (else_try),
  (assign,":max_damage",3200000),
  (try_end),
  (try_for_agents,":agent"),
    (agent_is_alive,":agent"),
    (agent_get_position,pos2,":agent"),
    (get_distance_between_positions,":distance",pos1,pos2),
    (is_between,":distance",1,800),
    (store_div,":damage",":max_damage",":distance"),
    (val_div,":damage",":distance"),
    (call_script,"script_get_cannon_instance",":instance"),
    (assign,":stop",0),
    (try_for_agents,":agent_deliverer"),
      (eq,":stop",0),
      (agent_slot_eq,":agent_deliverer",13,reg0),
      (call_script,"script_agent_deliver_damage_to_agent",":agent_deliverer",":agent",":damage"),
      (assign,":stop",1),
    (try_end),
    (eq,":stop",0),
    (call_script,"script_agent_deliver_damage_to_agent",":agent",":agent",":damage"),
  (try_end),
(try_end),

      (else_try),
#        (val_add,"$counter",1),
# (gt,"$counter",4),
# (assign,"$counter",0),
        (item_get_slot,":time",":instance",215),
(val_mul,":time",10),
(call_script,"script_get_position_delta_by_time",":time",":instance"),
(val_div,":time",10),
# (val_add,":gravity",490),
(copy_position,3,1),
(scene_prop_get_instance,":start_instance","spr_cannonball_start_position",":instance_no"),
(prop_instance_get_position,pos5,":start_instance"),
(position_get_x,":instance_x",pos5),
(position_get_y,":instance_y",pos5),
(position_get_z,":instance_z",pos5),
(position_get_x,":pos0_x",pos9),
(position_get_y,":pos0_y",pos9),
(position_get_z,":pos0_z",pos9),
(val_add,":instance_x",":pos0_x"),
(val_add,":instance_y",":pos0_y"),
(val_add,":instance_z",":pos0_z"),
(position_set_x,pos3,":instance_x"),
(position_set_y,pos3,":instance_y"),
(position_set_z,pos3,":instance_z"),
(val_mul,":time",360),
(val_div,":time",40),
(position_rotate_x,pos3,":time"),
(position_rotate_y,pos3,":time"),
        (prop_instance_animate_to_position,":instance",pos3,15),
      (try_end),
      (try_end),
      (try_end),
  ]),

I detected a new bug, when projectile hits someone, it kills the killer too  :meh:;

Yr4Xak.jpg

 
Sorry , it's maybe a little bit off topic , but why don't you simply use the spawn_missile command?
I'm far to be a modder but it's resolve the collision stuff  and maybe the physic part too.
 
Hurleur said:
Sorry , it's maybe a little bit off topic , but why don't you simply use the spawn_missile command?
I'm far to be a modder but it's resolve the collision stuff  and maybe the physic part too.

I think its not necessary, because projectiles can fly and hit. But real problem is hitting part. When hit someone, It mostly kills player and the killer with the agent that hit by projectile.
 
Not sure how you have this set up, but have you thought about using exploding projectiles? They seem to work very nice, you can control the damage radius.
I have been having a blast playing with this concept.
I might have to make the radius less or the damage less 22 guys with 2 cannon and 20 shot took out an army of 297 with 4 of us surviving  :lol:
just using a musket for my cannon right now

the dead from 1 shot
9jzjh1.jpg
 
Lor Dric said:
Not sure how you have this set up, but have you thought about using exploding projectiles? They seem to work very nice, you can control the damage radius.
I have been having a blast playing with this concept.
I might have to make the radius less or the damage less 22 guys with 2 cannon and 20 shot took out an army of 297 with 4 of us surviving  :lol:
just using a musket for my cannon right now

the dead from 1 shot
9jzjh1.jpg

Was about to suggest this myself

You can use the grenade script ScreamingCommie fixed for the projectile explosion and damage when it connects with the ground.
 
Up.

The thing that I said "I'll try something" didn't work. So, we have to put the grenade code to this script. Also, there is a second script that handles sieges like this script. But we will come to that later.

Code:
("projectile_physics_field",
  [
      (set_fixed_point_multiplier,100),
      (try_for_range,":ammo","spr_cannonball","spr_cannonball_start_position"),
      (scene_prop_get_num_instances,":num_cannonballs",":ammo"),
      (try_for_range,":instance_no",0,":num_cannonballs"),
       (scene_prop_get_instance,":instance", ":ammo", ":instance_no"),
       (item_get_slot,":moving",":instance",216),
       (eq,":moving",1),
       (item_get_slot,":time",":instance",215),
       (prop_instance_get_position,pos1,":instance"),
       (val_mul,":time",360),
       (val_div,":time",-40),
       (position_rotate_x,pos1,":time"),
       (position_rotate_y,pos1,":time"),
       (try_for_agents,":agent"),
         (agent_is_alive,":agent"),
    (agent_get_position,pos2,":agent"),
    (position_move_z,pos2,100),
    (position_transform_position_to_local,pos3,pos1,pos2),
    (position_get_x,":x_value",pos3),
    (position_get_y,":y_value",pos3),
    (position_get_z,":z_value",pos3),
    (try_begin),
      (le,":x_value",50),
      (ge,":x_value",-50),
      (try_begin),
        (le,":z_value",100),
        (ge,":z_value",-100),
        (try_begin),
          (le,":y_value",200),
          (ge,":y_value",-200),
          (agent_set_hit_points,":agent",0),
          (call_script,"script_get_cannon_instance",":instance"),
          (assign,":stop",0),
          (try_for_agents,":agent_deliverer"),
          (eq,":stop",0),
          (agent_slot_eq,":agent_deliverer",13,reg0),
          (agent_deliver_damage_to_agent,":agent_deliverer",":agent"),
          (assign,":stop",1),
          (try_end),
          (eq,":stop",0),
          (agent_deliver_damage_to_agent,":agent",":agent"),
        (try_end),
      (try_end),
    (try_end),
       (try_end),
       (position_get_z,":pos1z",pos1),
       (copy_position,pos2,pos1),
       (position_set_z,pos2,10000),
       (position_set_z_to_ground_level,pos2),
       (position_get_z,":pos2z",pos2),
       (val_sub,":pos1z",":pos2z"),
       (try_begin),
        (try_begin),
     (le,":pos1z",100),
          (particle_system_burst, "psys_cannon_ground_hit", pos1, 3),
          (particle_system_burst, "psys_cannon_ground_hit_b", pos1, 3),
   (try_end),
   (le,":pos1z",40),
        (item_get_slot,":z_direction",":instance",214),
        (item_get_slot,":time",":instance",215),
   (store_mul,":gravity",":time","$gravity_used"),
   (val_div,":gravity",5),
   (val_sub,":z_direction",":gravity"),
   (le,":z_direction",0),
#        (val_mul,":z_direction",2),
        (val_div,":z_direction",-3),
        (store_random_in_range,reg1,0,3),
        (val_add,reg1,"snd_groundhit1"),
        (play_sound,reg1),
   (try_begin),
          (eq,":ammo","spr_cannonball"),
     (try_begin),
      (le,":z_direction",80),
      (item_set_slot,":instance",216,0),
      (position_set_z,pos1,10000),
      (position_set_z_to_ground_level,pos1,10000),
      (position_move_z,pos1,5),
           (prop_instance_animate_to_position,":instance",pos1,1),
     (else_try),
      (scene_prop_get_instance,":start_instance","spr_cannonball_start_position",":instance_no"),
      (prop_instance_animate_to_position,":start_instance",pos1,1),
           (item_get_slot,":x_direction",":instance",212),
           (item_get_slot,":y_direction",":instance",213),
      (val_div,":x_direction",3),
      (val_div,":y_direction",3),
      (val_mul,":x_direction",2),
      (val_mul,":y_direction",2),
      (item_set_slot,":instance",212,":x_direction"),
      (item_set_slot,":instance",213,":y_direction"),
      (item_set_slot,":instance",214,":z_direction"),
      (item_set_slot,":instance",215,0),
           (call_script,"script_force_movement",":instance"),
     (try_end),
        (else_try),
          (ge,":ammo","spr_rock_ammo"),
     (item_set_slot,":instance",216,0),
     (position_set_z,pos1,10000),
     (position_set_z_to_ground_level,pos1),
     (position_move_z,pos1,5),
          (prop_instance_animate_to_position,":instance",pos1,1),
     (call_script,"script_cannon_explosion_effects",pos1),
          (store_random_in_range,reg1,0,4),
          (val_add,reg1,"snd_cannon_shot1"),
          (play_sound,reg1),
    (try_begin),
           (eq,":ammo","spr_rock_ammo"),
      (assign,":max_damage",1600000),
     (else_try),
      (assign,":max_damage",3200000),
     (try_end),
     (try_for_agents,":agent"),
       (agent_is_alive,":agent"),
       (agent_get_position,pos2,":agent"),
       (get_distance_between_positions,":distance",pos1,pos2),
       (is_between,":distance",1,800),
       (store_div,":damage",":max_damage",":distance"),
       (val_div,":damage",":distance"),
       (call_script,"script_get_cannon_instance",":instance"),
       (assign,":stop",0),
       (try_for_agents,":agent_deliverer"),
          (eq,":stop",0),
          (agent_slot_eq,":agent_deliverer",13,reg0),
          (call_script,"script_agent_deliver_damage_to_agent",":agent_deliverer",":agent",":damage"),
          (assign,":stop",1),
       (try_end),
       (eq,":stop",0),
       (call_script,"script_agent_deliver_damage_to_agent",":agent",":agent",":damage"),
     (try_end),
   (try_end),
       (else_try),
#        (val_add,"$counter",1),
#   (gt,"$counter",4),
#   (assign,"$counter",0),
        (item_get_slot,":time",":instance",215),
   (val_mul,":time",10),
   (call_script,"script_get_position_delta_by_time",":time",":instance"),
   (val_div,":time",10),
#   (val_add,":gravity",490),
   (copy_position,3,1),
   (scene_prop_get_instance,":start_instance","spr_cannonball_start_position",":instance_no"),
   (prop_instance_get_position,pos5,":start_instance"),
   (position_get_x,":instance_x",pos5),
   (position_get_y,":instance_y",pos5),
   (position_get_z,":instance_z",pos5),
   (position_get_x,":pos0_x",pos9),
   (position_get_y,":pos0_y",pos9),
   (position_get_z,":pos0_z",pos9),
   (val_add,":instance_x",":pos0_x"),
   (val_add,":instance_y",":pos0_y"),
   (val_add,":instance_z",":pos0_z"),
   (position_set_x,pos3,":instance_x"),
   (position_set_y,pos3,":instance_y"),
   (position_set_z,pos3,":instance_z"),
   (val_mul,":time",360),
   (val_div,":time",40),
   (position_rotate_x,pos3,":time"),
   (position_rotate_y,pos3,":time"),
        (prop_instance_animate_to_position,":instance",pos3,15),
       (try_end),
      (try_end),
      (try_end),
  ]),
 
Well, I've found how to add this to sieges. Its a little boring.  :grin:

I will not add it to all of sieges that game have. For the nostalgia, I will only add to Ismirala, Grunwalder and Jelbegi Castles.  :smile:

But with the tutorial I will give, you can add it yourself.  :wink:



I'm glad to inform you about progress, I have added the hunting. Just need a few days to add this to Jelbegi and Grunwalder Castles. It will be shared very very soon. By the way, I'm looking for any bugs that could break the game. I havent found yet and I won't find it probably.
 
Great job HyperCharge!
It really looks fantastic, can't wait to add it to my own sixteenth century mod!

Two questions:
1) Will it be possible to give artillery to the AI?
2) How hard would it be to change the trajectory from parabolic (like an onager shot) to more or less straight (like a cannon shot)?
 
Nikephoros said:
Great job HyperCharge!
It really looks fantastic, can't wait to add it to my own sixteenth century mod!

Two questions:
1) Will it be possible to give artillery to the AI?
2) How hard would it be to change the trajectory from parabolic (like an onager shot) to more or less straight (like a cannon shot)?

Thanks!

1) Yes the AI will use it too.
2) I don't know, sorry. :smile:
 
Nikephoros said:
2) How hard would it be to change the trajectory from parabolic (like an onager shot) to more or less straight (like a cannon shot)?
By increasing the missiles initial velocity?!
Btw, the trajectory is only parabolic if there's no friction.
 
HarryPham123 said:
can i use this for cannon  :?:

Maybe changing the flying axis and changing the catapult model with cannon could work. Jezze was done this as I remember.

By the way, I added it to Jelbegi and Ismirala Castles, I will add it to Grunwalder Castle too. So it will be released soon.
 
Back
Top Bottom