It is currently 18 Jul 2025, 21:00
   
Text Size

Community Wad

Moderator: CCGHQ Admins

Re: Community Wad

Postby thefiremind » 19 Nov 2016, 10:53

Before going through the new problematic cards, I just realized that the version of Telekinesis I suggested has some flaws. Let's forget that I opted for STEP_DRAW rather than STEP_UPKEEP, it's not even important. Any step we decide to make the delayed trigger happen poses the problem "what if the creature's controller has to skip that step?". A safer approach would be the following:
Code: Select all
return MTG():GetStep() > STEP_UNTAP and MTG():GetStep() ~= STEP_CLEANUP
STEP_CLEANUP is impossible to skip when skipping entire turns, so it needs to be ruled out, otherwise the delayed trigger could fire on a skipped turn.
However, this implementation still fails in a scenario: "what if the creature's controller has to skip the untap step?". The TapAndHold() would still be in effect when we call the second Hold(), making the creature skip only 1 untap.
There's only one solution that should work in all scenarios: the spell ability will call a delayed trigger that fires at the creature's controller untap step. That delayed trigger will call another delayed trigger that fires with the condition I wrote up here and calls Hold() on the creature.
Here's the complete code I would write. I have simplified some things, such as not creating delayDC when we already have a chest with the information we need. I honestly don't know if we can pass the whole EffectDC of a delayed trigger to another one, it will be a good time to test it. :wink:
Telekinesis code (hopefully working in all possible scenarios) | Open
Code: Select all
    <SPELL_ABILITY>
      <LOCALISED_TEXT LanguageCode="en-US">...</LOCALISED_TEXT>
      <SFX text="TARGET_BLUE_MAGIC_PLAY" />
      <TARGET tag="SPL_CARD_QUERY_CHOOSE_CREATURE" definition="0" compartment="0" count="1" />
      <TARGET_DEFINITION id="0">
         local filter = ClearFilter()
         filter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
      </TARGET_DEFINITION>
      <RESOLUTION_TIME_ACTION>
         local targetDC = EffectDC():Get_Targets(0)
         local target_creature = targetDC:Get_CardPtr(0)
         if target_creature ~= nil then
            target_creature:TapAndHold()
            MTG():CreateDelayedTrigger(1, targetDC)
         end
      </RESOLUTION_TIME_ACTION>
      <CONTINUOUS_ACTION layer="8">
         local target_creature = EffectDC():Get_Targets(0):Get_CardPtr(0)
         if target_creature ~= nil then
            target_creature:GetCurrentCharacteristics():Bool_Set( CHARACTERISTIC_DOESNT_DEAL_COMBAT_DAMAGE, 1 )
         end
      </CONTINUOUS_ACTION>
      <DURATION simple_duration="UntilEOT" />
      <AI_SIMPLIFIED_TARGETING compartment="0" hint="HINT_ENEMY_ONLY" />
   </SPELL_ABILITY>
   <TRIGGERED_ABILITY resource_id="1" replacement_effect="1">
      <TRIGGER value="BEGINNING_OF_PLAYERS_STEP">
         local target_creature = EffectDC():Get_CardPtr(0)
         return MTG():GetStep() == STEP_UNTAP and target_creature ~= nil and TriggerPlayer() == target_creature:GetController()
      </TRIGGER>
      <CLEANUP fire_once="1">
         return EffectDC():Get_CardPtr(0) == nil
      </CLEANUP>
      <RESOLUTION_TIME_ACTION>
         MTG():CreateDelayedTrigger( 2, EffectDC() )
      </RESOLUTION_TIME_ACTION>
   </TRIGGERED_ABILITY>
   <TRIGGERED_ABILITY resource_id="2" replacement_effect="1">
      <TRIGGER value="BEGINNING_OF_PLAYERS_STEP">
         local target_creature = EffectDC():Get_CardPtr(0)
         local step = MTG():GetStep()
         return step &gt; STEP_UNTAP and step ~= STEP_CLEANUP and target_creature ~= nil and TriggerPlayer() == target_creature:GetController()
      </TRIGGER>
      <CLEANUP fire_once="1">
         return EffectDC():Get_CardPtr(0) == nil
      </CLEANUP>
      <RESOLUTION_TIME_ACTION>
         local target_creature = EffectDC():Get_CardPtr(0)
         if target_creature ~= nil then
            target_creature:Hold()
         end
      </RESOLUTION_TIME_ACTION>
   </TRIGGERED_ABILITY>
