Register
Email: Password:
Forum » Driftmoon Modding

Driftmoon Modding

Emaster 4 years ago
Hi! I was checking the game and the ability to mod it and I have the following questions/suggestions:

1.- Is currently a way to modify the stats names and the effects of them? or:
1.1- How much damage does Strength Increases and exactly how does this operate? it interacts with all the meeleeDamagex?
1.2- How much attack speed and walking speed the stats modifies?
1.3- How much bonus exp intelligence gives?

2.- Can I add another atribute for level ups?

3.- Is there a way to modify the HUD, the level screen, the menu screen?
3.1 Specially for the inventory. Can inventory slots be increased/decreased and add more inventory tabs?

That's all for now, thanks for the software!

EDIT!

4.- Is there a way to compare two variables/globalflags in a logic test? (For example, IF health is greater than mana or IF intelligence is greater than strength). Right now if I put the variable/flag name in the value box it doesn't work.

5.- Right now mana name can be changed but health name can not be changed. Is there a way to change it?

6.- Is there a way to pick up/drop an exact amount of items?

Edited 4 years ago
#
ville 4 years ago
1. Currently the stat names are hard coded. This is obviously a shortcoming considering many game types that the engine could be used for, so I'm probably going to make this moddable in the future as well. The stat descriptions are changeable.
How many percentage each stat effects are set in scripts/settings.ini. The defaults are currently
strengthMultiplier=0.03
dexterityMultiplier=0.03
agilityMultiplier=0.03
constitutionMultiplier=0.03
intelligenceMultiplier=0.015

It's actually possible to tie a script to each stat point advance, and in that way make the stats do pretty much anything that the engine allows.

1.1 Strength basically just increases the damage with a direct multiplier. It's tied directly in the function that calculates weapon damage. The only scripts affected by it are takeMeleeHit and meleeDamageArea, the others damaging scripts are considered to not use a weapon.

2. Levelups are limited to the attribute increase and the talent increase. If you'd like to run a script on levelup, I can easily add the ability.

3. Currently the only way to change the HUD is to use the scriptable status icons system, which the game uses to create buttons for removing the summoned creatures. I'm planning on extending the system to include other HUD parts as well.
3.1 Right now the inventory is hard-coded as well. It's been waiting for the single player campaign to get finished first. I'm taking in ideas for this, if someone has a really good idea for how they'd like to use it, I'm inclined to make changes.

4. Those comparisons should be possible. But testing your precise example, they weren't! Turns out there's a bug in the engine that doesn't use the proper target object for named variables in parameters. I've just fixed it, I'll release the fix later (and if you need it now, I can send you a new version). So simply using a condition of setPlayerAsTarget and using variableIsLarger(health,mana) should do the trick once the fix is active.

5. Right now, it's not possible to change that. If you'd like to change it, I can easily make it moddable.

6. Using scripts, definitely yes. As a player, no. The main game doesn't usually require such functionality, so I haven't felt the need to add it. But it shouldn't be difficult, since I've already got the dialogue to do that for the shops. Maybe holding shift down while dragging could do that?

You've found pretty much all the things that aren't moddable yet. But as I said, I'm very open to adding new moddability to the engine - smaller things even now, and bigger things as soon as we finish the main game. If you or anyone is planning a bigger mod with the engine, and you are lacking an important feature, be in touch, I'm very eager to help out modders.

Edited 4 years ago
#
Emaster 4 years ago
ville said:
1. Currently the stat names are hard coded. This is obviously a shortcoming considering many game types that the engine could be used for, so I'm probably going to make this moddable in the future as well. The stat descriptions are changeable.
How many percentage each stat effects are set in scripts/settings.ini. The defaults are currently
strengthMultiplier=0.03
dexterityMultiplier=0.03
agilityMultiplier=0.03
constitutionMultiplier=0.03
intelligenceMultiplier=0.015

It's actually possible to tie a script to each stat point advance, and in that way make the stats do pretty much anything that the engine allows.

1.1 Strength basically just increases the damage with a direct multiplier. It's tied directly in the function that calculates weapon damage. The only scripts affected by it are takeMeleeHit and meleeDamageArea, the others damaging scripts are considered to not use a weapon.

Now I understand what where these numbers! On my test nothing happened when I erased them, so If I want to eliminate the "normal" usage of them I will try to fill it with 0's.

I was already planning to tie a script to each stat, (like the MP increase per intelligence point) to do a workaround, but if I wanted to add another one is "not easy" right now.

ville said:
2. Levelups are limited to the attribute increase and the talent increase. If you'd like to run a script on levelup, I can easily add the ability.

That would be cool! I was thinking to test complete removing the normal leveling and manually remove the xp, increase the lvl, remove the stats, and so on). Using the scripts on the levelUpObject. Isn't the same as adding a "onLevelUp"?

