Wave based gamemode for any custom map with a path grid!
How To Make More Waves:
1. Waves are constructed in the Waves array:
- Waves should be constructed with:
- (string) Name = Title of the wave
- (List<Group>) Groupings = Enemies spawned in the wave
- Optional Arguments include:
- (int) MaximumWave = Maximum wave number before it stops being selected
- (int) MinimumWave = Minimum wave number before it can be selected
//Example Wave with all arguments used
public static Wave[] Waves = new Wave[]{
new Wave(){
Name = "My Cool Wave",
Groupings = /*... Will be explained below*/,
MinimumWave = 5,
MaximumWave = 10
},
}
2. Groupings define how the Wave should behave and what enemies will spawn throughout:
- Groupings are constructed with a list of Group objects
Groupings = new List<Group>(){
new Group(){
},
new Group(){
},
//You can add as many groups as neccesary
}
- Group objects should be defined with:
- (string) Name = Enemy Name
- (int) SpawnCount = Number of enemies to spawn
- (int) SpawnDelay = Delay between enemies spawned
- (GroupType) Type = How the wave behaves *Explained At 3*
- Optional arguments include:
- (List<WeaponItem[]>) Weapons = Random loadout for enemy to spawn with
- (PlayerModifiers) Modifiers = Enemy modifiers to spawn with
- (PredefinedAIType) AI = Enemy AI to use
- (List<string>) SpawnDialogue = Random spawn message
- (List<string>) DeathDialogue = Random death message
- (int) MinimumWave = Minimum wave number before enemy can spawn
- (int) MaximumWave = Maximum wave number enemy can spawn til
- (List<IProfile>) Profiles = Random profile for enemy to spawn with *Easy Method At 3*
- (PlayerHitEffect) HitEffect = Set hit effect of enemy, enum can be found in the ScriptAPI
- (bool) ShowNametag = Whether nametag for enemy should be shown
//Working example group from the script
new Group(){
Name = "Clownster",
SpawnCount = 5,
SpawnDelay = 2000,
Type = GroupType.KillAll,
Weapons = new List<WeaponItem[]>(){
new WeaponItem[] { WeaponItem.BAT, WeaponItem.PISTOL },
new WeaponItem[] { WeaponItem.CHAIN, WeaponItem.MACHINE_PISTOL },
new WeaponItem[] { WeaponItem.SHOTGUN },
new WeaponItem[] { WeaponItem.TOMMYGUN }
},
Modifiers = new PlayerModifiers(){
MaxHealth = 20
},
AI = PredefinedAIType.BotC,
Profiles = new List<IProfile>(){
new IProfile() {
Name = "Clownster",
Gender = Gender.Male,
Skin = new IProfileClothingItem("Normal", "Skin3", "ClothingLightGray", ""),
ChestUnder = new IProfileClothingItem("BodyArmor", "ClothingLightPurple", "ClothingLightGray", ""),
Legs = new IProfileClothingItem("PantsBlack", "ClothingDarkCyan", "ClothingLightGray", ""),
Feet = new IProfileClothingItem("Shoes", "ClothingRed", "ClothingLightGray", ""),
ChestOver = new IProfileClothingItem("JacketBlack", "ClothingDarkPurple", "ClothingLightPurple", ""),
Accessory = new IProfileClothingItem("ClownMakeup", "ClothingDarkGreen", "ClothingLightGray", ""),
}
},
ShowNametag = false
}
3. My Notes:
- GroupTypes Explained:
- GroupType.Infinite = Infinitely spawn enemies and go to next group, will stop if it is the last group
- GroupType.KillAll = Must kill all enemies spawned under this group before going to the next group
- GroupType.WaitTillSpawned = Will wait till all enemies have spawned then go straight away to the next group
- GroupType.Proceed = Immediately go to the next group the next frame
- Profiles can be made easier with this editing script.
4. That is about all you need to make custom waves! if you have any further questions or need some help make sure to comment or pm me.
|