Page 1 of 1

Ewok issues [Solved]

Posted: Thu Mar 17, 2011 8:31 pm
by Snork
I've used scaled jedi animations with an ewok and about half of the time he is a few inches off the ground, is there any way to fix this?

Re: Ewok issues

Posted: Thu Mar 17, 2011 8:41 pm
by modmaster13
Check in the odf file for something like "OffSetScale"

Re: Ewok issues

Posted: Thu Mar 17, 2011 8:57 pm
by Snork
unfortunately, I found no such line :/

Re: Ewok issues

Posted: Fri Mar 18, 2011 5:23 am
by DarthD.U.C.K.
do you have this line in your odf:

Code: Select all

SkeletonRootScale	= "0.5"
that should put him on the ground.

Re: Ewok issues

Posted: Fri Mar 18, 2011 7:07 am
by Snork
Yes :/

dunno why I didn't just post my odf before, here it is
Hidden/Spoiler:
[code]// Maul
[GameObjectClass]
ClassParent = "com_jedi_default"
GeometryName = "tgt_ewk.msh"

[Properties]
AISizeType = "hover"

GeometryName = "tgt_ewk"
GeometryLowRes = "tgt_ewk_low1"
SkeletonRootScale = "0.5"
GeometryScale = "0.75"


AnimationName = "snork"

HealthType = "person"
MaxHealth = 5000.0
AddHealth = 20.0

MaxSpeed = 6.0
MaxStrafeSpeed = 9.0
MaxTurnSpeed = 7.5
JumpHeight = 7.5
RecoverFromTumble = "1"

NoEnterVehicles = 1

//Jet Jump
JetJump = "10.0" //The initial jump-push given when enabling the jet
JetPush = "0.0" //The constant push given while the jet is enabled (20 is gravity)
JetAcceleration = "10.0" // for characters with jet jump, use this acceleration for in air control
JetEffect = ""
JetFuelRechargeRate = "0.0" //Additional fuel per second (fuel is 0 to 1)
JetFuelCost = "0.0" //Cost per second when hovering (only used for jet-hovers)(fuel is 0 to 1)
JetFuelInitialCost = "0.0" //4initial cost when jet jumping(fuel is 0 to 1)
JetFuelMinBorder = "0.0" //minimum fuel to perform a jet jump(fuel is 0 to 1)
JetShowHud = 0
JetEnergyDrain = 40.0

CollisionScale = "0.0 0.0 0.0" // don't take damage from collisions
//Jet Jump End

WEAPONSECTION = 1
WeaponName = "jed_weap_snorksaber"
WeaponAmmo = 0


DropItemClass = "com_item_powerup_snork"
DropItemProbability = 1.0

//SOUND
//SndHeroSelectable = ""
//SndHeroSpawned = "hero_maul_spawn"
//SndHeroDefeated = "hero_maul_exhausted"
//SndHeroKiller = "hero_maul_exhausted"

//VOSound = "hero_maul_AcquiredTarget AcquiredTarget"
//VOSound = "hero_maul_KillingSpree4 KillingSpree4"

VOUnitType = 0181
//SoldierMusic = "cis_hero_Maul_lp"
HurtSound = ""
DeathSound = ""
AcquiredTargetSound = ""
HidingSound = ""
ApproachingTargetSound = ""
FleeSound = ""
PreparingForDamageSound = ""
HeardEnemySound = ""
//ShockFadeOutTime = "0.8"
//ShockFadeInTime = "2.0"
ShockFadeOutGain = ""
ShockSound = ""
ClothingRustleSound = ""
//LowHealthSound = "com_inf_saber_ambient"
LowHealthThreshold = "1.1"
FoleyFXClass = "rep_inf_soldier"
[/code]

Re: Ewok issues

Posted: Fri Mar 18, 2011 7:17 am
by DarthD.U.C.K.
which animations do you use? does he float all the time or just in some anims?

Re: Ewok issues

