Larian Banner
Previous Thread
Next Thread
Print Thread
Joined: Nov 2017
E
Erikem Offline OP
journeyman
OP Offline
journeyman
E
Joined: Nov 2017
Dear Larian team,

I have been trying to develop some mods lately focusing on new skills. While doing so I have stumbled upon a number of limitations, which are either impossible or hard to overcome without going for scripts. Alas as I want the best possible compatibility and AI to be able to use the mods I would like to stay scriptless.

In these posts I will mark a number of suggestions of how to extend the functionality of Divinity Engine and specifically what can be done using Stats.

1. Currently there's is no easy way to check for statuses on one target and do a certain effect to another target based on those checks
Here are few examples that are hard to do without going into scripts:
- I want my skill to do extra damage to TARGET if I am BURNING
- I want to steal positive statuses from my TARGET to SELF
- I want a skill to transfer SELF negative statuses to TARGET

My suggestions is to extend the syntax of IF checks to be able to do following inside Skill Properties:
Code
TARGET:IF(SELF:IF(HasStatus:***)):BURNING,100,1

or following
Code
SELF:IF(TARGET:IF(HasStatus:***)):BURNING,100,1


2. To make some complex skills I might want to create some post-skill effects like chain explosions or similar stuff
Right now my options are limited to EXPLODE and LeaveAction of statuses but both are very flawed if you want to heavily use them.

Suggestion is to allow us to cast extra PROJECTILE (and maybe some other types) skills via SkillProperties. They should have same "SELF" as original skill and same alignment as original skill

Example:
Code
TARGET:IF(HasStatus:SHOCKED):LightningBolt,100,3


This skill will trigger 3 extra LightningBolt projectiles with 100% probability if TARGET is SHOCKED

3. For some reason !HasStatus checks do not work
Sometime I want to check if my TARGET is actually missing certain status. For example if I want to protect it from extra status effects if it is already BURNING.

Unfortunately following code does not work as expected:
Code
TARGET:IF(!HasStatus:BURNING):SLOWED,100,3


Suggestion is to enable the checks for !HasStatus in Skill Properties

4. Allow modders to enable and disable skills based on custom checks
Skill currently have a field "Requirements", which AFAIK accepts values: Combat, !Combat, Immobile and !Immobile and these requirements are not met then skill is disabled. For example Adrenaline skill can only be used in combat and thus it has "Combat" in Requirements

Unfortunately we cannot do no custom checks in "Requirements" and checks like SHOCKED and HasStatus:SHOCKED simply do not work

Suggestion: please enable Engine to use status checks to determine whether skill can or cannot be used at the moment

5. Allow skills to have pre and post effects which happen BEFORE or AFTER the main activity of the script
I have a folowing problem: I develop a series of skills with skill-chaining using stances. Stances are statuses that grant me skills corresponding to that stance. Once any of granted skills is used it advances stance to the next level. And I have following problem:

Use Stance 1 Skill
Give 3 new skills
Using any of 3 skills Grants Stance 2, Remove those 3 new skills.
Stance 2 is now active

But when I land the first hit of a skill, it removes the stance which gives the skill, thus canceling the skill

What happens is that skills like JUMP or MULTISTRIKE (and many others) are simply cancelled mid-air as the stance-status that granted them is no longer there

My suggestion is to add PreActions and PostActions to all skill types that will be done either before or after all damage and Skill Properies (and their children like EXPLODE) are comlete. PreActions and PostActions can use same syntax as "SkillProperties"

6. Unrestrict EXPLODE effect
As of now there's a strange limitation that does not allow single source to cause more than 1 EXPLODE on a single target in one combat turn.

For example I have two different skills that cause immediate EXPLODE (e.g. I want main target tto be hit for 100% damage as physical and targets around him to suffer extra FIRE damage). Unfortunately within single combat turn only first of these skills will trigger EXPLODE if I cast both on the same TARGET

Suggestion: please remove the limitation and allow us to restrict EXPLODE manually if we want to

7. Make RUSH skills affect adjacent targets with their skill properties
I don't know if this is a limitation or a bug but if my RUSH skill has some SkillProperties and I use this skill on a target within like 1m distance then damage is done but SkillPropertioes are not triggered

Suggestion: please allow RUSH to trigger Skill Properties even on adjacent targets

ADDED on 27.11.2017
8. Better cooldowns management
As of now there's only one command in cooldown management area - reset cooldown.

Suggestion: add following capabilities to cooldown management:
- Shared cooldowns: when one of the skills amongst a group sharing cooldowns is used - all of them go to cooldown. Useful for linking cooldowns of some very strong buffs or disabling abilities
- Reset individual cooldown: a capability to reset a cooldown of a specific skill and not all skills
- Force individual cooldown: a capability to set a specific skill of a character on cooldown
- Force all colldowns: a capability to set all skills of a character on cooldown

9. Allow SELF Skill Properties for CONE and ZONE skills
Currently ZONE and CONE skills do not process SELF Skill Properties like SELF:WET,100,1; and simply skip them

Suggestion: allow ZONE and CONE skills to apply SELF Skill Properties


P.S. I have posted a similar topic on Steam to cove a broader range of players

