static void PlayerLaunchArrow_Test(float aimratio, float poisonous, const Vec3f & pos, const Anglef & angle) { Vec3f vect = angleToVector(angle); Vec3f position = pos; float velocity = aimratio + 0.3f; if(velocity < 0.9f) velocity = 0.9f; glm::quat quat = angleToQuatForArrow(angle); float wd = getEquipmentBaseModifier(IO_EQUIPITEM_ELEMENT_Damages); // TODO Why ignore relative modifiers? Why not just use player.Full_damages? float damages = wd * (1.f + (player.m_skillFull.projectile + player.m_attributeFull.dexterity) * (1.f/50)); ARX_THROWN_OBJECT_Throw(PlayerEntityHandle, position, vect, quat, velocity, damages, poisonous); }
float getEquipmentModifier(EquipmentModifierType modifier, float baseval) { float modabs = getEquipmentBaseModifier(modifier, false); float modrel = getEquipmentBaseModifier(modifier, true); return modabs + modrel * std::max(0.f, baseval + modabs); }