保護reading自分を1件の宣言として読んだもの(PassivePropertyReading参照)。
登録の契機を受け取る関係(8.1節の target の起点)と、それを受け取る自分自身。寄与として
登録されない効果(transfer)ではundefined。仕分ける側(PassiveEffects)が種別で振り分けずに
済むよう、効果自身が名乗る。
保護reversible可逆な寄与(modify、8.3節)か。影響の一覧が記号の形をこれで選ぶ(PropertyInfluence)。
tick毎に走る輸送(8.4節)ならそれ自身。寄与として登録される効果(modify/add)ではundefined。 走らせる側(ObjectPassiveEffects)が種別で振り分けずに済むよう、効果自身が名乗る。
ゲート(8.2節)が有効ならamountを、無効なら0を返す。modifyでもaddでも同じ量。 rolesは役の出どころ(PassiveEffectGate.isSatisfied)。
対象へ届く辺を書き出す。対象がchildのときは今入っている子の数だけ辺を書く——寄与の登録 (setChildRegistered)が子ごとに1件ずつ作られるのと同じで、「どの子か」は1つに決まらない。
実体値へ積む寄与(add)なら、動かす先を稼ぎの数え先として名乗る。可逆な寄与(modify)は
実体値を動かさないので名乗らない。
相手もゲートの役もcontextから解く(setRegisteredInContextと同じ、登録先と同じ物になる)。 呼ばれるのは操作の宣言だけで、そこにchildは書けない(8.1節)ので、ゲートのselfはownerでよい。
名乗るのは先だけで、量は言わない。 数えられるのはそのプロパティがこのtickで実際に動いた量 (PropertyValue.tick)で、同じtickの他の寄与も端のクランプも既に引かれている。
相手がまだそのプロパティを持っていなくても名乗る。 このtickの積分の途中でbecomeが走れば、 新しい型にしか無いプロパティはそこで生える(9.9.1節)ので、持っているかを名乗りの条件にすると 生えたtickぶんだけが稼ぎから漏れる。
今tick何も足さないなら名乗らない。 ゲートが閉じている効果の対象を数え先にすると、物が 自分で宣言した増減まで操作の稼ぎになる。
この効果が何を宣言しているかを読み上げる(PassiveReader参照)。抽象なのは取りこぼしを防ぐため ——既定を持たせると、動詞を1つ足したときに読み手が黙って何も受け取らなくなる。
保護registerこの効果(registration)を、対象プロパティ値(target)のmodify用/積分用incomingのうち 具象クラスに応じた側へ登録する。
childがparentに付く/離れる際に、parent(owner)側のtarget=child効果を、その付いた/離れた子(child)へ 登録/解除する。childは相手がownerから一意に辿れない唯一の関係のため、childを明示的に受け取る。
contextで対象を解いて、この効果を相手へ登録/解除する。役の解決先を呼び出し側が持っているとき だけ呼ぶ——操作が宣言した持続効果(11.7節)の役は、宣言したその操作の関係が答えるもので、 宣言元が後から別の関係へ加わっても動かない(WorldSession.whileInteractionPassives)。
憶えるのは登録先だけではない。 ゲート(8.2節)が見る役も同じ関係が答えるので、contextを 登録そのものへ持たせる(RegisteredPassiveEffect)。
対象(relationRegistrationで名乗った関係)の相手へ、この効果を登録/解除する。相手はowner自身から 解決するので、呼び出し側は相手を知らなくてよい。呼ばれるのは名乗った関係の契機だけ (仕分けはObjectPassiveEffectsが持つ)。
ancestorは、ツリー構造が変わる前に解除・変わった後に登録という順序を呼び出し側 (WorldObject.setAncestorTargetsRegistered)が守る前提で、「今この瞬間の祖先」を毎回辿るだけで よく、前回の登録先を憶えない。
操作の役(11.5節)も、ownerが今役を解く関係から辿れるので同じ経路に乗る。頼まれる契機は 関係を張った/外したときだけではない——関係の内側で型が変われば、宣言も登録先も入れ替わるので そこでも張り直す(頼む側はWorldObject.setRoleTargetsRegisteredの呼び手)。
childは相手(どの子か)がownerから一意に辿れないため、ここでは扱わずsetChildRegisteredを使う。
条件が真の間だけ、都度導出される実効値に寄与する持続効果(可逆、8.3節)。実体値そのものは 書き換えない。PropertyValueのmodify用incomingへ登録され、PropertyValue.getEffectiveValueが走査する。