Exemplo n.º 1
0
        public override bool?CanHitNPC(Projectile projectile, NPC target)
        {
            NPCEdits        modTarget     = target.GetGlobalNPC <NPCEdits>();
            ProjectileEdits modProjectile = projectile.GetGlobalProjectile <ProjectileEdits>();

            if (modProjectile.minionProjectile && target.friendly)
            {
                return(false);
            }
            return(base.CanHitNPC(projectile, target));
        }
Exemplo n.º 2
0
        public override void SetDefaults(Projectile projectile)
        {
            base.SetDefaults(projectile);
            ProjectileEdits modProjectile = projectile.GetGlobalProjectile <ProjectileEdits>();

            if (projectile.type == ProjectileID.BeeArrow || projectile.type == ProjectileID.Hellwing ||
                projectile.type == ProjectileID.SpectreWrath || projectile.type == ProjectileID.Skull ||
                projectile.type == ProjectileID.Bat || projectile.type == ProjectileID.Wasp ||
                projectile.type == ProjectileID.Bee || projectile.type == ProjectileID.MechanicalPiranha ||
                projectile.type == ProjectileID.EatersBite || projectile.type == ProjectileID.TinyEater)
            {
                projectile.ranged = false;
                projectile.arrow  = false;
                projectile.magic  = false;
                projectile.minion = true;
            }
            if (projectile.type == ProjectileID.GreenLaser || projectile.type == ProjectileID.PurpleLaser ||
                projectile.type == ProjectileID.HeatRay || projectile.type == ProjectileID.LaserMachinegun ||
                projectile.type == ProjectileID.LaserMachinegunLaser || projectile.type == ProjectileID.ChargedBlasterCannon ||
                projectile.type == ProjectileID.ChargedBlasterLaser || projectile.type == ProjectileID.ChargedBlasterOrb ||
                projectile.type == ProjectileID.Leaf || projectile.type == ProjectileID.PineNeedleFriendly)
            {
                projectile.magic  = false;
                projectile.ranged = true;
            }
            if (projectile.type == ProjectileID.WoodenBoomerang || projectile.type == ProjectileID.EnchantedBoomerang ||
                projectile.type == ProjectileID.IceBoomerang || projectile.type == ProjectileID.FruitcakeChakram || projectile.type == ProjectileID.ThornChakram ||
                projectile.type == ProjectileID.Flamarang || projectile.type == ProjectileID.FlyingKnife || projectile.type == ProjectileID.LightDisc ||
                projectile.type == ProjectileID.Bananarang || projectile.type == ProjectileID.PossessedHatchet ||
                projectile.type == ProjectileID.ShadowFlameKnife || projectile.type == ProjectileID.VampireKnife ||
                projectile.type == ProjectileID.Daybreak || projectile.type == ProjectileID.Anchor || projectile.type == ProjectileID.ChainGuillotine ||
                projectile.type == ProjectileID.BoxingGlove || projectile.type == ProjectileID.GolemFist || projectile.type == ProjectileID.WoodYoyo ||
                projectile.type == ProjectileID.CorruptYoyo || projectile.type == ProjectileID.CrimsonYoyo || projectile.type == ProjectileID.JungleYoyo ||
                projectile.type == ProjectileID.Code1 || projectile.type == ProjectileID.Valor || projectile.type == ProjectileID.Cascade || projectile.type == ProjectileID.FormatC ||
                projectile.type == ProjectileID.Gradient || projectile.type == ProjectileID.Chik || projectile.type == ProjectileID.HelFire || projectile.type == ProjectileID.Amarok ||
                projectile.type == ProjectileID.Code2 || projectile.type == ProjectileID.Yelets || projectile.type == ProjectileID.RedsYoyo || projectile.type == ProjectileID.ValkyrieYoyo ||
                projectile.type == ProjectileID.Kraken || projectile.type == ProjectileID.TheEyeOfCthulhu || projectile.type == ProjectileID.Terrarian)
            {
                projectile.melee  = false;
                projectile.magic  = false;
                projectile.thrown = true;
            }
            ProjectileMethods.SetDefaults(projectile);
        }
Exemplo n.º 3
0
        public override void ModifyHitByProjectile(NPC npc, Projectile projectile, ref int damage, ref float knockback, ref bool crit, ref int hitDirection)
        {
            ProjectileEdits modProjectile = projectile.GetGlobalProjectile <ProjectileEdits>();
            NPCEdits        modNPC        = npc.GetGlobalNPC <NPCEdits>();

            if (projectile.magic || modProjectile.chemical)
            {
                damage += npc.defense / 2;
                if (projectile.magic)
                {
                    damage -= modNPC.magicDefense / 2;
                }
                if (modProjectile.chemical)
                {
                    damage -= modNPC.magicDefense / 4 - npc.defense / 4;
                }
            }
            base.ModifyHitByProjectile(npc, projectile, ref damage, ref knockback, ref crit, ref hitDirection);
        }
