• Welcome to Freedom Reborn Archive.
 

FFX Requests

Started by yell0w_lantern, April 14, 2007, 07:42:30 PM

Previous topic - Next topic

TaskMasterX

IPS,
It's been discussed before, here:
http://freedomreborn.net/archive/index.php?topic=41844.0
but still no conclusion. Maybe sometime after FFX 3.3 is released it can be re-looked at. I agree on the importance of getting this issue resolved (if it can) as it's been a thorn in us :ffvstr: fans' backside for quite awhile.

Xenolith,
Kuertee has alot of stuff included in FFX 3.2. I think his camera view system is included and can be enabled by opening m25config.py and setting M25_USE_SKXCAMERA = 1.

crimsonquill

I'm probably sure that this has been discussed elsewhere but.. is there a way to set up more Hate-Filled attributes?

Maybe someone might take on Hate-Filled: Mutants (for Sentinels, Friends Of Humanity) and Hate-Filled: Buildings (for villians who prefer to level cities and ignore heroes/villians until everything is in ruins).

Or is there someway to do this just with simple tweaking with M25AI files and tagging characters manually?  :unsure:

- CrimsonQuill


Epimethee

Quote from: ips on July 25, 2008, 08:12:08 AM
ok i just thought this would be a case for the ffx team but i could be wrong...

so everyone complains how there is no knockback on thrown items the way there should be. it's true. yes it sucks. but what can you do? right?

so i was thinking... knockback for regular characters work fine so it's not broken ingame it's just not setup properly for thrown items somehow. if it's a correction in the core scripting maybe the ffx team could handle that... but if it's something in the game application itself maybe it could be simulated by writing a script to work around the issue by attaching attack style knockback to impacts of thrown objects. is this at all do-able?
I had a quick look at it last year, as I thought it might be fairly easy using the MLOGReader module (which enable and reads additional game engine debugging messages), but... well, knocking targets in the right direction at the right time without false negative or worse false positive all appeared problematic. It is apparently going to be quite hard to do properly.

Epimethee

Quote from: crimsonquill on July 25, 2008, 12:01:02 PM
I'm probably sure that this has been discussed elsewhere but.. is there a way to set up more Hate-Filled attributes?

Maybe someone might take on Hate-Filled: Mutants (for Sentinels, Friends Of Humanity) and Hate-Filled: Buildings (for villians who prefer to level cities and ignore heroes/villians until everything is in ruins).

Or is there someway to do this just with simple tweaking with M25AI files and tagging characters manually?
If I were to redo these Hate-Filled: Something attributes, they would be a single attribute with customization, so you'd just need to select a target type. Sigh.

Hate-Filled: Buildings – maybe the following (not tested) will work? def initffqaidemolisher(char,update=0):
    if update==0:
        try:
            print 'Is "Demolisher" attribute currently allowed?= %d'%(Mission_GetAttr('allowFFQAIDemolisher'))
        except:
            print '"Demolisher" attribute is allowed by default.'
            Mission_SetAttr('allowFFQAIDemolisher',1)
        RegTimer('updateffqAIDemolisher',10,0,char)

def updateffqAIDemolisher(event):
    char = event.object
    if not Object_Exists(char):
        return
    if FFX_ObjectGetAttr(char, 'psychotherapy'):
        return
    initialized = event.user
    RegTimer('updateffqAIDemolisher',10,1,char)
    if not Object_IsAlive(char):
        return
    if cshelper.isPlaying():
        return
    if Mission_GetAttr('allowFFQAIDemolisher') == 0:
        return
    if initialized == 0:
        return
    else:
        cshelper.addKillAllGoal(char,OC_BUILDING,PRI_LOW-1)


For Hate-Filled: Mutants, it's going to be harder, as you'd need to tag every template which is a mutant as such first. In ffxextras.py, you'd need to add a list of mutants:#add your character templates which should be considered homo superior (or whatever they're called in your comic book universe) to this list
mutantCreatures=(
"angel",
"beast",
"cyclops",
"franklin_richard",
"ice_man",
"marvel_girl",
"pr_x",
"quicksilver",
"scarlet_witch",
)


and in ffx.py (again, not tested):def initffqaimutanthater(char,update=0):
    RegTimer('updateFFQMutantHater',10,0,char)

