# NOTE:

It is HEAVILY recommended that you use this mod along with my Smart Marines mod, which the MVP explicitly has support for, if you don’t, then marine spawning vehicles will fall back to using the awful default ZDoom marines instead. Do NOT report any bugs that involve not loading the MVP along with the marines. Any mentions of marines from now on will be about my own marines.

# Description:

The credits for every asset used on this pack can be found inside Credits.txt.

The repository can be found here: https://github.com/inkoalawetrust/Military-Vehicles-Pack/

If you have any issues with the pack, you can put them on the issue tracker: https://github.com/inkoalawetrust/Military-Vehicles-Pack/issues

This mod is a pack of different military vehicle NPCs, with all vehicle sprites made by me, all of the included vehicles are also fully coded and have different and unique behavior, along with some behaviors shared by all vehicles. The mod is meant to be used as a resource for modders and mappers to be able to integrate and use in their projects. Though you are free to load the MVP and Smart Marine mod along with any map or mod, and spawn in friendly and enemy vehicles and marines through the console for shits and giggles. Which is what I myself sometimes do for fun.

## Showcase videos:

The following are showcase videos for each of the vehicles that are part of the Military Vehicles Pack.

### Army Car: https://youtu.be/1droRFw7LEo
Army Truck: TBD

# How to use the vehicles:

To use the vehicles, you can simply load them as a resource in Ultimate Doom Builder, make sure to also load GZDoom’s gzdoom.pk3 file as a resource as well, and to check the “Exclude this resource from testing parameters” checkbox.

To use the user variables included with the vehicles, follow this guide.

# Vehicle behaviors and variables:

## Shared:

These are the behaviors and user variables that all of the vehicles share, unless otherwise specified.

### Giving up on enemies:

Vehicles can eventually give up on chasing enemies, instead of endlessly chasing them like normal monsters do, they will lose interest in enemies that are out of sight for long enough, and the enemy becoming visible again will reset the timer.

### Headlights:

Vehicles are able to turn their headlights on if the sector they are currently in is too dark (Has a light level of 104 or lower.), and will turn off once the cars’ location is bright enough again. The headlights use dynamic spotlights, so dynamic lighting must be on for there to be any visible effect aside from the vehicle sprites becoming brighter in the dark.

### Keeping away from enemies:

Vehicles are able to run away from enemies that have gotten too close to the vehicle. They can also keep a certain amount of distance from ANY enemy that is too close.

Vehicles will also sometimes stop for a while if they are far enough from any enemies, and just let their turrets do the work. Vehicles will begin moving again after either enough time has passed, or if an enemy has gotten too close to the vehicle.

### User variables:

User_NoHeadlights: Disables the headlight mechanic for the particular vehicle.

User_RetreatDistance: Controls how much of a distance the vehicle will keep from enemies. Default is 768 map units. Negative values disable retreating (But doesn’t disable running from powerful ones and the likes.)

User_ChaseTime: How long the vehicle will chase it’s target while it’s out of sight, before giving up on it. Default value is 17. Negative values make the vehicle chase it’s target forever, like normal monsters.

### Prop user variables:

User_Destructible: If on, the vehicle (And any turrets on it by extension) will become destructible, the prop versions of each vehicle have the exact same health amounts and damage factors as the main NPC versions.

User_NoHeadlights: This flag has a special usage for props, if turned on, the vehicle just has its’ headlights off, period. No dynamic updating based on light level (Since nobody is inside to turn them on and off.). By default the headlights are on (To avoid confusion from the variables’ name), you have to set this to true to turn them off. It can also be dynamically turned on and off with SetUserVariable(), to turn the lights on and off.

User_IdleSound: Makes the empty vehicle play the’ idle engine sound that it plays in its’ Spawn state.

## Army Car:

Class name: MVP_ArmyCar

Editor name: Army Car

Editor folder: Vehicles/Army Car

Editor number: 17000

