Sculpt Bridge, Platform, Ladder so on

Started by SickAlice, October 15, 2021, 05:14:28 AM

Previous topic - Next topic

SickAlice

What it says on the tin. This has bothered me for years and I'm not a good coder but maybe someone else will figure it out. So there's some common comic book superhero powers and abilities absent in our games and one is the ability to create platforms, bridges, ladders and so on. Add after to control them specifically but put that on the side for now. So for example Invisible Woman makes whatever and characters can walk on it. Iceman makes an ice bridge characters can walk across. Spidey makes a net to catch falling people. Green Lantern makes a bridge across a fallen break in a concrete one to save people. And so on.

So gamewise it's point A to B then counter for distance/height. And I was stuck there but then I thought about beam FX's. Beam FX's, and again lack of code knowhow so I'm not sure if this is in the nif, the engine or partly both, but they travel from a predetermined point on a select character (Node/Bone/Biped) to a select point generally selected by the cursor be it another character, object or it's surface. So this is there right in front of me.

Now in FFX you can sculpt things with that command and toy with them in the Python script of course. So you can have your Green Lantern character and one of the options for example is to make a wall. And the wall stays around and characters interact with its bounding box. The can't pass through it but can stand on it. It has those options set in the editor.

So it should be a hop then to take it to the platform point A to B stage right? Character spawns bridge object which is set up like an FX beam. The player say clicks on one building across from the building the character that can generate this bridge beam is standing on currently. The node point would start at the characters feet to make the platform at ground level adjacent the buildings. It's set to stand on and such and like the wall has whatever scripting that makes it solid and permanent, or semi-permanent.

So that's round about the idea if anyone wants to give it a go. I think it would add a lot of flavor to the game and probably be useful for people who make missions and mods and such.



Epimethee

