Commit 2b31bb07 authored by salix5's avatar salix5
parent 49ba5e3c
...@@ -505,7 +505,7 @@ int32 card::get_base_attack() { ...@@ -505,7 +505,7 @@ int32 card::get_base_attack() {
if(swap) if(swap)
filter_effect(EFFECT_SET_BASE_DEFENSE, &eset, FALSE); filter_effect(EFFECT_SET_BASE_DEFENSE, &eset, FALSE);
eset.sort(); eset.sort();
// calculate continous effects of this first // calculate continuous effects of this first
for(int32 i = 0; i < eset.size();) { for(int32 i = 0; i < eset.size();) {
if((eset[i]->type & EFFECT_TYPE_SINGLE) && eset[i]->is_flag(EFFECT_FLAG_SINGLE_RANGE)) { if((eset[i]->type & EFFECT_TYPE_SINGLE) && eset[i]->is_flag(EFFECT_FLAG_SINGLE_RANGE)) {
switch(eset[i]->code) { switch(eset[i]->code) {
...@@ -892,31 +892,22 @@ uint32 card::get_level() { ...@@ -892,31 +892,22 @@ uint32 card::get_level() {
effect_set effects; effect_set effects;
int32 level = data.level; int32 level = data.level;
temp.level = level; temp.level = level;
int32 up = 0, upc = 0; int32 up = 0;
filter_effect(EFFECT_UPDATE_LEVEL, &effects, FALSE); filter_effect(EFFECT_UPDATE_LEVEL, &effects, FALSE);
filter_effect(EFFECT_CHANGE_LEVEL, &effects, FALSE); filter_effect(EFFECT_CHANGE_LEVEL, &effects);
filter_effect(EFFECT_CHANGE_LEVEL_FINAL, &effects);
for (int32 i = 0; i < effects.size(); ++i) { for (int32 i = 0; i < effects.size(); ++i) {
switch (effects[i]->code) { switch (effects[i]->code) {
case EFFECT_UPDATE_LEVEL: case EFFECT_UPDATE_LEVEL:
if ((effects[i]->type & EFFECT_TYPE_SINGLE) && !effects[i]->is_flag(EFFECT_FLAG_SINGLE_RANGE)) up += effects[i]->get_value(this);
up += effects[i]->get_value(this);
else
upc += effects[i]->get_value(this);
break; break;
case EFFECT_CHANGE_LEVEL: case EFFECT_CHANGE_LEVEL:
level = effects[i]->get_value(this); level = effects[i]->get_value(this);
up = 0; up = 0;
break; break;
case EFFECT_CHANGE_LEVEL_FINAL:
level = effects[i]->get_value(this);
up = 0;
upc = 0;
break;
} }
temp.level = level + up + upc; temp.level = level + up;
} }
level += up + upc; level += up;
if(level < 1 && (get_type() & TYPE_MONSTER)) if(level < 1 && (get_type() & TYPE_MONSTER))
level = 1; level = 1;
temp.level = 0xffffffff; temp.level = 0xffffffff;
...@@ -934,31 +925,22 @@ uint32 card::get_rank() { ...@@ -934,31 +925,22 @@ uint32 card::get_rank() {
effect_set effects; effect_set effects;
int32 rank = data.level; int32 rank = data.level;
temp.level = rank; temp.level = rank;
int32 up = 0, upc = 0; int32 up = 0;
filter_effect(EFFECT_UPDATE_RANK, &effects, FALSE); filter_effect(EFFECT_UPDATE_RANK, &effects, FALSE);
filter_effect(EFFECT_CHANGE_RANK, &effects, FALSE); filter_effect(EFFECT_CHANGE_RANK, &effects);
filter_effect(EFFECT_CHANGE_RANK_FINAL, &effects);
for (int32 i = 0; i < effects.size(); ++i) { for (int32 i = 0; i < effects.size(); ++i) {
switch (effects[i]->code) { switch (effects[i]->code) {
case EFFECT_UPDATE_RANK: case EFFECT_UPDATE_RANK:
if ((effects[i]->type & EFFECT_TYPE_SINGLE) && !effects[i]->is_flag(EFFECT_FLAG_SINGLE_RANGE)) up += effects[i]->get_value(this);
up += effects[i]->get_value(this);
else
upc += effects[i]->get_value(this);
break; break;
case EFFECT_CHANGE_RANK: case EFFECT_CHANGE_RANK:
rank = effects[i]->get_value(this); rank = effects[i]->get_value(this);
up = 0; up = 0;
break; break;
case EFFECT_CHANGE_RANK_FINAL:
rank = effects[i]->get_value(this);
up = 0;
upc = 0;
break;
} }
temp.level = rank + up + upc; temp.level = rank + up;
} }
rank += up + upc; rank += up;
if(rank < 1 && (get_type() & TYPE_MONSTER)) if(rank < 1 && (get_type() & TYPE_MONSTER))
rank = 1; rank = 1;
temp.level = 0xffffffff; temp.level = 0xffffffff;
...@@ -2745,7 +2727,7 @@ effect* card::is_affected_by_effect(int32 code, card* target) { ...@@ -2745,7 +2727,7 @@ effect* card::is_affected_by_effect(int32 code, card* target) {
} }
return 0; return 0;
} }
// return the last control-changing continous effect // return the last control-changing continuous effect
effect* card::check_control_effect() { effect* card::check_control_effect() {
effect* ret_effect = 0; effect* ret_effect = 0;
for (auto& pcard : equiping_cards) { for (auto& pcard : equiping_cards) {
......
...@@ -407,8 +407,8 @@ inline effect_flag operator|(effect_flag flag1, effect_flag flag2) ...@@ -407,8 +407,8 @@ inline effect_flag operator|(effect_flag flag1, effect_flag flag2)
#define EFFECT_QP_ACT_IN_NTPHAND 311 #define EFFECT_QP_ACT_IN_NTPHAND 311
#define EFFECT_MUST_BE_SMATERIAL 312 #define EFFECT_MUST_BE_SMATERIAL 312
#define EFFECT_TO_GRAVE_REDIRECT_CB 313 #define EFFECT_TO_GRAVE_REDIRECT_CB 313
#define EFFECT_CHANGE_LEVEL_FINAL 314 //#define EFFECT_CHANGE_LEVEL_FINAL 314
#define EFFECT_CHANGE_RANK_FINAL 315 //#define EFFECT_CHANGE_RANK_FINAL 315
#define EFFECT_MUST_BE_FMATERIAL 316 #define EFFECT_MUST_BE_FMATERIAL 316
#define EFFECT_MUST_BE_XMATERIAL 317 #define EFFECT_MUST_BE_XMATERIAL 317
#define EFFECT_MUST_BE_LMATERIAL 318 #define EFFECT_MUST_BE_LMATERIAL 318
......
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