Last edited by Erikem; 27/11/17 12:04 PM.
Joined: Nov 2017
E
Erikem Offline OP
journeyman
OP Offline
journeyman
E
Joined: Nov 2017
I have moved most of these suggestion to the relevant modding subforum

Joined: Sep 2017
addict
Offline
addict
Joined: Sep 2017
Hey Erikem!

Thanks for the suggestions and such a clear explanation for all the cases!
I'll bring it to the relevant people and we'll take a look at what's possible and not possible smile

Sincerely,
Kevin


CTRL+K the elf
Joined: Nov 2017
E
Erikem Offline OP
journeyman
OP Offline
journeyman
E
Joined: Nov 2017
Hi, Kevin,

Thank you for the answer and kind words.

Please do not be surprised that some other topics I have created repeat some requests from this one - I have initially created this topic in a wrong subforum and decided to repeat some of the items here.

Feel free to delete repeating topics.

Kind regards,
Vitalii

PS if you need use-cases describing the need for my other requests just lemme know and I'll provide you plenty

Joined: Sep 2017
addict
Offline
addict
Joined: Sep 2017
No problem, I'll remove the duplicates.
If you come up with more requests, feel free to document them in this post as well, so nothing gets lost smile
I'll pm you if there's any more questions concerning but as of now everything is very clear and we're investigating the different requests.

Sincerely,
Kevin


CTRL+K the elf
Joined: Nov 2017
E
Erikem Offline OP
journeyman
OP Offline
journeyman
E
Joined: Nov 2017
10. Allow us to FORCE statuses via STATS
As far as I know statuses in STATS are always assigned in non-forced mode while story script actually allows us to force a status (meaning it will not be resisted by armor).

It would be very nice to have same capabilities in STATS because this could be a good addition, when creating some unique powerful skills

Also do not tie it to probability because I may as well want to create a skill that applies a status with 10% probability but if it procs then status is applied regardless of armor

11. Allow us to set status probability in story scripts
As of now the very basic thing from STATS - probability of status (BURNING,PROBABILITY,TURNS) is not immediately available in story scripts.

It's not hard to do it when we apply just one status with probability but if we do several the code will become bigger and bigger (again not too complicated).

Can you please include probability as one of the input parameters for ApplyStatus call?

12. Allow undeflectable projectiles
Right now in order to implement complex skills via STATS we have to use extra invisible projectiles as a form of "signals" running here and there with some information (marking targets for a skill, cleansing temporary invisible statuses, etc.)

Although complicated this way of "messaging" works quite good until... until target has DEFLECTING.

Please add a flag to projectiles to mark them undeflectable. Simply because some projectiles are not meant to be deflected.

13. More options for deflecting
Deflecting is a nice feature, which opens good potential but it's currently implemented in a very restricting way.

Please consider adding following capabilities for DEFLECTING feature:
- Probability = INTEGER, a chance of projectile being deflected
- FullDeflection = BOOL, if TRUE then character with deflecting will not suffer damage or consequences of a projectile
- Radius = REAL, radius that is covered by deflection (catches explosions that exploded within radius)
- Protect = BOOL, if TRUE then it reflects even those projectiles within Radius, which were targeted at his allies (someone is targeted within radius near REFLECTOR and REFLECTOR sends back this projectile as well)

Last edited by Erikem; 08/12/17 06:01 AM.
Joined: Nov 2017
E
Erikem Offline OP
journeyman
OP Offline
journeyman
E
Joined: Nov 2017
14. Add CharacterAttributeChanged and CharacterAbilityChanged EVENTS to story

A very tempting area for skill and class modding is to give extra bonuses or create restrictions based on character attributes and abilities. For example let WIT give another +1% crit chance under certain circumstances.

Implementing the basic idea is not hard but tracking the change of abilities and attributes can be tricky because they can be affected by:
- points invested or respecced
- items equipped or removed
- statuses applied or removed
- scripts

Catching all of these can be tricky and requires a lot of code.

To make modders life simpler I propose you to add CharacterAttributeChanged and CharacterAbilityChanged EVENTS to story scripting so we all can track such changes in a much easier way

Joined: Nov 2017
E
Erikem Offline OP
journeyman
OP Offline
journeyman
E
Joined: Nov 2017
15. Please allow us to modify Perseverance and CriticalMultiplier via POTION in stats

At the moment they are missing in Stats.Potion and it seems they were simply overlooked

Joined: Nov 2017
apprentice
Offline
apprentice
Joined: Nov 2017
+1 to topic, pretty annoing to script such a things with TONS of empty consume statuses for checks

Joined: Nov 2017
E
Erikem Offline OP
journeyman
OP Offline
journeyman
E
Joined: Nov 2017
Missing Perseverance from Potion can be solved using a following solution found by LaughingLeader

Quote
Search for "Potion" in StatObjectDefinitions.sod, and add this to the end of the entries, after the comment entry:
<field_definition index="122" name="Perseverance" display_name="Perseverance" export_name="Perseverance" type="Integer"/>


Moderated by  Larian_Koala, Larian_KVN 

Link Copied to Clipboard
Powered by UBB.threads™ PHP Forum Software 7.7.5