The army car is the first and second weakest vehicle in the pack, its’ only attacks are the ability for it to drop marines and stun enemies with its’ pain ray. The design of the car is based on the Mowag Eagle II.

These are behaviors and features that are exclusive to the army car.

### Pain Ray:

Class name: MVP_PainRay

The Army Car has an optional pain ray turret that is able to stun enemies by making them enter their Pain state*.It will not affect monsters/NPCs friendly to the car. For players, it works by slowing them down on top of making them enter their pain state. This is unique in that it makes the car the only vehicle in the pack to not have a way to directly kill enemies. Enemy marines that are in range of the target zone will begin to run away from it as it charges up, like they do with grenades.

The pain ray is based in function and design to the Active Denial System.

*More specifically, it uses the “Microwave” damage type to hurt enemies, which allows you to make custom actors with a Pain.Microwave state, if you want a pain state specific to the pain ray. Also, it does not work on enemies with over 400 HP.

### Marines:

Note: Read the note on top of the documentation if you haven’t already.

The Army Car has the ability to deploy 3 marines (Excluding the driver.), once the car has dropped its’ marines (And if it has no pain ray currently.), it will retreat from all enemies. Otherwise, it only retreats if the enemy is too close, or is too powerful. (Has lots’ of health, is large, or is a marine or player on a turret.)

If the car is patrolling, and is also set to not follow any enemies it finds, then this will also make it refuse to deploy marines, this can be used to make scripted events with the cars, where they drive in to a location and drop marines, without them dropping the marines prematurely the moment they see an enemy.

### Supplies:

The most unique feature of the Army Car, is that it has the ability to carry supplies that the player can use, those can include ammunition, health, and armor. To get supplies from an Army Car, you can simply walk up to it and press use, which will also make the car pause for two seconds so you don’t have to chase it around. You cannot use supplies from enemy cars.

#### Stuff relevant to modders:

In addition to the above, you can also check out the code for this feature on the Used() virtual function of the Army Car, at /ZScript/Vehicles/Army Car/ArmyCar.zsc, where there is information on how to make additional supply types for the car to be able to drop, or modify the existing ones, for your projects. Such as to make the cars drop custom ammo. Also, you will need to manually apply any changes to the supply system on the prop version of the car (MVP_ArmyCarProp) as well. Preferably by making the changes on the NPC, and replacing the copy of the supply system code on the prop class with your new version.

Yes, I tried getting rid of this code duplication, no, it can’t be gotten rid off without getting rid of the User_SupplyType and User_SupplyAmount user variables.

### Car props:

The car also comes with different props that you can place down on the map as decorations.

#### Army Car (Prop):

Class name: MVP_ArmyCarProp

Editor name: Army Car (Prop)

Editor folder: Vehicles/Army Car

Editor number: 17001

The prop version of the army car behaves mostly like the normal NPC version, except that it doesn’t move around of course, since nobody’s inside. More info is on the Prop user variables section.

#### Army Car (Wreck):

Class name: MVP_ArmyCarWreck

Editor name: Army Car (Wreck)

Editor folder: Vehicles/Army Car

Editor number: 17002

This is a pre-destroyed version of the army car, the same one that occurs when the car is destroyed normally. None of the user variables on this actor do anything.

#### Pain Ray (Wreck):

Class name: MVP_PainRayWreck

Editor name: Pain Ray (Wreck)

Editor folder: Vehicles/Army Car

Editor number: 17003

This is also a pre-destroyed version of the pain ray the car optionally carries, it also sparks, just like the normal version of the pain ray does. None of the user variables on this actor do anything. Except for User_NoSparks.

#### Army Car (Ruin):

Class name: MVP_ArmyCarRuin

Editor name: Army Car (Ruin)

Editor folder: Vehicles/Army Car

Editor number: 17004

This is a pre-destroyed version of the army car, in the same state that the car enters when it dies an extreme death by being destroyed by enough damage. None of the user variables on this actor do anything. Except for User_SpawnFlames.

### User variables:

User_NoMarines; The car spawns with no marines to drop.

