8,288
edits
(moved in the deeper explanation of anim lookup from the talk page; broke out explanations of Weight and idle timer into sep. sections; moved "Open questions" up and added other questions found on the talk page; consolidated notes about "varient" misspelling) |
Paradox-01 (talk | contribs) m (phone view compatible) |
||
(13 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
{{XML_File_Header | prev=TRAC | type=TRAM | next=TRAS | name=Totoro Animation}} | {{XML_File_Header | prev=TRAC | type=TRAM | next=TRAS | name=Totoro Animation}} | ||
{{update|This article contains links to the now defunct Oni Central Forum. Sections: List of Tags near <Attack>, Editing 3D Data}} | |||
{{TOCfloat|side=right}} | |||
==General information== | ==General information== | ||
TRAM files — animation data for characters — are basically made of three chunks: | TRAM files — animation data for characters — are basically made of three chunks: | ||
Line 42: | Line 43: | ||
===Elaboration=== | ===Elaboration=== | ||
Animations never stop – they flow from one to another. (See the concept of [[wp: | Animations never stop – they flow from one to another. (See the concept of [[wp:Finite-state machine|state machines]] in gaming.) The default case is a character getting spawned and then just standing there: he idles forever. This brings us to the core attributes of every animation: '''type, state, variant'''. | ||
Now then, the idle animation does not link to a specific follow-up animation – it rather links to a follow-up ''state''. | Now then, the idle animation does not link to a specific follow-up animation – it rather links to a follow-up ''state''. | ||
: Ironically all anims have a <FromState> and a <ToState> field, but no obvious <CurrentState> which can cause confusion on what the current anim's state actually is. This gives us two options of how to think about the situation: either consider <FromState> as usually being the <CurrentState>, or states exist only ''between'' anims and serve as ''transition rules''. | : Ironically all anims have a <FromState> and a <ToState> field, but no obvious <CurrentState> which can cause confusion on what the current anim's state actually is. This gives us two options of how to think about the situation: either consider <FromState> as usually being the <CurrentState>, or states exist only ''between'' anims and serve as ''transition rules''. | ||
Linking to a follow-up state allows for multiple choices of what specific anim comes next. An anim is picked up randomly from a pool of valid anims. Their probability or <Weight> is determined by the anim listing in the TRAC – the anim collection (see | Linking to a follow-up state allows for multiple choices of what specific anim comes next. An anim is picked up randomly from a pool of valid anims. Their probability or <Weight> is determined by the anim listing in the TRAC – the anim collection (see {{SectionLink||Weights}} for an explanation of exactly how <Weight> is handled). | ||
Anyway, to let an character flow from one anim state to another, the <ToState> is used. Let's say an SBG grenade hits Konoko. The particle's '''damage type''' is '''blownup'''; this and the direction of the incoming damage force an anim of type '''Blownup''' or '''BlownupBehind''' to play, such as TRAMKONOKOblownup1. | Anyway, to let an character flow from one anim state to another, the <ToState> is used. Let's say an SBG grenade hits Konoko. The particle's '''damage type''' is '''blownup'''; this and the direction of the incoming damage force an anim of type '''Blownup''' or '''BlownupBehind''' to play, such as TRAMKONOKOblownup1. | ||
Line 67: | Line 68: | ||
==Weights== | ==Weights== | ||
Let's say that we're playing as a Ninja, we are in the state Standing, and we hit the action key to perform a taunt. The engine recognizes the context (no console to interact with), places the character in combat mode, and looks up anims of type Taunt. Since we are in combat mode, the next anim must be of variant Combat if possible. These lookups boil down to two valid possible anims: NINCOMtaunt1 (a spin) and NINCOMtaunt2 (the [[wp: | Let's say that we're playing as a Ninja, we are in the state Standing, and we hit the action key to perform a taunt. The engine recognizes the context (no console to interact with), places the character in combat mode, and looks up anims of type Taunt. Since we are in combat mode, the next anim must be of variant Combat if possible. These lookups boil down to two valid possible anims: NINCOMtaunt1 (a spin) and NINCOMtaunt2 (the [[wp:Moonwalk (dance)|moon walk]] Easter egg). The engine picks one of them randomly. | ||
However, NINCOMtaunt1 has a TRAC Weight (probability) of 100 while NINCOMtaunt2 has a TRAC Weight value of just 5. So the chances are quite high that we will not see the moon walk taunt. | However, NINCOMtaunt1 has a TRAC Weight (probability) of 100 while NINCOMtaunt2 has a TRAC Weight value of just 5. So the chances are quite high that we will not see the moon walk taunt. | ||
Line 193: | Line 194: | ||
::(This bit is not stored on disk; it is used at runtime to mark that the animation was loaded.) | ::(This bit is not stored on disk; it is used at runtime to mark that the animation was loaded.) | ||
:Invulnerable | :Invulnerable | ||
::While playing this animation, the player is invulnerable to melee damage and also cannot be thrown | ::While playing this animation, the player is invulnerable to melee damage and also cannot be thrown, but can still take damage from particles and falls. | ||
:BlockHigh | :BlockHigh | ||
::While playing this animation, the player | ::While playing this animation, the player can block high or undefined-height attacks within some arc in front of him. The height of an attack is found under the <Attack> section. If you set this flag on an animation where the player character is spinning, then the character can still be kicked in the back or thrown. | ||
:BlockLow | :BlockLow | ||
::Same as above, only it can block low or undefined attacks. | ::Same as above, only it can block low or undefined-height attacks. | ||
:Attack | :Attack | ||
:: | ::Unused by the engine. | ||
:DropWeapon | :DropWeapon | ||
::If the player is armed, he drops his weapon when this animation plays. | ::If the player is armed, he drops his weapon when this animation plays. | ||
:InAir | :InAir | ||
:: | ::Unused by the engine. | ||
:Atomic | :Atomic | ||
:: | ::Unused by the engine. Only the Start and End frames of the Atomic field below matter. | ||
:NoTurn | :NoTurn | ||
:::Player cannot turn | :::Player cannot turn while performing this animation. | ||
:AttackForward | :AttackForward | ||
:: | ::Unused by the engine. | ||
:AttackLeft | :AttackLeft | ||
::Same as above. | ::Same as above. | ||
Line 221: | Line 222: | ||
::Unknown, but maybe it has something to do with {x,y,z} velocities and the fact that directional jumps, for example, take information about their direction vector from the {x,z} velocity part of the TRAM (the vertical Y component is in the ONCC). | ::Unknown, but maybe it has something to do with {x,y,z} velocities and the fact that directional jumps, for example, take information about their direction vector from the {x,z} velocity part of the TRAM (the vertical Y component is in the ONCC). | ||
:ThrowSource | :ThrowSource | ||
:: | ::Oni expects this flag on all throw source animations. | ||
::: | :::Throws work in animation pairs: whenever a throw source is played, the other character must perform the throw target animation. See throw(n) types: | ||
:::: TRAM <TargetType> | ::::TRAM <TargetType> from [[XML:StNA#Animation types|StNA]] (first <u>used</u> throw starts at #96). | ||
:::Characters have only their own pool of animations available. And since enemy's TRAC might not contain the necessary animation the information must be provided by the throw source TRAC. | |||
::: Characters have only their own pool of animations available. And since enemy's TRAC might not contain the necessary animation the information must be provided by the throw source TRAC. | |||
::: Since every throw animation must have a throw animation type the ThrowSource flag is actually redundant. | ::: Since every throw animation must have a throw animation type the ThrowSource flag is actually redundant. | ||
:ThrowTarget | :ThrowTarget | ||
Line 231: | Line 231: | ||
:::If you set the first attack part to be able to deal damage from the 1st to the 100th frame of the TRAM, and the second attack part to deal damage within that range (e.g. from the 25th to the 41st frame), then the first attack part will deal damage from the 1st to the 100th frame (as usual), but even if it hits, that second attack part can hurt the enemy as well during frames 25–41. Note that the second attack part must be executed within the first attack part's active "window", otherwise it won't work. | :::If you set the first attack part to be able to deal damage from the 1st to the 100th frame of the TRAM, and the second attack part to deal damage within that range (e.g. from the 25th to the 41st frame), then the first attack part will deal damage from the 1st to the 100th frame (as usual), but even if it hits, that second attack part can hurt the enemy as well during frames 25–41. Note that the second attack part must be executed within the first attack part's active "window", otherwise it won't work. | ||
:RealWorld | :RealWorld | ||
::It appears this flag was used to create a TRAM and an OBAN from one animation source. The OBAN is supposed to store pelvis rotations and positions, allowing a character to move over obstacles/gaps. The vast majority of | ::Unused by the engine. It appears this flag was used during the authoring process to create a TRAM and an OBAN from one animation source. The OBAN is supposed to store pelvis rotations and positions, allowing a character to move over obstacles/gaps. The vast majority of TRAMs with this flag are used in cutscenes. | ||
:DoAim | :DoAim | ||
::Applies the aiming animation overlay (PIS/RIF) if the player has a weapon. | ::Applies the aiming animation overlay (PIS/RIF) if the player has a weapon. | ||
Line 239: | Line 239: | ||
::Player can pick up an item during this animation if he intersects with one during his movement. | ::Player can pick up an item during this animation if he intersects with one during his movement. | ||
:Aim360 | :Aim360 | ||
:: | ::Unused by the engine. | ||
:DisableShield | :DisableShield | ||
::If the player has an active supershield | ::If the player has an active [[supershield]], this disables it (the flag is placed on four Mutant Muro attacks: his two supers, the claw-stuck-into-ground move and the sliding "[[wikt:kancho|kancho]]" maneuver; it is also hardcoded to be removed when the Zeus Thunderbolt attack is used). | ||
:NoAIPickup | :NoAIPickup | ||
::AIs are not permitted to pick up items with this animation. | ::AIs are not permitted to pick up items with this animation. | ||
Line 247: | Line 247: | ||
| <Atomic> | | <Atomic> | ||
| parent tag | | parent tag | ||
| | | Animation cannot be interrupted by player between the Start and End frames. | ||
|- | |- | ||
| <Start> | | <Start> | ||
Line 259: | Line 259: | ||
| <Invulnerable> | | <Invulnerable> | ||
| parent tag | | parent tag | ||
| Character will not take melee damage | | Character will not take melee damage and cannot be thrown between the Start and End frames. | ||
|- | |- | ||
| <Start> | | <Start> | ||
Line 368: | Line 368: | ||
|valign="top"| <FinalRotation> | |valign="top"| <FinalRotation> | ||
|valign="top"| float | |valign="top"| float | ||
|valign="top"| Ending rotation in degrees. (During an animation, the camera is detached rotation-wise. If this value matches the body's final rotation, it will prevent a "glitchy" re-attaching.) | |valign="top"| Ending rotation in degrees. (During an animation on the player character, the camera is detached rotation-wise. If this value matches the body's final rotation, it will prevent a "glitchy" re-attaching.) | ||
|- | |- | ||
|valign="top"| <Direction> | |valign="top"| <Direction> | ||
|valign="top"| | |valign="top"| | ||
| Used by [[AI# | | Used by [[AI#Melee combat behaviors|AI melee system]]. | ||
:None | :None | ||
:Forward | :Forward | ||
Line 381: | Line 381: | ||
| <Vocalization> | | <Vocalization> | ||
| int | | int | ||
| ID of one of the [[XML:SNDD# | | ID of one of the [[XML:SNDD#Step 1: Preparing the TRAM|SoundConstants in ONCC]] | ||
|- | |- | ||
| <ActionFrame> | | <ActionFrame> | ||
Line 589: | Line 589: | ||
|valign="top"| <Position> | |valign="top"| <Position> | ||
|valign="top"| 3 * float | |valign="top"| 3 * float | ||
| Contains XYZ values, which position the target character: | | Contains XYZ values, which position the target character at the start of the animation: | ||
*X - Side axis. Negative values move the target to the right and positive values move the target to the left. | *X - Side axis. Negative values move the target to the right and positive values move the target to the left. | ||
*Y - Height axis. Negative values move the target downwards, but cannot make the target go below the floor. Positive values make the target go upwards | *Y - Height axis. Negative values move the target downwards, but cannot make the target go below the floor. Positive values make the target go upwards; this will lift the target's collision sphere off the ground as if they jumped. However if the value is too big, the target will teleport upward and then immediately start falling, interrupting the target animation. | ||
*Z - Forward axis. Negative values move the target backwards and positive values move the target forward. | *Z - Forward axis. Negative values move the target backwards and positive values move the target forward. | ||
|- | |- | ||
Line 600: | Line 600: | ||
| <Distance> | | <Distance> | ||
| float | | float | ||
| Activation distance. The throw can be triggered if it is within this range. However the value must be greater than the equivalent TRAM in the parent TRAC. | | Activation distance. The throw can be triggered if it is within this range. However the value must be greater than the equivalent TRAM in the parent TRAC or else the equivalent TRAM will play when the throw takes place outside of this TRAM's range and within that TRAM's range. | ||
|- | |- | ||
|valign="top"| <TargetType> | |valign="top"| <TargetType> | ||
Line 661: | Line 661: | ||
|valign="top"| <Attack> | |valign="top"| <Attack> | ||
|valign="top"| parent tag | |valign="top"| parent tag | ||
| Only 2 attack parts per file are allowed. Normally the target gets only one hit. But if the attack frame ranges of both attack parts are overlapping, then the target can be | | Only 2 attack parts per file are allowed. Normally the target gets only one hit. But if the attack frame ranges of both attack parts are <span style="font-weight: bold; color: red;">overlapping</span>, then the target can be hit by both of them. | ||
Total frames: ============================== | |||
Attack 1: ---#########<span style="font-weight: bold; color: red;">#####</span>------------- | |||
Attack 2: ------------<span style="font-weight: bold; color: red;">#####</span>#########---- | |||
|- | |- | ||
| <Start> | | <Start> | ||
Line 681: | Line 686: | ||
: Low - Target of attack needs to crouch in order to block this attack. | : Low - Target of attack needs to crouch in order to block this attack. | ||
: High - Blocker needs to stand; if both Low and High are set, blocker can block from both standing and crouching positions. | : High - Blocker needs to stand; if both Low and High are set, blocker can block from both standing and crouching positions. | ||
: HalfDamage - Blocker receives half of the normal damage. | : HalfDamage - Blocker still receives half of the normal damage. | ||
|- | |- | ||
| <Knockback> | | <Knockback> | ||
| float | | float | ||
| Target gets knocked back by this amount. | | Target gets knocked back by this amount if attack is successful. | ||
|- | |- | ||
| <HitPoints> | | <HitPoints> | ||
Line 693: | Line 698: | ||
| <HitType> | | <HitType> | ||
| flag | | flag | ||
| Animation type for opponent's animation when the attack isn't blocked. The flags are part of the [[XML:StNA# | | Animation type for opponent's animation when the attack isn't blocked. The flags are part of the [[XML:StNA#Animation types|animation type list]]. | ||
|- | |- | ||
| <HitLength> | | <HitLength> | ||
| int16 | | int16 | ||
| Number of frames that the target should remain in his hit animation state when he gets hit. | | Number of frames that the target should remain in his hit animation state when he gets hit. If ≥ 20, Oni automatically upgrades the character to a stagger animation. | ||
|- | |- | ||
| <StunLength> | | <StunLength> | ||
| int16 | | int16 | ||
| Number of frames that the target should remain in his blocking animation state when he blocks the attack. | | Number of frames that the target should remain in his blocking animation state when he blocks the attack. If ≥ 15, Oni automatically upgrades the character to a block stun. | ||
|- | |- | ||
| <StaggerLength> | | <StaggerLength> | ||
Line 713: | Line 718: | ||
| <Extent> | | <Extent> | ||
| parent tag | | parent tag | ||
| One tag per attack frame. Number of <Extent> tags = <Attack><End> - <Attack><Start> + 1 | | One tag per attack frame. Number of <Extent> tags = <Attack><End> - <Attack><Start> + 1. | ||
|- | |- | ||
| <Angle> | | <Angle> | ||
Line 813: | Line 818: | ||
===Attacks=== | ===Attacks=== | ||
====Extents and XML==== | ====Extents and XML==== | ||
'''As a regular modder you don't need to know how the attack ring and the extents get calculated.''' If you just want to create an attack animation then add an appropriate <Attacks> code block to your XML as seen | '''As a regular modder you don't need to know how the attack ring and the extents get calculated.''' If you just want to create an attack animation then add an appropriate <Attacks> code block to your XML as seen under {{SectionLink||Using OniSplit to calculate extents}}. | ||
'''How attack ring (horizontal extents) and extents get calculated''' | '''How attack ring (horizontal extents) and extents get calculated''' | ||
Line 881: | Line 886: | ||
===Throws=== | ===Throws=== | ||
;States | |||
The first anim state of source (src) and target (tgt) is the "primary" <FromState>. The others <FromState> entries are located in <Shortcut>. | |||
;Types | |||
Throw target animations are registered in the TRAC of the throw initiator (AKA the throw source). Target animations are forced onto the other character. Throw target (TRAM*tgt) animations can only cover up to 256 frames (0-255). | |||
The game identifies which Target animation is it supposed to play through the ''ThrownX'' animation types. Each throw, together with its corresponding Target animation, uses one of the 17 available ''ThrownX'' animation types. These types are used in three tags: | |||
* <TargetType> tag in the Source animation, | |||
* <Type> and <AimingType> tags in the Target animation. | |||
For example, Konoko's forward punch throw / ''KONCOMthrow_fw_p'' uses Thrown1 as its TargetType tag: | |||
<TargetType>Thrown1</TargetType> | |||
And the corresponding target animation, ''KONCOMthrow_fw_p'', uses Thrown1 in the Type and AimingType tags: | |||
<Type>Thrown1</Type> | |||
<AimingType>Thrown1</AimingType> | |||
The ''ThrownX'' anim types work like slots - if you want to add a new throw to the game, you have to assign both the Source and the Target animations the same ThrownX type in the tags listed above. While these "pairs" are organized within vanilla animations according to the Throw Table below, this is nothing more than a convention, and as a result ''ThrownX'' types can be used freely. To give an example, while all Forward Punch Throws in the game seem to use the Thrown1 type, you can swap those types with another throw and they will work just as fine. | |||
The fact that the game has only 17 ''ThrownX'' types is a major limitation - this effectively means that each character can have no more than 17 throws - out of which only 4 are unused by any character in the game. This prevents modders from creating a significant number of throws despite the game allowing great flexibility in creating new throws by mixing Animation States, Animation Types and <Varient> tags. | |||
{{divhide|Throw table for vanilla Oni}} | |||
{| class="wikitable" width=100% | {| class="wikitable" width=100% | ||
|- | |- | ||
Line 924: | Line 947: | ||
|<!--anim type src--> '''ThrowForwardPunch''' | |<!--anim type src--> '''ThrowForwardPunch''' | ||
|<!--anim type tgt--> '''Thrown1''' | |<!--anim type tgt--> '''Thrown1''' | ||
|<!--image--> [[ | |<!--image--> [[Image:KONCOMthrow_fw_p.jpg|200px]] | ||
|-style="vertical-align:top;" | |-style="vertical-align:top;" | ||
|<!--names--> static throw forward kick | |<!--names--> static throw forward kick | ||
Line 941: | Line 964: | ||
|<!--anim type src--> '''ThrowForwardKick''' | |<!--anim type src--> '''ThrowForwardKick''' | ||
|<!--anim type tgt--> '''Thrown2''' | |<!--anim type tgt--> '''Thrown2''' | ||
|<!--image--> [[ | |<!--image--> [[Image:KONCOMthrow_fw_k.jpg|200px]] | ||
|-style="vertical-align:top;" | |-style="vertical-align:top;" | ||
|<!--names--> static throw backward punch | |<!--names--> static throw backward punch | ||
Line 960: | Line 983: | ||
|<!--anim type src--> '''ThrowBackwardPunch''' | |<!--anim type src--> '''ThrowBackwardPunch''' | ||
|<!--anim type tgt--> '''Thrown3''' | |<!--anim type tgt--> '''Thrown3''' | ||
|<!--image--> [[ | |<!--image--> [[Image:KONCOMthrow_bk.jpg|200px]] | ||
|-style="vertical-align:top;" | |-style="vertical-align:top;" | ||
|<!--names--> static throw backward punch | |<!--names--> static throw backward punch | ||
Line 979: | Line 1,002: | ||
|<!--anim type src--> '''ThrowBackwardKick''' | |<!--anim type src--> '''ThrowBackwardKick''' | ||
|<!--anim type tgt--> '''Thrown4''' | |<!--anim type tgt--> '''Thrown4''' | ||
|<!--image--> [[ | |<!--image--> [[Image:KONCOMthrow_bk_k.jpg|200px]] | ||
|-style="vertical-align:top;" | |-style="vertical-align:top;" | ||
! colspan=9 | run throws | ! colspan=9 | run throws | ||
Line 1,003: | Line 1,026: | ||
|<!--anim type src--> '''RunThrowForwardPunch''' | |<!--anim type src--> '''RunThrowForwardPunch''' | ||
|<!--anim type tgt--> '''Thrown5''' | |<!--anim type tgt--> '''Thrown5''' | ||
|<!--image--> [[ | |<!--image--> [[Image:KONCOMrun_throw_fw.jpg|200px]] | ||
|-style="vertical-align:top;" | |-style="vertical-align:top;" | ||
|<!--names--> run throw forward kick | |<!--names--> run throw forward kick | ||
Line 1,024: | Line 1,047: | ||
|<!--anim type src--> '''RunThrowForwardKick''' | |<!--anim type src--> '''RunThrowForwardKick''' | ||
|<!--anim type tgt--> '''Thrown6''' | |<!--anim type tgt--> '''Thrown6''' | ||
|<!--image--> [[ | |<!--image--> [[Image:KONCOMrun_thw_fw_k.jpg|200px]] | ||
<!-- | <!-- | ||
identical headers but | identical headers but | ||
Line 1,075: | Line 1,098: | ||
|<!--anim type src--> '''RunThrowBackwardKick''' | |<!--anim type src--> '''RunThrowBackwardKick''' | ||
|<!--anim type tgt--> '''Thrown8''' | |<!--anim type tgt--> '''Thrown8''' | ||
|<!--image--> [[ | |<!--image--> [[Image:REDCOMrun_thw_bk_k.jpg|200px]] | ||
|-style="vertical-align:top;" | |-style="vertical-align:top;" | ||
! colspan=9 | catching throws a.k.a. tackle throws | ! colspan=9 | catching throws a.k.a. tackle throws | ||
Line 1,105: | Line 1,128: | ||
|<!--anim type src--> '''RunThrowBackwardPunch''' | |<!--anim type src--> '''RunThrowBackwardPunch''' | ||
|<!--anim type tgt--> '''Thrown10''' | |<!--anim type tgt--> '''Thrown10''' | ||
|<!--image--> [[ | |<!--image--> [[Image:KONCOMrun_tkl_bk_p.jpg|200px]] | ||
|-style="vertical-align:top;" | |-style="vertical-align:top;" | ||
! colspan=9 | disarm throws | ! colspan=9 | disarm throws | ||
Line 1,124: | Line 1,147: | ||
|<!--anim type src--> '''ThrowForwardPunch''' | |<!--anim type src--> '''ThrowForwardPunch''' | ||
|<!--anim type tgt--> '''Thrown11''' | |<!--anim type tgt--> '''Thrown11''' | ||
|<!--image--> [[ | |<!--image--> [[Image:KONPISthrow_fw_p.jpg|200px]] | ||
|-style="vertical-align:top;" | |-style="vertical-align:top;" | ||
|<!--names--> pistol disarm throw forward kick | |<!--names--> pistol disarm throw forward kick | ||
Line 1,141: | Line 1,164: | ||
|<!--anim type src--> '''ThrowForwardKick''' | |<!--anim type src--> '''ThrowForwardKick''' | ||
|<!--anim type tgt--> '''Thrown12''' | |<!--anim type tgt--> '''Thrown12''' | ||
|<!--image--> [[ | |<!--image--> [[Image:KONPISthrow_fw_k.jpg|200px]] | ||
|-style="vertical-align:top;" | |-style="vertical-align:top;" | ||
|<!--names--> pistol disarm throw backward punch | |<!--names--> pistol disarm throw backward punch | ||
Line 1,160: | Line 1,183: | ||
|<!--anim type src--> '''ThrowBackwardPunch''' | |<!--anim type src--> '''ThrowBackwardPunch''' | ||
|<!--anim type tgt--> '''Thrown13''' | |<!--anim type tgt--> '''Thrown13''' | ||
|<!--image--> [[ | |<!--image--> [[Image:KONPISthrow_bk.jpg|200px]] | ||
|-style="vertical-align:top;" | |-style="vertical-align:top;" | ||
|<!--names--> (never used) | |<!--names--> (never used) | ||
Line 1,187: | Line 1,210: | ||
|<!--anim type src--> '''ThrowForwardPunch''' | |<!--anim type src--> '''ThrowForwardPunch''' | ||
|<!--anim type tgt--> '''Thrown15''' | |<!--anim type tgt--> '''Thrown15''' | ||
|<!--image--> [[ | |<!--image--> [[Image:KONRIFthrow_fw_p.jpg|200px]] | ||
|-style="vertical-align:top;" | |-style="vertical-align:top;" | ||
|<!--names--> rifle disarm throw backward punch | |<!--names--> rifle disarm throw backward punch | ||
Line 1,204: | Line 1,227: | ||
|<!--anim type src--> '''ThrowBackwardPunch''' | |<!--anim type src--> '''ThrowBackwardPunch''' | ||
|<!--anim type tgt--> '''Thrown16''' | |<!--anim type tgt--> '''Thrown16''' | ||
|<!--image--> [[ | |<!--image--> [[Image:KONRIFthrow_bk_p.jpg|200px]] | ||
|-style="vertical-align:top;" | |-style="vertical-align:top;" | ||
|<!--names--> (never used) | |<!--names--> (never used) | ||
Line 1,216: | Line 1,239: | ||
|<!--image--> | |<!--image--> | ||
|} | |} | ||
{{divhide|end}} | |||
;Running disarms | |||
Oni offers support for running disarms (originally noticed [[OBD:BINA/OBJC/MELE/MoveList/Throw|HERE]]), which was taken advantage of by Delano's mod [http://mods.oni2.net/node/353 54000 New Combat Moves for Konoko]. | |||
;Forward throws | |||
Scenario: You load two characters into Mod Tool and rotate (+/-180°) the throw target character because you need them to stand face to face as you work on an animation. When you are done animating, the target animation would need to be reversed again. This means multiplying the velocities by -1; the rotation also needs correcting. So it looks like you need *(-1) for the x rotation and -/+180° (depending on your initial change) for the Y rotation. | Scenario: You load two characters into Mod Tool and rotate (+/-180°) the throw target character because you need them to stand face to face as you work on an animation. When you are done animating, the target animation would need to be reversed again. This means multiplying the velocities by -1; the rotation also needs correcting. So it looks like you need *(-1) for the x rotation and -/+180° (depending on your initial change) for the Y rotation. | ||
There is a Blender script implemented within the BlenderOni addon for rotating and adding PositionOffset to a forward throw Target animation. It is capable of adjusting both forward and back throws. The script's old version can be accessed [[Blender/Obsolete scripts#Script for adjusting forward throw targets|HERE]]. | |||
There is a Blender script implemented within the BlenderOni addon for rotating and adding PositionOffset to a forward throw Target animation. It is capable of adjusting both forward and back throws. The script's old version can be accessed [[Blender/ | |||
===Run animations=== | ===Run animations=== | ||
Line 1,253: | Line 1,278: | ||
==List of unused animations== | ==List of unused animations== | ||
Here are all the known unused animations. These could be recycled in a new mod. | Here are all the known unused animations, with links to videos of them where applicable. These could be recycled in a new mod. | ||
'''From the original game''' | '''From the original game''' | ||
* KONOKOconsole_punch: What the name says (the engine can use that animation depending on the console's configuration, see [[OBD:BINA/OBJC/CONS|CONS]]) . | * KONOKOconsole_punch: What the name says (the engine can use that animation depending on the console's configuration, see [[OBD:BINA/OBJC/CONS|CONS]]) . | ||
* KONOKOlev3_intro: Looks like she's placing something (bomb?) and then running away. | * KONOKOlev3_intro: Looks like she's placing something (bomb?) and then running away. | ||
* KONOKOlev4_undress: From an aborted clothes-changing cutscene. | * [https://www.youtube.com/watch?v=dszw2vmlmzw KONOKOlev4_undress]: From an aborted clothes-changing cutscene. | ||
* KONOKOlev16_bomb: Planting a bomb. | * KONOKOlev16_bomb: Planting a bomb. | ||
* KONCOMsuper_kick: Now used in [[OTA]] as a spawn event, and by the fan-made character [[Shinatama Evolved]]. | * KONCOMsuper_kick: Now used in [[OTA]] as a spawn event, and by the fan-made character [[Shinatama Evolved]]. | ||
* KONCOMsuper_punch: KONCOMpunch_heavy but without the shouted attack name, has HalfDamage flag, and does 10 less damage in its first attack part. | * KONCOMsuper_punch: KONCOMpunch_heavy but without the shouted attack name, has HalfDamage flag, and does 10 less damage in its first attack part. | ||
* COMPISidle_special1: Comguy checking environment and his gun; meant for a feature that would visually depict an elevation in the AI's level of alertness after, say, hearing a noise. | * [https://www.youtube.com/watch?v=CRuZq_uYOQk COMPISidle_special1]: Comguy checking environment and his gun; meant for a feature that would visually depict an elevation in the AI's level of alertness after, say, hearing a noise. | ||
* STRPISidle_special1: Striker checking his his gun and communicating with an ally (another unused alertness-elevation animation). | * STRPISidle_special1 (see above link): Striker checking his his gun and communicating with an ally (another unused alertness-elevation animation). | ||
* THUGlev1_direct: Thug probably directing a truck driver. | * THUGlev1_direct: Thug probably directing a truck driver. | ||
'''From modders''' | '''From modders''' | ||
[[Image: | [[Image:Female stun.jpg|right|thumb|Char A and Char B performing stun animations.]] | ||
* http://mods.oni2.net/node/376 | * http://mods.oni2.net/node/376 |
edits