ナイトリービルドを更新。
ロトの鎧を実装しました。
これまでロトの鎧を実装しようとして、手が止まっていました。ロトの鎧を装備すると沼のダメージが無くなり、魔法系のダメージが半減されます。
使い捨てのコードならダメージ処理でハードコーディングすれば良いのですが、フレームワークとして出来れば汎用的に実装したい。
たぶん、ダメージ判定後に装備に対して補正を要求すれば良いのかな。
DQ.RPG.DamageType = { Unknown: 0, Pysical: 1, Magic: 2, Fire: 3, Water: 4, Erth: 5, Wind: 6, Sander: 7, Light: 8, Dark: 9, Swamp: 10, Baria:11 }
Player.prototype.gainDamage = function(damage, type) {
for(var i = 0 ; i < this._equipmentIDs.length ; i++ ) {
var equip = world.items[this._equipmentIDs[i].uid];
damage = equip.gainDamage(damage, type);
}
return damage;
}
storategys['roro'] = roro_storategy;
roro_storategy.prototype.gainDamage = function(damage, type) {
var dm = DQ.RPG.DamageType;
swich(type) {
dm.Magic:
dm.Fire:
dm /= 2;
break;
dm.Swamp:
dm.Baria:
dm = 0;
break;
}
return dm;
}
沼なら
・・・それから3日後
装備することで一時状態を追加すれば、良いのではないでしょうか。
呪われた装備なら、カースを追加。カース状態中は装備を外せないが、カースを解除されると装備も外せると。
「浮いている」なら、スパイクや沼やバリア無効。
ロトを装備している「状態」なら魔法や火を半減、ダメージを受けるチップ(沼、バリア)無効。
装備に equipメソッドとremoveメソッドを追加します。
DQ.RPG.Item.prototype = {
equip: functon(type, to) {
to.temporary.push(
new DQ.RPG.State(world.statuses.find("uid", 10009)));
},
remove: function() {
}
}
特殊な装備は装備したときに状態を追加します。
DQ1では、呪われていると王様の台詞が変化します。呪われたらフラグを立てる方法が単純ですが、
プレイヤーが呪われた状態かを調べる方法もありです。
Player.hasStatus = function(uid) {
}
チップによるイベントでは、状態によるisAvoid()判定とgainDamage()判定を実施します。
スパイクでのダメージの場合、luckにより回避が発生する仕組みも実装できます。
Player.prototype.isAvoid(type) {
}
Player.prototype.gainDamage(dmg, type) {
}
Status.prototype.isAvoid(type) {
}
Status.prototype.gainDamage(dmg, type0 {
}
標準で提供されていない状態や装備は後から追加可能にします。
今でも、種類毎にストラテジーを選択する仕組みが実装されていますが、いっそのことUID別の
テーブルがあれば、そこからストラテジーを選択出来るようにして拡張毎のストラテジーを後から
追加出来るようにすればよいのではないでしょうか。
DQ.RPG.State.Roro = function() {
}
DQ.RPG.State.table.push({uid: 10009, strategy: DQ.RPG.State.Roro});
ナイトリービルドを更新。
RPG 習作(debug)
戦闘テスト
メッセージエディター
補足ですが、キャッシュが効いている場合にCTRL+Rなどでページを再読み込みする必要があります。