Commit d9224825 authored by VanillaSalt's avatar VanillaSalt

fix

parent 1957cbc7
......@@ -1507,11 +1507,11 @@ void ClientField::GetHoverField(int x, int y) {
irr::core::position2di pos(x, y);
if(sfRect.isPointInside(pos)) {
int hc = hand[0].size();
int cardSize = 66;
int cardSpace = 10;
if(hc == 0)
hovered_location = 0;
else if(hc < 7) {
int cardSize = 66;
int cardSpace = 10;
int left = sfRect.UpperLeftCorner.X + (cardSize + cardSpace) * (6 - hc) / 2;
if(x < left)
hovered_location = 0;
......@@ -1527,18 +1527,18 @@ void ClientField::GetHoverField(int x, int y) {
} else {
hovered_controler = 0;
hovered_location = LOCATION_HAND;
if(x >= 804)
if(x >= sfRect.UpperLeftCorner.X + (cardSize + cardSpace) * 5)
hovered_sequence = hc - 1;
else
hovered_sequence = (x - sfRect.UpperLeftCorner.X) * (hc - 1) / 393;
hovered_sequence = (x - sfRect.UpperLeftCorner.X) * (hc - 1) / ((cardSize + cardSpace) * 5);
}
} else if(ofRect.isPointInside(pos)) {
int hc = hand[1].size();
int cardSize = 39;
int cardSpace = 7;
if(hc == 0)
hovered_location = 0;
else if(hc < 7) {
int cardSize = 39;
int cardSpace = 7;
int left = ofRect.UpperLeftCorner.X + (cardSize + cardSpace) * (6 - hc) / 2;
if(x < left)
hovered_location = 0;
......@@ -1554,10 +1554,10 @@ void ClientField::GetHoverField(int x, int y) {
} else {
hovered_controler = 1;
hovered_location = LOCATION_HAND;
if(x >= 748)
if(x >= ofRect.UpperLeftCorner.X + (cardSize + cardSpace) * 5)
hovered_sequence = 0;
else
hovered_sequence = hc - 1 - (x - ofRect.UpperLeftCorner.X) * (hc - 1) / 247;
hovered_sequence = hc - 1 - (x - ofRect.UpperLeftCorner.X) * (hc - 1) / ((cardSize + cardSpace) * 5);
}
} else {
double screenx = x / 1024.0 * 1.35 - 0.90;
......
......@@ -1293,20 +1293,20 @@ void field::get_xyz_material(card* scard, int32 findex, int32 maxc) {
cv.push_back(pcard);
}
if(core.global_flag & GLOBALFLAG_XMAT_COUNT_LIMIT) {
for(auto pcard = cv.begin(); pcard != cv.end(); ++pcard) {
effect* peffect = (*pcard)->is_affected_by_effect(EFFECT_XMAT_COUNT_LIMIT);
for(auto cit = cv.begin(); cit != cv.end(); ++cit) {
effect* peffect = (*cit)->is_affected_by_effect(EFFECT_XMAT_COUNT_LIMIT);
if(peffect) {
int32 v = peffect->get_value();
core.xmaterial_lst.insert(std::make_pair(v, *pcard));
core.xmaterial_lst.insert(std::make_pair(v, *cit));
} else
core.xmaterial_lst.insert(std::make_pair(0, *pcard));
core.xmaterial_lst.insert(std::make_pair(0, *cit));
}
auto iter = core.xmaterial_lst.begin();
while((iter != core.xmaterial_lst.end()) && ((iter->first > core.xmaterial_lst.size()) || (iter->first > maxc)))
core.xmaterial_lst.erase(iter++);
} else {
for(auto pcard = cv.begin(); pcard != cv.end(); ++pcard)
core.xmaterial_lst.insert(std::make_pair(0, *pcard));
for(auto cit = cv.begin(); cit != cv.end(); ++cit)
core.xmaterial_lst.insert(std::make_pair(0, *cit));
}
}
void field::get_overlay_group(uint8 self, uint8 s, uint8 o, card_set* pset) {
......@@ -1680,25 +1680,25 @@ int32 field::check_xyz_material(card* scard, int32 findex, int32 min, int32 max,
if(mg) {
card_vector cv;
core.xmaterial_lst.clear();
for (auto pcard = mg->container.begin(); pcard != mg->container.end(); ++pcard) {
if(pduel->lua->check_matching(*pcard, findex, 0))
cv.push_back(*pcard);
for (auto cit = mg->container.begin(); cit != mg->container.end(); ++cit) {
if(pduel->lua->check_matching(*cit, findex, 0))
cv.push_back(*cit);
}
if(core.global_flag & GLOBALFLAG_XMAT_COUNT_LIMIT) {
for(auto pcard = cv.begin(); pcard != cv.end(); ++pcard) {
effect* peffect = (*pcard)->is_affected_by_effect(EFFECT_XMAT_COUNT_LIMIT);
for(auto cit = cv.begin(); cit != cv.end(); ++cit) {
effect* peffect = (*cit)->is_affected_by_effect(EFFECT_XMAT_COUNT_LIMIT);
if(peffect) {
int32 v = peffect->get_value();
core.xmaterial_lst.insert(std::make_pair(v, *pcard));
core.xmaterial_lst.insert(std::make_pair(v, *cit));
} else
core.xmaterial_lst.insert(std::make_pair(0, *pcard));
core.xmaterial_lst.insert(std::make_pair(0, *cit));
}
auto iter = core.xmaterial_lst.begin();
while((iter != core.xmaterial_lst.end()) && ((iter->first > core.xmaterial_lst.size()) || (iter->first > max)))
core.xmaterial_lst.erase(iter++);
} else {
for(auto pcard = cv.begin(); pcard != cv.end(); ++pcard)
core.xmaterial_lst.insert(std::make_pair(0, *pcard));
for(auto cit = cv.begin(); cit != cv.end(); ++cit)
core.xmaterial_lst.insert(std::make_pair(0, *cit));
}
} else {
pduel->game_field->get_xyz_material(scard, findex, max);
......
......@@ -4055,7 +4055,7 @@ int32 field::select_xyz_material(int16 step, uint8 playerid, card* scard, int32
return TRUE;
}
core.select_cards.clear();
for(auto iter = core.xmaterial_lst.begin(); iter != core.xmaterial_lst.end(); iter++)
for(auto iter = core.xmaterial_lst.begin(); iter != core.xmaterial_lst.end(); ++iter)
core.select_cards.push_back(iter->second);
int maxv = core.xmaterial_lst.begin()->first;
pduel->write_buffer8(MSG_HINT);
......@@ -4072,8 +4072,8 @@ int32 field::select_xyz_material(int16 step, uint8 playerid, card* scard, int32
}
case 5: {
group* pgroup = pduel->new_group();
for(auto pcard = core.operated_set.begin(); pcard != core.operated_set.end(); ++pcard)
pgroup->container.insert(*pcard);
for(auto cit = core.operated_set.begin(); cit != core.operated_set.end(); ++cit)
pgroup->container.insert(*cit);
for(int32 i = 0; i < returns.bvalue[0]; ++i) {
card* pcard = core.select_cards[returns.bvalue[i + 1]];
pgroup->container.insert(pcard);
......
......@@ -3322,9 +3322,11 @@ int32 field::process_battle_command(uint16 step) {
card* reason_card = 0;
uint8 bd[2] = {FALSE};
core.attacker->set_status(STATUS_BATTLE_DESTROYED, FALSE);
effect* defattack = core.attacker->is_affected_by_effect(EFFECT_DEFENCE_ATTACK);
if(defattack && defattack->get_value(core.attacker) == 1)
a = ad;
if(core.attacker->is_position(POS_FACEUP_DEFENCE)) {
effect* defattack = core.attacker->is_affected_by_effect(EFFECT_DEFENCE_ATTACK);
if(defattack && defattack->get_value(core.attacker) == 1)
a = ad;
}
if(core.attack_target) {
da = core.attack_target->get_attack();
dd = core.attack_target->get_defence();
......
......@@ -67,8 +67,8 @@ function c19748583.eqlimit(e,c)
end
function c19748583.reptg(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
if chk==0 then return bit.band(r,REASON_EFFECT)~=0 and c:GetEquipTarget():IsAttribute(ATTRIBUTE_LIGHT)
and not e:GetHandler():IsStatus(STATUS_DESTROY_CONFIRMED) end
if chk==0 then return bit.band(r,REASON_EFFECT)~=0 and c:GetEquipTarget():IsAttribute(ATTRIBUTE_LIGHT)
and not e:GetHandler():IsStatus(STATUS_DESTROY_CONFIRMED) end
return Duel.SelectYesNo(e:GetOwnerPlayer(),aux.Stringid(19748583,1))
end
function c19748583.repop(e,tp,eg,ep,ev,re,r,rp)
......
......@@ -31,6 +31,7 @@ function c26493435.initial_effect(c)
e5:SetCategory(CATEGORY_SPECIAL_SUMMON)
e5:SetType(EFFECT_TYPE_IGNITION)
e5:SetRange(LOCATION_SZONE)
e5:SetCountLimit(1)
e5:SetCost(c26493435.spcost)
e5:SetTarget(c26493435.sptg)
e5:SetOperation(c26493435.spop)
......
......@@ -40,7 +40,6 @@ function c50474354.cost(e,tp,eg,ep,ev,re,r,rp,chk)
e1:SetTargetRange(1,0)
e1:SetValue(c50474354.aclimit)
e1:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterFlagEffect(tp,50474354,RESET_PHASE+PHASE_END,0,1)
Duel.RegisterEffect(e1,tp)
end
function c50474354.aclimit(e,re,tp)
......
......@@ -18,6 +18,7 @@ function c8310162.initial_effect(c)
--selfdes
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e2:SetCode(EFFECT_SELF_DESTROY)
e2:SetRange(LOCATION_MZONE)
e2:SetCondition(c8310162.descon)
......
......@@ -32,7 +32,6 @@ function c83755611.initial_effect(c)
e3:SetTarget(c83755611.destg)
e3:SetOperation(c83755611.desop)
c:RegisterEffect(e3)
end
function c83755611.matcheck(e,c)
local ct=c:GetMaterial():Filter(Card.IsRace,nil,RACE_PHANTOMDRAGON):GetClassCount(Card.GetOriginalAttribute)
......
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