Interesting idea to use a beam for this (that's kind of the way the Living Laser attribute works IIRC).

I vaguely remember (hey, this was 15+ years ago!) trying unsuccessfully to do do an attribute to catch falling characters. One of the issues with using objects: The game engine doesn't support superposition, so any object you can stand on is going to block anyone below. To reduce the impact of this, mayyyybe the platform could be done in sections, with each having a lifespan of only a few seconds. Sadly, I can't test it, as the hack which allowed my Mac to run FF doesn't really work anymore.
FFX add-on for FFvsTTR at ffx.freedomforceforever.com

SickAlice

Ty. Maybe I'm wrong on that, again this is a weak area for me but I know the way those beams are handed is they're drawn/stretched in game from origin point to selected point with and then distance is factored so it seems like a good place to look. Likewise because in FFX we can access FX attribute and do the solid part/specify nif. I mean I know it's there, I have that much. Same with the keyframe swap program I talked about. I know the converters go through the strings and values and do auto batch conversion so adding more functions shouldn't be a task, not at least for anyone with the programming chops. My problem is I don't have the chops so I have to put messages in bottles like this. I learned binary a long time ago, things moved past it and I never really caught up.

But anyways if anyone does this and shares it with me I'll be pleased. I will when I have time do shot in the dark experimenting with this though, I've pulled off magic before just doing random things like that so who knows. Still need to figure out the driver/rider issue speaking of, I ran into a wall on that one. Short of that was the player has the chosen character "stand on" select vehicle object. Vehicle object can be selected as movable character and then the standing on character moves with it. But the game just have any of this, more I'm doing it wrong of course but I tried every random thing I could think of and just couldn't hit the bullseye here.

On your note does it matter much? I mean the below can just move around the platform where need be, same as a summoned wall. Mostly these platforms would be up from rooftop to rooftop anyways so characters wouldn't be running into the undersides much being on the ground level or flying around in the air. The shelf life thing is smart though. And/or make it destructible. Like our Iceman slide for example, bad guys could try and ruin his day and his efforts to save the civilians. But of course getting this working in the first place then.

Epimethee

Quote from: SickAlice on October 18, 2021, 12:06:01 AMOn your note does it matter much? I mean the below can just move around the platform where need be, same as a summoned wall. Mostly these platforms would be up from rooftop to rooftop anyways so characters wouldn't be running into the undersides much being on the ground level or flying around in the air.

There's the rub: anything under the object is going to be blocked, even below its bounding box. But maybe it's not much of an issue if the bridges are small and short-lives.
FFX add-on for FFvsTTR at ffx.freedomforceforever.com

SickAlice

Huh. See I was thinking it would be building top to building top right? I mean where else is there to create said bridge. So the other characters would simply move underneath it at ground level or around it as they do any object and it's bounding boxes. I don't understand how they would be block from moving by this? There would be a space between the bridge at building top level, the ground and the other characters on the ground level.

Epimethee

That's it, though: there's no concept of "underneath" for characters in the FF game engine's physics model.*

*Unless flying, but this can be simply considered as a different 2-D layer.
FFX add-on for FFvsTTR at ffx.freedomforceforever.com

BentonGrey

So, this doesn't address everything you're thinking about, SA, but it's possible that monkeying with something like Plasma Sculptor might let you do some of this.  If you create some of the summonable objects as buildings, it's possible that you could climb on them and interact with them like you do with normal buildings.  You wouldn't be able to pass beneath them, I think?  But you might be able to create a mesh in the shape you want, set it up as a building, and then spawn it with the attribute.
God Bless
"If God came down upon me and gave me a wish again, I'd wish to be like Aquaman, 'cause Aquaman can take the pain..." -Ballad of Aquaman
Check out mymods and blog!
https://bentongrey.wordpress.com/

SickAlice

#7
I get it Empimethee. I thought that might be where you were going with that. My understanding of this engine is kind of limited, I bowed out learning game programming as of back in making 2d games speaking of but that was an issue then. So yeah, is there a way around that problem would be the next question? Well not for myself, like I said I'm mostly pitching this for others since the coding aspect here is above my station. I know at least from my own toying that there's usually an optics trick of some kind that can played out to create a desired effect, not in that case though.

*edit: walking away thought and again I don't know this stuff well enough (I should take a Python class, I know lol) but my mind says and speaking of the 2d game programming days then the resolution would be to introduce said "underneath" variable say through FFX py. wouldn't it? I probably am missing something there but just the thought I'm having. I know height, distance, bounds and contacts are all open variables so it stands to me to the variable could be introduced all the same as Stand-On and such is. Oh and I suppose remembering my stuff the variable of "overhead" would need to be introduced as well. This was something I had to do in those overhead dungeon crawler type games at least.

Yeah Benton, Plasma Sculptor is what got me thinking about it. Well CB and one of the last things we Msg'd about which was him teaching me how to make beams and so on and how they have a flexible point A to B draw function happening. Maybe this would need to be coupled with preset maps and missions and so on, I dunno. I just feel there's "something there" but it's outside my wheelhouse. Normally in my case I accidently stumble on things by having done something the wrong way.

Epimethee

I'm no great 3D game engine programming expert myself—my background is in graphic design. ;) But yeah, the old Gamebryo game engine is quite limited; this is far from the likes of recent versions of Unity or Unreal, as far as I can tell (I kicked the tires of the former for a year or two, but realized this was too complex for me to achieve results while having a full-time job).

The other aspect is that the Python scripts have only access to a small part of the game engine's native capabilities. And of what's documented, not everything works (the Python bridge was probably added to make mission creation easier for Irrational game designers and devs; if a function wasn't used for what they ended needing, it might not have been debugged or actually developed). Long story short, height, distance, bounds and contacts are not fully available. For example, you can get the position and orientation, but not the dimensions of the bounding box. Case in point: FFX's heightcheck.py module is used to get the heights for character meshes: it involves letting a small object fall on each mesh multiple times to get the average moment when the two meshes collided. Mind you, I could also have tried to read the mesh source file, but that would have brought its own complications, especially with regards to hexing.

However, as you and Benton said, it should still be possible to do what you're looking for, more or less. And I do invite you to dig further into Python: it's rather easy and—dare I say it?—fun, plus it's quite useful in different settings nowadays, as it's become hugely popular.
FFX add-on for FFvsTTR at ffx.freedomforceforever.com

SickAlice

Same with graphic design. Well art in general since childhood even. But I do have a lot in math, I needed it to apply to 3d animation and did take a few years and devote them to learning basic game programing. And it's pretty standard between all the above, variables. Yeah, the old Gamebryo and more what they decided to implement in these games is limited, I've been trying to relate that here often. In their defense engines were at the time though at any rate it doesn't lend itself to sandbox game ideas. But I get it this thing is screwy. If I could turn back time I would just take the needed stuff to acquire and learn the Netimmerse engine so I could implement what's needed myself, update the engine and so forth. Likewise I'm a slouch. Unity, ugh. In our defense even the pro's say Unity is very difficult to work with.

I should learn Python. Maybe if this pandemic stuff lets up and I end up closer to a city, that's somewhat in the cards but on hold. Then I'd take a class. However, well I have a lot going on between work, health, family and their health then the time for my own art and even luxury (not really sure what this last one is anymore?). So probably not.

And what you're saying is about what I thought here, limited access is the problem. On a side note I think it's kind of dumb that this stuff isn't open given a game made to mod, relative variables are otherwise standard stuff in game design going back to the 16 bit ones I used to work on even. I'm glad someone here is on top of this though and knows their stuff, thanks. Bummer though, on the art end I have a lot of ideas I would like to put out, same for the questions I toss about riding vehicles/animals and walking about inside buildings/camera viewpoints.


Randomdays

Since I don't know anything about this part of the game, probably a stupid thought but....skyboxes

When I was looking into skyboxes a while back, I was able to set it up correctly - the large skybox surround the map with the character "underneath" it.

Someone else on the thread said he couldn't get it working right - his character always wound up standing "on top" of it.

So, a mesh where in two different examples , the character was both below and above the mesh.

Maybe due to its size and its above both the walking and flying heights, but maybe experimenting with a smaller version?

Or on the same large size mesh, but instead of a sphere, a flat top that the character could walk on?




SickAlice

I think you're right on the part about it resting out of bounds. That would be why it doesn't block that fixed camera view. Given what he said and what I know about variables it more tracks that it works because it's out of bounds. I think I tried that thing a long time ago, did a dat merge or whatever it called for and it failed for me too. I wasn't that concerned for the map so I never picked it again.

But yeah variables. Old game stuff. Like old Mario platformers right? There's a variable of above and beneath. Then an "if" code runs and does a check if the sprite for block and it's bounding box (if the game doesn't just use the sprite for that) is "above" then negative or positive value from the player/Mario sprite index number whatever or bbox before the variables for Mario "breaking" (the sprite changing to another and a new object being called into play) the box above his sprite. Or same deal, check "if" box sprite is "beneath" player/Mario sprite index number X by negative or positive value (going to be negative because it's down, this conforms with the gravity value) to then engage to "stand-on" value, a value of course we have in these Freedom Force games and can punch in through the Editor. So said variables for above and beneath have to actually exist in the game engine to begin in with in it's code. And as he said then as a modifier you need to be able to access that value and change it to whatever desired effect, copy it over elsewhere and so on. Old 2d day programming but I tear apart games often and much of this is still used if not just has a different name, is streamlined and in most cases enters extra coordinate values that account for 3-dimensional space (our fun XYZ and so on).

Unless there's a glitch. As I said as well it wouldn't be the first time for me and these games and something that should not work at all just did because of said glitch and me exploiting it. But I dunno, without that above and beneath value what is to tell the game where any character is in proximity to said bridge as he put it? I also know because I ran into this problem recently with vehicles that Stand-On property is a real fussy old jerk. It does not play well when coupled with other game attributes if it won't just cancel out the other or itself.


Randomdays

Maybe it comes down to scripting again, as you said, if the engine can teleport. If the character is at x/y/z, or operates object X, then teleport to x/y/z. If you could teleport to being on top of the skybox and back.


SickAlice

It was a guess about the sky mind you. I've seen that thing. It's a large half of a sphere. It could be that it's position and intentionally being so large falls out of the camera position this putting the camera underneath the top of the dome and outside of contact of the game objects, the player right? Or it could be how it's textured. Say only the inside faces where textured and not the the outside. When the camera is pointed at the untextured faces those faces are simply not drawn in game. You know this problem, typically people here call it ghosting. It's resolved by either texturing both sides of the model itself and importing it or using a value like Stencil to apply the texture to both sides of the object thus making it visible from all angles.

However there's the thing where the character is moved to a standing position on it. That indicates that it does fall in contact range, no above or beneath value right? At least not the specifics we need because we know a character can in fact fly over another without any issue. Having no value to work with the program defaults to putting the character on top of the sphere model as if it was the ground. Even though the Stand-On attribute wasn't added because again that attribute is not flexible. This is a guess too but sort of going in the direction about lack of value and/or the value is not something the user can change on their end. I'm leaning to the former, the game engine never had a value for the skybox object (X=Y) in there since they never included a sky hence why the error happens. I say this when looking at your idea about shrinking the sky sphere. It seems an ideal exploit however again if said value is either not present nor can be manipulated by us then this won't work. The program won't know to draw what we trying to tell it to draw because there is no relative above or beneath position for it work with. See the ghosting problem where it doesn't know what untextured faces are either so it just doesn't draw the object. Our problem is the lack of position and figuring that out. Or more a conflict with one position and another. Our present factors hardcoded into this game are the solid bounding box of the ground and of the top of buildings/cars and so on. Hence I think Epimethee's idea about it being an object where basically we psyche out the program via the Editor to think this bridge is in fact a building object, it just has a different shape thus it takes on the present building attributes and variables.

Like I said not my area and more something I was pitching for the people who that are good at this stuff. I would be going in circles trying to figure this out, more giving up on it pretty quickly because I wanted to spend my time working on 3d models and textures since that's the area that stimulates me. I have decent background like I said. My last return to schooling at the end was me doing the long math to factor manned intergalactic travel and figure all the time, fuel needed, stress factors, dilation, shelf life of organics and so forth. Also I hated doing it and wanted to be doing anything else with my time aside not being job applicable. There's not a lot of people charting flights to the Andromeda Galaxy after all so not really any working hours in doing this. We haven't even made it to Mars. So likewise when it comes to Freedom Force I spend my time and devote my mind to what actually stimulates me, I'm not getting paid for this either. So if this however anyone else's cup of tea? Well I hope they find something and I would love to see it. I'm going to otherwise fixate on how to make proper baked in particle emmiters, that just vexes me to know end especially knowing it's not just possible but the way particle emmiters are supposed to be done in the first place (see: Bacchite nif). And else make models and textures of characters. But I do like the discourse here a lot, I like learning new to me things.

BentonGrey

Quick thought: the skybox is not likely to be an avenue of solution here, because it will present the same issues as any other object.  Essentially, it all comes down to FFEdit object settings.  If the skybox/sphere objects are set correctly, they are set to be, essentially, empty objects that have no physical presence.  Yet, if you change the settings, then your characters will end up on top of them instead of under them because it simply recreates the pathing issues with the engine already discussed.  You simply can't have more than one 'floor' level in a map.  Characters ended up on top of my skyboxes when I added them directly to the mapnif, but that essentially made the actual terrain unplayable and converted the skysphere into the 'ground'.

I am curious about creating a 'building' object that has some open space beneath it and whether the engine could handle that.  That's worth testing.
God Bless
"If God came down upon me and gave me a wish again, I'd wish to be like Aquaman, 'cause Aquaman can take the pain..." -Ballad of Aquaman
Check out mymods and blog!
https://bentongrey.wordpress.com/

SickAlice

That floor thing, yes. I think about and I know I'm not alone playset stuff, like a walk into X-Mansion. Or Castle Grayskull. Or recently, tonight since I worked on it a little the classic Turtles Wagon and the door opening (I do have this figured out just for looks) and the Turtles walking inside. Like in those Lego games for example, you can walk about in buildings and the camera pan just changes with that trigger. But I know it isn't here in this game. Then I think about the old 2d game making days, dungeon crawlers. And what you would do is create an illusion. The "inside" and the "floors" of the building or cave you enter are actually just sitting on some part of the map out of view. And you're character sprite when it collides with the door sprite is just moved to that other position on the map. And maybe you throw a quick scene transition effect right at that moment so the players eyes won't catch what happened here. But that too here? Maybe in some sense, I figured it out and used it with summon characters after all. For bridge I don't see what that would that do. But that's why I'm thinking minion right? But then I am certain that Stand-On does not work with what's defined as a character. Nor would factoring distance from building top A to B as a beam FX can.

The building sounds like an idea but does it lose other properties? I mean like aren't even allowed. Now a preset of course where this is programmed into the mission itself and map? I know speaking of Lego has done it that way or at least did at some point. When you played it looked like you called up this object but if you looked at the game you were prompted to make that bridge at an exact point in the older games. There was usually even a blinking icon there right? So the truth is that bridge was already there, it was a present stage element. It was part of the floor level as you put it. It just was hidden from view as well it's bound was. Or instead there was a different invisible object there that represented a barrier and if the player came into it their character would fall and break apart in comedic Lego fashion. Then when the "make bridge where X marks the spot" function had been enabled that barrier as I called it was dismissed. Something like that anyways.

So maybe though the thing of interest to me is that point A to B thing. Like I said I do know it is a function in this game, it's a typical draw function of any program. And I know because it's present it FX nifs and so I know we have some access to actually mess with it. Maybe that's why I was thinking just use an FX type thing? But then does Stand-On work with an FX? Probably not.

Well again though fun to kick this around but I know there are a lot of things I don't know here, not my strong suite as said. In fact the floor thing you just Benton. I should have been able to figure that one out but that's just not a thing I deal with often. Because maps. Like you talk and to me once in awhile mention footsteps. I have an idea, sort of. A picture in my head at least of that. But setting it up and factoring into other things I might be working on not so much. I just don't work with it enough or mostly I haven't done much other than read about two forum tutorials, one here and a long time ago on either GammaPatrol or NPI in the Days Of Yore.

It's going to be awesome though on the other when I log in someday, I will have been off on some cross country trip again I bet and missed all the action and find some post from someone about a bridge sculpting add-on to FFX. I mean it's happened here like that as you know. You show up one day and that thing you stopped dwelling on awhile ago just "kaboom!", some tricky genius here totally nailed it. And you fire it up game which at this point you haven't done in awhile (like when I got into playing that pay to play TMNT Legends game and turned into a vampire speaking of) and you see this thing show up and work like how you imagined it should, and a warm smile walks across your face. You know? Yeah you do. Speaking of when they delivered FFX for the first time. Kid in candy store and all that. Second Christmas of the year is what that was like to me.

BentonGrey

#16
Yeah, I think you could certainly use some cheating and sleight of hand to create the illusion of this kind of thing.  I don't know if you saw my DCUG developer's diary where I talked about finding a way to paste map nifs onto each other and perhaps change our playing spaces that way.  I haven't figure it out yet, as I haven't made the new space playable yet, but maybe someone will figure that out.  If so, that would give us a TON of options like this.  You could literally create maps where players can walk up to buildings, step on an FFX teleporter, and be transported to another part of the map, which is an interior space.  That would be really cool.

Stand-On: As far as I know, this only works with objects, not characters, and I'm certain not with FX.  And yes, a building would probably lose some functionality, but it's the best idea I've got, I'm afraid.  It wouldn't work exactly like you're wanting, but it could probably be a reasonable facsimile, given Plasma Sculptor.  One limitation is that you can't target most FFX powers on the ground.  I don't know if you can Plasma Sculpt on the ground either.

I know what you mean about not working with this stuff much.  I have had to teach myself a lot for modding, but I still feel like this isn't really my area of expertise.  There's so much I don't know!

I hope we'll see something like that, SA!
God Bless
"If God came down upon me and gave me a wish again, I'd wish to be like Aquaman, 'cause Aquaman can take the pain..." -Ballad of Aquaman
Check out mymods and blog!
https://bentongrey.wordpress.com/

SickAlice

Stand-On only works with objects within exact parameters on top of that. I found out the long way about that. As I as saying if you try and cross-pollinate other specific attributes or it crosses/contacts certain other things in game? Big mess. That's why I keep kicking it out there. That Stand-On function is a bit of a hurdle. Not as bad as the Ladder one if you ever tried to mess with that one but I keep it in mind.

I haven't read your blog. I do have it bookmarked, it's own folder on my browser even. The time just hasn't opened up for it. Like I said I do need to invest more in maps. Or I want to. Scripting speaking of you, missions and such and pretty much an empty tank. Every chance over the years but I just never came into that. Like when I have free time for Freedom Force it ends up going to models and textures and then animations. Almost always regardless of having ideas like this. And I'm getting older which means slower and at the same time busier, adulting and so on of course so less and less time. I mean I get to listen to a few songs every now and then for recreation but it's always in the dead of the night while multitasking and I never get to listen to a single one straight through. That kind of adulting life. Always work to do. So models and Spider-Man and Turtles, things that make me happy working on them. I just never get to the rest. One day I will finish my room map though, no matter how ugly it comes out I promise I will do that much.

I do know more about Python then I let on, I should make it clear. I'm just not an expert and mostly being daft so I can the gory details from whoever knows is all, also check myself in the event I taught myself wrong somewhere. Always good to doubt yourself I say and never become arrogant. But I mean even when I was a kid I was pushed into programming so I'm not clueless with it, mostly I lack motivation and interest in it. Too much time of my own life spent hunched over a desk with numbers pondering what a social life entailed lol. Getting older it's even harder then to push myself to do it. Just looking at factors in keyframes even repulses me now, like why does this boring junk just have to exist and insist I must use it to live? But the math wins, it always wins. We invented it to do what we couldn't of course and now it owns us. Just being silly for laughs here. I hope. Anyways I'm not wasting this here fyi, I am paying attention to every detail everyone's saying and absorbing it all. I will probably be thinking about when I'm in town grocery shopping today and forget to buy the pumpkin pie filling in the process or something (while looking at right at the list I wrote of course). I mean I'm kidding, it would be scary life where numbers owned us all (I said grimacing at my bank account and budget). Oh well, there's always comic books, Freedom Force and good company though.

SickAlice

#18
I had a though about this last night. I was taking apart terrain.nifs. Seeing what's what and what I can learn. So in a terrain nif there's data attached to each mesh piece and there an assignment is given to that part of the level. The game engine reads it and then knows how to interact with it. One of them is underneath building. This tells the engine the character doesn't walk there if the building is sitting on it (as opposed to destroyed). Just a thought occurred there. First my idea then obviously needed to incorporate the values assigned to terrain since it would be treated as terrain (standing and walked on). Likewise the idea I have about player characters being able to interact with rides/vehicles. That's beyond me to do. But just floating it.

The other thing I was thinking about was Benton's issue where the character ended up on top of a skymap (a spherical mesh place in the game as an Object). So the issue I think I'm seeing is that sphere needed to have been assigned as a level type piece/have info contained in the nif. The type of setting that says it's not ground or solid or anything else. Or as a component of a terrain.nif itself as opposed to an object nif. One with assignments on the faces as ground would have. This all came about because I was thinking the idea of a spherical level the characters can walk all the way around. In that case of course it would have to be terrain.nif. If you go into the City level in  FFX = :ffvstr: you can find an example. Go land on the top of the building to the right of your characters starting position using a jump attribute. Now try and jump on the taller building due North from that one. You're character will seem to vanish. You can land on all the buildings in that corner group except that one. Your character isn't invisible of course, they on the ground under that building. You then have to direct them to some other target in the stage and you'll see them at some point navigate their way out of that mess. And that's because right there the needed bit wasn't programmed in. So anyways back to old school game programing, bound in relative direction, right? Mario block has a 2 component bound, one is the set on the bottom half of the sprite, the other the top. Check Mario's If In Contact for not pass through the sprite moving North Else not pass through when relative South of Mario's sprite. If Breakable, Item Box sprite index moves to relative action according to our North and South bound checksum. And so on.

Anyways levels aren't really my thing but maybe this will all be of use to someone.

cmdrkoenig67

#19
Quote from: Epimethee on October 23, 2021, 12:37:55 AM
That's it, though: there's no concept of "underneath" for characters in the FF game engine's physics model.*

*Unless flying, but this can be simply considered as a different 2-D layer.

I don?t know a lot about the technical stuff, but what about a ?flying character? bridge? Maybe have it locked in place on a map? You know, make a bridge object, but make it a character, give it the flying attribute, have it flying constantly, somehow, than lock/anchor it in place where it should be? I don?t know, probably another of my dumb ideas.

Dana

Epimethee

Quote from: cmdrkoenig67 on August 31, 2022, 06:38:55 PM
I don?t know a lot about the technical stuff, but what about a ?flying character? bridge? Maybe have it locked in place on a map? You know, make a bridge object, but make it a character, give it the flying attribute, have it flying constantly, somehow, than lock/anchor it in place where it should be? I don?t know, probably another of my dumb ideas.
Actually, it's some nice thinking-outside-the-box! Sadly, IIRC, while there's collision detection, you can't (or at least I couldn't make it work) stand on a character: I've tried with normal characters and vehicles, without luck: so no ships or giants carrying other heroes.
FFX add-on for FFvsTTR at ffx.freedomforceforever.com

SickAlice

I tried this already (see my comments about the Turtle Wagon) and I met failure there too, sort of. I can work around the standing by making bounding boxes but I had attempted to make things as Vehicle or vehicle as Character class. The idea then was the other character would go stand on that bounding box while the now selected vehicle/platform designated as Character would move and the other character would simply be taken along for the ride. No dice there. Fails every time.

There may be something mind you. I know there are other games that are Netimmerse that use such a function. Whether or not that is available in the FF engines (I assume that's a no) is the question followed by can one modify and script something to the effect using what is on hand? Being lame at coding that is not my dept. of course.

oktokels

I could be firing shots into the air, but I'll shoot anyway. The FFX State Swap "throw 2" makes the hero pick up an enemy and put them on top of himself for a period of time, while the hero does a throw animation. The thrown character has a fixed knocked out animation, for the duration of the hero's animation. Maybe it could be a starting point for something.

Spoiler
Quote############# THROW ATTACK ##############################################

def stuntothrow(event):
    throwP(event.object,event.string,PCSTATE_STUNNED,COST_STUN)
def hypnosistothrow(event):
    throwP(event.object,event.string,PCSTATE_HYPNOTISED,COST_HYPNO)
def ragetothrow(event):
    throwP(event.object,event.string,PCSTATE_ENRAGED,COST_RAGE)
def exiletothrow(event):
    throwP(event.object,event.string,PCSTATE_EXILE,COST_EXILE)
def blanktothrow(event):
    throwP(event.object,event.string,PCSTATE_BLANK,COST_BLANK)
def panictothrow(event):
    throwP(event.object,event.string,PCSTATE_PANICKED,COST_PANIC)

def hextothrow(event):
    throwS(event.object,event.string,SCSTATE_HEXED,COST_HEX)
def blindtothrow(event):
    throwS(event.object,event.string,SCSTATE_BLIND,COST_BLIND)
def powernulltothrow(event):
    throwS(event.object,event.string,SCSTATE_POWER_NULLIFICATION,COST_NULL)
def weakentothrow(event):
    throwS(event.object,event.string,SCSTATE_WEAKENED,COST_WEAKEN)
def speeddecreasetothrow(event):
    throwS(event.object,event.string,SCSTATE_SPEED_DECREASED,COST_DECREASE)
def buoyancytothrow(event):
    throwS(event.object,event.string,SCSTATE_BUOYANT,1.0)
def speedincreasetothrow(event):
    throwS(event.object,event.string,SCSTATE_SPEED_INCREASED,1.0)

def densitytothrow(event):
    char=event.object
    source=event.string
    if FFX_GotState(char,SCSTATE_DENSITY):
        Object_SetGenericState(char,OBJSTATE_DENSITY_CHANGE,0,REMOVE_STATE)
        FFX_UpdateStates(char)
        makethrow(char,source,COST_DENSITY)

def throwP(char,source,state,intensity):
    if (Object_GetClass(char)&FFX_CHARACTER)==0:
        if Object_GetAttr(source,'complex')<1000:
            makethrow(char,source)
        return
    if FFX_GotState(char,state):
        Object_SetPrimaryState(char,state,0,REMOVE_STATE)
        FFX_UpdateStates(char)
        makethrow(char,source,intensity)

def throwS(char,source,state,intensity):
    if (Object_GetClass(char)&FFX_CHARACTER)==0:
        if Object_GetAttr(source,'complex')<1000:
            makethrow(char,source)
        return
    if FFX_GotState(char,state):
        Object_SetSecondaryState(char,state,0,REMOVE_STATE)
        FFX_UpdateStates(char)
        makethrow(char,source,intensity)

def makethrow(char,source,intensity=1):
    direction=Vector_Sub(Get_ObjectPos(source),Get_ObjectPos(char))
    d=1+sqrt(direction[0]*direction[0]+direction[1]*direction[1])
    dx=direction[0]/d
    dy=direction[1]/d
    h=1
    objMass=Object_GetAttr(char,'mass')
    if objMass < 121:
        magnitude=objMass*160
    if objMass > 121:
        if objMass < 176:
            magnitude=objMass*170
    if objMass > 175:
        magnitude=objMass*175

    # adjust for distance
    if d<40:
        h=1.5
        if objMass < 121:
            magnitude=objMass*165

        if objMass > 121:
            if objMass < 176:
                magnitude=objMass*170

        if objMass > 175:
            magnitude=objMass*175
    if d<30:
        h=2
        if objMass < 121:
            magnitude=objMass*170
        if objMass > 121:
            if objMass < 176:
                magnitude=objMass*175
        if objMass > 175:
            magnitude=objMass*180

    # adjust for thrower mesh size
    meshSize=getByTemplate(source,FFX_THROW_CUSTOM,1)
    magnitude=magnitude*meshSize
    h=h*meshSize
    if meshSize > 3:
        dx=-0.5
        dy=-0.1

    # adjust for target mesh size
    subtype = m25ai.FindTacticType(char, 'subtype')
    if ((Object_GetClass(char)&js.OC_VEHICLE)!=0) | ('vehicle' in subtype):
        FFX_ObjectSetAttr(char,'throw2Vehicle',dy)
        dx=0.0
        dy=0.0
    Trigger_Force(char,dx,dy,h,magnitude,TF_ABSOLUTE)
    RegTimer('throwTurnTo',2,0,char,source)

###################################################
#    maxmag=getThrowForce(char,dist*2)
#    if magnitude>maxmag:
#        magnitude=maxmag
#    h=1
#    print 'makethrow'
#    print dist
#    if dist<30:
#        magnitude=magnitude*2
#        h=3
#    Trigger_Force(char,dx,dy,h,magnitude,TF_ABSOLUTE)
####################################################

def throwTurnTo(event):
    char=event.object
    source=event.string
    turnTo(source,char)

def resetForce(event):
    FFX_ObjectSetAttr(event.object,'noforce',0)

def getThrowForce(char,dist):
    mass=Object_GetAttr(char,'mass')
    force=100*mass*(-0.5+sqrt(0.25+0.04*dist))
    minForce=Object_GetAttr(char,'minForce')
    if force<minForce and (force*4)>minForce:
        force=minForce*1.1
    return force

def ThrowTest(mass,dist):
    Object_SetAttr('hero_0','mass',mass)
    pos=Get_ObjectPos('hero_0')
    Mission_SetAttr('startX',pos[0])
    Mission_SetAttr('startY',pos[1])
    force=getThrowForce('hero_0',dist)
    Mission_SetAttr('force',force)
    Trigger_Force('hero_0',1,0,1,force,TF_ABSOLUTE)
    RegTimer('ThrowTest2',4)
    Object_SetAttr('hero_0','minHealth',10)

def ThrowTest2(event):
    pos=Get_ObjectPos('hero_0')
    dx=Mission_GetAttr('startX')-pos[0]
    dy=Mission_GetAttr('startY')-pos[1]
    dist=sqrt(dx*dx+dy*dy)
    #print 'Force=%d Mass=%d Dist=%d guess=%d'%(Mission_GetAttr('force'),Object_GetAttr('hero_0','mass'),dist,Mission_GetAttr('force')/(Object_GetAttr('hero_0','mass')*5))
    Mission_StatusText( 'Force=%d Mass=%d Dist=%d'%(Mission_GetAttr('force'),Object_GetAttr('hero_0','mass'),dist) )

cmdrkoenig67

Thanks Epimethee and SickAlice (I apologize that I missed your post with Turtle Wagon) for the replies, I didn?t know if something like that would work, just thought I?d throw the idea out there.

Dana

SickAlice

#24
Not your fault. I get a bit girthy and around the world when I've had too much caffeine. When I tried it my hopes was to find a bug to exploit actually, I've pulled things like off on occasion. In this case it just glitches out. I'm still doing experiments when I find the time too though. If I had more I'd study other games but again the script would probably lost on me. I would look for say moving platforms that character can stand on. I do see someone created a mod for Elder Scrolls that allows players characters to ride horses. Maybe there's something there.

Trying an experiment tonight. I made a building but it's hollow through the center. Covered on top. Bounding box is the same shape. I can either get a character to walk through the center or to land on top but never both in the same play. This was to see if I could get under a thing with a complete bound and fly up and cause my character to stop at the ceiling side of the roof. No dice there for a bare bones nif either.

*Edit 9/8/22

I suppose I should be sharing the results of the tests. These are fairly simple to reproduce. I use the "pat_grey_building" nif for both to keep it simple. Both retain the individual roof part and settings of that nif. In both tests I checked the terrain and the spots where I placed these has settings that indicate it is ground the character can walk on.

1. Arch type. The first test is an a hollow arch with a roof/ceiling. The hole in the roof is not actually there, I made that with an alpha channel on the texture so I could see the player character and whether they could fly up or not. This had two forms. The first time I forgot to make new bounding boxes so they were the original building (which is not hollowed out then oddly). The player character could walk through the arch but could not fly and land on the roof. Also the player can fly underneath it and up and will be stopped by the ceiling.

The second time I made new bounding boxes that are the same shape as the arch. Now the character cannot walk through the arch but can land on and walk about on the roof. They can walk on the ground around the object as well.


2. Platform type. I decided to simplify it more and just made a floating platform. I used the same nif and made bounding boxes to the shape. The player character can land on the top of the platform but can not walk underneath (indicated by the shadow) nor interact with the other objects on the ground.


Planned future tests and notes:

- Some generic object types are assigned the Stand On Attribute Overrides (of note here no building has this which means this is determined by settings within the nif). The Minute Man and dinosaur statues for example. So I will run a test here. I did attempt it and the game refused to show the object. I assume because the nif is set up as a building still (?) and thus need to try and use a nif that is object as a template, like the named statues.

- Again settings in terrain determine how a character interacts with a part of the terrain. Be it ground, underneath a building, a higher plane, so on. I wonder if this is applicable to map objects (have not tested this)

- There's Attribute Override's I've never played with yet. For example detectangleHeight, detectangleWidth, detectradius and detectradiusMin. I'm going to study what these do. Others noted such as flyover and door. The latter indicates a lower part of an object can be walked through thus underneath it's roof to me.


SickAlice

- Statue test using dinosaur statue (pat_dinosaur_statue).

Character is able to walk underneath object, able to fly from ground and be stopped when they hit the underside of object, fly around and over and land on top of.
Success.