// Function from file: martial.dm public override bool harm_act(dynamic A = null, Mob_Living D = null) { dynamic atk_verb = null; int damage = 0; dynamic affecting = null; dynamic armor_block = null; dynamic knockout_prob = null; ((Ent_Dynamic)A).do_attack_animation(D); atk_verb = Rand13.Pick(new object [] { "left hook", "right hook", "straight punch" }); damage = Rand13.Int(5, 8) + A.dna.species.punchdamagelow; if (!(damage != 0)) { GlobalFuncs.playsound(D.loc, A.dna.species.miss_sound, 25, 1, -1); D.visible_message("<span class='warning'>" + A + " has attempted to hit " + D + " with a " + atk_verb + "!</span>"); GlobalFuncs.add_logs(A, D, "attempted to hit", atk_verb); return(false); } affecting = ((dynamic)D).get_organ(GlobalFuncs.ran_zone(A.zone_selected)); armor_block = D.run_armor_check(affecting, "melee"); GlobalFuncs.playsound(D.loc, A.dna.species.attack_sound, 25, 1, -1); D.visible_message("<span class='danger'>" + A + " has hit " + D + " with a " + atk_verb + "!</span>", "<span class='userdanger'>" + A + " has hit " + D + " with a " + atk_verb + "!</span>"); D.apply_damage(damage, "stamina", affecting, armor_block); GlobalFuncs.add_logs(A, D, "punched"); if (Convert.ToDouble(D.getStaminaLoss()) > 50) { knockout_prob = D.getStaminaLoss() + Rand13.Int(-15, 15); if (D.stat != 2 && Rand13.PercentChance(Convert.ToInt32(knockout_prob))) { D.visible_message("<span class='danger'>" + A + " has knocked " + D + " out with a haymaker!</span>", "<span class='userdanger'>" + A + " has knocked " + D + " out with a haymaker!</span>"); D.apply_effect(10, "weaken", armor_block); D.SetSleeping(5); ((dynamic)D).forcesay(GlobalVars.hit_appends); } else if (Lang13.Bool(D.lying)) { ((dynamic)D).forcesay(GlobalVars.hit_appends); } } return(true); }