[Info] Zombies Mode Modding

To create a simplest zombies map you need:

  • A battle area
  • Place the zombie mode related entites

Entities you will need are:

The custom profile:

entity{
  _template:t="custom_profile"
  customProfile:t="%enlSqGlob/data/zombie_profile.json"
}

Profile 1 is a squad profile
Profile 2 is used for the event with a single solder and the mosin nagant rifle.

zombie_profile.json.txt (538.4 KB)
zombie_profile_2.json.txt (29.5 KB)

entity{
  _template:t="zombie_spawn_mode"
}

Enables the gamemode, contains the logic and the waves information.

and

entity{
  _template:t="zombie_spawn_zone"
}

the spawn points for zombies. You also need to put down spawn points for Team1.

All zombies entities BLK file:

zombies.txt (112.4 KB)

Wall Buys are possible, by adding the +paid_loot_item postfix to any weapon:

Adjust price inside properties

Weapon should have _use:t="gun_with_initial_ammo" tag. All weapons in the event have been modified. You may have to modify every weapon you want to add inside entities.blk.

Misc:

entity{
  _template:t="weather_zombie_night_a"
}

weather template

entity{
  _template:t="postfx_color_grading_tonemap_zombie_night_enlisted"
}

PostFX

To disable team-killing you either upload your mod as a squad mission or add game_options entity and disable friendly fire for lone fighters.

The profiles need fixing as stated in the CP guide.

9 Likes

Boxes:

Random box is random_weapon_box entity.

Ammunition box is base_fortification_build with +tutorial_ammunition_box_a+paid_ammo_box_ressuply+undestroyable_ri_extra postfixs.

Medkit box is tutorial_placed_medic_box_item with +placeable_item_in_world+base_ri_building+paid_medkit_box_use+undestroyable_ri_extra postfixs.

Properties for medkit box:

  ri_extra__name = dummy_wooden_box_a
  medic_box__isOpen = yes
  useful_box__maxUseCount = 99999 (same in ammunition box).
  paid_box__ressuplyCost = 50
  useful_box__uiPrice = 50

Boxes should have team.

New rendinsts:

firefight_post_a_board_a, guns_decal_a, guns_decal_d, poster_guns_c.

Maybe there also a, b and c versions (replace a to b). All rendinsts probably will not visible on rendinst list.

You forgot about tanks. Respawn point is zombie_tank_spawn_zone (probably should have unique zombie_tank_spawn_zone__objectiveId). Entity custom_ai_tank_objective_position probably is destination point. And zombie_tank_objective probably contains info about chances and aim.

But here probably will be problem with navMesh. Seems zombie_level_night have unique navMesh for tanks: level__loadExtraNavMeshes:t=“tank”.

If you will not use tanks then maybe better to edit zombie_spawn_mode and remove tanks from some some waves.

You probably also need set points for ammo. And gun__initialAmmoHoldersCount probably limits maximum possible ammo for weapon that you can got from ammunition boxes.

Code example:

thompson_m1928a1_50_drum_gold_zombie_gun{
  _use:t="thompson_m1928a1_50_drum_gold_gun"
  _use:t="gun_with_initial_ammo"
  _use:t="paid_loot_ressuply"
  item__template:t="thompson_m1928a1_50_drum_gold_zombie_gun_item"
  item__weapTemplate:t="thompson_m1928a1_50_drum_gold_zombie_gun"
  paid_loot__ressuplyCost:i=130
  gun__shotFreq:r=12.837
  gun__kineticDamageMult:r=1.15
}

thompson_m1928a1_50_drum_gold_zombie_gun_item{
  _use:t="item_gun"
  _use:t="thompson_m1928a1_50_drum_gold_zombie_gun"
  collres__res:t="thompson_m1928a1_50_drum_collision"

  _group{
    _tags:t="server"

    "gun__initialAmmoHoldersCount:list<i>"{
      item:i=4
    }
  }
}

Not really. It looks like that gamemode automatically adds zombie_mode_soldier postfix template to soldiers.

4 Likes

You forgot about tanks

I haven’t made it to tanks yet, there are tanks?

It looks like that gamemode automatically adds zombie_mode_soldier postfix template to soldiers.

But there is a profile? What do you mean?

1 Like

If you lucky enough then yeah. Here entities:

zombie_ai_vehicle_tank{
  _use:t="ai_vehicle_tank_no_objective"
  _use:t="germ_pzkpfw_IV_ausf_J_zombie"
  paid_loot__pointsForKill:i=100
  vehicle_seats__restrictToTeam:i=3

  "dontCreateNphysObstacle:tag"{
  }

  "zombie:tag"{
  }

  _group{
    _tags:t="server"
    ai_vehicle_tank__pathFindingState:i=1
    zombie_ai_vehicle_tank__timeToDestroy:r=900.0
    zombie_ai_vehicle_tank__destroyAtTime:r=0.0
    ai_vehicle_tank__ignoreBattleArea:b=yes
  }
}

zombie_ai_vehicle_tank_crew_member{
  _use:t="dev_soldier"

  "zombie:tag"{
  }

  "zombie_no_award:tag"{
  }
}

Tank contains:

  commanderCockpitFpsCamMaxAngle:p2=40.0, 5.0
  gunner_cam_limit__useCockpitDir:b=yes
  armorThicknessHull:p3=80.0, 30.0, 20.0
  armorThicknessTurret:p3=50.0, 30.0, 30.0

