public float GetContactWeight(PolityContact contact) { if (contact.Polity is Tribe) { return(_sourceTribe.CalculateContactStrength(contact)); } return(0); }
public override bool CanTrigger() { if (!base.CanTrigger()) { return(false); } if (_sourceTribe.DominantFaction != OriginalDominantFaction) { return(false); } int rngOffset = unchecked ((int)(RngOffsets.EVENT_CAN_TRIGGER + Id)); _targetContact = _sourceTribe.GetRandomPolityContact(rngOffset++, GetContactWeight, true); if (_targetContact == null) { return(false); } _targetTribe = _targetContact.Polity as Tribe; _targetDominantClan = _targetTribe.DominantFaction as Clan; // We should use the latest cultural attribute values before calculating chances _originalSourceDominantClan.PreUpdate(); _targetDominantClan.PreUpdate(); _chanceOfMakingAttempt = CalculateChanceOfMakingAttempt(); if (_chanceOfMakingAttempt <= 0.15f) { return(false); } _chanceOfRejectingOffer = CalculateChanceOfRejectingOffer(); if (_chanceOfRejectingOffer >= 0.15f) { return(false); } return(true); }
public override bool CanTrigger() { //#if DEBUG // if ((Manager.RegisterDebugEvent != null) && (Manager.TracingData.Priority <= 0)) // { // if (Polity.Id == 11267065402613603L) // { // SaveLoadTest.DebugMessage debugMessage = new SaveLoadTest.DebugMessage( // "MergeTribesDecisionEvent:CanTrigger - Polity.Id:" + Polity.Id, // "TriggerDate: " + TriggerDate + // ", SpawnDate: " + SpawnDate + // ", base.CanTrigger(): " + base.CanTrigger() + // ", _sourceTribe.DominantFaction == OriginalDominantFaction: " + (_sourceTribe.DominantFaction == OriginalDominantFaction) + // ""); // Manager.RegisterDebugEvent("DebugMessage", debugMessage); // } // } //#endif if (!base.CanTrigger()) { return(false); } if (_sourceTribe.DominantFaction != OriginalDominantFaction) { return(false); } int rngOffset = unchecked ((int)(RngOffsets.EVENT_CAN_TRIGGER + Id)); _targetContact = _sourceTribe.GetRandomPolityContact(rngOffset++, GetContactWeight, true); if (_targetContact == null) { return(false); } _targetTribe = _targetContact.Polity as Tribe; _targetDominantClan = _targetTribe.DominantFaction as Clan; //#if DEBUG // if ((Manager.RegisterDebugEvent != null) && (Manager.TracingData.Priority <= 0)) // { // //if (_targetTribe.Id == Manager.TracingData.PolityId) // //{ // SaveLoadTest.DebugMessage debugMessage = new SaveLoadTest.DebugMessage( // "MergeTribesDecisionEvent:CanTrigger - Polity.Id:" + Polity.Id, // "TriggerDate: " + TriggerDate + // ", _targetTribe.Id: " + _targetTribe.Id + // ", _targetDominantClan.Id: " + _targetDominantClan.Id + // ""); // Manager.RegisterDebugEvent("DebugMessage", debugMessage); // //} // } //#endif // We should use the latest cultural attribute values before calculating chances _originalSourceDominantClan.PreUpdate(); _targetDominantClan.PreUpdate(); _chanceOfMakingAttempt = CalculateChanceOfMakingAttempt(); _chanceOfRejectingOffer = CalculateChanceOfRejectingOffer(); if (_chanceOfMakingAttempt <= 0.0f) { return(false); } if (_chanceOfRejectingOffer >= 1.0f) { return(false); } return(true); }