/// <summary> /// Determines RVM, and geologic values for a satelite /// </summary> /// <param name="s">The satelite</param> /// <param name="ourBag">Dice object</param> /// <param name="sysAge">System Age</param> /// <param name="isGasGiantMoon">Is this a moon of a gas giant?</param> public static void determineGeologicValues(Satellite s, Dice ourBag, double sysAge, bool isGasGiantMoon) { //volcanic set first. double addVal = (s.gravity / sysAge) * 40; if (s.majorMoons.Count == 1) addVal = addVal + 5; if (s.majorMoons.Count == 2) addVal = addVal + 10; if (s.SatelliteType == Satellite.SUBTYPE_SULFUR) addVal = addVal + 60; if (isGasGiantMoon) addVal = addVal + 5; int roll = ourBag.gurpsRoll(); addVal = addVal + roll; if (addVal <= 16.5) s.volActivity = Satellite.GEOLOGIC_NONE; if (addVal > 16.5 && addVal <= 20.5) s.volActivity = Satellite.GEOLOGIC_LIGHT; if (addVal > 20.5 && addVal <= 26.5) s.volActivity = Satellite.GEOLOGIC_MODERATE; if (addVal > 26.5 && addVal <= 70.5) s.volActivity = Satellite.GEOLOGIC_HEAVY; if (addVal > 70.5) s.volActivity = Satellite.GEOLOGIC_EXTREME; roll = ourBag.gurpsRoll(); if (s.volActivity == Satellite.GEOLOGIC_HEAVY && s.SatelliteType == Satellite.SUBTYPE_GARDEN && roll <= 8) { roll = ourBag.rng(6); if (roll <= 3) s.addAtmCategory(Satellite.ATM_MARG_POLLUTANTS); if (roll >= 4) s.addAtmCategory(Satellite.ATM_MARG_SULFUR); } roll = ourBag.gurpsRoll(); if (s.volActivity == Satellite.GEOLOGIC_EXTREME && s.SatelliteType == Satellite.SUBTYPE_GARDEN && roll <= 14) { roll = ourBag.rng(6); if (roll <= 3) s.addAtmCategory(Satellite.ATM_MARG_POLLUTANTS); if (roll >= 4) s.addAtmCategory(Satellite.ATM_MARG_SULFUR); } //tectonic next roll = ourBag.gurpsRoll(); //negative mods if (s.hydCoverage == 0) roll = roll - 4; if (s.hydCoverage > 0 && s.hydCoverage < .5) roll = roll - 2; if (s.volActivity == Satellite.GEOLOGIC_NONE) roll = roll - 8; if (s.volActivity == Satellite.GEOLOGIC_LIGHT) roll = roll - 4; //postive mods if (s.volActivity == Satellite.GEOLOGIC_HEAVY) roll = roll + 4; if (s.volActivity == Satellite.GEOLOGIC_EXTREME) roll = roll + 8; if (s.majorMoons.Count == 1) roll = roll + 2; if (s.majorMoons.Count > 1) roll = roll + 4; //nullers. if (s.SatelliteSize == Satellite.SIZE_TINY) roll = 0; if (s.SatelliteSize == Satellite.SIZE_SMALL) roll = 0; if (roll <= 6.5) s.tecActivity = Satellite.GEOLOGIC_NONE; if (roll > 6.5 && roll <= 10.5) s.tecActivity = Satellite.GEOLOGIC_LIGHT; if (roll > 10.5 && roll <= 14.5) s.tecActivity = Satellite.GEOLOGIC_MODERATE; if (roll > 14.5 && roll <= 18.5) s.tecActivity = Satellite.GEOLOGIC_HEAVY; if (roll > 18.5) s.tecActivity = Satellite.GEOLOGIC_EXTREME; //update RVM if (!OptionCont.highRVMVal) roll = ourBag.gurpsRoll(); if (OptionCont.highRVMVal) roll = ourBag.rng(1, 6, 10); if (s.volActivity == Satellite.GEOLOGIC_NONE) roll = roll - 2; if (s.volActivity == Satellite.GEOLOGIC_LIGHT) roll = roll - 1; if (s.volActivity == Satellite.GEOLOGIC_HEAVY) roll = roll + 1; if (s.volActivity == Satellite.GEOLOGIC_EXTREME) roll = roll + 2; if (s.baseType == Satellite.BASETYPE_ASTEROIDBELT) { if (s.SatelliteSize == Satellite.SIZE_TINY) roll = roll - 1; if (s.SatelliteSize == Satellite.SIZE_MEDIUM) roll = roll + 2; if (s.SatelliteSize == Satellite.SIZE_LARGE) roll = roll + 4; } //set stable activity here: if (OptionCont.stableActivity && s.SatelliteSize >= Satellite.SIZE_SMALL && (s.baseType == Satellite.BASETYPE_MOON || s.baseType == Satellite.BASETYPE_TERRESTIAL)) { s.volActivity = Satellite.GEOLOGIC_MODERATE; s.tecActivity = Satellite.GEOLOGIC_MODERATE; } s.populateRVM(roll); }