Action RPG Framework

by Forum_account
Action RPG Framework
A framework for developing action RPGs.
ID:830194
 
I added the ability to award medals and display an on-screen indication of the medal. You have to handle checking the conditions to determine when the medal should be awarded. Here's an example from the sample game:

Medal
QuestCompleted
name = "Quest Completed"
description = "You completed a quest."
icon_state = "quest-completed"
hub_name = "Quest Completed"

mob
completed_quest()
..()
award_medal(/Medal/QuestCompleted)

This uses BYOND's hub so the medals are client-specific, not character-specific. This also means you need to create a hub entry and add medals to it if you want to create your own medals. The demo uses a test hub entry I set up.

I also added the mob.pvp var and the ability to form parties. The library provides these things so its can_attack() proc can properly limit who you can attack, but it's really up to the game to manage how parties are formed or how/when pvp is enabled. For your game, you might want PvP to always be enabled. You might want it to be a server-wide setting that varies from server to server. You might be making a team PvP game where you enable PvP for everyone and automatically put the players into parties.

I started working on an interface to show your party members but that's really something the game would handle (the code's still there, it's just disabled by default).

Here is the full list of changes:
  • Increased the layer of objects created by the atom.effect() proc to make them less likely to appear underneath overlays.
  • Added a new graphical effect for being poisoned and taking poison damage.
  • Changed the way shadows work in the sample game and added shadows to enemies.
  • Added the /Medal object which contains all of the information you need to describe a medal. You're still responsible for checking the conditions to determine when a player has earned a medal.
  • Added the mob.award_medal() proc which can take a /Medal object type path or an object instance. This proc automatically handles the on-screen display of medals when the player receives one.
  • Added the Options.medal_display_time var which determines how long a medal is shown on the screen when it's received. The default value is 30 (3 seconds).
  • Added two medals to the sample game.
  • Added the mob.text_prompt() proc which creates an on-screen prompt that displays a message and prompts the user to type in a string. When the user hits enter, the proc returns. The return value is the string that was typed.
  • Added a message that gets displayed at the bottom of a prompt window that contains text and no buttons. This message is defined in the Options object as Options.prompt_continue_message, so you can easily change it if you'd like. The default value is "Press the Space Bar to continue."
  • Added a basic character creation process to the mob.new_character() proc in the sample game. When you make a new character, it now asks for your name and character class.
  • Added the mob.class var to the sample game, moved the mob's description() proc to the sample game, and made it use your class and name.
  • Updated shadow-47.dmi in the sample game to make the shadows a little bit lighter (important change, I know).
  • Fixed a bug with quests dialogs. Previously mobs would offer you a quest even if they were only the ending point of the quest.
  • Added the mob.pvp var. Two mobs on the TEAM_PLAYERS team can attack each other if their mob.pvp vars are both 1. Setting this var is completely up to you. Maybe you want players to be able to turn PVP mode on or off for themselves. Maybe you want the game to enable PVP for players when they enter a certain area.
  • Added an example of enabling and disabling PVP in the sample game. When you press the P key it adds or removes a condition. See demo\conditions.dm for more details.
  • Added the /Party object and the ability for players to be in groups with other players. You can invite players to your party by clicking the "Invite" link next to their name in the "Who's Online" list.
  • Updated the can_attack proc to let you attack players if both of you have pvp enabled. Also updated the proc to prevent you from attacking people who are also in your party.
  • Added the Options.title_screen var. You can override its default value to specify a custom file to be used as the title screen. If the image is smaller than an icon it'll be tiled, otherwise it'll be centered in the screen. There's an example of how to do this in demo\mobs.dm but it's commented out by default.
  • Changed the way health and mana meters determine how many bubbles to show. The relationship between the value and the number of bubbles is logarithmic now, so that 50 is five bubbles, 100 is six, and 500 is eight bubbles.
