Here's a patch adding a bunch of new commands. With this patch, I'll
no longer need the non-canonical parameters for read enemy data, so
you can proceed with your crazy plan.

Functions added:
+527,enemyelementalresistasint,2,-1,0 # percentage damage taken from
an element rounded to an int (enemy, element)
+528,readattacktargetclass,1,0    #returns the target class (ally,
enemy, etc.) of the given attack
+529,readattacktargetsetting,1,0  #returns the target setting
(focused, spread, etc.) of the given attack
+530,readattackdamageequation,1,0 #returns the damage equation
(normal, sharp, etc.) of the given attack
+531,readattackextradamage,1,0    #returns the extra damage modifier
of the given attack
+532,readattackitem,2,0,0         #returns item ID+1 of the given
attack's nth item cost (attack, n [0..2])
+533,readattackitemquantity,2,0,0 #returns item quantity of the given
attack's nth item cost (attack, n [0..2])
+534,readattackchain,2,0,0        #returns attack ID+1 of the given
attack's chain (attack)
+535,readattackchainrate,2,0,0    #returns chain rate of the given
attack's chain (attack)
+536,readattackelsechain,2,0,0    #returns attack ID+1 of the given
attack's else chain (attack)
+537,readattackelsechainrate,2,0,0#returns chain rate of the given
attack's else chain (attack)
+538,readattackinsteadchain,2,0,0     #returns attack ID+1 of the
given attack's chain (attack)
+539,readattackinsteadchainrate,2,0,0 #returns chain rate of the given
attack's chain (attack)
+540,readenemynormalattack,2,0,0  #returns the nth attack ID+1 of
given enemy's normal attack set (id, n [0..4])
+541,readenemyaloneattack,2,0,0   #returns the nth attack ID+1 of
given enemy's alone attack set (id, n [0..4])
+542,readenemydesperationattack,2,0,0 #returns the nth attack ID+1 of
given enemy's desperation attack set (id, n [0..4])

It's a lot bigger and yet much more straightforward than yesterday's patch.


