Ejemplo n.º 1
0
        // Function from file: ninjaDrainAct.dm
        public override dynamic ninjadrain_act(Obj_Item_Clothing_Suit_Space_SpaceNinja S = null, Ent_Static H = null, Obj_Item_Clothing_Gloves_SpaceNinja G = null)
        {
            dynamic _default = null;


            if (!(S != null) || !(H != null) || !(G != null))
            {
                return("INVALID");
            }
            _default = 0;

            if (Lang13.Bool(this.charge))
            {
                if (G.candrain && GlobalFuncs.do_after(H, 30, null, this))
                {
                    _default = this.charge;

                    if (Convert.ToDouble(S.cell.charge + this.charge) > (S.cell.maxcharge ?? 0))
                    {
                        S.cell.charge = S.cell.maxcharge;
                    }
                    else
                    {
                        S.cell.charge += this.charge;
                    }
                    this.charge = 0;
                    this.corrupt();
                    this.updateicon();
                }
            }
            return(_default);
        }
        // Function from file: gloves.dm
        public override dynamic Touch(Ent_Static A = null, bool proximity = false)
        {
            Ent_Static H = null;
            Obj_Item_Clothing_Suit_Space_SpaceNinja suit = null;
            dynamic drained = null;


            if (!this.candrain || this.draining)
            {
                return(0);
            }

            if (!(this.loc is Mob_Living_Carbon_Human))
            {
                return(0);
            }
            H    = this.loc;
            suit = ((dynamic)H).wear_suit;

            if (!(suit is Obj_Item_Clothing_Suit_Space_SpaceNinja))
            {
                return(0);
            }

            if (A is Tile)
            {
                return(0);
            }

            if (!proximity)
            {
                return(0);
            }
            A.add_fingerprint(H);
            this.draining = true;
            drained       = A.ninjadrain_act(suit, H, this);
            this.draining = false;

            if (Lang13.Bool(Lang13.IsNumber(drained)))
            {
                if (Lang13.Bool(drained))
                {
                    ((dynamic)H).WriteMsg(new Txt("<span class='notice'>Gained <B>").item(drained).str("</B> energy from ").the(A).item().str(".</span>").ToString());
                }
                else
                {
                    ((dynamic)H).WriteMsg(new Txt("<span class='danger'>").The(A).item().str(" has run dry of power, you must find another source!</span>").ToString());
                }
            }
            else
            {
                drained = 0;
            }
            return(drained);
        }
Ejemplo n.º 3
0
        // Function from file: ninjaDrainAct.dm
        public override dynamic ninjadrain_act(Obj_Item_Clothing_Suit_Space_SpaceNinja S = null, Ent_Static H = null, Obj_Item_Clothing_Gloves_SpaceNinja G = null)
        {
            dynamic _default = null;

            bool   maxcapacity = false;
            double drain       = 0;
            EffectSystem_SparkSpread spark_system = null;


            if (!(S != null) || !(H != null) || !(G != null))
            {
                return("INVALID");
            }
            maxcapacity = false;
            drain       = 0;
            _default    = 0;

            if (this.charge != 0)
            {
                spark_system = new EffectSystem_SparkSpread();
                spark_system.set_up(5, 0, this.loc);

                while (G.candrain && this.charge > 0 && !maxcapacity)
                {
                    drain = Rand13.Int(G.mindrain, G.maxdrain);

                    if (this.charge < drain)
                    {
                        drain = this.charge;
                    }

                    if (Convert.ToDouble(S.cell.charge + drain) > (S.cell.maxcharge ?? 0))
                    {
                        drain       = (S.cell.maxcharge ?? 0) - Convert.ToDouble(S.cell.charge);
                        maxcapacity = true;
                    }

                    if (GlobalFuncs.do_after(H, 10, null, this))
                    {
                        spark_system.start();
                        GlobalFuncs.playsound(this.loc, "sparks", 50, 1);
                        this.charge   -= drain;
                        S.cell.charge += drain;
                        _default      += drain;
                    }
                    else
                    {
                        break;
                    }
                }
            }
            return(_default);
        }
