MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / triggerPickupEvents

Method triggerPickupEvents

source/game/StarPlayer.cpp:1250–1286  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1248}
1249
1250void Player::triggerPickupEvents(ItemPtr const& item) {
1251 if (item) {
1252 for (auto b : item->learnBlueprintsOnPickup())
1253 addBlueprint(b);
1254
1255 for (auto pair : item->collectablesOnPickup())
1256 addCollectable(pair.first, pair.second);
1257
1258 for (auto m : item->instanceValue("radioMessagesOnPickup", JsonArray()).iterateArray()) {
1259 if (m.isType(Json::Type::Array)) {
1260 if (m.size() >= 2 && m.get(1).canConvert(Json::Type::Float))
1261 queueRadioMessage(m.get(0), m.get(1).toFloat());
1262 } else {
1263 queueRadioMessage(m);
1264 }
1265 }
1266
1267 if (auto cinematic = item->instanceValue("cinematicOnPickup", Json()))
1268 setPendingCinematic(cinematic, true);
1269
1270 for (auto const& quest : item->pickupQuestTemplates()) {
1271 if (m_questManager->canStart(quest))
1272 m_questManager->offer(make_shared<Quest>(quest, 0, this));
1273 }
1274
1275 if (auto consume = item->instanceValue("consumeOnPickup", Json())) {
1276 if (consume.toBool())
1277 item->consume(item->count());
1278 }
1279
1280 statistics()->recordEvent("item", JsonObject{
1281 {"itemName", item->name()},
1282 {"count", item->count()},
1283 {"category", item->instanceValue("eventCategory", item->category())}
1284 });
1285 }
1286}
1287
1288ItemPtr Player::essentialItem(EssentialItem essentialItem) const {
1289 return m_inventory->essentialItem(essentialItem);

Callers 2

giveContainerResultMethod · 0.80
giveContainerResultMethod · 0.80

Calls 15

JsonClass · 0.85
collectablesOnPickupMethod · 0.80
iterateArrayMethod · 0.80
instanceValueMethod · 0.80
canConvertMethod · 0.80
toFloatMethod · 0.80
canStartMethod · 0.80
toBoolMethod · 0.80
recordEventMethod · 0.80
isTypeMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected