예제 #1
0
        // Function from file: blob_mobs.dm
        public override bool death(bool?gibbed = null, bool?toast = null)
        {
            EffectSystem_SmokeSpread_Chem S = null;
            dynamic location = null;

            base.death(true, toast);
            S        = new EffectSystem_SmokeSpread_Chem();
            location = GlobalFuncs.get_turf(this);
            this.create_reagents(10);

            if (this.overmind != null && Lang13.Bool(this.overmind.blob_reagent_datum))
            {
                this.reagents.add_reagent(this.overmind.blob_reagent_datum.id, 10);
            }
            else
            {
                this.reagents.add_reagent("spore", 10);
            }
            S.attach(location);
            S.set_up(this.reagents, this.death_cloud_size, location);
            S.start();
            this.ghostize();
            GlobalFuncs.qdel(this);
            return(false);
        }
예제 #2
0
        // Function from file: shadowling_abilities.dm
        public override bool cast(dynamic targets = null, dynamic thearea = null, dynamic user = null)
        {
            Obj_Item_Weapon_ReagentContainers_Glass_Beaker_Large B = null;
            EffectSystem_SmokeSpread_Chem S = null;


            if (!this.shadowling_check(targets))
            {
                this.revert_cast();
                return(false);
            }
            ((Ent_Static)targets).visible_message("<span class='warning'>" + targets + " bends over and coughs out a cloud of black smoke!</span>");
            targets.WriteMsg("<span class='shadowling'>You regurgitate a vast cloud of blinding smoke.</span>");
            B = new Obj_Item_Weapon_ReagentContainers_Glass_Beaker_Large(targets.loc);
            B.reagents.clear_reagents();
            B.invisibility = Int32.MaxValue;
            B.reagents.add_reagent("blindness_smoke", 10);
            S = new EffectSystem_SmokeSpread_Chem();
            S.attach(B);

            if (S != null)
            {
                S.set_up(B.reagents, 4, 0, B.loc);
                S.start();
            }
            GlobalFuncs.qdel(B);
            return(false);
        }
예제 #3
0
        // Function from file: pyrotechnics.dm
        public override void on_reaction(Reagents holder = null, double?created_volume = null)
        {
            double  smoke_radius            = 0;
            dynamic location                = null;
            EffectSystem_SmokeSpread_Chem S = null;


            if (Lang13.Bool(holder.has_reagent("stabilizing_agent")))
            {
                return;
            }
            holder.remove_reagent("smoke_powder", created_volume);
            smoke_radius = Num13.Round(Math.Sqrt((created_volume ?? 0) / 2), 1);
            location     = GlobalFuncs.get_turf(holder.my_atom);
            S            = new EffectSystem_SmokeSpread_Chem();
            S.attach(location);
            GlobalFuncs.playsound(location, "sound/effects/smoke.ogg", 50, 1, -3);

            if (S != null)
            {
                S.set_up(holder, smoke_radius, 0, location);
                S.start();
            }

            if (holder != null && Lang13.Bool(holder.my_atom))
            {
                holder.clear_reagents();
            }
            return;
        }