Modding Resource Header

Title: How To...Create Culture Specific Battering Rams
Posted by: Seasoned Alcoholic
Modding area: Siege Engines (Battering Rams)
Required programmes: Notepad (or other text editor)
Related links: How To...Modify Siege Tower Aspects
Summary: This tutorial illustrates how to create culture specific battering rams. The vanilla RTW game actually shipped with several alternate battering rams from the default ones, so the tutorial will demonstrate how to unlock these rams and make them feature during siege battles.

Tutorial Contents:

  • Introduction
  • The Battering Rams
  • Creating Culture Specific Battering Rams
  • The End Result


What You Need:
descr_engines.txt (DE) @ \Data

Before you begin:
Make necessary backups to the text files listed above. Do this frequently as you progress through editing both files. In the case of an error (usually in the form of a CTD) for whatever reason, you will then have a working file to fall back upon if and when needed. It is a good idea to number / date / name etc your backups so that you will know which is the most latest version without confusing yourself. Only delete a backup when you are 100% convinced that this backup is no longer relevant to your latest version of the game.

Introduction

This tutorial demonstrates how to create culture specific battering rams for each culture type in RTW. Presently, all cultures share a homogenous battering ram that features during siege battles. However, vanilla RTW actually shipped with 2 additional battering ram types, as well as an alternate CAS model for the default homogenous ram.

The Battering Rams

To begin with, let's aquaint ourselves with the 3 different battering rams that shipped with RTW. Open descr_engines.txt and either scroll down to or search for (Ctrl+F) each ram type. Here are the code entries for each, and are in consecutive order:

Tortoise Ram
Code:
type                tortoise_ram
culture                all; roman
class                ram

engine_model_group    normal
engine_skeleton        tortoise_ram
engine_collision    data/models_engine/tort_ram_low_LOD.CAS
engine_model        data/models_engine/Tortram_model.CAS,            20.0
;engine_model        data/models_engine/tort_ram_med_LOD.CAS,        40.0
;engine_model        data/models_engine/tort_ram_low_LOD.CAS,        80.0
;engine_model        data/models_engine/tort_ram_very_low_LOD.CAS,    max
engine_platforms    none

engine_model_group    dying
engine_skeleton        tortoise_ram_dying
engine_model        data/models_engine/tort_ram_dying_model.CAS, max
engine_platforms    none


engine_model_group    dead
engine_model        data/models_engine/tort_ram_dying_dead.CAS, max
engine_platforms    none

engine_shadow        none

engine_radius        4
engine_length        7
engine_width        6
engine_height        3.0
engine_mass            25
engine_dock_dist    5.0
engine_mob_dist        6.3
engine_flammable    true
engine_ignition        0.8
fire_effect            engine_fire_ram_set

obstacle_shape        rectangle
obstacle_x_radius    2.2
obstacle_y_radius    5.0

engine_spo

engine_push_point    -2.5         1.0
engine_push_point    -2.5        -1.3
engine_push_point    -2.5        -3.6
engine_push_point     2.5         1.0
engine_push_point     2.5        -1.3
engine_push_point     2.5        -3.6

engine_health        150
;engine_armour        ram

attack_stat         10, 4, no, 0, 0, melee, simple, blunt
attack_stat_attr    no
Eastern Ram
Code:
type                eastern_ram
culture                eastern
class                ram

engine_model_group    normal
engine_skeleton        eastern_ram
engine_collision    data/models_engine/east_ram_low_LOD.CAS
engine_model        data/models_engine/Eastram_model.CAS,        20.0
engine_model        data/models_engine/east_ram_med_LOD.CAS,    40.0
engine_model        data/models_engine/east_ram_low_LOD.CAS,    max
engine_platforms    none

engine_model_group    dying
engine_skeleton        eastern_ram_dying
engine_model        data/models_engine/east_ram_dying.CAS,    max
engine_platforms    none

engine_model_group    dead
engine_model        data/models_engine/east_ram_dead.CAS, max
engine_platforms    none

engine_shadow        none

engine_radius        4.0
engine_length        4
engine_width        4
engine_height        3.0
engine_mass            25
engine_dock_dist    4.7
engine_mob_dist        6.7
engine_flammable    true
engine_ignition        0.8
fire_effect            engine_fire_ram_set

obstacle_shape        rectangle
obstacle_x_radius    2.2
obstacle_y_radius    5.0

engine_spo

