WSN追加案: プレイヤーカードの死亡時・キーコードイベント

Issue #426 resolved
k4nagatsuki repo owner created an issue

プレイヤーカードに対してなんらかのキーコードが使用されたり、意識不明になった時に発火するイベントを考えます。

これらのイベントは、現在は何らかのアクションが起きるたびに発火条件を確認するようなイベントを組む事で擬似的に作る事しかできませんし、実際にそうしているシナリオがいくつかあるので、それらを自然に表現できるようにする事には需要があると考えています。

これらのイベントが発生した時には、どのPCに属するイベントであるかを判別できる必要があります。しかし、死亡イベントやキーコードイベントは、発火要因のカードの使用者が選択メンバとなるため、イベント対象を選択メンバにする事はできません。他の方法が必要です。

個人的なイメージとして、以下の2種類の判別方法を考えていました。

  1. PCに属すイベントを最大6件作れるようにする。それぞれが_1_6のPCに対応する
  2. PCに属すイベントを1件作れるようにする。発火したイベントの対象が誰かは、@イベント対象(#303)で判別する

プログラマ的な感性では2.の方が自然ですし、パーティ人数によらず実装でき、イベントの共通化も安易でエディタ上でスペースも取らないので好ましいと考えていますが、いちいち@イベント対象で誰が対象か判断しなくてはならないというのは抵抗がある人もいるかもしれません。

エディタ上のイメージをアスキーアートで表すと以下のような感じになると思います。

1.新規エリア
   ├|>到着
   └|>魔力感知
プレイヤー          ←ここにPCに対するイベントを追加する
   ├|>死亡
   └|>[攻撃]
メニューカードA
   └|>クリック
メニューカードB
   └|>クリック
  :

副次的な事ですが、プレイヤーカードに死亡イベントをつけられれば、#405のオプションとの組み合わせでエリア上でのゲームオーバーをある程度検出できる可能性があります。

Comments (4)

  1. Iraka.T

    おそらくこの影響だと思うのですが、キーコードイベントが発生すると止まるようになってしまいました。

    Version : 2.0 Alpha 1 / 2017-01-12 21:19:23
    DateTime: 2017-01-12 22:12:28
    Traceback (most recent call last):
      File "cw\thread.pyo", line 707, in run
      File "cw\thread.pyo", line 737, in _run
      File "cw\thread.pyo", line 746, in main_loop
      File "cw\eventhandler.pyo", line 96, in run
      File "cw\eventhandler.pyo", line 277, in lclick_event
      File "cw\sprite\card.pyo", line 1247, in lclick_event
      File "cw\thread.pyo", line 1435, in call_modaldlg
      File "cw\thread.pyo", line 746, in main_loop
      File "cw\eventhandler.pyo", line 113, in run
      File "cw\eventhandler.pyo", line 618, in executing_event
      File "cw\character.pyo", line 903, in use_card
      File "cw\event.pyo", line 1269, in start
      File "cw\event.pyo", line 736, in start
      File "cw\event.pyo", line 807, in run
      File "cw\event.pyo", line 1294, in run_exit
      File "cw\event.pyo", line 1528, in effect_cardmotion
      File "cw\event.pyo", line 1365, in run_menucardevent
    AttributeError: 'NoneType' object has no attribute 'check_keycodes'
    
  2. Log in to comment