It is currently 16 Apr 2024, 18:06
   
Text Size

[fixed]Kaya, Ghost Assassin exile ability

Moderators: BAgate, drool66, Aswan jaguar, gmzombie, stassy, CCGHQ Admins

[fixed]Kaya, Ghost Assassin exile ability

Postby Korath » 11 Jun 2018, 15:30

Describe the Bug:
  1. You can't choose to exile the planeswalker itself with Kaya, Ghost Assassin's first ability.
  2. You get a cancel button instead of a done (or decline) one. If it's meant to cancel, it doesn't.
  3. If it's meant to mean done/decline, and you click it, the game dumps twice immediately, then segfaults at your next upkeep.
    Code: Select all
    bad parameters
    get_card_instance(-1, -1)
    functions/show_backtrace.c:19:show_backtrace(...)
    functions/deck.c:307:get_card_instance(...)
    functions/deck.c:440:get_original_internal_card_id(...)
    cards/conspiracy-take-the-crown.c:1921:card_kaya_ghost_assassin(...)
    call_cards_function<eax>(card_data_t *cd<eax>, int player, int card, event_t event)
    fx_activation_906(int player, int card, event_t event)
    call_card_fn_impl(...)
    functions/events.c:36:call_card_fn(...)
    functions/events.c:259:dispatch_event_to_single_card(...)
    resolve_top_card_on_stack()
    functions/engine.c:1596:finalize_activation(...)
    main_phase(int player, int a4, int a5)
    switch_phase(int a3)
    start_duel()
    start_duel_thread(int a1)
    0x7672d2e9
    0x775c1603
    0x775c15d6

    bad parameters
    get_card_instance(-1, -1)
    functions/show_backtrace.c:19:show_backtrace(...)
    functions/deck.c:307:get_card_instance(...)
    functions/functions.c:12322:get_owner(...)
    cards/conspiracy-take-the-crown.c:1922:card_kaya_ghost_assassin(...)
    call_cards_function<eax>(card_data_t *cd<eax>, int player, int card, event_t event)
    fx_activation_906(int player, int card, event_t event)
    call_card_fn_impl(...)
    functions/events.c:36:call_card_fn(...)
    functions/events.c:259:dispatch_event_to_single_card(...)
    resolve_top_card_on_stack()
    functions/engine.c:1596:finalize_activation(...)
    main_phase(int player, int a4, int a5)
    switch_phase(int a3)
    start_duel()
    start_duel_thread(int a1)
    0x7672d2e9
    0x775c1603
    0x775c15d6

    #0  0x020d5856 in kaya_ghost_assassin_legacy (player=<optimized out>, card=<optimized out>, event=<optimized out>) at cards/conspiracy-take-the-crown.c:1844
    #1  0x00000001 in ?? ()
    #2  0x0000000a in ?? ()
    #3  0x0000007e in ?? ()
    #4  0x000000c9 in ?? ()
    #5  0x004f00f8 in sub_4E9564 ()
    #6  0x00457e4a in fx_custom_903 ()
    #7  0x024ee695 in call_card_fn_impl () from ./manalinkeh.dll
    #8  0x024962dd in call_card_fn (address=0x457e10, instance=0x4f00f8, player=player@entry=0, card=10, card@entry=1168010808, event=event@entry=EVENT_RESOLVE_TRIGGER) at functions/events.c:34
    #9  0x02496e44 in dispatch_event_raw (event=event@entry=EVENT_RESOLVE_TRIGGER) at functions/events.c:105
    #10 0x024971f6 in dispatch_trigger_to_one_card (player=0, card=10, event=EVENT_RESOLVE_TRIGGER) at functions/events.c:317
    #11 0x004367c3 in resolve_top_card_on_stack ()
    #12 0x02497330 in resolve_trigger (player=0, card=10, TENTATIVE_reason_for_trigger_controller=0) at functions/events.c:581
    #13 0x004766dc in sub_475A30 ()
    #14 0x0249657f in dispatch_trigger_impl (player=player@entry=0, trig=trig@entry=TRIGGER_UPKEEP, xtrig=xtrig@entry=0, prompt=prompt@entry=0x739c20 "Begin Upkeep", TENTATIVE_allow_response=<optimized out>, TENTATIVE_allow_response@entry=0) at functions/events.c:400
    #15 0x02496c17 in dispatch_trigger (player=player@entry=0, trig=trig@entry=TRIGGER_UPKEEP, prompt=prompt@entry=0x739c20 "Begin Upkeep", TENTATIVE_allow_response=TENTATIVE_allow_response@entry=0) at functions/events.c:491
    #16 0x024b32ca in upkeep_phase (player=<optimized out>) at functions/engine.c:373
    #17 0x00439983 in switch_phase ()
    #18 0x0047902c in start_duel ()
    #19 0x004946e9 in start_duel_thread ()
    #20 0x7672d2e9 in KERNEL32!BaseThreadInitThunk () from c:/Windows/system32/kernel32.dll
    #21 0x775c1603 in ntdll!RtlInitializeExceptionChain () from c:/Windows/system32/ntdll.dll
    #22 0x775c15d6 in ntdll!RtlInitializeExceptionChain () from c:/Windows/system32/ntdll.dll
    #23 0x00000000 in ?? ()
    The stack overflow over frames 1-4 is of particular note.