On Fri, Sep 30, 2011 at 1:15 PM, Adam Perry <[email protected]> wrote:
>
> On Fri, Sep 30, 2011 at 1:11 PM, Mike Caron <[email protected]> wrote:
> > On 30/09/2011 4:05 PM, James Paige wrote:
> >>
> >> On Fri, Sep 30, 2011 at 12:46:49PM -0700, Adam Perry wrote:
> >>>
> >>> Oh shooooooot, I was thinking that "read attack data" was an actual thing
> >>> :(
> >>
> >> Nope, I was confused if I said it was. Read enemy data exists, but was a
> >> bad idea.
> >>
> >>> Can it be an actual thing? Please? I will implement it all by myself.
> >>
> >> No. a "read anything data" command of any kind is a bad idea, and I
> >> deeply regret any existing command that works that way.
> >>
> >> A command that loads a specific piece of data is tolerable, because the
> >> underlying data format can change without requiring the plotscripting
> >> command to do unfortunate backcompat mumbo-jumbo.
> >
> > Adam, just to clarify, the "read enemy data" command is the moral equivalent
> > of doing something like this:
> >
> >   void* theEnemy = ...;
> >   int enemyHP = *(((int*)theEnemy) + 23); //I know the HP is 23 *
> > sizeof(int) bytes in, and assume it will never change
> >
> > I think it seemed like a good idea at the time, but we all know that
> > hindsight is 20:20.
> >
> > To maintain compatability in the future, the command will have to change to
> > something like:
> >
> >   IF index = 23 THEN
> >     RETURN enemy.HP
> >   ELSE IF index = 12 THEN
> >     RETURN enemy.sprite
> >   ELSE ...
>
> We juggle live grenades here. It is what we do.
>
> >>> Anyway, the only actual "read enemy data" I am using is the command
> >>> list.
> >>
> >> The command list?
> >> Oh, the attacks that an enemy can do?
> >>
> >> Hrmm... That is going to change massively when I do
> >> http://rpg.hamsterrepublic.com/ohrrpgce/Plan_for_enemy_AI_improvements
> >>
> >>> I will expose enemy elemental resists via a separate command
> >>> altogether.
> >>
> >> Yeah, if it is a separate command it should be okay :)
> >>
> >> ---
> >> James
> >>
> >>> On Fri, Sep 30, 2011 at 11:39 AM, Adam Perry<[email protected]>  wrote:
> >>>>
> >>>> Semi-relatedly, I'm also planning to add a command to expose elemental
> >>>> resistances for enemies. I'm trying to use
> >>>> http://hamsterrepublic.com/ohrrpgce/nightly/ohrrpgce-source-nightly.zip,
> >>>> though, and it doesn't actually have yesterday's changes. (I'd use SVN
> >>>> directly, but I'm running into proxy issues.)
> >>>>
> >>>> More relatedly, are there plans to change the inner workings of read
> >>>> enemy data? This doesn't matter too much for a potential "enemy
> >>>> elemental resist as int" implementation, which can be changed if the
> >>>> other is, but it might affect my plans for the script I'm working on.
> >>>>
> >>>>
> >>>> On Fri, Sep 30, 2011 at 9:23 AM, Adam Perry<[email protected]>  wrote:
> >>>>>
> >>>>> On Fri, Sep 30, 2011 at 8:53 AM, James Paige<[email protected]>
> >>>>>  wrote:
> >>>>>>
> >>>>>> On Thu, Sep 29, 2011 at 08:13:10PM -0700, Adam Perry wrote:
> >>>>>>>
> >>>>>>> On Thu, Sep 29, 2011 at 7:56 PM, Ralph Versteegen<[email protected]>
> >>>>>>>  wrote:
> >>>>>>>>
> >>>>>>>> On 30 September 2011 08:34, James Paige<[email protected]>
> >>>>>>>>  wrote:
> >>>>>>>>>
> >>>>>>>>> On Thu, Sep 29, 2011 at 11:55:26AM -0700, Adam Perry wrote:
> >>>>>>>>>>
> >>>>>>>>>> On Thu, Sep 29, 2011 at 11:26 AM, Adam Perry<[email protected]>
> >>>>>>>>>>  wrote:
> >>>>>>>>>>>
> >>>>>>>>>>> I'd like to add in a few more plotscripting commands, but I'm not
> >>>>>>>>>>> sure
> >>>>>>>>>>> what files need to be changed. The obvious one is plotscr.hsd,
> >>>>>>>>>>> and I'm
> >>>>>>>>>>> sure I can figure out what to do there, but what other files are
> >>>>>>>>>>> involved?
> >>>>>>>>>>>
> >>>>>>>>>>> I'm not looking to do anything complicated; just getters/setters
> >>>>>>>>>>> for
> >>>>>>>>>>> things like door position and enemy attacks.
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> Actually, some research shows that enemy attacks are already
> >>>>>>>>>> exposed
> >>>>>>>>>> (albeit via the arcane "read enemy data" command). So that's one
> >>>>>>>>>> down.
> >>>>>>>>>
> >>>>>>>>> Yes, the "read enemy data" commands are unfortunately arcane, and
> >>>>>>>>> will
> >>>>>>>>> be a backcompat pain in the future.
> >>>>>>>>
> >>>>>>>> I had been thinking recently: let's not support read/writeenemydata
> >>>>>>>> for anything other than the provided constants. If you haven't used
> >>>>>>>> them, and I haven't used them, and Mogri hasn't used them, then we
> >>>>>>>> can
> >>>>>>>> be nearly sure that noone has.
> >>>>>>>>
> >>>>>>> But I just wrote a script using them extensively...
> >>>>>>
> >>>>>> Did you use any data index numbers other than the 11 documented in
> >>>>>>
> >>>>>> http://hamsterrepublic.com/ohrrpgce/docs/plotdict.xml#about-readenemydata
> >>>>>> ?
> >>>>>
> >>>>> Here's the list of undocumented things I'm using so far:
> >>>>>   3, attackdata:target class
> >>>>>   4, attackdata:target setting
> >>>>>   12, attackdata:chain
> >>>>>   13, attackdata:chain rate
> >>>>> I am also likely to use several more since I'm essentially pulling in
> >>>>> attack data to use in a custom battle system.
> >>>>>
> >>>>> I'm okay rewriting this part if you have a somewhat immediate plan for
> >>>>> exposing attack data.
> >>>>>
> >>>>
> >>> _______________________________________________
> >>> Ohrrpgce mailing list
> >>> [email protected]
> >>> http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
> >>>
> >> _______________________________________________
> >> Ohrrpgce mailing list
> >> [email protected]
> >> http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
> >
> >
> > --
> > - Mike Caron
> > _______________________________________________
> > Ohrrpgce mailing list
> > [email protected]
> > http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
> >

Attachment: morecommands.patch
Description: Binary data

_______________________________________________
Ohrrpgce mailing list
[email protected]
http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org

Reply via email to