ID:265462
 
I've been thinking about what would be an accurate way to cast movement in the same style as a game like Final Fantasy Tactics. I could just use a proc like get_circle() from AbyssDragon's Math library, but I want terrain like forests, if tread through, to reduce movement, so that won't work.

My original idea was to send out something called a tracer obj that will trace every possible path by taking a step, sending out more tracers objects in every direction except the way it just moved, then delete itsself. But that doesn't sound too efficient.

Any one with some better ideas?

P_S
Prodigal Squirrel wrote:
I've been thinking about what would be an accurate way to cast movement in the same style as a game like Final Fantasy Tactics.

Could you elaborate this further for those less educated in how Final Fantasy Tactics works?
You could create a proc like:
(pseudo code)
imadatum
var{list/closed[0];times=0}
proc/pseudo(turf)
if(times<1)return
for(var/turf/a in cardinal(turf))
if(a.density){closed+=a;continue}
a.icon_state=blue
times--
pseudo(turf)


Something like that would work, a crude algorithim though =p
In response to DeathAwaitsU
I think you can rotate the map to view your character and terrain easier
In response to RaditzX
There won't be any rotating. It's a top down view.
In response to DeathAwaitsU
Well, the character can move to any tile within it's range. But if you are forced to move through something like a forest, it uses up an extra movement.

P_S
I think you should look up the orange() proc, as well as consider what a simple piece of code such as:
for (var/turf/a in orange(src.movement_max, src))

could do.

Hiead
In response to DeathAwaitsU
DeathAwaitsU wrote:
Could you elaborate this further for those less educated in how Final Fantasy Tactics works?

Cast away the evil soul who has not experienced the world of FFT. Hopefully, you've at least played FFVII(the best of the best, IMO)

Hiead
In response to Hiead
I have played FF:VII but I don't think it's the best at all.
In response to DeathAwaitsU
Yay, somebody who agrees with me. =D
In response to Hiead
That won't work at all. orange counts diagonals as 1 space which I don't want (forgot to specify that). Also, I have to check each individual tile for a forest, and reduce the movement if treading through the forest, to shorten that particular path. Then each tile that is perpendicular to the tile current tile, and find out if, with the current amount of movement points left, if they can reach it. (Hope that makes sense.

I'm sorry for the confusion, I should have made myself clearer. Also, I should've mentioned that the movement is identical to Advance Wars. I suppose that game escaped my mind for a minute there.

By the way, if you're interested, here's what the movement looks like (Just wrote the code the two nights ago).

http://i10.photobucket.com/albums/a120/ProdigalSquirrel/ movement.png

P_S
In response to Prodigal Squirrel
Well for the range thingy... couldnt u just make like a variable for the player like for how many times it could move.. Once it moves, decrease it by one(if its zero, cancel movemetn). And when it gets into a forest, Use the Bump() proc to try to move into a forest (make sur if u dont have enough movement "points" you cant move into it) It will take up 2 instead of one.. (oh and if u want like a overlay thingy?, use
ze Entered() proc)
In response to Lou
Are you Russian or something? =p
"FIRE ZE CANNONS!"
In response to Ol' Yeller
Actually, chinese, but thats just one country below russia...so...tats close enough *RUSSIAN POWER!?!?!?*
In response to Lou
That's very similar to what I did. I didn't use bump or Enter, however. I just used an object that traces each possible route based on how many movement points are left, and takes off an extra movement point when it runs into a forest.

P_S