Exemplo n.º 4
0
 public override bool PreHurt(bool pvp, bool quiet, ref int damage, ref int hitDirection, ref bool crit, ref bool customDamage, ref bool playSound, ref bool genGore, ref PlayerDeathReason damageSource)
 {
     if (immune)
     {
         return(false);
     }
     if (damageSource.SourceNPCIndex >= 0 && damageSource.SourceNPCIndex < Main.maxNPCs && Main.npc[damageSource.SourceNPCIndex] != null)
     {
         if (player.aggro < -250 && enInvis)
         {
             return(false);
         }
         NPCEdits modNPC = Main.npc[damageSource.SourceNPCIndex].GetGlobalNPC <NPCEdits>();
         if (modNPC.atkCooldown > 0)
         {
             return(false);
         }
     }
     if (crit)
     {
         damage /= 2;
     }
     if (damageSource.SourceProjectileIndex >= 0 && damageSource.SourceProjectileIndex < Main.maxProjectiles && Main.projectile[damageSource.SourceProjectileIndex] != null)
     {
         Projectile      projectile    = Main.projectile[damageSource.SourceProjectileIndex];
         ProjectileEdits modProjectile = projectile.GetGlobalProjectile <ProjectileEdits>();
         if (projectile.magic || modProjectile.chemical)
         {
             if (Main.expertMode)
             {
                 damage += player.statDefense * 3 / 4;
                 if (projectile.owner < 255)
                 {
                     if (Main.player[projectile.owner].armorPenetration > 0)
                     {
                         damage -= Main.player[projectile.owner].armorPenetration;
                     }
                 }
                 if (projectile.magic)
                 {
                     damage -= magicDefense * 3 / 4;
                 }
                 if (modProjectile.chemical)
                 {
                     damage -= magicDefense * 3 / 8 - player.statDefense * 3 / 8;
                 }
             }
             else
             {
                 damage += player.statDefense / 2;
                 if (projectile.magic)
                 {
                     damage -= magicDefense / 2;
                 }
                 if (modProjectile.chemical)
                 {
                     damage -= magicDefense / 4 - player.statDefense / 4;
                 }
             }
         }
     }
     if (pvp && damageSource.SourceItemType > 0 && damageSource.SourcePlayerIndex >= 0 && damageSource.SourcePlayerIndex < Main.maxPlayers && Main.player[damageSource.SourcePlayerIndex] != null)
     {
         Player sourcePlayer = Main.player[damageSource.SourcePlayerIndex];
         Item   item         = sourcePlayer.HeldItem;
         if (damageSource.SourceItemType == item.type)
         {
             ItemEdits modItem = item.GetGlobalItem <ItemEdits>();
             if (item.magic || modItem.chemical)
             {
                 if (sourcePlayer.armorPenetration > 0)
                 {
                     damage -= player.armorPenetration;
                 }
                 if (Main.expertMode)
                 {
                     damage += player.statDefense * 3 / 4;
                     if (item.magic)
                     {
                         damage -= magicDefense * 3 / 4;
                     }
                     if (modItem.chemical)
                     {
                         damage -= magicDefense * 3 / 8 - player.statDefense * 3 / 8;
                     }
                 }
                 else
                 {
                     damage += player.statDefense / 2;
                     if (item.magic)
                     {
                         damage -= magicDefense / 2;
                     }
                     if (modItem.chemical)
                     {
                         damage -= magicDefense / 4 - player.statDefense / 4;
                     }
                 }
             }
         }
     }
     if (crit)
     {
         damage *= 2;
     }
     if (gellyfishArmor)
     {
         if (damageSource.SourceNPCIndex >= 0 && damageSource.SourceNPCIndex < Main.maxNPCs && Main.npc[damageSource.SourceNPCIndex] != null)
         {
             NPC npc = Main.npc[damageSource.SourceNPCIndex];
             player.ApplyDamageToNPC(npc, (int)((1 + (player.statDefense / 2)) * player.minionDamage), 5f, npc.direction * -1, false);
         }
         else if (damageSource.SourcePlayerIndex >= 0 && damageSource.SourcePlayerIndex < Main.maxPlayers && Main.player[damageSource.SourcePlayerIndex] != null)
         {
             Player            sourcePlayer = Main.player[damageSource.SourcePlayerIndex];
             PlayerDeathReason reason       = new PlayerDeathReason();
             reason.SourcePlayerIndex  = player.whoAmI;
             reason.SourceCustomReason = Language.GetTextValue("Mods.ClassOverhaul.CommonName.Gellyfish");
             sourcePlayer.Hurt(reason, (int)((1 + (player.statDefense / 2)) * player.minionDamage), sourcePlayer.direction * -1, true, false, false);
         }
     }
     return(base.PreHurt(pvp, quiet, ref damage, ref hitDirection, ref crit, ref customDamage, ref playSound, ref genGore, ref damageSource));
 }