My peeps,

I'm working on a draft for some rules. I humbly ask for y'all's
opinions. Do you have any interest? Also, what would be the best
practices to implement what I'm trying to?

My intention is that new Interface types could be created to allow for
more, more interesting interactions.

{
------------------------------------------------------------------------
Machine Definitions

      A Petriplace is an entity defined by a unique name among
      Petriplaces in the same Petrinet.

      A Petransition is an entity defined by a unique name among
      Petransitions in the same Petrinet, along with a Type of either
      Internal of Interface.

      A Petrinet is given by a set of Petriplaces, a set of
      Petransitions, and for every Petriplace and Petransition, an
      integer (defaulting to zero if unspecified) called the
      Petriplace's Petrivalence for that Transition.

      Petokens is a Petriplace integer switch with default value
      zero.

      Given a Petrinet, one of the Petransitions is Enabled if for
      every Petriplace in that Petrinet, its Petrivalence summed with
      its Petokens switch's value is nonnegative.
      
------------------------------------------------------------------------
Interface Petransition Types

      In case a Petransition is an Interface, it also has two other
      textual attributes: Conditions and Actions.

      Other rules nonwithstanding, An Interface transition CANNOT be
      Fired unless its Conditions are met. When Fired, an Interface
      transition causes its Actions to be performed.

      The possible Interfaces types are as follows, specified as a
      Name, additional attributes, its Condition, and its Actions.

      * Lockerswitcher. A Locker. Whenever. The Locker's owner switch
        is flipped to the Firing player.

------------------------------------------------------------------------
Machine Entities

      The Machine Yard is an entity.

      Machines are assets tracked by the Machinist and ownable by the
      Machine Yard. Their essential attributes are solely a unique
      name among Machines. Machinestate is a Machine switch tracked by
      the Machinist with values over Petrinets, and default value the
      Petrinet with no Petriplaces and no Petransitions.

      A Player CAN create a Machine under the possession of the
      Machineyard by specifying its name, a Petrinet, and paying a fee
      of 1 BoC.

      A Player CAN, by announcement, Fire a specified enabled
      Petransition in a specified Machine. When e does so, that
      Machine's Machinestate Petriplace's Petokens switch are flipped
      to their current value summed with their Petrivalence for that
      Petransition.

      In a message where e Fires a Petransition, a Player SHOULD also
      publish the specified Machine's new Machinestate.

      The Machinist CAN, with no objections, destroy a specified
      Machine. E SHOULD do so if a Machine hasn't been used for too
      long.

------------------------------------------------------------------------
Lockers

      Lockers are assets tracked by the Machinist and ownable by the
      Machine Yard. Lockerowner is a Locker switch with values on
      Players or Unassigned (default). Other rules notwithstanding, a
      Player CAN, by announcement, transfer any liquid asset e owns to
      a Locker of which e is the Lockerowner, and similarly transfer
      any assets from such a Locker to any entity that can own that
      asset.

      A Locker is empty if it does not own any assets.

      A Player CAN, by annoucement, flip a Locker's Owner switch to
      emself if it is Unassigned. A Player CAN, by announcement, flip
      a Locker's Owner switch to Unassigned if it is emself if it is
      empty.

------------------------------------------------------------------------
}

Specific problematic points:

* I really don't know when to use switches and when to directly define
  attributes.

* I can't tell the best way to define the Interfaces (I guess something
  akin to Birds or Stones, but only for Transitions with a particular
  Type).

-- 
juan

Reply via email to