----------------------
I guess the main problem here is that GetEffectX is a function written in the official Functions.lol file, so it's just like ours and it's not a method, while GetPaidX and GetManaX are card object's methods, and as such need to be called from their object:
Code: Select all
local x_amount = GetEffectX()
--------------
local x_amount = EffectSource():GetPaidX()
--------------
local x_amount = EffectSource():GetManaX()
These are the things you need to test. But I'd suggest not to mix them: use only 1 of them through the whole code and see if it works. I'd try with GetPaidX first since the X is in the cost.
There's another flaw: I understand why you are using twice the amount of +0/+1 and +1/+0 counters in order to simulate +0/+2 and +2/+0, but that's an approximation that would result in a wrong interaction with cards such as Thief of Blood. The correct approach would be to code your own +0/+2 and +2/+0 counters, maybe with a manager that gives the stat increase: you should ask Xander9009 if something like that has been already coded, I'm pretty sure it has.

The code seems reasonable to me. My guess is that the game stops when encountering LoseGame or WinGame for the first time. If that's the case, you'll need to settle with approximations such as the ones used for removing a creature from combat. In this case you could deal each player an amount of unpreventable damage equal to their life total.

LKI usually makes sense for damage sources because the damage usually needs to happen even if its source leaves the battlefield in response, but I'm not sure in this case: should the intervening_if fail if the Aura leaves the battlefield in response? There's no enchanted creature anymore if there's no Aura... this should be asked to someone with deep knowledge of the rules.
< Former DotP 2012/2013/2014 modder >
Currently busy with life...
User avatar
thefiremind
Programmer
 
Posts: 3515
Joined: 07 Nov 2011, 10:55
Has thanked: 118 times
Been thanked: 722 times

Re: Community Wad

Postby Splinterverse » 19 Nov 2016, 11:27

Is there a way to filter on a data chest? In other words, I have some cards in a data chest and I want only the cards in that data chest to be included in my filter results.
---------------------------------------------
The DOTP2014 CW is updated nightly between 11 PM and 12 AM EST.
Known Issues/Bugs |
Impossible Cards List | Update Your Land Pools
Splinterverse
 
Posts: 918
Joined: 04 Sep 2016, 13:32
Has thanked: 150 times
Been thanked: 76 times

Re: Community Wad

Postby thefiremind » 19 Nov 2016, 12:09

Splinterverse wrote:Is there a way to filter on a data chest? In other words, I have some cards in a data chest and I want only the cards in that data chest to be included in my filter results.
Code: Select all
MTG():ClearFilterMark()
local chest = ... -- Whatever data chest you have your cards in
local count = chest:Count()
for i=0,count-1 do
   chest:Get_CardPtr(i):MarkForFilter()
end
local filter = ClearFilter()
filter:SetMarkedObjectsOnly()
< Former DotP 2012/2013/2014 modder >
Currently busy with life...
User avatar
thefiremind
Programmer
 
Posts: 3515
Joined: 07 Nov 2011, 10:55
Has thanked: 118 times
Been thanked: 722 times

Re: Community Wad

Postby Splinterverse » 19 Nov 2016, 12:30

thefiremind wrote:
Splinterverse wrote:Is there a way to filter on a data chest? In other words, I have some cards in a data chest and I want only the cards in that data chest to be included in my filter results.
Code: Select all
MTG():ClearFilterMark()
local chest = ... -- Whatever data chest you have your cards in
local count = chest:Count()
for i=0,count-1 do
   chest:Get_CardPtr(i):MarkForFilter()
end
local filter = ClearFilter()
filter:SetMarkedObjectsOnly()
The above is perfect for what I need. Many thanks!

I will try that Telekinesis code today.

