ダメージ表記のいじりかた

上記動画のようにダメージ表記の振る舞い・サイズをいじる方法について適当に説明します。

必要なツール

この辺参照。

http://ebisukemochi.site/blog/?p=377

手順

effect.ipf/effectlist.xmlが含まれるパッチの番号を知る

ダメージ表記をいじるには、effect.ipfにあるeffectlist.xmlを変更する必要があります。
もちろん、effect.ipfを直接変更することはできませんので、アドオンとして導入する方法で上書きする必要があります。
このファイルはパッチで頻繁に更新されるため、どのパッチで更新されたかを事前に確認します。

patchフォルダを開き、名前を降順で並び替えます。

上から順にパッチをIPF Suiteで開きます。
以下のようにeffect.ipf/effectlist.xmlが含まれるパッチの番号を控えます。入っていなければ次のパッチを開いてください。

この例だと305760になります。
ついでにExtract Allを押して、パッチの中身を適当なフォルダに展開します。

effectlist.xmlを開く

開いたらサクッとI_SYS_damageで検索してみてください。

繰り返し検索するとI_SYS_damageが見つかります。
このSystemブロックをいじっていきます。
他にいじれそうなのは以下の項目でしょう。

I_SYS_damage_their
I_SYS_damage_self_critical
I_SYS_damage_self_block
I_SYS_damage_self
I_SYS_damage_critical
I_SYS_damage_block
I_SYS_damage_4
I_SYS_damage_3
I_SYS_damage_2
I_SYS_damage_1
I_SYS_damage_0
I_SYS_damage

私はまだすべての把握しきっていないので名前からなんとなくどのダメージ表記に対応するか推測してみてください。

振る舞いをいじる

ここで、I_SYS_damageのScaleを見てみます。

<Scale>
	<Interpolation/>
	<Keyframe>
		<scale time="0" x="0.80" y="2.40" z="0.00"/>
		<scale time="10" x="1.00" y="9.00" z="0.00"/>
		<scale time="30" x="1.60" y="1.60" z="0.00"/>
	</Keyframe>
</Scale>

KeyFrameブロックがありますね。これはどのタイミングでどのくらいのスケールに変化させたいという、キーフレーム情報を定義するものです。

timeの単位は恐らく10msecです。その後ろのxyは、それぞれ横・縦の拡大率を表します。

なので、大体こんな動きをします。
0ms時点では0.8×2.4のサイズになり、100msで1.0×9.0と縦長になり、その後300msで1.6×1.6の正方形になります。

例えばこれを以下のようにすると

<Scale>
	<Interpolation/>
	<Keyframe>
		<scale time="10" x="1.00" y="1.00" z="1.00"/>
		<scale time="20" x="1.00" y="1.00" z="1.00"/>
		<scale time="100" x="1.00" y="1.00" z="1.00"/>
	</Keyframe>
</Scale>

10ms,20ms,100msいずれも1.0×1.0なので、同じサイズのままですね。
まあ同じなら複数定義する必要もないので1行だけでもいいです。
ダメージ標記を小さくしたいならxyを小さくすればいいですし、大きくするならその逆です。

つぎにMovingブロックを見てみます。

<Moving>
	<Property startdirection="0.00 0.89 0.45" gravity="300.00"/>
	<Interpolation/>
	<Keyframe>
		<velocity time="0" value="300.00"/>
		<velocity time="20" value="100.00"/>
		<directionrange time="0" value="0.00"/>
	</Keyframe>
</Moving>

PropertyのstartDirectionは、表記が吹っ飛んでいく初期方向になります。
xyzの正規化された方向ベクトルで指定します。

gravityは重力値になります。この値が大きいほど時間経過による下方向への速度変化が強まります。
なお、gravityの代わりに useworldgravity=”false” を記述すると重力を無視します。

KeyframeはScaleの記述方法とほぼ同様ですね。代わりにvelocityを記述するようになっています。
velocityはそのタイミングでの速度を表しています。

なので、こんな動きになるでしょう。この例ではToSが右手系と決めつけており、Zが奥になっています。まぁ左手系なら手前に飛ぶだけでしょう。

例えばMovingを以下のようにします。

<Moving>
	<Property startdirection="0.00 1.00 0.00" useworldgravity="false"/>
	<Interpolation/>
	<Keyframe>
		<velocity time="0" value="12.00"/>
		<velocity time="20" value="12.00"/>
		<velocity time="60" value="12.00"/>
		<velocity time="100" value="12.00"/>
		<directionrange time="0" value="0.00"/>
	</Keyframe>
</Moving>

Propertyのstartdirectionが0,1,0なので、上に飛びます。
useworldgravity=”false”なので、重力は無視します。
Keyframeのvelocityはいずれも12で固定なので、一定の速度で上に飛ぶことになります。

つまり、最初に紹介した動画の通りになります。

このような感じで弄っていきます。
注意として、ScaleやMovingブロックの記述順を入れ替えてはいけません。
正常に起動できなくなる恐れがあります。

変更したeffectlist.xmlをアドオンとして導入する

先日公開した方法だとうまく認識しない場合がありましたので、手順を更新しました。

以下の手順はIPF Suiteを使用する場合です。

http://ebisukemochi.site/blog/?p=406

tpipftoolを使用する場合はこちらを参考にしてください。

http://ebisukemochi.site/blog/?p=415

アドオンとしてToSに導入する

この辺参照

http://ebisukemochi.site/blog/?p=359

サンプル

パッチにより適用できない場合がありますのでご注意ください。

http://ebisukemochi.site/blog/?p=399