public ScriptRunner(Script script, Battle battle, PartyMember actor, PartyMember target, ScriptRunnerMode mode = ScriptRunnerMode.Normal)
 {
     this.script = script;
     scriptActionIndex = 0;
     this.battle = battle;
     this.actor = actor;
     this.target = target;
     time = 0.0f;
     nestedScriptRunners = new List<NestedScriptRunner>();
     this.mode = mode;
     blocked = false;
 }
Пример #2
0
        public Trap(Sprite sprite, Vector2 position, Attributes attributes, WeaponData weaponData, PartyMember setter, Battle battle)
            : base(attributes)
        {
            if (attributes == null)
                throw new Exception("Attributes cannot be null");
            if (setter == null)
                throw new Exception("PartyMember setter cannot be null");
            if (battle == null)
                throw new Exception("Battle cannot be null");

            this.setter = setter;
            this.battle = battle;
            Data = weaponData;
            entity = new Entity(sprite, position);
            entity.RenderShadow = true;
            entity.UpdateExtensions.Add(new UpdateExtension((updateExtension, delta) => Update(delta)));
            Scene.AddEntity(entity);
        }
 protected BattleState(Battle battle)
 {
     if (battle == null)
         throw new Exception("Battle cannot be null");
     Battle = battle;
 }
        public static void AddExplosion(Vector2 position, Battle battle)
        {
            if (battle == null)
                throw new Exception("Battle cannot be null");

            TextureData cloudTextureData = ResourceManager.GetTextureData("particles/cloud_1");
            Scene.AddEntity(new ParticleEffect(position, Color.Red, 12, cloudTextureData, 800.0f, 500.0f, 0.8f, 0.6f, true));
            Scene.AddEntity(new ParticleEffect(position, Color.Orange, 12, cloudTextureData, 800.0f, 500.0f, 0.8f, 0.6f, true));
            Scene.AddEntity(new ParticleEffect(position, Color.White, 12, cloudTextureData, 800.0f, 500.0f, 0.8f, 0.6f, true));
            battle.Camera.Shake(new Vector2(4.0f), 0.1f);
            battle.SetCameraUpdateDelay(1.0f);
        }
 public static ParticleEffect AddSmokePuff(Vector2 position, Battle battle)
 {
     if (battle == null)
         throw new Exception("Battle cannot be null");
     ParticleEffect particleEffect = new ParticleEffect(position, Color.White, 20, ResourceManager.GetTextureData("particles/cloud_1"), 500.0f, 500.0f, 0.6f, 0.6f, true);
     Scene.AddEntity(particleEffect);
     battle.Camera.Shake(new Vector2(3.0f, 0.0f), 0.1f);
     return particleEffect;
 }
        public void Kill(Battle battle)
        {
            if (BattleEntity != null)
                BattleEntity.Kill();

            battle.GetPartyBattleLayoutForPartyMember(this).Try(pbl => pbl.RemovePartyMember(this));
            battle.GetPartyForPartyMember(this).Try(pbl => pbl.RemovePartyMember(this));
        }
        public void ApplyStatusEffectsFromAttributes(PartyMember inflictor, Attributes attributes, Battle battle)
        {
            bool sameParty = battle.GetPartyForPartyMember(inflictor) == battle.GetPartyForPartyMember(this);

            StatusEffect statusEffect;
            switch (attributes.Status)
            {
            case Status.Poisonous: statusEffect = new StatusEffects.Poison(); break;
            case Status.Shocking: statusEffect = new StatusEffects.Paralysis(); break;
            case Status.Scary: statusEffect = sameParty || !inflictor.Alive ? null : new StatusEffects.Fear(inflictor); break;
            default: statusEffect = null; break;
            }
            if (statusEffect != null)
                AddStatusEffect(statusEffect);

            if (attributes.Affiliation == Affiliation.Doom && !sameParty && inflictor.Alive)
                AddStatusEffect(new StatusEffects.Doom(inflictor));
        }