Which card did behave improperly ?
Kaya, Ghost Assassin.

Which update are you using?(date,name)Which type(Duel,Gauntlet,Sealed Deck)
Dev master head, cde9295.

What exactly should be the correct behavior/interaction ?
You can do any of four things for the first ability: exile Kaya; exile a target creature; exile nothing; or cancel activation.

Are any other cards possibly affected by this bug ?
Last edited by drool66 on 08 May 2022, 19:45, edited 2 times in total.
Reason: fixed
User avatar
Korath
DEVELOPER
 
Posts: 3707
Joined: 02 Jun 2013, 05:57
Has thanked: 496 times
Been thanked: 1106 times

Re: [confirmed]Kaya, Ghost Assassin exile ability

Postby gnomefry » 31 Mar 2022, 17:30

Describe the Bug:

Korath's 2018 above reported bugs remain true for the current release version.

In addition, Kaya, Ghost Assassin can exile only creatures you control. It allows you to target an opponent's creature and even displays a brief activation animation, but there is no exile.

Which update are you using? (date, name)Which type? (duel, gauntlet, sealed deck)

Holidays 2021 ad1a6f8 - gauntlet

What exactly should be the correct behavior/interaction?

Venser, the Sojourner can exile itself. Vanish into Memory can exile target creature and return it during your next upkeep. Can these two cards have a baby?

Are any other cards possibly affected by this bug?
Attachments
kayaghostassassin.rar
(4.27 KiB) Downloaded 77 times
User avatar
gnomefry
Tester
 
Posts: 288
Joined: 28 Dec 2018, 00:44
Has thanked: 25 times
Been thanked: 24 times

Re: [confirmed]Kaya, Ghost Assassin exile ability

Postby drool66 » 01 Apr 2022, 19:28

These bugs aren't difficult to fix, but I think we should really have a more flexible function for "exile [something] until [time]." Or rather, several functions that each govern a different time frame, eg. remove_until_your_next_upkeep(), remove_until_[whenever]()... What I see we have are "exile [something] until eot," "exile [something] until [something else] leaves the bf," and "exile [something] and bring it back into play immediately." Vanish into Memory uses remove_until_eot(); without checking, that seems incorrect. Maybe someone can correct me if I'm wrong.

[EDIT] clarity
User avatar
drool66
Programmer
 
Posts: 1163
Joined: 25 Nov 2010, 22:38
Has thanked: 186 times
Been thanked: 267 times

Re: [confirmed]Kaya, Ghost Assassin exile ability

Postby Aswan jaguar » 03 Apr 2022, 17:44

I don't mind having different functions for different time restrictions as long as they work correctly. However I see your point of having one function "exile [something] until [time]."

For clause "exile [something] until [something else] leaves the bf," which is a bit different case I am against of squeezing it into a universal exile time restriction function in IMHO we are asking unnecessarily for trouble.
---
Trying to squash some bugs and playtesting.
User avatar
Aswan jaguar
Super Tester Elite
 
Posts: 8078
Joined: 13 May 2010, 12:17
Has thanked: 730 times
Been thanked: 458 times

Re: [fixed]Kaya, Ghost Assassin exile ability

Postby drool66 » 08 May 2022, 19:46

Fixed in 03bc323
User avatar
drool66
Programmer
 
Posts: 1163
Joined: 25 Nov 2010, 22:38
Has thanked: 186 times
Been thanked: 267 times


Return to Archived Reports

Who is online

Users browsing this forum: No registered users and 62 guests


Who is online

In total there are 62 users online :: 0 registered, 0 hidden and 62 guests (based on users active over the past 10 minutes)
Most users ever online was 4143 on 23 Jan 2024, 08:21

Users browsing this forum: No registered users and 62 guests

Login Form