Пример #1
0
        // Function from file: venus_human_trap.dm
        public override bool handle_automated_action(  )
        {
            Mob_Living L  = null;
            dynamic    B  = null;
            Mob_Living L2 = null;


            if (base.handle_automated_action())
            {
                foreach (dynamic _a in Lang13.Enumerate(this.grasping, typeof(Mob_Living)))
                {
                    L = _a;


                    if (L.stat == 2)
                    {
                        B = this.grasping[L];

                        if (Lang13.Bool(B))
                        {
                            B.End();
                        }
                        this.grasping.Remove(L);
                    }

                    if (L.Adjacent(this))
                    {
                        L.attack_animal(this);
                    }
                    else if (Rand13.PercentChance(this.grasp_pull_chance))
                    {
                        this.dir = Map13.GetDistance(this, L);
                        Map13.Step(L, Map13.GetDistance(L, this));
                        L.Weaken(3);
                    }
                }

                if (this.grasping.len < this.max_grasps)
                {
                    foreach (dynamic _b in Lang13.Enumerate(Map13.FetchInRange(this, this.grasp_range), typeof(Mob_Living)))
                    {
                        L2 = _b;


                        if (L2 == this || this.faction_check(L2))
                        {
                            continue;
                        }

                        if (!this.grasping.Contains(L2) && L2 != this.target && Rand13.PercentChance(this.grasp_chance))
                        {
                            L2.WriteMsg(new Txt("<span class='userdanger'>").the(this).item().str(" has you entangled!</span>").ToString());
                            this.grasping[L2] = this.Beam(L2, "vine", "icons/effects/spacevines.dmi", Double.PositiveInfinity, 5, typeof(Obj_Effect_Ebeam_Vine));
                            break;
                        }
                    }
                }
            }
            return(false);
        }