const char* Card::can_attack(Game* g, Player* p) const { CHECK_RETURN(controller == p); CHECK_RETURN(!tapped); CHECK_RETURN(has_text("creature")); CHECK_RETURN(!sick || has_ability("haste")); return nullptr; }
void trace_view_adv_filter_callback(gboolean accept, const gchar *text, gint *event_ids, gpointer data) { struct event_filter *event_filter; GtkTreeView *trace_tree = data; GtkTreeModel *model; TraceViewStore *store; char error_str[200]; int ret; int i; if (!accept) return; model = gtk_tree_view_get_model(trace_tree); if (!model) return; if (!has_text(text) && !event_ids) return; store = TRACE_VIEW_STORE(model); event_filter = trace_view_store_get_event_filter(store); if (event_ids) { for (i = 0; event_ids[i] >= 0; i++) pevent_filter_remove_event(event_filter, event_ids[i]); } if (has_text(text)) { trace_view_store_clear_all_events_enabled(store); ret = pevent_filter_add_filter_str(event_filter, text); if (ret < 0) { pevent_strerror(event_filter->pevent, ret, error_str, sizeof(error_str)); warning("filter failed due to: %s", error_str); return; } } update_rows(trace_tree, store); }
const char* Card::can_tap(Game* g, Player* p) const { // Does the player control it? CHECK_RETURN(controller == p); // Is it not tapped? CHECK_RETURN(!tapped); // Is it in play? CHECK_RETURN(g->is_in_play(this)); // If it's a creature, is it sick? CHECK_RETURN(!has_text("creature") || !sick || has_ability("haste")); return nullptr; }