public static QualityCategory GenerateQualityCreatedByPawn(Pawn pawn, SkillDef relevantSkill) { int level = pawn.skills.GetSkill(relevantSkill).Level; bool flag = pawn.InspirationDef == InspirationDefOf.Inspired_Creativity; QualityCategory result = QualityUtility.GenerateQualityCreatedByPawn(level, flag); if (flag) { pawn.mindState.inspirationHandler.EndInspiration(InspirationDefOf.Inspired_Creativity); } return(result); }
public void CompleteConstruction(Pawn worker) { resourceContainer.ClearAndDestroyContents(); Map map = base.Map; Destroy(); if (this.GetStatValue(StatDefOf.WorkToBuild) > 150f && def.entityDefToBuild is ThingDef && ((ThingDef)def.entityDefToBuild).category == ThingCategory.Building) { SoundDefOf.Building_Complete.PlayOneShot(new TargetInfo(base.Position, map)); } ThingDef thingDef = def.entityDefToBuild as ThingDef; Thing thing = null; if (thingDef != null) { thing = ThingMaker.MakeThing(thingDef, base.Stuff); thing.SetFactionDirect(base.Faction); CompQuality compQuality = thing.TryGetComp <CompQuality>(); if (compQuality != null) { QualityCategory q = QualityUtility.GenerateQualityCreatedByPawn(worker, SkillDefOf.Construction); compQuality.SetQuality(q, ArtGenerationContext.Colony); QualityUtility.SendCraftNotification(thing, worker); } CompArt compArt = thing.TryGetComp <CompArt>(); if (compArt != null) { if (compQuality == null) { compArt.InitializeArt(ArtGenerationContext.Colony); } compArt.JustCreatedBy(worker); } thing.HitPoints = Mathf.CeilToInt((float)HitPoints / (float)base.MaxHitPoints * (float)thing.MaxHitPoints); GenSpawn.Spawn(thing, base.Position, map, base.Rotation, WipeMode.FullRefund); Building b; if ((b = thing as Building) != null) { worker.GetLord()?.AddBuilding(b); } } else { map.terrainGrid.SetTerrain(base.Position, (TerrainDef)def.entityDefToBuild); FilthMaker.RemoveAllFilth(base.Position, map); } worker.records.Increment(RecordDefOf.ThingsConstructed); if (thing != null && thing.GetStatValue(StatDefOf.WorkToBuild) >= 9500f) { TaleRecorder.RecordTale(TaleDefOf.CompletedLongConstructionProject, worker, thing.def); } }
internal static void QualityGenerationData() { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendLine("Qualities of items/buildings generated from various sources"); stringBuilder.AppendLine("---------------------------------------------------------------------"); stringBuilder.AppendLine("Rewards (quests, etc...? )"); stringBuilder.AppendLine(QualityUtility.DebugQualitiesString(() => QualityUtility.GenerateQualityReward())); stringBuilder.AppendLine("Trader items"); stringBuilder.AppendLine(QualityUtility.DebugQualitiesString(() => QualityUtility.GenerateQualityTraderItem())); stringBuilder.AppendLine("Map generation items and buildings (usually NPC bases)"); stringBuilder.AppendLine(QualityUtility.DebugQualitiesString(() => QualityUtility.GenerateQualityBaseGen())); stringBuilder.AppendLine("Gifts"); stringBuilder.AppendLine(QualityUtility.DebugQualitiesString(() => QualityUtility.GenerateQualityGift())); using (IEnumerator <PawnKindDef> enumerator = (from k in DefDatabase <PawnKindDef> .AllDefs orderby k.combatPower select k).GetEnumerator()) { while (enumerator.MoveNext()) { PawnKindDef pk = enumerator.Current; if (pk.RaceProps.Humanlike) { stringBuilder.AppendLine(string.Concat(new object[] { "Items generated to equip pawn kind: ", pk.defName, " (", pk.combatPower.ToString("F0"), " points, itemQuality ", pk.itemQuality, ")" })); stringBuilder.Append(QualityUtility.DebugQualitiesString(() => QualityUtility.GenerateQualityGeneratingPawn(pk))); stringBuilder.AppendLine(); } } } int level; for (level = 0; level <= 20; level++) { stringBuilder.AppendLine(); stringBuilder.AppendLine("Items/buildings made by crafter/builder at skill level " + level); stringBuilder.Append(QualityUtility.DebugQualitiesString(() => QualityUtility.GenerateQualityCreatedByPawn(level, false))); } Log.Message(stringBuilder.ToString(), false); }
internal QualityCategory <> m__1() { return(QualityUtility.GenerateQualityCreatedByPawn(this.localLevel, false)); }
internal string <> m__0(QualityCategory q) { return(QualityUtility.DebugQualitiesStringSingle(q, () => QualityUtility.GenerateQualityCreatedByPawn(this.localLevel, false))); }
private static void QualityGenerationData() { List <TableDataGetter <QualityCategory> > list = new List <TableDataGetter <QualityCategory> >(); list.Add(new TableDataGetter <QualityCategory>("quality", (QualityCategory q) => q.ToString())); list.Add(new TableDataGetter <QualityCategory>("Rewards\n(quests,\netc...? )", delegate(QualityCategory q) { if (QualityUtility.< > f__mg$cache0 == null) { QualityUtility.< > f__mg$cache0 = new Func <QualityCategory>(QualityUtility.GenerateQualityReward); } return(QualityUtility.DebugQualitiesStringSingle(q, QualityUtility.< > f__mg$cache0)); })); list.Add(new TableDataGetter <QualityCategory>("Trader\nitems", delegate(QualityCategory q) { if (QualityUtility.< > f__mg$cache1 == null) { QualityUtility.< > f__mg$cache1 = new Func <QualityCategory>(QualityUtility.GenerateQualityTraderItem); } return(QualityUtility.DebugQualitiesStringSingle(q, QualityUtility.< > f__mg$cache1)); })); list.Add(new TableDataGetter <QualityCategory>("Map generation\nitems and\nbuildings\n(e.g. NPC bases)", delegate(QualityCategory q) { if (QualityUtility.< > f__mg$cache2 == null) { QualityUtility.< > f__mg$cache2 = new Func <QualityCategory>(QualityUtility.GenerateQualityBaseGen); } return(QualityUtility.DebugQualitiesStringSingle(q, QualityUtility.< > f__mg$cache2)); })); list.Add(new TableDataGetter <QualityCategory>("Gifts", delegate(QualityCategory q) { if (QualityUtility.< > f__mg$cache3 == null) { QualityUtility.< > f__mg$cache3 = new Func <QualityCategory>(QualityUtility.GenerateQualityGift); } return(QualityUtility.DebugQualitiesStringSingle(q, QualityUtility.< > f__mg$cache3)); })); for (int i = 0; i <= 20; i++) { int localLevel = i; list.Add(new TableDataGetter <QualityCategory>("Made\nat skill\n" + i, (QualityCategory q) => QualityUtility.DebugQualitiesStringSingle(q, () => QualityUtility.GenerateQualityCreatedByPawn(localLevel, false)))); } foreach (PawnKindDef localPk2 in from k in DefDatabase <PawnKindDef> .AllDefs orderby k.combatPower select k) { PawnKindDef localPk = localPk2; if (localPk.RaceProps.Humanlike) { list.Add(new TableDataGetter <QualityCategory>(string.Concat(new object[] { "Gear for\n", localPk.defName, "\nPower ", localPk.combatPower.ToString("F0"), "\nitemQuality:\n", localPk.itemQuality }), (QualityCategory q) => QualityUtility.DebugQualitiesStringSingle(q, () => QualityUtility.GenerateQualityGeneratingPawn(localPk)))); } } DebugTables.MakeTablesDialog <QualityCategory>(QualityUtility.AllQualityCategories, list.ToArray()); }
// Token: 0x060000D7 RID: 215 RVA: 0x000066F8 File Offset: 0x000048F8 public void CompleteConstruction(Pawn worker) { Map map = base.Map; bool flag = this.GetStatValue(StatDefOf.WorkToBuild, true) > 150f && this.def.entityDefToBuild is ThingDef && ((ThingDef)this.def.entityDefToBuild).category == ThingCategory.Building; if (flag) { SoundDefOf.Building_Complete.PlayOneShot(new TargetInfo(base.Position, map, false)); } ThingDef thingDef = this.def.entityDefToBuild as ThingDef; Thing thing = null; bool flag2 = thingDef != null; if (flag2) { thing = ThingMaker.MakeThing(thingDef, base.Stuff); thing.SetFactionDirect(base.Faction); CompQuality compQuality = thing.TryGetComp <CompQuality>(); bool flag3 = compQuality != null; if (flag3) { int relevantSkillLevel = 1; compQuality.SetQuality(QualityUtility.GenerateQualityCreatedByPawn(relevantSkillLevel, false), ArtGenerationContext.Colony); } CompArt compArt = thing.TryGetComp <CompArt>(); bool flag4 = compArt != null; if (flag4) { bool flag5 = compQuality == null; if (flag5) { compArt.InitializeArt(ArtGenerationContext.Colony); } compArt.JustCreatedBy(worker); } thing.HitPoints = Mathf.CeilToInt((float)this.HitPoints / (float)base.MaxHitPoints * (float)thing.MaxHitPoints); GenSpawn.Spawn(thing, base.Position, map, base.Rotation, WipeMode.FullRefund, false); } else { map.terrainGrid.SetTerrain(base.Position, (TerrainDef)this.def.entityDefToBuild); FilthMaker.RemoveAllFilth(base.Position, map); } bool flag6 = thingDef != null && (thingDef.passability == Traversability.Impassable || thingDef.Fillage == FillCategory.Full) && (thing == null || !(thing is Building_Door)); if (flag6) { foreach (IntVec3 c in GenAdj.CellsOccupiedBy(base.Position, base.Rotation, this.def.Size)) { foreach (Thing thing2 in map.thingGrid.ThingsAt(c).ToList <Thing>()) { bool flag7 = thing2 is Plant; if (flag7) { thing2.Destroy(DestroyMode.KillFinalize); } else { bool flag8 = thing2.def.category == ThingCategory.Item || thing2 is Pawn; if (flag8) { GenPlace.TryPlaceThing(thing2, thing2.Position, thing2.Map, ThingPlaceMode.Near, null, null, default(Rot4)); } } } } } worker.records.Increment(RecordDefOf.ThingsConstructed); }