bool js_leave_test(Room *room, Character *actor, int dir, JSBindable *self=0) { std::shared_ptr< std::vector<JSTrigger*> > js_scripts; if( self ) { if (!self->js_scripts || self->js_scripts->size() == 0) return true; js_scripts = self->js_scripts; } else js_scripts = globalJS_Scripts; for (int i = 0; i < js_scripts->size(); ++i) { // this looks for scripts that _might_ match if (js_scripts->at(i)->isFlagged(JS::LEAVE)) { JSTrigger* trig = js_scripts->at(i); if ( (!self || is_allowed(self, actor, trig)) && randomly_triggered(trig->narg)) { int ret_val = JSManager::get()->execute(trig, self, actor, "", make_extra("direction", dir), room); if (!ret_val) // ret_val == 0 means we block them. return false; } } } return true; }
void js_bribe_trigger(Character *self, Character *actor, const int amt) { if (!self->js_scripts || self->js_scripts->size() == 0) return; if( self->IsPurged() || actor->IsPurged() ) return; if( !IS_NPC(self) ) return; for (int i = 0; i < self->js_scripts->size(); ++i) { if (self->js_scripts->at(i)->isFlagged(JS::MOB_BRIBE)) { JSTrigger* trig = self->js_scripts->at(i); if (is_allowed(self, actor, trig) ) { JSManager::get()->execute(trig, self, actor, "", make_extra("amount", amt)); } } } }
int js_object_receive_test(Character *actor, Object *obj, Character *receiver, JSBindable *self) { int ret_val = 1; JSTrigger *trig; if( !self->js_scripts || self->js_scripts->empty() ) return 1; for(int i = 0;i < self->js_scripts->size();i++) { if (self->js_scripts->at(i)->isFlagged(JS::CHARACTER_RECEIVE)) { trig = self->js_scripts->at(i); if (randomly_triggered(trig->narg)) { ret_val = JSManager::get()->execute(trig, self, actor, "", make_extra("obj", obj)); if( ret_val == 0 ) return ret_val; } } } return ret_val; }
/*This script will go off when an item is dropped in a room*/ int js_dropped_in_room(Room *room, Object *obj, Character *actor) { JSTrigger *trig; int ret_val = 1; if( !room->js_scripts || room->js_scripts->empty() ) return 1; for(int i = 0;i < room->js_scripts->size();i++) { if (room->js_scripts->at(i)->isFlagged(JS::WORLD_DROP)) { trig = room->js_scripts->at(i); if (randomly_triggered(trig->narg)) { ret_val = JSManager::get()->execute(trig, room, actor, "", make_extra("obj", obj)); if( ret_val == 0 ) return ret_val; } } } return ret_val; }
int js_object_removed(Character *actor, Object *obj, const int pos) { JSTrigger *trig; int ret_val = 1; if( !obj->js_scripts || obj->js_scripts->empty() ) return 1; for(int i = 0;i < obj->js_scripts->size();i++) { if (obj->js_scripts->at(i)->isFlagged(JS::OBJ_REMOVE)) { trig = obj->js_scripts->at(i); if (randomly_triggered(trig->narg)) { ret_val = JSManager::get()->execute(trig, obj, actor, "", make_extra("pos", pos)); if( ret_val == 0 ) return ret_val; } } } return ret_val; }
bool playlist_view_cache::update_item(unsigned playlist, unsigned idx) { bool rv = false; playlist_cache * p_cache = get_item(playlist); if (idx >= 0 && idx < p_cache->get_count()) { column_list_cref_t columns = playlist_view::g_get_columns(); const bit_array & p_mask = get_columns_mask(playlist); playlist_entry_ui * entry = p_cache->get_item(idx); static_api_ptr_t<playlist_manager> playlist_api; if (!entry) { entry = new(std::nothrow) playlist_entry_ui; if (!entry) return false; unsigned e=columns.get_count(); entry->add_display_items(column_get_active_count(playlist)); p_cache->replace_item(idx, entry); } bool date = cfg_playlist_date != 0; SYSTEMTIME st; if (date) GetLocalTime(&st); bool global = (cfg_global != 0); bool b_legacy = cfg_oldglobal != 0; global_variable_list p_vars; if (global) { make_extra(playlist, idx, p_vars, date ? &st : 0, b_legacy); } int s,e=columns.get_count(),i=0; pfc::string8_fast_aggressive colour,display,temp; colour.prealloc(512); display.prealloc(512); temp.prealloc(512); cui::colours::helper p_helper(appearance_client_pv_impl::g_guid); colourinfo colours_global( p_helper.get_colour(cui::colours::colour_text), p_helper.get_colour(cui::colours::colour_selection_text), p_helper.get_colour(cui::colours::colour_background), p_helper.get_colour(cui::colours::colour_selection_background), p_helper.get_colour(cui::colours::colour_inactive_selection_text), p_helper.get_colour(cui::colours::colour_inactive_selection_background) ); service_ptr_t<titleformat_object> to_display; service_ptr_t<titleformat_object> to_colour; service_ptr_t<titleformat_object> to_global_style; bool colour_global_av = false; for (s=0;s<e;s++) { if (p_mask[s]) { playlist_view::g_get_columns()[s]->get_to_display(to_display); //playlist_view::g_get_titleformat_object(s, STRING_DISPLAY, to_display); if (to_display.is_valid()) playlist_api->playlist_item_format_title(playlist, idx, &titleformat_hook_splitter_pt3(global ? &titleformat_hook_set_global<false,true>(p_vars, b_legacy) :0, date ? &titleformat_hook_date(&st) : 0, &titleformat_hook_playlist_name()), display, to_display, 0, play_control::display_level_all); colourinfo col_item( p_helper.get_colour(cui::colours::colour_text), p_helper.get_colour(cui::colours::colour_selection_text), p_helper.get_colour(cui::colours::colour_background), p_helper.get_colour(cui::colours::colour_selection_background), p_helper.get_colour(cui::colours::colour_inactive_selection_text), p_helper.get_colour(cui::colours::colour_inactive_selection_background) ); playlist_view::g_get_columns()[s]->get_to_colour(to_colour); //playlist_view::g_get_titleformat_object(s, STRING_COLOUR, to_colour); bool b_custom = columns[s]->use_custom_colour; if (!cfg_oldglobal || !b_custom) { if (!colour_global_av) { playlist_view::g_get_global_style_titleformat_object(to_global_style); if (to_global_style.is_valid()) playlist_api->playlist_item_format_title(playlist, idx, &titleformat_hook_splitter_pt3(&titleformat_hook_style(colours_global),global ? &titleformat_hook_set_global<false,true>(p_vars, b_legacy) : 0,date ? &titleformat_hook_date(&st) : 0, &titleformat_hook_playlist_name()), colour, to_global_style, 0, play_control::display_level_all); if (cfg_oldglobal && !colour.is_empty()) process_colour_string(colour, colours_global); colour_global_av = true; } col_item = colours_global; } if (b_custom) { if (to_colour.is_valid()) playlist_api->playlist_item_format_title(playlist, idx, &titleformat_hook_splitter_pt3(&titleformat_hook_style(col_item),global ? &titleformat_hook_set_global<false,true>(p_vars, b_legacy) : 0,date ? &titleformat_hook_date(&st) : 0, &titleformat_hook_playlist_name()) , colour, to_colour, 0, play_control::display_level_all); if (cfg_oldglobal && !colour.is_empty()) process_colour_string(colour, col_item); } entry->set_display_item(i++, display, col_item); } } rv = true; } return rv; }