示例#1
0
        // Function from file: monkey.dm
        public Mob_Living_Carbon_Monkey(dynamic loc = null) : base((object)(loc))
        {
            Obj_Item_Organ_Internal I = null;

            this.verbs.Add(typeof(Mob_Living).GetMethod("mob_sleep"));
            this.verbs.Add(typeof(Mob_Living).GetMethod("lay_down"));
            this.gender    = Rand13.Pick(new object [] { GlobalVars.MALE, GlobalVars.FEMALE });
            this.real_name = this.name;

            if (GlobalVars.good_mutations.len != 0)
            {
                this.initialize();
            }
            this.internal_organs.Add(new Obj_Item_Organ_Internal_Appendix());
            this.internal_organs.Add(new Obj_Item_Organ_Internal_Heart());
            this.internal_organs.Add(new Obj_Item_Organ_Internal_Brain());

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

                I.Insert(this);
            }
            // Warning: Super call was HERE! If anything above HERE is needed by the super call, it might break!;
            return;
        }
        // Function from file: headcrab.dm
        public void Infect(dynamic victim = null)
        {
            Obj_Item_Organ_Internal_BodyEgg_ChangelingEgg egg = null;
            Obj_Item_Organ_Internal I = null;

            egg = new Obj_Item_Organ_Internal_BodyEgg_ChangelingEgg(victim);
            egg.Insert(victim);

            if (this.origin != null)
            {
                egg.origin = this.origin;
            }
            else if (this.mind != null)
            {
                egg.origin = this.mind;
            }

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

                I.loc = egg;
            }
            this.visible_message("<span class='warning'>" + this + " plants something in " + victim + "'s flesh!</span>", "<span class='danger'>We inject our egg into " + victim + "'s body!</span>");
            this.egg_lain = true;
            return;
        }
        // Function from file: headcrab.dm
        public void Pop(  )
        {
            Mob_Living_Carbon_Monkey M = null;
            Obj_Item_Organ_Internal  I = null;

            M = new Mob_Living_Carbon_Monkey(this.owner);
            this.owner.stomach_contents.Add(M);

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

                I.Insert(M, 1);
            }

            if (this.origin != null && Lang13.Bool(this.origin.current) && Convert.ToInt32(this.origin.current.stat) == 2)
            {
                this.origin.transfer_to(M);

                if (!(this.origin.changeling != null))
                {
                    M.make_changeling();
                }

                if (this.origin.changeling.can_absorb_dna(M, this.owner))
                {
                    this.origin.changeling.add_new_profile(this.owner, M);
                }
                this.origin.changeling.purchasedpowers.Add(new Obj_Effect_ProcHolder_Changeling_Humanform(null));
                M.key = this.origin.key;
            }
            ((Mob)this.owner).gib();
            return;
        }
示例#4
0
        // 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;
        }
示例#5
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;
        }
示例#6
0
        // Function from file: alien.dm
        public Mob_Living_Carbon_Alien(dynamic loc = null) : base((object)(loc))
        {
            Obj_Item_Organ_Internal I = null;

            this.verbs.Add(typeof(Mob_Living).GetMethod("mob_sleep"));
            this.verbs.Add(typeof(Mob_Living).GetMethod("lay_down"));
            this.internal_organs.Add(new Obj_Item_Organ_Internal_Brain_Alien());
            this.internal_organs.Add(new Obj_Item_Organ_Internal_Alien_Hivenode());

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

                I.Insert(this);
            }
            this.AddAbility(new Obj_Effect_ProcHolder_Alien_Nightvisiontoggle(null));
            // Warning: Super call was HERE! If anything above HERE is needed by the super call, it might break!;
            return;
        }
示例#7
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);
        }
        // Function from file: organ_manipulation.dm
        public override int preop(dynamic user = null, Mob target = null, string target_zone = null, dynamic tool = null, Surgery surgery = null)
        {
            ByTable organs            = null;
            Obj_Item_Organ_Internal O = null;

            this.I = null;

            if (GlobalFuncs.isorgan(tool))
            {
                this.current_type = "insert";
                this.I            = tool;

                if (target_zone != this.I.zone || target.getorganslot(this.I.slot) != null)
                {
                    user.WriteMsg("<span class='notice'>There is no room for " + this.I + " in " + target + "'s " + GlobalFuncs.parse_zone(target_zone) + "!</span>");
                    return(-1);
                }
                ((Ent_Static)user).visible_message("" + user + " begins to insert " + tool + " into " + target + "'s " + GlobalFuncs.parse_zone(target_zone) + ".", "<span class='notice'>You begin to insert " + tool + " into " + target + "'s " + GlobalFuncs.parse_zone(target_zone) + "...</span>");
            }
            else if (this.implements_extract.Contains(this.implement_type))
            {
                this.current_type = "extract";
                organs            = target.getorganszone(target_zone);

                if (!(organs.len != 0))
                {
                    user.WriteMsg("<span class='notice'>There is no removeable organs in " + target + "'s " + GlobalFuncs.parse_zone(target_zone) + "!</span>");
                    return(-1);
                }
                else
                {
                    foreach (dynamic _a in Lang13.Enumerate(organs, typeof(Obj_Item_Organ_Internal)))
                    {
                        O = _a;

                        O.on_find(user);
                        organs.Remove(O);
                        organs[O.name] = O;
                    }
                    this.I = Interface13.Input("Remove which organ?", "Surgery", null, null, organs, InputType.Null | InputType.Any);

                    if (Lang13.Bool(this.I) && Lang13.Bool(user) && target != null && ((Ent_Static)user).Adjacent(target) && ((Mob)user).get_active_hand() == tool)
                    {
                        this.I = organs[this.I];

                        if (!Lang13.Bool(this.I))
                        {
                            return(-1);
                        }
                        ((Ent_Static)user).visible_message("" + user + " begins to extract " + this.I + " from " + target + "'s " + GlobalFuncs.parse_zone(target_zone) + ".", "<span class='notice'>You begin to extract " + this.I + " from " + target + "'s " + GlobalFuncs.parse_zone(target_zone) + "...</span>");
                    }
                    else
                    {
                        return(-1);
                    }
                }
            }
            else if (this.implements_mend.Contains(this.implement_type))
            {
                this.current_type = "mend";
                ((Ent_Static)user).visible_message("" + user + " begins to mend the incision in " + target + "'s " + GlobalFuncs.parse_zone(target_zone) + ".", "<span class='notice'>You begin to mend the incision in " + target + "'s " + GlobalFuncs.parse_zone(target_zone) + "...</span>");
            }
            else if (tool is Obj_Item_Weapon_ReagentContainers_Food_Snacks_Organ)
            {
                user.WriteMsg("<span class='warning'>" + tool + " was biten by someone! It's too damaged to use!</span>");
                return(-1);
            }
            return(0);
        }
示例#9
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);
        }