Commit 74cbf991 authored by argon.sun's avatar argon.sun

fix

parent 973e13c2
......@@ -1607,7 +1607,7 @@ int32 card::is_can_be_special_summoned(effect * reason_effect, uint32 sumtype, u
int32 card::is_setable_mzone(uint8 playerid, uint8 ignore_count, effect* peffect) {
if(!(data.type & TYPE_MONSTER))
return FALSE;
if(is_status(STATUS_REVIVE_LIMIT))
if(status & (STATUS_REVIVE_LIMIT | STATUS_UNSUMMONABLE_CARD))
return FALSE;
if(current.location != LOCATION_HAND)
return FALSE;
......
......@@ -153,6 +153,7 @@ public:
#define EFFECT_FLAG_OWNER_RELATE 0x1000000 //
#define EFFECT_FLAG_AVAILABLE_BD 0x2000000 //
#define EFFECT_FLAG_CLIENT_HINT 0x4000000 //
#define EFFECT_FLAG_CHAIN_UNIQUE 0x8000000 //
//========== Codes ==========
#define EFFECT_IMMUNE_EFFECT 1 //
#define EFFECT_DISABLE 2 //
......
......@@ -507,7 +507,7 @@ public:
#define TIMING_TOHAND 0x200000
#define TIMING_TODECK 0x400000
#define TIMING_TOGRAVE 0x800000
#define TIMING_BATTLE_PHASE 0x1000000
//
#define PROCESSOR_NONE 0
#define PROCESSOR_WAITING 0x10000
......
......@@ -1136,14 +1136,21 @@ int32 field::summon(uint16 step, uint8 sumplayer, card* target, effect* proc, ui
core.phase_action = TRUE;
target->current.reason = REASON_SUMMON;
target->summon_player = sumplayer;
if(core.current_chain.size() > 1 || target->is_affected_by_effect(EFFECT_CANNOT_DISABLE_SUMMON)) {
core.units.begin()->step = 14;
if(core.current_chain.size() == 0) {
if(target->is_affected_by_effect(EFFECT_CANNOT_DISABLE_SUMMON))
core.units.begin()->step = 14;
return FALSE;
} else if(core.current_chain.size() == 0) {
core.units.begin()->step = 9;
} else if(core.current_chain.size() > 1) {
core.units.begin()->step = 14;
return FALSE;
} else {
if(target->is_affected_by_effect(EFFECT_CANNOT_DISABLE_SUMMON))
core.units.begin()->step = 15;
else
core.units.begin()->step = 10;
core.reserved = core.units.front();
return TRUE;
}
core.reserved = core.units.front();
return TRUE;
}
case 10: {
......@@ -1628,15 +1635,21 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card * target) {
target->set_status(STATUS_SUMMONING, TRUE);
target->set_status(STATUS_SUMMON_DISABLED, FALSE);
core.spsummoning_card = target;
if(core.current_chain.size() > 1 || target->is_affected_by_effect(EFFECT_CANNOT_DISABLE_SPSUMMON)) {
core.units.begin()->step = 14;
if(core.current_chain.size() == 0) {
if(target->is_affected_by_effect(EFFECT_CANNOT_DISABLE_SPSUMMON))
core.units.begin()->step = 14;
return FALSE;
} else if(core.current_chain.size() == 0) {
core.units.begin()->step = 9;
} else if(core.current_chain.size() > 1) {
core.units.begin()->step = 14;
return FALSE;
} else {
if(target->is_affected_by_effect(EFFECT_CANNOT_DISABLE_SPSUMMON))
core.units.begin()->step = 15;
else
core.units.begin()->step = 10;
core.reserved = core.units.front();
return TRUE;
}
core.reserved = core.units.front();
return TRUE;
}
case 10: {
pduel->write_buffer8(MSG_SPSUMMONING);
......
This diff is collapsed.
--ネコマネキング
function c11021521.initial_effect(c)
c:SetStatus(STATUS_UNSUMMONABLE_CARD,true)
--end turn
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(11021521,0))
......
......@@ -6,7 +6,7 @@ function c14087893.initial_effect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetHintTiming(TIMING_ATTACK,0x11c0)
e1:SetHintTiming(TIMING_BATTLE_PHASE,0x1c0+TIMING_BATTLE_PHASE)
e1:SetTarget(c14087893.target)
e1:SetOperation(c14087893.activate)
c:RegisterEffect(e1)
......
......@@ -40,7 +40,7 @@ function c48206762.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local tc=Duel.GetFirstTarget()
if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) then
if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK)==0 then return end
if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end
Duel.Equip(tp,c,tc)
--Add Equip limit
local e1=Effect.CreateEffect(tc)
......
--ライトロード·ビースト ウォルフ
function c58996430.initial_effect(c)
--cannot normal summon
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_CANNOT_SUMMON)
c:RegisterEffect(e1)
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetCode(EFFECT_CANNOT_MSET)
c:RegisterEffect(e2)
c:SetStatus(STATUS_UNSUMMONABLE_CARD,true)
--special summon
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F)
e3:SetCategory(CATEGORY_SPECIAL_SUMMON)
e3:SetDescription(aux.Stringid(58996430,0))
e3:SetCode(EVENT_TO_GRAVE)
e3:SetCondition(c58996430.condtion)
e3:SetTarget(c58996430.target)
e3:SetOperation(c58996430.operation)
c:RegisterEffect(e3)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F)
e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetDescription(aux.Stringid(58996430,0))
e1:SetCode(EVENT_TO_GRAVE)
e1:SetCondition(c58996430.condtion)
e1:SetTarget(c58996430.target)
e1:SetOperation(c58996430.operation)
c:RegisterEffect(e1)
end
function c58996430.condtion(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetPreviousLocation()==LOCATION_DECK
......
......@@ -40,7 +40,7 @@ function c74694807.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local tc=Duel.GetFirstTarget()
if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) then
if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK)==0 then return end
if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end
Duel.Equip(tp,c,tc)
--Add Equip limit
local e1=Effect.CreateEffect(tc)
......
......@@ -6,6 +6,7 @@ function c98045062.initial_effect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetHintTiming(TIMING_BATTLE_PHASE)
e1:SetCost(c98045062.cost)
e1:SetTarget(c98045062.target)
e1:SetOperation(c98045062.activate)
......
......@@ -236,6 +236,7 @@ EFFECT_FLAG_EVENT_PLAYER =0x800000 --
EFFECT_FLAG_OWNER_RELATE =0x1000000 --
EFFECT_FLAG_AVAILABLE_BD =0x2000000 --
EFFECT_FLAG_CLIENT_HINT =0x4000000 --
EFFECT_FLAG_CHAIN_UNIQUE =0x8000000 --
--========== Codes ==========
EFFECT_IMMUNE_EFFECT =1 --
EFFECT_DISABLE =2 --
......@@ -583,3 +584,4 @@ TIMING_REMOVE =0x100000
TIMING_TOHAND =0x200000
TIMING_TODECK =0x400000
TIMING_TOGRAVE =0x800000
TIMING_BATTLE_PHASE =0x1000000
\ No newline at end of file
......@@ -3,7 +3,7 @@
antialias = 2
nickname = Player
gamename = Game
lastdeck = sample
lastdeck = test
textfont = c:/windows/fonts/simsun.ttc 14
numfont = c:/windows/fonts/arialbd.ttf
serverport = 7911
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment