// Make basic setup of level up motes. MoteThrown MakeMote(ThingDef def, Pawn pawn) { MoteThrown mote = (MoteThrown)ThingMaker.MakeThing(def); mote.Attach(new TargetInfo(pawn)); mote.Scale = 1.5f; mote.exactPosition = pawn.Drawer.DrawPos; return(mote); }
public void NotifyLevelDown() { // Do text message on screen on level down. if (Settings.allowLevelDownTextMessage) { Color color = Color.red; string pawn = CurrentPawn.LabelShortCap.Bold(); string skill = SkillRecord.def.skillLabel.Italic(); string level = SkillRecord.levelInt.ToString().Bold().Colored(color); string levelDesc = SkillRecord.LevelDescriptor; string label; if (Settings.levelDescLevelDownLabel) { label = "LevelDownLabelLong".Translate(pawn, level, skill, levelDesc); } else { label = "LevelDownLabel".Translate(pawn, level, skill); } LookTargets lookTargets = new LookTargets(CurrentPawn); Messages.Message(label, lookTargets, MessageTypeDefOf.SilentInput); } if (Settings.allowLevelDownLetter) { string pawn = CurrentPawn.LabelShortCap; string skill = SkillRecord.def.skillLabel; string level = SkillRecord.levelInt.ToString(); string labelShort = "LevelDownLabelShort".Translate(pawn); string label = "LevelDownLabel".Translate(pawn, level, skill); LookTargets lookTargets = new LookTargets(CurrentPawn); Find.LetterStack.ReceiveLetter(labelShort, label, LetterDefOf.NegativeEvent, lookTargets); } // Do sound effect on level down. if (Settings.allowLevelDownSoundEffect) { DefHandler.LevelDown.PlayOneShot(SoundInfo.InMap(new TargetInfo(CurrentPawn))); } // Do animation on pawn levelling down. if (!Settings.allowLevelDownAnimation) { return; } // Animation motes. Vector3 pawnPosition = CurrentPawn.Drawer.DrawPos; Map map = CurrentPawn.Map; if (!pawnPosition.ToIntVec3().ShouldSpawnMotesAt(map) || map.moteCounter.SaturatedLowPriority) { return; } MoteThrown topMote = (MoteThrown)ThingMaker.MakeThing(DefHandler.Mote_LevelDownBeamTop); topMote.Attach(new TargetInfo(CurrentPawn)); topMote.Scale = 1.5f; topMote.exactPosition = CurrentPawn.Drawer.DrawPos; topMote.SetVelocity(180, 0.1f); GenSpawn.Spawn(topMote, pawnPosition.ToIntVec3(), map); MoteThrown bottomMote = (MoteThrown)ThingMaker.MakeThing(DefHandler.Mote_LevelDownBeamBottom); bottomMote.Attach(new TargetInfo(CurrentPawn)); bottomMote.Scale = 1.5f; bottomMote.exactPosition = CurrentPawn.Drawer.DrawPos; bottomMote.SetVelocity(180, 0.1f); GenSpawn.Spawn(bottomMote, pawnPosition.ToIntVec3(), map); }