mobs_war/spawn.lua

609 lines
15 KiB
Lua
Raw Normal View History

2018-03-31 17:24:05 -07:00
--make spawning favour the enemy to compensate for spending more time in friendly territory
local base_spawn_rate = minetest.setting_get("mobs_war_friendly_rate") or 5500
local base_spawn_rate_hostile = minetest.setting_get("mobs_war_hostile_rate") or 4000
local spawn_on = {"default:dirt", "default:dirt_with_grass", "default:dirt_with_dry_grass", "default:dirt_with_snow", "default:dirt_with_rainforest_litter", "default:sand", "default:desert_sand", "default:silver_sand", "default:snow", "default:snowblock", "default:gravel", "default:mossycobble",}
---not currently compatible with squaresville...markers cant get created by regular means...
if minetest.get_modpath("squaresville") then
spawn_on = {"default:dirt", "default:dirt_with_grass", "default:dirt_with_dry_grass", "default:dirt_with_snow", "default:dirt_with_rainforest_litter", "default:sand", "default:desert_sand", "default:silver_sand", "default:snow", "default:snowblock", "default:gravel", "default:mossycobble", "squaresville:roof", "squaresville:sidewalk", "squaresville:road", "squaresville:floor_ceiling", "squaresville:concrete_broken", "squaresville:concrete"}
end
--Destructive and large mobs only spawn at front lines i.e. neighbouring enemy
-- DEFENDERS
mobs:spawn({
name = "mobs_war:defender_drone",
nodes = "mobs_war:drone_launcher_defender",
chance = 5,
active_object_count = 5,
max_height = 20000,
})
mobs:spawn({
name = "mobs_war:defender",
nodes = "mobs_war:marker_defender",
chance = base_spawn_rate,
active_object_count = 1,
max_height = 20000,
})
mobs:spawn({
name = "mobs_war:defender_cannon",
nodes = "mobs_war:marker_defender",
chance = base_spawn_rate * 2,
active_object_count = 1,
max_height = 20000,
})
mobs:spawn({
name = "mobs_war:defender_bazooka",
nodes = "mobs_war:marker_defender",
neighbors = "mobs_war:marker_shooter",
chance = base_spawn_rate * 3,
active_object_count = 1,
max_height = 20000,
})
mobs:spawn({
name = "mobs_war:defender_sniper",
nodes = "mobs_war:marker_defender",
chance = base_spawn_rate * 5,
active_object_count = 1,
max_height = 20000,
})
mobs:spawn({
name = "mobs_war:defender_flamethrower",
nodes = "mobs_war:marker_defender",
neighbors = "mobs_war:marker_shooter",
chance = base_spawn_rate * 8,
active_object_count = 1,
max_height = 20000,
})
mobs:spawn({
name = "mobs_war:defender_vehicle",
nodes = "mobs_war:marker_defender",
neighbors = "mobs_war:marker_shooter",
chance = base_spawn_rate * 8,
active_object_count = 1,
max_height = 20000,
})
mobs:spawn({
name = "mobs_war:defender_helicopter",
nodes = "mobs_war:marker_defender",
neighbors = "mobs_war:marker_shooter",
chance = base_spawn_rate * 13,
active_object_count = 1,
max_height = 20000,
min_height = 10,
})
mobs:spawn({
name = "mobs_war:defender_engineer",
nodes = "mobs_war:marker_defender",
neighbors = "mobs_war:marker_shooter",
chance = base_spawn_rate * 13,
active_object_count = 1,
max_height = 20000,
})
mobs:spawn({
name = "mobs_war:defender_tank",
nodes = "mobs_war:marker_defender",
neighbors = "mobs_war:marker_shooter",
chance = base_spawn_rate * 21,
active_object_count = 1,
max_height = 20000,
})
--SHOOTERS
mobs:spawn({
name = "mobs_war:shooter_drone",
nodes = "mobs_war:drone_launcher_shooter",
chance = 5,
active_object_count = 5,
max_height = 20000,
})
mobs:spawn({
name = "mobs_war:shooter",
nodes = "mobs_war:marker_shooter",
chance = base_spawn_rate_hostile,
active_object_count = 1,
max_height = 20000,
})
mobs:spawn({
name = "mobs_war:shooter_cannon",
nodes = "mobs_war:marker_shooter",
chance = base_spawn_rate_hostile * 2,
active_object_count = 1,
max_height = 20000,
})
mobs:spawn({
name = "mobs_war:shooter_bazooka",
nodes = "mobs_war:marker_shooter",
neighbors = "mobs_war:marker_defender",
chance = base_spawn_rate_hostile * 3,
active_object_count = 1,
max_height = 20000,
})
mobs:spawn({
name = "mobs_war:shooter_suicide",
nodes = "mobs_war:marker_shooter",
chance = base_spawn_rate_hostile * 5,
active_object_count = 1,
max_height = 20000,
})
mobs:spawn({
name = "mobs_war:shooter_flamethrower",
nodes = "mobs_war:marker_shooter",
neighbors = "mobs_war:marker_defender",
chance = base_spawn_rate_hostile * 8,
active_object_count = 1,
max_height = 20000,
})
mobs:spawn({
name = "mobs_war:shooter_vehicle",
nodes = "mobs_war:marker_shooter",
neighbors = "mobs_war:marker_defender",
chance = base_spawn_rate_hostile * 8,
active_object_count = 1,
max_height = 20000,
})
mobs:spawn({
name = "mobs_war:shooter_helicopter",
nodes = "mobs_war:marker_shooter",
neighbors = "mobs_war:marker_defender",
chance = base_spawn_rate_hostile * 11,
active_object_count = 1,
max_height = 20000,
min_height = 10,
})
--make a little more common than defender
mobs:spawn({
name = "mobs_war:shooter_engineer",
nodes = "mobs_war:marker_shooter",
neighbors = "mobs_war:marker_defender",
chance = base_spawn_rate_hostile * 8,
active_object_count = 1,
max_height = 20000,
})
mobs:spawn({
name = "mobs_war:shooter_tank",
nodes = "mobs_war:marker_shooter",
neighbors = "mobs_war:marker_defender",
chance = base_spawn_rate_hostile * 20,
active_object_count = 1,
max_height = 20000,
})
--MAP SPAWN MARKERS
--Main blocks... divides up the landscape into seperate zones
--give shooters a slight advantage for a challange...
--shooter
--give them larger areas to compensate for player being better at taking territory
minetest.register_decoration({
deco_type = "simple",
place_on = spawn_on,
sidelen = 16,
noise_params = {
offset = 0,
scale = 5,
spread = {x = 300, y = 300, z = 300},
seed = 666,
octaves = 4,
persist = 1
},
y_min = -10,
y_max = 31000,
decoration = "mobs_war:marker_shooter",
})
--defender
minetest.register_decoration({
deco_type = "simple",
place_on = spawn_on,
noise_params = {
offset = 0,
scale = 3,
spread = {x = 250, y = 200, z = 250},
seed = 777,
octaves = 4,
persist = 1
},
y_min = -10,
y_max = 31000,
decoration = "mobs_war:marker_defender",
})
--Rogues... to scatter through no man's lands and infiltrate
--defender
minetest.register_decoration({
deco_type = "simple",
place_on = spawn_on,
noise_params = {
offset = 0,
scale = 0.05,
spread = {x = 300, y = 300, z = 300},
seed = 777,
octaves = 2,
persist = 0.1
},
y_min = -20,
y_max = 31000,
decoration = "mobs_war:marker_defender",
})
--shooter
minetest.register_decoration({
deco_type = "simple",
place_on = spawn_on,
sidelen = 16,
noise_params = {
offset = 0,
scale = 0.05,
spread = {x = 300, y = 300, z = 300},
seed = 666,
octaves = 2,
persist = 0.1
},
y_min = -20,
y_max = 31000,
decoration = "mobs_war:marker_shooter",
})
--shooter Drones
minetest.register_decoration({
deco_type = "simple",
place_on = spawn_on,
sidelen = 16,
noise_params = {
offset = 0,
scale = 0.004,
spread = {x = 300, y = 300, z = 300},
seed = 666,
octaves = 1,
persist = 0.1
},
y_min = -20,
y_max = 31000,
decoration = "mobs_war:drone_launcher_shooter",
})
-------------------------------------------------------------
---BUILDINGS
------------------------------------------------------------
local spawn_on_building = {"default:dirt", "default:dirt_with_grass", "default:dirt_with_dry_grass", "default:dirt_with_snow", "default:dirt_with_rainforest_litter", "default:sand", "default:desert_sand", "default:silver_sand", "default:snow", "default:snowblock",}
---Sandbag Cross
minetest.register_decoration({
deco_type = "schematic",
place_on = spawn_on_building,
sidelen = 16,
noise_params = {
offset = 0,
scale = 0.0002,
spread = {x = 550, y = 250, z = 550},
seed = 6661,
octaves = 1,
persist = 0.45
},
y_min = -1,
y_max = 31000,
schematic = minetest.get_modpath("mobs_war") .. "/schematics/bag_crosswire.mts",
flags = {place_center_x = true, place_center_y = true, place_center_z = true, force_placement = true},
})
---Sandbag house
minetest.register_decoration({
deco_type = "schematic",
place_on = spawn_on_building,
sidelen = 16,
noise_params = {
offset = 0,
scale = 0.0002,
spread = {x = 550, y = 250, z = 550},
seed = 7772,
octaves = 1,
persist = 0.45
},
y_min = -1,
y_max = 31000,
schematic = minetest.get_modpath("mobs_war") .. "/schematics/bag_house.mts",
flags = {place_center_x = true, place_center_y = true, place_center_z = true, force_placement = true},
})
---Sandbag pit
minetest.register_decoration({
deco_type = "schematic",
place_on = spawn_on_building,
sidelen = 16,
noise_params = {
offset = 0,
scale = 0.0002,
spread = {x = 550, y = 250, z = 550},
seed = 6663,
octaves = 2,
persist = 0.45
},
y_min = 1,
y_max = 31000,
schematic = minetest.get_modpath("mobs_war") .. "/schematics/bag_pit.mts",
flags = {place_center_x = true, place_center_y = true, place_center_z = true, force_placement = true},
})
---Sandbag pit covered
minetest.register_decoration({
deco_type = "schematic",
place_on = spawn_on_building,
sidelen = 16,
noise_params = {
offset = 0,
scale = 0.0002,
spread = {x = 550, y = 250, z = 550},
seed = 7774,
octaves = 2,
persist = 0.45
},
y_min = 1,
y_max = 31000,
schematic = minetest.get_modpath("mobs_war") .. "/schematics/bag_pit_covered.mts",
flags = {place_center_x = true, place_center_y = true, place_center_z = true, force_placement = true},
})
---Sandbag pit covered large
minetest.register_decoration({
deco_type = "schematic",
place_on = spawn_on_building,
sidelen = 16,
noise_params = {
offset = 0,
scale = 0.0002,
spread = {x = 250, y = 250, z = 250},
seed = 6665,
octaves = 2,
persist = 0.45
},
y_min = 1,
y_max = 31000,
schematic = minetest.get_modpath("mobs_war") .. "/schematics/bag_pit_covered_large.mts",
flags = {place_center_x = true, place_center_y = true, place_center_z = true, force_placement = true},
})
---Sandbag trench
minetest.register_decoration({
deco_type = "schematic",
place_on = spawn_on_building,
sidelen = 16,
noise_params = {
offset = 0,
scale = 0.0002,
spread = {x = 250, y = 250, z = 250},
seed = 7776,
octaves = 2,
persist = 0.45
},
y_min = 1,
y_max = 31000,
schematic = minetest.get_modpath("mobs_war") .. "/schematics/bag_trench.mts",
flags = {place_center_x = true, place_center_y = true, place_center_z = true, force_placement = true},
})
---bunker 1
minetest.register_decoration({
deco_type = "schematic",
place_on = spawn_on_building,
sidelen = 16,
noise_params = {
offset = 0,
scale = 0.0001,
spread = {x = 550, y = 250, z = 550},
seed = 6667,
octaves = 1,
persist = 0.45
},
y_min = 1,
y_max = 31000,
schematic = minetest.get_modpath("mobs_war") .. "/schematics/bunker_1.mts",
flags = {place_center_x = true, place_center_y = true, place_center_z = true, force_placement = true},
})
---bunker 2
minetest.register_decoration({
deco_type = "schematic",
place_on = spawn_on_building,
sidelen = 16,
noise_params = {
offset = 0,
scale = 0.0001,
spread = {x = 550, y = 250, z = 550},
seed = 7778,
octaves = 1,
persist = 0.45
},
y_min = 1,
y_max = 31000,
schematic = minetest.get_modpath("mobs_war") .. "/schematics/bunker_2.mts",
flags = {place_center_x = true, place_center_y = true, place_center_z = true, force_placement = true},
})
---bunker 3
minetest.register_decoration({
deco_type = "schematic",
place_on = spawn_on_building,
sidelen = 16,
noise_params = {
offset = 0,
scale = 0.0001,
spread = {x = 550, y = 250, z = 550},
seed = 6669,
octaves = 1,
persist = 0.45
},
y_min = 1,
y_max = 31000,
schematic = minetest.get_modpath("mobs_war") .. "/schematics/bunker_3.mts",
flags = {place_center_x = true, place_center_y = true, place_center_z = true, force_placement = true},
})
---bunker pillbox 1
minetest.register_decoration({
deco_type = "schematic",
place_on = spawn_on_building,
sidelen = 16,
noise_params = {
offset = 0,
scale = 0.0001,
spread = {x = 550, y = 250, z = 550},
seed = 77710,
octaves = 1,
persist = 0.45
},
y_min = 1,
y_max = 31000,
schematic = minetest.get_modpath("mobs_war") .. "/schematics/bunker_pillbox_1.mts",
flags = {place_center_x = true, place_center_y = true, place_center_z = true, force_placement = true},
})
---bunker pillbox 2
minetest.register_decoration({
deco_type = "schematic",
place_on = spawn_on_building,
sidelen = 16,
noise_params = {
offset = 0,
scale = 0.0001,
spread = {x = 550, y = 250, z = 550},
seed = 66611,
octaves = 1,
persist = 0.45
},
y_min = 1,
y_max = 31000,
schematic = minetest.get_modpath("mobs_war") .. "/schematics/bunker_pillbox_2.mts",
flags = {place_center_x = true, place_center_y = true, place_center_z = true, force_placement = true},
})
---bunker tower
minetest.register_decoration({
deco_type = "schematic",
place_on = spawn_on_building,
sidelen = 16,
noise_params = {
offset = 0,
scale = 0.0001,
spread = {x = 550, y = 250, z = 550},
seed = 77712,
octaves = 1,
persist = 0.45
},
y_min = 1,
y_max = 31000,
schematic = minetest.get_modpath("mobs_war") .. "/schematics/bunker_tower.mts",
flags = {place_center_x = true, place_center_y = true, place_center_z = true, force_placement = true},
})
---bunker underground
minetest.register_decoration({
deco_type = "schematic",
place_on = spawn_on_building,
sidelen = 16,
noise_params = {
offset = 0,
scale = 0.0001,
spread = {x = 550, y = 250, z = 550},
seed = 66613,
octaves = 1,
persist = 0.45
},
y_min = -20,
y_max = 31000,
schematic = minetest.get_modpath("mobs_war") .. "/schematics/bunker_underground.mts",
flags = {place_center_x = true, place_center_y = true, place_center_z = true, force_placement = true},
})
---bunker underground large
minetest.register_decoration({
deco_type = "schematic",
place_on = spawn_on_building,
sidelen = 16,
noise_params = {
offset = 0,
scale = 0.0001,
spread = {x = 550, y = 550, z = 550},
seed = 77714,
octaves = 1,
persist = 0.45
},
y_min = -20,
y_max = 31000,
schematic = minetest.get_modpath("mobs_war") .. "/schematics/bunker_underground_large.mts",
flags = {place_center_x = true, place_center_y = true, place_center_z = true, force_placement = true},
})
---bunker underground lit
minetest.register_decoration({
deco_type = "schematic",
place_on = spawn_on_building,
sidelen = 16,
noise_params = {
offset = 0,
scale = 0.0001,
spread = {x = 550, y = 550, z = 550},
seed = 66615,
octaves = 1,
persist = 0.45
},
y_min = -20,
y_max = 31000,
schematic = minetest.get_modpath("mobs_war") .. "/schematics/bunker_underground_lit.mts",
flags = {place_center_x = true, place_center_y = true, place_center_z = true, force_placement = true},
})