include library.colors; boolean isLucky(obj_id player) { return isLucky(player, 0.10f, true); } boolean isLucky(obj_id player, float mod) { return isLucky(player, mod, true); } boolean isLucky(obj_id player, float mod, boolean showFlyText) { if(!isPlayer(player)) return false; int level = getLevel(player); int cap = level * 5; float chance = (float)rand(1, (cap * 1000)); chance /= 1000.0f; float luck = (float)getSkillStatisticModifier(player, "luck"); float luckBonus = (float)getEnhancedSkillStatisticModifierUncapped(player, "luck_modified"); luck += luckBonus; if(luck > cap) luck = (float)cap; luck *= mod; if(chance < luck) { if(showFlyText) showLuckyFlyText(player); return true; } return false; } void showLuckyFlyText(obj_id player) { prose_package pp = new prose_package(); pp = prose.setStringId(pp, new string_id("system_msg", "lucky_fly_text")); showFlyTextPrivateProseWithFlags(player, player, pp, 1.5f, colors.GOLD, FLY_TEXT_FLAG_IS_LUCKY ); }