Commit b8ca2d52 authored by salix5's avatar salix5

EVENT_RETURN_TO_GRAVE

parent 4a96c756
......@@ -440,6 +440,7 @@ public:
#define EVENT_LEVEL_UP 1200
#define EVENT_PAY_LPCOST 1201
#define EVENT_DETACH_MATERIAL 1202
#define EVENT_RETURN_TO_GRAVE 1203
#define EVENT_TURN_END 1210
#define EVENT_PHASE 0x1000
#define EVENT_PHASE_START 0x2000
......
......@@ -3346,7 +3346,7 @@ int32 field::send_to(uint16 step, group * targets, effect * reason_effect, uint3
targets = param->targets;
delete param;
uint8 nloc;
card_set tohand, todeck, tograve, remove, released, destroyed;
card_set tohand, todeck, tograve, remove, released, destroyed, retgrave;
card_set equipings, overlays;
for(auto cit = targets->container.begin(); cit != targets->container.end(); ++cit) {
card* pcard = *cit;
......@@ -3371,10 +3371,16 @@ int32 field::send_to(uint16 step, group * targets, effect * reason_effect, uint3
todeck.insert(pcard);
pcard->reset(RESET_TODECK, RESET_EVENT);
raise_single_event(pcard, 0, EVENT_TO_DECK, pcard->current.reason_effect, pcard->current.reason, pcard->current.reason_player, 0, 0);
} else if(nloc == LOCATION_GRAVE && !(pcard->current.reason & REASON_RETURN)) {
tograve.insert(pcard);
} else if(nloc == LOCATION_GRAVE) {
pcard->reset(RESET_TOGRAVE, RESET_EVENT);
raise_single_event(pcard, 0, EVENT_TO_GRAVE, pcard->current.reason_effect, pcard->current.reason, pcard->current.reason_player, 0, 0);
if(pcard->current.reason & REASON_RETURN) {
retgrave.insert(pcard);
raise_single_event(pcard, 0, EVENT_RETURN_TO_GRAVE, pcard->current.reason_effect, pcard->current.reason, pcard->current.reason_player, 0, 0);
}
else {
tograve.insert(pcard);
raise_single_event(pcard, 0, EVENT_TO_GRAVE, pcard->current.reason_effect, pcard->current.reason, pcard->current.reason_player, 0, 0);
}
}
}
if(nloc == LOCATION_REMOVED || ((pcard->data.type & TYPE_TOKEN) && ((pcard->operation_param >> 8) & 0xff) == LOCATION_REMOVED)) {
......@@ -3410,6 +3416,8 @@ int32 field::send_to(uint16 step, group * targets, effect * reason_effect, uint3
raise_event(&released, EVENT_RELEASE, reason_effect, reason, reason_player, 0, 0);
if(destroyed.size())
raise_event(&destroyed, EVENT_DESTROYED, reason_effect, reason, reason_player, 0, 0);
if(retgrave.size())
raise_event(&retgrave, EVENT_RETURN_TO_GRAVE, reason_effect, reason, reason_player, 0, 0);
process_single_event();
process_instant_event();
if(equipings.size())
......
......@@ -484,7 +484,7 @@ EVENT_DESTROY =1010 --破坏时
EVENT_REMOVE =1011 --除外时
EVENT_TO_HAND =1012 --加入手牌时
EVENT_TO_DECK =1013 --回卡组时
EVENT_TO_GRAVE =1014 --进墓地时
EVENT_TO_GRAVE =1014 --进墓地时(不含REASON_RETURN)
EVENT_LEAVE_FIELD =1015 --离场时
EVENT_CHANGE_POS =1016 --表示形式变更时
EVENT_RELEASE =1017 --解放时
......@@ -538,6 +538,7 @@ EVENT_TOSS_DICE_NEGATE =1153 --掷骰子被无效时
EVENT_LEVEL_UP =1200 --等级上升时
EVENT_PAY_LPCOST =1201 --支付生命值时
EVENT_DETACH_MATERIAL =1202 --去除超量素材时
EVENT_RETURN_TO_GRAVE =1203 --回到墓地时
EVENT_TURN_END =1210 --回合结束时
EVENT_PHASE =0x1000 --阶段结束时
EVENT_PHASE_START =0x2000 --阶段开始时
......
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