znmud-0.0.1/benchmark/
znmud-0.0.1/cmd/
znmud-0.0.1/cmd/emotes/
znmud-0.0.1/cmd/objects/
znmud-0.0.1/cmd/tiny/
znmud-0.0.1/doc/
znmud-0.0.1/farts/
znmud-0.0.1/lib/
znmud-0.0.1/lib/combat/
znmud-0.0.1/lib/core/bodytypes/
znmud-0.0.1/lib/engine/
znmud-0.0.1/lib/farts/
znmud-0.0.1/logs/
# Author: Craig Smith
#
# This source code copyright (C) 2009 Craig Smith
# All rights reserved.
#
# Released under the terms of the TeensyMUD Public License
# See LICENSE file for additional information.
#

require 'gettext'
require 'combat/attackmsgs'

# These are the damage tables.  Once it has been determined that damage
# has been done.  The type of damage of the details are determined by
# these charts.  Initialize the appropriate chart and use deal() with a
# random number from 1-100

# Critical Miss Chart
class CriticalMiss < AttackMsgs
  include GetText
  bindtextdomain("core")

  def initialize(attacker, defender, damagetype, hitlocationid, weaponid)
    @a = attacker
    @d = defender
    @damagetype = damagetype
    @hitlocationid = hitlocationid
    @weaponid = weaponid
    super(@a, @d, damagetype, hitlocationid, weaponid)
  end

  def deal(roll)
	roll2 = rand(100)+1
	msg2a = nil
	msg2d = nil
	msg2r = nil
	head = _("head")
	torso = _("torso")
	case @damagetype
	when :zombie
		# A zombies critical miss is basically a special "rot" event
		bpid = @a.body.bodyparts[rand(@a.body.bodyparts.size)]
		part = get_object(bpid)
		if part.crippled
			case part.name
			when /#{head}/
				self.msg2a = _("[color Red]Part of your brain leeks out of your empty eye socket![/color]")
				self.msg2d = _("Some of ^p1's brains leak out of their empty eye socket!")
				self.msg2r = msg2d
				@a.body.damage(part.id, 8)
			when /#{torso}/
				self.msg2a = _("[color Red]Your guts spill out onto the floor![/color]")
				self.msg2d = _("^p1's guts spill out onto the floor!")
				self.msg2r = msg2d
				@a.body.damage(part.id, 4)
			else
				self.msg2a = _("[color Red]Part of your %{loc} falls off![/color]" % {loc => part.name})
				self.msg2d = _("Part of ^p1's %{loc} falls off!" % {:loc => part.name})
				self.msg2r = msg2d
				@a.body.damage(part.id, 2)
			end
		else
			case part.name
			when /#{head}/
				self.msg2a = _("[color Red]You feel your eyes fall out of your skull![/color]")
				self.msg2d = _("^p1's eyes drip out of their head!")
				self.msg2r = msg2d
				@a.body.damage(part.id, 4)
			when /#{torso}/
				self.msg2a = _("[color Red]Your guts spill out onto the floor![/color]")
				self.msg2d = _("^p1's guts spill out onto the floor!")
				self.msg2r = msg2d
				@a.body.damage(part.id, 2)
			else
				self.msg2a = _("[color Red]Part of your %{loc} falls off![/color]" % {:loc => part.name})
				self.msg2d = _("Part of ^p1's %{loc} falls off!" % {:loc => part.name})
				self.msg2r = msg2d
				@a.body.damage(part.id, 1)
			end
			part.crippled = true
		end
		sendmsgs
	when :melee, :biting, :clawing
		case roll2
		when 0..2
			feet = @a.body.getbodyid(_("feet"))
			footid = feet[rand(feet.size)]
			foot = get_object(footid)
			if foot.crippled
				self.msg2a = _("[color Red]You trip over your crippled %{foot}[/color]" % {:foot => foot.name})
				self.msg2d = _("^p1 trips over thier crippled %{foot}" % {:foot => foot.name})
				self.msg2r = msg2d
				@a.body.damage(footid, 1)
			else
				self.msg2a = _("[color Red]You twist your ankle in the battle![/color]")
				self.msg2d = _("^p1 twists their ankle and is limping badly!")
				self.msg2r = msg2d
				foot.crippled = true
				@a.body.damage(footid, 2)
			end
		when 3..4
			hands = @a.body.getbodyid(_("hands"))
			handid = hands[rand(hands.size)]
			hand = get_object(handid)
			if hand.crippled
				self.msg2a = _("[color Red] You smash your already busted %{hand}[\color]" % {:hand => hand.name})
				self.msg2d = _("^p1 smashes their already busted %{hand}" % {:hand => hand.name})
				self.msg2r = msg2d
				@a.body.damage(handid, 1)
			else
				self.msg2a = _("[color Red]You bust open your %{hand} trying to punch ^p2[/color]" % {:hand => hand.name})
				self.msg2d = _("^p1 busts open their %{hand} tying to hit you!" % {:hand => hand.name})
				self.msg2r = _("^p1 busts open their %{hand} trying to hit ^p2" % {:hand => hand.name})
				hand.crippled = true
				@a.body.damage(handid, 2)
			end
		when 5..25
			self.msg2a = _("You stumble and fall flat on your face!")
			self.msg2d = _("^p1 stumbles and falls flat on their face!")
			self.msg2r = msg2d
			@a.body.damage("head",1)
			@a.add_attribute :stunned
		else
		end
	else
	end
	sendmsgs
  end

end