ok now how do i incorporate all this to in to my game
This makes it easier to create games. It's not something you incorporate into a game, it's something you use to make a game from the start. It's certainly possible but it really depends on how your game works.
yea thats wat i mean i just a novice coder i do mostly pixel im trying to make a mmorpg pvp from from scratch but i dont get all of the codes i get some of them tho but not all
like right now i just want to make a world with the title screen and my icons and se how it looks i think i can get it from there
When you have the library open, everything in the "demo" folder is what you'd have to create to make a game using it. You can use the examples provided there to figure out how to make your own things. You can look at demo\abilities.dm to see how you create abilities, then create some of your own.
what plans do you have for the next update?
Here's what I've got on the to-do list so far:

 * bank shared across characters.
* chat interface (ignore/unignore)
* parties
- interface to display party members
- make it update health/mana values
* menu to select items from your inventory
- works similar to the mob's prompt() proc
- can be used for banking, trading, or selling items
* make more turfs for the sample game
* change how the health/mana meters look
- I'm still not sure what I want them to look like

I'll probably add about half of those things and a bunch of other things that I haven't thought of yet. I'd like to start working on a more elaborate game that uses the framework which will hopefully help to identify things to add.
how about for the chat, there are tabs like world chat, help chat, yet.

how about renting houses

maybe somehow change the way the verbs popup window looks.
In response to Kalster
Kalster wrote:
how about for the chat, there are tabs like world chat, help chat, yet.

I might add support for different kinds of chat (ex: party chat messages that only get sent to people in your party) but any interface stuff for it would be up to the game.

how about renting houses

You can use any housing demo you find with this framework, it's not something the framework has to provide.

maybe somehow change the way the verbs popup window looks.

What popup window?
when right click a mob, a menu is displayed with a verb name. is there a way to change that menu color to fit the game display like the inventory color? Edit: i believe there is no statement for that

when typing a message in chat, is there a way to leave chat without clicking on the main window that moves the mob? for example, it would be great if i could leave chat by pressing tab and then pressing i would open up the inventory
Unless the verb is needed you could always disable popup menus on the client.
Set the clients' show_popup_menus var to zero.
i was just thinking that maybe others might like a skinned feature for the framework like myself. if that is even possible!. therefore, i don't want to disable the menus, that would be disabling the verbs would it not?

Forum_account, is it possible to get the game demo to look all skinned? skinned as in that all the menus would look in the same color. keep in mind that this is only my suggestion of course.
In response to Kalster
BYOND doesn't currently have any way of changing the appearance of popup menus. One way to do this would be to make a HUD system for it.
thank you Kaiochao
This framework is rather neato. never a dull moment following fa's doings.
In response to Kalster
I'd avoid using verbs entirely and use HUD-based things instead of BYOND's interface. Currently all you have to do to change how the HUD looks is to make a new icon that defines the same icon states as framework-hud.dmi and change the HUD_ICON value in Constants to point to that.
Cloud Magic wrote:
I'm trying to seperate your damage visual effects from the lib. I simply copied over the damage_number and map_label procs. However, when I try to make a call to damage_number, e.g.

> src.damage_number(10)
>

I get an error: Cannot modify null.loc

So, what's wrong here?

Enable debugging so you can see what line of code is giving you that error. Did you modify the procs at all?
I hate to leech on World of Warcraft so much, It's a guilty pleasure of mine, but one of the coolest features in the game is the Auction House, a place where players can sell equipment, ingredients, and other items to other players.

How about an Auction House feature next? And to go along with that, a mailbox feature for sending and receiving items from other players, most importantly sending to players who are offline, and receive them when they log back on.

I've written several mock-ups of this type of system, myself, but am too lazy to post a library. Not to mention it would get more use if used in this project.
I'd actually like to +1 Solomns post. I have seen something along these lines on BYOND, but only for the interface. NEStalgia uses a HUD based one, I believe; so they would be a better example.

I would say this next suggestion would be better handled in the sample game, but I would also like to see some support for a guild system. Nothing too fancy. Just guild chat, maybe a window or list that displays all existing guilds or a guild of your choosing and details about it. Anything basic or generic.

It would be a lot like the party system you have in mind, so including it is debatable.
Page: 1 2