Skip to content

Datapack, Coven, Curses ideas/enhancement #97

@Mikirary

Description

@Mikirary

Apologies in advance for the lengthy text; I wanted to gather all related ideas in one place.

This is not mandatory, and just an 'idea', but you might like some of it.


A few days ago, I tested creating a datapack for rituals and other things. It works well and offers many opportunities for creating modpacks. It's a great thing.

But there is a slight inconvenience: these recipes have "strict conditions," such as needing a cat (yes/no) or needing four witches. If the condition is not met, the spell does not work.

But if you need to create a spell with the ability to "increase" the effect's power depending on a condition (for example, if the player has a cat, then instead of 'command 1', 'command 2' should be executed), it seems that this cannot be done at the moment.

As an example, a custom spell to create a moon gravity effect for a character has an attribute value, but if I want to make the effect stronger, I need to create another data pack with different value parameters.

Image

I also read the code and realized that there is a parameter (WitcheryApi.isWitchy(player)) that marks the player as a 'witch', which protects players who are not witches from griffing by reducing the power of curses. which is a good thing, but it also reminded me of the deeper gameplay of curses from the old Witchery.

In the old version of Witchery, some curses had levels, and all curses had a parameter called "cat used during casting." This parameter was not mandatory, but if a cat was used, the curse became one level stronger (if possible). and this curse could not be removed with a curse removal ritual if the player using the curse removal spell did not have a cat, in which case the curse became 1 level stronger (if possible).

Image

Here's a small idea that might solve two problems (datapacks and curses).

Add something like a "witch power" parameter to the mod that depends on the player's cat and coven.

For example, if a player has a cat, this gives them 7 points of 'witch power', and each witch in the coven gives +1 power (maximum 6), for a total of 13 points of 'witch power'.

The cat gives 7 'witch power' because it provides an easy way to check whether the cat was used when casting the curse or not, since witches give a maximum of 6 'witch power' in total, so this parameter cannot be cheated.

For example: A curse was used and a cat was used in the cast (7 units of 'witch power'). If a player without a cat (or with any number of witches in the coven (maximum 6)) tries to use curse removal, they will fail and make the curse effect worse, because the curse power is 7 > 6 (the power of curse removal with a coven of 6 witches).

If we take the example of a curse that used a cat and six witches (a total of 13 'witch power'), then only a player who also has a cat and six witches (13 'witch power') can remove such a curse.

Image

This parameter will also allow you to change the strength of curses if you use it as a coefficient in the code, for example misfortune curse

        if (level.gameTime % 80 == 0L) {
        val effectChance = if (WitcheryApi.isWitchy(player)) {
            0.01 - 'witch power' (because SHORT time = more strong curse) - 'number of failed attempts to remove the curse' 
        } else {
            0.003
        }

        val effectDuration = if (WitcheryApi.isWitchy(player)) {
            20 * 8 + 'witch power' (because LONG time = more strong curse)  + 'number of failed attempts to remove the curse' 
        } else {
            20 * 5
        }
       curse level = 'witch power' (for checking 'witch power' to compare this parameter when a curse removal spell is used; if the curse removal has a lower level, it makes the curse worse instead of removing it (parameter 'number of failed attempts to remove the curse'))

It's also probably worth using the 'witch power' parameter to increase the duration of the curse. I'm not sure how long it lasts now, but it seems to be around 3-5 days in Minecraft. Perhaps a cat + 6 witches would make it almost infinite (or very long), giving players a 'high-end goal in the game for pvp thing'.


There is also a small problem with this approach. I'm not sure how it will work, but there is a chance that this mechanic can be scammed if, after a player with a cat and X number of witches has cast a curse, another player without a cat and without witches also uses a curse, then this curse will be updated and will be less powerful. It is probably worth adding a check if the new curse has 'witch power' > ('witch power' + 'number of failed attempts to remove the curse') than the old curse, then update the curse, otherwise cancel the cast.


Now, an idea for the datapack: if you use the 'witch power' parameter, you can create conditions in the datapack such as:
if 'witch power' = or > 0, but < 3, then the cast performs command 1 (can be used if there are 0-2 witches)
if 'witch power' = or > 3, but < 5 then execute command 2. (can be used if there are 3-4 witches)
if 'witch power' = or > 13, but < 14 then execute command 3. (this is like the final spell power only available if there is a cat + 6 witches)


The coven system currently functions adequately, but when utilizing the 'witch power' system, players may occasionally desire to employ a weaker version of a spell but are unable to do so because they have a cat and witches.

It may be worthwhile to add a feature to searstone that would summon a specific number of witches and enable/disable the cat, allowing for more nuanced use of this system.


Sorry if my text has mistakes or something is wrong, my English is poor, but I hope the main idea is clear.

It's probably a lot of work, and I'm not sure my examples will work well, so it's just an idea/enhancement if you like it.

Anyway, thanks for your work, it's awesome! ♥

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions