Commit a9787cb8 authored by VanillaSalt's avatar VanillaSalt

fix

parent e1ef38bc
......@@ -549,12 +549,12 @@ void ClientField::GetChainLocation(int controler, int location, int sequence, ir
switch((location & 0x7f)) {
case LOCATION_DECK: {
if (controler == 0) {
t->X = 7.3f;
t->Y = 2.9f;
t->X = (matManager.vFields[0].Pos.X + matManager.vFields[1].Pos.X) / 2;
t->Y = (matManager.vFields[0].Pos.Y + matManager.vFields[2].Pos.Y) / 2;
t->Z = deck[controler].size() * 0.01f + 0.03f;
} else {
t->X = 0.6f;
t->Y = -2.9f;
t->X = (matManager.vFields[68].Pos.X + matManager.vFields[69].Pos.X) / 2;
t->Y = (matManager.vFields[68].Pos.Y + matManager.vFields[70].Pos.Y) / 2;
t->Z = deck[controler].size() * 0.01f + 0.03f;
}
break;
......@@ -573,12 +573,12 @@ void ClientField::GetChainLocation(int controler, int location, int sequence, ir
}
case LOCATION_MZONE: {
if (controler == 0) {
t->X = 1.75f + 1.1f * sequence;
t->Y = 1.1f;
t->X = (matManager.vFields[16].Pos.X + matManager.vFields[17].Pos.X) / 2 + 1.1f * sequence;
t->Y = (matManager.vFields[16].Pos.Y + matManager.vFields[18].Pos.Y) / 2;
t->Z = 0.03f;
} else {
t->X = 6.15f - 1.1f * sequence;
t->Y = -1.1f;
t->X = (matManager.vFields[84].Pos.X + matManager.vFields[85].Pos.X) / 2 - 1.1f * sequence;
t->Y = (matManager.vFields[84].Pos.Y + matManager.vFields[86].Pos.Y) / 2;
t->Z = 0.03f;
}
break;
......@@ -586,38 +586,38 @@ void ClientField::GetChainLocation(int controler, int location, int sequence, ir
case LOCATION_SZONE: {
if (controler == 0) {
if (sequence <= 4) {
t->X = 1.75f + 1.1f * sequence;
t->Y = 2.3f;
t->X = (matManager.vFields[36].Pos.X + matManager.vFields[37].Pos.X) / 2 + 1.1f * sequence;
t->Y = (matManager.vFields[36].Pos.Y + matManager.vFields[38].Pos.Y) / 2;
t->Z = 0.03f;
} else if (sequence == 5) {
t->X = 0.6f;
t->Y = 1.7f;
t->X = (matManager.vFields[56].Pos.X + matManager.vFields[57].Pos.X) / 2;
t->Y = (matManager.vFields[56].Pos.Y + matManager.vFields[58].Pos.Y) / 2;
t->Z = 0.03f;
} else if (sequence == 6) {
t->X = -0.4f;
t->Y = 1.7f;
t->X = (matManager.vFields[60].Pos.X + matManager.vFields[61].Pos.X) / 2;
t->Y = (matManager.vFields[60].Pos.Y + matManager.vFields[62].Pos.Y) / 2;
t->Z = 0.03f;
} else {
t->X = 8.3f;
t->Y = 1.7f;
t->X = (matManager.vFields[64].Pos.X + matManager.vFields[65].Pos.X) / 2;
t->Y = (matManager.vFields[64].Pos.Y + matManager.vFields[66].Pos.Y) / 2;
t->Z = 0.03f;
}
} else {
if (sequence <= 4) {
t->X = 6.15f - 1.1f * sequence;
t->Y = -2.3f;
t->X = (matManager.vFields[104].Pos.X + matManager.vFields[105].Pos.X) / 2 - 1.1f * sequence;
t->Y = (matManager.vFields[104].Pos.Y + matManager.vFields[106].Pos.Y) / 2;
t->Z = 0.03f;
} else if (sequence == 5) {
t->X = 7.3f;
t->Y = -1.7f;
t->X = (matManager.vFields[124].Pos.X + matManager.vFields[125].Pos.X) / 2;
t->Y = (matManager.vFields[124].Pos.Y + matManager.vFields[126].Pos.Y) / 2;
t->Z = 0.03f;
} else if (sequence == 6) {
t->X = 8.3f;
t->Y = -1.7f;
t->X = (matManager.vFields[128].Pos.X + matManager.vFields[129].Pos.X) / 2;
t->Y = (matManager.vFields[128].Pos.Y + matManager.vFields[130].Pos.Y) / 2;
t->Z = 0.03f;
} else {
t->X = -0.4f;
t->Y = -1.7f;
t->X = (matManager.vFields[132].Pos.X + matManager.vFields[133].Pos.X) / 2;
t->Y = (matManager.vFields[132].Pos.Y + matManager.vFields[134].Pos.Y) / 2;
t->Z = 0.03f;
}
}
......@@ -625,24 +625,24 @@ void ClientField::GetChainLocation(int controler, int location, int sequence, ir
}
case LOCATION_GRAVE: {
if (controler == 0) {
t->X = 7.3f;
t->Y = 1.7f;
t->X = (matManager.vFields[4].Pos.X + matManager.vFields[5].Pos.X) / 2;
t->Y = (matManager.vFields[4].Pos.Y + matManager.vFields[6].Pos.Y) / 2;
t->Z = grave[controler].size() * 0.01f + 0.03f;
} else {
t->X = 0.6f;
t->Y = -1.7f;
t->X = (matManager.vFields[72].Pos.X + matManager.vFields[73].Pos.X) / 2;
t->Y = (matManager.vFields[72].Pos.Y + matManager.vFields[74].Pos.Y) / 2;
t->Z = grave[controler].size() * 0.01f + 0.03f;
}
break;
}
case LOCATION_REMOVED: {
if (controler == 0) {
t->X = 7.3f;
t->Y = 0.4f;
t->X = (matManager.vFields[12].Pos.X + matManager.vFields[13].Pos.X) / 2;
t->Y = (matManager.vFields[12].Pos.Y + matManager.vFields[14].Pos.Y) / 2;
t->Z = remove[controler].size() * 0.01f + 0.03f;
} else {
t->X = 0.6f;
t->Y = -0.4f;
t->X = (matManager.vFields[80].Pos.X + matManager.vFields[81].Pos.X) / 2;
t->Y = (matManager.vFields[80].Pos.Y + matManager.vFields[82].Pos.Y) / 2;
t->Z = remove[controler].size() * 0.01f + 0.03f;
}
break;
......@@ -656,8 +656,8 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
switch (location) {
case LOCATION_DECK: {
if (controler == 0) {
t->X = matManager.vFields[0].Pos.X - (matManager.vFields[0].Pos.X - matManager.vFields[1].Pos.X)/2;
t->Y = matManager.vFields[0].Pos.Y - (matManager.vFields[0].Pos.Y - matManager.vFields[3].Pos.Y)/2;
t->X = (matManager.vFields[0].Pos.X + matManager.vFields[1].Pos.X) / 2;
t->Y = (matManager.vFields[0].Pos.Y + matManager.vFields[2].Pos.Y) / 2;
t->Z = 0.01f + 0.01f * sequence;
if(deck_reversed == pcard->is_reversed) {
r->X = 0.0f;
......@@ -669,8 +669,8 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
r->Z = 0.0f;
}
} else {
t->X = matManager.vFields[68].Pos.X - (matManager.vFields[68].Pos.X - matManager.vFields[69].Pos.X)/2;//0.6f;
t->Y = matManager.vFields[68].Pos.Y - (matManager.vFields[68].Pos.Y - matManager.vFields[70].Pos.Y)/2;//-3.0f;
t->X = (matManager.vFields[68].Pos.X + matManager.vFields[69].Pos.X) / 2;
t->Y = (matManager.vFields[68].Pos.Y + matManager.vFields[70].Pos.Y) / 2;
t->Z = 0.01f + 0.01f * sequence;
if(deck_reversed == pcard->is_reversed) {
r->X = 0.0f;
......@@ -734,8 +734,8 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
}
case LOCATION_MZONE: {
if (controler == 0) {
t->X = (matManager.vFields[16].Pos.X - (matManager.vFields[16].Pos.X - matManager.vFields[17].Pos.X)/2) + 1.1f * sequence;
t->Y = matManager.vFields[16].Pos.Y - (matManager.vFields[16].Pos.Y - matManager.vFields[18].Pos.Y)/2;
t->X = (matManager.vFields[16].Pos.X + matManager.vFields[17].Pos.X) / 2 + 1.1f * sequence;
t->Y = (matManager.vFields[16].Pos.Y + matManager.vFields[18].Pos.Y) / 2;
t->Z = 0.01f;
if (pcard->position & POS_DEFENCE) {
r->X = 0.0f;
......@@ -751,8 +751,8 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
else r->Y = 0.0f;
}
} else {
t->X = (matManager.vFields[84].Pos.X - (matManager.vFields[84].Pos.X - matManager.vFields[85].Pos.X)/2) - 1.1f * sequence;
t->Y = matManager.vFields[84].Pos.Y - (matManager.vFields[84].Pos.Y - matManager.vFields[86].Pos.Y)/2;
t->X = (matManager.vFields[84].Pos.X + matManager.vFields[85].Pos.X) / 2 - 1.1f * sequence;
t->Y = (matManager.vFields[84].Pos.Y + matManager.vFields[86].Pos.Y) / 2;
t->Z = 0.01f;
if (pcard->position & POS_DEFENCE) {
r->X = 0.0f;
......@@ -773,20 +773,20 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
case LOCATION_SZONE: {
if (controler == 0) {
if (sequence <= 4) {
t->X = (matManager.vFields[36].Pos.X - (matManager.vFields[36].Pos.X - matManager.vFields[37].Pos.X)/2) + 1.1f * sequence;
t->Y = matManager.vFields[36].Pos.Y - (matManager.vFields[36].Pos.Y - matManager.vFields[38].Pos.Y)/2;
t->X = (matManager.vFields[36].Pos.X + matManager.vFields[37].Pos.X) / 2 + 1.1f * sequence;
t->Y = (matManager.vFields[36].Pos.Y + matManager.vFields[38].Pos.Y) / 2;
t->Z = 0.01f;
} else if (sequence == 5) {
t->X = matManager.vFields[56].Pos.X - (matManager.vFields[56].Pos.X - matManager.vFields[57].Pos.X)/2;
t->Y = matManager.vFields[56].Pos.Y - (matManager.vFields[56].Pos.Y - matManager.vFields[58].Pos.Y)/2;
t->X = (matManager.vFields[56].Pos.X + matManager.vFields[57].Pos.X) / 2;
t->Y = (matManager.vFields[56].Pos.Y + matManager.vFields[58].Pos.Y) / 2;
t->Z = 0.01f;
} else if (sequence == 6) {
t->X = matManager.vFields[60].Pos.X - (matManager.vFields[60].Pos.X - matManager.vFields[61].Pos.X)/2;
t->Y = matManager.vFields[60].Pos.Y - (matManager.vFields[60].Pos.Y - matManager.vFields[62].Pos.Y)/2;
t->X = (matManager.vFields[60].Pos.X + matManager.vFields[61].Pos.X) / 2;
t->Y = (matManager.vFields[60].Pos.Y + matManager.vFields[62].Pos.Y) / 2;
t->Z = 0.01f;
} else {
t->X = matManager.vFields[65].Pos.X - (matManager.vFields[65].Pos.X - matManager.vFields[66].Pos.X)/2;
t->Y = matManager.vFields[65].Pos.Y - (matManager.vFields[65].Pos.Y - matManager.vFields[67].Pos.Y)/2;
t->X = (matManager.vFields[64].Pos.X + matManager.vFields[65].Pos.X) / 2;
t->Y = (matManager.vFields[64].Pos.Y + matManager.vFields[66].Pos.Y) / 2;
t->Z = 0.01f;
}
r->X = 0.0f;
......@@ -796,20 +796,20 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
else r->Y = 0.0f;
} else {
if (sequence <= 4) {
t->X = (matManager.vFields[104].Pos.X - (matManager.vFields[104].Pos.X - matManager.vFields[105].Pos.X)/2) - 1.1f * sequence;
t->Y = matManager.vFields[104].Pos.Y - (matManager.vFields[104].Pos.Y - matManager.vFields[106].Pos.Y)/2;
t->X = (matManager.vFields[104].Pos.X + matManager.vFields[105].Pos.X) / 2 - 1.1f * sequence;
t->Y = (matManager.vFields[104].Pos.Y + matManager.vFields[106].Pos.Y) / 2;
t->Z = 0.01f;
} else if (sequence == 5) {
t->X = matManager.vFields[124].Pos.X - (matManager.vFields[124].Pos.X - matManager.vFields[125].Pos.X)/2;
t->Y = matManager.vFields[124].Pos.Y - (matManager.vFields[124].Pos.Y - matManager.vFields[126].Pos.Y)/2;
t->X = (matManager.vFields[124].Pos.X + matManager.vFields[125].Pos.X) / 2;
t->Y = (matManager.vFields[124].Pos.Y + matManager.vFields[126].Pos.Y) / 2;
t->Z = 0.01f;
} else if (sequence == 6) {
t->X = matManager.vFields[128].Pos.X - (matManager.vFields[128].Pos.X - matManager.vFields[129].Pos.X)/2;
t->Y = matManager.vFields[128].Pos.Y - (matManager.vFields[128].Pos.Y - matManager.vFields[130].Pos.Y)/2;
t->X = (matManager.vFields[128].Pos.X + matManager.vFields[129].Pos.X) / 2;
t->Y = (matManager.vFields[128].Pos.Y + matManager.vFields[130].Pos.Y) / 2;
t->Z = 0.01f;
} else {
t->X = matManager.vFields[132].Pos.X - (matManager.vFields[132].Pos.X - matManager.vFields[133].Pos.X)/2;//-0.4f;
t->Y = matManager.vFields[132].Pos.Y - (matManager.vFields[132].Pos.Y - matManager.vFields[134].Pos.Y)/2;//-1.7f;
t->X = (matManager.vFields[132].Pos.X + matManager.vFields[133].Pos.X) / 2;
t->Y = (matManager.vFields[132].Pos.Y + matManager.vFields[134].Pos.Y) / 2;
t->Z = 0.01f;
}
r->X = 0.0f;
......@@ -822,15 +822,15 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
}
case LOCATION_GRAVE: {
if (controler == 0) {
t->X = matManager.vFields[4].Pos.X - (matManager.vFields[4].Pos.X - matManager.vFields[5].Pos.X)/2;
t->Y = matManager.vFields[4].Pos.Y - (matManager.vFields[4].Pos.Y - matManager.vFields[6].Pos.Y)/2;
t->X = (matManager.vFields[4].Pos.X + matManager.vFields[5].Pos.X) / 2;
t->Y = (matManager.vFields[4].Pos.Y + matManager.vFields[6].Pos.Y) / 2;
t->Z = 0.01f + 0.01f * sequence;
r->X = 0.0f;
r->Y = 0.0f;
r->Z = 0.0f;
} else {
t->X = matManager.vFields[72].Pos.X - (matManager.vFields[72].Pos.X - matManager.vFields[73].Pos.X)/2;
t->Y = matManager.vFields[72].Pos.Y - (matManager.vFields[72].Pos.Y - matManager.vFields[74].Pos.Y)/2;
t->X = (matManager.vFields[72].Pos.X + matManager.vFields[73].Pos.X) / 2;
t->Y = (matManager.vFields[72].Pos.Y + matManager.vFields[74].Pos.Y) / 2;
t->Z = 0.01f + 0.01f * sequence;
r->X = 0.0f;
r->Y = 0.0f;
......@@ -840,8 +840,8 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
}
case LOCATION_REMOVED: {
if (controler == 0) {
t->X = matManager.vFields[12].Pos.X - (matManager.vFields[12].Pos.X - matManager.vFields[13].Pos.X)/2;
t->Y = matManager.vFields[12].Pos.Y - (matManager.vFields[12].Pos.Y - matManager.vFields[14].Pos.Y)/2;
t->X = (matManager.vFields[12].Pos.X + matManager.vFields[13].Pos.X) / 2;
t->Y = (matManager.vFields[12].Pos.Y + matManager.vFields[14].Pos.Y) / 2;
t->Z = 0.01f + 0.01f * sequence;
if(pcard->position & POS_FACEUP) {
r->X = 0.0f;
......@@ -853,8 +853,8 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
r->Z = 0.0f;
}
} else {
t->X = matManager.vFields[80].Pos.X - (matManager.vFields[80].Pos.X - matManager.vFields[81].Pos.X)/2;
t->Y = matManager.vFields[80].Pos.Y - (matManager.vFields[80].Pos.Y - matManager.vFields[82].Pos.Y)/2;
t->X = (matManager.vFields[80].Pos.X + matManager.vFields[81].Pos.X) / 2;
t->Y = (matManager.vFields[80].Pos.Y + matManager.vFields[82].Pos.Y) / 2;
t->Z = 0.01f + 0.01f * sequence;
if(pcard->position & POS_FACEUP) {
r->X = 0.0f;
......@@ -870,8 +870,8 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
}
case LOCATION_EXTRA: {
if (controler == 0) {
t->X = matManager.vFields[8].Pos.X - (matManager.vFields[8].Pos.X - matManager.vFields[9].Pos.X)/2;
t->Y = matManager.vFields[8].Pos.Y - (matManager.vFields[8].Pos.Y - matManager.vFields[10].Pos.Y)/2;
t->X = (matManager.vFields[8].Pos.X + matManager.vFields[9].Pos.X) / 2;
t->Y = (matManager.vFields[8].Pos.Y + matManager.vFields[10].Pos.Y) / 2;
t->Z = 0.01f + 0.01f * sequence;
r->X = 0.0f;
if(pcard->position & POS_FACEUP)
......@@ -879,8 +879,8 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
else r->Y = 3.1415926f;
r->Z = 0.0f;
} else {
t->X = matManager.vFields[76].Pos.X - (matManager.vFields[76].Pos.X - matManager.vFields[77].Pos.X)/2;
t->Y = matManager.vFields[76].Pos.Y - (matManager.vFields[76].Pos.Y - matManager.vFields[78].Pos.Y)/2;
t->X = (matManager.vFields[76].Pos.X + matManager.vFields[77].Pos.X) / 2;
t->Y = (matManager.vFields[76].Pos.Y + matManager.vFields[78].Pos.Y) / 2;
t->Z = 0.01f * sequence;
r->X = 0.0f;
if(pcard->position & POS_FACEUP)
......@@ -896,15 +896,15 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
}
int oseq = pcard->overlayTarget->sequence;
if (pcard->overlayTarget->controler == 0) {
t->X = (matManager.vFields[16].Pos.X - (matManager.vFields[16].Pos.X - matManager.vFields[17].Pos.X)/2) + 1.1f * oseq - 0.12f + 0.06f * sequence;//1.75f + 1.1f * oseq - 0.12f + 0.06f * sequence;
t->Y = matManager.vFields[16].Pos.Y - (matManager.vFields[16].Pos.Y - matManager.vFields[18].Pos.Y)/2 + 0.05f;//1.15f;
t->X = (matManager.vFields[16].Pos.X + matManager.vFields[17].Pos.X) / 2 + 1.1f * oseq - 0.12f + 0.06f * sequence;
t->Y = (matManager.vFields[16].Pos.Y + matManager.vFields[18].Pos.Y) / 2 + 0.05f;
t->Z = 0.005f + pcard->sequence * 0.0001f;
r->X = 0.0f;
r->Y = 0.0f;
r->Z = 0.0f;
} else {
t->X = (matManager.vFields[84].Pos.X - (matManager.vFields[84].Pos.X - matManager.vFields[85].Pos.X)/2) - 1.1f * oseq + 0.12f - 0.06f * sequence; //6.15f - 1.1f * oseq + 0.12f - 0.06f * sequence;
t->Y = matManager.vFields[84].Pos.Y - (matManager.vFields[84].Pos.Y - matManager.vFields[86].Pos.Y)/2 - 0.05f;//-1.15f;
t->X = (matManager.vFields[84].Pos.X + matManager.vFields[85].Pos.X) / 2 - 1.1f * oseq + 0.12f - 0.06f * sequence;
t->Y = (matManager.vFields[84].Pos.Y + matManager.vFields[86].Pos.Y) / 2 - 0.05f;
t->Z = 0.005f + pcard->sequence * 0.0001f;
r->X = 0.0f;
r->Y = 0.0f;
......
......@@ -2072,6 +2072,8 @@ int32 card::is_capable_cost_to_grave(uint8 playerid) {
uint32 dest = LOCATION_GRAVE;
if(data.type & TYPE_TOKEN)
return FALSE;
if((data.type & TYPE_PENDULUM) && (current.location & LOCATION_ONFIELD))
return FALSE;
if(current.location == LOCATION_GRAVE)
return FALSE;
if(is_affected_by_effect(EFFECT_CANNOT_USE_AS_COST))
......
......@@ -143,7 +143,9 @@ void field::add_card(uint8 playerid, card* pcard, uint8 location, uint8 sequence
location = LOCATION_EXTRA;
pcard->operation_param = (pcard->operation_param & 0x00ffffff) | (POS_FACEDOWN_DEFENCE << 24);
}
if ((pcard->data.type & TYPE_PENDULUM) && (location == LOCATION_GRAVE) && (pcard->previous.location & LOCATION_ONFIELD) && !pcard->is_status(STATUS_SUMMON_DISABLED)) {
if ((pcard->data.type & TYPE_PENDULUM) && (location == LOCATION_GRAVE)
&& (((pcard->previous.location & LOCATION_MZONE) && !pcard->is_status(STATUS_SUMMON_DISABLED))
|| ((pcard->previous.location & LOCATION_SZONE) && !pcard->is_status(STATUS_ACTIVATE_DISABLED)))) {
location = LOCATION_EXTRA;
pcard->operation_param = (pcard->operation_param & 0x00ffffff) | (POS_FACEUP_DEFENCE << 24);
}
......
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