Exemple #1
0
        // 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);
        }
Exemple #2
0
        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);
        }