dq(rpg) 2011-07-21

ナイトリービルドを更新。
ロトの鎧を実装しました。

これまでロトの鎧を実装しようとして、手が止まっていました。ロトの鎧を装備すると沼のダメージが無くなり、魔法系のダメージが半減されます。
使い捨てのコードならダメージ処理でハードコーディングすれば良いのですが、フレームワークとして出来れば汎用的に実装したい。
たぶん、ダメージ判定後に装備に対して補正を要求すれば良いのかな。

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などでページを再読み込みする必要があります。

M. K. の紹介

IT屋さんです。プログラミングが大好きで今はJavascriptがお気に入りです。
カテゴリー: dq, JavaScript, ゲーム作成, プログラミング   タグ: ,   この投稿のパーマリンク