Audrei

Warper
Member
Joined
Nov 12, 2016
Messages
2
Reaction score
0
First Language
German
Primarily Uses
Hey guys!


To start this off: I've been using the RPG Maker 2003 basically since 2003, but recently came to the conclusion, that VX Ace might open up more opportunities for me and RPG making in general. I was very hyped for this and decided I'd start this off by 'porting' one of my bigger 2003-games to VX Ace in order to break the limits of good, old 2003 and add more content to it while retaining the retro style it had back then.


...When I discovered that there are certain things that 2003 did even better than VX Ace.


First off: The 999 map limit. Now while I found many people online saying 'Why is this even an issue for you?' when people asked for solutions to this (not neccessarily on this forum, just online in general) instead of providing solutions, I found a solution pretty quickly and thus fixed this issue (yes, there are people creating games of epic proportions exceeding 999 maps, deal with it. Thanks to all of you, who can understand this <3).


Secondly: The problem I am stuck with right now. You remember those wall/ceiling tiles (I don't know what the general consense in naming these is, I'll call them wall-tiles from here on out) that 2003 had? Where you can walk one tile into them from above (character being hidden behind it, because it's z coordinate was above player level), but then get blocked from walking further inside it.


[IMG]https://picload.org/image/rdpcraop/ceilingtileq.png[/IMG]


Now I noticed that VX Ace doesn't have this function anymore, as you can mark autotiles only either passable O or non-passable X. Since I'm new to RGSS scripting, this is not something I could solve on the spot unfortunately, so I tried my best to find a means to work around this.


My approach was marking all wall-tiles as "damaging floor", since I won't be needing that flag in my game and then detect that and set passability in Game_Map accordingly.


Setting the passability actually went very smooth; what turned out for me to be impossible to do was setting the passability correct while moving the z-coordinate actually to be above player (star-layer) while retaining it's passability properties.


Now I know this must certainly be possible some way, I just can't make out the ways of the core-script of Game_Map, Scene_Map or whatever else might be involved in this.


So, if anyone has a proposal on how to do this (that a newbie to RGSS can understand) or a script, that solves this, I will be veeeeery thankful :)


If there is any other information you need me to provide, please say so. Also, I found a script, that can do this by assigning regions to the map on every tile, that needs to be above hero, but this method is to be discarded, since my old game has A LOT of indoor maps and this would be a TON of work for all maps combined (and also easy to overlook some areas) if done manually. I need a script that just does it automatically by detecting some flag set in the tileset-editor.


Looking forward to you guy's replys!


Regards!
 
Last edited by a moderator:

Kes

Veteran
Veteran
Joined
Aug 3, 2012
Messages
22,512
Reaction score
12,002
First Language
English
Primarily Uses
RMVXA
For auto tiles you can walk behind I use Neon Black''s Terrain Tags script . on my phone so can't give you a link  but search will bring it up.
 

Shaz

Global Moderators
Global Mod
Joined
Mar 2, 2012
Messages
43,758
Reaction score
15,317
First Language
English
Primarily Uses
RMMV
I don't know how it worked in 2K and 2K3, but in XP, you give tiles a priority between 0 and 7.  0 meant the tile was always under the player.  1 meant if the player was lower than the tile, the player would be shown in front, but if the player was on the same y-value as the tile, the tile would be shown in front.  This was used to calculate the z priority, and gave you tiles that you could both walk behind and in front of.  VX, Ace and now MV have done away with the 0-7 tile priority concept, and you only have 0-2 which are below, same as, and above characters.  A tile marked as above characters (with a star) is ALWAYS above characters, no matter where you're standing.  A big loss imo.


Victor wrote a plugin for MV that re-introduces this concept.  Neon Black's Terrain Tags script goes somewhat towards working around the problem in Ace, but it has issues under certain circumstances.
 

Audrei

Warper
Member
Joined
Nov 12, 2016
Messages
2
Reaction score
0
First Language
German
Primarily Uses
Hey, firstly, thanks for the replys!


I just took a look into Neon Black's Terrain Tags script, but it's just like the one I found earlier and also needs every single tile to have a region applied, which would become an insane amount of work and is also very prone to mistakes by overlooking areas and thus creating more workload through applying fixes.


Also, setting a region on a tile that gets shifted into star-layer will overwrite the passability to passable on every tile, since the "above" tag overwrites the "damage floor" tag used to set the passability correct in my current approach.


I don't think there's a trivial solution to this that can be achieved by banging scripts together, but needs a clever solution on it's own, as it needs to have passability and layer set separately.


This is what I came up with so far:


class Game_Map
  #--------------------------------------------------------------------------
  # * Determine Passability of Normal Character
  #     d:  direction (2,4,6,8)
  #    Determines whether the tile at the specified coordinates is passable
  #    in the specified direction.
  #--------------------------------------------------------------------------
  alias IMpassable?       passable?   #save the original method
  def passable?(x, y, d)
    unless overhead?(x, y)
      return check_passage(x, y, (1 << (d / 2 - 1)) & 0x0f)     #if not wall-tile, perform the usual passability
    else
      return !overhead?(x,y-1)     #only make the upmost wall-tile passable
    end
  end
  #--------------------------------------------------------------------------
  # * Determine if Overhead
  #--------------------------------------------------------------------------
  def overhead?(x, y)
    valid?(x, y) && layered_tiles_flag?(x, y, 0x100)              #returns true if the tile is flagged with damage floor, making it a wall-tile
  end
end
class Game_Player
  #--------------------------------------------------------------------------
  # * Determine if Damage Floor
  #--------------------------------------------------------------------------
  alias IMon_damage_floor?          on_damage_floor?   #save the original method
  def on_damage_floor?
    return false                  #this basically just turns off damage floor
  end
end 
 
Last edited by a moderator:

Latest Threads

Latest Profile Posts

unintentionally made a track that sounds straight out of Yume Nikki
Revisiting one of my older projects in a long time to work some more on the mechanics. I've been working on- and off-again for about a year now on recreating the Force and Mystic systems from Wild ARMs. And I think I've finally made some good breakthroughs on that!

Still, it is not perfect and I may post my thoughts at a later time to see if there are any other suggestions or alternatives I've missed.
actor name string, why you gotta be case sensitive like that?
Doing RPG Maker News for 26th October 2021

My entire world, full of monsters and treasures, will likely be done by the end of the year. After that it's all NPCs and side quests... then done. I'm never making an open world game again xD

Forum statistics

Threads
116,106
Messages
1,095,856
Members
151,511
Latest member
jjjjjamjam
Top