local mType = Game.createMonsterType("example")
local monster = {}
monster.description = "an example"
monster.experience = 1
monster.outfit = {
	lookType = 37
}

monster.health = 99200
monster.maxHealth = monster.health
monster.race = "fire"
monster.corpse = 5995
monster.speed = 280
monster.maxSummons = 2

monster.changeTarget = {
	interval = 4 * 1000,
	chance = 20
}

monster.flags = {
	summonable = false,
	attackable = true,
	hostile = true,
	challengeable = true,
	convinceable = false,
	ignoreSpawnBlock = false,
	illusionable = false,
	canPushItems = true,
	canPushCreatures = true,
	targetDistance = 1,
	staticAttackChance = 70
}

monster.bestiary = {
	class = "Dragon",
	raceId = 39,
	prowess = 50,
	expertise = 500,
	mastery = 1000,
	charmPoints = 25,
	difficulty = "medium", -- harmless, trivial, easy, medium, hard, challenging
	occurrence = 0,
	locations = "Example locations"
}

monster.summons = {
	{name = "demon", chance = 10, interval = 2 * 1000}
}

monster.voices = {
	interval = 5000,
	chance = 10,
	{text = "I'm an example", yell = false},
	{text = "You shall bow", yell = false}
}

monster.loot = {
	{id = "gold coin", chance = 60000, maxCount = 100},
	{id = 1987, chance = 60000, -- bag
		child = {
			{id = "platinum coin", chance = 60000, maxCount = 100},
			{id = "crystal coin", chance = 60000, maxCount = 100}
		}
	}
}

monster.attacks = {
	{name = "melee", attack = 130, skill = 70, effect = CONST_ME_DRAWBLOOD, interval = 2 * 1000},
	{name = "energy strike", range = 1, chance = 10, interval = 2 * 1000, minDamage = -210, maxDamage = -300, target = true},
	{name = "combat", type = COMBAT_MANADRAIN, chance = 100, interval = 2 * 1000, minDamage = 0, maxDamage = -10, target = true, range = 7, condition = { type = CONDITION_CURSED, minDamage = 10, maxDamage = 20, duration = 5000, interval = 1000}},
	{name = "combat", type = COMBAT_FIREDAMAGE, chance = 20, interval = 2 * 1000, minDamage = -150, maxDamage = -250, radius = 1, target = true, effect = CONST_ME_FIREAREA, shootEffect = CONST_ANI_FIRE},
	{name = "combat", type = COMBAT_LIFEDRAIN, chance = 10, interval = 2 * 1000, length = 8, spread = 0, minDamage = -300, maxDamage = -490, effect = CONST_ME_PURPLEENERGY},
	{name = "speed", chance = 15, interval = 2 * 1000, speed = -700, radius = 1, target = true, duration = 30 * 1000, effect = CONST_ME_MAGIC_RED},
	{name = "firefield", chance = 10, interval = 2 * 1000, range = 7, radius = 1, target = true, shootEffect = CONST_ANI_FIRE},
	{name = "condition", chance = 1000, range = 1, condition = { type = CONDITION_ENERGY, minDamage = 10, maxDamage = 20, duration = 5000, interval = 1000}},
	{name = "drunk", chance = 10, interval = 2000, drunkenness = 25, duration = 5000, range = 7, shootEffect = CONST_ANI_ENERGY},
	{name =	"outfit", chance = 10, interval = 2000, item = 7172, duration = 8000, range = 7, effect = CONST_ME_MAGIC_BLUE}
}

monster.defenses = {
	defense = 55,
	armor = 55,
	{name = "combat", type = COMBAT_HEALING, chance = 15, interval = 2 * 1000, minDamage = 180, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE},
	{name = "speed", chance = 15, interval = 2 * 1000, speed = 320, effect = CONST_ME_MAGIC_RED},
	{name = "invisible", chance = 15, interval = 2000, duration = 3000, effect = CONST_ME_MAGIC_BLUE}
}

monster.elements = {
	{type = COMBAT_PHYSICALDAMAGE, percent = 30},
	{type = COMBAT_DEATHDAMAGE, percent = 30},
	{type = COMBAT_ENERGYDAMAGE, percent = 50},
	{type = COMBAT_EARTHDAMAGE, percent = 40},
	{type = COMBAT_ICEDAMAGE, percent = -10},
	{type = COMBAT_HOLYDAMAGE, percent = -10}
}

monster.immunities = {
	{type = "fire", combat = true, condition = true},
	{type = "drown", condition = true},
	{type = "lifedrain", combat = true},
	{type = "paralyze", condition = true},
	{type = "invisible", condition = true}
}

mType.onThink = function(monster, interval)
	print("I'm thinking")
end

mType.onAppear = function(monster, creature)
	if monster:getId() == creature:getId() then
		print(monster:getId(), creature:getId())
	end
end

mType.onDisappear = function(monster, creature)
	if monster:getId() == creature:getId() then
		print(monster:getId(), creature:getId())
	end
end

mType.onMove = function(monster, creature, fromPosition, toPosition)
	if monster:getId() == creature:getId() then
		print(monster:getId(), creature:getId(), fromPosition, toPosition)
	end
end

mType.onSay = function(monster, creature, type, message)
	print(monster:getId(), creature:getId(), type, message)
end

mType:register(monster)