Ejemplo n.º 4
0
        // Function from file: ninjaDrainAct.dm
        public override dynamic ninjadrain_act(Obj_Item_Clothing_Suit_Space_SpaceNinja S = null, Ent_Static H = null, Obj_Item_Clothing_Gloves_SpaceNinja G = null)
        {
            dynamic _default = null;

            dynamic location         = null;
            Mob_Living_Silicon_Ai AI = null;
            Tech current_data        = null;
            Tech analyzing_data      = null;


            if (!(S != null) || !(H != null) || !(G != null))
            {
                return("INVALID");
            }
            _default = "RDHACKFAIL";
            ((dynamic)H).WriteMsg(new Txt("<span class='notice'>Hacking ").the(this).item().str("...</span>").ToString());
            Task13.Schedule(0, (Task13.Closure)(() => {
                location = GlobalFuncs.get_turf(H);

                foreach (dynamic _a in Lang13.Enumerate(GlobalVars.player_list, typeof(Mob_Living_Silicon_Ai)))
                {
                    AI = _a;

                    AI.WriteMsg("<span class='userdanger'>Network Alert: Hacking attempt detected" + (Lang13.Bool(location) ? " in " + location : ". Unable to pinpoint location") + "</span>.");
                }
                return;
            }));

            if (this.files != null && this.files.known_tech.len != 0)
            {
                foreach (dynamic _c in Lang13.Enumerate(S.stored_research, typeof(Tech)))
                {
                    current_data = _c;

                    ((dynamic)H).WriteMsg(new Txt("<span class='notice'>Checking ").the(current_data.name).item().str(" database.</span>").ToString());

                    if (GlobalFuncs.do_after(H, S.s_delay, null, this) && G.candrain && this != null)
                    {
                        foreach (dynamic _b in Lang13.Enumerate(this.files.known_tech, typeof(Tech)))
                        {
                            analyzing_data = _b;


                            if (current_data.id == analyzing_data.id)
                            {
                                if (analyzing_data.level > current_data.level)
                                {
                                    ((dynamic)H).WriteMsg("<span class='notice'>Database:</span> <b>UPDATED</b>.");
                                    current_data.level = analyzing_data.level;
                                    _default           = "RDHACK";
                                }
                                break;
                            }
                        }
                    }
                    else
                    {
                        break;
                    }
                }
            }
            ((dynamic)H).WriteMsg("<span class='notice'>Data analyzed. Process finished.</span>");
            return(_default);
        }
Ejemplo n.º 5
0
        // Function from file: ninjaDrainAct.dm
        public override dynamic ninjadrain_act(Obj_Item_Clothing_Suit_Space_SpaceNinja S = null, Ent_Static H = null, Obj_Item_Clothing_Gloves_SpaceNinja G = null)
        {
            dynamic _default = null;

            bool     maxcapacity            = false;
            int      drain                  = 0;
            Powernet PN                     = null;
            int      drained                = 0;
            Obj_Machinery_Power_Terminal T  = null;
            Obj_Machinery_Power          AP = null;


            if (!(S != null) || !(H != null) || !(G != null))
            {
                return("INVALID");
            }
            maxcapacity = false;
            drain       = 0;
            _default    = 0;
            PN          = this.powernet;

            while (G.candrain && !maxcapacity && this != null)
            {
                drain   = Num13.Floor(Rand13.Int(G.mindrain, G.maxdrain) / 2);
                drained = 0;

                if (PN != null && GlobalFuncs.do_after(H, 10, null, this))
                {
                    drained  = Num13.MinInt(drain, ((int)(PN.avail)));
                    PN.load += drained;

                    if (drained < drain)
                    {
                        foreach (dynamic _a in Lang13.Enumerate(PN.nodes, typeof(Obj_Machinery_Power_Terminal)))
                        {
                            T = _a;


                            if (T.master is Obj_Machinery_Power_Apc)
                            {
                                AP = T.master;

                                if (Lang13.Bool(((dynamic)AP).operating) && Lang13.Bool(((dynamic)AP).cell) && Convert.ToDouble(((dynamic)AP).cell.charge) > 0)
                                {
                                    ((dynamic)AP).cell.charge = Num13.MaxInt(0, Convert.ToInt32(((dynamic)AP).cell.charge - 5));
                                    drained += 5;
                                }
                            }
                        }
                    }
                }
                else
                {
                    break;
                }
                S.cell.charge += drained;

                if (Convert.ToDouble(S.cell.charge) > (S.cell.maxcharge ?? 0))
                {
                    _default     += drained - Convert.ToDouble(S.cell.charge - S.cell.maxcharge);
                    S.cell.charge = S.cell.maxcharge;
                    maxcapacity   = true;
                }
                else
                {
                    _default += drained;
                }
                S.spark_system.start();
            }
            return(_default);
        }