Tank cannon:

pzkpfw_iv_ausf_j_turret_01_75mm_kwk40_l48_zombie_ai{
  _use:t="pzkpfw_iv_ausf_j_turret_01_75mm_kwk40_l48"
  turret__allowShootingFromBroken:b=yes

  _group{
    _tags:t="server"
    tank_turret_ai__maxBurstCount:i=0
    tank_turret_ai__longPauseWaitTime:r=0.0
    tank_turret_ai__attackDist:r=40.0
  }
}

Probably ai behavior are from postfixs. And it seems that tank creates with zombie_ai_vehicle_tank_spawner postfix template. Maybe some other postfixs too.

zombie_ai_vehicle_tank_spawner{
  isAlive:b=yes

  _group{
    _tags:t="server"
    zombie_ai_vehicle_tank_spawner__template:t="zombie_ai_vehicle_tank"
    zombie_ai_vehicle_tank_spawner__spawnCrewDelay:r=2.0

    "zombie_ai_vehicle_tank_spawner__tankEid:eid"{
    }

    "zombie_ai_vehicle_tank_spawner:tag"{
    }
  }

  "zombie:tag"{
  }
}

Looks like it just contains predefined soldiers for event.

3 Likes

yeah… about the tank…

so, if i " force " and place the zombie panzer IV,

try to give it a zombie_tank_objective , and place the zombie ai crew, it crashes the editor.

not entirely sure why, but it seems that inside the editor, the zombie ai crew is incompatible.

i runned towards the 25 wave which were tanks spawns ( sometimes they don’t… )

and if you look at their properties, they don’t have anything special.

so, you are correct with the assessment:

which, how would someone be able to use tanks on non zombies missions?

it’s a bit of a big incognita.

or maybe i have some big skill issue in trying to figure it out

but anyway, thanks to you and @Bazsi37 for the in depth datamining

1 Like

Does anyone know how to tweak the AI? The zombie AI is very primitive at the moment.

  • They don’t move if line of sight is lost or if the distance between the player and the zombie is too large.
  • They stop moving when there is no nav path to the player. (for example, climbing obstacles). When I “climb back down to the navmesh”, the zombies don’t do anything, unless i go very close to them.
  • They cannot overcome obstacles at all. I wonder if it can be enabled…

Perhaps, do i edit these variables?
kép

1 Like

Sorry. Didn’t check it properly. It seems that spawner is really spawner.


Just create it on map and it will spawn 2 tanks.

And after 2 seconds it probably adds crew to tank zombie_ai_vehicle_tank_crew_member. In theory you can try to add them using +ai_aircraft_crew_ger and editing ai_aircraft_crew__soldier_template to zombie_ai_vehicle_tank_crew_member. Spawner probably also adds some tags for ai, but I dunno.

2 Likes

yeah ugh…

it seems that the spawner it self despawn in non zombie missions
( i forced it as a postfix on a vehicle spawner )

and, it doesn’t let me spawn the spawner at all.

but if i do force it as a postfix:

it seems that the spawner it self despawn in non zombie missions

i will try in a bit to do this though:

i will report further findings.

but first, lunch break.

1 Like

It probably requires zombie_tank_spawn_zone. And to make it move to X area you probably will need to add custom_ai_tank_objective_position and zombie_tank_objective that will contains chances. Problem probably will be with navMesh.

Or you can create zombie_ai_vehicle_tank with this ai soldiers postfix.

UPD: Damn. It crashes on default maps even spawn zombie_ai_vehicle_tank :confused:
Need to add tank inside level entity. In level__loadExtraNavMeshes property.

2 Likes

maybe a property call walker agent :thinking:

How to I increase the amount of zombies spawned?

All info about waves are inside zombie_spawn_mode.

Thank you I"ll try that

Forgot to add tank inside level__loadExtraNavMeshes.


And it seems that they will not move. Probably because tank navMesh didn’t generated.

2 Likes

so, to reiterate,

  • add the " tank " inside level__load[…] parameter ( inside level node )

  • add the zombie tank + zombie_tank_objective + zombie_ai_vehicle_tank_crew_member

correct?

Probably will be crash or it will be not created (because of zombie_ai_vehicle_tank_crew_member).

I created just zombie_ai_vehicle_tank+ai_aircraft_crew_ger.
In properties changed ai_aircraft_crew__soldier_template. Set there zombie_ai_vehicle_tank_crew_member.

1 Like

can someone post the blk of

germ_pzkpfw_IV_ausf_J_zombie ?

i have to figure out how it’s coded because my own tanks do not fire their main gun, and i would like understand how they managed to damage part of the panzer IV J.

which can allow us to place damaged vehicles in our maps.

How do I set paratrooper zombie spawn?

Hmmm… It seems that they spawn nearby team 1 spawn points. Using entities.blk you can try create new entity that will spawn them in another team spawners. Here is code:

zombie_rush_paratrooper_spawner_team2{
  _use:t="zombie_rush_paratrooper_spawner"
  simple_spawner__useTeamSpawns:i=2
}

Need only add them inside wave code. And they will spawn nearby respTeam2 points. You also can edit team (and in respawn point too) if want set another unqiue spawn point.

1 Like

So they just spawn near the spawn of team 1?