// Function from file: organ_internal.dm
        public virtual void Insert(dynamic M = null, int?special = null)
        {
            special = special ?? 0;

            Obj_Item_Organ_Internal replaced = null;


            if (!(M is Mob_Living_Carbon) || this.owner == M)
            {
                return;
            }
            replaced = ((Mob)M).getorganslot(this.slot);

            if (replaced != null)
            {
                replaced.Remove(M, true);
            }
            this.owner = M;
            M.internal_organs.Or(this);
            this.loc = null;

            if (Lang13.Bool(this.organ_action_name))
            {
                this.action_button_name = this.organ_action_name;
            }
            return;
        }
Beispiel #2
0
        // Function from file: augmented_eyesight.dm
        public override void on_refund(Mob user = null)
        {
            Obj_Item_Organ_Internal O = null;

            O = user.getorganslot("eye_ling");

            if (O != null)
            {
                O.Remove(user);
                GlobalFuncs.qdel(O);
            }
            return;
        }
Beispiel #3
0
        // Function from file: limb augmentation.dm
        public override bool success(dynamic user = null, Mob target = null, string target_zone = null, dynamic tool = null, Surgery surgery = null)
        {
            Mob H = null;
            Obj_Item_Organ_Internal I = null;


            if (Lang13.Bool(this.L))
            {
                if (target is Mob_Living_Carbon_Human)
                {
                    H = target;
                    ((Ent_Static)user).visible_message("" + user + " successfully augments " + target + "'s " + GlobalFuncs.parse_zone(target_zone) + "!", "<span class='notice'>You successfully augment " + target + "'s " + GlobalFuncs.parse_zone(target_zone) + ".</span>");
                    this.L.loc           = GlobalFuncs.get_turf(target);
                    ((dynamic)H).organs -= this.L;

                    switch ((string)(target_zone))
                    {
                    case "r_leg":
                        ((dynamic)H).organs += new Obj_Item_Organ_Limb_Robot_RLeg(this);
                        break;

                    case "l_leg":
                        ((dynamic)H).organs += new Obj_Item_Organ_Limb_Robot_LLeg(this);
                        break;

                    case "r_arm":
                        ((dynamic)H).organs += new Obj_Item_Organ_Limb_Robot_RArm(this);
                        break;

                    case "l_arm":
                        ((dynamic)H).organs += new Obj_Item_Organ_Limb_Robot_LArm(this);
                        break;

                    case "head":
                        ((dynamic)H).organs += new Obj_Item_Organ_Limb_Robot_Head(this);
                        break;

                    case "chest":

                        foreach (dynamic _a in Lang13.Enumerate(target.getorganszone(target_zone, true), typeof(Obj_Item_Organ_Internal)))
                        {
                            I = _a;


                            if (I.status == 1)
                            {
                                I.Remove(target, true);
                                GlobalFuncs.qdel(I);
                            }
                        }
                        ((dynamic)H).organs += new Obj_Item_Organ_Limb_Robot_Chest(this);
                        break;
                    }
                    user.drop_item();
                    GlobalFuncs.qdel(tool);
                    ((dynamic)H).update_damage_overlays(0);
                    ((dynamic)H).update_augments();
                    GlobalFuncs.add_logs(user, target, "augmented", null, "by giving him new " + GlobalFuncs.parse_zone(target_zone) + " INTENT: " + String13.ToUpper(user.a_intent));
                }
            }
            else
            {
                user.WriteMsg("<span class='warning'>" + target + " has no organic " + GlobalFuncs.parse_zone(target_zone) + " there!</span>");
            }
            return(true);
        }
Beispiel #4
0
        // Function from file: headcrab.dm
        public override dynamic sting_action(Mob user = null, Ent_Static target = null)
        {
            Mind    M                 = null;
            ByTable organs            = null;
            Obj_Item_Organ_Internal I = null;
            Mob_Living_Carbon_Human H = null;
            Mob_Living_Silicon      S = null;
            dynamic turf              = null;
            Mob_Living_SimpleAnimal_Hostile_Headcrab crab = null;
            Obj_Item_Organ_Internal I2 = null;

            M      = user.mind;
            organs = user.getorganszone("head", true);

            foreach (dynamic _a in Lang13.Enumerate(organs, typeof(Obj_Item_Organ_Internal)))
            {
                I = _a;

                I.Remove(user, true);
            }
            GlobalFuncs.explosion(GlobalFuncs.get_turf(user), 0, 0, 2, 0, null, null, null, true);

            foreach (dynamic _b in Lang13.Enumerate(Map13.FetchInRange(user, 2), typeof(Mob_Living_Carbon_Human)))
            {
                H = _b;

                H.WriteMsg("<span class='userdanger'>You are blinded by a shower of blood!</span>");
                H.Stun(1);
                H.blur_eyes(20);
                H.adjust_eye_damage(5);
                H.confused += 3;
            }

            foreach (dynamic _c in Lang13.Enumerate(Map13.FetchInRange(user, 2), typeof(Mob_Living_Silicon)))
            {
                S = _c;

                S.WriteMsg("<span class='userdanger'>Your sensors are disabled by a shower of blood!</span>");
                S.Weaken(3);
            }
            turf = GlobalFuncs.get_turf(user);
            Task13.Schedule(5, (Task13.Closure)(() => {
                crab = new Mob_Living_SimpleAnimal_Hostile_Headcrab(turf);

                foreach (dynamic _d in Lang13.Enumerate(organs, typeof(Obj_Item_Organ_Internal)))
                {
                    I2 = _d;

                    I2.loc = crab;
                }
                crab.origin = M;

                if (crab.origin != null)
                {
                    crab.origin.active = true;
                    crab.origin.transfer_to(crab);
                    crab.WriteMsg("<span class='warning'>You burst out of the remains of your former body in a shower of gore!</span>");
                }
                return;
            }));
            user.gib();
            GlobalFuncs.feedback_add_details("changeling_powers", "LR");
            return(1);
        }