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

Method readCommonParameters

source/game/StarMonsterDatabase.cpp:336–384  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

334}
335
336void MonsterDatabase::readCommonParameters(MonsterVariant& variant) {
337 variant.shortDescription = variant.parameters.optString("shortdescription").orMaybe(variant.shortDescription);
338 variant.dropPoolConfig = variant.parameters.get("dropPools", variant.dropPoolConfig);
339 variant.scripts = jsonToStringList(variant.parameters.get("scripts"));
340 variant.animationScripts = jsonToStringList(variant.parameters.getArray("animationScripts", {}));
341 variant.animatorConfig = jsonMerge(variant.animatorConfig, variant.parameters.get("animationCustom", JsonObject()));
342 variant.initialScriptDelta = variant.parameters.getUInt("initialScriptDelta", 5);
343 variant.metaBoundBox = jsonToRectF(variant.parameters.get("metaBoundBox"));
344 variant.renderLayer = variant.parameters.optString("renderLayer").apply(parseRenderLayer).value(RenderLayerMonster);
345 variant.scale = variant.parameters.getFloat("scale");
346 variant.movementSettings = ActorMovementParameters(variant.parameters.get("movementSettings", {}));
347 variant.walkMultiplier = variant.parameters.getFloat("walkMultiplier", 1.0f);
348 variant.runMultiplier = variant.parameters.getFloat("runMultiplier", 1.0f);
349 variant.jumpMultiplier = variant.parameters.getFloat("jumpMultiplier", 1.0f);
350 variant.weightMultiplier = variant.parameters.getFloat("weightMultiplier", 1.0f);
351 variant.healthMultiplier = variant.parameters.getFloat("healthMultiplier", 1.0f);
352 variant.touchDamageMultiplier = variant.parameters.getFloat("touchDamageMultiplier", 1.0f);
353 variant.touchDamageConfig = variant.parameters.get("touchDamage", {});
354 variant.animationDamageParts = variant.parameters.getObject("animationDamageParts", {});
355 variant.statusSettings = variant.parameters.get("statusSettings");
356 variant.mouthOffset = jsonToVec2F(variant.parameters.get("mouthOffset")) / TilePixels;
357 variant.feetOffset = jsonToVec2F(variant.parameters.get("feetOffset")) / TilePixels;
358 variant.powerLevelFunction = variant.parameters.getString("powerLevelFunction", "monsterLevelPowerMultiplier");
359 variant.healthLevelFunction = variant.parameters.getString("healthLevelFunction", "monsterLevelHealthMultiplier");
360 variant.clientEntityMode = ClientEntityModeNames.getLeft(variant.parameters.getString("clientEntityMode", "ClientSlaveOnly"));
361 variant.persistent = variant.parameters.getBool("persistent", false);
362 variant.damageTeamType = TeamTypeNames.getLeft(variant.parameters.getString("damageTeamType", "enemy"));
363 variant.damageTeam = variant.parameters.getUInt("damageTeam", 2);
364
365 if (auto sdp = variant.parameters.get("selfDamagePoly", {}))
366 variant.selfDamagePoly = jsonToPolyF(sdp);
367 else
368 variant.selfDamagePoly = *variant.movementSettings.standingPoly;
369
370 variant.portraitIcon = variant.parameters.optString("portraitIcon");
371 variant.damageReceivedAggressiveDuration = variant.parameters.getFloat("damageReceivedAggressiveDuration", 1.0f);
372 variant.onDamagedOthersAggressiveDuration = variant.parameters.getFloat("onDamagedOthersAggressiveDuration", 5.0f);
373 variant.onFireAggressiveDuration = variant.parameters.getFloat("onFireAggressiveDuration", 5.0f);
374
375 variant.nametagColor = jsonToVec3B(variant.parameters.get("nametagColor", JsonArray{255, 255, 255}));
376
377 variant.colorSwap = variant.parameters.optObject("colorSwap").apply([](JsonObject const& json) -> ColorReplaceMap {
378 ColorReplaceMap swaps;
379 for (auto pair : json) {
380 swaps.insert(Color::fromHex(pair.first).toRgba(), Color::fromHex(pair.second.toString()).toRgba());
381 }
382 return swaps;
383 });
384}
385
386MonsterVariant MonsterDatabase::produceMonster(String const& typeName, uint64_t seed, Json const& uniqueParameters) const {
387 RandomSource rand = RandomSource(seed);

Callers

nothing calls this directly

Calls 15

jsonToStringListFunction · 0.85
jsonToRectFFunction · 0.85
jsonToVec2FFunction · 0.85
jsonToPolyFFunction · 0.85
jsonToVec3BFunction · 0.85
orMaybeMethod · 0.80
optStringMethod · 0.80
getArrayMethod · 0.80
getUIntMethod · 0.80
getFloatMethod · 0.80
getStringMethod · 0.80

Tested by

no test coverage detected