Commit 051aa8b1 authored by salix5's avatar salix5

EVENT_ADD_COUNTER, EVENT_REMOVE_COUNTER

Duel.RemoveCounter(): It will raise field event EVENT_REMOVE_COUNTER.
Card.RemoveCounter(): The script should raise it manually.
Card,AddCounter(): It will raise single event EVENT_ADD_COUNTER.
parent b867170c
...@@ -1550,6 +1550,8 @@ int32 card::add_counter(uint8 playerid, uint16 countertype, uint16 count, uint8 ...@@ -1550,6 +1550,8 @@ int32 card::add_counter(uint8 playerid, uint16 countertype, uint16 count, uint8
pduel->write_buffer8(current.location); pduel->write_buffer8(current.location);
pduel->write_buffer8(current.sequence); pduel->write_buffer8(current.sequence);
pduel->write_buffer16(pcount); pduel->write_buffer16(pcount);
pduel->game_field->raise_single_event(this, 0, EVENT_ADD_COUNTER + countertype, pduel->game_field->core.reason_effect, REASON_EFFECT, playerid, playerid, pcount);
pduel->game_field->process_single_event();
return TRUE; return TRUE;
} }
int32 card::remove_counter(uint16 countertype, uint16 count) { int32 card::remove_counter(uint16 countertype, uint16 count) {
......
...@@ -1858,6 +1858,7 @@ int32 scriptlib::card_remove_counter(lua_State *L) { ...@@ -1858,6 +1858,7 @@ int32 scriptlib::card_remove_counter(lua_State *L) {
uint32 count = lua_tointeger(L, 4); uint32 count = lua_tointeger(L, 4);
uint32 reason = lua_tointeger(L, 5); uint32 reason = lua_tointeger(L, 5);
if(countertype == 0) { if(countertype == 0) {
// c38834303
for(auto cmit = pcard->counters.begin(); cmit != pcard->counters.end(); ++cmit) { for(auto cmit = pcard->counters.begin(); cmit != pcard->counters.end(); ++cmit) {
pcard->pduel->write_buffer8(MSG_REMOVE_COUNTER); pcard->pduel->write_buffer8(MSG_REMOVE_COUNTER);
pcard->pduel->write_buffer16(cmit->first); pcard->pduel->write_buffer16(cmit->first);
......
...@@ -460,6 +460,7 @@ int32 field::damage(uint16 step, effect* reason_effect, uint32 reason, uint8 rea ...@@ -460,6 +460,7 @@ int32 field::damage(uint16 step, effect* reason_effect, uint32 reason, uint8 rea
} }
raise_single_event(reason_card, 0, EVENT_BATTLE_DAMAGE, 0, 0, reason_player, playerid, val); raise_single_event(reason_card, 0, EVENT_BATTLE_DAMAGE, 0, 0, reason_player, playerid, val);
raise_event(reason_card, EVENT_BATTLE_DAMAGE, 0, 0, reason_player, playerid, val); raise_event(reason_card, EVENT_BATTLE_DAMAGE, 0, 0, reason_player, playerid, val);
process_single_event();
} }
process_instant_event(); process_instant_event();
return FALSE; return FALSE;
...@@ -644,7 +645,7 @@ int32 field::remove_counter(uint16 step, uint32 reason, card* pcard, uint8 rplay ...@@ -644,7 +645,7 @@ int32 field::remove_counter(uint16 step, uint32 reason, card* pcard, uint8 rplay
} }
if(pcard) { if(pcard) {
returns.ivalue[0] = pcard->remove_counter(countertype, count); returns.ivalue[0] = pcard->remove_counter(countertype, count);
core.units.begin()->step = 2; core.units.begin()->step = 3;
return FALSE; return FALSE;
} }
card* pcard; card* pcard;
......
...@@ -1244,6 +1244,7 @@ void field::raise_event(card_set* event_cards, uint32 event_code, effect* reason ...@@ -1244,6 +1244,7 @@ void field::raise_event(card_set* event_cards, uint32 event_code, effect* reason
new_event.event_value = event_value; new_event.event_value = event_value;
core.queue_event.push_back(new_event); core.queue_event.push_back(new_event);
} }
// add events to core.single_event
void field::raise_single_event(card* trigger_card, card_set* event_cards, uint32 event_code, effect * reason_effect, uint32 reason, uint8 reason_player, uint8 event_player, uint32 event_value) { void field::raise_single_event(card* trigger_card, card_set* event_cards, uint32 event_code, effect * reason_effect, uint32 reason, uint8 reason_player, uint8 event_player, uint32 event_value) {
tevent new_event; tevent new_event;
new_event.trigger_card = trigger_card; new_event.trigger_card = trigger_card;
......
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