Beispiel #1
0
        public override bool SharedOnDamage(
            WeaponFinalCache weaponCache,
            IWorldObject targetObject,
            double damagePreMultiplier,
            double damagePostMultiplier,
            out double obstacleBlockDamageCoef,
            out double damageApplied)
        {
            var result = base.SharedOnDamage(weaponCache,
                                             targetObject,
                                             damagePreMultiplier,
                                             damagePostMultiplier,
                                             out obstacleBlockDamageCoef,
                                             out damageApplied);

            if (!result)
            {
                return(false);
            }

            if (IsClient)
            {
                return(true);
            }

            ObjectMineralPragmiumSource.ServerTryClaimPragmiumClusterNearCharacter(weaponCache.Character);
            return(true);
        }
        public override void ServerOnDestroy(IStaticWorldObject gameObject)
        {
            var tilePosition = gameObject.TilePosition;

            // spawn Pragmium nodes on explosion (right after the damage is dealt to all the objects there)
            ServerTimersSystem.AddAction(
                delaySeconds: this.ExplosionPreset.ServerDamageApplyDelay * 1.01,
                () => ObjectMineralPragmiumSource.ServerOnExplode(tilePosition, this.DamageRadius));

            base.ServerOnDestroy(gameObject);
        }