For Frankenstein's Monster, I agree that the counter method is not good. I would much prefer an exact counter. I asked about this stuff previously here and Xander responded that he will be handling these en masse at some point in the future. I am willing to do it as I go if I can get step-by-step instructions of which files (in addition to the card at hand) need updated, etc.

For Divine Intervention, I will give the damage to life totals a try, but I suspect it will have the same result -- one will fire first and be declared a winner. Will definitely try it though.

With Earthbind, I'm just not sure why the granted ability has no effect. It's been granted to the Aura so I'm not sure why it's not applying to the creature that it has enchanted.
---------------------------------------------
The DOTP2014 CW is updated nightly between 11 PM and 12 AM EST.
Known Issues/Bugs |
Impossible Cards List | Update Your Land Pools
Splinterverse
 
Posts: 918
Joined: 04 Sep 2016, 13:32
Has thanked: 150 times
Been thanked: 76 times

Re: Community Wad

Postby Xander9009 » 19 Nov 2016, 16:19

I'm going to have a lot of free time today, so ill create the counters today.
_______________________________
Community Wad - Community Wad Website - How to Help and Report Bugs
Discord: discord.gg/4AXvHzW
User avatar
Xander9009
Programmer
 
Posts: 2905
Joined: 29 Jun 2013, 07:44
Location: Indiana, United States
Has thanked: 121 times
Been thanked: 445 times

Re: Community Wad

Postby Splinterverse » 19 Nov 2016, 16:23

Xander9009 wrote:I'm going to have a lot of free time today, so ill create the counters today.
Cool. Can you also look into this . . .

Xander, something odd is going on with ELEMENTAL_C_7_1_R_HT. I have coded Elemental Appeal and it "appears" to create the token, but the token can't be seen on screen. Debug shows that the token was created in the designated chest and cards that trigger when a creature enters trigger on the token, but you can't see it at all. TheFireMind suggested that it might be missing its creature type.
---------------------------------------------
The DOTP2014 CW is updated nightly between 11 PM and 12 AM EST.
Known Issues/Bugs |
Impossible Cards List | Update Your Land Pools
Splinterverse
 
Posts: 918
Joined: 04 Sep 2016, 13:32
Has thanked: 150 times
Been thanked: 76 times

Re: Community Wad

Postby Xander9009 » 19 Nov 2016, 16:25

I already checked and it wasn't missing its creature type. It was functionally identical to another working token. I didn't mention it yet because I am intending to look into it, yes.
_______________________________
Community Wad - Community Wad Website - How to Help and Report Bugs
Discord: discord.gg/4AXvHzW
User avatar
Xander9009
Programmer
 
Posts: 2905
Joined: 29 Jun 2013, 07:44
Location: Indiana, United States
Has thanked: 121 times
Been thanked: 445 times

Re: Community Wad

Postby Xander9009 » 19 Nov 2016, 18:17

The counters should work now. +0/+2, +2/+0, -2/-0, and -0/-2. In order for them to work, you'll need to create _MANAGER_CHARACERISTICS.
Code: Select all
<TRIGGERED_ABILITY replacement_effect="1" active_zone="ZONE_LIBRARY">
      <TRIGGER value="BEGINNING_OF_STEP">
         return MTG():GetStep() == STEP_UPKEEP and MTG():GetTurnNumber() == 0
      </TRIGGER>
      <RESOLUTION_TIME_ACTION>
         CW_General_CreateManagers("_MANAGER_CHARACTERISTICS")
      </RESOLUTION_TIME_ACTION>
   </TRIGGERED_ABILITY>
   <TRIGGERED_ABILITY replacement_effect="1" active_zone="ZONE_HAND">
      <TRIGGER value="BEGINNING_OF_STEP">
         return MTG():GetStep() == STEP_UPKEEP and MTG():GetTurnNumber() == 0
      </TRIGGER>
      <RESOLUTION_TIME_ACTION>
         CW_General_CreateManagers("_MANAGER_CHARACTERISTICS")
      </RESOLUTION_TIME_ACTION>
   </TRIGGERED_ABILITY>
   <TOKEN_REGISTRATION reservation="1" type="_MANAGER_CHARACTERISTICS" />
