Page 3 of 3

Re: Spell – rune order

Posted: Wed Oct 18, 2017 3:09 pm
by akroma222
Isaac wrote:
akroma222 wrote:Its almost tempting to make players collect the Rune stones to place in their Runestone collection (bag :lol: ) ... but probably not worth the hassle!
Have you played Arx Fatalis? (That is exactly what they did.)
I havent even heard of it (will do a search and check it out ;) )
Ultima Underworld 1 & 2 also did exactly this :D :mrgreen:
(you were limited by which runestones you had and casting spells of lvl = 3x character lvl)
.rhavin wrote:First having to unlock the runes is already a configurable feature ;)
BOOM 8-) :P
.rhavin wrote:....once Petri read my bugreport and hopefully has some spiced wine
We all live in hope :roll: ... havent heard much from AH lately :|

Re: Spell – rune order

Posted: Wed Oct 18, 2017 7:21 pm
by .rhavin
Just updated the sourcecode to show off some configurable parameters and added slighly more doku.

http://doc.rhavin.de/dmf/spelltome_demo.zip

Two platforms, one showing DM-style, the other GR-style.

Lets say I want to connect this to bare hands or to a book, both on rightclick… how do i do this and how can I get the coordinates of the castings character area? I remember I've seen somewhere a video of a weapon-attack-selector like in DM but I cant find it :D

Re: Spell – rune order

Posted: Wed Oct 18, 2017 7:35 pm
by minmay
For drawing it and handling input you'll want to use the PartyComponent.onDrawAttackPanel hook. It gives you the position of the champion's attack panel, and even handles gui scaling for you.

As far as binding it to an item, you'll probably want to use ItemActionComponent with an onAttack hook that toggles the spellcasting panel on. You'll need to prevent the champion from doing anything else with their hands whlie the panel is on; you can mostly prevent that by simply returning false from PartyComponent.onAttack, but that hook doesn't get called for unarmed attacks (or bare hand spell casts) which is a problem.

Re: Spell – rune order

Posted: Wed Oct 18, 2017 7:51 pm
by Isaac
akroma222 wrote:Ultima Underworld 1 & 2 also did exactly this :D :mrgreen:
Arx Fatalis was originally intended to be an Underworld sequel, made by Arkane; the studio that later made 'Dishonored' ; but it didn't get licensed. It's available on GoG.
SpoilerShow
The player collects runes as they explore the world; merchants do sell some of them.
Image
As with Grimrock II the player draws a line with the mouse... but in Arx, the player draws the runes with the mouse, as if in the air in front of the caster. What's really neat is that the symbol meanings in some cases allow the player to deduce undocumented spells that are not mentioned in the game, and never appear in the spellbook... but they are fully supported with animations and effect.
Image
minmay wrote:...but that hook doesn't get called for unarmed attacks (or bare hand spell casts) which is a problem.
A problem I've been tangling with myself. Once I started looking into this, I couldn't help tinkering with one of my own —but it's different enough (unrelated in appearance and behavior—aside from casting spells), and it's not based on other scripts. The plan (at least for now) is that it does not replace the standard rune panel, so both could be used at the same time by different characters (of different casting skill).
SpoilerShow
Image

Re: Spell – rune order

Posted: Thu Oct 19, 2017 12:04 am
by .rhavin
Can someone please provide a simple codefragment how to set up an item that calls

ItemActionComponent.onAttack()?

If tried it like this in my defineObject…

Code: Select all

	{
		class = "ItemAction",
		onAttack = function(self, champion, slot, chainIndex)
			hudPrint(champion:getName().." eats a book.")
		end
	},
… but it dies not get called.

Basically, i need it to behave different when a rightclick occurs while it is in inventory or in hand.

Re: Spell – rune order

Posted: Thu Oct 19, 2017 12:34 am
by minmay
When you click on an item in the attack panel, it uses the item's primaryAction. The ItemActionComponent needs to be set as the primaryAction of the ItemComponent. So:

Code: Select all

{
   class = "Item",
   primaryAction = "bookattack",
},
{
   class = "ItemAction",
   name = "bookattack",
   onAttack = function(self, champion, slot, chainIndex)
      [stuff]
   end,
},
For doing something when the item is clicked in the inventory, use UsableItemComponent:

Code: Select all

{
   class = "UsableItem",
   onUseItem = function(self, champion)
      hudPrint(champion:getName().." eats a book.")
   end,
}
Both together in a full definition:

Code: Select all

defineObject{
	name = "booooook",
	baseObject = "bread",
	components = {
		{
			class = "Item",
			uiName = "Book",
			gfxIndex = 275,
			weight = 1.0,
			primaryAction = "itemaction",
		},
		{
			class = "UsableItem",
			onUseItem = function(self, champion)
				hudPrint(champion:getName().." eats a book.")
			end,
		},
		{
			class = "ItemAction",
			cooldown = 1,
			onAttack = function(self, champion, slot, chainIndex)
				hudPrint(champion:getName().." attacks with a book. It's not very effective...")
			end,
		},
	},
}

Re: Spell – rune order

Posted: Fri Dec 15, 2017 4:55 pm
by akroma222
Hey hey .rhavin!

Wondering if you are still working on this feature??

Akroma