On Fri, Sep 30, 2011 at 02:50:51PM -0700, Adam Perry wrote:
> 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.

For some reason the plotdict.xml and yetmore.bas parts don't want to 
apply... which is strange, because I can't see any obvious problem.

Anyway, I'll figure it out, and test the patch.

> 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)

The above all sounds fine to me

> +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])

One thing about these, after the Plan for enemy AI improvements is done, 
these will have to be converted to work like this internally:

* Search through all of the gambits attached to this enemy
* if searching for "alone", return attacks form the first gambit that 
uses the condition "Formation contains < 2 allies"
* if searching for desperation, return attacks from the first gambit
with the condition "Self stat:HP < n%"
* if searching for "normal"... Dang. I guess the last gambit in the list 
is what old enemies would have their "Normal" set converted to, but 
there is a good chance that will often be wrong for "normal" for enemies 
created after the gambit system is in... but by that time this command 
will be clearly marked as being for backcompat only, so i guess that 
doesn't matter much.

You can see why I get wary about new commands sometimes :)

---
James

> 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
> > >


> _______________________________________________
> 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

Reply via email to