_______________________________
Community Wad - Community Wad Website - How to Help and Report Bugs
Discord: discord.gg/4AXvHzW
User avatar
Xander9009
Programmer
 
Posts: 2905
Joined: 29 Jun 2013, 07:44
Location: Indiana, United States
Has thanked: 121 times
Been thanked: 445 times

Re: Community Wad

Postby Splinterverse » 19 Nov 2016, 22:06

Finished coding for today; all cards referenced are from the missing cards list.

Coded, tested, and uploaded:
Bond of Agony
Champion's Drake
Chaos Lord
City of Shadows
Coalition Victory
Coerced Confession
Consign to Dream
Consuming Ferocity
Corpse Augur
Corpse Lunge
Corrosion
Cradle to Grave
Cragganwick Cremator
Crovax the Cursed
Cryptic Gateway
Curse Artifact
Custody Battle
Darksteel Garrison
Dead Ringers
Divine Intervention

Bugs fixed:
Fire Covenant -- removed unused commented code (from when I coded it)
Telekinesis -- improved the implementation; thanks to thefiremind; tested
Warp Artifact -- typo


Open Items:

-- CW_CARD_QUERY_SPLINTERVERSE has been updated and uploaded.

-- I appreciate the new counters, Xander. Unfortunately, Frankenstein's Monster is shelved because the triggered ability does not respond to any of the following: GetEffectX(), GetManaX(), GetPaidX(), EffectSource():GetManaX(), or EffectSource():GetPaidX(). The rest of the code works fine when the X requirement is ignored and Debug has shown all of these values to be empty. I will use these new counters the next time I come across a spot for them though.

-- thefiremind's method of inducing a draw worked. Divine Intervention is good to go!

-- Confusion in the Ranks http://pastebin.com/eUEBSrRc Exchange isn't happening. Debug doesn't reveal anything.

-- Culling Scales http://pastebin.com/WWkjYH8U Everything works until you select the permanent. Then, the game crashes. I have tried alternate versions with the permanent calculation elsewhere (such as in the previous step and passed via LinkDC) but this is the only version that has gotten me to the point that I can select the permanent. Then crash. :(

-- Due Respect http://pastebin.com/TNSkfmCh Objects are not entering tapped. Not sure what to try.

-- Eye of Yawgmoth http://pastebin.com/1Jf8Feat Debugging my way through this, I can see that it gets all the way to the ChooseItemFromDC and does nothing. I've tried putting the ChooseItemFromDC in the same block as the DC's creation. Here, in my latest attempt, it is separate. No luck. Is there a trick to working with ChooseItemDC perhaps? (Ignore the fact that the reveal is missing; I will be using the new function once everything else is sorted.)

-- Master of Cruelties http://pastebin.com/3n6yfKtj This current implementation is not preventing other creatures from joining the attack with Master of Cruelties. Perhaps I have implemented this attack test trigger incorrectly as I've never used it before.


Next:

Back tomorrow to continue coding missing cards and implement any suggested fixes.
---------------------------------------------
The DOTP2014 CW is updated nightly between 11 PM and 12 AM EST.
Known Issues/Bugs |
Impossible Cards List | Update Your Land Pools
Splinterverse
 
Posts: 918
Joined: 04 Sep 2016, 13:32
Has thanked: 150 times
Been thanked: 76 times

Re: Community Wad

Postby Xander9009 » 19 Nov 2016, 22:59