engine_push_point    -1.0         1.6
engine_push_point    -1.0         0.0
engine_push_point    -1.0        -1.6
engine_push_point     1.0         1.6
engine_push_point     1.0         0.0
engine_push_point     1.0        -1.6

engine_health        120
;engine_armour        ram

attack_stat         10, 4, no, 0, 0, melee, simple, blunt
attack_stat_attr    no
Open Frame Ram
Code:
type                open_frame_ram
culture                all
class                ram

engine_model_group    normal
engine_skeleton        open_frame_ram
engine_collision    data/models_engine/openframe_very_low_LOD.CAS
engine_model        data/models_engine/OFRam_model.CAS,                20.0
engine_model        data/models_engine/openframe_med_LOD.CAS,        40.0
engine_model        data/models_engine/openframe_low_LOD.CAS,        80.0
engine_model        data/models_engine/openframe_very_low_LOD.CAS,    max
engine_platforms    none

engine_model_group    dying
engine_skeleton        open_frame_ram_dying
engine_model        data/models_engine/openframe_dying_model.CAS, max
engine_platforms    none

engine_model_group    dead
engine_model        data/models_engine/openframe_dying_dead.CAS, max
engine_platforms    none

engine_shadow        none

engine_radius        1.5
engine_length        3
engine_width        3
engine_height        3.0
engine_mass            25
engine_dock_dist    2.2
engine_mob_dist        3.9
engine_flammable    true
engine_ignition        0.8
fire_effect            engine_fire_ram_set

obstacle_shape        rectangle
obstacle_x_radius    2.2
obstacle_y_radius    5.0

engine_spo

engine_push_point    -0.75        -2.1
engine_push_point     0.75        -2.1
engine_push_point    -1.7        -0.2
engine_push_point     1.7        -0.2

engine_health        100
;engine_armour        ram

attack_stat         10, 4, no, 0, 0, melee, simple, blunt
attack_stat_attr    no
As mentioned, these code entries are in consecutive order, the tortoise ram being the first of the 3 in the list. You may have already noticed that under the tortoise ram entry, the culture line value is all. This suggests that each culture type featured in RTW will make use of this battering ram by default. This viewpoint is confirmed from actual siege battle experiences, as all cultures utilise the homogenous tortoise ram. It becomes clear that the game looks to the first battering ram entry and ignores the other 2.

Creating Culture Specific Battering Rams

The process of creating culture specific battering rams is relatively straightforward, as there already examples of the different RTW culture types scattered throughout the existing text files. If you're unfamiliar with the different cultures featured in RTW, here is a summary list:
  • roman
  • greek
  • eastern
  • carthaginian
  • egyptian
  • barbarian

You can specify a culture type for a battering ram in the culture line of each ram entry. A good idea is to create a new ram entry for each culture type, this way the game can refer / lookup the correct ram type during siege battles.

In this tutorial, the Romans & Greeks will use the tortoise ram, the Easterners, Carthaginians and Egyptians will use the eastern ram, and the Barbarians will use the open frame ram. You can of course change these to your personal preference once you've become familiar with the workings of the descr_engines ram entries.

Here are 6 sample entries that should replace the existing 3 ram entries:

Roman entry
Code:
type                tortoise_ram_roman
culture                roman
class                ram

engine_model_group    normal
engine_skeleton        tortoise_ram
engine_collision    data/models_engine/tort_ram_low_LOD.CAS
engine_model        data/models_engine/Tortram_model.CAS,            20.0
engine_model        data/models_engine/tort_ram_med_LOD.CAS,        40.0
engine_model        data/models_engine/tort_ram_low_LOD.CAS,        80.0
engine_model        data/models_engine/tort_ram_very_low_LOD.CAS,    max
engine_platforms    none

engine_model_group    dying
engine_skeleton        tortoise_ram_dying
engine_model        data/models_engine/tort_ram_dying_model.CAS, max
engine_platforms    none


engine_model_group    dead
engine_model        data/models_engine/tort_ram_dying_dead.CAS, max
engine_platforms    none

engine_shadow        none

engine_radius        4
engine_length        7
engine_width        6
engine_height        3.0
engine_mass            25
engine_dock_dist    5.0
engine_mob_dist        6.3
engine_flammable    true
engine_ignition        0.8
fire_effect            engine_fire_ram_set

obstacle_shape        rectangle
obstacle_x_radius    2.2
obstacle_y_radius    5.0

engine_spo

