Пример #1
0
        public static void calculateSuccess(FCOptionDef option, FCEvent parentEvent)
        {
            float baseChance = option.baseChanceOfSuccess;
            int   roll       = Rand.Range(1, 100);
            //Log.Message(roll.ToString());

            FCEvent tempEvent = new FCEvent(true);


            if (roll <= baseChance)
            { //if success
                if (option.parentEvent.settlementsCarryOver == true)
                {
                    tempEvent = FCEventMaker.MakeRandomEvent(option.successEvent, parentEvent.settlementTraitLocations);
                }
                else
                {
                    tempEvent = FCEventMaker.MakeRandomEvent(option.successEvent, null);
                }
            }
            else
            {
                if (option.parentEvent.settlementsCarryOver == true)
                {
                    tempEvent = FCEventMaker.MakeRandomEvent(option.failEvent, parentEvent.settlementTraitLocations);
                }
                else
                {
                    tempEvent = FCEventMaker.MakeRandomEvent(option.failEvent, null);
                }
            }
            if (tempEvent.def != FCEventDefOf.Null)
            {
                Find.World.GetComponent <FactionFC>().addEvent(tempEvent);

                //letter

                string settlementString = "";
                foreach (SettlementFC loc in tempEvent.settlementTraitLocations)
                {
                    if (settlementString == "")
                    {
                        settlementString = settlementString + loc.name;
                    }
                    else
                    {
                        settlementString = settlementString + ", " + loc.name;
                    }
                }
                if (settlementString != "")
                {
                    Find.LetterStack.ReceiveLetter(tempEvent.def.label, tempEvent.def.desc + "\n This event is affecting the following settlements: " + settlementString, LetterDefOf.NeutralEvent);
                }
                else
                {
                    Find.LetterStack.ReceiveLetter(tempEvent.def.label, tempEvent.def.desc, LetterDefOf.NeutralEvent);
                }
            }
        }
Пример #2
0
        public static void calculateSuccess(FCOptionDef option, FCEvent parentEvent)
        {
            float baseChance = option.baseChanceOfSuccess;
            int   roll       = Rand.Range(1, 100);
            //Log.Message(roll.ToString());

            FCEvent tempEvent = new FCEvent(true);


            if (roll <= baseChance)
            {
                //if success
                if (option.parentEvent.settlementsCarryOver)
                {
                    tempEvent = MakeRandomEvent(option.successEvent, parentEvent.settlementTraitLocations);
                }
                else
                {
                    tempEvent = MakeRandomEvent(option.successEvent, null);
                }
            }
            else
            {
                if (option.parentEvent.settlementsCarryOver)
                {
                    tempEvent = MakeRandomEvent(option.failEvent, parentEvent.settlementTraitLocations);
                }
                else
                {
                    tempEvent = MakeRandomEvent(option.failEvent, null);
                }
            }

            if (tempEvent.def != FCEventDefOf.Null)
            {
                Find.World.GetComponent <FactionFC>().addEvent(tempEvent);

                //letter


                string settlementString = tempEvent.settlementTraitLocations.Join((settlement) => $" {settlement.name}", "\n");

                if (!settlementString.NullOrEmpty())
                {
                    Find.LetterStack.ReceiveLetter(tempEvent.def.label, $"{tempEvent.def.desc}\n{"EventAffectingSettlements".Translate()}\n{settlementString}", LetterDefOf.NeutralEvent);
                }
                else
                {
                    Find.LetterStack.ReceiveLetter(tempEvent.def.label, tempEvent.def.desc, LetterDefOf.NeutralEvent);
                }
            }
        }