Frankenstein's Monster:
Code: Select all
   <TRIGGERED_ABILITY replacement_effect="1" active_zone="ZONE_TRANSITION">
      <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[As Frankenstein’s Monster enters the battlefield, exile X creature cards from your graveyard. If you can’t, put Frankenstein’s Monster into its owner’s graveyard instead of onto the battlefield. For each creature card exiled this way, Frankenstein’s Monster enters the battlefield with a +2/+0, +1/+1, or +0/+2 counter on it.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[As Frankenstein’s Monster enters the battlefield, exile X creature cards from your graveyard. If you can’t, put Frankenstein’s Monster into its owner’s graveyard instead of onto the battlefield. For each creature card exiled this way, Frankenstein’s Monster enters the battlefield with a +2/+0, +1/+1, or +0/+2 counter on it.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[As Frankenstein’s Monster enters the battlefield, exile X creature cards from your graveyard. If you can’t, put Frankenstein’s Monster into its owner’s graveyard instead of onto the battlefield. For each creature card exiled this way, Frankenstein’s Monster enters the battlefield with a +2/+0, +1/+1, or +0/+2 counter on it.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[As Frankenstein’s Monster enters the battlefield, exile X creature cards from your graveyard. If you can’t, put Frankenstein’s Monster into its owner’s graveyard instead of onto the battlefield. For each creature card exiled this way, Frankenstein’s Monster enters the battlefield with a +2/+0, +1/+1, or +0/+2 counter on it.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[As Frankenstein’s Monster enters the battlefield, exile X creature cards from your graveyard. If you can’t, put Frankenstein’s Monster into its owner’s graveyard instead of onto the battlefield. For each creature card exiled this way, Frankenstein’s Monster enters the battlefield with a +2/+0, +1/+1, or +0/+2 counter on it.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[As Frankenstein’s Monster enters the battlefield, exile X creature cards from your graveyard. If you can’t, put Frankenstein’s Monster into its owner’s graveyard instead of onto the battlefield. For each creature card exiled this way, Frankenstein’s Monster enters the battlefield with a +2/+0, +1/+1, or +0/+2 counter on it.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[As Frankenstein’s Monster enters the battlefield, exile X creature cards from your graveyard. If you can’t, put Frankenstein’s Monster into its owner’s graveyard instead of onto the battlefield. For each creature card exiled this way, Frankenstein’s Monster enters the battlefield with a +2/+0, +1/+1, or +0/+2 counter on it.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[As Frankenstein’s Monster enters the battlefield, exile X creature cards from your graveyard. If you can’t, put Frankenstein’s Monster into its owner’s graveyard instead of onto the battlefield. For each creature card exiled this way, Frankenstein’s Monster enters the battlefield with a +2/+0, +1/+1, or +0/+2 counter on it.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[As Frankenstein’s Monster enters the battlefield, exile X creature cards from your graveyard. If you can’t, put Frankenstein’s Monster into its owner’s graveyard instead of onto the battlefield. For each creature card exiled this way, Frankenstein’s Monster enters the battlefield with a +2/+0, +1/+1, or +0/+2 counter on it.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[As Frankenstein’s Monster enters the battlefield, exile X creature cards from your graveyard. If you can’t, put Frankenstein’s Monster into its owner’s graveyard instead of onto the battlefield. For each creature card exiled this way, Frankenstein’s Monster enters the battlefield with a +2/+0, +1/+1, or +0/+2 counter on it.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[As Frankenstein’s Monster enters the battlefield, exile X creature cards from your graveyard. If you can’t, put Frankenstein’s Monster into its owner’s graveyard instead of onto the battlefield. For each creature card exiled this way, Frankenstein’s Monster enters the battlefield with a +2/+0, +1/+1, or +0/+2 counter on it.]]></LOCALISED_TEXT>
      <TRIGGER value="ZONECHANGE_TRANSITION" simple_qualifier="self" to_zone="ZONE_BATTLEFIELD" from_zone="ZONE_ANY" />
      <RESOLUTION_TIME_ACTION>
         Debug(EffectSource():GetPaidX())
      </RESOLUTION_TIME_ACTION>
   </TRIGGERED_ABILITY>
That displayed properly.
Note that I changed the <TRIGGERED_ABILITY line and the <TRIGGER line to match "As ~ enters the battlefield, ..." The code you had was for "When ~ enters the battlefield, ..." I tested it first with the trigger setup you posted, and it worked in both.

Confusion in the Ranks: You should be able to remove the first trigger. The second should still work for EffectSource() as long as it's included in the "artifact, creature, or enchantment" list. On lines 56 and 57, where do "EffectDC():Get_PlayerPtr(1)" and "EffectDC():Get_PlayerPtr(0)" come from?

Culling Scales: First up, you don't need to specifically check in the RTA if it's still the lowest CMC. If it's not, then it's no longer valid within the TARGET_DEFINITION, which will make it invalid as a target and will counter the ability. The ruling is just a clarification that this is exactly what the rules dictate, not a special condition of this card. Secondly, try this code. It's much simpler and so less likely to go wrong:
Code: Select all
<TARGET tag="SPL_CARD_QUERY_CHOOSE_PERMANENT_WITH_LOWEST_CMC" definition="0" compartment="0" count="1" />
<TARGET_DEFINITION id="0">
   local iCMC = 0
   local iCount = 0
   while iCount == 0 do
      local oFilter = ClearFilter()
      CW_Filter_AddPermanents(oFilter)
      oFilter:Add(FE_TYPE, OP_NOT, CARD_TYPE_LAND)
      oFilter:Add(FE_CMC, OP_EQUALS, iCMC)
      iCount = oFilter:Count()
      iCMC = iCMC + 1
   end
</TARGET_DEFINITION>
<RESOLUTION_TIME_ACTION>
   local oTarget = EffectDC():Get_Targets(0) and EffectDC():Get_Targets(0):Get_CardPtr(0)
   if oTarget ~= nil then
      oTarget:Destroy()
   end
</RESOLUTION_TIME_ACTION>
<AI_SIMPLIFIED_TARGETING compartment="0" hint="HINT_ENEMY" />
Due Respect: A triggered ability (except resource abilities) are active when the card is on the battlefield. This isn't a permanent, and it's never on the battlefield, so that ability will never have a chance to trigger. It should be a <SPELL_ABILITY> which creates a delayed trigger. That delayed trigger is what should tap entering permanents.

Eye of Yawgmoth: Line 65 is a useless block. Lines 78, 79, and 80 are unnecessary. (Just make sure to rename "choiceDC" to "reveal_chest".) The reason it's not working is almost definitely because the input DC and output DC are both EffectDC() chest 2. Make the answer dc chest 3. Also, don't forget to reveal the cards with GuidedReveal as they're either exiled or put into hand.

Master of Cruelties: Change "TriggerObject() == EffectSource()" to "EffectSource():IsAttacking()".
_______________________________
Community Wad - Community Wad Website - How to Help and Report Bugs
Discord: discord.gg/4AXvHzW
User avatar
Xander9009
Programmer
 
Posts: 2905
Joined: 29 Jun 2013, 07:44
Location: Indiana, United States
Has thanked: 121 times
Been thanked: 445 times

Re: Community Wad

Postby thefiremind » 19 Nov 2016, 23:23

Xander beat me to it, anyway I have something to add:

In addition to what Xander already pointed out: when you want to make something enter the battlefield tapped, you need to tap it in a ZONECHANGE_TRANSITION trigger: look at any land that enters the battlefield tapped as an example.

You can make the code even simpler: just use a sacrifice cost with the LKI_shield="1" attribute.
Code: Select all
    <COST type="Sacrifice" definition="1" compartment="1" query_tag="CARD_QUERY_CHOOSE_CREATURE_TO_SACRIFICE" item_count="1" LKI_shield="1" />
    <COST_DEFINITION id="1">
    local filter = ClearFilter()
    filter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
    </COST_DEFINITION>
Then you can call EffectDC():Get_Targets(1):Get_CardPtr(0) from anywhere you want, anytime you want, and retrieve the creature's power from it. You don't need COST_DEFINITION if you use a generic cost, but if you follow my suggestion, then you need it.

As far as I know, your code shouldn't work because CANT_ATTACK_TEST is run only when you are selecting the attackers: once you have selected them, it's too late. Am I mistaken?
@Xander9009: can you confirm that CANT_ATTACK_TEST makes a further check when you already selected the attackers and warns you that your choice is illegal, just as menace and similar characteristics do? If it does, then this is new for me.
< Former DotP 2012/2013/2014 modder >
Currently busy with life...
User avatar
thefiremind
Programmer
 
Posts: 3515
Joined: 07 Nov 2011, 10:55
Has thanked: 118 times
Been thanked: 722 times

Re: Community Wad

Postby Xander9009 » 19 Nov 2016, 23:27

thefiremind wrote:
As far as I know, your code shouldn't work because CANT_ATTACK_TEST is run only when you are selecting the attackers: once you have selected them, it's too late. Am I mistaken?
@Xander9009: can you confirm that CANT_ATTACK_TEST makes a further check when you already selected the attackers and warns you that your choice is illegal, just as menace and similar characteristics do? If it does, then this is new for me.
I was just going by It was just a guess by me that the trigger be used. I wouldn't be surprised if it doesn't work, but yeah, I'll check it to be sure one way or another.

EDIT: Nope, doesn't work. So it'll need to be done some other way.
_______________________________
Community Wad - Community Wad Website - How to Help and Report Bugs
Discord: discord.gg/4AXvHzW
User avatar
Xander9009
Programmer
 
Posts: 2905
Joined: 29 Jun 2013, 07:44
Location: Indiana, United States
Has thanked: 121 times
Been thanked: 445 times

Re: Community Wad

Postby thefiremind » 19 Nov 2016, 23:38

Then the only way to code Master of Cruelties is by approximating it: at the beginning of combat you ask the player if they want to attack with Master of Cruelties; if yes, then give CHARACTERISTIC_CANT_ATTACK to the other creatures, otherwise give it to Master of Cruelties (until end of combat). Of course the opponent can do whatever they want after your choice and make you regret it, that's why I call it an approximation (and I don't like it very much :wink:).
< Former DotP 2012/2013/2014 modder >
Currently busy with life...
User avatar
thefiremind
Programmer
 
Posts: 3515
Joined: 07 Nov 2011, 10:55
Has thanked: 118 times
Been thanked: 722 times

Re: Community Wad

Postby Splinterverse » 20 Nov 2016, 11:28

Thanks for the feedback guys. I appreciate it!

thefiremind wrote:Then the only way to code Master of Cruelties is by approximating it: at the beginning of combat you ask the player if they want to attack with Master of Cruelties; if yes, then give CHARACTERISTIC_CANT_ATTACK to the other creatures, otherwise give it to Master of Cruelties (until end of combat). Of course the opponent can do whatever they want after your choice and make you regret it, that's why I call it an approximation (and I don't like it very much :wink:).
This is what I had suggested in the Impossible Cards thread, but I just think it leaves too much room for error with other cards. I think I will add it to the Impossible List for now. It can always be approximated that way later if someone wants to. (This will also apply to Errantry.)
---------------------------------------------
The DOTP2014 CW is updated nightly between 11 PM and 12 AM EST.
Known Issues/Bugs |
Impossible Cards List | Update Your Land Pools
Splinterverse
 
Posts: 918
Joined: 04 Sep 2016, 13:32
Has thanked: 150 times
Been thanked: 76 times

Re: Community Wad

Postby Splinterverse » 20 Nov 2016, 13:05

For Bronze Horse, can I use <TRIGGER value="BECAME_TARGET_OF_SPELL" simple_qualifier="self" /> to prevent the damage from the spell? I can't think of a way to check for whether the spell will do damage. It could be some other type of spell. I thought about using <TRIGGER value="OBJECT_TAKES_DAMAGE" simple_qualifier="self"> but that would not help if the spell was doing damage to all creatures (or target player's creatures etc.).
---------------------------------------------
The DOTP2014 CW is updated nightly between 11 PM and 12 AM EST.
Known Issues/Bugs |
Impossible Cards List | Update Your Land Pools
Splinterverse
 
Posts: 918
Joined: 04 Sep 2016, 13:32
Has thanked: 150 times
Been thanked: 76 times

PreviousNext

Return to 2014

Who is online

Users browsing this forum: No registered users and 5 guests

Main Menu

User Menu

Our Partners


Who is online

In total there are 5 users online :: 0 registered, 0 hidden and 5 guests (based on users active over the past 10 minutes)
Most users ever online was 7303 on 15 Jul 2025, 20:46

Users browsing this forum: No registered users and 5 guests

Login Form