engine_push_point    -2.5         1.0
engine_push_point    -2.5        -1.3
engine_push_point    -2.5        -3.6
engine_push_point     2.5         1.0
engine_push_point     2.5        -1.3
engine_push_point     2.5        -3.6

engine_health        150
;engine_armour        ram

attack_stat         10, 4, no, 0, 0, melee, simple, blunt
attack_stat_attr    no
Greek entry
Code:
type                tortoise_ram_greek
culture                greek
class                ram

engine_model_group    normal
engine_skeleton        tortoise_ram
engine_collision    data/models_engine/tort_ram_low_LOD.CAS
engine_model        data/models_engine/Tortram_model.CAS,            20.0
engine_model        data/models_engine/tort_ram_med_LOD.CAS,        40.0
engine_model        data/models_engine/tort_ram_low_LOD.CAS,        80.0
engine_model        data/models_engine/tort_ram_very_low_LOD.CAS,    max
engine_platforms    none

engine_model_group    dying
engine_skeleton        tortoise_ram_dying
engine_model        data/models_engine/tort_ram_dying_model.CAS, max
engine_platforms    none


engine_model_group    dead
engine_model        data/models_engine/tort_ram_dying_dead.CAS, max
engine_platforms    none

engine_shadow        none

engine_radius        4
engine_length        7
engine_width        6
engine_height        3.0
engine_mass            25
engine_dock_dist    5.0
engine_mob_dist        6.3
engine_flammable    true
engine_ignition        0.8
fire_effect            engine_fire_ram_set

obstacle_shape        rectangle
obstacle_x_radius    2.2
obstacle_y_radius    5.0

engine_spo

engine_push_point    -2.5         1.0
engine_push_point    -2.5        -1.3
engine_push_point    -2.5        -3.6
engine_push_point     2.5         1.0
engine_push_point     2.5        -1.3
engine_push_point     2.5        -3.6

engine_health        150
;engine_armour        ram

attack_stat         10, 4, no, 0, 0, melee, simple, blunt
attack_stat_attr    no
Eastern entry
Code:
type                eastern_ram_eastern
culture                eastern
class                ram

engine_model_group    normal
engine_skeleton        eastern_ram
engine_collision    data/models_engine/east_ram_low_LOD.CAS
engine_model        data/models_engine/Eastram_model.CAS,        20.0
engine_model        data/models_engine/east_ram_med_LOD.CAS,    40.0
engine_model        data/models_engine/east_ram_low_LOD.CAS,    max
engine_platforms    none

engine_model_group    dying
engine_skeleton        eastern_ram_dying
engine_model        data/models_engine/east_ram_dying.CAS,    max
engine_platforms    none

engine_model_group    dead
engine_model        data/models_engine/east_ram_dead.CAS, max
engine_platforms    none

engine_shadow        none

engine_radius        4.0
engine_length        4
engine_width        4
engine_height        3.0
engine_mass            25
engine_dock_dist    5.6
engine_mob_dist        6.7
engine_flammable    true
engine_ignition        0.8
fire_effect            engine_fire_ram_set

obstacle_shape        rectangle
obstacle_x_radius    2.2
obstacle_y_radius    5.0

engine_spo

engine_push_point    -3.0         1.6
engine_push_point    -3.0         0.0
engine_push_point    -3.0        -1.6
engine_push_point     3.0         1.6
engine_push_point     3.0         0.0
engine_push_point     3.0        -1.6

engine_health        120
;engine_armour        ram

attack_stat         10, 4, no, 0, 0, melee, simple, blunt
attack_stat_attr    no
Carthaginian entry
Code:
type                eastern_ram_carthaginian
culture                carthaginian
class                ram

engine_model_group    normal
engine_skeleton        eastern_ram
engine_collision    data/models_engine/east_ram_low_LOD.CAS
engine_model        data/models_engine/Eastram_model.CAS,        20.0
engine_model        data/models_engine/east_ram_med_LOD.CAS,    40.0
engine_model        data/models_engine/east_ram_low_LOD.CAS,    max
engine_platforms    none

engine_model_group    dying
engine_skeleton        eastern_ram_dying
engine_model        data/models_engine/east_ram_dying.CAS,    max
engine_platforms    none

engine_model_group    dead
engine_model        data/models_engine/east_ram_dead.CAS, max
engine_platforms    none

engine_shadow        none

engine_radius        4.0
engine_length        4
engine_width        4
engine_height        3.0
engine_mass            25
engine_dock_dist    5.6
engine_mob_dist        6.7
engine_flammable    true
engine_ignition        0.8
fire_effect            engine_fire_ram_set

