knyghtmare / War_of_Legends

An add-on for the Battle for Wesnoth, a turn-based strategy game. This add-on is a multiplayer era featuring my favorite factions. It is required as a dependency to play several campaigns.
GNU General Public License v2.0
7 stars 6 forks source link

BUG: ability lithic idol is buggy #163

Closed knyghtmare closed 1 month ago

knyghtmare commented 1 month ago
babaissarkar commented 1 month ago

More details? I put a Forgotton Minotaur in a scenario start (time: morning 1/6). What I noticed that the ability kicked in at the next turn, and in the initial turn I could move the unit or attack with it. Is this the bug?

knyghtmare commented 1 month ago

More details? I put a Forgotton Minotaur in a scenario start (time: morning 1/6). What I noticed that the ability kicked in at the next turn, and in the initial turn I could move the unit or attack with it. Is this the bug?

Yeah, the bug is that the special does not trigger for morning time, or any time of the day if it's not side 1. It's weird.

Refumee commented 1 month ago

For me it is working as intented. They turn to stone and heal 10 hitpoints. There is no healing animation though.

Maybe because of "animate=no", Edit: tested it, yes, set "animate=yes" then we can see the healing.

Interesting is also, that (I let two minotaur fight), if Side 1 turn is active, the other minotaur isn't a stone yet, so he can be attacked. Until his turn begins.

Edit: This makes it so, that all forgotten minotaurs turn to stone, if the day starts. Don't know if that is balanced ` [event] name=side 1 turn first_time_only=no

    [store_time_of_day]
    [/store_time_of_day]

    [if]
        [variable]
            name=time_of_day.lawful_bonus
            less_than_equal_to=0
        [/variable]
        [then]
            [unpetrify]
                type=Forgotten Minotaur
            [/unpetrify]
        [/then]
        [else]
            [petrify]
                type=Forgotten Minotaur
                #side=$side_number
            [/petrify]
            [heal_unit]
                [filter]
                    type=Forgotten Minotaur
                    #side=$side_number
                [/filter]
                amount=10
                animate=yes
                restore_statuses=no
            [/heal_unit]
        [/else]
    [/if]
[/event]

` Don't know why the code looks so funny.

babaissarkar commented 1 month ago

For me it is working as intented. They turn to stone and heal 10 hitpoints.

Does that happen when you start the scenario with a Forgotten Minotaur already on your or somebody else's side? How did you create your Minotaurs?

Refumee commented 1 month ago

For me it is working as intented. They turn to stone and heal 10 hitpoints.

Does that happen when you start the scenario with a Forgotten Minotaur already on your or somebody else's side? How did you create your Minotaurs?

I started a local multiplayer game, with War of Legends Era. Started with :debug and then created a forgotten minotaur.

babaissarkar commented 1 month ago

Tests:

  1. With current turn at 1 (morning), create a For. Mino. using debug mode or [unit]. They can be move around my next turn, when they petrify.
babaissarkar commented 1 month ago

For me it is working as intented. They turn to stone and heal 10 hitpoints.

Does that happen when you start the scenario with a Forgotten Minotaur already on your or somebody else's side? How did you create your Minotaurs?

I started a local multiplayer game, with War of Legends Era. Started with :debug and then created a forgotten minotaur.

Which version of wesnoth are you using? (I can reproduce it using exactly the same steps on 1.19.2)

Refumee commented 1 month ago

For me it is working as intented. They turn to stone and heal 10 hitpoints.

Does that happen when you start the scenario with a Forgotten Minotaur already on your or somebody else's side? How did you create your Minotaurs?

I started a local multiplayer game, with War of Legends Era. Started with :debug and then created a forgotten minotaur.

Which version of wesnoth are you using? (I can reproduce it using exactly the same steps on 1.19.2)

Wesnoth Version 1.18.2 War of Legens Version 1.2.7.59

babaissarkar commented 1 month ago

Still reproducible. No idea how it's not happening in your version.

babaissarkar commented 1 month ago

One of the problems is that when an unit is created using [unit] the recruit event is not being called. And obviously turn refresh will occur only when the turn is changed. Also, the event should also occur on recall.

Refumee commented 1 month ago

Still reproducible. No idea how it's not happening in your version.

In my version they can't move. Maybe a bug from Wesnoth 1.19? I also need to add, if I create them via debug, they aren't turned to stone. I think "unit placed" is better, than "prerecurit", that also works with the debug tool.

Edit: So that would be my bugfix suggestion (for BfW 1.18.2) `

[event]
    name=unit placed
    first_time_only=no

    [filter]
        type=Forgotten Minotaur
    [/filter]

    [store_time_of_day]
    [/store_time_of_day]

    [if]
        [variable]
            name=time_of_day.lawful_bonus
            less_than_equal_to=0
        [/variable]
        [then]
            [unpetrify]
                type=Forgotten Minotaur
            [/unpetrify]
        [/then]
        [else]
            [petrify]
                type=Forgotten Minotaur
            [/petrify]
        [/else]
    [/if]
[/event]

[event]
    name=side 1 turn
    first_time_only=no

    [store_time_of_day]
    [/store_time_of_day]

    [if]
        [variable]
            name=time_of_day.lawful_bonus
            less_than_equal_to=0
        [/variable]
        [then]
            [unpetrify]
                type=Forgotten Minotaur
            [/unpetrify]
        [/then]
        [else]
            [petrify]
                type=Forgotten Minotaur
            [/petrify]
            [heal_unit]
                [filter]
                    type=Forgotten Minotaur
                [/filter]
                amount=10
                animate=yes
                restore_statuses=no
            [/heal_unit]
        [/else]
    [/if]
[/event]

`

babaissarkar commented 1 month ago

unit placed is definitely the one to use. For some weird reason, it refuses to work for me either on 1.18 or 1.19, so I'll let @knyghtmare to decide on this.

knyghtmare commented 1 month ago

So far this I have fixed the spawning part of the event, but the event which handles existing Forgotten Minotaur units on the map is still bugged. image

Refumee commented 1 month ago

Whats wrong with it? They are petrified and it is daytime.

Aa far as I understood that ability. At Daytime (lawful +25% damage) The forgotten minotaur is turning to stone. If he is already petrified, he will regenerate 10 hit points.

Did I miss something?

knyghtmare commented 1 month ago

They are petrified on afternoon time. They should be petrified on morning as well, which is not happening.

Refumee commented 1 month ago

They are petrified on afternoon time. They should be petrified on morning as well, which is not happening.

I see. On what version you are testing this? It seems that it's working for me on 1.18.2. Edit: in 1.19.2 my code works for me too.

If it helps I can make pictures and add it to the discord.

Refumee commented 1 month ago

They are petrified on afternoon time. They should be petrified on morning as well, which is not happening.

Could you send me the current code for the forgotten minotaur. It seems you are working on a different code base.