Example #1
0
        protected override void PrepareProtoCharacterMob(
            out ProtoCharacterSkeleton skeleton,
            ref double scale,
            DropItemsList lootDroplist)
        {
            skeleton = GetProtoEntity <SkeletonFloater>();

            // primary loot
            lootDroplist
            .Add <ItemInsectMeatRaw>(count: 1, countRandom: 1)
            .Add <ItemSlime>(count: 10, countRandom: 10)
            .Add <ItemToxin>(count: 5, countRandom: 5)
            .Add <ItemSalt>(count: 5, countRandom: 5)
            .Add <ItemRubberRaw>(count: 8, countRandom: 4)
            .Add <ItemKeinite>(count: 2, countRandom: 2);

            // extra loot
            lootDroplist.Add(condition: SkillHunting.ServerRollExtraLoot,
                             nestedList: new DropItemsList(outputs: 2)
                             .Add <ItemInsectMeatRaw>(count: 1)
                             .Add <ItemSlime>(count: 5)
                             .Add <ItemToxin>(count: 2)
                             .Add <ItemSalt>(count: 2));

            if (!IsServer)
            {
                return;
            }

            ServerCharacterDeathMechanic.CharacterKilled += ServerCharacterKilledHandler;
        private static void SetLoopSounds(
            ICharacter character,
            BaseCharacterClientState clientState,
            AppliedCharacterInput appliedInput,
            ProtoCharacterSkeleton protoSkeleton,
            bool isIdle)
        {
            CharacterSound soundKey;

            if (isIdle)
            {
                soundKey = CharacterSound.LoopIdle;
            }
            else
            {
                var isRunningMode = (appliedInput.MoveModes & CharacterMoveModes.ModifierRun) != 0;
                soundKey = isRunningMode ? CharacterSound.LoopRun : CharacterSound.LoopWalk;
            }

            var(soundPresetCharacter, soundPresetMovement)           = protoSkeleton.GetSoundPresets(character);
            clientState.SoundEmitterLoopCharacter.NextSoundResource  = soundPresetCharacter.GetSound(soundKey);
            clientState.SoundEmitterLoopMovemement.NextSoundResource = soundPresetMovement.GetSound(soundKey);

            // ensure the sounds are played
            clientState.SoundEmitterLoopCharacter.Play();
            clientState.SoundEmitterLoopMovemement.Play();
        }
Example #3
0
        protected override void PrepareProtoCharacterMob(
            out ProtoCharacterSkeleton skeleton,
            ref double scale,
            DropItemsList lootDroplist)
        {
            skeleton = GetProtoEntity <SkeletonPsiGrove>();

            // primary loot
            lootDroplist
            .Add <ItemSlime>(count: 2, countRandom: 1)
            .Add <ItemTwigs>(count: 4, countRandom: 2)
            .Add <ItemSugar>(count: 1, countRandom: 1)
            .Add <ItemOrePragmium>(count: 1, probability: 0.3);

            // extra loot
            lootDroplist.Add(condition: SkillHunting.ServerRollExtraLoot,
                             nestedList: new DropItemsList(outputs: 1)
                             .Add <ItemSlime>(count: 1)
                             .Add <ItemTwigs>(count: 2)
                             );

            if (!IsServer)
            {
                return;
            }

            ServerCharacterDeathMechanic.CharacterKilled += ServerCharacterKilledHandler;
Example #4
0
        public virtual void ClientSetupSkeleton(
            IItem item,
            ICharacter character,
            ProtoCharacterSkeleton protoCharacterSkeleton,
            IComponentSkeleton skeletonRenderer,
            List <IClientComponent> skeletonComponents)
        {
            protoCharacterSkeleton.ClientSetupItemInHand(
                skeletonRenderer,
                "WeaponMelee",
                this.GetCharacterTextureResource(item, character));

            var isActive = GetPublicState(item).IsActive;

            this.ClientSetupSkeletonAnimation(isActive, item, character, skeletonRenderer, skeletonComponents);

            if (!isActive)
            {
                // not active light
                return;
            }

            var sceneObject              = character.ClientSceneObject;
            var componentLightSource     = this.ClientCreateLightSource(item, character);
            var componentLightInSkeleton = sceneObject.AddComponent <ClientComponentLightInSkeleton>();

            componentLightInSkeleton.Setup(skeletonRenderer,
                                           this.ItemLightConfig,
                                           componentLightSource,
                                           "Weapon",
                                           isPrimaryLight: true);

            skeletonComponents.Add(componentLightInSkeleton);
            skeletonComponents.Add(componentLightSource);
        }
 protected override void PrepareProtoCharacterMob(
     out ProtoCharacterSkeleton skeleton,
     ref double scale,
     DropItemsList lootDroplist)
 {
     skeleton = GetProtoEntity <SkeletonPragmiumQueen>();
 }
Example #6
0
        protected override void PrepareProtoCharacterMob(
            out ProtoCharacterSkeleton skeleton,
            ref double scale,
            DropItemsList lootDroplist)
        {
            skeleton = GetProtoEntity <SkeletonScorpion>();

            // primary loot
            lootDroplist
            .Add <ItemInsectMeatRaw>(count: 1, countRandom: 1)
            .Add <ItemAnimalFat>(count: 3, countRandom: 2)
            .Add <ItemToxin>(count: 2, countRandom: 2)
            .Add <ItemSlime>(count: 2, countRandom: 2)
            // requires device
            .Add <ItemKeiniteRaw>(count: 2,
                                  countRandom: 1,
                                  condition: ItemKeiniteCollector.ConditionHasDeviceEquipped);

            // extra loot
            lootDroplist.Add(condition: SkillHunting.ServerRollExtraLoot,
                             nestedList: new DropItemsList(outputs: 2)
                             .Add <ItemInsectMeatRaw>(count: 1, countRandom: 1)
                             .Add <ItemAnimalFat>(count: 1, countRandom: 1)
                             .Add <ItemToxin>(count: 1, countRandom: 1)
                             .Add <ItemSlime>(count: 1, countRandom: 1));
        }
Example #7
0
        public override void ClientSetupSkeleton(
            IItem item,
            ICharacter character,
            ProtoCharacterSkeleton protoCharacterSkeleton,
            IComponentSkeleton skeletonRenderer,
            List <IClientComponent> skeletonComponents)
        {
            base.ClientSetupSkeleton(item, character, protoCharacterSkeleton, skeletonRenderer, skeletonComponents);

            if (!this.ItemLightConfig.IsLightEnabled)
            {
                return;
            }

            var sceneObject              = character.ClientSceneObject;
            var componentLightSource     = this.ClientCreateLightSource(item, character, sceneObject);
            var componentLightInSkeleton = sceneObject.AddComponent <ClientComponentLightInSkeleton>();

            componentLightInSkeleton.Setup(skeletonRenderer,
                                           this.ItemLightConfig,
                                           componentLightSource,
                                           "Weapon",
                                           isPrimaryLight: false);

            skeletonComponents.Add(componentLightInSkeleton);
            skeletonComponents.Add(componentLightSource);
        }
Example #8
0
 protected override void SharedGetSkeletonProto(
     IDynamicWorldObject gameObject,
     out ProtoCharacterSkeleton protoSkeleton,
     ref double scale)
 {
     protoSkeleton = Api.GetProtoEntity <SkeletonMechBehemoth>();
 }
Example #9
0
 protected override void SharedGetSkeletonProto(
     ICharacter character,
     out ProtoCharacterSkeleton protoSkeleton,
     ref double scale)
 {
     protoSkeleton = GetProtoEntity <SkeletonScorpion>();
 }
Example #10
0
        protected override void PrepareProtoCharacterMob(
            out ProtoCharacterSkeleton skeleton,
            ref double scale,
            DropItemsList lootDroplist)
        {
            skeleton = GetProtoEntity <SkeletonHoneyBadger>();

            // primary loot
            lootDroplist
            .Add <ItemMeatRaw>(count: 1)
            .Add <ItemLeather>(count: 1, countRandom: 1)
            .Add <ItemBones>(count: 1, countRandom: 1);

            // random loot
            lootDroplist.Add(probability: 1 / 2.0,
                             nestedList: new DropItemsList(outputs: 1)
                             .Add <ItemAnimalFat>(count: 1, countRandom: 1)
                             .Add <ItemBones>(count: 1, countRandom: 1));

            // extra loot
            lootDroplist.Add(condition: SkillHunting.ServerRollExtraLoot,
                             nestedList: new DropItemsList(outputs: 2)
                             .Add <ItemMeatRaw>(count: 1, weight: 1 / 2.0)
                             .Add <ItemLeather>(count: 1)
                             .Add <ItemBones>(count: 1)
                             .Add <ItemAnimalFat>(count: 1));
        }
 protected override void PrepareProtoCharacterTurret(
     out ProtoItemWeaponTurret protoItemWeaponTurret,
     out ProtoCharacterSkeleton skeleton,
     ref double scale)
 {
     protoItemWeaponTurret = GetProtoEntity <ItemWeaponTurretHeavy>();
     skeleton = GetProtoEntity <SkeletonTurretHeavy>();
 }
Example #12
0
 protected override void PrepareProtoCharacterMob(
     out ProtoCharacterSkeleton skeleton,
     ref double scale,
     DropItemsList lootDroplist)
 {
     base.PrepareProtoCharacterMob(out skeleton, ref scale, lootDroplist);
     lootDroplist.Clear();
 }
Example #13
0
 protected override void SharedGetSkeletonProto(
     IDynamicWorldObject gameObject,
     out ProtoCharacterSkeleton protoSkeleton,
     ref double scale)
 {
     // no skeleton, only a hoverboard sprite underneath the player character
     protoSkeleton = null;
 }
 protected sealed override void SharedGetSkeletonProto(
     [CanBeNull] ICharacter character,
     out ProtoCharacterSkeleton protoSkeleton,
     ref double scale)
 {
     protoSkeleton = this.protoSkeleton;
     scale         = this.protoSkeletonScale;
 }
Example #15
0
 protected override void SharedGetSkeletonProto(
     ICharacter character,
     out ProtoCharacterSkeleton protoSkeleton,
     ref double scale)
 {
     // the skeleton in Editor mode will not be used, but it must be provided to avoid exception
     protoSkeleton = GetProtoEntity <SkeletonHumanMale>();
 }
Example #16
0
 public override void ClientSetupSkeleton(
     IItem item,
     ICharacter character,
     ProtoCharacterSkeleton protoCharacterSkeleton,
     IComponentSkeleton skeletonRenderer,
     List <IClientComponent> skeletonComponents)
 {
     // do nothing
 }
Example #17
0
        protected override void PrepareProtoCharacterMob(
            out ProtoCharacterSkeleton skeleton,
            ref double scale,
            DropItemsList lootDroplist)
        {
            skeleton = GetProtoEntity <SkeletonSnakeBrown>();

            // primary loot
            lootDroplist
            .Add <ItemToxin>(count: 1, countRandom: 1);
        }
 public virtual void ClientSetupSkeleton(
     IItem item,
     ICharacter character,
     ProtoCharacterSkeleton protoCharacterSkeleton,
     IComponentSkeleton skeletonRenderer,
     List <IClientComponent> skeletonComponents)
 {
     protoCharacterSkeleton.ClientSetupItemInHand(
         skeletonRenderer,
         "WeaponMelee",
         this.CharacterTextureResource);
 }
Example #19
0
        protected override void PrepareProtoCharacterMob(
            out ProtoCharacterSkeleton skeleton,
            ref double scale,
            DropItemsList lootDroplist)
        {
            skeleton = GetProtoEntity <SkeletonPragmiumBeetle>();

            // primary loot
            lootDroplist
            .Add <ItemInsectMeatRaw>(count: 1, countRandom: 1)
            .Add <ItemOrePragmium>(count: 1);
        }
Example #20
0
        protected override void PrepareProtoCharacterMob(
            out ProtoCharacterSkeleton skeleton,
            ref double scale,
            DropItemsList lootDroplist)
        {
            skeleton = GetProtoEntity <SkeletonStarfish>();

            // random loot
            lootDroplist.Add <ItemSlime>(count: 1, countRandom: 1);

            // extra loot
            lootDroplist.Add <ItemSlime>(count: 1, condition: SkillHunting.ServerRollExtraLoot);
        }
Example #21
0
        protected override void PrepareProtoCharacterMob(
            out ProtoCharacterSkeleton skeleton,
            ref double scale,
            DropItemsList lootDroplist)
        {
            skeleton = GetProtoEntity <SkeletonWolf>();

            // primary loot
            lootDroplist
            .Add <ItemFur>(count: 1, probability: 1 / 2.0)
            .Add <ItemBones>(count: 1)
            .Add <ItemAnimalFat>(count: 1, probability: 1 / 3.0);
        }
        protected override void PrepareProtoCharacterMob(
            out ProtoCharacterSkeleton skeleton,
            ref double scale,
            DropItemsList lootDroplist)
        {
            skeleton = GetProtoEntity <SkeletonMutantHyena>();

            // primary loot
            lootDroplist
            .Add <ItemFur>(count: 1, probability: 1 / 2.0)
            .Add <ItemBones>(count: 1)
            // requires device
            .Add <ItemKeiniteRaw>(count: 1, probability: 0.1, condition: ItemKeiniteCollector.ConditionHasDeviceEquipped);
        }
Example #23
0
 public override void ClientSetupSkeleton(
     IItem item,
     ICharacter character,
     ProtoCharacterSkeleton protoCharacterSkeleton,
     IComponentSkeleton skeletonRenderer,
     List <IClientComponent> skeletonComponents)
 {
     base.ClientSetupSkeleton(item,
                              character,
                              protoCharacterSkeleton,
                              skeletonRenderer,
                              skeletonComponents);
     this.ClientRefreshWeaponInHandSprite(item);
 }
Example #24
0
        protected override void PrepareProtoCharacterMob(
            out ProtoCharacterSkeleton skeleton,
            ref double scale,
            DropItemsList lootDroplist)
        {
            skeleton = GetProtoEntity <SkeletonCrab>();

            // random loot
            lootDroplist
            .Add <ItemMeatRaw>(count: 1, probability: 1 / 2.0);

            // extra loot (with much lower chance)
            lootDroplist
            .Add <ItemMeatRaw>(count: 1, probability: 1 / 5.0, condition: SkillHunting.ServerRollExtraLoot);
        }
Example #25
0
        protected override void PrepareProtoCharacterMob(
            out ProtoCharacterSkeleton skeleton,
            ref double scale,
            DropItemsList lootDroplist)
        {
            skeleton = GetProtoEntity <SkeletonLargePragmiumBear>();

            // primary loot
            lootDroplist
            .Add <ItemMeatRaw>(count: 2)
            .Add <ItemFur>(count: 2, countRandom: 1)
            .Add <ItemAnimalFat>(count: 2, countRandom: 1)
            .Add <ItemBones>(count: 2, countRandom: 1)

            .Add <ItemFishBass>(count: 1, countRandom: 1, probability: 1 / 40.0)
            .Add <ItemFishBlackGoby>(count: 1, countRandom: 1, probability: 1 / 40.0)
            .Add <ItemFishBlueGlider>(count: 1, countRandom: 1, probability: 1 / 40.0)
            .Add <ItemFishBream>(count: 1, countRandom: 1, probability: 1 / 40.0)
            .Add <ItemFishCarp>(count: 1, countRandom: 1, probability: 1 / 40.0)
            .Add <ItemFishCatfish>(count: 1, countRandom: 1, probability: 1 / 40.0)
            .Add <ItemFishChub>(count: 1, countRandom: 1, probability: 1 / 40.0)
            .Add <ItemFishCrappie>(count: 1, countRandom: 1, probability: 1 / 40.0)
            .Add <ItemFishGrunt>(count: 1, countRandom: 1, probability: 1 / 40.0)
            .Add <ItemFishKoi>(count: 1, countRandom: 1, probability: 1 / 40.0)
            .Add <ItemFishMackerel>(count: 1, countRandom: 1, probability: 1 / 40.0)
            .Add <ItemFishMahimahi>(count: 1, countRandom: 1, probability: 1 / 40.0)
            .Add <ItemFishPollock>(count: 1, countRandom: 1, probability: 1 / 40.0)
            .Add <ItemFishPuffer>(count: 1, countRandom: 1, probability: 1 / 40.0)
            .Add <ItemFishPyke>(count: 1, countRandom: 1, probability: 1 / 40.0)
            .Add <ItemFishRooster>(count: 1, countRandom: 1, probability: 1 / 40.0)
            .Add <ItemFishSalmon>(count: 1, countRandom: 1, probability: 1 / 40.0)
            .Add <ItemFishSardine>(count: 1, countRandom: 1, probability: 1 / 40.0)
            .Add <ItemFishTrout>(count: 1, countRandom: 1, probability: 1 / 40.0)
            .Add <ItemFishYellowfinTuna>(count: 1, countRandom: 1, probability: 1 / 40.0)

            .Add <ItemOrePragmium>(count: 30, countRandom: 1)

            .Add <ItemPragmiumHeart>(count: 1, countRandom: 1, probability: 1 / 2.0);

            // chance for extra loot (2 bonus items)
            lootDroplist.Add(condition: SkillHunting.ServerRollExtraLoot,
                             nestedList: new DropItemsList(outputs: 2)
                             .Add <ItemMeatRaw>(count: 1)
                             .Add <ItemFur>(count: 1)
                             .Add <ItemAnimalFat>(count: 1)
                             .Add <ItemBones>(count: 1)
                             .Add <ItemOrePragmium>(count: 5));
        }
        protected override void SharedGetSkeletonProto(
            [CanBeNull] ICharacter character,
            out ProtoCharacterSkeleton protoSkeleton,
            ref double scale)
        {
            if (character == null)
            {
                protoSkeleton = SkeletonHumanMale.Value;
                return;
            }

            var isMale = GetPublicState(character).IsMale;

            protoSkeleton = isMale
                                ? (SkeletonHuman)SkeletonHumanMale.Value
                                : (SkeletonHuman)SkeletonHumanFemale.Value;
        }
        protected override void PrepareProtoCharacterMob(
            out ProtoCharacterSkeleton skeleton,
            ref double scale,
            DropItemsList lootDroplist)
        {
            skeleton = GetProtoEntity <SkeletonWildBoar>();

            // primary loot
            lootDroplist
            .Add <ItemMeatRaw>(count: 1)
            .Add <ItemLeather>(count: 1, probability: 1 / 2.0);

            // random loot
            lootDroplist.Add(nestedList: new DropItemsList(outputs: 1)
                             .Add <ItemAnimalFat>(count: 1)
                             .Add <ItemBones>(count: 1));
        }
Example #28
0
        protected override void PrepareProtoCharacterMob(
            out ProtoCharacterSkeleton skeleton,
            ref double scale,
            DropItemsList lootDroplist)
        {
            skeleton = GetProtoEntity <SkeletonCrawler>();

            // primary loot
            lootDroplist
            .Add <ItemToxin>(count: 1)
            .Add <ItemBones>(count: 1);

            // extra loot
            lootDroplist.Add(condition: SkillHunting.ServerRollExtraLoot,
                             nestedList: new DropItemsList(outputs: 1)
                             .Add <ItemToxin>(count: 1)
                             .Add <ItemBones>(count: 1));
        }
Example #29
0
        protected override void PrepareProtoCharacterMob(
            out ProtoCharacterSkeleton skeleton,
            ref double scale,
            DropItemsList lootDroplist)
        {
            skeleton = GetProtoEntity <SkeletonBlackBeetle>();

            // primary loot
            lootDroplist
            .Add <ItemInsectMeatRaw>(count: 1, countRandom: 1)
            .Add <ItemSlime>(count: 2, countRandom: 1);

            // extra loot
            lootDroplist.Add(condition: SkillHunting.ServerRollExtraLoot,
                             nestedList: new DropItemsList(outputs: 1)
                             .Add <ItemInsectMeatRaw>(count: 1)
                             .Add <ItemSlime>(count: 1));
        }
Example #30
0
        protected override void PrepareProtoCharacterMob(
            out ProtoCharacterSkeleton skeleton,
            ref double scale,
            DropItemsList lootDroplist)
        {
            skeleton = GetProtoEntity <SkeletonChicken>();

            // random loot
            lootDroplist.Add(nestedList: new DropItemsList(outputs: 1)
                             .Add <ItemMeatRaw>(count: 1)
                             .Add <ItemEggsRaw>(count: 1, weight: 1 / 2.0));

            // extra loot
            lootDroplist.Add(condition: SkillHunting.ServerRollExtraLoot,
                             nestedList: new DropItemsList(outputs: 1)
                             .Add <ItemMeatRaw>(count: 1)
                             .Add <ItemEggsRaw>(count: 1, weight: 1 / 2.0));
        }