Posted: Sat Mar 19, 2011 10:19 am
by Snork
Hidden/Spoiler:
[code]ucft
{
ANIM
{
"snork_sabre_jumpattack_fall_full"
"snork_sabre_jumpattack_land_full"
"snork_sabre_landhard_full"
"snork_sabre_landsoft_full"
"snork_sabre_stand_attack1a_end_full"
"snork_sabre_stand_attack1a_full"
"snork_sabre_stand_attack1b_end_full"
"snork_sabre_stand_attack1b_full"
"snork_sabre_stand_attack1c_full"
}
}[/code]
That is the anim file being used, the only attack that stays on the ground is attack1c_full (which is actually ki-adi-mundi's jump attack)

Hidden/Spoiler:
[code]OffhandAnimation("stand_useforce", "FIRE")
{
Loop("FinalFrame");
AimType("Torso");
BlendInTime(0.15);
BlendOutTime(0.15);
}
OffhandAnimation("stand_useforce", "FIRE2");
OffhandAnimation("stand_useforce", "CHARGE");

Animation("stand_attack1a_end");
Animation("stand_attack1b");
Animation("stand_attack1a_upper")
{
AimType("None");
BlendInTime(0.0);
BlendOutTime(0.15);
BlendTimeTo("stand_attack1a_end", 0.0);
BlendTimeTo("stand_attack1b", 0.0);
}
Animation("stand_attack1a_lower")
{
BlendInTime(0.15);
BlendOutTime(0.15);
BlendTimeTo("stand_attack1a_end", 0.0);
BlendTimeTo("stand_attack1b", 0.0);
}

// Throw stuff....
ThrowAnimation("stand_throw");

State("CATCH_SABRE")
{
Posture("Stand");
// Sound("saber_catch");
Animation("stand_catch")
{
AimType("None");
BlendOutTime(0.2);
}

InputLock("All", "!Thrust");
AlignedToThrust();
}

State("IDLE")
{
Duration(0.0); // infinite duration
EnergyRestoreRate(); // (0.0, "FromSoldier")
InputLock(0.15, "Sprint", "Jump", "Crouch");

Transition("DEFLECT")
{
If()
{
Break(); // all transitions are breaking if Duration is 0
Posture("Stand", "Crouch");
Energy(">=", 2.5); // at least half a second worth of deflect time
Button("FireSecondary", "Press");
}
}
Transition("BACK_ATTACK")
{
If()
{
Break(); // all transitions are breaking if Duration is 0
Posture("Stand", "Crouch");
Button("Fire", "Press");
Thrust(">", 0.25);
ThrustAngle(135, 225);
}
}
Transition("ATTACK1")
{
If()
{
Break(); // all transitions are breaking if Duration is 0
Posture("Stand", "Crouch");
Button("Fire", "Press");
}
}
Transition("DASHATTACK")
{
If()
{
Break(); // all transitions are breaking if Duration is 0
Posture("Sprint");
Button("Fire", "Press");
}
}
Transition("JUMPATTACK_FALL")
{
If()
{
Break(); // all transitions are breaking if Duration is 0
Posture("Jump", "Jet");
//The following should be true during a jetjump, jump, or fall
// unless we're more than 0.35 seconds from the apex
//NOTE: This may not allow luke to jump attack during longer falls
// or falling from a force jump when it could.
//VelocityY(">", -6.3);
Button("Fire", "Press");
}
}
}

State("DEFLECT")
{
Posture("Stand");
Sound("imp_weap_lightsabre_block");
Animation("stand_block_idle")
{
Loop();
AimType("None");
BlendInTime(0.15);
BlendOutTime(0.15);
LowResPose(0, "Frames");
}

Duration(0.0); // infinite duration, looping anim

InputLock(0.0, "All", "!Thrust"); // lock all but move controller for duration of state
EnergyRestoreRate(-10.0); // drain energy while ready to deflect
Deflect()
{
DeflectAngle(-110, 110); // deflect anything from forward arc
EnergyCost(0.0);

DeflectAnimation("stand_block_front1", "Forward")
{
// AimType("Torso");
BlendInTime(0.00);
BlendOutTime(0.05);
LowResPose(5, "Frames");
}
DeflectAnimation("stand_block_front2", "Forward")
{
// AimType("Torso");
BlendInTime(0.00);
BlendOutTime(0.05);
LowResPose(5, "Frames");
}
DeflectAnimation("stand_block_left1", "Left")
{
// AimType("Torso");
BlendInTime(0.00);
BlendOutTime(0.05);
LowResPose(5, "Frames");
}
DeflectAnimation("stand_block_left2", "Left")
{
// AimType("Torso");
BlendInTime(0.00);
BlendOutTime(0.05);
LowResPose(5, "Frames");
}
DeflectAnimation("stand_block_right1", "Right")
{
// AimType("Torso");
BlendInTime(0.00);
BlendOutTime(0.05);
LowResPose(5, "Frames");
}
DeflectAnimation("stand_block_right2", "Right")
{
// AimType("Torso");
BlendInTime(0.00);
BlendOutTime(0.05);
LowResPose(5, "Frames");
}
}

Transition("ATTACK1")
{
If()
{
Break(); // all transitions are breaking if Duration is 0
Button("Fire", "Press");
}
}
Transition("DEFLECT_ROLL") // same as the code checking for rolling
{
EnergyCost(25.0);
If()
{
Break(); // all transitions are breaking if Duration is 0
Button("Crouch", "Press");
Thrust(">", 0.9);
ThrustAngle(-120, 120);
}
}
Transition("DEFLECT_CROUCH")
{
If()
{
Break(); // all transitions are breaking if Duration is 0
Button("Crouch", "Press");
}
}
Transition("DEFLECT_JUMP")
{
If()
{
Break(); // all transitions are breaking if Duration is 0
Button("Jump", "Press");
}
}
Transition("DEFLECT_SPRINT")
{
If()
{
Break(); // all transitions are breaking if Duration is 0
Button("Sprint", "Down");
}
}
Transition("IDLE")
{
If()
{
Break();
Energy("<=", 0.0); // if no energy left
}
Or()
{
Break(20, "Frames"); // all transitions are breaking if Duration is 0
Button("FireSecondary", "Press");
}
Or()
{
Break(); // all transitions are breaking if Duration is 0
Button("Reload", "Press");
}
}
}

State("DEFLECT_JUMP")
{
Posture("Jump");

MustShowOneFrame();

Transition("IDLE")
{
If()
{
Break(1, "Frames");
}
}
}

State("DEFLECT_CROUCH")
{
Posture("Crouch");

MustShowOneFrame();

Transition("IDLE")
{
If()
{
Break(1, "Frames");
}
}
}

State("DEFLECT_ROLL")
{
Posture("Roll");

MustShowOneFrame();

Transition("IDLE")
{
If()
{
Break(1, "Frames");
}
}
}

State("DEFLECT_SPRINT")
{
Posture("Sprint");

MustShowOneFrame();

Transition("IDLE")
{
If()
{
Break(1, "Frames");
}
}
}

State("BACK_ATTACK")
{
Posture("Stand");
Animation("stand_attack_backwards")
{
BlendInTime(0.15);
BlendOutTime(0.3);
}

Sound("saber_swing");

InputLock("All", "!Thrust");
AlignedToThrust();
Attack()
{
DamageTime(4, 9, "Frames");
DamageLength(1.5);
DamageWidth(0.75);
Damage(400);
Push(6.0);
}

Attack()
{
DamageTime(13, 20, "Frames");
DamageLength(1.5);
DamageWidth(0.75);
Damage(400);
Push(6.0);
}

Transition("IDLE");
}

//Forward declare animations to allow BlendTimeTo references:
Animation("stand_attack1b_end");
Animation("stand_attack1c");

State("ATTACK1")
{
Posture("Stand");
Animation("stand_attack1a");
Sound("saber_swing");

InputLock("All", "!Thrust");
AlignedToThrust();
Attack()
{
DamageTime(2, 9, "Frames");
DamageLength(1.5);
DamageWidth(0.75);
Damage(300);
Push(3.0);
}

Transition("ATTACK2")
{
If()
{
TimeStart(4, "Frames");
TimeEnd(14, "Frames"); //, "SyncIfOvertime");
Posture("Stand");
Button("Fire", "Press");
}
}
Transition("RECOVER1");
}

State("RECOVER1")
{
Posture("Stand");
Animation("stand_attack1a_end")
{
// SyncType("attack1b", "ByTime");
AimType("None");
BlendInTime(0.15);
BlendOutTime(0.15);
}

InputLock("All", "!Thrust");
AlignedToThrust();

Transition("IDLE");
}

State("ATTACK2")
{
Posture("Stand");
Animation("stand_attack1b")
{
// SyncType("attack1b", "ByTime");
AimType("None");
BlendInTime(0.06);
BlendOutTime(0.15);
BlendTimeTo("stand_attack1b_end", 0.0);
BlendTimeTo("stand_attack1c", 0.0);
}
Sound("saber_swing");

InputLock("All", "!Thrust");
AlignedToThrust();
Attack()
{
AttackID("MaceA2");
DamageTime(1, 6, "Frames");
DamageLength(1.5);
DamageWidth(0.75);
Damage(300);
Push(3.0);
}

Transition("ATTACK3")
{
If()
{
TimeStart(3, "Frames");
TimeEnd(18, "Frames"); //, "SyncIfOvertime");
Posture("Stand");
Button("Fire", "Press");
}
}
Transition("RECOVER2");
}

State("RECOVER2")
{
Posture("Stand");
Animation("stand_attack1b_end")
{
// SyncType("attack1c", "ByTime");
AimType("None");
BlendInTime(0.15);
BlendOutTime(0.15);
}

Attack()
{
AttackID("MaceA2");
DamageTime(1, 3, "Frames");
DamageLength(1.5);
DamageWidth(0.75);
Damage(300);
Push(3.0);
}

Transition("ATTACK3")
{
If()
{
TimeStart(0.0);
TimeEnd(6, "Frames"); //, "SyncIfOvertime");
Posture("Stand");
Button("Fire", "Press");
}
}

InputLock("All", "!Thrust");
AlignedToThrust();

Transition("IDLE");
}

State("ATTACK3")
{
Posture("Stand");
Animation("stand_attack1c")
{
// SyncType("attack1c", "ByTime");
AimType("None");
BlendInTime(0.06);
BlendOutTime(0.15);
}
Sound("saber_attack_three", 10, "Frames");

//set a duration so we will go to state RECOVER3 before the animation ends
Duration(18, "Frames");
AnimatedMove() // animation controls velocity for entire state
{
VelocityZ(0.0);
VelocityX(0.0);
VelocityFromThrust(8.0);
VelocityFromStrafe(3.0);
}
AlignedToThrust();

TurnFactor(0.5);

InputLock("All", "!Thrust"); // lock all controls for duration of state
Attack()
{
DamageTime(8, 16, "Frames");
DamageLength(1.5);
DamageWidth(0.75);
Damage(600);
Push(5.0);
}

Attack()
{
AttackID("MaceA3");
DamageTime(16, 28, "Frames");
DamageLength(1.5);
DamageWidth(0.75);
Damage(600);
Push(5.0);
}


Transition("ATTACK3_LAND");
}

State("ATTACK3_LAND")
{
Posture("Stand");
Animation("stand_attack1c")
{
// SyncType("attack1c", "ByTime");
AimType("None");
BlendInTime(0.06);
BlendOutTime(0.15);
}
Sound("saber_attack_three");

//set a duration so we will go to state RECOVER3 before the animation ends
AnimatedMove() // animation controls velocity for entire state
{
VelocityZ(0.0);
VelocityX(0.0);
VelocityFromThrust(0.5);
VelocityFromStrafe(0.5);
Until()
{
Break(28, "Frames");
}
}
AlignedToThrust();

TurnFactor(0.5);

InputLock("All", "!Thrust"); // lock all controls for duration of state

Attack()
{
AttackID("MaceA3");
DamageTime(16, 28, "Frames");
DamageLength(1.5);
DamageWidth(0.75);
Damage(600);
Push(5.0);
}


Transition("IDLE");
}

State("DASHATTACK")
{
Posture("Stand");
Animation("stand_dashattack")
{
AimType("FullBody");
BlendInTime(0.10);
BlendOutTime(0.25);
}
Sound("saber_swing");

AnimatedMove()
{
VelocityZ(17.0);
VelocityX(0.0);
VelocityFromThrust(5.0);
VelocityFromStrafe(1.0);
}
TurnFactor(0.3);

Duration(14, "Frames");

InputLock("All", "!Thrust");
Attack()
{
DamageTime(1, 5, "Frames");
DamageLength(1.5);
DamageWidth(0.75);
Damage(400);
Push(3.0);
}

Transition("DASHATTACK2");
}

State("DASHATTACK2")
{
Posture("Stand");
Animation("stand_dashattack")
{
AimType("FullBody");
BlendInTime(0.10);
BlendOutTime(0.25);
}
Sound("saber_swing");

AnimatedMove()
{
VelocityZ(0.0);
VelocityX(0.0);
VelocityFromThrust(0.0);
VelocityFromStrafe(0.0);
}
TurnFactor(0.3);

InputLock("All");
Attack()
{
DamageTime(20, 23, "Frames");
DamageLength(1.5);
DamageWidth(0.75);
Damage(400);
Push(5.0);
}

Transition("ATTACK2")
{
If()
{
Break(24, "Frames");
TimeStart(0.0);
TimeEnd(0.25, "FromEnd"); //, "SyncIfOvertime");
Posture("Stand");
Button("Fire", "Press");
}
}

Transition("IDLE");
}

// forward declare jumpattack_land, since jumpattack_fall refers to it:
Animation("jumpattack_land");

State("JUMPATTACK_FALL")
{
Posture("Jump");

Animation("jumpattack_fall")
{
Loop("FinalFrame");
AimType("None");
BlendInTime(0.15);
BlendOutTime(0.15);
// BlendTimeTo("jumpattack_land", 0.15);
}

Sound("com_weap_throw");

Duration(0);

EnergyRestoreRate(0.0);

Gravity(4.0);
GravityVelocityTarget(-20.0); // accelerate us
AnimatedMove();
InputLock("All", "!Thrust"); // lock all buttons for duration of state

Transition("JUMPATTACK_LAND")
{
If()
{
Break();
Posture("Stand");
}
}
Transition("IDLE")
{
If()
{
Break();
Posture("Any", "!Stand", "!Jump", "!Jet");
}
}
}

State("JUMPATTACK_LAND")
{
Posture("Stand");

Animation("jumpattack_land")
{
AimType("FullBody");
//SyncType("jumpattack_land", "ByTime");
BlendInTime(0.00);
BlendOutTime(0.20);
}

Attack()
{
AttackID("Earthquake");
DamageTime(0, 4, "Frames");
DamageLength(1.0);
DamageWidth(0.5);
Damage(1200);
}

RestartAnimation();
Duration(4, "Frames");

EnergyRestoreRate(0.0);

AnimatedMove();
InputLock("All");

Transition("JUMPATTACK_LAND2");
}

State("JUMPATTACK_LAND2")
{
Posture("Stand");

Attack()
{
AttackID("Earthquake");
DamageTime(0, 6, "Frames");
DamageLength(1.5);
DamageWidth(0.5);
Damage(0);
}


Animation("jumpattack_land")
{
AimType("FullBody");
//SyncType("jumpattack_land", "ByTime");
BlendInTime(0.00);
BlendOutTime(0.20);
}

EnergyRestoreRate(0.0);

PlayExplosion(); // yep...

AnimatedMove();
InputLock("All");
}[/code]
and that is the combo

Re: Ewok issues

Posted: Sat Mar 19, 2011 10:52 am
by DarthD.U.C.K.
i mean where you took the anims from and does he float all the time?

Re: Ewok issues

Posted: Sat Mar 19, 2011 11:21 am
by Snork
The animations were based on mace, but the 3rd attack is mundi's aerial attack. The dash attack is luke's.

His 3 combo attacks are all on the floor as long as he stands still. When walking, the only attack on the floor is the 3rd one.

Re: Ewok issues

Posted: Tue Mar 22, 2011 7:36 pm
by SAMofBIA
hmm i guess this wouldnt be the animations you want, but if worse comes to worst, you could always use yoda animations.

Re: Ewok issues

Posted: Wed Mar 23, 2011 10:15 am
by DarthD.U.C.K.
SAMofBIA wrote:hmm i guess this wouldnt be the animations you want, but if worse comes to worst, you could always use yoda animations.
thats not necessary, if worst comes to worst he can only use animations of certain sets.

do you have maces walkinganimations in your set?

my theory on this issue is that in certain animations pandemic keyframed the height of the bone_root, whereas in other animations it ist keyframed. the result is that in some anims the units are put off the ground because the height of the boneroot is keyframed and somehow overrides the skeletonrootscale.

Re: Ewok issues

Posted: Wed Mar 23, 2011 2:33 pm
by Snork
Duck, you are awesome! Thanks tons man! (solved :D)

Re: Ewok issues

Posted: Wed Mar 23, 2011 3:27 pm
by DarthD.U.C.K.
you are welcome
im glad it worked. :D

Re: Ewok issues [Solved]

Posted: Wed Mar 23, 2011 9:34 pm
by SAMofBIA
i would have to agree with Snork on this one...DUCK is awesome :thumbs:

Re: Ewok issues [Solved]

Posted: Thu Mar 24, 2011 7:35 am
by Snork
Just incase anyone is wondering, the easiest way to solve this problem is to remunge human_sabre with a different name and scale it because that automatically has all the base animations. Some are just human animations so they're still funky but its hardly noticable.