def updateFFQMutantHater(event):
    char = event.object
    if not Object_Exists(char):
        return
    if FFX_ObjectGetAttr(char, 'psychotherapy'):
        return
    initialized = event.user
    RegTimer('updateFFQGenderHate',10,1,char)
    if not Object_IsAlive(char):
        return
    if cshelper.isPlaying():
        return
    if initialized == 0:
        return
    else:
        allMutants = getAllMutants(lures = 1) #with lures  = 1, even your X-Men action figures aren't safe ;)
        for individual in allMutants:
            if individual != char:
                cshelper.addKillGoal(char,individual,PRI_LOW-1)

def getAllMutants(checkLiving = 1, lures = 0):
    mutantChars = []
    for char in getAllCharacters(checkLiving):
    if FFX_GetTemplate(char) in mutants:
        mutantChars.append(char)
    return mutantChars


And yeah, you should be able to do it through M25's AI config files instead of FFX, I guess.

TaskMasterX

For attacking building and mutants, for mutants, you could add    ['subtype', 'mutant',], to a mutant's m25ai file and then place the subtype='mutant' parameter in the AI tactic that you only want used against mutants, and they'll only use that power vs. mutants.

For buildings, add ["special targets", "building", "object",] to the m25ai file of the demolisher, and then add type="any" and subtype="building" parameters to the tactic that you want used against buildings. If you want them to attack buildings over characters, then increase the priority= parameter of that tactic to be above the priority= parameters of the other tactics that are used against the characters.

laughing paradox

I'm surprised I never mentioned this before since I've noticed this a while ago.

Would it be possible to have an attribute that gives you a resistance to electricity...and that's it?

The current available attribute like that comes with the added bonus of "melee strikes deals electric damage" as well, and it's not feasible in a lot of situations.

Trelau

i almost forgot about that one:
i already talked about it in the scripting forum, but could we have a "Team" attribute wich would be like the private army attribute but whithout random selection of character (all the character are selected each time) and whithout prestige point limit? and possibly more slots than 6?
this way you could have one character (tiggot) who would allow you to quickly select an ennemy team in the rumble room, instead of looking for them in your infinite list of custom character...plus allowing more ennemy slot for the rumble room (since you would only have one slot taken for a dozen character)

catwhowalksbyhimself

QuoteWould it be possible to have an attribute that gives you a resistance to electricity...and that's it?

This has been already stated a number of times, but those things are hard-coded.  There is no way to add resistance with scripting.

bearded

just a random thought on this...exploding thrown things cause knockback correctly?  what if all items had explosion tagged, and the fx for the explosion was nil?  net effect would be, hit with boulder and fall down.  but even if this worked, it seems like it would take away from car explosions and such.  unless there were a way to have 2 kinds of explosions.

Quote from: ips on July 25, 2008, 08:12:08 AM
ok i just thought this would be a case for the ffx team but i could be wrong...

so everyone complains how there is no knockback on thrown items the way there should be. it's true. yes it sucks. but what can you do? right?

so i was thinking... knockback for regular characters work fine so it's not broken ingame it's just not setup properly for thrown items somehow. if it's a correction in the core scripting maybe the ffx team could handle that... but if it's something in the game application itself maybe it could be simulated by writing a script to work around the issue by attaching attack style knockback to impacts of thrown objects. is this at all do-able?

tommyboy

Quote from: bearded on August 30, 2008, 11:34:14 PM
just a random thought on this...exploding thrown things cause knockback correctly?  what if all items had explosion tagged, and the fx for the explosion was nil?  net effect would be, hit with boulder and fall down.  but even if this worked, it seems like it would take away from car explosions and such.  unless there were a way to have 2 kinds of explosions.

An interesting idea, but one that brings some problems with it.
There already are several 'generic' explosion types, so adding another with a null fx would be do-able, I reckon.
The problems start with the fact that cars and such 'explode' when their 'health' drops to a certain value, so unless the health of all boulders were set low enough, the 'knockback explosion' wouldn't necessarily be triggered the first throw (depending on the strength of the thrower). Then you have the cars themselves, which are a perennial favourite for the busy thrower. They would still deal zero knockback unless we set all of them to explode on the first throw.
I think something could come from this idea, but I also think that a competent programmer could look at the .exes of the two games and maybe spot the difference and fix it. And add flying melees. And randomly selected animations for dodge, ranged, run, fly etc.
So when can you do all that, competent programmers? Is it done yet?
How about now?

yell0w_lantern

A short recap of some requests:

1) Accidental Change with multiple forms each related to a different state. Now that I think about it, a percent chance of changing into one of several forms with the same trigger would be cool too.

2) Limited shapeshifter requiring a hero point or maybe a token system of some kind (charges? cans of spinach?)

