Currently I'm devising a spell system for my running project. It's probably going to be quite involved with a single person having around 15 - 25 useful spells ( I hate useless spells, ie->Death spells in FF series ).
I was wondering, though, what do you prefer:
An object-oriented system where you double click on the spell to cast it, single click for a quip on what it does.
A list-oriented system where you use the cast() verb to access a book of spells and pick your spell.
A verb-oriented system where each spell has it's own verb, ie Heal would be an actual verb Heal that you'd use to cast it.
Basically either vote for one of those or give me any ideas that you have.
Also, I could very easily include the spell system into my ID system. Would you think it would be cool to have something to the effect of:
Joe = Sorceror
Bob = Nomad
Joe casts Heatwave at Bob, here's the text that would appear:
oview(1): Joe casts a spell at Bob!!
Bob: Joe casts a spell at you!
Bob: You recognize the spell to be heatwave.
Or should I just do:
oview(1): Joe casts a spell at Bob!!
Bob: Joe casts the spell heatwave at you!
Or do you have better ideas for that too?
All comments or questions gladly taken :-)
ID:154117
May 30 2002, 7:33 am
|
|
In response to Lesbian Assassin
|
|
Oh yeah, I guess it helps to explain my battle system a little bit. To give you a run-down, here's what the computer basically thinks:
PC walks into a room where Footpad is. Footpad is HOSTILE towards PC. Footpad moves towards PC. PC attacks Footpad, they engage in battle. The battle scenes all take place in the text field ( no view or sight changes or anything ). Victor collects experience and gold. Spells would interact such that a PC would cast spells BEFORE entering combat. Spells CANNOT be cast by anything while it's in combat, but people can exit combat simply by moving ( but this often allows the enemy to attack you, it's a bug that I decided worked out really well :-) ). So basically, the thing comes down to quick-targeting, because once you get into combat you cannot cast anything. I was just trying to convey a general message than put real code there :-) But sure, I'll shorten the messages down, you're right :-) |
In response to ShadowWolf
|
|
How about you click on the spell to do a "quick cast" which will cast it once on whomever you click on. When you double click, it is a "sticky" spell, and every time you click you cast it. Clicking / Double clicking another spell (or the same spell) would return you to normal.
|
In response to Garthor
|
|
That's an interesting spell system. I'll have to take a look at it.
I think I might first do a play-test with no spell system so people can experience my game. To me, the spell system is one of the more integral parts of them because people will work so hard to get spells. Because of that, I want a spell system that works perfectly and easily in the game. It always sucks working yourself up 40 levels so you can gain spells only to find that the spell system is terrible and unusable. Then your character is useless and you have to petition for a delete ( That's how I do things so that people won't abuse multiple characters :-) ) |
This all depends on which would work best for your game... I've used all three. The first one and second one can be very difficult to target, especially against a group of objects or monsters which all have the same name. If you're going to go with object-oriented clicking, why don't you have double-click on it in your inventory/spellbook to prepare it, then double click on the target to cast. If you're using an FF-style battle system, a menu or special cursor proc would work just fine for target selection in either case.
The third system is the easiest to target, because you can specify arguments for each spell as needed. This is what I do in Hedgerow Hall. Specifically, each magic crystal item has four verbs, with the following settings:
set category = "Magic"
set src=usr.client.screen
My equip() proc adds an item to the client's screen (doesn't actually display it anywhere but the stat panels, just a handy trick for making special access to verbs). The result, when you hold a crystal in your hand, you have four extra verbs. Since I used src= instead of src in, you don't have to reference the crystal when using the verbs. If you want to Heal(mob/m as mob in view()), you just right-click the mob.
Better:
oview(1,Bob) - Joe: Joe casts a spell at Bob!!
Joe: You cast heatwave at Bob!!
if (ID)
Bob: Joe casts a heatwave spell at you!!
else
Bob: Joe casts a spell at you!!
This gives two improvements: one, Joe will get correct output for his viewpoint, and two, Bob only has one line of text to read. Any time you can compress two lines of "battle spam" into one and still convey the same info, you're doing the players a big favor.