RhapsodyInGeek's Forum Posts

  • Actually, the new "Else" system condition is meant specifically for this kind of thing.

  • Hey there! Sorry about taking it off the Dropbox. I had basically decided to re-do the engine since it was so messy and rigid, but I'm still undecided as to whether I'll do it in Classic or C2. Anyway, there are some things missing in it, though it's a lot cleaner and much more versatile than the previous iteration, as it can handle faction-on-faction fighting and allows for factional relations to change not only with the player, but with other NPC factions as well.

    It plays more similarly to an adventure game now, too, though the goal is still to make it a point and click action RPG. Unfortunately it doesn't seem like I got back into making the inventory and equip systems just yet. Also, right now it bugs out if the MOBs see each other and enter their attack modes, so I guess I haven't finished their behavior yet (though it is fairly simple to do, really). If I can dig up the old one I can put that back up too, but for now this is what it's come to.

    New Action RPG demo

    I probably won't be working on this any time soon, as right now I'm working on a Construct 2 platformer that I decided to tackle due to being easier overall to work on. However, that doesn't mean I can't help you out. Was there anything from the old demo you were looking to replicate specifically? Any of the systems mentioned in that thread I'm pretty sure I can help you with, even if it is just to push you in the right direction.

  • I love this plugin for exactly the purpose you need it for.

    GauVeldt Ease Behavior

    Note that this plugin will always place the sprite at the origin point specified. An easy way to make each sprite behave the same way is by doing something like this:

    At Start of Layout

    For Each Sprite

    ---> Sprite.GauVeldtEase Set Origin = Sprite.X, Sprite.Y

    ---> Sprite.GauVeldtEase Set Destination = Sprite.X + 64, Sprite.Y

    Then you can do something like...

    Every Tick

    ---> Sprite.GauVeldtEase Ease Both

    ... and it'll make them go back and forth constantly. Of course it can do a lot more than just that, but I believe that's probably what you're looking for.

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • Actually it's a simple fix.

    Go to where your conditions are for hurting the player. Should be:

    PlayerBox On Collision with Bee

    PlayerBox is on floor

    ---> hurt player

    ---> set invincible to 1, etc...

    Just add "Player private variable "invencible" is = 0. That way each time the bee collides with the player it checks to make sure the player is invincible before doing anything.

    PlayerBox on collision with Bee

    PlayerBox private variable "invencible" = 0

    PlayerBox is on floor

    ---> hurt player

    ---> set playerbox.invencible = 1, etc...

  • I actually had a decently working ARPG engine going for CC, with dialogue boxes, combat, stat growth, inventory, map warping, allies, save system, and a couple other neat features. Unfortunately, all these systems had to be tied together and so there was a lot of planning involved and integration (and headaches). I also had several revisions in an attempt to streamline everything and minimize the amount of events used.

    But the engine is only the foundation, and houses are built with far more than just the concrete beneath them. Possibly an RPG's most important piece is its story, and stories themselves take a lot of work to develop as well. Then you've gotta conceptualize and create all the assets that any game would need. Hero and enemy sprites, environment sprites, various sound effects, music, fonts... goes on and on.

    That said, I'm sure there are a few people here with an RPG in development. C2 is still really young though, and large ambitious games take a long time to create, so not seeing any of those is to be expected at this point in time.

  • But it's such a simple thing to do?

    Object is dragging

    --> Move to top of layer

    --> other actions

    I don't think it warrants a toggleable option in the object when it's just as easy to add it to your event sheet.

    You say there are a lot of conditions to manage in your game; are you using groups and families? And are your events laid out as logically as you can get them? Using groups and families alleviates so much headache when trying to keep track of all my events, I don't know what I'd do without them!

  • Maybe this would work better?

    For Each (ordered)

    Object: SortedSprite

    Expression: SortedSprite.Y

    Ascending

    ----> Move to front

  • I personally like to use an array, and set it to be global. Of course, you need to document the XY coordinates for each stat, but if you plot it out right you can streamline it quite well.

  • This is so cool. Don't know what I'd use it for but I don't care! Downloading! <img src="smileys/smiley1.gif" border="0" align="middle" />

  • You can set the default health to 0 but if you place a few objects in the layout you can change each object's variables to something different than each other. If you spawn an object via events, you just need to place an action in the same event block telling the object to set its health and it should only pick that freshly spawned object and not effect the others in the family.

  • I like this method:

    On Left Mouse Button Down

    --> Set Angle of Motion = round(angle(object.X, object.Y, mouse.X, mouse.Y) / 90) * 90

    If you wanted it 4 way, it'd be 90 (90 * 4 = 360). If you wanted it 8 way, then you'd change 90 to 45 (45 * 8 = 360). It will go to whatever the closest angle is. Then I like to do:

    If Moving

    Compare Object.8Direction.Angle of Motion = 0

    --> Set Animation Walk Right

    Compare Object.8Direction.Angle of Motion = 90

    --> Set Animation Walk Down

    Compare Object.8Direction.Angle of Motion = abs(180)

    --> Set Animation Walk Left

    Compare Object.8Direction.Angle of Motion = -90

    --> Set Animation Walk Up

    There are more ways to do it, but I like that method well enough.

  • Classic didn't have variable jump height stuff out of the box, but the same methods used for it in Classic can be used in C2. Basically, on release of the jump button while jumping you can set VectorY to something like JumpStrength / 2 or -100 or whatever to kill the upward momentum. Works pretty swell.

  • Fantastic! That did the trick nicely.

  • Unfortunately, unless I use a trigger once, a For Each won't work, because it will just add 1 every tick, but I need it to run dynamically so it can detect when a MOB becomes happy, unhappy, or dead.

    A workaround would be to place the "add 1" as trigger once actions in each MOB's happiness handler. A "countmatching" action would give me far more control though. Feature request?

  • What's a good way to count only specific instances based on PVs that I can send to a Global?

    I thought I'd try

    For Each MOB

    MOB.happiness >= MOB.maxhappy

    --> set global : happyMOBs = MOB.Count

    However MOB.Count doesn't pick the instances I intended to pick, instead counting every instance, whether the MOB is happy or not. How sad.

    Open to suggestions!