obstacle_shape        rectangle
obstacle_x_radius    2.2
obstacle_y_radius    5.0

engine_spo

engine_push_point    -3.0         1.6
engine_push_point    -3.0         0.0
engine_push_point    -3.0        -1.6
engine_push_point     3.0         1.6
engine_push_point     3.0         0.0
engine_push_point     3.0        -1.6

engine_health        120
;engine_armour        ram

attack_stat         10, 4, no, 0, 0, melee, simple, blunt
attack_stat_attr    no
Egyptian entry
Code:
type                eastern_ram_egyptian
culture                egyptian
class                ram

engine_model_group    normal
engine_skeleton        eastern_ram
engine_collision    data/models_engine/east_ram_low_LOD.CAS
engine_model        data/models_engine/Eastram_model.CAS,        20.0
engine_model        data/models_engine/east_ram_med_LOD.CAS,    40.0
engine_model        data/models_engine/east_ram_low_LOD.CAS,    max
engine_platforms    none

engine_model_group    dying
engine_skeleton        eastern_ram_dying
engine_model        data/models_engine/east_ram_dying.CAS,    max
engine_platforms    none

engine_model_group    dead
engine_model        data/models_engine/east_ram_dead.CAS, max
engine_platforms    none

engine_shadow        none

engine_radius        4.0
engine_length        4
engine_width        4
engine_height        3.0
engine_mass            25
engine_dock_dist    5.6
engine_mob_dist        6.7
engine_flammable    true
engine_ignition        0.8
fire_effect            engine_fire_ram_set

obstacle_shape        rectangle
obstacle_x_radius    2.2
obstacle_y_radius    5.0

engine_spo

engine_push_point    -3.0         1.6
engine_push_point    -3.0         0.0
engine_push_point    -3.0        -1.6
engine_push_point     3.0         1.6
engine_push_point     3.0         0.0
engine_push_point     3.0        -1.6

engine_health        120
;engine_armour        ram

attack_stat         10, 4, no, 0, 0, melee, simple, blunt
attack_stat_attr    no
Barbarian entry
Code:
type                open_frame_ram
culture                barbarian
class                ram

engine_model_group    normal
engine_skeleton        open_frame_ram
engine_collision    data/models_engine/openframe_very_low_LOD.CAS
engine_model        data/models_engine/OFRam_model.CAS,                20.0
engine_model        data/models_engine/openframe_med_LOD.CAS,        40.0
engine_model        data/models_engine/openframe_low_LOD.CAS,        80.0
engine_model        data/models_engine/openframe_very_low_LOD.CAS,    max
engine_platforms    none

engine_model_group    dying
engine_skeleton        open_frame_ram_dying
engine_model        data/models_engine/openframe_dying_model.CAS, max
engine_platforms    none

engine_model_group    dead
engine_model        data/models_engine/openframe_dying_dead.CAS, max
engine_platforms    none

engine_shadow        none

engine_radius        1.5
engine_length        3
engine_width        3
engine_height        3.0
engine_mass            25
engine_dock_dist    2.6
engine_mob_dist        3.9
engine_flammable    true
engine_ignition        0.8
fire_effect            engine_fire_ram_set

obstacle_shape        rectangle
obstacle_x_radius    2.2
obstacle_y_radius    5.0

engine_spo

engine_push_point    -2.5         1.0
engine_push_point    -2.5        -1.5
engine_push_point     2.5         1.0
engine_push_point     2.5        -1.5

engine_health        100
;engine_armour        ram

attack_stat         10, 4, no, 0, 0, melee, simple, blunt
attack_stat_attr    no
Notice how the name (type) lines have been modified to help the game distinguish between each ram's culture category. There's no need to create any additonal enum entries for these new ram names, as apparently none exist.

Other areas that have changed from the vanilla entries include the removal of the semicolons (;) from multiple Roman & Greek ram CAS model entries. This unlocks a much more detailed tortoise ram model than the existing vanilla one.

Additionally, you may have noticed that the engine_push_point and engine_dock_dist entries for the Eastern, Carthaginian, Egyptian and Barbarian rams have been modified. This is to reflect changes in the ram model, and characteristics of each ram type. These modifcations were implemented after numerous testing and tweaking in custom battles to locate suitable values for these entries.

The End Result

Tortoise Ram


Eastern Ram


Open Frame Ram