public PersistentEffect(Scroll.Atk_Area_Type etyp, Floor.specific_effect setyp, gridCoordinate ectr, int turnsr, bool m_effect, Attack.Damage fx_dmg_type, int aoe_size, int min_dmg, int max_dmg) { my_effect_type = etyp; my_special_fx = setyp; effect_center = ectr; turns_remaining = turnsr; monster_effect = m_effect; effect_ready = false; effect_size = aoe_size; effect_damage_type = fx_dmg_type; min_damage = min_dmg; max_damage = max_dmg; }
private Scroll process_sDC(ScrollDC rs) { int SIDNO = rs.IDNumber; int SCOST = rs.Cost; string SNAME = rs.Name; Scroll.Atk_Area_Type SAETP = 0; switch (rs.AOEType) { case "singleTile": SAETP = Scroll.Atk_Area_Type.singleTile; break; case "cloudAOE": SAETP = Scroll.Atk_Area_Type.cloudAOE; break; case "solidblockAOE": SAETP = Scroll.Atk_Area_Type.solidblockAOE; break; case "randomblockAOE": SAETP = Scroll.Atk_Area_Type.randomblockAOE; break; case "personalBuff": SAETP = Scroll.Atk_Area_Type.personalBuff; break; case "piercingBolt": SAETP = Scroll.Atk_Area_Type.piercingBolt; break; case "smallfixedAOE": SAETP = Scroll.Atk_Area_Type.smallfixedAOE; break; case "chainedBolt": SAETP = Scroll.Atk_Area_Type.chainedBolt; break; case "enemyDebuff": SAETP = Scroll.Atk_Area_Type.enemyDebuff; break; } int STIER = rs.ScrollTier; int SMANA = rs.ManaCost; int SRANG = rs.ScrollRange; int SAESZ = rs.AOESize; int SMNDM = rs.MinDamage; int SMADM = rs.MaxDamage; Attack.Damage SDMTP = 0; switch (rs.DamageType) { case "Acid": SDMTP = Attack.Damage.Acid; break; case "Crushing": SDMTP = Attack.Damage.Crushing; break; case "Electric": SDMTP = Attack.Damage.Electric; break; case "Fire": SDMTP = Attack.Damage.Fire; break; case "Frost": SDMTP = Attack.Damage.Frost; break; case "Piercing": SDMTP = Attack.Damage.Piercing; break; case "Slashing": SDMTP = Attack.Damage.Slashing; break; } bool SDSWL = false; if (String.Compare("Y", rs.DestroysWalls) == 0) { SDSWL = true; } bool SMLSP = false; if (String.Compare("Y", rs.MeleeSpell) == 0) { SMLSP = true; } int SCHIP = rs.ChainImpacts; Projectile.projectile_type SPRJT = 0; switch (rs.SpellProjectile) { case "Blank": SPRJT = Projectile.projectile_type.Blank; break; case "Arrow": SPRJT = Projectile.projectile_type.Arrow; break; case "Flamebolt": SPRJT = Projectile.projectile_type.Flamebolt; break; case "Javelin": SPRJT = Projectile.projectile_type.Javelin; break; case "AcidCloud": SPRJT = Projectile.projectile_type.AcidCloud; break; case "Crossbow_Bolt": SPRJT = Projectile.projectile_type.Crossbow_Bolt; break; case "Fireball": SPRJT = Projectile.projectile_type.Fireball; break; case "Lightning_Bolt": SPRJT = Projectile.projectile_type.Lightning_Bolt; break; case "Bonespear": SPRJT = Projectile.projectile_type.Bonespear; break; case "Bloody_AcidCloud": SPRJT = Projectile.projectile_type.Bloody_AcidCloud; break; } Projectile.special_anim SSPFX = 0; switch (rs.SpecialAnimation) { case "BloodAcid": SSPFX = Projectile.special_anim.BloodAcid; break; case "Alert": SSPFX = Projectile.special_anim.Alert; break; case "Earthquake": SSPFX = Projectile.special_anim.Earthquake; break; case "None": SSPFX = Projectile.special_anim.None; break; case "Blank": SSPFX = Projectile.special_anim.Blank; break; } Scroll.Status_Type SBFDB = 0; switch (rs.SpellSpecialEffect) { case "Anosmia": SBFDB = Scroll.Status_Type.Anosmia; break; case "Blind": SBFDB = Scroll.Status_Type.Blind; break; case "Deaf": SBFDB = Scroll.Status_Type.Deaf; break; case "LynxFer": SBFDB = Scroll.Status_Type.LynxFer; break; case "PantherFer": SBFDB = Scroll.Status_Type.PantherFer; break; case "TigerFer": SBFDB = Scroll.Status_Type.TigerFer; break; } int SBDDR = rs.SpecialEffectDuration; return(new Scroll(SIDNO, SCOST, SNAME, STIER, SMANA, SRANG, SAESZ, SMNDM, SMADM, SMLSP, SAETP, SPRJT, SDMTP, SDSWL, SCHIP, SBFDB, SBDDR, SSPFX)); }
//OKAY LETS Cut this down to one constructor. What stuff is absolutely vital to make one constructor //And what can be set later. //Start coord and end coord, type of projectile and content manager. //Also whether it's a monster projectile or not + attack area type public Projectile(gridCoordinate start_gCoord, gridCoordinate end_gCoord, projectile_type myType, ref ContentManager cmanage, bool monster_proj, Scroll.Atk_Area_Type atk_a_typ, bool damage_projectile = true) { my_type = myType; int offset = 0; projectile_speed = 240; my_prj_type = my_type; switch (my_prj_type) { case projectile_type.Arrow: my_texture = cmanage.Load <Texture2D>("Projectiles/arrow"); break; case projectile_type.Flamebolt: my_texture = cmanage.Load <Texture2D>("Projectiles/flamebolt"); break; case projectile_type.Frostbolt: my_texture = cmanage.Load <Texture2D>("Projectiles/frostbolt"); break; case projectile_type.Javelin: my_texture = cmanage.Load <Texture2D>("Projectiles/javelin"); break; case projectile_type.Crossbow_Bolt: my_texture = cmanage.Load <Texture2D>("Projectiles/crossbowbolt"); break; case projectile_type.AcidCloud: my_texture = cmanage.Load <Texture2D>("Projectiles/acidblob"); break; case projectile_type.Bloody_AcidCloud: my_texture = cmanage.Load <Texture2D>("Projectiles/blood_acidblob"); break; case projectile_type.Fireball: my_texture = cmanage.Load <Texture2D>("Projectiles/fireball"); break; case projectile_type.Blank: my_texture = cmanage.Load <Texture2D>("Projectiles/blank_projectile"); projectile_speed = 480; break; case projectile_type.Lightning_Bolt: my_texture = cmanage.Load <Texture2D>("Projectiles/lightningbolt"); break; case projectile_type.Bonespear: my_texture = cmanage.Load <Texture2D>("Projectiles/bonespear"); break; } monster_projectile = monster_proj; damaging_projectile = damage_projectile; my_start_coordinate = new gridCoordinate(start_gCoord); my_end_coordinate = new gridCoordinate(end_gCoord); my_current_position = new Vector2((my_start_coordinate.x * 32) + offset, (my_start_coordinate.y * 32) + offset); my_end_position = new Vector2((my_end_coordinate.x * 32) + offset, (my_end_coordinate.y * 32) + offset); my_rectangle = new Rectangle((int)my_current_position.X, (int)my_current_position.Y, 32, 32); attack_type = atk_a_typ; my_special_animation = special_anim.None; my_previous_coordinate = new gridCoordinate(-1, -1); attached_status_effects = new List <StatusEffect>(); Scll = null; Weap = null; }