ville said:
3. Currently the only way to change the HUD is to use the scriptable status icons system, which the game uses to create buttons for removing the summoned creatures. I'm planning on extending the system to include other HUD parts as well.
3.1 Right now the inventory is hard-coded as well. It's been waiting for the single player campaign to get finished first. I'm taking in ideas for this, if someone has a really good idea for how they'd like to use it, I'm inclined to make changes.

Well, honestly I haven't played the game yet, I downloaded the game and went straight to the modding. I really loved Notrium and the mods so I was checking how hard was adding a "Survival/RPG" game mod similar to it.

I was thinking about removing the food system, adding a battery, temperature (but I could add these as status icons. i'm going to check now).

For the inventory, I was working to add some weight to the items. In a survival game picking up everything would make it kinda easy.
So for the inventory ideas It would be cool if I could add inventory tabs, add and remove the amount of slots of each tab and some other item atributes (Like weight)

ville said:
4. Those comparisons should be possible. But testing your precise example, they weren't! Turns out there's a bug in the engine that doesn't use the proper target object for named variables in parameters. I've just fixed it, I'll release the fix later (and if you need it now, I can send you a new version). So simply using a condition of setPlayerAsTarget and using variableIsLarger(health,mana) should do the trick once the fix is active.

Cool! Honestly I wasn't testing these examples. I created two global flags in the globalflags.ini called Weight and MaxWeight and was impossible to do a globalFlagIsLarger(Weight,MaxWeight), my script wasn't working until I finally realized that check wasn't working.I hope the fix also includes to be able to compare flags.
I would love to have the fix now!

ville said:
5. Right now, it's not possible to change that. If you'd like to change it, I can easily make it moddable.

Well... is not that important, but looking at you gived the ability to change the mana resource name it also would be cool to be able to change it at will.

ville said:
6. Using scripts, definitely yes. As a player, no. The main game doesn't usually require such functionality, so I haven't felt the need to add it. But it shouldn't be difficult, since I've already got the dialogue to do that for the shops. Maybe holding shift down while dragging could do that?

Again, back to my test adding weight to the items. I was checking with different amounts of item pick ups when I realized when I wanted to drop half of the items I picked I could not...
Yea, holding shift to be able to pick up or drop an exact amount of stacked items would be cool.

ville said:
You've found pretty much all the things that aren't moddable yet. But as I said, I'm very open to adding new moddability to the engine - smaller things even now, and bigger things as soon as we finish the main game. If you or anyone is planning a bigger mod with the engine, and you are lacking an important feature, be in touch, I'm very eager to help out modders.

Well, I was just playing with the software for a couple hours and testing some ideas I wanted to implement. If I have more problems trying to mod I'll post again.

Thanks for the info!
And I hope you can send me the fix.

Edit:
Another question:

7.- What are the text commands for conversations, item descriptions, icon descriptions? (Well, I haven't tested too much on conversations)
For example, I found on conversations you can use #player for the player name, #npc for npc names, but not for items and status descriptions (at least the player name).
For item description you can use \n to insert a line break, but this doesn't work for icon descriptions. #Player doesn't work for both of them.

Can you add \n for status icons, #Player for items and status icons, and a way to add variable/global flags numbers on all of them?

For example (totally random example)... in a Greatsword description I can't put: "Emaster(player name) signature weapon. It already killed (XXXX) enemies. Strength required to wield 4 and you have (YYY)"

Actually, in this description it could be cool to use an IF (if strength is 4 or more it could say: Your are strong enough to wield. ELSE You're not strong to wield.

Edited 4 years ago
#
Endymion 4 years ago
Emaster said:
ville said:
4. Those comparisons should be possible. But testing your precise example, they weren't! Turns out there's a bug in the engine that doesn't use the proper target object for named variables in parameters. I've just fixed it, I'll release the fix later (and if you need it now, I can send you a new version). So simply using a condition of setPlayerAsTarget and using variableIsLarger(health,mana) should do the trick once the fix is active.

Cool! Honestly I wasn't testing these examples. I created two global flags in the globalflags.ini called Weight and MaxWeight and was impossible to do a globalFlagIsLarger(Weight,MaxWeight), my script wasn't working until I finally realized that check wasn't working.I hope the fix also includes to be able to compare flags.
Yeah you sadly can't compare global flags at this time, only variables can be used to fill in for numbers. But in your example at least it should work just as well as a variable for player as far as I can see.

Also I too would definetly like being able to use variables/globalflags in conversations etc.

Edited 4 years ago
#
Emaster 4 years ago
Thanks for the commands on the wiki!

1)Can these commands be used on the items.ini?
Today I tried to make a sword do damage using 1+strength but I could not...

Bug Reports:

2)Endless Quivers consume mana as intended, but you can use them with 1 or less MP.

3)If you use the modding cheats Shift+F2 (which opens a window) and close the modding and go to the actual game you can give yourself the items on the real game. (or is intended?) Also, if you try to give an item in the menu screen it will crash.