3) Dependant - a character you have to protect from harm/KO (Jimmy Olsen, Aunt May, Scrappy Doo, etc.) that has a percent chance of showing up during a mission (like nemesis)

4) More slots for Summoner

5) Grades of Vulnerability - grade 2 has 2 vulnerabilities, grade 3 has 3 vulnerabilities, etc.

Epimethee

Quote from: bearded on August 30, 2008, 11:34:14 PM
just a random thought on this...exploding thrown things cause knockback correctly?  what if all items had explosion tagged (...)
Nice idea, but I still see two issues.

The first, as Tommy mentioned, is that objects don't always get destroyed on first throw. In theory, this could be solved by triggering the explosion through scripting (hopefully, the lag from parsing ff.log, etc. won't mean it happens after the target and throw object are no longer near each other) when detection collision – the latter being rather problematic, especially since you don't want false negative or false positive detections.

The second is that explosions do spherical, not directional damage. Any hit would damage every nearby object and character, not just the actual target. This could be done through scripting (mmm, 3-D vectors and physics... I haven't done maths since 11th grade!), but again, the script lag could give some bizarre results.

So it would require a bit of scripting, IMO and for that I really need to finally debug mlogreader.RegDamage() first.  :mellow:

Quote from: tommyboy
I think something could come from this idea, but I also think that a competent programmer could look at the .exes of the two games and maybe spot the difference and fix it.
I guess you remember the thread on the subject in the general FF forum (probably much better than me, I can't find the thread; was it before the last FR server attack?)... I really wish something could have come of it too. That'S one of the issues with such a small fan base: no hackers under hand to mess with executable. (Not sure if Vista memory address randomization make these tougher, BTW.)

Quote from: tommyboyAnd randomly selected animations for dodge, ranged, run, fly etc.
I take it the _a, _b, _c suffixes work only for melee?

tommyboy

Quote from: Epimethee on August 31, 2008, 09:10:59 AM
Quote from: tommyboy
I think something could come from this idea, but I also think that a competent programmer could look at the .exes of the two games and maybe spot the difference and fix it.
I guess you remember the thread on the subject in the general FF forum (probably much better than me, I can't find the thread; was it before the last FR server attack?)... I really wish something could have come of it too. That'S one of the issues with such a small fan base: no hackers under hand to mess with executable. (Not sure if Vista memory address randomization make these tougher, BTW.)

Quote from: tommyboyAnd randomly selected animations for dodge, ranged, run, fly etc.
I take it the _a, _b, _c suffixes work only for melee?

Yes, I still have the disassembled exes somewhere on my system, but am too lazy and ignorant to learn how to 'read' them.
And yes, only the melee animations have the randomly selected anim bit coded in, I've found it within the disassembled exe, but have no idea how to graft it onto the fly, run, dodge parts, even though I have found them too.
Well maybe one day....

Epimethee

Quote from: yell0w_lantern on August 31, 2008, 08:03:40 AM
A short recap of some requests:

1) Accidental Change with multiple forms each related to a different state. Now that I think about it, a percent chance of changing into one of several forms with the same trigger would be cool too.

2) Limited shapeshifter requiring a hero point or maybe a token system of some kind (charges? cans of spinach?)

3) Dependant - a character you have to protect from harm/KO (Jimmy Olsen, Aunt May, Scrappy Doo, etc.) that has a percent chance of showing up during a mission (like nemesis)

4) More slots for Summoner

5) Grades of Vulnerability - grade 2 has 2 vulnerabilities, grade 3 has 3 vulnerabilities, etc.
Thanks; hopefully some of them can be done by one of us for the next FFX, whenever that may be.

1, 2) Those Shapeshifter variants are always a pain to develop (lots of debugging), but these ideas are quite interesting. I had started working  on #2 as an Accidental State condition, but it was a false start. For the Popeye/spinach can, though, you can use Gestalt/Amalgam.

3) Has been on my to-do list for years (well before FFvsTTR, AFAIK):
Fan favorite
(Inspired by an original idea by BlueBeard)
Random chance of having your biggest fan follow you during a mission.
You then get one more hero point, but if fan is k-o.ed, your team lose two hero points.
You can give autographs to the fan to send him or her away temporarily.


4) Personally, I won't tackle this for now, as the FFX Control Centre tends to get a bit fragile with too many slots, and as the way it manages Summoner is a bit weird. You could do the change yourself, though, as it should be quite easy (hint: cf def updatesummoner(event) in ffx.py and FFX_SUMMONER_CUSTOM in ffxdefault.py and fffxcustom.py – back up first).

