Page 2 of 5

Re: Statue Comes to life

Posted: Thu Oct 25, 2012 12:25 am
by Ciccipicci
Neikun wrote:In my monster code I gave it warden sound effects.

@Ciccipicci, no new materials are needed. (Don't you recognize the temple floor material?)
I have mine saved in my models folder, so my script looks like this:

Code: Select all

defineObject{
	name = "stone_ogre",
	class = "Monster",
	model = "mod_assets/models/stone_ogre.fbx",
	meshName = "tunnel_ogre_mesh",
	animations = {
		idle = "assets/animations/monsters/tunnel_ogre/tunnel_ogre_idle.fbx",
		moveForward = "assets/animations/monsters/tunnel_ogre/tunnel_ogre_walk.fbx",
		turnLeft = "assets/animations/monsters/tunnel_ogre/tunnel_ogre_turn_left.fbx",
		turnRight = "assets/animations/monsters/tunnel_ogre/tunnel_ogre_turn_right.fbx",
		attack = "assets/animations/monsters/tunnel_ogre/tunnel_ogre_attack.fbx",
		attack2 = "assets/animations/monsters/tunnel_ogre/tunnel_ogre_attack_stab.fbx",
		--attack3 = "assets/animations/monsters/tunnel_ogre/tunnel_ogre_attack_two_handed.fbx",
		--attack4 = "assets/animations/monsters/tunnel_ogre/tunnel_ogre_attack_leap.fbx",
		turnAttackLeft =  "assets/animations/monsters/tunnel_ogre/tunnel_ogre_attack_left.fbx",
		turnAttackRight =  "assets/animations/monsters/tunnel_ogre/tunnel_ogre_attack_right.fbx",
		getHitFrontLeft = "assets/animations/monsters/tunnel_ogre/tunnel_ogre_get_hit_front_left_02.fbx",
		getHitFrontRight = "assets/animations/monsters/tunnel_ogre/tunnel_ogre_get_hit_front_right_02.fbx",
		getHitBack = "assets/animations/monsters/tunnel_ogre/tunnel_ogre_get_hit_back_02.fbx",
		getHitLeft = "assets/animations/monsters/tunnel_ogre/tunnel_ogre_get_hit_left_02.fbx",
		getHitRight = "assets/animations/monsters/tunnel_ogre/tunnel_ogre_get_hit_right_02.fbx",
		fall = "assets/animations/monsters/tunnel_ogre/tunnel_ogre_get_hit_back_02.fbx",
		rushBegin = "assets/animations/monsters/tunnel_ogre/tunnel_ogre_rush_begin.fbx",
		rushContinue1 = "assets/animations/monsters/tunnel_ogre/tunnel_ogre_rush_continue_right_step.fbx",
		rushContinue2 = "assets/animations/monsters/tunnel_ogre/tunnel_ogre_rush_continue_left_step.fbx",
		rushHit1 = "assets/animations/monsters/tunnel_ogre/tunnel_ogre_rush_hit_right_step.fbx",
		rushHit2 = "assets/animations/monsters/tunnel_ogre/tunnel_ogre_rush_hit_left_step.fbx",
	},
	moveSound = "warden_walk",
	footstepSound = "warden_footstep",
	attackSound = "warden_attack",
	impactSound = "warden_impact",
	hitSound = "ogre_hit",
	dieSound = "ogre_die",
	rushBeginSound = "ogre_rush_begin",
	--soundClipDistance = 8,
	hitEffect = "hit_blood",
	capsuleHeight = 0.6,
	capsuleRadius = 0.6,
	health = 700,
	sight = 4,
	attackPower = 80,
	accuracy = 30,
	protection = 17,
	evasion = -10,
	coolDown = { 2, 3 },
	movementCoolDown = 2,
	noRecoilInterval = { 0.1, 1.0 }, -- interval must end at 1, otherwise turn attack can be interrupted (looks ugly)
	exp = 750,
	lootDrop = { 100, "ogre_hammer" },	
	healthIncrement = 50,
	attackPowerIncrement = 10,
	protectionIncrement = 1,
	brain = "Ogre",
	onDealDamage = function(self, champion, damage)
		party:shakeCamera(0.5, 0.3)
		party:playScreenEffect("damage_screen")
	end
}
Yeah I imagined that...but I'm quite a noob with lua code and I'll thank you about your patience!

Re: Statue Comes to life

Posted: Thu Oct 25, 2012 5:11 am
by HaunterV
Grimwold wrote:
HaunterV wrote:
onMove; onTurn; onAttack all return false.
Just these need to return false? or are there other things as well?
Yeah, those 3 should do it... it doesn't have ranged attack which is the only other relevant hook.

Give it a try with a simple cloned monster by adding the following to the definition.

Code: Select all

onMove = function(monster,direction)
  return false
end
onTurn = function(monster,direction)
  return false
end
onAttack  = function(monster,attack)
  return false
end
That monster will never move, turn or attack!


Of course for your actual statue you could set up a variable in a script entity (something like statue = 1) and each hook would check the value of that variable...

Code: Select all

statue =1

function checkStatue()
if statue == 1 then 
  return false 
elseif statue == 0 then
  return true
end
so when you want it to turn from a statue to a monster all you have to do is change the variable.

Code: Select all

function transformStatue()
  statue = 0
end

am ito understand the switching the variable will make the monster start moving again? like i wont need to do the puff of smoke swap out prop for monster thing? aweseome.

Re: Statue Comes to life

Posted: Thu Oct 25, 2012 2:13 pm
by Grimwold
HaunterV wrote: am ito understand the switching the variable will make the monster start moving again? like i wont need to do the puff of smoke swap out prop for monster thing? aweseome.
Yeah, that's the idea... as long as the hooks (onMove; onTurn; onAttack) are calling the checkStatue() function, which will need to be in a script entity in your dungeon along with the variable and the transform function, then a simple change to the variable will bring it to life.

Re: Statue Comes to life

Posted: Thu Oct 25, 2012 2:24 pm
by Grimwold
actually I've just tested this.. and while the Ogre doesn't move turn or attack, he still does his idle animations....

After further checking, there doesn't seem to be a way to prevent idle animations purely from the monster definition.. it has to have an animation file for the idle state... but perhaps someone with more modelling talent than I could create a static 'animation' for the ogre.

Re: Statue Comes to life

Posted: Thu Oct 25, 2012 4:15 pm
by Komag
sounds like the statue swap approach might be easier after all!

Re: Statue Comes to life

Posted: Thu Oct 25, 2012 6:47 pm
by HaunterV
would some sort of Idle animation = false script work you think?
Komag wrote:sounds like the statue swap approach might be easier after all!
looking like

Re: Statue Comes to life

Posted: Fri Oct 26, 2012 12:41 am
by Grimwold
HaunterV wrote:would some sort of Idle animation = false script work you think?
I'm not sure there's a way to do it.. looking at the basic ogre definition from the asset pack, what we have is:

Code: Select all

idle = "assets/animations/monsters/tunnel_ogre/tunnel_ogre_idle.fbx",
I've tried deleting the line but the editor complains.. It also complained when I left it blank. I set it to one of the other animations, like tunnel_ogre_walk, and it just repeatedly did that animation. So it looks like we need an animation file that essentially does nothing.

Re: Statue Comes to life

Posted: Fri Oct 26, 2012 4:02 am
by HaunterV
Xanathar is working with animations. maybe he'll have an idea.

Re: Statue Comes to life

Posted: Fri Oct 26, 2012 5:46 am
by msyblade
You can make him stay in idle simply by using blockers (Like say, for a shopkeeper). Perhaps you can modify the freeze spell effect and alter the color change to a drab gray, triggering it to end at will.

Re: Statue Comes to life

Posted: Fri Oct 26, 2012 11:54 am
by Neikun
The problem with staying idle is that it's not very statue like.