// Function from file: turf.dm public override bool handle_slip(Mob_Living_Carbon C = null, int s_amount = 0, int w_amount = 0, dynamic O = null, dynamic lube = null) { Ent_Dynamic buckled_obj = null; int? oldlying = null; int olddir = 0; int? i = null; dynamic dam_zone = null; if (GlobalFuncs.has_gravity(this)) { oldlying = C.lying; if (C.buckled != null) { buckled_obj = C.buckled; if (!Lang13.Bool(lube & 4)) { return(false); } } else { if (Lang13.Bool(C.lying) || !((C.status_flags & 2) != 0)) { return(false); } if (C.m_intent == "walk" && Lang13.Bool(lube & 1)) { return(false); } } C.WriteMsg("<span class='notice'>You slipped" + (Lang13.Bool(O) ? " on the " + O.name : "") + "!</span>"); C.attack_log.Add("[" + GlobalFuncs.time_stamp() + "] <font color='orange'>Slipped" + (Lang13.Bool(O) ? " on the " + O.name : "") + (Lang13.Bool(lube & 2) ? " (LUBE)" : "") + "!</font>"); GlobalFuncs.playsound(C.loc, "sound/misc/slip.ogg", 50, 1, -3); C.accident(C.l_hand); C.accident(C.r_hand); olddir = C.dir; C.Stun(s_amount); C.Weaken(w_amount); C.__CallVerb("Stop Pulling"); if (buckled_obj != null) { buckled_obj.unbuckle_mob(); Map13.Step(buckled_obj, olddir); } else if (Lang13.Bool(lube & 2)) { i = null; i = 1; while ((i ?? 0) < 5) { Task13.Schedule(i ?? 0, (Task13.Closure)(() => { Map13.Step(C, olddir); C.spin(1, 1); return; })); i++; } } if (C.lying != oldlying && Lang13.Bool(lube)) { dam_zone = Rand13.Pick(new object [] { "chest", "l_hand", "r_hand", "l_leg", "r_leg" }); C.apply_damage(5, "brute", dam_zone); } return(true); } return(false); }