Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add Card.IsEffectProperty #648

Merged
merged 12 commits into from
Nov 6, 2024
Merged

add Card.IsEffectProperty #648

merged 12 commits into from
Nov 6, 2024

Conversation

salix5
Copy link
Collaborator

@salix5 salix5 commented Oct 27, 2024

update class card

template<typename T>
void card::filter_effect_container(const effect_container& container, uint32 code, effect_filter f, T& eset);

Find all effects from container with code satisfying f and put them into eset .
Avoid unnecessary code copy-and-paste.

從container找出code且滿足過濾函數f的效果並放入eset
filter_xxx_effect
大部分都是重複的代碼複製貼上
改成用同一個函數查找可以大幅簡化

effect* find_effect(const effect_container& container, uint32 code, effect_filter f);
effect* find_effect_with_target(const effect_container& container, uint32 code, effect_filter_target f, card* target);

Find the first effect from container with code satisfying f.
從container找出第一個code且滿足過濾函數f的效果

Add Lua function

Card.IsOriginalEffectProperty
Check if c is a card with some effect in text.
是否為記載X效果的卡

Card.IsEffectProperty
Check if c is a card with some effect.
是否為持有X效果的卡

@mercury233
@purerosefallen

Reference

https://www.db.yugioh-card.com/yugiohdb/faq_search.action?ope=5&fid=24114&keyword=&tag=-1&request_locale=ja
Question
(A)「表裏の女神」の『①:このカードが召喚・特殊召喚した場合に発動できる。デッキから「表裏の女神」以外のコイントスを行う効果を持つモンスター1体を手札に加える』効果を発動した場合や、「アルカナスプレッド」の『●裏』や②の効果を適用する場合、「運否の天賦羅-EBI」を選ぶことはできますか?

(B)「運否の天賦羅-EBI」がモンスターゾーンに表側表示で存在していたり、装備魔法カードや永続魔法カード扱いになっている場合、「アルカナフォースⅩⅨ-THE SUN」の『①:コイントスを行う効果を持つカードがフィールドに存在する場合に発動できる。このカードを手札から特殊召喚する』効果を発動できますか?
Answer
(A)できます。
(B)できません。

https://yugioh-wiki.net/index.php?%A1%D4%A5%C7%A5%A3%A5%E1%A5%F3%A5%B8%A5%E7%A5%F3%A1%A6%A5%C0%A5%A4%A5%B9%A1%D5#faq
Q:自分の魔法&罠ゾーンに、《タイムマジック・ハンマー》自身の(1)の効果で装備カード扱いとして装備されている《タイムマジック・ハンマー》が存在する場合、自分はこのカードを発動できますか?
A:はい、発動できます。(22/06/12)

Q:自分の魔法&罠ゾーンに、《鎧皇竜-サイバー・ダーク・エンド・ドラゴン》の(2)の効果で装備カード扱いとして装備されている《タイムマジック・ハンマー》が存在する場合、自分はこのカードを発動できますか?
A:はい、発動できます。(22/06/12)

Q:《N・ブラック・パンサー》で《D・モバホン》をコピーした場合、《ディメンジョン・ダイス》を発動できますか?
A:発動できます。(23/02/23)

https://ocg-rule.readthedocs.io/zh-cn/latest/c06/2023.html#id245
23/11/23
「救世星龙」发动效果,无效只在作为怪兽时才持有掷骰子效果的怪兽,『这个效果无效的怪兽记述的效果在这个回合可以作为这张卡的效果只有1次发动』效果适用后,也不是『持有掷骰子效果的卡』,不能发动「次元解骰」。
「时间魔术锤」因其他卡的效果作为装备魔法卡在魔法·陷阱卡区域存在时,是『持有掷骰子效果的卡』,可以发动「次元解骰」。

@purerosefallen
Copy link
Collaborator

how about IsEffectType IsEffectProperty?

@salix5 salix5 changed the title add Card.IsEffectCode, IsEffectCategory add Card.IsEffectProperty Oct 27, 2024
@salix5
Copy link
Collaborator Author

salix5 commented Oct 27, 2024

Card.IsOriginalEffectProperty
Check if c is a card with some effect in text.
是否為記載X效果的卡

Card.IsEffectProperty
Check if c is a card with some effect.
是否為持有X效果的卡

@salix5
Copy link
Collaborator Author

salix5 commented Nov 1, 2024

コイントスを行う効果を持つカード

function filter1(c)
return c:IsEffectProperty(aux.FilterBoolFunction(Effect.IsHasCategory,CATEGORY_COIN))
end

サイコロを振る効果を持つカード

function filter1(c)
return c:IsEffectProperty(aux.FilterBoolFunction(Effect.IsHasCategory,CATEGORY_DICE))
end

「叛逆者エト」は1ターンに1度、以下の効果を持つモンスターカードが相手のフィールドか墓地に存在し、LPを半分払った場合のみ手札・墓地から特殊召喚できる。
●効果が発動した時にチェーンして手札かモンスターゾーンで発動する効果

Require: #649

function quick_filter(e)
return e:IsHasRange(LOCATION_HAND+LOCATION_MZONE) and e:GetCode()==EVENT_CHAINING
	and e:IsHasType(EFFECT_TYPE_QUICK_O+EFFECT_TYPE_QUICK_F)
end

c:IsOriginalEffectProperty(quick_filter)

@salix5 salix5 merged commit 101ed0b into master Nov 6, 2024
1 check passed
@salix5 salix5 deleted the patch-filter branch November 6, 2024 12:55
@Wind2009-Louse
Copy link
Contributor

对于不在场上的卡,要判断其是否为“持有X效果的卡”,应该使用IsEffectProperty还是IsOriginalEffectProperty?

@salix5
Copy link
Collaborator Author

salix5 commented Nov 7, 2024

对于不在场上的卡,要判断其是否为“持有X效果的卡”,应该使用IsEffectProperty还是IsOriginalEffectProperty?

IsOriginalEffectProperty只用在叛逆者
只有這張卡是DB明確說明只看卡片記載
其他全部不考慮

一般的持有X效果都是用IsEffectProperty

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants