name: Jormungardr
card_text: Cannot be Normal Summoned/Set. If an "Aesir" monster is on the field, you can Special Summon this card (from your hand) to your opponent's side of the field in Defense Position. If an "Aesir" monster is not on the field, destroy this card. If this face-up Defense Position card you control is changed to face-up Attack Position: Take 3000 damage. This effect can only be used once while this card is face-up on the field.
external_ids: local SETCARD_ID_0 = 0x4b --Aesir
  
lua: local SETCARD_ID_0 = 0x4b --Aesir
  local s, id, o = GetID()
  function s.initial_effect(c)
  	c:EnableReviveLimit()
  	--special summon
  	local e1 = Effect.CreateEffect(c)
  	e1:SetDescription(aux.Stringid(id, 0))
  	e1:SetType(EFFECT_TYPE_FIELD)
  	e1:SetCode(EFFECT_SPSUMMON_PROC)
  	e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE + EFFECT_FLAG_UNCOPYABLE + EFFECT_FLAG_SPSUM_PARAM)
  	e1:SetRange(LOCATION_HAND)
  	e1:SetTargetRange(POS_FACEUP_DEFENSE, 1)
  	e1:SetCondition(s.spcon)
  	c:RegisterEffect(e1)
  	--self destory
  	local e4 = Effect.CreateEffect(c)
  	e4:SetType(EFFECT_TYPE_SINGLE)
  	e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
  	e4:SetRange(LOCATION_MZONE)
  	e4:SetCode(EFFECT_SELF_DESTROY)
  	e4:SetCondition(s.descon)
  	c:RegisterEffect(e4)
  	--damage
  	local e5 = Effect.CreateEffect(c)
  	e5:SetDescription(aux.Stringid(id, 1))
  	e5:SetCategory(CATEGORY_DAMAGE)
  	e5:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_TRIGGER_F)
  	e5:SetProperty(EFFECT_FLAG_NO_TURN_RESET)
  	e5:SetCode(EVENT_CHANGE_POS)
  	e5:SetCountLimit(1)
  	e5:SetCondition(s.damcon)
  	e5:SetTarget(s.damtg)
  	e5:SetOperation(s.damop)
  	c:RegisterEffect(e5)
  end
  function s.spcon(e, c)
  	if c == nil then
  		return true
  	end
  	local tp = c:GetControler()
  	return Duel.GetLocationCount(1 - tp, LOCATION_MZONE) > 0 and Duel.IsExistingMatchingCard(s.filter, tp, LOCATION_MZONE, LOCATION_MZONE, 1, nil)
  end
  function s.filter(c)
  	return c:IsFaceup() and c:IsSetCard(SETCARD_ID_0)
  end
  function s.descon(e)
  	return not Duel.IsExistingMatchingCard(s.filter, 0, LOCATION_MZONE, LOCATION_MZONE, 1, nil)
  end
  function s.damcon(e, tp, eg, ep, ev, re, r, rp)
  	return e:GetHandler():IsPosition(POS_FACEUP_ATTACK) and e:GetHandler():IsPreviousPosition(POS_FACEUP_DEFENSE)
  end
  function s.damtg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return true
  	end
  	Duel.SetTargetPlayer(tp)
  	Duel.SetTargetParam(3000)
  	Duel.SetOperationInfo(0, CATEGORY_DAMAGE, nil, 0, tp, 3000)
  end
  function s.damop(e, tp, eg, ep, ev, re, r, rp)
  	local p, d = Duel.GetChainInfo(0, CHAININFO_TARGET_PLAYER, CHAININFO_TARGET_PARAM)
  	Duel.Damage(p, d, REASON_EFFECT)
  end
  
  
source_text: Jormungardr
  Cannot be Normal Summoned/Set. If an "Aesir" monster is on the field, you can Special Summon this card (from your hand) to your opponent's side of the field in Defense Position. If an "Aesir" monster is not on the field, destroy this card. If this face-up Defense Position card you control is changed to face-up Attack Position: Take 3000 damage. This effect can only be used once while this card is face-up on the field.
target_text: -- Jormungardr
  local SETCARD_ID_0 = 0x4b --Aesir
  local s, id, o = GetID()
  function s.initial_effect(c)
  	c:EnableReviveLimit()
  	--special summon
  	local e1 = Effect.CreateEffect(c)
  	e1:SetDescription(aux.Stringid(id, 0))
  	e1:SetType(EFFECT_TYPE_FIELD)
  	e1:SetCode(EFFECT_SPSUMMON_PROC)
  	e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE + EFFECT_FLAG_UNCOPYABLE + EFFECT_FLAG_SPSUM_PARAM)
  	e1:SetRange(LOCATION_HAND)
  	e1:SetTargetRange(POS_FACEUP_DEFENSE, 1)
  	e1:SetCondition(s.spcon)
  	c:RegisterEffect(e1)
  	--self destory
  	local e4 = Effect.CreateEffect(c)
  	e4:SetType(EFFECT_TYPE_SINGLE)
  	e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
  	e4:SetRange(LOCATION_MZONE)
  	e4:SetCode(EFFECT_SELF_DESTROY)
  	e4:SetCondition(s.descon)
  	c:RegisterEffect(e4)
  	--damage
  	local e5 = Effect.CreateEffect(c)
  	e5:SetDescription(aux.Stringid(id, 1))
  	e5:SetCategory(CATEGORY_DAMAGE)
  	e5:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_TRIGGER_F)
  	e5:SetProperty(EFFECT_FLAG_NO_TURN_RESET)
  	e5:SetCode(EVENT_CHANGE_POS)
  	e5:SetCountLimit(1)
  	e5:SetCondition(s.damcon)
  	e5:SetTarget(s.damtg)
  	e5:SetOperation(s.damop)
  	c:RegisterEffect(e5)
  end
  function s.spcon(e, c)
  	if c == nil then
  		return true
  	end
  	local tp = c:GetControler()
  	return Duel.GetLocationCount(1 - tp, LOCATION_MZONE) > 0 and Duel.IsExistingMatchingCard(s.filter, tp, LOCATION_MZONE, LOCATION_MZONE, 1, nil)
  end
  function s.filter(c)
  	return c:IsFaceup() and c:IsSetCard(SETCARD_ID_0)
  end
  function s.descon(e)
  	return not Duel.IsExistingMatchingCard(s.filter, 0, LOCATION_MZONE, LOCATION_MZONE, 1, nil)
  end
  function s.damcon(e, tp, eg, ep, ev, re, r, rp)
  	return e:GetHandler():IsPosition(POS_FACEUP_ATTACK) and e:GetHandler():IsPreviousPosition(POS_FACEUP_DEFENSE)
  end
  function s.damtg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return true
  	end
  	Duel.SetTargetPlayer(tp)
  	Duel.SetTargetParam(3000)
  	Duel.SetOperationInfo(0, CATEGORY_DAMAGE, nil, 0, tp, 3000)
  end
  function s.damop(e, tp, eg, ep, ev, re, r, rp)
  	local p, d = Duel.GetChainInfo(0, CHAININFO_TARGET_PLAYER, CHAININFO_TARGET_PARAM)
  	Duel.Damage(p, d, REASON_EFFECT)
  end
  
  