User_PainRay: Enables the optional pain ray turret for the car.

User_SupplyType: What type of supplies the car can drop, default types include Ammo/Ammunition (50 clip ammo, 8 shotgun shells, and 1 rocket), Health/First Aid/FirstAid (Gives 25 HP, goes up to 100 max.), and Armor (Gives a set of vanilla Green Armor). An empty SupplyType field or one with “None” set as the type, makes the car go back to having a closed trunk.

User_SupplyAmount: How many times the player can press use on the car before it runs out of supplies, this can be used to change how many supplies the car carries. Default is 5.

### Prop user variables:

User_RetreatDistance: This variable does not do anything on any of the props. (Obviously)

User_SupplyType, User_SupplyAmount: These user variables work exact the same as on the NPC car, meaning that you can make the prop cars carry supplies as well.

User_PainRay: Spawns the unused pain ray on top of the car.

User_TurretAngle: Specifies the exact angle of the pain ray on top of the car, positive values shift it to the right, negative ones to the left. Setting the angle to -1 will make the pain ray rotate at a random angle relative to the car upon spawning.

User_OpenDoors: Makes the empty cars’ doors visibly open, can be dynamically changed with SetUserVariable() to open and close the doors.

User_SpawnFlames: Used by the army car ruin, makes the car spawn flames the same way as it does when gibbed, however, the flames spawned by this function will stay around indefinitely.

User_NoSparks: When turned on, the destroyed turret prop never sparks randomly.

## Army Truck:

Class name: MVP_ArmyTruck

Editor name: Army Truck

Editor folder: Vehicles/Army Truck

Editor number: 17005

The Army Truck is the weakest vehicle in the pack, it has 100 more health than the Army Car. However, it’s damage factors are weaker, and the “Explosion” and “ExplosionImpact” damage types to 125% damage to it, while the “MarineGrenade” damage type (The damage type used by the marines’ grenades, obviously.) does 150% damage.

The truck is also totally unarmed, not having even a non-lethal weapon like the Car. However, the Truck is able to deploy 14 marines that fight on its’ side. And when it’s health is at a quarter of its’ spawn health, it will begin dropping any marines still inside a lot more quickly, so that they will not die as well. The trucks’ default retreat distance is 1024 map units instead of 768.

The design of the truck is based on the Ural-5323.

### User variables:

User_MarineAmount: The amount of marines in the Truck, by default it carries 14 marines. This user variable can also be manually replenished with SetUserVariable, to give the Truck more marines to drop.

User_Ramming: Enables the trucks’ optional ability to run over enemies, when ramming, the truck loses momentum based on the mass property of the object it hit, and multiplies it’s impact damage by how fast it hit its’ enemy. If the truck hits an ally, it will only push them out of the way. Marines (Both enemy and friendly ones.) will run away from the truck once it starts charging.

## Army Truck (Prop):

Class name: MVP_ArmyTruckProp

Editor name: Army Truck (Prop)

Editor folder: Vehicles/Army Truck

Editor number: 17006

This is the prop version of the Army Truck, it doesn’t do anything and can be used as a map decoration, more info on the user variables section.

## Army Truck (Wreck):

Class name: MVP_ArmyTruckWreck

Editor name: Army Truck (Wreck)

Editor folder: Vehicles/Army Truck

Editor number: 17007

This is a prop version of the truck after it is killed normally. None of the user variables on this actor do anything.

## Army Truck (Ruin):

Classname: MVP_Army
Truck
Ruin

Editor name: Army Truck (Ruin)

Editor folder: Vehicles/Army Truck

Editor number: 17008

This is a prop version of the truck after it is gibbed. None of the user variables on this actor do anything. Except for User_SpawnFlames.

## Prop user variables:

User_OpenBackDoor: Used by the non-destroyed truck prop, opens the trucks’ back door.

User_SpawnFlames: Used by the gibbed truck prop, makes the wreck come with pre-spawned flames that last indefinitely.