Thanks, Isaac. That's actually very helpful. So it's up to us to find new sound effects?
I suppose that's the limitation described by the disclaimer that the asset pack does not include some effects for licensing reasons?
That may work out for me in my favor since I was changing their spells and such anyway.
Edit: I got it to work. For those of you, like me, who are code noobs. I will spell out what I did. I just copied this script from the LOG1 asset pack and put it into my mod's monsters.lua file.
-- goromorg
defineObject{
name = "goromorg",
baseObject = "base_monster",
components = {
{
class = "Model",
model = "assets/models/monsters/goromorg.fbx",
storeSourceData = true,
},
{
class = "Animation",
animations = {
idle = "assets/animations/monsters/goromorg/goromorg_idle.fbx",
moveForward = "assets/animations/monsters/goromorg/goromorg_walk.fbx",
strafeLeft = "assets/animations/monsters/goromorg/goromorg_strafe_left.fbx",
strafeRight = "assets/animations/monsters/goromorg/goromorg_strafe_right.fbx",
turnLeft = "assets/animations/monsters/goromorg/goromorg_turn_left.fbx",
turnRight = "assets/animations/monsters/goromorg/goromorg_turn_right.fbx",
attack = "assets/animations/monsters/goromorg/goromorg_attack.fbx",
getHitFrontLeft = "assets/animations/monsters/goromorg/goromorg_get_hit_front_left.fbx",
getHitFrontRight = "assets/animations/monsters/goromorg/goromorg_get_hit_front_right.fbx",
getHitBack = "assets/animations/monsters/goromorg/goromorg_get_hit_back.fbx",
getHitLeft = "assets/animations/monsters/goromorg/goromorg_get_hit_left.fbx",
getHitRight = "assets/animations/monsters/goromorg/goromorg_get_hit_right.fbx",
fall = "assets/animations/monsters/goromorg/goromorg_get_hit.fbx",
},
currentLevelOnly = true,
},
{
class = "Monster",
meshName = "goromorg_mesh",
footstepSound = "goromorg_footstep",
hitSound = "goromorg_hit",
dieSound = "goromorg_die",
hitEffect = "hit_dust",
capsuleHeight = 0.8,
capsuleRadius = 0.25,
collisionRadius = 0.8,
health = 400, -- goromorg shield is on top of this
protection = 0,
exp = 1000,
immunities = { "sleep", "blinded" },
},
{
class = "GoromorgBrain",
name = "brain",
sight = 5,
seeInvisible = true,
allAroundSight = true,
},
{
class = "MonsterMove",
name = "move",
sound = "goromorg_walk",
cooldown = 1,
animationSpeed = 1.3,
},
{
class = "MonsterTurn",
name = "turn",
sound = "goromorg_walk",
animationSpeed = 1.5,
},
{
class = "MonsterAttack",
name = "rangedAttack",
attackPower = 40,
cooldown = 6,
animation = "attack",
sound = "goromorg_attack",
onAttack = function(self)
local h = 1.4
local r = math.random()
if r < 0.45 then
-- cast fireball
self.go.monster:shootProjectile("fireball_large", h, 40)
elseif r < 0.7 then
-- cast lightning bolt
self.go.monster:shootProjectile("lightning_bolt_greater", h, 40)
elseif r < 0.8 then
-- cast poison bolt
self.go.monster:shootProjectile("poison_bolt", h, 40)
else
-- cast ice shards
local dx,dy = getForward(self.go.facing)
local spell = spawn("ice_shards", self.go.level, self.go.x + dx, self.go.y + dy, self.go.facing, self.go.elevation)
spell.tiledamager:setAttackPower(40)
end
end,
},
{
class = "GoromorgShield",
},
{
class = "Particle",
parentNode = "light1",
particleSystem = "goromorg_lantern",
},
{
class = "Light",
parentNode = "light1",
color = vec(0.5, 1.0, 2.5),
brightness = 4,
range = 4.5,
fillLight = true,
},
},
}
defineAnimationEvent{
animation = "assets/animations/monsters/goromorg/goromorg_walk.fbx",
event = "footstep",
frame = 1,
}
defineAnimationEvent{
animation = "assets/animations/monsters/goromorg/goromorg_move_back.fbx",
event = "footstep",
frame = 1,
}
defineAnimationEvent{
animation = "assets/animations/monsters/goromorg/goromorg_strafe_left.fbx",
event = "footstep",
frame = 1,
}
defineAnimationEvent{
animation = "assets/animations/monsters/goromorg/goromorg_strafe_right.fbx",
event = "footstep",
frame = 1,
}
defineAnimationEvent{
animation = "assets/animations/monsters/goromorg/goromorg_attack.fbx",
event = "attack",
frame = 10,
}
defineParticleSystem{
name = "goromorg_lantern",
emitters = {
-- smoke
{
emissionRate = 5,
emissionTime = 0,
maxParticles = 50,
boxMin = {-0.03, 0.1, -0.03},
boxMax = { 0.03, 0.1, 0.03},
sprayAngle = {0,30},
velocity = {0.1,0.5},
texture = "assets/textures/particles/smoke_01.tga",
lifetime = {1,1.25},
color0 = {0.08, 0.11, 0.15},
opacity = 1,
fadeIn = 0.5,
fadeOut = 0.5,
size = {0.3, 0.6},
gravity = {0,0,0},
airResistance = 0.1,
rotationSpeed = 0.6,
blendMode = "Translucent",
objectSpace = false,
},
-- flames
{
emissionRate = 30,
emissionTime = 0,
maxParticles = 100,
boxMin = {-0.03, -0.07, 0.03},
boxMax = { 0.03, -0.07, -0.03},
sprayAngle = {0,10},
velocity = {0.1, 0.4},
texture = "assets/textures/particles/goromorg_lantern.tga",
frameRate = 45,
frameSize = 64,
frameCount = 16,
lifetime = {0.25, 0.85},
colorAnimation = false,
color0 = {1.5, 1.5, 1.5},
opacity = 1,
fadeIn = 0.15,
fadeOut = 0.3,
size = {0.17, 0.015},
gravity = {0,0,0},
airResistance = 1.0,
rotationSpeed = 1,
blendMode = "Additive",
depthBias = -0.0005,
objectSpace = true,
},
-- inner glow
{
spawnBurst = true,
emissionRate = 1,
emissionTime = 0,
maxParticles = 1,
boxMin = {0,-0.05,0.0},
boxMax = {0,-0.05,0.0},
sprayAngle = {0,30},
velocity = {0,0},
texture = "assets/textures/particles/glow.tga",
lifetime = {1000000, 1000000},
colorAnimation = false,
color0 = {0.07, 0.11, 0.23},
opacity = 1,
fadeIn = 0.1,
fadeOut = 0.1,
size = {0.5, 0.5},
gravity = {0,0,0},
airResistance = 1,
rotationSpeed = 0,
blendMode = "Additive",
depthBias = -0.0005,
objectSpace = true,
},
-- outer glow
{
spawnBurst = true,
emissionRate = 1,
emissionTime = 0,
maxParticles = 1,
boxMin = {0,0,0},
boxMax = {0,0,0},
sprayAngle = {0,30},
velocity = {0,0},
texture = "assets/textures/particles/glow.tga",
lifetime = {1000000, 1000000},
colorAnimation = false,
color0 = {0.07, 0.11, 0.23},
opacity = 0.25,
fadeIn = 0.1,
fadeOut = 0.1,
size = {2, 2},
gravity = {0,0,0},
airResistance = 1,
rotationSpeed = 0,
blendMode = "Additive",
depthBias = -0.0005,
objectSpace = true,
}
}
}
Then I had to redefine the missing sound effects so that my mod would load. For the time being, I decided to use Sutekh's quick fix which I'll post here:
Yay! We have a working Goromorg. Now to figure out how to cloneObject in LOG2 terms so that I can fuss with goromorg robe colors again.