5) Another one where I'd incite you to have a go at it yourself (the FFX team needs fresh blood, folks!) The simplest way would probably to create a new target type function (or edit the existing one) for the existing Vulnerability attribute, based on the existing isAlienMineral() in ffx.py:
def isAmongTheseAlienMinerals(obj,char=''):
    if not Object_Exists(obj):
        return 0
    return Object_GetTemplate(obj) in ('alien_mineral', 'alien_mineral1', 'alien_mineral2', 'alien_mineral3', 'legalese') or FFX_ObjectGetAttr(obj,'mineralised')
and add 'isAmongTheseAlienMinerals' in ffxdefault.py's FFX_TRIGGERS.

For modders, you can also set objects in your mission script as alien mineras by adding
FFX_ObjectGetAttr('name_of_my_object', 'mineralised') to mission.py.



catwhowalksbyhimself

QuoteAnother one where I'd incite you to have a go at it yourself (the FFX team needs fresh blood, folks!)

On that note, anyone who does tackle something like this usable in FFX will be given immediate access to the sooper-sekrit FFX Yahoo Group.  Okay, it's actually not secret at all, but you do need me to let you in.

yell0w_lantern

Quote from: Epimethee on August 31, 2008, 10:06:56 AM

5) Another one where I'd incite you to have a go at it yourself (the FFX team needs fresh blood, folks!) The simplest way would probably to create a new target type function (or edit the existing one) for the existing Vulnerability attribute, based on the existing isAlienMineral() in ffx.py:
def isAmongTheseAlienMinerals(obj,char=''):
    if not Object_Exists(obj):
        return 0
    return Object_GetTemplate(obj) in ('alien_mineral', 'alien_mineral1', 'alien_mineral2', 'alien_mineral3', 'legalese') or FFX_ObjectGetAttr(obj,'mineralised')
and add 'isAmongTheseAlienMinerals' in ffxdefault.py's FFX_TRIGGERS.

For modders, you can also set objects in your mission script as alien mineras by adding
FFX_ObjectGetAttr('name_of_my_object', 'mineralised') to mission.py.



I'm not sure I follow you. How would adding types of minerals/kryptonite allow me to set 2 vulnerabilities like magic and kryptonite on the same character?

Epimethee

Quote from: yell0w_lantern on August 31, 2008, 01:25:43 PM
I'm not sure I follow you. How would adding types of minerals/kryptonite allow me to set 2 vulnerabilities like magic and kryptonite on the same character?
('alien_mineral', 'alien_mineral1', 'alien_mineral2', 'alien_mineral3', 'legalese'): This is any object template. But now I understand better what you want, I hope:
def isAlienMineralOrMagic(obj,char=''):
    return isAlienMineral(obj,char) or isMagic(obj,char)


Note that isMagic() refers to the hard-coded magicBeings list in ffxextras.py.

Trelau

An other request came to my mind while reading the FFX manual:
"UsePower: -uses the power speicfied by the Power parameter on the target. This is used for blasts such as MEGABLAST, obviously, but could also be used with an infinite range sprint power, for example."

since you've already added a zero-cost teleport, a zero cost sprint,...why not add an infinite-range sprint in the base list of special power?
like, i had no idea it could be done, and know that i know it can, i don't know how to do it.
so if there could be a "infinite range sprint" attack next to the "zero cost sprint" in futur ffx update that would be great.

(and if someone can explain me how to custom one for the moment...)

Epimethee

Trelau: sorry for not getting back to you. Curious; as far as I can tell, infinite sprint should be available. Maybe it's because the power (it's available in FFEdit under powers: ffx_sprint) is set to the the "area" animation?

IPS: Thanks for keeping it alive, actually. As for the Solar Powered, I would probably tend to create a specific attribute rather than to try to hack it together as suggested. Would need to look at the code (got to sleep for now). Is this for a mod?

Mystik

I was wondering if it possible to set up a state swap that only worked on a char if it had the vulnerability   attribute . e.g  a energy beam with high stun that acts normally when it hits a char without the attribute, but if it hits  a char with the vulnerability attribute, the char feels the effect of its weakness

Epimethee

IPS: Understood. Adding it to my eventual to-do list.

Mystik: Nice idea! There would be a limitation, however, as power swaps can't be customized – anybody with the Vulnerable attribute would be affected equally, whether the attribute was set to Kryptonite or garlic.

> a energy beam with high stun that acts normally when it hits a char without the attribute
The stun would still be removed, though, both because the way power swaps are coded (IIRC) and for consistency with the existing behaviour.

|