4)If a creature has no weapon equiped (and a empty default weapon) and the creature grabs a ranged weapon the game will crash and sometimes you will get an annoying eternal "out of ammo" message with the corresponding sound (test with the player, not sure about other actors)

5)A ranged weapon with a damage modifier of 1.05 (damageMultiplier=1.05) shows a damage modifier of 104% instead of 105%.

6)Item that are not dropable (droppable=false) still can be deposited on containers. (Not sure is a bug, but I was expecting the item would be stuck on the inventory)

7)The speedGame script doesn't increase in-game time. (But items like the torch still get used quickly)

If you set dayLength in the settings.ini to 0 driftmoon will crash.

Some ideas about improving the editor:

A)Can the camera be moved with the arrows keys?

B)Can the zoom be changed with shift+arrow keys?

C)Can you add a way to keep the grid on permanently? (the grid right now can be turned on with control)
EDIT: Actually, this can be done with alt.

D)Not sure if this is important, can you add a Control+Click option for terrain modification for adding and deleting terrain edges (I'm playing with editor without a mouse)

E)Can you move the feedback button from the bottom corner to the top bar at least in the editor? (I clicked that button many times while I was editing the map and is kinda annoying).

F)Could you add something like fireProjectileUsingWeapon.
Which is the same as using fireProjectile but you can specify a weapon used to shoot the bullet without wearing a ranged/staff weapon (Reason: I have been trying to add a firebolt spell, using the fireProjectile, but it can only be shot if the player using a ranged weapon)
EDIT: Just realized fireProyectileTrap does this.

G)The only way now to change a bot speed is setBotSpeed, sadly is only multiplicative and for a certain period of time. Can you add a additive way to increase this, and enabling -1 for a permanent change?

H)On object sripts: "Activation type Starts" only runs the first time the map starts, can you add an option like "Activation type Map Load" so it will run every time the map is loaded?

I)Can you add a way to increase and decrease the brush at will, using control + arrow? (right now the only options are squares with this lines could be created)

J)The editor already has health and mana percentage as a condition, could you add the same for variables and/or global flags?

K)Add the following variables: Bot last item used, bot last item obtained, bot last item wielded. Which contains the ID of the item.

L)In the editor scripts negating "globalFlagisLarger" produces "globalFlasisSmallOrEqual" (is that a typo? "flas". Same for "globalFlagisSmaller"

M)There's no way to add a "ELSE" on the editor scripting.

N)There's no way to recover scripts if you add too many of them in a object.

O)Would be possible to give showMessage the option to change the text color and the duration of the message?

P)A way to add colors to the text in item/status descriptions.

Q)Currently there's removeItemFromGround which deletes only a item in a specified area, could be a way to set to "All items on the ground"?

Edited 4 years ago
#
jgprof 4 years ago
I haven't tried much modding myself yet, but looking at all this I wonder if a feature request/bug tracker site is in order? It might help in prioritising new requests...
#
ville 4 years ago
Thanks for all the feedback! I've read them, and I'll try to get back to them a little later. A feature tracker might be a good idea, considering how many ideas there are now...
#
Emaster 4 years ago
Cool!

I will post more as I keep playing with the editor! I will keep editing the big list before meanwhile.

When the V0.902 will be up? I wanna test the new dynamic text commands.

Thanks again!

Edited 4 years ago
#
Endymion 4 years ago
Emaster said:

G)The only way now to change a bot speed is setBotSpeed, sadly is only multiplicative and for a certain period of time. Can you add a additive way to increase this, and enabling -1 for a permanent change?
Have you considered using changeBotRace? Also if you have the new exe you should be able to change agility variable of bots to increase move speed.

Edited 4 years ago
#
Emaster 4 years ago
In which folder are the mods you download?

How I can uninstall a mod?
#
Endymion 4 years ago
Just the installed mods can be found(for me at least) in user/AppData/Local/Driftmoon, doesn't include saves or anything.
Edited 4 years ago
#
Emaster 4 years ago
Thanks! Found them!

Also I have been updating the list with suggestions! I'll keep adding more.
#
ville 4 years ago
Emaster said:
When the V0.902 will be up? I wanna test the new dynamic text commands.

It'll take a while, we're on a short holiday picking strawberries. If you're really eager to check them out, I can send you a test version of the newest game engine when I get back.

Edited 4 years ago
#
ville 4 years ago
Here's a patch if you're interested in testing the new text functionality:
https://dl.dropbox.com/u/6584112/driftmoon_patch.zip

Here are the changes in it:
-Dexterity, Strength, Agility and Constitution now work for non-player bots as well.
-Race id numbers can now go up to 65535. But it's still best to use them in order.
-It's now possible to use global flags in addition to actor variables in scripts. Just replace any part of a script that takes a number with the name of the variable or global flag. The game first looks for the named actor variable, and if that is not found, it looks for the global flag.
-All info boxes can now handle keywords. That includes item descriptions, talent descriptions and status icons.
-Keywords can now include actor variables and global flags using the following notation. {health} will print the player's health. {health.2} will print the player's health with two decimal places. The actor whose variables are used is always the player. {Karma} will print the value of the Karma global flag.

Edited 4 years ago
#
Emaster 4 years ago
Cool! Is working perfectly!

Thanks!

Update: the variable "this" is working incorrectly now.

Edited 4 years ago
#
MageKing17 4 years ago
ville said:
The actor whose variables are used is always the player.
Well, that sounds a bit limited. I haven't tried Driftmoon modding yet, but isn't there a simple identification scheme that could've been used to extend the syntax? Something like {Bob.Health}?
#
Emaster 4 years ago
MageKing17 said:
ville said:
The actor whose variables are used is always the player.
Well, that sounds a bit limited. I haven't tried Driftmoon modding yet, but isn't there a simple identification scheme that could've been used to extend the syntax? Something like {Bob.Health}?

Well, you could always give the variable to the player (as any custom variable) and use the command, so isn't really limited... You just have to do an extra step.
#
ville 4 years ago
Emaster said:
Update: the variable "this" is working incorrectly now.
Thanks! That indeed seems to be the case.

MageKing17 said:
ville said:
The actor whose variables are used is always the player.
Well, that sounds a bit limited. I haven't tried Driftmoon modding yet, but isn't there a simple identification scheme that could've been used to extend the syntax? Something like {Bob.Health}?
That might actually be a good idea! I'll add that if I ever have time to. That syntax could easily be used to reference named and id numbered objects.
#
ville 4 years ago
ville said:
The actor whose variables are used is always the player.
Actually this one sounds a bit fishy, I'm thinking about pointing it to the current object by default, and using some notation to point to the player.

[update] Alright, I changed the notation. Now it's for example {player.health} or {1.variable} or {steve.health}

The same syntax works for substituting any script variable, so you can also use player.health in any scripts as well as printing.

I also had to change the decimal notation system, it was too much trouble to have multiple dots in the syntax, so it's now a ":"
Like this: {player.mana:2}

[update] Here's a patch with the latest changes: https://dl.dropbox.com/u/6584112/driftmoon_patch2.zip

Edited 4 years ago
#
Emaster 4 years ago
Any ideas about how to script a way to destroy items dropped by the player?
#
MageKing17 4 years ago
ville said:
I also had to change the decimal notation system, it was too much trouble to have multiple dots in the syntax
Ouch... lemme guess, it would try to do things like access a variable called "2" on an object called "mana"? Yeah, that would royally screw things up... but a colon seems a good solution.
#
Endymion 4 years ago
Emaster said:
Any ideas about how to script a way to destroy items dropped by the player?
Adding a dropscript to to the item(s) should do it.(I think it's run only for player if not just add a if caller is player condition) setSpawnedAsTarget and destroy might work, but removeItemFromGround is probably better, no chance of destroying a wrong target due to the dropscript also running when placing things in container(you could make containers set some "notdrop" variable and make the dropscript check it if you don't want it to run when placing things in container). Oh and if you don't want to do it right away I think I'd just create an invisible object at the item that'll remove the item when you want.

And here's an example of a dropscript I did to replace a dropped item with a normal object.
	dropScript=IF variableIs("notdrop",0) THEN setSpawnedAsTarget() AND WAIT(0.1) createObject("tower\gem0",0,0) AND removeItemFromGround("Magic|gem",1,0) AND setSpawnedAsTarget() AND callScript("0") AND WAIT(0.1) teleportJump(0.05,0,0,1) AND addToGlobalFlag("Gems",-1) ELSE addToGlobalFlag("Gems",-1)
#teleportJump is to prevent "stacking" and waits are to make targetting to work. notdrop should be set by containers etc.

Edited 4 years ago
#
Emaster 4 years ago
Well, today setspawnedastarget worked!

Would you believe yesterday I spent a couple hours trying to delete the item spawned but today it worked, probably I had a typo or something...

Thanks for the help!
#
ville 4 years ago
Setspawnedastarget always targets the latest spawned object, so you'll get the best results by using it in the item's dropscript. But the drop script is run when the player loses the item in any way, for example by using it, moving into a container, selling it, or via a script. Just one thing to keep in mind, because if you just delete the latest spawned object there, an item might not actually have been dropped just now.
#
Forum » Driftmoon Modding

Post Reply


Your email:
Your name: