","\n",",raping","rape","fuck","shit","bitch","whore","fag","dick","gay","lesbian","faggot","fag","pussy","cunt","cock","nigger","asshole"," "
+ usr << "Macros - S = Say, O = OOC, R = RolePlay "
+ usr << "It is Year [Year], Month [Month] "
+ if(usr.client.IsByondMember())
+ var/Add_GobKoboldLizard_instead
+ var/InList = 0
+ if(usr.key in LizardmanList)
+ InList = 1
+ if(InList == 0)
+ LizardmanList += usr.key
+ usr << "Thank you for being a Member and supporting Byond. You can now play as a Lizardman.
")
+ if(Words.len)
+ memo:
+ for(mem = 1,mem < Words.len + 1,mem++)
+ find_t = findtext(txt,Words[mem])
+ if(find_t)
+ txtLen = length(Words[mem])
+ stars = null
+ s_amount = null
+ for(s_amount = 0,s_amount < txtLen,s_amount++)
+ stars += "*"
+ txt = copytext(txt,1,find_t) + stars + copytext(txt,find_t+txtLen,0)
+ if(findtext(txt,Words[mem])) goto memo
+ return txt
+mob/var/tmp/SGS_kick_for_repeat
+mob/var/tmp/SGS_remember_txt
+mob/var/tmp/SGS_locked = 0
+proc/SGS_AntiSpam(txt)
+ var/spam = list("
"
+ src.Pain += rand(15,25)
+ if(src.Weapon)
+ var/Drop = prob(100 - src.Agility * 1.5)
+ if(Drop)
+ var/obj/I = src.Weapon
+ view(src) << "[src] loses hold of their [I]!
"
+ src.overlays-=image(I.icon,I.icon_state,I.ItemLayer)
+ I.Move(src)
+ I.overlays = null
+ I.suffix = null
+ I.icon_state = I.CarryState
+ src.Weight -= I.Weight
+ src.Weapon = null
+ if(src.client)
+ src.client.screen -= I
+ if(I.Delete)
+ del(I)
+ if(src.Weapon2)
+ var/Drop = prob(100 - src.Agility * 1.5)
+ if(Drop)
+ var/obj/I = src.Weapon2
+ view(src) << "[src] loses hold of their [I]!
"
+ src.overlays-=image(I.icon,I.icon_state,I.ItemLayer)
+ src.overlays-=image(I.icon,"[I.icon_state] left",I.ItemLayer)
+ I.Move(src)
+ I.overlays = null
+ I.suffix = null
+ I.icon_state = I.CarryState
+ src.Weight -= I.Weight
+ src.Weapon2 = null
+ if(src.client)
+ src.client.screen -= I
+ if(I.Delete)
+ del(I)
+ if(ismob(a))
+ var/mob/M = a
+ M.Pain += rand(15,25)
+ if(M.Fainted == 0)
+ M.Stunned = 1
+ M.CanMove = 0
+ M.Stun()
+ view(6,M) << "[M] has been stunned!
"
+ Dis = 0
+ src.Move(LOC)
+ if(src.Dead == 0)
+ src.density = 1
+ if(src.Job == "KnockedBack")
+ src.Job = null
+ return
+ spawn(1)
+ if(src)
+ src.KnockBack(Dis,DIR)
+ else
+ if(src.Dead == 0)
+ src.density = 1
+ if(src.Job == "KnockedBack")
+ src.Job = null
+ return
+ Stun()
+ spawn(rand(50,150))
+ if(src)
+ if(src.Stunned)
+ src.Stunned = 0
+ view(src) << "[src] is no longer stunned!
"
+ if(src.Fainted == 0)
+ var/Legs = 1
+ if(src.RightLeg == 0)
+ if(src.LeftLeg == 0)
+ Legs = 0
+ if(Legs)
+ if(src.Sleeping == 0)
+ if(src.Job == null)
+ src.CanMove = 1
+ if(src.Job == "KnockedBack")
+ src.CanMove = 1
+ Fainted()
+ spawn(rand(500,1000))
+ if(src)
+ if(src.Fainted)
+ src.Fainted = 0
+ src.Pain = 0
+ view(src) << "[src] wakes up!
"
+ if(src.Stunned == 0)
+ var/Legs = 1
+ if(src.RightLeg == 0)
+ if(src.LeftLeg == 0)
+ Legs = 0
+ if(Legs)
+ if(src.Sleeping == 0)
+ if(src.Job == null)
+ src.CanMove = 1
+ if(src.Job == "KnockedBack")
+ src.CanMove = 1
+ RemoveCombatOverlays()
+ src.overlays -= /obj/Misc/CombatOverlays/Block/
+ src.overlays -= /obj/Misc/CombatOverlays/Dodge/
+ src.overlays -= /obj/Misc/CombatOverlays/Head/
+ src.overlays -= /obj/Misc/CombatOverlays/LeftArm/
+ src.overlays -= /obj/Misc/CombatOverlays/RightArm/
+ src.overlays -= /obj/Misc/CombatOverlays/LeftLeg/
+ src.overlays -= /obj/Misc/CombatOverlays/RightLeg/
+ src.overlays -= /obj/Misc/CombatOverlays/Torso/
+ src.overlays -= /obj/Misc/CombatOverlays/Hit/
+ if(src.RightArm <= 0)
+ src.RightArm = 0
+ if(src.LeftArm <= 0)
+ src.LeftArm = 0
+ if(src.LeftLeg <= 0)
+ src.LeftLeg = 0
+ if(src.RightLeg <=0)
+ src.RightLeg = 0
+ Splat()
+ if(src.BloodMax >= 1)
+ for(var/turf/Walls/W in range(1,src))
+ var/Splat = prob(10)
+ if(Splat)
+ if(src.BloodColour)
+ var/obj/BS = new src.BloodWallColour()
+ BS.Move(locate(W.x,W.y,W.z))
+ for(var/turf/Floors/F in range(0,src))
+ if(F.Type != "Water")
+ var/Splat = prob(10)
+ if(Splat)
+ if(src.BloodColour)
+ var/obj/BS = new src.BloodColour()
+ BS.Move(locate(F.x,F.y,F.z))
+ ArrowDamage(var/DMG,var/obj/A)
+ if(src.Humanoid)
+ var/HLeftArm = 0
+ var/HRightArm = 0
+ var/HLeftLeg = 0
+ var/HRightLeg = 0
+ var/HHead = 0
+ var/HTorso = 0
+ var/Hits = rand(1,6)
+ if(Hits == 1)
+ HLeftArm = 1
+ if(Hits == 2)
+ HRightArm = 1
+ if(Hits == 3)
+ if(src.Race != "Snakeman")
+ HLeftLeg = 1
+ else
+ Hits = 5
+ if(Hits == 4)
+ if(src.Race != "Snakeman")
+ HRightLeg = 1
+ else
+ Hits = 5
+ if(Hits == 5)
+ HTorso = 1
+ if(Hits == 6)
+ HHead = 1
+ if(src.LeftArm == 0)
+ HLeftArm = 0
+ if(src.RightArm == 0)
+ HRightArm = 0
+ if(src.LeftLeg == 0)
+ HLeftLeg = 0
+ if(src.RightLeg == 0)
+ HRightLeg = 0
+ if(src.Race == "Illithid" && src.Sleep >= 1 && src.Sleeping == 0 && src.Fainted == 0)
+ src.overlays += /obj/Misc/SpellEffects/AstralShield
+ view(6,src) << "[src]'s mind deflects the [A]!
"
+ src.Sleep -= DMG / 1.5
+ DMG = 0
+ if(src.Sleep <= 0)
+ src.Sleep = 0
+ spawn(10)
+ if(src)
+ src.overlays -= /obj/Misc/SpellEffects/AstralShield
+ if(HTorso)
+ var/GetsStuck = 0
+ var/ArmourOpening = 0
+ var/GetsThrough = 100
+ var/Through = 0
+ src.overlays += /obj/Misc/CombatOverlays/Torso/
+ spawn(5)
+ if(src)
+ src.overlays -= /obj/Misc/CombatOverlays/Torso/
+ if(src.WChest)
+ var/obj/I = src.WChest
+ if(I.DefenceType == "Plate")
+ GetsStuck = prob(5)
+ if(I.Defence == "Chain")
+ GetsStuck = prob(25)
+ if(I.Defence != "Chain" && I.Defence != "Plate")
+ GetsStuck = 100
+ DMG -= src.Endurance / 5
+ if(DMG >= 0)
+ I.Dura -= DMG / 10
+ src.CheckArmourDura()
+ if(I.DefenceType == "Plate")
+ GetsThrough -= 65
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(10 - I.Dura / 10)
+ if(I.DefenceType == "Chain")
+ GetsThrough -= 33
+ if(I.DefenceType == "Leather")
+ GetsThrough -= 10
+ if(ArmourOpening == 0)
+ DMG -= I.Defence
+ if(ArmourOpening)
+ DMG -= I.Defence / 2
+ ArmourOpening = 0
+ if(src.WUpperBody)
+ var/obj/I = src.WUpperBody
+ if(I.DefenceType == "Plate")
+ GetsStuck = prob(5)
+ if(I.Defence == "Chain")
+ GetsStuck = prob(25)
+ if(I.Defence != "Chain" && I.Defence != "Plate")
+ GetsStuck = 100
+ DMG -= src.Endurance / 5
+ if(DMG >= 0)
+ I.Dura -= DMG / 10
+ src.CheckArmourDura()
+ if(I.DefenceType == "Plate")
+ GetsThrough -= 65
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(10 - I.Dura / 10)
+ if(I.DefenceType == "Chain")
+ GetsThrough -= 33
+ if(I.DefenceType == "Leather")
+ GetsThrough -= 10
+ if(ArmourOpening == 0)
+ DMG -= I.Defence
+ if(ArmourOpening)
+ DMG -= I.Defence / 2
+ ArmourOpening = 0
+ if(src.WShoulders)
+ var/obj/I = src.WShoulders
+ if(I.DefenceType == "Plate")
+ GetsStuck = prob(5)
+ if(I.Defence == "Chain")
+ GetsStuck = prob(25)
+ if(I.Defence != "Chain" && I.Defence != "Plate")
+ GetsStuck = 100
+ DMG -= src.Endurance / 5
+ if(DMG >= 0)
+ I.Dura -= DMG / 10
+ src.CheckArmourDura()
+ if(I.DefenceType == "Plate")
+ GetsThrough -= 65
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(10 - I.Dura / 10)
+ if(I.DefenceType == "Chain")
+ GetsThrough -= 33
+ if(I.DefenceType == "Leather")
+ GetsThrough -= 10
+ if(ArmourOpening == 0)
+ DMG -= I.Defence
+ if(ArmourOpening)
+ DMG -= I.Defence / 2
+ ArmourOpening = 0
+ Through = prob(GetsThrough)
+ if(Through == 0)
+ view(src) << "[A] breaks on [src]'s Armour!
"
+ del(A)
+ if(DMG >= 0 && Through)
+ var/HHeart = prob(15)
+ var/HLeftLung = prob(15)
+ var/HRightLung =prob(15)
+ var/HStomach = prob(15)
+ var/HIntestines = prob(15)
+ var/HSpleen = prob(15)
+ var/HLeftKidney = prob(15)
+ var/HRightKidney = prob(15)
+ var/HLiver = prob(15)
+ src.Blood -= DMG / 1.5
+ src.Pain += rand(DMG / 3, DMG / 2)
+ src.Bleed()
+ var/StunChance = 25
+ StunChance -= src.Endurance / 6
+ StunChance -= src.CurrentSkillLevel / 6
+ if(StunChance <= 5)
+ StunChance = 5
+ var/Stunned = prob(StunChance)
+ if(Stunned && src.Faction != "Undead")
+ if(src.Stunned == 0 && src.Fainted == 0)
+ src.Stunned = 1
+ src.Pull = null
+ src.CanMove = 0
+ src.Stun()
+ view(src) << "[src] has been stunned!
"
+ if(HLiver)
+ if(src.Liver)
+ src.Liver -= DMG
+ src.AddGore("Torso",src.Race)
+ src.Pain += rand(DMG / 4, DMG / 3)
+ if(GetsStuck)
+ view(src) << "[A] becomes lodged in [src]'s Liver!
"
+ A.suffix = "StuckIn"
+ A.Move(src)
+ A.overlays += image(/obj/HUD/C/)
+ src.Weight += A.Weight
+ GetsStuck = 0
+ A.Type = 33
+ if(src.Liver <= 1 && src.Liver != 0)
+ src.Liver = 0
+ view(src) << "[src]'s Liver has been pierced, it violently spasms then explodes through the wound in a spray of blood and goo!!
"
+ if(HRightKidney)
+ if(src.RightKidney)
+ src.RightKidney -= DMG
+ src.AddGore("Torso",src.Race)
+ src.Pain += rand(DMG / 4, DMG / 3)
+ if(GetsStuck)
+ view(src) << "[A] becomes lodged in [src]'s Right Kidney!
"
+ A.suffix = "StuckIn"
+ A.Move(src)
+ A.overlays += image(/obj/HUD/C/)
+ src.Weight += A.Weight
+ GetsStuck = 0
+ A.Type = 33
+ if(src.RightKidney <= 1 && src.RightKidney != 0)
+ src.RightKidney = 0
+ view(src) << "[src]'s RightKidney has been pierced, it violently spasms and shrinks into a mush as blood explodes from the wound!!
"
+ if(src.LeftKidney <= 1 && src.LeftKidney != 0)
+ view(src) << "[src]'s Kidneys have failed! They die a slow painful death!
"
+ src.Death()
+ return
+ if(HLeftKidney)
+ if(src.LeftKidney)
+ src.LeftKidney -= DMG
+ src.AddGore("Torso",src.Race)
+ src.Pain += rand(DMG / 4, DMG / 3)
+ if(GetsStuck)
+ view(src) << "[A] becomes lodged in [src]'s Left Kidney!
"
+ A.suffix = "StuckIn"
+ A.Move(src)
+ A.overlays += image(/obj/HUD/C/)
+ src.Weight += A.Weight
+ GetsStuck = 0
+ A.Type = 33
+ if(src.LeftKidney <= 1 && src.LeftKidney != 0)
+ src.LeftKidney = 0
+ view(src) << "[src]'s LeftKidney has been pierced, it violently spasms and shrinks into a mush as blood explodes from the wound!!
"
+ if(src.RightKidney <= 1 && src.RightKidney != 0)
+ view(src) << "[src]'s Kidneys have failed! They die a slow painful death!
"
+ src.Death()
+ return
+ if(HSpleen)
+ if(src.Spleen)
+ src.Spleen -= DMG
+ src.AddGore("Torso",src.Race)
+ src.Pain += rand(DMG / 4, DMG / 3)
+ if(GetsStuck)
+ view(src) << "[A] becomes lodged in [src]'s Spleen!
"
+ A.suffix = "StuckIn"
+ A.Move(src)
+ A.overlays += image(/obj/HUD/C/)
+ src.Weight += A.Weight
+ GetsStuck = 0
+ A.Type = 33
+ if(src.Spleen <= 1 && src.Spleen != 0)
+ src.Spleen = 0
+ view(src) << "[src]'s Spleen has been pierced, it violently spasms before pulsating blood everywhere from the wound!!
"
+ if(HIntestines)
+ if(src.Intestine)
+ src.Intestine -= DMG
+ src.AddGore("Torso",src.Race)
+ src.Pain += rand(DMG / 4, DMG / 3)
+ if(GetsStuck)
+ view(src) << "[A] becomes lodged in [src]'s Intestines!
"
+ A.suffix = "StuckIn"
+ A.Move(src)
+ A.overlays += image(/obj/HUD/C/)
+ src.Weight += A.Weight
+ GetsStuck = 0
+ A.Type = 20
+ var/Puke = prob(20)
+ if(Puke)
+ var/obj/Misc/Gore/Puke/P = new
+ P.Move(src.loc)
+ view(src) << "[src] pukes!
"
+ if(src.Intestine <= 1 && src.Intestine != 0)
+ src.Intestine = 0
+ view(src) << "[src]'s Intestines has been pierced, it violently spasms before gushing with disgusting liquids!
"
+ if(HStomach)
+ if(src.Stomach)
+ src.Stomach -= DMG
+ src.AddGore("Torso",src.Race)
+ if(GetsStuck)
+ view(src) << "[A] becomes lodged in [src]'s Stomach!
"
+ A.suffix = "StuckIn"
+ A.Move(src)
+ A.overlays += image(/obj/HUD/C/)
+ src.Weight += A.Weight
+ GetsStuck = 0
+ A.Type = 20
+ src.Pain += rand(DMG / 4, DMG / 3)
+ var/Puke = prob(20)
+ if(Puke)
+ var/obj/Misc/Gore/Puke/P = new
+ P.Move(src.loc)
+ view(src) << "[src] pukes!
"
+ if(src.Stomach <= 1 && src.Stomach != 0)
+ src.Stomach = 0
+ view(src) << "[src]'s Stomach has been pierced, it violently spasms before gushing with disgusting liquids!
"
+ if(HRightLung)
+ if(src.RightLung)
+ src.RightLung -= DMG
+ src.AddGore("Torso",src.Race)
+ src.Pain += rand(DMG / 4, DMG / 3)
+ if(GetsStuck)
+ view(src) << "[A] becomes lodged in [src]'s Right Lung!
"
+ A.suffix = "StuckIn"
+ A.Move(src)
+ A.overlays += image(/obj/HUD/C/)
+ src.Weight += A.Weight
+ GetsStuck = 0
+ A.Type = 50
+ src.Blood -= DMG / 4
+ src.Bleed()
+ if(src.RightLung <= 1 && src.RightLung != 0)
+ src.RightLung = 0
+ view(src) << "[src]'s RightLung has been pierced, it violently spasms before collapsing!
"
+ if(src.LeftLung == 0)
+ spawn(300)
+ if(src)
+ if(src.Dead == 0 && src.Faction != "Undead")
+ view(src) << "[src]'s Lungs have collapsed, they die slowly!
"
+ src.Death()
+ return
+ if(HLeftLung)
+ if(src.LeftLung)
+ src.LeftLung -= DMG
+ src.AddGore("Torso",src.Race)
+ src.Pain += rand(DMG / 4, DMG / 3)
+ if(GetsStuck)
+ view(src) << "[A] becomes lodged in [src]'s Left Lung!
"
+ A.suffix = "StuckIn"
+ A.Move(src)
+ A.overlays += image(/obj/HUD/C/)
+ src.Weight += A.Weight
+ GetsStuck = 0
+ A.Type = 50
+ src.Blood -= DMG / 4
+ src.Bleed()
+ if(src.LeftLung <= 1 && src.LeftLung != 0)
+ src.LeftLung = 0
+ view(src) << "[src]'s LeftLung has been pierced, it violently spasms before collapsing!
"
+ if(src.RightLung == 0)
+ spawn(300)
+ if(src)
+ if(src.Dead == 0 && src.Faction != "Undead")
+ view(src) << "[src]'s Lungs have collapsed, they die slowly!
"
+ src.Death()
+ return
+ if(HHeart)
+ if(src.Heart)
+ src.Heart -= DMG
+ src.AddGore("Torso",src.Race)
+ src.Pain += rand(DMG / 4, DMG / 3)
+ if(GetsStuck)
+ view(src) << "[A] becomes lodged in [src]'s Heart!
"
+ A.suffix = "StuckIn"
+ A.Move(src)
+ A.overlays += image(/obj/HUD/C/)
+ src.Weight += A.Weight
+ GetsStuck = 0
+ A.Type = 100
+ src.Blood -= DMG
+ src.Bleed()
+ if(src.Heart <= 1 && src.Heart != 0)
+ src.Heart = 0
+ if(src.Faction != "Undead")
+ view(src) << "[src]'s Heart has been pierced through the middle [src] dies instantly!
"
+ src.Death()
+ return
+
+ if(HHead)
+ var/GetsStuck = 0
+ var/ArmourOpening = 0
+ var/GetsThrough = 100
+ var/Through = 0
+ src.overlays += /obj/Misc/CombatOverlays/Head/
+ spawn(5)
+ if(src)
+ src.overlays -= /obj/Misc/CombatOverlays/Head/
+ if(src.WHead)
+ var/obj/I = src.WHead
+ if(I.DefenceType == "Plate")
+ GetsStuck = prob(5)
+ if(I.Defence == "Chain")
+ GetsStuck = prob(25)
+ if(I.Defence != "Chain" && I.Defence != "Plate")
+ GetsStuck = 100
+ DMG -= src.Endurance / 5
+ if(DMG >= 0)
+ I.Dura -= DMG / 10
+ src.CheckArmourDura()
+ if(I.DefenceType == "Plate")
+ GetsThrough -= 65
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(10 - I.Dura / 10)
+ if(I.DefenceType == "Chain")
+ GetsThrough -= 33
+ if(I.DefenceType == "Leather")
+ GetsThrough -= 10
+ if(ArmourOpening == 0)
+ DMG -= I.Defence
+ if(ArmourOpening)
+ DMG -= I.Defence / 2
+ ArmourOpening = 0
+ Through = prob(GetsThrough)
+ if(DMG >= 0 && Through)
+ var/HSkull = prob(20)
+ var/HBrain = prob(10)
+ var/HThroat = prob(15)
+ var/HLeftEye = prob(15)
+ var/HRightEye = prob(15)
+ var/HNose =prob(15)
+ var/HLeftEar = prob(15)
+ var/HRightEar = prob(15)
+ var/StunChance = 25
+ StunChance -= src.Endurance / 6
+ StunChance -= src.CurrentSkillLevel / 6
+ if(StunChance <= 5)
+ StunChance = 5
+ var/Stunned = prob(StunChance)
+ if(Stunned && src.Faction != "Undead")
+ if(src.Stunned == 0 && src.Fainted == 0)
+ src.Stunned = 1
+ src.Pull = null
+ src.CanMove = 0
+ src.Stun()
+ view(src) << "[src] has been stunned!
"
+ if(src.Faction == "Undead" && HBrain != 0)
+ HBrain = prob(20)
+ if(src.Faction == "Undead" && HSkull != 0)
+ HSkull = prob(30)
+ src.Blood -= DMG / 1.5
+ src.Bleed()
+ if(HBrain)
+ if(src.Brain && src.Skull)
+ var/GetsThroughSkull = prob(100 - src.Skull)
+ if(GetsThroughSkull)
+ src.Brain -= DMG
+ src.AddGore("Head",src.Race)
+ Pain += DMG / 2
+ if(src.WHead == null)
+ var/KO = prob(15)
+ if(KO)
+ view(src) << "The [A] smashes into [src]'s skull and knocks them out!
"
+ src.Fainted = 1
+ src.CanMove = 0
+ src.Pull = null
+ src.Fainted()
+ if(GetsStuck)
+ view(src) << "[A] becomes lodged in [src]'s Brain!
"
+ A.suffix = "StuckIn"
+ A.Move(src)
+ A.overlays += image(/obj/HUD/C/)
+ src.Weight += A.Weight
+ GetsStuck = 0
+ A.Type = 100
+ src.Blood -= DMG
+ src.Bleed()
+ if(src.Brain <= 20 && src.Brain != 0)
+ src.Brain = 0
+ view(src) << "[src]'s skull has been cracked open by an arrow, their brain becomes horrificly damaged and they die instantly!
"
+ src.Death()
+ return
+ if(HThroat)
+ if(src.Throat)
+ src.Throat -= DMG
+ src.AddGore("Head",src.Race)
+ src.Pain += rand(DMG / 4, DMG / 3)
+ if(GetsStuck)
+ view(src) << "[A] becomes lodged in [src]'s Throat!
"
+ A.suffix = "StuckIn"
+ A.Move(src)
+ A.overlays += image(/obj/HUD/C/)
+ src.Weight += A.Weight
+ GetsStuck = 0
+ A.Type = 75
+ src.Blood -= DMG / 3
+ src.Bleed()
+ if(src.Throat <= 1 && src.Throat != 0)
+ src.Throat = 0
+ if(src.Faction != "Undead")
+ view(src) << "An arrow flies into [src]'s Throat, blood begins to gush from the wound as they slowy fall to the floor dieng almost instantly!
"
+ src.Death()
+ return
+ if(HSkull)
+ if(src.Skull)
+ src.Skull -= DMG
+ src.AddGore("Head",src.Race)
+ Pain += DMG / 2
+ if(src.WHead == null)
+ var/KO = prob(10)
+ if(KO)
+ view(src) << "The [A] smashes into [src]'s skull and knocks them out!
"
+ src.Fainted = 1
+ src.CanMove = 0
+ src.Pull = null
+ src.Fainted()
+ if(GetsStuck)
+ view(src) << "[A] becomes lodged in [src]'s Skull!
"
+ A.suffix = "StuckIn"
+ A.Move(src)
+ A.overlays += image(/obj/HUD/C/)
+ src.Weight += A.Weight
+ GetsStuck = 0
+ A.Type = 33
+ src.Blood -= DMG / 4
+ src.Bleed()
+ if(src.Skull <= 1 && src.Skull != 0)
+ src.Skull = 10
+ src.Brain -= 50
+ if(src.Brain <= 20)
+ src.Brain = 0
+ view(src) << "[src]'s skull has been cracked open by an arrow, their brain becomes horrificly damaged and they die instantly!
"
+ src.Death()
+ return
+ if(HNose)
+ if(src.Nose)
+ src.Nose -= DMG
+ src.AddGore("Head",src.Race)
+ src.Pain += rand(DMG / 4, DMG / 3)
+ if(GetsStuck)
+ view(src) << "[A] becomes lodged in [src]'s Nose!
"
+ A.suffix = "StuckIn"
+ A.Move(src)
+ A.overlays += image(/obj/HUD/C/)
+ src.Weight += A.Weight
+ GetsStuck = 0
+ A.Type = 15
+ if(src.Nose <= 1 && src.Nose != 0)
+ src.Nose = 10
+ if(HRightEar)
+ if(src.RightEar)
+ src.RightEar -= DMG
+ src.AddGore("Head",src.Race)
+ src.Pain += rand(DMG / 4, DMG / 3)
+ if(GetsStuck)
+ view(src) << "[A] becomes lodged in [src]'s Right Ear!
"
+ A.suffix = "StuckIn"
+ A.Move(src)
+ A.overlays += image(/obj/HUD/C/)
+ src.Weight += A.Weight
+ GetsStuck = 0
+ A.Type = 10
+ if(src.RightEar <= 1 && src.RightEar != 0)
+ src.RightEar = 10
+ if(HLeftEar)
+ if(src.LeftEar)
+ src.LeftEar -= DMG
+ src.AddGore("Head",src.Race)
+ src.Pain += rand(DMG / 4, DMG / 3)
+ if(GetsStuck)
+ view(src) << "[A] becomes lodged in [src]'s Left Ear!
"
+ A.suffix = "StuckIn"
+ A.Move(src)
+ A.overlays += image(/obj/HUD/C/)
+ src.Weight += A.Weight
+ GetsStuck = 0
+ A.Type = 10
+ if(src.LeftEar <= 1 && src.LeftEar != 0)
+ src.LeftEar = 10
+ if(HRightEye)
+ if(src.RightEye)
+ src.RightEye -= DMG
+ src.AddGore("Head",src.Race)
+ src.Pain += rand(DMG / 4, DMG / 3)
+ if(GetsStuck)
+ view(src) << "[A] becomes lodged in [src]'s Right Eye!
"
+ A.suffix = "StuckIn"
+ A.Move(src)
+ A.overlays += image(/obj/HUD/C/)
+ src.Weight += A.Weight
+ GetsStuck = 0
+ A.Type = 20
+ src.Blood -= DMG / 4
+ src.Bleed()
+ if(src.RightEye <= 0)
+ src.RightEye = 0
+ if(src.LeftEye <= 1 && src.LeftEye != 0)
+ src.LeftEye = 0
+ src << "You go blind!!
"
+ src.CanSee = 0
+ src.ResetButtons()
+ src.Function = null
+ if(HLeftEye)
+ if(src.LeftEye)
+ src.LeftEye -= DMG
+ src.AddGore("Head",src.Race)
+ src.Pain += rand(DMG / 4, DMG / 3)
+ if(GetsStuck)
+ view(src) << "[A] becomes lodged in [src]'s Left Eye!
"
+ A.suffix = "StuckIn"
+ A.Move(src)
+ A.overlays += image(/obj/HUD/C/)
+ src.Weight += A.Weight
+ GetsStuck = 0
+ A.Type = 20
+ src.Blood -= DMG / 4
+ src.Bleed()
+ if(src.LeftEye <= 0)
+ src.LeftEye = 0
+ if(src.RightEye <= 1 && src.RightEye != 0)
+ src.RightEye = 0
+ src << "You go blind!!
"
+ src.CanSee = 0
+ src.ResetButtons()
+ src.Function = null
+ if(HLeftArm)
+ if(src.LeftArm)
+ var/GetsStuck = 0
+ var/ArmourOpening = 0
+ var/GetsThrough = 100
+ var/Through = 0
+ src.overlays += /obj/Misc/CombatOverlays/LeftArm/
+ spawn(5)
+ if(src)
+ src.overlays -= /obj/Misc/CombatOverlays/LeftArm/
+ if(src.WShoulders)
+ var/obj/I = src.WShoulders
+ if(I.DefenceType == "Plate")
+ GetsStuck = prob(5)
+ if(I.Defence == "Chain")
+ GetsStuck = prob(25)
+ if(I.Defence != "Chain" && I.Defence != "Plate")
+ GetsStuck = 100
+ DMG -= src.Endurance / 5
+ if(DMG >= 0)
+ I.Dura -= DMG / 10
+ src.CheckArmourDura()
+ if(I.DefenceType == "Plate")
+ GetsThrough -= 65
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(10 - I.Dura / 10)
+ if(I.DefenceType == "Chain")
+ GetsThrough -= 33
+ if(I.DefenceType == "Leather")
+ GetsThrough -= 10
+ if(ArmourOpening == 0)
+ DMG -= I.Defence
+ if(ArmourOpening)
+ DMG -= I.Defence / 2
+ ArmourOpening = 0
+ if(src.WLeftHand)
+ var/obj/I = src.WLeftHand
+ if(I.DefenceType == "Plate")
+ GetsStuck = prob(5)
+ if(I.Defence == "Chain")
+ GetsStuck = prob(25)
+ if(I.Defence != "Chain" && I.Defence != "Plate")
+ GetsStuck = 100
+ DMG -= src.Endurance / 5
+ if(DMG >= 0)
+ I.Dura -= DMG / 10
+ src.CheckArmourDura()
+ if(I.DefenceType == "Plate")
+ GetsThrough -= 65
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(10 - I.Dura / 10)
+ if(I.DefenceType == "Chain")
+ GetsThrough -= 33
+ if(I.DefenceType == "Leather")
+ GetsThrough -= 10
+ if(ArmourOpening == 0)
+ DMG -= I.Defence
+ if(ArmourOpening)
+ DMG -= I.Defence / 2
+ ArmourOpening = 0
+ Through = prob(GetsThrough)
+ if(DMG >= 0 && Through)
+ if(GetsStuck)
+ view(src) << "[A] becomes lodged in [src]'s Left Arm!
"
+ A.suffix = "StuckIn"
+ A.Move(src)
+ A.overlays += image(/obj/HUD/C/)
+ src.Weight += A.Weight
+ GetsStuck = 0
+ A.Type = 25
+ src.Blood -= DMG / 1.5
+ src.Bleed()
+ src.LeftArm -= DMG
+ src.AddGore("LeftArm",src.Race)
+ src.Pain += rand(DMG / 4, DMG / 3)
+ var/StunChance = 25
+ StunChance -= src.Endurance / 6
+ StunChance -= src.CurrentSkillLevel / 6
+ if(StunChance <= 5)
+ StunChance = 5
+ var/Stunned = prob(StunChance)
+ if(Stunned && src.Faction != "Undead")
+ if(src.Stunned == 0 && src.Fainted == 0)
+ src.Stunned = 1
+ src.Pull = null
+ src.CanMove = 0
+ src.Stun()
+ view(src) << "[src] has been stunned!
"
+ if(src.LeftArm <= 0)
+ src.LeftArm = 10
+ if(HRightArm)
+ if(src.RightArm)
+ var/GetsStuck = 0
+ var/ArmourOpening = 0
+ var/GetsThrough = 100
+ var/Through = 0
+ src.overlays += /obj/Misc/CombatOverlays/RightArm/
+ spawn(5)
+ if(src)
+ src.overlays -= /obj/Misc/CombatOverlays/RightArm/
+ if(src.WShoulders)
+ var/obj/I = src.WShoulders
+ if(I.DefenceType == "Plate")
+ GetsStuck = prob(5)
+ if(I.Defence == "Chain")
+ GetsStuck = prob(25)
+ if(I.Defence != "Chain" && I.Defence != "Plate")
+ GetsStuck = 100
+ DMG -= src.Endurance / 5
+ if(DMG >= 0)
+ I.Dura -= DMG / 10
+ src.CheckArmourDura()
+ if(I.DefenceType == "Plate")
+ GetsThrough -= 65
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(10 - I.Dura / 10)
+ if(I.DefenceType == "Chain")
+ GetsThrough -= 33
+ if(I.DefenceType == "Leather")
+ GetsThrough -= 10
+ if(ArmourOpening == 0)
+ DMG -= I.Defence
+ if(ArmourOpening)
+ DMG -= I.Defence / 2
+ ArmourOpening = 0
+ if(src.WRightHand)
+ var/obj/I = src.WRightHand
+ if(I.DefenceType == "Plate")
+ GetsStuck = prob(5)
+ if(I.Defence == "Chain")
+ GetsStuck = prob(25)
+ if(I.Defence != "Chain" && I.Defence != "Plate")
+ GetsStuck = 100
+ DMG -= src.Endurance / 5
+ if(DMG >= 0)
+ I.Dura -= DMG / 10
+ src.CheckArmourDura()
+ if(I.DefenceType == "Plate")
+ GetsThrough -= 65
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(10 - I.Dura / 10)
+ if(I.DefenceType == "Chain")
+ GetsThrough -= 33
+ if(I.DefenceType == "Leather")
+ GetsThrough -= 10
+ if(ArmourOpening == 0)
+ DMG -= I.Defence
+ if(ArmourOpening)
+ DMG -= I.Defence / 2
+ ArmourOpening = 0
+ Through = prob(GetsThrough)
+ if(DMG >= 0 && Through)
+ if(GetsStuck)
+ view(src) << "[A] becomes lodged in [src]'s Right Arm!
"
+ A.suffix = "StuckIn"
+ A.Move(src)
+ A.overlays += image(/obj/HUD/C/)
+ src.Weight += A.Weight
+ GetsStuck = 0
+ A.Type = 25
+ src.Blood -= DMG / 1.5
+ src.Bleed()
+ src.RightArm -= DMG
+ src.AddGore("RightArm",src.Race)
+ src.Pain += rand(DMG / 4, DMG / 3)
+ var/StunChance = 25
+ StunChance -= src.Endurance / 6
+ StunChance -= src.CurrentSkillLevel / 6
+ if(StunChance <= 5)
+ StunChance = 5
+ var/Stunned = prob(StunChance)
+ if(Stunned && src.Faction != "Undead")
+ if(src.Stunned == 0 && src.Fainted == 0)
+ src.Stunned = 1
+ src.Pull = null
+ src.CanMove = 0
+ src.Stun()
+ view(src) << "[src] has been stunned!
"
+ if(src.RightArm <= 0)
+ src.RightArm = 10
+ if(HRightLeg)
+ if(src.RightLeg)
+ var/GetsStuck = 0
+ var/ArmourOpening = 0
+ var/GetsThrough = 100
+ var/Through = 0
+ src.overlays += /obj/Misc/CombatOverlays/RightLeg/
+ spawn(5)
+ if(src)
+ src.overlays -= /obj/Misc/CombatOverlays/RightLeg/
+ if(src.WLegs)
+ var/obj/I = src.WLegs
+ if(I.DefenceType == "Plate")
+ GetsStuck = prob(5)
+ if(I.Defence == "Chain")
+ GetsStuck = prob(25)
+ if(I.Defence != "Chain" && I.Defence != "Plate")
+ GetsStuck = 100
+ DMG -= src.Endurance / 5
+ if(DMG >= 0)
+ I.Dura -= DMG / 10
+ src.CheckArmourDura()
+ if(I.DefenceType == "Plate")
+ GetsThrough -= 65
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(10 - I.Dura / 10)
+ if(I.DefenceType == "Chain")
+ GetsThrough -= 33
+ if(I.DefenceType == "Leather")
+ GetsThrough -= 10
+ if(ArmourOpening == 0)
+ DMG -= I.Defence
+ if(ArmourOpening)
+ DMG -= I.Defence / 2
+ ArmourOpening = 0
+ if(src.WRightFoot)
+ var/obj/I = src.WRightFoot
+ if(I.DefenceType == "Plate")
+ GetsStuck = prob(5)
+ if(I.Defence == "Chain")
+ GetsStuck = prob(25)
+ if(I.Defence != "Chain" && I.Defence != "Plate")
+ GetsStuck = 100
+ DMG -= src.Endurance / 5
+ if(DMG >= 0)
+ I.Dura -= DMG / 10
+ src.CheckArmourDura()
+ if(I.DefenceType == "Plate")
+ GetsThrough -= 65
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(10 - I.Dura / 10)
+ if(I.DefenceType == "Chain")
+ GetsThrough -= 33
+ if(I.DefenceType == "Leather")
+ GetsThrough -= 10
+ if(ArmourOpening == 0)
+ DMG -= I.Defence
+ if(ArmourOpening)
+ DMG -= I.Defence / 2
+ ArmourOpening = 0
+ Through = prob(GetsThrough)
+ if(DMG >= 0 && Through)
+ if(GetsStuck)
+ view(src) << "[A] becomes lodged in [src]'s Right Leg!
"
+ A.suffix = "StuckIn"
+ A.Move(src)
+ A.overlays += image(/obj/HUD/C/)
+ src.Weight += A.Weight
+ GetsStuck = 0
+ A.Type = 25
+ src.Blood -= DMG / 1.5
+ src.Bleed()
+ src.RightLeg -= DMG
+ src.AddGore("RightLeg",src.Race)
+ src.Pain += rand(DMG / 4, DMG / 3)
+ var/StunChance = 25
+ StunChance -= src.Endurance / 6
+ StunChance -= src.CurrentSkillLevel / 6
+ if(StunChance <= 5)
+ StunChance = 5
+ var/Stunned = prob(StunChance)
+ if(Stunned && src.Faction != "Undead")
+ if(src.Stunned == 0 && src.Fainted == 0)
+ src.Stunned = 1
+ src.Pull = null
+ src.CanMove = 0
+ src.Stun()
+ view(src) << "[src] has been stunned!
"
+ if(src.RightLeg <= 0)
+ src.RightLeg = 10
+ if(HLeftLeg)
+ if(src.LeftLeg)
+ var/GetsStuck = 0
+ var/ArmourOpening = 0
+ var/GetsThrough = 100
+ var/Through = 0
+ src.overlays += /obj/Misc/CombatOverlays/LeftLeg/
+ spawn(5)
+ if(src)
+ src.overlays -= /obj/Misc/CombatOverlays/LeftLeg/
+ if(src.WLegs)
+ var/obj/I = src.WLegs
+ if(I.DefenceType == "Plate")
+ GetsStuck = prob(5)
+ if(I.Defence == "Chain")
+ GetsStuck = prob(25)
+ if(I.Defence != "Chain" && I.Defence != "Plate")
+ GetsStuck = 100
+ DMG -= src.Endurance / 5
+ if(DMG >= 0)
+ I.Dura -= DMG / 10
+ src.CheckArmourDura()
+ if(I.DefenceType == "Plate")
+ GetsThrough -= 65
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(10 - I.Dura / 10)
+ if(I.DefenceType == "Chain")
+ GetsThrough -= 33
+ if(I.DefenceType == "Leather")
+ GetsThrough -= 10
+ if(ArmourOpening == 0)
+ DMG -= I.Defence
+ if(ArmourOpening)
+ DMG -= I.Defence / 2
+ ArmourOpening = 0
+ if(src.WLeftFoot)
+ var/obj/I = src.WLeftFoot
+ if(I.DefenceType == "Plate")
+ GetsStuck = prob(5)
+ if(I.Defence == "Chain")
+ GetsStuck = prob(25)
+ if(I.Defence != "Chain" && I.Defence != "Plate")
+ GetsStuck = 100
+ DMG -= src.Endurance / 5
+ if(DMG >= 0)
+ I.Dura -= DMG / 10
+ src.CheckArmourDura()
+ if(I.DefenceType == "Plate")
+ GetsThrough -= 65
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(10 - I.Dura / 10)
+ if(I.DefenceType == "Chain")
+ GetsThrough -= 33
+ if(I.DefenceType == "Leather")
+ GetsThrough -= 10
+ if(ArmourOpening == 0)
+ DMG -= I.Defence
+ if(ArmourOpening)
+ DMG -= I.Defence / 2
+ ArmourOpening = 0
+ Through = prob(GetsThrough)
+ if(DMG >= 0 && Through)
+ if(GetsStuck)
+ view(src) << "[A] becomes lodged in [src]'s Left Leg!
"
+ A.suffix = "StuckIn"
+ A.Move(src)
+ A.overlays += image(/obj/HUD/C/)
+ src.Weight += A.Weight
+ GetsStuck = 0
+ A.Type = 25
+ src.Blood -= DMG / 1.5
+ src.Bleed()
+ src.LeftLeg -= DMG
+ src.AddGore("LeftLeg",src.Race)
+ src.Pain += rand(DMG / 4, DMG / 3)
+ var/StunChance = 25
+ StunChance -= src.Endurance / 6
+ StunChance -= src.CurrentSkillLevel / 6
+ if(StunChance <= 5)
+ StunChance = 5
+ var/Stunned = prob(StunChance)
+ if(Stunned && src.Faction != "Undead")
+ if(src.Stunned == 0 && src.Fainted == 0)
+ src.Stunned = 1
+ src.Pull = null
+ src.CanMove = 0
+ src.Stun()
+ view(src) << "[src] has been stunned!
"
+ if(src.LeftLeg <= 0)
+ src.LeftLeg = 10
+ else
+ DMG -= src.Endurance
+ if(DMG >= 0)
+ src.Blood -= DMG / 1.5
+ src.Bleed()
+ src.HP -= DMG
+ var/StunChance = 25
+ StunChance -= src.Endurance / 6
+ StunChance -= src.CurrentSkillLevel / 6
+ if(StunChance <= 5)
+ StunChance = 5
+ var/Stunned = prob(StunChance)
+ if(Stunned && src.Faction != "Undead")
+ if(src.Stunned == 0 && src.Fainted == 0)
+ src.Stunned = 1
+ src.Pull = null
+ src.CanMove = 0
+ src.Stun()
+ view(src) << "[src] has been stunned!
"
+ if(src.HP <= 0)
+ src.Death()
+ return
+
+ BloodFlow()
+ if(src.Dead)
+ return
+ if(src.Pain >= 50)
+ src.Pain = 50
+ if(src.Fainted == 0)
+ var/Faint = prob(src.Pain / 8)
+ if(src.Type != "Egg")
+ if(Faint)
+ view(src) << "[src] loses consciousness due to pain!
"
+ src.Fainted = 1
+ src.CanMove = 0
+ src.Pull = null
+ src.Fainted()
+ if(src.BloodMax >= 1)
+ var/Die
+ var/Drip = prob(15)
+ var/Recover = prob(5)
+ if(src.Bleed)
+ if(Drip)
+ if(src.BloodColour)
+ var/obj/BS = new src.BloodColour()
+ BS.Move(src.loc)
+ if(src.Bleed == "Badly")
+ Die = prob(1)
+ if(src.Bleed == "Very Badly")
+ Die = prob(4)
+ if(src.Bleed == "Extremely Badly")
+ Die = prob(7)
+ if(src.Bleed == "Horrifically")
+ Die = prob(10)
+ if(src.Bleed)
+ if(src.Bleed != src.BleedLast)
+ if(src.BloodMax >= 1)
+ view(src) << "[src] is bleeding [src.Bleed]!
"
+ src.BleedLast = src.Bleed
+ if(Die)
+ view(src) << "[src] has bled to death!
"
+ if(src.BloodColour == /obj/Misc/Gore/BloodSplat/)
+ var/obj/BS = new src.BloodColour()
+ BS.Move(src.loc)
+ BS.icon_state = "floor puddle"
+ src.Death()
+ if(Recover)
+ src.Blood += rand(10,20)
+ src.Bleed()
+ if(src.Blood >= src.BloodMax)
+ src.Blood = src.BloodMax
+ src.Bleed()
+ else
+ return
+ spawn(30) BloodFlow()
+
+ Bleed()
+ if(src.BloodMax >= 1)
+ if(src.Blood <= src.BloodMax / 4)
+ src.Bleed = "Horrifically"
+ return
+ if(src.Blood <= src.BloodMax / 3)
+ src.Bleed = "Extremely Badly"
+ return
+ if(src.Blood <= src.BloodMax / 2)
+ src.Bleed = "Very Badly"
+ return
+ if(src.Blood <= src.BloodMax / 1.6)
+ src.Bleed = "Badly"
+ return
+ if(src.Blood <= src.BloodMax / 1.1)
+ src.Bleed = "Mildly"
+ return
+ if(src.Blood != src.BloodMax)
+ src.Bleed = "Very Mildly"
+ return
+ if(src.Blood == src.BloodMax)
+ src.Bleed = null
+ return
+ CheckArmourDura()
+ if(src.WExtra)
+ var/obj/I = src.WExtra
+ if(I)
+ if(I.Dura <= 0)
+ I.Dura = 0
+ src.WExtra = null
+ src.overlays-=image(I.icon,I.icon_state,I.ItemLayer)
+ I.suffix = "Carried"
+ I.overlays-=image(/obj/HUD/E/)
+ I.icon_state = I.CarryState
+ src << "Your [I] has been damaged badly!
"
+ if(src.WBack)
+ var/obj/I = src.WBack
+ if(I)
+ if(I.Dura <= 0)
+ I.Dura = 0
+ src.WBack = null
+ src.overlays-=image(I.icon,I.icon_state,I.ItemLayer)
+ I.suffix = "Carried"
+ I.overlays-=image(/obj/HUD/E/)
+ I.icon_state = I.CarryState
+ src << "Your [I] has been damaged badly!
"
+ if(src.OrginalName)
+ src.name = src.OrginalName
+ src.OrginalName = null
+ if(src.StoredFaction)
+ src.Faction = src.StoredFaction
+ src.StoredFaction = null
+ if(src.WHead)
+ var/obj/I = src.WHead
+ if(I)
+ if(I.Dura <= 0)
+ I.Dura = 0
+ src.WHead = null
+ src.overlays-=image(I.icon,I.icon_state,I.ItemLayer)
+ I.suffix = "Carried"
+ I.overlays-=image(/obj/HUD/E/)
+ I.icon_state = I.CarryState
+ src << "Your [I] has been damaged badly!
"
+ if(src.WUpperBody)
+ var/obj/I = src.WUpperBody
+ if(I)
+ if(I.Dura <= 0)
+ I.Dura = 0
+ src.WUpperBody = null
+ src.overlays-=image(I.icon,I.icon_state,I.ItemLayer)
+ I.suffix = "Carried"
+ I.icon_state = I.CarryState
+ I.overlays-=image(/obj/HUD/E/)
+ src << "Your [I] has been damaged badly!
"
+ if(src.WLeftHand)
+ var/obj/I = src.WLeftHand
+ if(I)
+ if(I.Dura <= 0)
+ I.Dura = 0
+ src.WLeftHand = null
+ src.overlays-=image(I.icon,I.icon_state,I.ItemLayer)
+ I.suffix = "Carried"
+ I.icon_state = I.CarryState
+ I.overlays-=image(/obj/HUD/E/)
+ src << "Your [I] has been damaged badly!
"
+ if(src.WRightHand)
+ var/obj/I = src.WRightHand
+ if(I)
+ if(I.Dura <= 0)
+ I.Dura = 0
+ src.WRightHand = null
+ src.overlays-=image(I.icon,I.icon_state,I.ItemLayer)
+ I.suffix = "Carried"
+ I.icon_state = I.CarryState
+ I.overlays-=image(/obj/HUD/E/)
+ src << "Your [I] has been damaged badly!
"
+ if(src.WWaist)
+ var/obj/I = src.WWaist
+ if(I)
+ if(I.Dura <= 0)
+ I.Dura = 0
+ src.WWaist = null
+ src.overlays-=image(I.icon,I.icon_state,I.ItemLayer)
+ I.suffix = "Carried"
+ I.icon_state = I.CarryState
+ I.overlays-=image(/obj/HUD/E/)
+ src << "Your [I] has been damaged badly!
"
+ if(src.WLeftFoot)
+ var/obj/I = src.WLeftFoot
+ if(I)
+ if(I.Dura <= 0)
+ I.Dura = 0
+ src.WLeftFoot = null
+ src.overlays-=image(I.icon,I.icon_state,I.ItemLayer)
+ I.suffix = "Carried"
+ I.icon_state = I.CarryState
+ I.overlays-=image(/obj/HUD/E/)
+ src << "Your [I] has been damaged badly!
"
+ if(src.WRightFoot)
+ var/obj/I = src.WLeftFoot
+ if(I)
+ if(I.Dura <= 0)
+ I.Dura = 0
+ src.WRightFoot = null
+ src.overlays-=image(I.icon,I.icon_state,I.ItemLayer)
+ I.suffix = "Carried"
+ I.icon_state = I.CarryState
+ I.overlays-=image(/obj/HUD/E/)
+ src << "Your [I] has been damaged badly!
"
+ if(src.WChest)
+ var/obj/I = src.WChest
+ if(I)
+ if(I.Dura <= 0)
+ I.Dura = 0
+ src.WChest = null
+ src.overlays-=image(I.icon,I.icon_state,I.ItemLayer)
+ I.suffix = "Carried"
+ I.icon_state = I.CarryState
+ I.overlays-=image(/obj/HUD/E/)
+ src << "Your [I] has been damaged badly!
"
+ if(src.WLegs)
+ var/obj/I = src.WLegs
+ if(I)
+ if(I.Dura <= 0)
+ I.Dura = 0
+ src.WLegs = null
+ src.overlays-=image(I.icon,I.icon_state,I.ItemLayer)
+ I.suffix = "Carried"
+ I.icon_state = I.CarryState
+ I.overlays-=image(/obj/HUD/E/)
+ src << "Your [I] has been damaged badly!
"
+ if(src.WShoulders)
+ var/obj/I = src.WShoulders
+ if(I)
+ if(I.Dura <= 0)
+ I.Dura = 0
+ src.WShoulders = null
+ src.overlays-=image(I.icon,I.icon_state,I.ItemLayer)
+ I.suffix = "Carried"
+ I.icon_state = I.CarryState
+ I.overlays-=image(/obj/HUD/E/)
+ src << "Your [I] has been damaged badly!
"
+
+
+ CheckWeaponDura(var/obj/W)
+ if(W)
+ if(W == src.Weapon)
+ if(W.Dura <= 0)
+ W.Dura = 0
+ src.Weapon = null
+ src.overlays-=image(W.icon,W.icon_state,W.ItemLayer)
+ W.suffix = "Carried"
+ W.icon_state = W.CarryState
+ W.overlays-=image(/obj/HUD/E/)
+ src << "Your [W] has been damaged badly!
"
+ return
+ if(W == src.Weapon2)
+ if(W.Dura <= 0)
+ W.Dura = 0
+ src.Weapon2 = null
+ src.overlays-=image(W.icon,"[W.icon_state]",W.ItemLayer)
+ src.overlays-=image(W.icon,"[W.icon_state] left",W.ItemLayer)
+ W.suffix = "Carried"
+ W.icon_state = W.CarryState
+ W.overlays-=image(/obj/HUD/E/)
+ src << "Your [W] has been damaged badly!
"
+ return
+ else
+ world << "Dura Check Error..."
+ return
+ CombatSkillTransfer(var/mob/Learner,var/Extra)
+ if(Learner && Learner.Target == src)
+ if(Learner in range(1,src))
+ if(Extra == "Block" && Learner.ShieldSkill <= src.ShieldSkill / 2 && Learner.ShieldSkill <= Learner.SkillCap && Learner.ShieldSkill <= WorldSkillsCap)
+ var/Gain = prob(10)
+ if(Gain)
+ Learner.ShieldSkill += Learner.ShieldSkillMulti
+ return
+ if(src.CurrentSkill == "Sword" && Learner.SwordSkill <= src.SwordSkill / 2 && Learner.SwordSkill <= Learner.SkillCap && Learner.SwordSkill <= WorldSkillsCap)
+ var/Gain = prob(10)
+ if(Gain)
+ Learner.SwordSkill += Learner.SwordSkillMulti
+ if(src.CurrentSkill == "Axe" && Learner.AxeSkill <= src.AxeSkill / 2 && Learner.AxeSkill <= Learner.SkillCap && Learner.AxeSkill <= WorldSkillsCap)
+ var/Gain = prob(10)
+ if(Gain)
+ Learner.AxeSkill += Learner.AxeSkillMulti
+ if(src.CurrentSkill == "Spear" && Learner.SpearSkill <= src.SpearSkill / 2 && Learner.SpearSkill <= Learner.SkillCap && Learner.SpearSkill <= WorldSkillsCap)
+ var/Gain = prob(10)
+ if(Gain)
+ Learner.SpearSkill += Learner.SpearSkillMulti
+ if(src.CurrentSkill == "Blunt" && Learner.BluntSkill <= src.BluntSkill / 2 && Learner.BluntSkill <= Learner.SkillCap && Learner.BluntSkill <= WorldSkillsCap)
+ var/Gain = prob(10)
+ if(Gain)
+ Learner.BluntSkill += Learner.BluntSkillMulti
+ if(src.CurrentSkill == "Dagger" && Learner.DaggerSkill <= src.DaggerSkill / 2 && Learner.DaggerSkill <= Learner.SkillCap && Learner.DaggerSkill <= WorldSkillsCap)
+ var/Gain = prob(10)
+ if(Gain)
+ Learner.DaggerSkill += Learner.DaggerSkillMulti
+ if(src.CurrentSkill == "Ranged" && Learner.RangedSkill <= src.RangedSkill / 2 && Learner.RangedSkill <= Learner.SkillCap && Learner.RangedSkill <= WorldSkillsCap)
+ var/Gain = prob(10)
+ if(Gain)
+ Learner.RangedSkill += Learner.RangedSkillMulti
+ if(src.Weapon == null && Learner.UnarmedSkill <= src.UnarmedSkill / 2 && Learner.UnarmedSkill <= Learner.SkillCap && Learner.UnarmedSkill <= WorldSkillsCap)
+ var/Gain = prob(10)
+ if(Gain)
+ Learner.UnarmedSkill += Learner.UnarmedSkillMulti
+ GainStats(var/Divide,var/AddInt)
+ var/GainStr = 22 + GainRate
+ var/GainAgil = 22 + GainRate
+ var/GainEnd = 22 + GainRate
+ var/GainInt = 22 + GainRate
+ var/RemoveStr = src.Strength / 2.5
+ var/RemoveAgil = src.Agility / 2.5
+ var/RemoveEnd = src.Endurance / 2.5
+ var/RemoveInt = src.Intelligence / 2.5
+ if(src.Weapon && src.Weapon2)
+ var/obj/W1 = src.Weapon
+ var/obj/W2 = src.Weapon2
+ if(W1.ObjectTag == "Weapon" && W2.ObjectTag == "Weapon")
+ RemoveStr = RemoveStr * 2
+ RemoveAgil = RemoveAgil * 2
+ RemoveEnd = RemoveEnd * 2
+ GainStr = GainStr - RemoveStr
+ GainAgil = GainAgil - RemoveAgil
+ GainEnd = GainEnd - RemoveEnd
+ GainInt = GainInt - RemoveInt
+ if(GainStr <= 2)
+ GainStr = 2
+ if(GainAgil <= 2)
+ GainAgil = 2
+ if(GainEnd <= 2)
+ GainEnd = 2
+ if(GainInt <= 2)
+ GainInt = 2
+ var/GainsStr = prob(GainStr)
+ var/GainsAgil = prob(GainAgil)
+ var/GainsEnd = prob(GainEnd)
+ var/GainsInt = prob(GainInt)
+ if(GainsStr)
+ if(src.Strength <= src.StrCap && src.Strength <= WorldStrCap && src.Strength <= src.StrengthMax)
+ if(Divide)
+ src.Strength += src.StrengthMulti / Divide
+ src.WeightMax += rand(1,2)
+ else
+ src.Strength += src.StrengthMulti
+ src.WeightMax += rand(2,3)
+ if(GainsAgil)
+ if(src.Agility <= src.AgilCap && src.Agility <= WorldAgilCap && src.Agility <= src.AgilityMax)
+ if(Divide)
+ src.Agility += src.AgilityMulti / Divide
+ else
+ src.Agility += src.AgilityMulti
+ if(GainsEnd)
+ if(src.Endurance <= src.EndCap && src.Endurance <= WorldEndCap && src.Endurance <= src.EnduranceMax)
+ if(Divide)
+ src.Endurance += src.EnduranceMulti / Divide
+ else
+ src.Endurance += src.EnduranceMulti
+ if(src.BloodMax)
+ src.BloodMax += rand(0.5,1)
+ if(AddInt == "Yes")
+ if(GainsInt)
+ if(src.Intelligence <= src.IntCap && src.Intelligence <= WorldIntCap && src.Intelligence <= src.IntelligenceMax)
+ if(Divide)
+ src.Intelligence += src.IntelligenceMulti / Divide
+ else
+ src.Intelligence += src.IntelligenceMulti
+ ApplyCombatSkills(var/obj/HasWep)
+ if(HasWep)
+ var/Dual = 0
+ if(HasWep == src.Weapon && src.Weapon2)
+ var/obj/Wep2 = src.Weapon2
+ if(Wep2.ObjectTag == "Weapon")
+ Dual = 1
+ if(HasWep == src.Weapon2 && src.Weapon)
+ var/obj/Wep = src.Weapon
+ if(Wep.ObjectTag == "Weapon")
+ Dual = 1
+ if(Dual)
+ Dual = 5
+ if(HasWep.ObjectType == "Sword")
+ var/Gain = 25 - src.SwordSkill / 3
+ Gain -= Dual
+ if(Gain <= 2)
+ Gain = 2
+ var/Gains = prob(Gain)
+ if(Gains)
+ if(src.SwordSkill <= src.SkillCap && src.SwordSkill <= WorldSkillsCap)
+ src.SwordSkill += src.SwordSkillMulti
+ if(HasWep.ObjectType == "Axe")
+ var/Gain = 25 - src.AxeSkill / 3
+ Gain -= Dual
+ if(Gain <= 2)
+ Gain = 2
+ var/Gains = prob(Gain)
+ if(Gains)
+ if(src.AxeSkill <= src.SkillCap && src.AxeSkill <= WorldSkillsCap)
+ src.AxeSkill += src.AxeSkillMulti
+ if(HasWep.ObjectType == "Blunt")
+ var/Gain = 25 - src.BluntSkill / 3
+ Gain -= Dual
+ if(Gain <= 2)
+ Gain = 2
+ var/Gains = prob(Gain)
+ if(Gains)
+ if(src.BluntSkill <= src.SkillCap && src.BluntSkill <= WorldSkillsCap)
+ src.BluntSkill += src.BluntSkillMulti
+ if(HasWep.ObjectType == "Dagger")
+ var/Gain = 25 - src.DaggerSkill / 3
+ Gain -= Dual
+ if(Gain <= 2)
+ Gain = 2
+ var/Gains = prob(Gain)
+ if(Gains)
+ if(src.DaggerSkill <= src.SkillCap && src.DaggerSkill <= WorldSkillsCap)
+ src.DaggerSkill += src.DaggerSkillMulti
+ if(HasWep.ObjectType == "Spear")
+ var/Gain = 25 - src.SpearSkill / 3
+ Gain -= Dual
+ if(Gain <= 2)
+ Gain = 2
+ var/Gains = prob(Gain)
+ if(Gains)
+ if(src.SpearSkill <= src.SkillCap && src.SpearSkill <= WorldSkillsCap)
+ src.SpearSkill += src.SpearSkillMulti
+ if(HasWep.ObjectType == "Ranged")
+ var/Gain = 25 - src.BluntSkill / 3
+ Gain -= Dual
+ if(Gain <= 2)
+ Gain = 2
+ var/Gains = prob(Gain)
+ if(Gains)
+ if(src.BluntSkill <= src.SkillCap && src.BluntSkill <= WorldSkillsCap)
+ src.BluntSkill += src.BluntSkillMulti
+ else
+ var/Gain = 25 - src.UnarmedSkill / 3
+ if(Gain <= 2)
+ Gain = 2
+ var/Gains = prob(Gain)
+ if(Gains)
+ if(src.UnarmedSkill <= src.SkillCap && src.UnarmedSkill <= WorldSkillsCap)
+ src.UnarmedSkill += src.UnarmedSkillMulti
+ DetermineWeaponSkill(var/obj/Wep)
+ if(Wep == null)
+ if(src.Weapon == null && src.Weapon2)
+ Wep = src.Weapon2
+ if(src.Weapon && src.Weapon2 == null)
+ Wep = src.Weapon
+ if(src.Weapon && src.Weapon2)
+ var/Weps = list()
+ Weps += src.Weapon
+ Weps += src.Weapon2
+ for(var/obj/Z in Weps)
+ if(Z.ObjectTag == "Weapon")
+ Wep = Z
+ if(Wep)
+ if(Wep.ObjectType == "Sword")
+ src.CurrentSkill = "Sword"
+ src.CurrentSkillLevel = src.SwordSkill
+ if(Wep.ObjectType == "Axe")
+ src.CurrentSkill = "Axe"
+ src.CurrentSkillLevel = src.AxeSkill
+ if(Wep.ObjectType == "Blunt")
+ src.CurrentSkill = "Blunt"
+ src.CurrentSkillLevel = src.BluntSkill
+ if(Wep.ObjectType == "Dagger")
+ src.CurrentSkill = "Dagger"
+ src.CurrentSkillLevel = src.DaggerSkill
+ if(Wep.ObjectType == "Spear")
+ src.CurrentSkill = "Spear"
+ src.CurrentSkillLevel = src.SpearSkill
+ else
+ src.CurrentSkill = "Unarmed"
+ src.CurrentSkillLevel = src.UnarmedSkill
+ Attack()
+ if(src.DisableAttack)
+ return
+ src.RemoveCombatOverlays()
+ if(ismob(src.Target) && src.Target)
+ var/mob/T = src.Target
+ if(T.Dead)
+ src.Target = null
+ src << "Target lost!
"
+ if(src.client)
+ src.client.images -= T.TargetIcon
+ if(T in range(1,src))
+ var/SeeTarget = 1
+ if(src.CanSee == 0)
+ SeeTarget = 0
+ var/HearTarget = prob(50)
+ if(HearTarget)
+ SeeTarget = 1
+ if(SeeTarget)
+ var/obj/Wep1 = null
+ if(src.Weapon)
+ Wep1 = src.Weapon
+ if(Wep1.ObjectTag != "Weapon")
+ Wep1 = null
+ src.Combat(Wep1)
+ if(src.Weapon && src.Weapon2)
+ var/obj/W = src.Weapon
+ var/obj/W2 = src.Weapon2
+ if(W.ObjectTag == "Weapon")
+ if(W2.ObjectTag == "Weapon")
+ src.Combat(W2)
+ if(src.Weapon == null && src.Weapon2)
+ var/obj/W = src.Weapon2
+ if(W.ObjectTag == "Weapon")
+ src.Combat(W)
+ if(src.Target == src)
+ src.Target = null
+ var/Delay
+ Delay = 100 - src.Agility
+ if(src.Weight >= src.WeightMax / 1.1)
+ Delay += 10
+ if(src.Weight >= src.WeightMax / 1.2)
+ Delay += 10
+ var/DelayMath = 0
+ for(var/obj/Items/Armour/A in src)
+ if(A.suffix == "Equip")
+ DelayMath += A.Weight / 3
+ if(src.Strength <= DelayMath)
+ Delay += 10
+ if(src.Weapon)
+ var/obj/W = src.Weapon
+ Delay = Delay + W.Weight * 2
+ if(src.Weapon2)
+ var/obj/W = src.Weapon2
+ Delay = Delay + W.Weight * 2
+ if(src.Sleep <= 10)
+ Delay += 25
+ if(src.Hunger <= 10)
+ Delay += 25
+ if(Delay <= 10)
+ Delay = 10
+ spawn(Delay) Attack()
+ Combat(var/obj/MainWeapon)
+ var/IsMob = 0
+ if(src.Target)
+ if(ismob(src.Target))
+ IsMob = 1
+ if(IsMob == 0)
+ return
+ if(src.Dead)
+ return
+ if(src.Fainted)
+ return
+ if(src.Stunned)
+ return
+ if(src.CanAttack == 0)
+ return
+ if(src.Humanoid)
+ if(src.RightArm <= 25)
+ if(src.LeftArm <= 25)
+ return
+ var/mob/T
+ if(src.Target)
+ T = src.Target
+ var/Dir = get_dir(src,T)
+ src.dir = Dir
+ if(T)
+ if(T.Target == null)
+ var/IsClient = 0
+ T.CallForHelp(src)
+ if(T.client)
+ IsClient = 1
+ if(IsClient == 0)
+ T.Target = src
+ else
+ return
+ if(T.client)
+ if(src.client)
+ if(T.client.address == src.client.address && T != src)
+ world << "([usr.key])[usr] - [usr.OrginalName] was booted for Alt Key Interaction!
"
+ del(src)
+ return
+ if(T.Sleeping)
+ T.overlays -= /obj/Misc/Sleeping/
+ T.Sleeping = 0
+ view(src) << "[T] wakes up in shock!
"
+ if(T.Fainted == 0)
+ if(T.Stunned == 0)
+ var/Legs = 1
+ if(T.RightLeg == 0)
+ if(T.LeftLeg == 0)
+ Legs = 0
+ if(Legs)
+ T.CanMove = 1
+ if(T.Job)
+ T.Job = null
+ if(T.client)
+ view(src) << "[T] stops doing their task and turns to [src]!
"
+ T.MovementCheck()
+ var/Dodge = 0
+ Dodge += T.Agility
+ Dodge -= src.Agility / 1.3
+ var/DodgeMath = 0
+ for(var/obj/Items/Armour/A in T)
+ if(A.suffix == "Equip")
+ DodgeMath += A.Weight / 3
+ if(T.Strength <= DodgeMath)
+ Dodge -= DodgeMath
+ if(Dodge >= 50)
+ Dodge = 50
+ if(Dodge <= 1)
+ Dodge = 1
+ var/Dodged = prob(Dodge)
+ if(Dodged)
+ if(T.Fainted == 0)
+ if(T.Stunned == 0)
+ T.overlays += /obj/Misc/CombatOverlays/Dodge/
+ spawn(5)
+ if(T)
+ T.overlays -= /obj/Misc/CombatOverlays/Dodge/
+ return
+
+ src.DetermineWeaponSkill(MainWeapon)
+ T.DetermineWeaponSkill()
+ src.CombatSkillTransfer(T)
+
+ var/Parry = 0
+ Parry += T.Agility / 2
+ Parry += T.CurrentSkillLevel
+ Parry -= src.Agility / 2.5
+ Parry -= src.CurrentSkillLevel / 1.5
+ var/ParryMath = 0
+ for(var/obj/Items/Armour/A in T)
+ if(A.suffix == "Equip")
+ ParryMath += A.Weight / 3
+ if(T.Strength <= ParryMath)
+ Parry -= ParryMath
+ if(Parry >= 50)
+ Parry = 50
+ if(Parry <= 1)
+ Parry = 0
+ var/Parried = prob(Parry)
+ if(Parried)
+ if(src.Fainted == 0)
+ if(src.Stunned == 0)
+ T.overlays += /obj/Misc/CombatOverlays/Block/
+ spawn(5)
+ if(T)
+ T.overlays -= /obj/Misc/CombatOverlays/Block/
+ var/WeaponColide = 0
+ var/obj/W = null
+ if(MainWeapon)
+ if(T.Weapon)
+ WeaponColide = 1
+ W = T.Weapon
+ if(MainWeapon)
+ if(T.Weapon2)
+ WeaponColide = 1
+ W = T.Weapon2
+ if(WeaponColide)
+ if(W && W.ObjectTag == "Weapon")
+ W.Dura -= rand(1,2)
+ MainWeapon.Dura -= rand(1,2)
+ src.CheckWeaponDura(MainWeapon)
+ T.CheckWeaponDura(W)
+ return
+ var/Damage
+ var/StunChance
+ StunChance += src.CurrentSkillLevel / 6
+ StunChance -= T.Endurance / 6
+ StunChance -= T.CurrentSkillLevel / 6
+ if(StunChance >= 20)
+ StunChance = 20
+ if(T.Type == "Egg")
+ StunChance = 0
+ Damage = Damage + src.Strength / 4
+ Damage = Damage + src.CurrentSkillLevel / 6
+ if(src.Claws && src.Weapon == null && src.Weapon2 == null)
+ Damage = Damage + src.Strength / 5
+ if(MainWeapon)
+ var/Noise = rand(1,8)
+ if(Noise == 1)
+ range(5) << 'Weapon1.wav'
+ if(Noise == 2)
+ range(5) << 'Weapon2.wav'
+ if(Noise == 3)
+ range(5) << 'Weapon3.wav'
+ if(Noise == 4)
+ range(5) << 'Weapon4.wav'
+ if(Noise == 5)
+ range(5) << 'Weapon5.wav'
+ if(Noise == 6)
+ range(5) << 'Weapon6.wav'
+ if(Noise == 7)
+ range(5) << 'Weapon7.wav'
+ if(Noise == 8)
+ range(5) << 'Weapon8.wav'
+ Damage = Damage + rand(MainWeapon.Quality / 2,MainWeapon.Quality)
+ Damage = Damage + MainWeapon.Weight / 4
+ var/Dual = 0
+ if(MainWeapon == src.Weapon && src.Weapon2)
+ Dual = 1
+ if(MainWeapon == src.Weapon2 && src.Weapon)
+ Dual = 1
+ if(Dual == 0)
+ if(src.LeftArm && MainWeapon.TwoHander)
+ Damage = Damage + MainWeapon.Weight / 2
+ else
+ var/Noise = rand(1,2)
+ if(Noise == 1)
+ view(5) << 'Punch.wav'
+ if(Noise == 2)
+ view(5) << 'PunchHard.wav'
+ Damage = Damage - T.Endurance / 5
+ if(usr.SparMode && T.client)
+ Damage = Damage / 4
+ var/Block = 0
+ if(T.Weapon)
+ if(T.Type != "Torch" && T.Type != "Torch Lit")
+ if(istype(T.Weapon,/obj/Items/Armour/Shields/))
+ var/obj/S = T.Weapon
+ Block += T.ShieldSkill
+ Block += T.Agility / 2
+ Block -= src.Agility
+ Damage -= S.Defence / 4
+ var/BlockMath = 0
+ for(var/obj/Items/Armour/A in T)
+ if(A.suffix == "Equip")
+ BlockMath += A.Weight / 3
+ if(T.Strength <= BlockMath)
+ Block -= BlockMath
+ if(Block >= 50)
+ Block = 50
+ if(Block <= 1)
+ Block = 1
+ var/Blocked = prob(Block)
+ if(Blocked)
+ T.CombatSkillTransfer(src,"Block")
+ var/Gain = 50 - T.ShieldSkill / 3
+ if(Gain <= 2)
+ Gain = 2
+ var/Gains = prob(Gain)
+ if(Gains)
+ T.ShieldSkill += T.ShieldSkillMulti
+ T.overlays += /obj/Misc/CombatOverlays/Block/
+ spawn(5)
+ if(T)
+ T.overlays -= /obj/Misc/CombatOverlays/Block/
+ if(MainWeapon)
+ MainWeapon.Dura -= rand(0.1,0.3)
+ src.CheckWeaponDura(MainWeapon)
+ if(Damage >= 0)
+ S.Dura -= Damage / 10
+ T.CheckArmourDura()
+ if(T.Weapon2)
+ if(T.Type != "Torch" && T.Type != "Torch Lit")
+ if(istype(T.Weapon2,/obj/Items/Armour/Shields/))
+ var/obj/S = T.Weapon2
+ Block += T.ShieldSkill
+ Block += T.Agility / 2
+ Block -= src.Agility
+ Damage -= S.Defence / 4
+ var/BlockMath = 0
+ for(var/obj/Items/Armour/A in T)
+ if(A.suffix == "Equip")
+ BlockMath += A.Weight / 3
+ if(T.Strength <= BlockMath)
+ Block -= BlockMath
+ if(Block >= 50)
+ Block = 50
+ if(Block <= 1)
+ Block = 1
+ var/Blocked = prob(Block)
+ if(Blocked)
+ T.CombatSkillTransfer(src,"Block")
+ var/Gain = 50 - T.ShieldSkill / 3
+ if(Gain <= 2)
+ Gain = 2
+ var/Gains = prob(Gain)
+ if(Gains)
+ T.ShieldSkill += T.ShieldSkillMulti
+ T.overlays += /obj/Misc/CombatOverlays/Block/
+ spawn(5)
+ if(T)
+ T.overlays -= /obj/Misc/CombatOverlays/Block/
+ if(MainWeapon)
+ MainWeapon.Dura -= rand(0.1,0.3)
+ src.CheckWeaponDura(MainWeapon)
+ if(Damage >= 0)
+ S.Dura -= Damage / 10
+ T.CheckArmourDura()
+ if(T.Weapon)
+ var/obj/Z = T.Weapon
+ var/KnockOffRight = prob(0.5)
+ if(KnockOffRight)
+ T.overlays-=image(Z.icon,Z.icon_state,Z.ItemLayer)
+ T.Weapon = null
+ T.Weight -= Z.Weight
+ Z.suffix = null
+ Z.icon_state = Z.CarryState
+ Z.overlays = null
+ if(Z.Type == "Torch Lit")
+ T.luminosity = 0
+ if(T.client)
+ T.client.screen -= Z
+ Z.Move(T.loc)
+ view(src) << "[src] dis-arms [T] of their [Z]!
"
+ if(Z.Delete)
+ del(Z)
+ return
+ if(T.Weapon2)
+ var/obj/Z2 = T.Weapon2
+ var/KnockOffLeft = prob(0.5)
+ if(KnockOffLeft)
+ T.overlays-=image(Z2.icon,"[Z2.icon_state]",Z2.ItemLayer)
+ T.overlays-=image(Z2.icon,"[Z2.icon_state] left",Z2.ItemLayer)
+ T.Weapon2 = null
+ T.Weight -= Z2.Weight
+ Z2.suffix = null
+ Z2.icon_state = Z2.CarryState
+ Z2.overlays = null
+ if(Z2.Type == "Torch Lit")
+ T.luminosity = 0
+ if(T.client)
+ T.client.screen -= Z2
+ Z2.Move(T.loc)
+ view(src) << "[src] dis-arms [T] of their [Z2]!
"
+ if(Z2.Delete)
+ del(Z2)
+ return
+ if(T.Dead == 0)
+ if(Damage >= 0)
+ var/obj/HasWep = null
+ if(MainWeapon)
+ HasWep = MainWeapon
+ src.ApplyCombatSkills(HasWep)
+ src.GainStats()
+ if(MainWeapon)
+ if(MainWeapon.Material == "Silver" && T.Faction == "Undead")
+ Damage = Damage * 1.5
+ if(T.Race == "Illithid" && T.Sleep >= 1 && T.Sleeping == 0 && T.Fainted == 0)
+ T.overlays += /obj/Misc/SpellEffects/AstralShield
+ view(6,T) << "[T]'s mind deflects [src]'s attack!
"
+ T.Sleep -= Damage / 1.5
+ Damage = 0
+ if(T.Sleep <= 0)
+ T.Sleep = 0
+ spawn(10)
+ if(T)
+ T.overlays -= /obj/Misc/SpellEffects/AstralShield
+ if(T.Faction == "Undead" && T.Humanoid && T.LeftArm <= 5 && T.RightArm <= 5 && T.LeftLeg <= 5 && T.RightLeg <= 5)
+ var/Die = prob(10)
+ if(Die)
+ T.Death()
+ return
+ if(T)
+ if(T.Humanoid == 0)
+ if(Damage >= 0)
+ T.overlays += /obj/Misc/CombatOverlays/Hit/
+ spawn(5)
+ if(T)
+ T.overlays -= /obj/Misc/CombatOverlays/Hit/
+ var/Stunned = prob(StunChance)
+ if(Stunned && T.Faction != "Undead")
+ if(T.Stunned == 0 && T.Fainted == 0)
+ T.Stunned = 1
+ T.Pull = null
+ T.CanMove = 0
+ T.Stun()
+ view(src) << "[T] has been stunned!
"
+ T.Blood -= Damage / 1.5
+ T.Affliction(src.SpreadsAffliction,T)
+ T.HP -= Damage
+ T.Pain += rand(Damage / 4,Damage / 3)
+ T.Bleed()
+ T.Splat()
+ if(T.HP <= 1)
+ view(src) << "[T] has been slain by [src]!
"
+ for(var/obj/Items/I in T)
+ if(I.icon == null)
+ del(I)
+ T.Death()
+ return
+ if(T.Humanoid)
+ var/HitsLeftArm = 0
+ var/HitsRightArm = 0
+ var/HitsLeftLeg = 0
+ var/HitsRightLeg = 0
+ var/HitsHead = 0
+ var/HitsTorso = 0
+ var/Hits = rand(1,6)
+ if(Hits == 1)
+ HitsLeftArm = 1
+ if(Hits == 2)
+ HitsRightArm = 1
+ if(Hits == 3)
+ if(T.Race != "Snakeman")
+ HitsLeftLeg = 1
+ else
+ Hits = 5
+ if(Hits == 4)
+ if(T.Race != "Snakeman")
+ HitsRightLeg = 1
+ else
+ Hits = 5
+ if(Hits == 5)
+ HitsTorso = 1
+ if(Hits == 6)
+ HitsHead = 1
+ if(T.LeftArm == 0)
+ HitsLeftArm = 0
+ if(T.RightArm == 0)
+ HitsRightArm = 0
+ if(T.LeftLeg == 0)
+ HitsLeftLeg = 0
+ if(T.RightLeg == 0)
+ HitsRightLeg = 0
+ if(HitsTorso)
+ var/ArmourOpening = 0
+ T.overlays += /obj/Misc/CombatOverlays/Torso/
+ spawn(5)
+ if(T)
+ T.overlays -= /obj/Misc/CombatOverlays/Torso/
+ if(T.WBack)
+ var/obj/H = T.WBack
+ Damage -= H.Defence
+ if(MainWeapon)
+ if(MainWeapon.DamageType == "Slash")
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.2,0.3)
+ MainWeapon.Dura -= rand(0.2,0.4)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.3,0.4)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.5,1)
+ if(MainWeapon.DamageType == "Blunt")
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.1,0.3)
+ StunChance += rand(1,3)
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.1,0.2)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.2
+ StunChance += rand(1,2)
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.1,0.3)
+ StunChance += rand(2,4)
+ if(MainWeapon.DamageType == "Pierce")
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.2,0.4)
+ Damage = Damage / 1.2
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.2,0.3)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.3,0.8)
+ T.CheckArmourDura()
+ src.CheckWeaponDura(MainWeapon)
+ else
+ H.Dura -= rand(0.1,0.2)
+ T.CheckArmourDura()
+ var/Hand = rand(1,2)
+ if(Hand == 1 && src.UnarmedSkill <= 20)
+ src.LeftArm -= rand(1,3)
+ src.Pain += rand(0.5,1)
+ if(Hand == 2 && src.UnarmedSkill <= 20)
+ src.RightArm -= rand(1,3)
+ src.Pain += rand(0.5,1)
+ if(src.Claws)
+ src.Claws -= rand(0.1,1)
+ if(src.Claws <= 0)
+ src.Claws = 0
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(ArmourOpening)
+ Damage = Damage * 1.4
+ if(T.WWaist)
+ var/obj/H = T.WWaist
+ if(MainWeapon)
+ if(MainWeapon.DamageType == "Slash")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.3,0.6)
+ Damage = Damage / 1.2
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.2,0.3)
+ MainWeapon.Dura -= rand(0.2,0.4)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.3,0.4)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.5,1)
+ if(MainWeapon.DamageType == "Blunt")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.3,0.6)
+ MainWeapon.Dura -= rand(0.1,0.3)
+ StunChance += rand(1,3)
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.1,0.3)
+ StunChance += rand(1,3)
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.1,0.2)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.2
+ StunChance += rand(1,2)
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.1,0.3)
+ StunChance += rand(2,4)
+ if(MainWeapon.DamageType == "Pierce")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.1,0.2)
+ MainWeapon.Dura -= rand(0.4,0.6)
+ Damage = Damage / 1.3
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.2,0.4)
+ Damage = Damage / 1.2
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.2,0.3)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.3,0.8)
+ T.CheckArmourDura()
+ src.CheckWeaponDura(MainWeapon)
+ else
+ H.Dura -= rand(0.1,0.2)
+ T.CheckArmourDura()
+ var/Hand = rand(1,2)
+ if(Hand == 1 && src.UnarmedSkill <= 20)
+ src.LeftArm -= rand(1,3)
+ src.Pain += rand(0.5,1)
+ if(Hand == 2 && src.UnarmedSkill <= 20)
+ src.RightArm -= rand(1,3)
+ src.Pain += rand(0.5,1)
+ if(src.Claws)
+ src.Claws -= rand(0.1,1)
+ if(src.Claws <= 0)
+ src.Claws = 0
+ if(H.DefenceType == "Plate")
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(ArmourOpening == 0)
+ Damage -= H.Defence
+ if(ArmourOpening)
+ Damage -= H.Defence / rand(1.1,7)
+ ArmourOpening = 0
+ if(T.WUpperBody)
+ var/obj/H = T.WUpperBody
+ if(MainWeapon)
+ if(MainWeapon.DamageType == "Slash")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.3,0.6)
+ Damage = Damage / 1.2
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.2,0.3)
+ MainWeapon.Dura -= rand(0.2,0.4)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.3,0.4)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.5,1)
+ if(MainWeapon.DamageType == "Blunt")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.3,0.6)
+ MainWeapon.Dura -= rand(0.1,0.3)
+ StunChance += rand(1,3)
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.1,0.3)
+ StunChance += rand(1,3)
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.1,0.2)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.2
+ StunChance += rand(1,2)
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.1,0.3)
+ StunChance += rand(2,4)
+ if(MainWeapon.DamageType == "Pierce")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.1,0.2)
+ MainWeapon.Dura -= rand(0.4,0.6)
+ Damage = Damage / 1.3
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.2,0.4)
+ Damage = Damage / 1.2
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.2,0.3)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.3,0.8)
+ T.CheckArmourDura()
+ src.CheckWeaponDura(MainWeapon)
+ else
+ H.Dura -= rand(0.1,0.2)
+ T.CheckArmourDura()
+ var/Hand = rand(1,2)
+ if(Hand == 1 && src.UnarmedSkill <= 20)
+ src.LeftArm -= rand(1,3)
+ src.Pain += rand(0.5,1)
+ if(Hand == 2 && src.UnarmedSkill <= 20)
+ src.RightArm -= rand(1,3)
+ src.Pain += rand(0.5,1)
+ if(src.Claws)
+ src.Claws -= rand(0.1,1)
+ if(src.Claws <= 0)
+ src.Claws = 0
+ if(H.DefenceType == "Plate")
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(ArmourOpening == 0)
+ Damage -= H.Defence
+ if(ArmourOpening)
+ Damage -= H.Defence / rand(1.1,7)
+ ArmourOpening = 0
+ if(T.WShoulders)
+ var/obj/H = T.WShoulders
+ if(MainWeapon)
+ if(MainWeapon.DamageType == "Slash")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.3,0.6)
+ Damage = Damage / 1.2
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.2,0.3)
+ MainWeapon.Dura -= rand(0.2,0.4)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.3,0.4)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.5,1)
+ if(MainWeapon.DamageType == "Blunt")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.3,0.6)
+ MainWeapon.Dura -= rand(0.1,0.3)
+ StunChance += rand(1,3)
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.1,0.3)
+ StunChance += rand(1,3)
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.1,0.2)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.2
+ StunChance += rand(1,2)
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.1,0.3)
+ StunChance += rand(2,4)
+ if(MainWeapon.DamageType == "Pierce")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.1,0.2)
+ MainWeapon.Dura -= rand(0.4,0.6)
+ Damage = Damage / 1.3
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.2,0.4)
+ Damage = Damage / 1.2
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.2,0.3)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.3,0.8)
+ T.CheckArmourDura()
+ src.CheckWeaponDura(MainWeapon)
+ else
+ H.Dura -= rand(0.1,0.2)
+ T.CheckArmourDura()
+ var/Hand = rand(1,2)
+ if(Hand == 1 && src.UnarmedSkill <= 20)
+ src.LeftArm -= rand(1,3)
+ src.Pain += rand(0.5,1)
+ if(Hand == 2 && src.UnarmedSkill <= 20)
+ src.RightArm -= rand(1,3)
+ src.Pain += rand(0.5,1)
+ if(src.Claws)
+ src.Claws -= rand(0.1,1)
+ if(src.Claws <= 0)
+ src.Claws = 0
+ if(H.DefenceType == "Plate")
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(ArmourOpening == 0)
+ Damage -= H.Defence
+ if(ArmourOpening)
+ Damage -= H.Defence / rand(1.1,7)
+ ArmourOpening = 0
+ if(T.WChest)
+ var/obj/H = T.WChest
+ if(MainWeapon)
+ if(MainWeapon.DamageType == "Slash")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.3,0.6)
+ Damage = Damage / 1.2
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.2,0.3)
+ MainWeapon.Dura -= rand(0.2,0.4)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.3,0.4)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.5,1)
+ if(MainWeapon.DamageType == "Blunt")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.3,0.6)
+ MainWeapon.Dura -= rand(0.1,0.3)
+ StunChance += rand(1,3)
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.1,0.3)
+ StunChance += rand(1,3)
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.1,0.2)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.2
+ StunChance += rand(1,2)
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.1,0.3)
+ StunChance += rand(2,4)
+ if(MainWeapon.DamageType == "Pierce")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.1,0.2)
+ MainWeapon.Dura -= rand(0.4,0.6)
+ Damage = Damage / 1.3
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.2,0.4)
+ Damage = Damage / 1.2
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.2,0.3)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.3,0.8)
+ T.CheckArmourDura()
+ src.CheckWeaponDura(MainWeapon)
+ else
+ H.Dura -= rand(0.1,0.2)
+ T.CheckArmourDura()
+ var/Hand = rand(1,2)
+ if(Hand == 1 && src.UnarmedSkill <= 20)
+ src.LeftArm -= rand(1,3)
+ src.Pain += rand(0.5,1)
+ if(Hand == 2 && src.UnarmedSkill <= 20)
+ src.RightArm -= rand(1,3)
+ src.Pain += rand(0.5,1)
+ if(src.Claws)
+ src.Claws -= rand(0.1,1)
+ if(src.Claws <= 0)
+ src.Claws = 0
+ if(H.DefenceType == "Plate")
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(ArmourOpening == 0)
+ Damage -= H.Defence
+ if(ArmourOpening)
+ Damage -= H.Defence / rand(1.1,7)
+ ArmourOpening = 0
+ if(Damage >= 0)
+ var/KnockBack = prob(0 + src.Strength / 5)
+ if(KnockBack && T.Job != "KnockedBack")
+ StunChance += 50
+ view(src) << "[T] is propelled back by the force of the blow!
"
+ T.density = 0
+ T.Job = "KnockedBack"
+ var/DIR = get_dir(src,T)
+ var/Dis = 1 + src.Strength / 33
+ if(T.Stunned == 0 && T.Fainted == 0)
+ T.Stunned = 1
+ T.Pull = null
+ T.CanMove = 0
+ T.Stun()
+ view(src) << "[T] has been stunned!
"
+ T.KnockBack(Dis,DIR)
+ var/HitsHeart = prob(15)
+ var/HitsLeftLung = prob(15)
+ var/HitsRightLung = prob(15)
+ var/HitsSpleen = prob(15)
+ var/HitsLeftKidney = prob(15)
+ var/HitsRightKidney = prob(15)
+ var/HitsLiver = prob(15)
+ var/HitsBladder = prob(15)
+ var/HitsIntestine = prob(15)
+ var/HitsStomach = prob(15)
+ if(HitsIntestine)
+ if(T && T.Intestine)
+ var/GetsThrough = 100
+ if(T.WChest)
+ var/obj/A = T.WChest
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 15
+ if(T.WUpperBody)
+ var/obj/A = T.WUpperBody
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 33
+ if(T.WWaist)
+ var/obj/A = T.WWaist
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 5
+ if(T.WShoulders)
+ var/obj/A = T.WShoulders
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 10
+ var/Through = prob(GetsThrough)
+ if(Through)
+ var/Puke = prob(20)
+ if(Puke && T.Faction != "Undead")
+ var/obj/Misc/Gore/Puke/P = new
+ P.Move(T.loc)
+ view(src) << "[T] pukes!
"
+ T.AddGore("Torso",T.Race)
+ T.Intestine -= Damage
+ T.Blood -= Damage / 6
+ T.Affliction(src.SpreadsAffliction,T)
+ T.Pain += rand(Damage / 5,Damage / 4)
+ T.Bleed()
+ T.Splat()
+ if(T.Intestine <= 1 && T.Intestine != 0)
+ T.Intestine = 0
+ T.CanEat = 0
+ T.Blood -= Damage / 3
+ view(src) << "[T]'s Intestines have been mangled!
"
+ if(T.MortalWound == 0)
+ T.MortalWound = 1
+ T.MortallyWounded()
+ else
+ T.Pain += rand(Damage / 5,Damage / 4)
+ if(HitsStomach)
+ if(T && T.Stomach)
+ var/GetsThrough = 100
+ if(T.WChest)
+ var/obj/A = T.WChest
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 15
+ if(T.WUpperBody)
+ var/obj/A = T.WUpperBody
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 33
+ if(T.WWaist)
+ var/obj/A = T.WWaist
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 5
+ if(T.WShoulders)
+ var/obj/A = T.WShoulders
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 10
+ var/Through = prob(GetsThrough)
+ if(Through)
+ if(T.Faction != "Undead")
+ var/obj/Misc/Gore/Puke/P = new
+ P.Move(T.loc)
+ view(src) << "[T] pukes!
"
+ T.AddGore("Torso",T.Race)
+ T.Stomach -= Damage
+ T.Blood -= Damage / 6
+ T.Affliction(src.SpreadsAffliction,T)
+ T.Pain += rand(Damage / 5,Damage / 4)
+ T.Bleed()
+ T.Splat()
+ if(T.Stomach <= 1 && T.Stomach != 0)
+ T.Stomach = 0
+ T.CanEat = 0
+ T.Blood -= Damage / 3
+ view(src) << "[T]'s Stomach has been mangled!
"
+ if(T.MortalWound == 0)
+ T.MortalWound = 1
+ T.MortallyWounded()
+ else
+ T.Pain += rand(Damage / 5,Damage / 4)
+ if(HitsBladder)
+ if(T && T.Bladder)
+ var/GetsThrough = 100
+ if(T.WChest)
+ var/obj/A = T.WChest
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 15
+ if(T.WUpperBody)
+ var/obj/A = T.WUpperBody
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 33
+ if(T.WWaist)
+ var/obj/A = T.WWaist
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 5
+ if(T.WShoulders)
+ var/obj/A = T.WShoulders
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 10
+ var/Through = prob(GetsThrough)
+ if(Through)
+ T.AddGore("Torso",T.Race)
+ T.Bladder -= Damage
+ T.Blood -= Damage / 6
+ T.Affliction(src.SpreadsAffliction,T)
+ T.Pain += rand(Damage / 5,Damage / 4)
+ T.Bleed()
+ T.Splat()
+ if(T.Bladder <= 1 && T.Bladder != 0)
+ T.Bladder = 0
+ T.Blood -= Damage / 3
+ view(src) << "[T]'s Bladder has been mangled!
"
+ if(T.MortalWound == 0)
+ T.MortalWound = 1
+ T.MortallyWounded()
+ else
+ T.Pain += rand(Damage / 5,Damage / 4)
+ if(HitsLiver)
+ if(T && T.Liver)
+ var/GetsThrough = 100
+ if(T.WChest)
+ var/obj/A = T.WChest
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 15
+ if(T.WUpperBody)
+ var/obj/A = T.WUpperBody
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 33
+ if(T.WWaist)
+ var/obj/A = T.WWaist
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 5
+ if(T.WShoulders)
+ var/obj/A = T.WShoulders
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 10
+ var/Through = prob(GetsThrough)
+ if(Through)
+ T.AddGore("Torso",T.Race)
+ T.Liver -= Damage
+ T.Blood -= Damage
+ T.Affliction(src.SpreadsAffliction,T)
+ T.Pain += rand(Damage / 4,Damage / 3)
+ T.Bleed()
+ T.Splat()
+ if(T.Liver <= 1 && T.Liver != 0)
+ T.Liver = 0
+ T.Blood -= Damage / 3
+ view(src) << "[T]'s Liver has been mangled!
"
+ if(T.MortalWound == 0)
+ T.MortalWound = 1
+ T.MortallyWounded()
+ else
+ T.Pain += rand(Damage / 4,Damage / 3)
+ if(HitsRightKidney)
+ if(T && T.RightKidney)
+ var/GetsThrough = 100
+ if(T.WChest)
+ var/obj/A = T.WChest
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 15
+ if(T.WUpperBody)
+ var/obj/A = T.WUpperBody
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 33
+ if(T.WWaist)
+ var/obj/A = T.WWaist
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 5
+ if(T.WShoulders)
+ var/obj/A = T.WShoulders
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 10
+ var/Through = prob(GetsThrough)
+ if(Through)
+ T.AddGore("Torso",T.Race)
+ T.RightKidney -= Damage
+ T.Blood -= Damage / 5
+ T.Affliction(src.SpreadsAffliction,T)
+ T.Pain += rand(Damage / 4,Damage / 3)
+ T.Bleed()
+ T.Splat()
+ if(T.RightKidney <= 1 && T.RightKidney != 0)
+ T.RightKidney = 0
+ T.Blood -= Damage / 3
+ view(src) << "[T]'s Right Kidney has been mangled!
"
+ if(T.MortalWound == 0)
+ T.MortalWound = 1
+ T.MortallyWounded()
+ if(T)
+ if(T.LeftKidney == 0)
+ spawn(300)
+ if(T)
+ if(T.Dead == 0 && T.Faction != "Undead")
+ view(src) << "[T]'s Kidneys have been destroyed, they die a painful death!
"
+ T.Death()
+ return
+ else
+ T.Pain += rand(Damage / 4,Damage / 3)
+ if(HitsLeftKidney)
+ if(T && T.LeftKidney)
+ var/GetsThrough = 100
+ if(T.WChest)
+ var/obj/A = T.WChest
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 15
+ if(T.WUpperBody)
+ var/obj/A = T.WUpperBody
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 33
+ if(T.WWaist)
+ var/obj/A = T.WWaist
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 5
+ if(T.WShoulders)
+ var/obj/A = T.WShoulders
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 10
+ var/Through = prob(GetsThrough)
+ if(Through)
+ T.AddGore("Torso",T.Race)
+ T.LeftKidney -= Damage
+ T.Blood -= Damage / 5
+ T.Affliction(src.SpreadsAffliction,T)
+ T.Pain += rand(Damage / 4,Damage / 3)
+ T.Bleed()
+ T.Splat()
+ if(T.LeftKidney <= 1 && T.LeftKidney != 0)
+ T.LeftKidney = 0
+ T.Blood -= Damage / 3
+ view(src) << "[T]'s Left Kidney has been mangled!
"
+ if(T.MortalWound == 0)
+ T.MortalWound = 1
+ T.MortallyWounded()
+ if(T)
+ if(T.RightKidney == 0)
+ spawn(300)
+ if(T)
+ if(T.Dead == 0 && T.Faction != "Undead")
+ view(src) << "[T]'s Kidneys have been destroyed, they die a painful death!
"
+ T.Death()
+ return
+ else
+ return
+ else
+ T.Pain += rand(Damage / 4,Damage / 3)
+ if(HitsSpleen)
+ if(T && T.Spleen)
+ var/GetsThrough = 100
+ if(T.WChest)
+ var/obj/A = T.WChest
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 15
+ if(T.WUpperBody)
+ var/obj/A = T.WUpperBody
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 33
+ if(T.WWaist)
+ var/obj/A = T.WWaist
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 5
+ if(T.WShoulders)
+ var/obj/A = T.WShoulders
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 10
+ var/Through = prob(GetsThrough)
+ if(Through)
+ T.AddGore("Torso",T.Race)
+ T.Spleen -= Damage
+ T.Blood -= Damage / 6
+ T.Affliction(src.SpreadsAffliction,T)
+ T.Pain += rand(Damage / 4,Damage / 3)
+ T.Bleed()
+ T.Splat()
+ if(T.Spleen <= 1 && T.Spleen != 0)
+ T.Spleen = 0
+ T.Blood -= Damage / 3
+ view(src) << "[T]'s Spleen has been mangled!
"
+ if(T.MortalWound == 0)
+ T.MortalWound = 1
+ T.MortallyWounded()
+ else
+ T.Pain += rand(Damage / 4,Damage / 3)
+ if(HitsRightLung)
+ if(T && T.RightLung)
+ var/GetsThrough = 100
+ if(T.WChest)
+ var/obj/A = T.WChest
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 15
+ if(T.WUpperBody)
+ var/obj/A = T.WUpperBody
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 33
+ if(T.WWaist)
+ var/obj/A = T.WWaist
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 5
+ if(T.WShoulders)
+ var/obj/A = T.WShoulders
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 10
+ var/Through = prob(GetsThrough)
+ if(Through)
+ T.AddGore("Torso",T.Race)
+ T.RightLung -= Damage
+ T.Blood -= Damage / 5
+ T.Affliction(src.SpreadsAffliction,T)
+ T.Pain += rand(Damage / 4,Damage / 3)
+ T.Bleed()
+ T.Splat()
+ if(T.RightLung <= 1 && T.RightLung != 0)
+ T.RightLung = 0
+ view(src) << "[T]'s Right Lung has collapsed!
"
+ if(T.LeftLung == 0)
+ spawn(300)
+ if(T)
+ if(T.Dead == 0 && T.Faction != "Undead")
+ view(src) << "[T]'s Lungs have collapsed, they die slowly!
"
+ T.Death()
+ return
+ else
+ return
+ else
+ T.Pain += rand(Damage / 4,Damage / 3)
+ if(HitsLeftLung)
+ if(T && T.LeftLung)
+ var/GetsThrough = 100
+ if(T.WChest)
+ var/obj/A = T.WChest
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 15
+ if(T.WUpperBody)
+ var/obj/A = T.WUpperBody
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 33
+ if(T.WWaist)
+ var/obj/A = T.WWaist
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 5
+ if(T.WShoulders)
+ var/obj/A = T.WShoulders
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 10
+ var/Through = prob(GetsThrough)
+ if(Through)
+ T.AddGore("Torso",T.Race)
+ T.LeftLung -= Damage
+ T.Blood -= Damage / 5
+ T.Affliction(src.SpreadsAffliction,T)
+ T.Pain += rand(Damage / 4,Damage / 3)
+ T.Bleed()
+ T.Splat()
+ if(T.LeftLung <= 1 && T.LeftLung != 0)
+ T.LeftLung = 0
+ view(src) << "[T]'s Left Lung has collapsed!
"
+ if(T.RightLung == 0)
+ spawn(300)
+ if(T)
+ if(T.Dead == 0 && T.Faction != "Undead")
+ view(src) << "[T]'s Lungs have collapsed, they die slowly!
"
+ T.Death()
+ return
+ else
+ T.Pain += rand(Damage / 4,Damage / 3)
+ if(HitsHeart)
+ if(T && T.Heart)
+ var/GetsThrough = 100
+ if(T.WChest)
+ var/obj/A = T.WChest
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 15
+ if(T.WUpperBody)
+ var/obj/A = T.WUpperBody
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 33
+ if(T.WWaist)
+ var/obj/A = T.WWaist
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 5
+ if(T.WShoulders)
+ var/obj/A = T.WShoulders
+ if(A.DefenceType != "Leather")
+ if(A.DefenceType != "Cloth")
+ GetsThrough -= 10
+ var/Through = prob(GetsThrough)
+ if(Through)
+ T.AddGore("Torso",T.Race)
+ T.Heart -= Damage
+ T.Blood -= Damage
+ T.Affliction(src.SpreadsAffliction,T)
+ T.Pain += rand(Damage / 3,Damage / 2)
+ T.Bleed()
+ T.Splat()
+ if(T.Heart <= 1 && T.Heart != 0)
+ T.Heart = 0
+ if(T.Faction != "Undead")
+ view(src) << "[T]'s Heart has failed, they die instantly!
"
+ T.Death()
+ return
+ else
+ T.Pain += rand(Damage / 3,Damage / 2)
+ return
+ if(HitsRightLeg)
+ var/ArmourOpening = 0
+ if(T.RightLeg)
+ T.overlays += /obj/Misc/CombatOverlays/RightLeg/
+ spawn(5)
+ if(T)
+ T.overlays -= /obj/Misc/CombatOverlays/RightLeg/
+ if(T.WLegs)
+ var/obj/H = T.WLegs
+ if(MainWeapon)
+ if(MainWeapon.DamageType == "Slash")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.3,0.6)
+ Damage = Damage / 1.2
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.2,0.3)
+ MainWeapon.Dura -= rand(0.2,0.4)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.3,0.4)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.5,1)
+ if(MainWeapon.DamageType == "Blunt")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.3,0.6)
+ MainWeapon.Dura -= rand(0.1,0.3)
+ StunChance += rand(1,3)
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.1,0.3)
+ StunChance += rand(1,3)
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.1,0.2)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.2
+ StunChance += rand(1,2)
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.1,0.3)
+ StunChance += rand(2,4)
+ if(MainWeapon.DamageType == "Pierce")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.1,0.2)
+ MainWeapon.Dura -= rand(0.4,0.6)
+ Damage = Damage / 1.3
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.2,0.4)
+ Damage = Damage / 1.2
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.2,0.3)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.3,0.8)
+ T.CheckArmourDura()
+ src.CheckWeaponDura(MainWeapon)
+ else
+ H.Dura -= rand(0.1,0.2)
+ T.CheckArmourDura()
+ var/Hand = rand(1,2)
+ if(Hand == 1 && src.UnarmedSkill <= 20)
+ src.LeftArm -= rand(1,3)
+ src.Pain += rand(0.5,1)
+ if(Hand == 2 && src.UnarmedSkill <= 20)
+ src.RightArm -= rand(1,3)
+ src.Pain += rand(0.5,1)
+ if(src.Claws)
+ src.Claws -= rand(0.1,1)
+ if(src.Claws <= 0)
+ src.Claws = 0
+ if(H.DefenceType == "Plate")
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(ArmourOpening == 0)
+ Damage -= H.Defence
+ if(ArmourOpening)
+ Damage -= H.Defence / rand(1.1,7)
+ ArmourOpening = 0
+ if(T.WRightFoot)
+ var/obj/H = T.WRightFoot
+ if(MainWeapon)
+ if(MainWeapon.DamageType == "Slash")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.3,0.6)
+ Damage = Damage / 1.2
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.2,0.3)
+ MainWeapon.Dura -= rand(0.2,0.4)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.3,0.4)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.5,1)
+ if(MainWeapon.DamageType == "Blunt")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.3,0.6)
+ MainWeapon.Dura -= rand(0.1,0.3)
+ StunChance += rand(1,3)
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.1,0.3)
+ StunChance += rand(1,3)
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.1,0.2)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.2
+ StunChance += rand(1,2)
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.1,0.3)
+ StunChance += rand(2,4)
+ if(MainWeapon.DamageType == "Pierce")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.1,0.2)
+ MainWeapon.Dura -= rand(0.4,0.6)
+ Damage = Damage / 1.3
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.2,0.4)
+ Damage = Damage / 1.2
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.2,0.3)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.3,0.8)
+ T.CheckArmourDura()
+ src.CheckWeaponDura(MainWeapon)
+ else
+ H.Dura -= rand(0.1,0.2)
+ T.CheckArmourDura()
+ var/Hand = rand(1,2)
+ if(Hand == 1 && src.UnarmedSkill <= 20)
+ src.LeftArm -= rand(1,3)
+ src.Pain += rand(0.5,1)
+ if(Hand == 2 && src.UnarmedSkill <= 20)
+ src.RightArm -= rand(1,3)
+ src.Pain += rand(0.5,1)
+ if(src.Claws)
+ src.Claws -= rand(0.1,1)
+ if(src.Claws <= 0)
+ src.Claws = 0
+ if(H.DefenceType == "Plate")
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(ArmourOpening == 0)
+ Damage -= H.Defence
+ if(ArmourOpening)
+ Damage -= H.Defence / rand(1.1,7)
+ ArmourOpening = 0
+ if(Damage >= 0)
+ var/Stunned = prob(StunChance)
+ if(Stunned)
+ if(T.Stunned == 0 && T.Fainted == 0)
+ T.Stunned = 1
+ T.Pull = null
+ T.CanMove = 0
+ T.Stun()
+ view(src) << "[T] has been stunned!
"
+ T.AddGore("RightLeg",T.Race)
+ T.Blood -= Damage / 1.5
+ T.Affliction(src.SpreadsAffliction,T)
+ T.RightLeg -= Damage
+ T.Pain += rand(Damage / 4,Damage / 3)
+ T.Bleed()
+ T.Splat()
+ if(T.RightLeg <= 1 && T.RightLeg != 0)
+ if(T.WLegs)
+ var/obj/A = T.WLegs
+ var/obj/A2 = null
+ if(T.WRightFoot)
+ A2 = T.WRightFoot
+ var/CanSlice = 0
+ if(MainWeapon)
+ if(MainWeapon.DamageType != "Blunt")
+ CanSlice = 1
+ if(src.Claws && src.Weapon == null)
+ CanSlice = 1
+ if(A.DefenceType != "Plate")
+ if(A.DefenceType != "Chain")
+ if(CanSlice)
+ T.RightLeg = 0
+ if(T.WoundRightLeg)
+ var/obj/Wnd = T.WoundRightLeg
+ T.overlays -= Wnd
+ T.WoundRightLeg = null
+ T.MoveSpeed += 1
+ T.LimbLoss()
+ T.Pain += 20
+ T.Blood -= T.BloodMax / 4
+ T.Bleed()
+ view(src) << "[src] hacks [T]'s Right Leg off!
"
+ var/obj/Items/Limb/L = new
+ L.icon = T.icon
+ L.icon_state = "limb"
+ L.name = "[T]'s RightLeg"
+ L.Move(T.loc)
+ step_rand(L)
+ if(A.suffix == "Equip")
+ A.suffix = null
+ A.overlays = null
+ A.Move(T.loc)
+ T.overlays-=image(A.icon,A.icon_state,A.ItemLayer)
+ A.icon_state = A.CarryState
+ A.layer = 4
+ T.Weight -= A.Weight
+ T.WLegs = null
+ if(A.Delete)
+ del(A)
+
+ if(A2)
+ if(A2.suffix == "Equip")
+ A2.suffix = null
+ A2.overlays = null
+ A2.Move(T.loc)
+ A2.layer = 4
+ T.overlays-=image(A2.icon,A2.icon_state,A2.ItemLayer)
+ A2.icon_state = A2.CarryState
+ T.Weight -= A2.Weight
+ T.WRightFoot = null
+ if(A2.Delete)
+ del(A2)
+ if(T.Race == "Skeleton")
+ view(src) << "[T]'s Right Leg is Completely pulverised, their bones fall apart and smash to the ground!
"
+ T.Death()
+ return
+ else
+ T.RightLeg = 5
+ else
+ var/CanSlice = 0
+ if(MainWeapon)
+ if(MainWeapon.DamageType != "Blunt")
+ CanSlice = 1
+ if(src.Claws && src.Weapon == null)
+ CanSlice = 1
+ if(CanSlice)
+ T.RightLeg = 0
+ if(T.WoundRightLeg)
+ var/obj/Wnd = T.WoundRightLeg
+ T.overlays -= Wnd
+ T.WoundRightLeg = null
+ T.MoveSpeed += 1
+ T.LimbLoss()
+ T.Pain += 20
+ T.Blood -= T.BloodMax / 4
+ T.Bleed()
+ view(src) << "[src] hacks [T]'s Right Leg off!
"
+ var/obj/Items/Limb/L = new
+ L.icon = T.icon
+ L.icon_state = "limb"
+ L.name = "[T]'s RightLeg"
+ L.Move(T.loc)
+ step_rand(L)
+ if(T.WRightFoot)
+ var/obj/A2 = T.WRightFoot
+ if(A2.suffix == "Equip")
+ A2.suffix = null
+ A2.overlays = null
+ A2.Move(T.loc)
+ A2.layer = 4
+ T.overlays-=image(A2.icon,A2.icon_state,A2.ItemLayer)
+ A2.icon_state = A2.CarryState
+ T.Weight -= A2.Weight
+ if(A2.Delete)
+ del(A2)
+ T.WRightFoot = null
+ if(T.Race == "Skeleton")
+ view(src) << "[T]'s Right Leg is Completely pulverised, their bones fall apart and smash to the ground!
"
+ T.Death()
+ return
+ else
+ T.RightLeg = 5
+ return
+ if(HitsLeftLeg)
+ var/ArmourOpening = 0
+ if(T.LeftLeg)
+ T.overlays += /obj/Misc/CombatOverlays/LeftLeg/
+ spawn(5)
+ if(T)
+ T.overlays -= /obj/Misc/CombatOverlays/LeftLeg/
+ if(T.WLegs)
+ var/obj/H = T.WLegs
+ if(MainWeapon)
+ if(MainWeapon.DamageType == "Slash")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.3,0.6)
+ Damage = Damage / 1.2
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.2,0.3)
+ MainWeapon.Dura -= rand(0.2,0.4)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.3,0.4)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.5,1)
+ if(MainWeapon.DamageType == "Blunt")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.3,0.6)
+ MainWeapon.Dura -= rand(0.1,0.3)
+ StunChance += rand(1,3)
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.1,0.3)
+ StunChance += rand(1,3)
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.1,0.2)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.2
+ StunChance += rand(1,2)
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.1,0.3)
+ StunChance += rand(2,4)
+ if(MainWeapon.DamageType == "Pierce")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.1,0.2)
+ MainWeapon.Dura -= rand(0.4,0.6)
+ Damage = Damage / 1.3
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.2,0.4)
+ Damage = Damage / 1.2
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.2,0.3)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.3,0.8)
+ T.CheckArmourDura()
+ src.CheckWeaponDura(MainWeapon)
+ else
+ H.Dura -= rand(0.1,0.2)
+ T.CheckArmourDura()
+ var/Hand = rand(1,2)
+ if(Hand == 1 && src.UnarmedSkill <= 20)
+ src.LeftArm -= rand(1,3)
+ src.Pain += rand(0.5,1)
+ if(Hand == 2 && src.UnarmedSkill <= 20)
+ src.RightArm -= rand(1,3)
+ src.Pain += rand(0.5,1)
+ if(src.Claws)
+ src.Claws -= rand(0.1,1)
+ if(src.Claws <= 0)
+ src.Claws = 0
+ if(H.DefenceType == "Plate")
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(ArmourOpening == 0)
+ Damage -= H.Defence
+ if(ArmourOpening)
+ Damage -= H.Defence / rand(1.1,7)
+ ArmourOpening = 0
+ if(T.WLeftFoot)
+ var/obj/H = T.WLeftFoot
+ if(MainWeapon)
+ if(MainWeapon.DamageType == "Slash")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.3,0.6)
+ Damage = Damage / 1.2
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.2,0.3)
+ MainWeapon.Dura -= rand(0.2,0.4)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.3,0.4)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.5,1)
+ if(MainWeapon.DamageType == "Blunt")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.3,0.6)
+ MainWeapon.Dura -= rand(0.1,0.3)
+ StunChance += rand(1,3)
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.1,0.3)
+ StunChance += rand(1,3)
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.1,0.2)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.2
+ StunChance += rand(1,2)
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.1,0.3)
+ StunChance += rand(2,4)
+ if(MainWeapon.DamageType == "Pierce")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.1,0.2)
+ MainWeapon.Dura -= rand(0.4,0.6)
+ Damage = Damage / 1.3
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.2,0.4)
+ Damage = Damage / 1.2
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.2,0.3)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.3,0.8)
+ T.CheckArmourDura()
+ src.CheckWeaponDura(MainWeapon)
+ else
+ H.Dura -= rand(0.1,0.2)
+ T.CheckArmourDura()
+ var/Hand = rand(1,2)
+ if(Hand == 1 && src.UnarmedSkill <= 20)
+ src.LeftArm -= rand(1,3)
+ src.Pain += rand(0.5,1)
+ if(Hand == 2 && src.UnarmedSkill <= 20)
+ src.RightArm -= rand(1,3)
+ src.Pain += rand(0.5,1)
+ if(src.Claws)
+ src.Claws -= rand(0.1,1)
+ if(src.Claws <= 0)
+ src.Claws = 0
+ if(H.DefenceType == "Plate")
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(ArmourOpening == 0)
+ Damage -= H.Defence
+ if(ArmourOpening)
+ Damage -= H.Defence / rand(1.1,7)
+ ArmourOpening = 0
+ if(Damage >= 0)
+ var/Stunned = prob(StunChance)
+ if(Stunned)
+ if(T.Stunned == 0 && T.Fainted == 0)
+ T.Stunned = 1
+ T.Pull = null
+ T.CanMove = 0
+ T.Stun()
+ view(src) << "[T] has been stunned!
"
+ T.AddGore("LeftLeg",T.Race)
+ T.Blood -= Damage / 1.5
+ T.Affliction(src.SpreadsAffliction,T)
+ T.LeftLeg -= Damage
+ T.Pain += rand(Damage / 4,Damage / 3)
+ T.Bleed()
+ T.Splat()
+ if(T.LeftLeg <= 1 && T.LeftLeg != 0)
+ if(T.WLegs)
+ var/obj/A = T.WLegs
+ var/obj/A2 = null
+ if(T.WLeftFoot)
+ A2 = T.WLeftFoot
+ var/CanSlice = 0
+ if(MainWeapon)
+ if(MainWeapon.DamageType != "Blunt")
+ CanSlice = 1
+ if(src.Claws && src.Weapon == null)
+ CanSlice = 1
+ if(A.DefenceType != "Plate")
+ if(A.DefenceType != "Chain")
+ if(CanSlice)
+ T.LeftLeg = 0
+ if(T.WoundLeftLeg)
+ var/obj/Wnd = T.WoundLeftLeg
+ T.overlays -= Wnd
+ T.WoundLeftLeg = null
+ T.MoveSpeed += 1
+ T.LimbLoss()
+ T.Pain += 20
+ T.Blood -= T.BloodMax / 4
+ T.Bleed()
+ view(src) << "[src] hacks [T]'s Left Leg off!
"
+ var/obj/Items/L = new
+ L.icon = T.icon
+ L.icon_state = "limb"
+ L.name = "[T]'s LeftLeg"
+ L.Move(T.loc)
+ step_rand(L)
+ if(A.suffix == "Equip")
+ A.suffix = null
+ A.overlays = null
+ A.Move(T.loc)
+ T.overlays-=image(A.icon,A.icon_state,A.ItemLayer)
+ A.icon_state = A.CarryState
+ A.layer = 4
+ T.Weight -= A.Weight
+ T.WLegs = null
+ if(A.Delete)
+ del(A)
+
+ if(A2)
+ if(A2.suffix == "Equip")
+ A2.suffix = null
+ A2.overlays = null
+ A2.Move(T.loc)
+ A2.layer = 4
+ T.overlays-=image(A2.icon,A2.icon_state,A2.ItemLayer)
+ A2.icon_state = A2.CarryState
+ T.Weight -= A2.Weight
+ T.WLeftFoot = null
+ if(A2.Delete)
+ del(A2)
+ if(T.Race == "Skeleton")
+ view(src) << "[T]'s Left Leg is Completely pulverised, their bones fall apart and smash to the ground!
"
+ T.Death()
+ return
+ else
+ T.LeftLeg = 5
+ else
+ var/CanSlice = 0
+ if(MainWeapon)
+ if(MainWeapon.DamageType != "Blunt")
+ CanSlice = 1
+ if(src.Claws && src.Weapon == null)
+ CanSlice = 1
+ if(CanSlice)
+ T.LeftLeg = 0
+ if(T.WoundLeftLeg)
+ var/obj/Wnd = T.WoundLeftLeg
+ T.overlays -= Wnd
+ T.WoundLeftLeg = null
+ T.MoveSpeed += 1
+ T.LimbLoss()
+ T.Pain += 20
+ T.Blood -= T.BloodMax / 4
+ T.Bleed()
+ view(src) << "[src] hacks [T]'s Left Leg off!
"
+ var/obj/Items/Limb/L = new
+ L.icon = T.icon
+ L.icon_state = "limb"
+ L.name = "[T]'s LeftLeg"
+ L.Move(T.loc)
+ step_rand(L)
+ if(T.WLeftFoot)
+ var/obj/A2 = T.WLeftFoot
+ if(A2.suffix == "Equip")
+ A2.suffix = null
+ A2.overlays = null
+ A2.Move(T.loc)
+ A2.layer = 4
+ T.overlays-=image(A2.icon,A2.icon_state,A2.ItemLayer)
+ A2.icon_state = A2.CarryState
+ T.Weight -= A2.Weight
+ T.WLeftFoot = null
+ if(A2.Delete)
+ del(A2)
+ if(T.Race == "Skeleton")
+ view(src) << "[T]'s Left Leg is Completely pulverised, their bones fall apart and smash to the ground!
"
+ T.Death()
+ return
+ else
+ T.LeftLeg = 5
+ return
+ if(HitsLeftArm)
+ var/ArmourOpening = 0
+ if(T.LeftArm)
+ T.overlays += /obj/Misc/CombatOverlays/LeftArm/
+ spawn(5)
+ if(T)
+ T.overlays -= /obj/Misc/CombatOverlays/LeftArm/
+ if(T.WShoulders)
+ var/obj/H = T.WShoulders
+ if(MainWeapon)
+ if(MainWeapon.DamageType == "Slash")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.3,0.6)
+ Damage = Damage / 1.2
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.2,0.3)
+ MainWeapon.Dura -= rand(0.2,0.4)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.3,0.4)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.5,1)
+ if(MainWeapon.DamageType == "Blunt")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.3,0.6)
+ MainWeapon.Dura -= rand(0.1,0.3)
+ StunChance += rand(1,3)
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.1,0.3)
+ StunChance += rand(1,3)
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.1,0.2)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.2
+ StunChance += rand(1,2)
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.1,0.3)
+ StunChance += rand(2,4)
+ if(MainWeapon.DamageType == "Pierce")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.1,0.2)
+ MainWeapon.Dura -= rand(0.4,0.6)
+ Damage = Damage / 1.3
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.2,0.4)
+ Damage = Damage / 1.2
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.2,0.3)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.3,0.8)
+ T.CheckArmourDura()
+ src.CheckWeaponDura(MainWeapon)
+ else
+ H.Dura -= rand(0.1,0.2)
+ T.CheckArmourDura()
+ var/Hand = rand(1,2)
+ if(Hand == 1 && src.UnarmedSkill <= 20)
+ src.LeftArm -= rand(1,3)
+ src.Pain += rand(0.5,1)
+ if(Hand == 2 && src.UnarmedSkill <= 20)
+ src.RightArm -= rand(1,3)
+ src.Pain += rand(0.5,1)
+ if(src.Claws)
+ src.Claws -= rand(0.1,1)
+ if(src.Claws <= 0)
+ src.Claws = 0
+ if(H.DefenceType == "Plate")
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(ArmourOpening == 0)
+ Damage -= H.Defence
+ if(ArmourOpening)
+ Damage -= H.Defence / rand(1.1,7)
+ ArmourOpening = 0
+ if(T.WLeftHand)
+ var/obj/H = T.WLeftHand
+ if(MainWeapon)
+ if(MainWeapon.DamageType == "Slash")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.3,0.6)
+ Damage = Damage / 1.2
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.2,0.3)
+ MainWeapon.Dura -= rand(0.2,0.4)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.3,0.4)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.5,1)
+ if(MainWeapon.DamageType == "Blunt")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.3,0.6)
+ MainWeapon.Dura -= rand(0.1,0.3)
+ StunChance += rand(1,3)
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.1,0.3)
+ StunChance += rand(1,3)
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.1,0.2)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.2
+ StunChance += rand(1,2)
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.1,0.3)
+ StunChance += rand(2,4)
+ if(MainWeapon.DamageType == "Pierce")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.1,0.2)
+ MainWeapon.Dura -= rand(0.4,0.6)
+ Damage = Damage / 1.3
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.2,0.4)
+ Damage = Damage / 1.2
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.2,0.3)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.3,0.8)
+ T.CheckArmourDura()
+ src.CheckWeaponDura(MainWeapon)
+ else
+ H.Dura -= rand(0.1,0.2)
+ T.CheckArmourDura()
+ var/Hand = rand(1,2)
+ if(Hand == 1 && src.UnarmedSkill <= 20)
+ src.LeftArm -= rand(1,3)
+ src.Pain += rand(0.5,1)
+ if(Hand == 2 && src.UnarmedSkill <= 20)
+ src.RightArm -= rand(1,3)
+ src.Pain += rand(0.5,1)
+ if(src.Claws)
+ src.Claws -= rand(0.1,1)
+ if(src.Claws <= 0)
+ src.Claws = 0
+ if(H.DefenceType == "Plate")
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(ArmourOpening == 0)
+ Damage -= H.Defence
+ if(ArmourOpening)
+ Damage -= H.Defence / rand(1.1,7)
+ ArmourOpening = 0
+ if(Damage >= 0)
+ var/Stunned = prob(StunChance)
+ if(Stunned)
+ if(T.Stunned == 0 && T.Fainted == 0)
+ T.Stunned = 1
+ T.Pull = null
+ T.CanMove = 0
+ T.Stun()
+ view(src) << "[T] has been stunned!
"
+ T.AddGore("LeftArm",T.Race)
+ T.Blood -= Damage / 1.5
+ T.Affliction(src.SpreadsAffliction,T)
+ T.LeftArm -= Damage
+ T.Pain += rand(Damage / 4,Damage / 3)
+ T.Bleed()
+ T.Splat()
+ if(T.LeftArm <= 25)
+ if(T.Weapon2)
+ var/obj/O = T.Weapon2
+ T.overlays-=image(O.icon,"[O.icon_state] left",O.ItemLayer)
+ T.overlays-=image(O.icon,"[O.icon_state]",O.ItemLayer)
+ O.overlays = null
+ O.Move(T.loc)
+ O.suffix = null
+ O.layer = 4
+ O.icon_state = O.CarryState
+ T.Weapon2 = null
+ if(T.client)
+ T.client.screen -= O
+ T.Weight -= O.Weight
+ if(O.Delete)
+ del(O)
+ view(src) << "[src] shatters [T]'s Left Arm, they drop their [O]!
"
+ view(5) << 'BreakBone.wav'
+ if(T.Race == "Skeleton")
+ view(src) << "[T]'s Left Arm is Completely pulverised, their bones fall apart and smash to the ground!
"
+ T.Death()
+ return
+ if(T.LeftArm <= 1 && T.LeftArm != 0)
+ if(T.WLeftHand)
+ var/obj/A = T.WLeftHand
+ var/CanSlice = 0
+ if(MainWeapon)
+ if(MainWeapon.DamageType != "Blunt")
+ CanSlice = 1
+ if(src.Claws && src.Weapon == null)
+ CanSlice = 1
+ if(A.DefenceType != "Plate")
+ if(A.DefenceType != "Chain")
+ if(CanSlice)
+ T.LeftArm = 0
+ if(T.WoundLeftArm)
+ var/obj/Wnd = T.WoundLeftArm
+ T.overlays -= Wnd
+ T.WoundLeftArm = null
+ T.LimbLoss()
+ T.Pain += 20
+ T.Blood -= T.BloodMax / 4
+ T.Bleed()
+ view(src) << "[src] hacks [T]'s Left Arm off!
"
+ var/obj/Items/Limb/L = new
+ L.icon = T.icon
+ L.icon_state = "limb"
+ L.name = "[T]'s LeftArm"
+ L.Move(T.loc)
+ step_rand(L)
+ if(A.suffix == "Equip")
+ A.suffix = null
+ A.overlays = null
+ A.Move(T.loc)
+ T.overlays-=image(A.icon,A.icon_state,A.ItemLayer)
+ A.icon_state = A.CarryState
+ A.layer = 4
+ T.Weight -= A.Weight
+ T.WLeftHand = null
+ if(A.Delete)
+ del(A)
+ if(T.Race == "Skeleton")
+ view(src) << "[T]'s Left Arm is Completely pulverised, their bones fall apart and smash to the ground!
"
+ T.Death()
+ return
+ else
+ T.LeftArm = 5
+ else
+ var/CanSlice = 0
+ if(MainWeapon)
+ if(MainWeapon.DamageType != "Blunt")
+ CanSlice = 1
+ if(src.Claws && src.Weapon == null)
+ CanSlice = 1
+ if(CanSlice)
+ T.LeftArm = 0
+ if(T.WoundLeftArm)
+ var/obj/Wnd = T.WoundLeftArm
+ T.overlays -= Wnd
+ T.WoundLeftArm = null
+ T.LimbLoss()
+ T.Pain += 20
+ T.Blood -= T.BloodMax / 4
+ T.Bleed()
+ view(src) << "[src] hacks [T]'s Left Arm off!
"
+ var/obj/Items/Limb/L = new
+ L.icon = T.icon
+ L.icon_state = "limb"
+ L.name = "[T]'s LeftArm"
+ L.Move(T.loc)
+ step_rand(L)
+ if(T.Race == "Skeleton")
+ view(src) << "[T]'s Left Arm is Completely pulverised, their bones fall apart and smash to the ground!
"
+ T.Death()
+ return
+ else
+ T.LeftArm = 5
+ return
+ if(HitsRightArm)
+ var/ArmourOpening = 0
+ if(T.RightArm)
+ T.overlays += /obj/Misc/CombatOverlays/RightArm/
+ spawn(5)
+ if(T)
+ T.overlays -= /obj/Misc/CombatOverlays/RightArm/
+ if(T.WShoulders)
+ var/obj/H = T.WShoulders
+ if(MainWeapon)
+ if(MainWeapon.DamageType == "Slash")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.3,0.6)
+ Damage = Damage / 1.2
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.2,0.3)
+ MainWeapon.Dura -= rand(0.2,0.4)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.3,0.4)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.5,1)
+ if(MainWeapon.DamageType == "Blunt")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.3,0.6)
+ MainWeapon.Dura -= rand(0.1,0.3)
+ StunChance += rand(1,3)
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.1,0.3)
+ StunChance += rand(1,3)
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.1,0.2)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.2
+ StunChance += rand(1,2)
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.1,0.3)
+ StunChance += rand(2,4)
+ if(MainWeapon.DamageType == "Pierce")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.1,0.2)
+ MainWeapon.Dura -= rand(0.4,0.6)
+ Damage = Damage / 1.3
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.2,0.4)
+ Damage = Damage / 1.2
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.2,0.3)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.3,0.8)
+ T.CheckArmourDura()
+ src.CheckWeaponDura(MainWeapon)
+ else
+ H.Dura -= rand(0.1,0.2)
+ T.CheckArmourDura()
+ var/Hand = rand(1,2)
+ if(Hand == 1 && src.UnarmedSkill <= 20)
+ src.LeftArm -= rand(1,3)
+ src.Pain += rand(0.5,1)
+ if(Hand == 2 && src.UnarmedSkill <= 20)
+ src.RightArm -= rand(1,3)
+ src.Pain += rand(0.5,1)
+ if(src.Claws)
+ src.Claws -= rand(0.1,1)
+ if(src.Claws <= 0)
+ src.Claws = 0
+ if(H.DefenceType == "Plate")
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(ArmourOpening == 0)
+ Damage -= H.Defence
+ if(ArmourOpening)
+ Damage -= H.Defence / rand(1.1,7)
+ ArmourOpening = 0
+ if(T.WRightHand)
+ var/obj/H = T.WRightHand
+ if(MainWeapon)
+ if(MainWeapon.DamageType == "Slash")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.3,0.6)
+ Damage = Damage / 1.2
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.2,0.3)
+ MainWeapon.Dura -= rand(0.2,0.4)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.3,0.4)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.5,1)
+ if(MainWeapon.DamageType == "Blunt")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.3,0.6)
+ MainWeapon.Dura -= rand(0.1,0.3)
+ StunChance += rand(1,3)
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.1,0.3)
+ StunChance += rand(1,3)
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.1,0.2)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.2
+ StunChance += rand(1,2)
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.1,0.3)
+ StunChance += rand(2,4)
+ if(MainWeapon.DamageType == "Pierce")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.1,0.2)
+ MainWeapon.Dura -= rand(0.4,0.6)
+ Damage = Damage / 1.3
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.2,0.4)
+ Damage = Damage / 1.2
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.2,0.3)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.3,0.8)
+ T.CheckArmourDura()
+ src.CheckWeaponDura(MainWeapon)
+ else
+ H.Dura -= rand(0.1,0.2)
+ T.CheckArmourDura()
+ var/Hand = rand(1,2)
+ if(Hand == 1 && src.UnarmedSkill <= 20)
+ src.LeftArm -= rand(1,3)
+ src.Pain += rand(0.5,1)
+ if(Hand == 2 && src.UnarmedSkill <= 20)
+ src.RightArm -= rand(1,3)
+ src.Pain += rand(0.5,1)
+ if(src.Claws)
+ src.Claws -= rand(0.1,1)
+ if(src.Claws <= 0)
+ src.Claws = 0
+ if(H.DefenceType == "Plate")
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(ArmourOpening == 0)
+ Damage -= H.Defence
+ if(ArmourOpening)
+ Damage -= H.Defence / rand(1.1,7)
+ ArmourOpening = 0
+ if(Damage >= 0)
+ var/Stunned = prob(StunChance)
+ if(Stunned)
+ if(T.Stunned == 0 && T.Fainted == 0)
+ T.Stunned = 1
+ T.Pull = null
+ T.CanMove = 0
+ T.Stun()
+ view(src) << "[T] has been stunned!
"
+ T.AddGore("RightArm",T.Race)
+ T.Blood -= Damage / 1.5
+ T.Affliction(src.SpreadsAffliction,T)
+ T.RightArm -= Damage
+ T.Pain += rand(Damage / 4,Damage / 3)
+ T.Bleed()
+ T.Splat()
+ if(T.RightArm <= 25)
+ if(T.Weapon)
+ var/obj/O = T.Weapon
+ T.overlays-=image(O.icon,O.icon_state,O.ItemLayer)
+ O.overlays = null
+ O.Move(T.loc)
+ O.suffix = null
+ O.layer = 4
+ O.icon_state = O.CarryState
+ T.Weapon = null
+ if(T.client)
+ T.client.screen -= O
+ T.Weight -= O.Weight
+ if(O.Delete)
+ del(O)
+ view(src) << "[src] shatters [T]'s Right Arm, they drop their weapon!
"
+ view(5) << 'BreakBone.wav'
+ if(T.Race == "Skeleton")
+ view(src) << "[T]'s Right Arm is Completely pulverised, their bones fall apart and smash to the ground!
"
+ T.Death()
+ return
+ if(T.RightArm <= 1 && T.RightArm != 0)
+ if(T.WRightHand)
+ var/obj/A = T.WRightHand
+ var/CanSlice = 0
+ if(MainWeapon)
+ if(MainWeapon.DamageType != "Blunt")
+ CanSlice = 1
+ if(src.Claws && src.Weapon == null)
+ CanSlice = 1
+ if(A.DefenceType != "Plate")
+ if(A.DefenceType != "Chain")
+ if(CanSlice)
+ T.RightArm = 0
+ if(T.WoundRightArm)
+ var/obj/Wnd = T.WoundRightArm
+ T.overlays -= Wnd
+ T.WoundRightArm = null
+ T.LimbLoss()
+ T.Pain += 20
+ T.Blood -= T.BloodMax / 4
+ T.Bleed()
+ view(src) << "[src] hacks [T]'s Right Arm off!
"
+ if(A.suffix == "Equip")
+ A.suffix = null
+ A.overlays = null
+ A.Move(T.loc)
+ T.overlays-=image(A.icon,A.icon_state,A.ItemLayer)
+ A.icon_state = A.CarryState
+ A.layer = 4
+ T.Weight -= A.Weight
+ T.WRightHand = null
+ if(A.Delete)
+ del(A)
+ if(T.Race == "Skeleton")
+ view(src) << "[T]'s Right Arm is Completely pulverised, their bones fall apart and smash to the ground!
"
+ T.Death()
+ return
+ else
+ T.RightArm = 5
+ else
+ var/CanSlice = 0
+ if(MainWeapon)
+ if(MainWeapon.DamageType != "Blunt")
+ CanSlice = 1
+ if(src.Claws && src.Weapon == null)
+ CanSlice = 1
+ if(CanSlice)
+ T.RightArm = 0
+ if(T.WoundRightArm)
+ var/obj/Wnd = T.WoundRightArm
+ T.overlays -= Wnd
+ T.WoundRightArm = null
+ T.LimbLoss()
+ T.Pain += 20
+ T.Blood -= T.BloodMax / 4
+ T.Bleed()
+ view(src) << "[src] hacks [T]'s Right Arm off!
"
+ if(T.Race == "Skeleton")
+ view(src) << "[T]'s Right Arm is Completely pulverised, their bones fall apart and smash to the ground!
"
+ T.Death()
+ return
+ else
+ T.RightArm = 5
+ return
+ if(HitsHead)
+ var/ArmourOpening = 0
+ T.overlays += /obj/Misc/CombatOverlays/Head/
+ spawn(5)
+ if(T)
+ T.overlays -= /obj/Misc/CombatOverlays/Head/
+ if(T.WHead)
+ var/obj/H = T.WHead
+ var/KnockOff = prob(0.5)
+ if(KnockOff && H.suffix == "Equip")
+ T.overlays-=image(H.icon,H.icon_state,H.ItemLayer)
+ T.WHead = null
+ T.Weight -= H.Weight
+ H.suffix = null
+ H.icon_state = H.CarryState
+ H.overlays = null
+ if(T.client)
+ T.client.screen -= H
+ H.Move(T.loc)
+ view(src) << "[src] knocks [T]'s [H] off!
"
+ if(H.Delete)
+ del(H)
+ return
+ if(MainWeapon)
+ if(MainWeapon.DamageType == "Slash")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.3,0.6)
+ Damage = Damage / 1.2
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.2,0.3)
+ MainWeapon.Dura -= rand(0.2,0.4)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.3,0.4)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.5,1)
+ if(MainWeapon.DamageType == "Blunt")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.3,0.6)
+ MainWeapon.Dura -= rand(0.1,0.3)
+ StunChance += rand(1,3)
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.1,0.3)
+ StunChance += rand(1,3)
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.1,0.2)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.2
+ StunChance += rand(1,2)
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.1,0.3)
+ StunChance += rand(2,4)
+ if(MainWeapon.DamageType == "Pierce")
+ if(H.DefenceType == "Plate")
+ H.Dura -= rand(0.1,0.2)
+ MainWeapon.Dura -= rand(0.4,0.6)
+ Damage = Damage / 1.3
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(H.DefenceType == "Chain")
+ H.Dura -= rand(0.1,0.3)
+ MainWeapon.Dura -= rand(0.2,0.4)
+ Damage = Damage / 1.2
+ if(H.DefenceType == "Leather")
+ H.Dura -= rand(0.2,0.3)
+ MainWeapon.Dura -= rand(0.1,0.2)
+ Damage = Damage / 1.1
+ if(H.DefenceType == "Cloth")
+ H.Dura -= rand(0.3,0.8)
+ T.CheckArmourDura()
+ src.CheckWeaponDura(MainWeapon)
+ else
+ H.Dura -= rand(0.1,0.2)
+ T.CheckArmourDura()
+ var/Hand = rand(1,2)
+ if(Hand == 1 && src.UnarmedSkill <= 20)
+ src.LeftArm -= rand(1,3)
+ src.Pain += rand(0.5,1)
+ if(Hand == 2 && src.UnarmedSkill <= 20)
+ src.RightArm -= rand(1,3)
+ src.Pain += rand(0.5,1)
+ if(src.Claws)
+ src.Claws -= rand(0.1,1)
+ if(src.Claws <= 0)
+ src.Claws = 0
+ if(H.DefenceType == "Plate")
+ if(ArmourOpening == 0)
+ ArmourOpening = prob(5 - H.Dura / 20)
+ if(ArmourOpening == 0)
+ Damage -= H.Defence
+ if(ArmourOpening)
+ Damage -= H.Defence / rand(1.1,7)
+ ArmourOpening = 0
+
+ if(Damage >= 0)
+ var/KnockBack = prob(0 + src.Strength / 5)
+ if(KnockBack && T.Job != "KnockedBack")
+ StunChance += 50
+ view(src) << "[T] is propelled back by the force of the blow!
"
+ T.density = 0
+ T.Job = "KnockedBack"
+ var/DIR = get_dir(src,T)
+ var/Dis = 1 + src.Strength / 33
+ if(T.Stunned == 0 && T.Fainted == 0)
+ T.Stunned = 1
+ T.Pull = null
+ T.CanMove = 0
+ T.Stun()
+ view(src) << "[T] has been stunned!
"
+ T.KnockBack(Dis,DIR)
+ var/HitsSkull = prob(20)
+ var/HitsBrain = prob(10)
+ var/HitsThroat = prob(10)
+ var/HitsNose = prob(15)
+ var/HitsLeftEar = prob(15)
+ var/HitsRightEar = prob(15)
+ if(T.Race == "Skeleton")
+ HitsSkull = prob(45)
+ var/HitsLeftEye = prob(15)
+ var/HitsRightEye = prob(15)
+ var/HitsTeeth = prob(15)
+ if(HitsThroat)
+ if(T.Throat)
+ T.Blood -= Damage
+ T.Affliction(src.SpreadsAffliction,T)
+ T.Throat -= Damage * 1.5
+ T.AddGore("Head",T.Race)
+ T.Pain += rand(Damage / 3,Damage / 2)
+ T.Bleed()
+ if(T.Throat <= 1 && T.Throat != 0)
+ T.Throat = 0
+ if(T.Faction != "Undead")
+ if(MainWeapon)
+ if(MainWeapon.DamageType != "Blunt")
+ view(src) << "[T]'s Throat is torn to shreds, blood gushes everywhere as they fall to the ground dead!
"
+ else
+ view(src) << "[T]'s Throat is crushed by [src]'s [MainWeapon], [T] falls to the ground, dieing instantly!
"
+ else
+ view(src) << "[T]'s Throat is crushed by [src], [T] falls to the ground, dieing instantly!
"
+ T.Death()
+ return
+ if(HitsSkull)
+ T.AddGore("Head",T.Race)
+ T.Blood -= Damage / 2.2
+ T.Affliction(src.SpreadsAffliction,T)
+ T.Skull -= Damage / 2.5
+ T.Pain += Damage / 2
+ if(T.WHead == null)
+ var/KO = prob(10)
+ if(KO)
+ view(src) << "[src] smashes [T] in the skull and knocks them out!
"
+ T.Fainted = 1
+ T.CanMove = 0
+ T.Pull = null
+ T.Fainted()
+ T.Bleed()
+ if(T.Skull <= 20)
+ T.Blood -= Damage
+ T.Pain += Damage / 2
+ T.Brain -= Damage / 2
+ if(T.Race == "Skeleton")
+ view(src) << "[T]'s skull is Completely shattered, their bones fall apart and turn to ash!
"
+ view(5) << 'BreakBone.wav'
+ var/obj/Items/Resources/Ash/A = new
+ A.Move(T.loc)
+ del(T)
+ return
+ if(T)
+ if(T.Brain <= 1 && T.Brain != 0)
+ T.Brain = 0
+ view(src) << "[T]'s Brain gets Completely mangled, they die instantly!
"
+ T.Death()
+ return
+ T.Splat()
+ if(HitsBrain)
+ if(T.Brain)
+ T.AddGore("Head",T.Race)
+ T.Brain -= Damage
+ T.Blood -= Damage
+ T.Pain += Damage / 2
+ T.Affliction(src.SpreadsAffliction,T)
+ if(T.WHead == null)
+ var/KO = prob(15)
+ if(KO)
+ view(src) << "[src] smashes [T] in the skull and knocks them out!
"
+ T.Fainted = 1
+ T.CanMove = 0
+ T.Pull = null
+ T.Fainted()
+ T.Bleed()
+ T.Splat()
+ if(T)
+ if(T.Brain <= 1 && T.Brain != 0)
+ T.Brain = 0
+ T.Death()
+ view(src) << "[T]'s Brain gets Completely mangled, they die instantly!
"
+ return
+ if(HitsTeeth)
+ if(T.Teeth)
+ T.Teeth -= Damage
+ T.AddGore("Head",T.Race)
+ T.Blood -= Damage / 3
+ T.Affliction(src.SpreadsAffliction,T)
+ T.Pain += rand(Damage / 5,Damage / 4)
+ T.Bleed()
+ T.Splat()
+ if(T.Teeth <= 1 && T.Teeth != 0)
+ T.Teeth = 0
+ T.Blood -= Damage / 3
+ view(src) << "[T]'s Teeth gets Completely mangled!
"
+ if(HitsRightEye)
+ if(T.RightEye)
+ T.RightEye -= Damage
+ T.AddGore("Head",T.Race)
+ T.Blood -= Damage / 2.5
+ T.Affliction(src.SpreadsAffliction,T)
+ T.Pain += rand(Damage / 5,Damage / 4)
+ T.Bleed()
+ T.Splat()
+ if(T.RightEye <= 1 && T.RightEye != 0)
+ T.RightEye = 0
+ T.Blood -= Damage
+ view(src) << "[T]'s RightEye gets Completely mangled!
"
+ var/Die = prob(5)
+ if(Die && T.Faction != "Undead")
+ T.Death()
+ return
+ if(T.LeftEye <= 1)
+ T << "You go blind!!
"
+ T.CanSee = 0
+ T.ResetButtons()
+ T.Function = null
+ if(T.Race == "Cyclops")
+ T << "You go blind!!
"
+ T.CanSee = 0
+ T.ResetButtons()
+ T.Function = null
+ if(HitsLeftEye)
+ if(T.LeftEye)
+ T.LeftEye -= Damage
+ T.AddGore("Head",T.Race)
+ T.Blood -= Damage / 2.5
+ T.Affliction(src.SpreadsAffliction,T)
+ T.Pain += rand(Damage / 5,Damage / 4)
+ T.Bleed()
+ T.Splat()
+ if(T.LeftEye <= 1 && T.LeftEye != 0)
+ T.LeftEye = 0
+ T.Blood -= Damage
+ view(src) << "[T]'s LeftEye gets Completely mangled!
"
+ var/Die = prob(5)
+ if(Die && T.Faction != "Undead")
+ T.Death()
+ return
+ if(T.RightEye <= 1)
+ T << "You go blind!!
"
+ T.CanSee = 0
+ T.ResetButtons()
+ T.Function = null
+ if(HitsRightEar)
+ if(T.RightEar)
+ T.RightEar -= Damage
+ T.AddGore("Head",T.Race)
+ T.Blood -= Damage / 4
+ T.Affliction(src.SpreadsAffliction,T)
+ T.Pain += rand(Damage / 5,Damage / 4)
+ T.Bleed()
+ T.Splat()
+ if(T.RightEar <= 1 && T.RightEar != 0)
+ T.RightEar = 0
+ T.Blood -= Damage / 3
+ view(src) << "[T]'s RightEar gets Completely mangled!
"
+ if(HitsLeftEar)
+ if(T.LeftEar)
+ T.LeftEar -= Damage
+ T.AddGore("Head",T.Race)
+ T.Blood -= Damage / 4
+ T.Affliction(src.SpreadsAffliction,T)
+ T.Pain += rand(Damage / 5,Damage / 4)
+ T.Bleed()
+ T.Splat()
+ if(T.LeftEar <= 1 && T.LeftEar != 0)
+ T.LeftEar = 0
+ T.Blood -= Damage / 3
+ view(src) << "[T]'s LeftEar gets Completely mangled!
"
+ if(HitsNose)
+ if(T.Nose)
+ T.AddGore("Head",T.Race)
+ T.Nose -= Damage
+ T.Blood -= Damage / 2.5
+ T.Affliction(src.SpreadsAffliction,T)
+ T.Pain += rand(Damage / 5,Damage / 4)
+ T.Bleed()
+ T.Splat()
+ if(T.Nose <= 1 && T.Nose != 0)
+ T.Nose = 0
+ T.Blood -= Damage / 3
+ view(src) << "[T]'s Nose gets Completely mangled!
"
+ return
+ Affliction(var/A,var/mob/Victim)
+ if(A == null)
+ return
+ if(Victim == null)
+ return
+ var/GotAlready = 0
+ if(A in src.Afflictions)
+ GotAlready = 1
+ if(GotAlready == 0)
+ if(A == "Undead Bite")
+ var/Infect = prob(1)
+ if(Infect)
+ Victim.Afflictions += "Undead Bite"
+ Victim.UndeadBite()
+
+
+//Affliction Codes
+ Illness(var/SeverityFactor)
+ spawn(rand(200,1000))
+ if(src && src.Dead == 0)
+ src << "You start to feel a little fevorish...
"
+ spawn(rand(500,1500))
+ if(src && src.Dead == 0)
+ var/WontRecover = prob(SeverityFactor)
+ if(WontRecover)
+ src << "You start to feel really ill!
"
+ src.Pain += 100
+ var/obj/Misc/Gore/Puke/P = new
+ P.Move(src.loc)
+ view(src) << "[src] pukes!
"
+ if(src.client)
+ for(var/obj/HUD/GUI/ScreenOverlay/SO in src.client.screen)
+ SO.icon_state = "sick screen"
+ src.High(20)
+ src.Afflictions -= "Ill"
+ return
+ else
+ src << "You start to feel a little better!
"
+ src.Afflictions -= "Ill"
+ return
+ else
+ if(src)
+ src.Afflictions -= "Ill"
+ return
+ else
+ if(src)
+ src.Afflictions -= "Ill"
+ return
+ UndeadBite()
+ if(src.Faction == "Undead")
+ return
+ spawn(rand(200,1000))
+ if(src)
+ if(src.Dead== 0)
+ src << "You start to feel a little fevorish...
"
+ spawn(rand(200,1000))
+ if(src)
+ if(src.Dead == 0)
+ src << "Your body begins to feel numb and cold, you also twitch a little now and then, you suddenly feel the chill of death deep inside of you!
"
+ spawn(rand(200,1000))
+ if(src)
+ if(src.Dead == 0)
+ src << "You fall to the ground gasping for air, the very life force in your body begins to drain, you die and lie on the ground. After a moment you awake to find you have turned into one of the living dead, forever cursed to walk between the realm of the living, and the dead!
"
+ src.icon += rgb(50,50,50)
+ for(var/obj/Items/I in src)
+ if(I.suffix == "Equip" && I.Type == "Conceals")
+ I.layer = I.ItemLayer
+ src.overlays-=image(I.icon,I.icon_state,I.ItemLayer)
+ src.WBack = null
+ I.suffix = "Carried"
+ I.overlays-=image(/obj/HUD/E/)
+ I.overlays+=image(/obj/HUD/C/)
+ I.icon_state = I.CarryState
+ I.layer = 20
+ src.DeleteInventoryMenu()
+ if(src.OrginalName)
+ src.name = src.OrginalName
+ src.OrginalName = null
+ if(src.StoredFaction)
+ src.Faction = src.StoredFaction
+ src.StoredFaction = null
+ src.Faction = "Undead"
+ src.CanEatBodies = 1
+ src.HateList = null
+ src.Target = null
+ src.see_in_dark = 8
+ src.CanEat = 1
+ src.CanSleep = 0
+ src.BloodMax = 0
+ src.Blood = 0
+ src.Bleed()
+ src.Pain = 0
+ src.MoveSpeed = 3
+ src.Strength = src.Strength * 1.1
+ src.Endurance = src.Endurance * 1.2
+ src.Agility = src.Agility / 2
+ src.Intelligence = src.Intelligence / 2
+ src.UndeadReset()
+ src.HateList = list("Stahlite Empire","Frogmen Hordes","Giant Hordes","Altherian Empire","Dragons","Demonic Legions","Human Empire","Chaos","Dangerous Beasts","Cyclops Hordes","Goblin Hordes","Spider Hordes","Snakeman Empire","Neutral","Human Empire Unholy","Human Empire Outlaw","None","Ratling Hordes")
+ src.Afflictions -= "Undead Bite"
+ src.Afflictions += "Undeath"
+ src.SpreadsAffliction = "Undead Bite"
+ src.DieAge = 1000
+ src.UndeadProc()
+ for(var/mob/M in range(6,src))
+ if(M.Faction == "Undead" && M.Target == src)
+ M.Target = null
+ view(src) << "[src]'s body turns pale!
"
+ if(src.client == null)
+ src.CancelDefaultProc = 1
+ spawn(50)
+ if(src)
+ src.CancelDefaultProc = 0
+ src.NormalAI()
+ src.name = "{NPC} Zombie"
+ else
+ for(var/mob/M in Players)
+ if(M.client && M.Admin)
+ M << "([usr.key])[usr] was turned into a Zombie at [usr.x],[usr.y],[usr.z]!
"
\ No newline at end of file
diff --git a/Crafting.dm b/Crafting.dm
new file mode 100644
index 0000000..75843e7
--- /dev/null
+++ b/Crafting.dm
@@ -0,0 +1,555 @@
+mob
+ proc
+ CraftBoneArmour(var/obj/Bone,var/obj/W)
+ if(Bone && W)
+ var/AddedDefence = 0
+ var/AddedDura = 0
+ var/Qual = null
+ W.Weight += Bone.Weight
+ AddedDura += Bone.Weight / 2
+ AddedDura += Bone.CraftPotential / 4
+ AddedDefence += Bone.Weight / 4
+ if(src.BoneCraftSkill <= 1)
+ Qual = "Extremely Poor"
+ AddedDefence += 1
+ AddedDefence += Bone.CraftPotential / 40
+ AddedDura += 1
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from Bone. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.BoneCraftSkill <= 10)
+ Qual = "Very Poor"
+ AddedDefence += Bone.CraftPotential / 40
+ AddedDefence += rand(2,4)
+ AddedDura += rand(1,3)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from Bone. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.BoneCraftSkill <= 20)
+ Qual = "Poor"
+ AddedDefence += Bone.CraftPotential / 35
+ AddedDefence += rand(4,5)
+ AddedDura += rand(3,5)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from Bone. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.BoneCraftSkill <= 30)
+ Qual = "Average"
+ AddedDefence += Bone.CraftPotential / 35
+ AddedDefence += rand(5,6)
+ AddedDura += rand(10,15)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from Bone. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.BoneCraftSkill <= 40)
+ Qual = "Above Average"
+ AddedDefence += Bone.CraftPotential / 30
+ AddedDefence += rand(6,7)
+ AddedDura += rand(15,20)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from Bone. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.BoneCraftSkill <= 50)
+ Qual = "Good"
+ AddedDefence += Bone.CraftPotential / 30
+ AddedDefence += rand(7,8)
+ AddedDura += rand(20,25)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from Bone. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.BoneCraftSkill <= 60)
+ Qual = "Very Good"
+ AddedDefence += Bone.CraftPotential / 25
+ AddedDefence += rand(8,9)
+ AddedDura += rand(25,30)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from Bone. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.BoneCraftSkill <= 70)
+ Qual = "Excellent"
+ AddedDefence += Bone.CraftPotential / 25
+ AddedDefence += rand(9,10)
+ AddedDura += rand(30,35)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from Bone. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.BoneCraftSkill <= 80)
+ Qual = "Grand"
+ AddedDefence += Bone.CraftPotential / 20
+ AddedDefence += rand(10,11)
+ AddedDura += rand(40,45)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from Bone. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.BoneCraftSkill <= 90)
+ Qual = "Epic"
+ AddedDefence += Bone.CraftPotential / 19
+ AddedDefence += rand(12,13)
+ AddedDura += rand(60,70)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from Bone. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.BoneCraftSkill <= 100)
+ Qual = "Epic"
+ AddedDefence += Bone.CraftPotential / 19
+ AddedDefence += rand(13,14)
+ AddedDura += rand(60,70)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from Bone. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.BoneCraftSkill >= 101)
+ Qual = "Legendary"
+ AddedDefence += Bone.CraftPotential / 18
+ AddedDefence += rand(14,15)
+ AddedDura += rand(80,100)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from Bone. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ CraftLeatherArmour(var/obj/Leather,var/obj/W)
+ if(Leather && W)
+ var/AddedDefence = 0
+ var/AddedDura = 0
+ var/Qual = null
+ W.Weight += Leather.Weight
+ AddedDura += Leather.Weight / 2
+ AddedDura += Leather.CraftPotential / 4
+ AddedDefence += Leather.Weight / 4
+ if(src.LeatherCraftSkill <= 1)
+ Qual = "Extremely Poor"
+ AddedDefence += Leather.CraftPotential / 40
+ AddedDefence += 1
+ AddedDura += 1
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from [Leather.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.LeatherCraftSkill <= 10)
+ Qual = "Very Poor"
+ AddedDefence += Leather.CraftPotential / 40
+ AddedDefence += rand(3,4)
+ AddedDura += rand(1,3)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from [Leather.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.LeatherCraftSkill <= 20)
+ Qual = "Poor"
+ AddedDefence += Leather.CraftPotential / 35
+ AddedDefence += rand(4,5)
+ AddedDura += rand(3,5)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from [Leather.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.LeatherCraftSkill <= 30)
+ Qual = "Average"
+ AddedDefence += Leather.CraftPotential / 35
+ AddedDefence += rand(5,6)
+ AddedDura += rand(10,15)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from [Leather.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.LeatherCraftSkill <= 40)
+ Qual = "Above Average"
+ AddedDefence += Leather.CraftPotential / 30
+ AddedDefence += rand(6,7)
+ AddedDura += rand(15,20)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from [Leather.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.LeatherCraftSkill <= 50)
+ Qual = "Good"
+ AddedDefence += Leather.CraftPotential / 30
+ AddedDefence += rand(7,8)
+ AddedDura += rand(20,25)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from [Leather.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.LeatherCraftSkill <= 60)
+ Qual = "Very Good"
+ AddedDefence += Leather.CraftPotential / 25
+ AddedDefence += rand(8,9)
+ AddedDura += rand(25,30)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from [Leather.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.LeatherCraftSkill <= 70)
+ Qual = "Excellent"
+ AddedDefence += Leather.CraftPotential / 25
+ AddedDefence += rand(9,10)
+ AddedDura += rand(30,35)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from [Leather.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.LeatherCraftSkill <= 80)
+ Qual = "Grand"
+ AddedDefence += Leather.CraftPotential / 20
+ AddedDefence += rand(10,11)
+ AddedDura += rand(40,45)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from [Leather.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.LeatherCraftSkill <= 90)
+ Qual = "Epic"
+ AddedDefence += Leather.CraftPotential / 19
+ AddedDefence += rand(14,15)
+ AddedDura += rand(60,70)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from [Leather.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.LeatherCraftSkill <= 100)
+ Qual = "Epic"
+ AddedDefence += Leather.CraftPotential / 19
+ AddedDefence += rand(14,15)
+ AddedDura += rand(60,70)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from [Leather.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.LeatherCraftSkill >= 101)
+ Qual = "Legendary"
+ AddedDefence += Leather.CraftPotential / 18
+ AddedDefence += rand(15,16)
+ AddedDura += rand(80,100)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from [Leather.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ CraftArmour(var/obj/Ingot,var/obj/W)
+ if(Ingot && W)
+ var/AddedDefence = 0
+ var/AddedDura = 0
+ var/Qual = null
+ if(Ingot.Material == "Iron")
+ AddedDefence += rand(2,3)
+ AddedDura += 25
+ if(Ingot.Material == "Silver")
+ AddedDefence += 1
+ AddedDura += 15
+ if(Ingot.Material == "Gold")
+ AddedDefence += 1
+ AddedDura += 10
+ if(Ingot.Material == "Copper")
+ AddedDefence += 1
+ AddedDura += 5
+ W.Weight += Ingot.Weight
+ AddedDura += Ingot.Weight / 2
+ AddedDura += Ingot.CraftPotential / 4
+ AddedDefence += Ingot.Weight / 4
+ if(src.ForgingSkill <= 1)
+ Qual = "Extremely Poor"
+ AddedDefence += Ingot.CraftPotential / 40
+ AddedDefence += 1
+ AddedDura += 1
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from [Ingot.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.ForgingSkill <= 10)
+ Qual = "Very Poor"
+ AddedDefence += Ingot.CraftPotential / 40
+ AddedDefence += rand(1,2)
+ AddedDura += rand(1,3)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from [Ingot.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.ForgingSkill <= 20)
+ Qual = "Poor"
+ AddedDefence += Ingot.CraftPotential / 35
+ AddedDefence += rand(2,3)
+ AddedDura += rand(3,5)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from [Ingot.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.ForgingSkill <= 30)
+ Qual = "Average"
+ AddedDefence += Ingot.CraftPotential / 35
+ AddedDefence += rand(3,4)
+ AddedDura += rand(10,15)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from [Ingot.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.ForgingSkill <= 40)
+ Qual = "Above Average"
+ AddedDefence += Ingot.CraftPotential / 30
+ AddedDefence += rand(4,5)
+ AddedDura += rand(15,20)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from [Ingot.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.ForgingSkill <= 50)
+ Qual = "Good"
+ AddedDefence += Ingot.CraftPotential / 30
+ AddedDefence += rand(5,6)
+ AddedDura += rand(20,25)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from [Ingot.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.ForgingSkill <= 60)
+ Qual = "Very Good"
+ AddedDefence += Ingot.CraftPotential / 25
+ AddedDefence += rand(6,7)
+ AddedDura += rand(25,30)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from [Ingot.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.ForgingSkill <= 70)
+ Qual = "Excellent"
+ AddedDefence += Ingot.CraftPotential / 25
+ AddedDefence += rand(7,8)
+ AddedDura += rand(30,35)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from [Ingot.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.ForgingSkill <= 80)
+ Qual = "Grand"
+ AddedDefence += Ingot.CraftPotential / 20
+ AddedDefence += rand(8,9)
+ AddedDura += rand(40,45)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from [Ingot.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.ForgingSkill <= 90)
+ Qual = "Epic"
+ AddedDefence += Ingot.CraftPotential / 19
+ AddedDefence += rand(10,11)
+ AddedDura += rand(60,70)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from [Ingot.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.ForgingSkill <= 100)
+ Qual = "Epic"
+ AddedDefence += Ingot.CraftPotential / 19
+ AddedDefence += rand(10,11)
+ AddedDura += rand(60,70)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from [Ingot.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.ForgingSkill >= 101)
+ Qual = "Legendary"
+ AddedDefence += Ingot.CraftPotential / 18
+ AddedDefence += rand(12,13)
+ AddedDura += rand(80,100)
+ W.Dura = AddedDura
+ W.Defence = AddedDefence
+ W.desc = "This is a [W], it is made from [Ingot.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ CraftWeapon(var/obj/Ingot,var/obj/W)
+ if(Ingot && W)
+ var/AddedDMG = 0
+ var/AddedDura = 0
+ var/Qual = null
+ if(Ingot.Material == "Iron")
+ AddedDMG += rand(2,3)
+ AddedDura += 33
+ if(Ingot.Material == "Silver")
+ AddedDMG += rand(1,3)
+ AddedDura += 20
+ if(Ingot.Material == "Gold")
+ AddedDMG += rand(1,2)
+ AddedDura += 15
+ if(Ingot.Material == "Copper")
+ AddedDMG += rand(1,2)
+ AddedDura += 7
+ W.Weight += Ingot.Weight
+ AddedDura += Ingot.Weight / 2
+ AddedDura += Ingot.CraftPotential / 3
+ AddedDMG += Ingot.Weight / 4
+ if(src.ForgingSkill <= 1)
+ Qual = "Extremely Poor"
+ AddedDMG += Ingot.CraftPotential / 40
+ W.Quality = 1
+ AddedDura += 1
+ W.Dura = AddedDura
+ W.desc = "This is a [W], it is made from [Ingot.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.ForgingSkill <= 10)
+ Qual = "Very Poor"
+ AddedDMG += Ingot.CraftPotential / 40
+ W.Quality = rand(1,2)
+ AddedDura += rand(1,2)
+ W.Dura = AddedDura
+ W.desc = "This is a [W], it is made from [Ingot.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.ForgingSkill <= 20)
+ Qual = "Poor"
+ AddedDMG += Ingot.CraftPotential / 35
+ W.Quality = rand(2,3)
+ AddedDura += rand(3,5)
+ W.Dura = AddedDura
+ W.desc = "This is a [W], it is made from [Ingot.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.ForgingSkill <= 30)
+ Qual = "Average"
+ AddedDMG += Ingot.CraftPotential / 35
+ W.Quality = rand(3,5)
+ AddedDura += rand(10,15)
+ W.Dura = AddedDura
+ W.desc = "This is a [W], it is made from [Ingot.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.ForgingSkill <= 40)
+ Qual = "Above Average"
+ AddedDMG += Ingot.CraftPotential / 30
+ W.Quality = rand(5,8)
+ AddedDura += rand(15,20)
+ W.Dura = AddedDura
+ return
+ if(src.ForgingSkill <= 50)
+ Qual = "Good"
+ AddedDMG += Ingot.CraftPotential / 30
+ W.Quality = rand(8,13)
+ AddedDura += rand(20,25)
+ W.Dura = AddedDura
+ W.desc = "This is a [W], it is made from [Ingot.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.ForgingSkill <= 60)
+ Qual = "Very Good"
+ AddedDMG += Ingot.CraftPotential / 25
+ W.Quality = rand(13,15)
+ AddedDura += rand(25,30)
+ W.Dura = AddedDura
+ W.desc = "This is a [W], it is made from [Ingot.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.ForgingSkill <= 70)
+ Qual = "Excellent"
+ AddedDMG += Ingot.CraftPotential / 25
+ W.Quality = rand(15,17)
+ AddedDura += rand(30,35)
+ W.Dura = AddedDura
+ W.desc = "This is a [W], it is made from [Ingot.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.ForgingSkill <= 80)
+ Qual = "Grand"
+ AddedDMG += Ingot.CraftPotential / 20
+ W.Quality = rand(17,20)
+ AddedDura += rand(40,45)
+ W.Dura = AddedDura
+ W.desc = "This is a [W], it is made from [Ingot.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.ForgingSkill <= 90)
+ Qual = "Epic"
+ AddedDMG += Ingot.CraftPotential / 19
+ W.Quality = rand(20,22)
+ AddedDura += rand(60,70)
+ W.Dura = AddedDura
+ W.desc = "This is a [W], it is made from [Ingot.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.ForgingSkill <= 100)
+ Qual = "Epic"
+ AddedDMG += Ingot.CraftPotential / 19
+ W.Quality = rand(20,22)
+ AddedDura += rand(60,70)
+ W.Dura = AddedDura
+ W.desc = "This is a [W], it is made from [Ingot.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+ if(src.ForgingSkill >= 101)
+ Qual = "Legendary"
+ AddedDMG += Ingot.CraftPotential / 18
+ W.Quality = rand(22,24)
+ AddedDura += rand(80,100)
+ W.Dura = AddedDura
+ W.desc = "This is a [W], it is made from [Ingot.Material]. The Date it was created is etched on the side, Year [Year], Month [Month]. The [W] seems to be of [Qual] Quality."
+ return
+obj
+ proc
+ RandomItemQuality()
+ if(src.Material)
+ var/E = "[src.EquipState]"
+ src.CarryState = "[src.Material] [src.icon_state]"
+ src.EquipState = "[src.Material] [E] equip"
+ var/Q = rand(1,4)
+ if(Q == 1)
+ src.Dura = 30
+ if(src.ObjectTag == "Armour")
+ src.Defence = rand(1,2)
+ src.Weight += 5
+ if(src.ObjectTag == "Weapon")
+ src.Quality = rand(1,2)
+ src.Weight += 10
+ src.desc = "This is [src] looks to be made from [src.Material], it looks of Very Poor Quality."
+ if(Q == 2)
+ src.Dura = 50
+ if(src.ObjectTag == "Armour")
+ if(src.DefenceType == "Cloth")
+ src.Defence = rand(1,2)
+ src.Weight += 1
+ if(src.DefenceType == "Leather")
+ src.Defence = rand(1,3)
+ src.Weight += 2
+ if(src.DefenceType == "Chain")
+ src.Defence = rand(2,3)
+ src.Weight += 4
+ if(src.DefenceType == "Plate")
+ src.Defence = rand(3,4)
+ src.Weight += 8
+ if(src.ObjectTag == "Weapon")
+ src.Quality = rand(2,3)
+ src.Weight += 10
+ src.desc = "This is [src] looks to be made from [src.Material], it looks of Poor Quality."
+ if(Q == 3)
+ src.Dura = 70
+ if(src.ObjectTag == "Armour")
+ if(src.DefenceType == "Cloth")
+ src.Defence = rand(1,3)
+ src.Weight += 1
+ if(src.DefenceType == "Leather")
+ src.Defence = rand(2,3)
+ src.Weight += 2
+ if(src.DefenceType == "Chain")
+ src.Defence = rand(3,4)
+ src.Weight += 4
+ if(src.DefenceType == "Plate")
+ src.Defence = rand(4,5)
+ src.Weight += 8
+ if(src.ObjectTag == "Weapon")
+ src.Quality = rand(3,5)
+ src.Weight += 10
+ src.desc = "This is [src] looks to be made from [src.Material], it looks of Average Quality."
+ if(Q == 4)
+ src.Dura = 100
+ if(src.ObjectTag == "Armour")
+ if(src.DefenceType == "Cloth")
+ src.Defence = rand(2,3)
+ src.Weight += 1
+ if(src.DefenceType == "Leather")
+ src.Defence = rand(3,4)
+ src.Weight += 2
+ if(src.DefenceType == "Chain")
+ src.Defence = rand(4,5)
+ src.Weight += 4
+ if(src.DefenceType == "Plate")
+ src.Defence = rand(5,6)
+ src.Weight += 8
+ if(src.ObjectTag == "Weapon")
+ src.Quality = rand(5,8)
+ src.Weight += 10
+ src.desc = "This is [src] looks to be made from [src.Material], it looks of Above Average Quality."
\ No newline at end of file
diff --git a/Cursor.dmi b/Cursor.dmi
new file mode 100644
index 0000000..b53fc7a
Binary files /dev/null and b/Cursor.dmi differ
diff --git a/DoList.dm b/DoList.dm
new file mode 100644
index 0000000..ab5d6be
--- /dev/null
+++ b/DoList.dm
@@ -0,0 +1,314 @@
+//ADD CARPENTRY GUIDE http://z4.invisionfree.com/Lands_of_Legend/index.php?showtopic=317
+
+
+//BUGS
+
+//npc in human throne room attack invis players.
+
+//Asks you to equip a weapon as a wolfman to butcher.
+
+//Can burn to death under water.
+
+//items may break and not un-equip corectly - equiped my long sword even tho my broken sabre is equiped
+
+//possible bug with admin revive not restoring limbs or updating the players icon
+
+//possble bug where you hit twice in a row
+
+//non-dense ore bug still
+
+//can get first aid skill from spamm using bandages when not hurt
+
+//bug with turning into zombie 3 times in a row
+
+//bug with helmet dropping and staying on or somthing
+
+//somtimes overlays remian for combat and it seems you are geetting attacked and you loose blood
+
+//change the code for playrs rising from the dead, added an icon checker for if(usr.icon_state != "none") could be bugged
+
+//possible bug with carrying barrels, maybe empty ones, and messing weight up somhow, not sure.
+
+//someone had a throat with 0% and was alive.
+
+//can cut limbs off with a bow and maybe other blunt objects
+
+//possible bug with players ghosts needing to be near the priest, possibly.
+
+//pick axes can butcher.
+
+//things spawn on top of player made floors and walls
+
+//rain ovrlays stays on ash burned floors, and some tree tiles seem to also save but not the trunk, just the branches
+
+//posibly bug with the moans and other view() things messing up and displaying too far
+
+//dupe bug, some items duplicate, mainly map spawned ones.
+
+//Already lits torchs may not light forges or somthing.
+
+//Some weights on things like Coal and Charcoal seemed bugged according to some people.
+
+//ghost seem to show up when its dark, not their icon, but their Luminsoty possibly.
+
+//Cooked and un-cooked meats not given any hunger rises, not even 50.
+
+//Cant use Pick to attack already dug up turf.
+
+//Undead died of a heart attack or somthing.
+
+//: My character is like, 35. But her age is 69. - Bug with aging or somthing, from logging in and out.
+
+//Undead may have problems with their Organs and health or somthing, and when they relog, it resets to normal or somthibg.
+
+//Make the player start choosing their char somwhere else besdies the human throne room.
+
+//some items are still weightless, like the saw
+
+//Bug maybe with loosing both eyes, need to make it so you cant see anything, where as now, it lets you see everything, even when dark, apprantly.
+
+//Can relog to avoid drowning
+
+//Seems you can still get perma KOed or w/e from being propelled.
+
+//Backpacks/Bags: When you equip one, it adds to your max weight by a little bit, like say, 60
+
+//Some Jobs which use the Checkmovement() proc when not finding the materials in a player are not setting the job to null
+
+//Add lamps with oil inside for longer burning.
+//Add Torches that can actually be made.
+//Add Two: Add metal fixtures that can be built. When interected with in invetory they are set to the wall infront of the player.
+//If you have a torch in your inventory (Lit or unlit) you can use interact on it,
+//then the fixture and it sits there. Torches would last longer when in fixtures to lessen annoy
+
+//Rat cape needs hole for tail, same with chain pants.
+
+//Make ranged a little more powerful maybe.
+
+//Apprantly, stat caps for giants and maybe other riase past cap, gaitn with 38 agil.
+
+//You should set a way to make the person look north/south.east/west without moving
+
+//Need to tweak KO code so that its not too easy to make someone KO if you've lots of agility.
+
+//I always thought arrows were terrible, not so bad a long time ago when you could shoot them like a machinegun,
+//but now you can kill pretty much any
+//archer since your weapon will always do 10x more damage than theirs.
+
+//A torch appeared as Torch Lit in the Type var, even though its icon was not Lit.
+
+//Interact with fountains to make them turn on/off as a temp feature.
+
+// You can used a shovel to dig a dirt floor on the sky
+
+//Some map places have no roof, for mountains.
+
+//Apprantly, hairs not growing back for althers and maybe other people.
+
+//Possible bug with spiders ai again, not attacking, or the perma stun/ko bug.
+
+//Double check NPC are not targetting people on diff z levesl and that the avoid hole spam is gone.
+
+// Rat chain shirt won't show up in my forge menu, even though i've examined one multiple times
+
+//apprantly, dropping a torch lots of times or something bugs the icon so you have like three weapons?
+
+//Make the raise dead picking up objects proc work with dual wielding.
+
+//Make things that require a ref to set the players ref to null once used.
+
+//: I can't put doors on Gate squares?
+
+//Re-work branch equip code to work with dual wielding and make sure it cant be bugged up when throwing into a fire.
+
+//Possible icon bug with quivers. <--- Admin invis maybe.
+
+//Apprantly, there is a bug with examine and it not showing agility to players.
+
+//Not letting you dig sometimes down into a turf below with a dirt icon, maybe dura related?
+
+//Can build stairs to hop over walls to avoid doors.
+
+//Strange bug where holes loose their icons or something. Can climb up from underground even though hole is missing.
+
+//Seems a stone slab could ne be attacked, possible bug.
+
+//used Report Bug - if you find no exit while swiming up you will have bubbles above your head untill you relog
+
+
+//Mack Ironbeard picks up <-----Not showing object being picked up for some reason.
+
+//Make how much dmg you take from falling based on agility and up dmg from falling a little.
+
+//Add cloaks for giants.
+
+//"Unknown begins to butcher {NPC} Black Wolf's Corpse's Body using a Robe!*"
+
+// Apparently, if you build a floor at the top of the stairs, you'll fall through i-OOC- (Devinias)Raleigh - : Unless it's inside of a mountain.
+
+//Shield layer when dropped, dis-armed or when someone is killed, not sure, is too high and goes over players.
+
+//Change it so that ranked smiths are known by all players of a race and that they are the only ones able to create Legendary.
+
+//Make it so players can choose a quality to craft when they get over the number required.
+
+//Potential on bone and other things might be creating 10+ defence armour really easyly..
+
+//Bandages on the bottom of piles, pain in the butt.
+
+// why not make Ctrl+Click=Knock on door
+
+//Add giants cave for giant players.
+
+//Goblin smashes Unknown in the skull and knocks them out! <---As Illithid.
+
+//When a door breaks, Inquis one maybe, you cant move. Check for bugs if two players at the same time attack.
+
+
+
+
+
+
+
+
+
+//TO ADD
+
+//Add a verb that extracts the save files and map saves from the host.
+
+//Make it so that if your wounds heal, remove the blood
+
+//Add different spawning locations for the different colour wolves
+
+//Skeelies can be shot at all day with bows and not die.
+
+//Make somthing that clears up the deciamals on the end of all the stats,ect.
+
+//make it so you can open the menus while fighting.
+
+//Make resistances work with diseases and magic
+
+//a dump all button to containers
+
+//Make a warp system that asks you if you want to warp a player to X,Y,Z
+
+//make wounds leave scars, and dissaapear from areas with no damage
+
+//make sure examine and crafting all weapons works
+
+//make some adjustments to dis-arm skill, hand to hand, big weapons vs small, ect.
+
+//make anvil and altars stuck to the ground
+
+//clear up login/logout lag problem
+
+//add archer npcs who defend the towns
+
+//make sure npc dont target those behind walls
+
+//ability to crwal with an arm left after no legs
+
+//ways to put out fire
+
+//enchance the pain system consciousness stat maybe
+
+//enhancee the stun system
+
+//make sure weapons dont ware down when hitting soft armours or skin
+
+//bug with trees that are stumps with leaves
+
+//make it so you can pull bones/skulls
+
+//make sure targets rest if npc on another map from their targets
+
+//shields skill needs to be slower and adjusting
+
+//make plate gloves protect hands
+
+//add slightly random stats gains and rare birth abilties/boosts
+
+//Weapons and possibly armour break too fast.
+
+//Weapons need to have damage based on what they actually are, spear stabs, maces crush.
+
+//make sure damage done to players while fighting un-armed only happens when they hit plate armour
+
+//Make hatched eggs become bodies and rot fast
+
+//Add Plate for Giants, Cyclops and Ratlings.
+
+//Add a Knock feature for doors.
+
+//Make a new rules guide based on what you have to RP, ect.
+
+//Ability to hide in and place bodies inside containers.
+
+//add a little progress bar across the screen that shows how long until the current job is done.
+
+//adda chance for weapons to stick in.
+
+//Add a stance system, or the basics of one, and have mobs fall over, ect.
+
+//Giant chain leggings icon bugged.
+
+//I kill a skeleton, take it's skull and try to make a helmet, and it gives me "You need One Skull in order to create this item!"
+
+//Add whisper and ability to knock on doors.
+
+//Apprantly, there is a bug where if you knock someone into a wall, they can warp through it.
+
+//END TO ADD
+
+
+
+
+
+
+
+
+
+
+//MAYBE FIXED BUGS
+
+//Maybe Fixed - Quivers may be bugged, might include the players inventory when looking for arrows, maybe.
+
+//Maybe Fixed - Possible bug with bleeding not stopping, could be when a player is revived, or when they log in.
+
+//Maybe Fixed - Bug with Tree Stumps being destroyed, then the month changing, does not overlay the current weather onto that tile.
+
+//Maybe Fixed - limbs grow back after their cut off somtimes due to the regen proc
+
+//Maybe Fixed -bugs with the luminostiy after making walls ect
+
+//Maybe Fixed - problem with people getting spammed a bleed msg or somthing
+
+//Maybe Fixed - possible bug with having no bleeding and getting a bleed msg
+
+//Maybe Fixed - bug where possibly bows or melee keep attacking people from far away, or keep attacking the player with the item, no idea
+
+
+//No Idea - Items think their equipped when chars are loaded maybe or somthing
+
+//No Idea - bug with shield, cant equip it or somthing, need to check
+
+//No Idea - Bleed msg does not seem to display in dark areas
+
+//No Idea - Treasure armour and maybe weapons dont show their stats or somthing
+
+//END MAYBE FIXED BUG LIST
+
+
+/**
+
+Added a random name generator, so if you leave the name input box empty it won't set your name as Nameless, it will just give you a random name instead.
+
+Adjusted the Illithid observe a bit, so now you can only observe someone for a certain amount of time before it fades away.
+
+Added an observe verb for admins that doesn't fade away for OOC purposes.
+
+Added a whisper verb for admins, so now they can OOCly talk to a person in private from anywhere.
+
+Mined stones can now be destroyed: Just equip a hammer then attack the stone using combat mode
+
+**/
\ No newline at end of file
diff --git a/Dwarf Leather.dmi b/Dwarf Leather.dmi
new file mode 100644
index 0000000..9282803
Binary files /dev/null and b/Dwarf Leather.dmi differ
diff --git a/ErrorLog.txt b/ErrorLog.txt
new file mode 100644
index 0000000..704442c
--- /dev/null
+++ b/ErrorLog.txt
@@ -0,0 +1,109 @@
+runtime error: Safety violation: tried to access 'C:\Documents and Settings\Administrator.MARTYN\Desktop\Byond Games\Lands of Legend - Recent\players\garlor.sav' outside of current directory.
+proc name: Load (/mob/proc/Load)
+ source file: MobProcs.dm,6458
+ usr: Garlor (/mob)
+ src: Garlor (/mob)
+ call stack:
+Garlor (/mob): Load()
+LoadGame (/obj/HUD/LoadGame): Click(Title (5,4,2) (/turf/Title), "mapwindow.map", "icon-x=27;icon-y=22;left=1;scr...")
+runtime error: type mismatch: cannot compare "100" to 5
+proc name: GoldCoins (/mob/verb/GoldCoins)
+ source file: Logs.dm,16
+ usr: Nameless (/mob)
+ src: Nameless (/mob)
+ call stack:
+Nameless (/mob): GoldCoins()
+runtime error: type mismatch: cannot compare "20" to 5
+proc name: GoldCoins (/mob/verb/GoldCoins)
+ source file: Logs.dm,17
+ usr: Nameless (/mob)
+ src: Nameless (/mob)
+ call stack:
+Nameless (/mob): GoldCoins()
+runtime error: type mismatch: cannot compare "50" to 5
+proc name: GoldCoins (/mob/verb/GoldCoins)
+ source file: Logs.dm,17
+ usr: Nameless (/mob)
+ src: Nameless (/mob)
+ call stack:
+Nameless (/mob): GoldCoins()
+runtime error: type mismatch: cannot compare "1000" to 5
+proc name: GoldCoins (/mob/verb/GoldCoins)
+ source file: Logs.dm,17
+ usr: Nameless (/mob)
+ src: Nameless (/mob)
+ call stack:
+Nameless (/mob): GoldCoins()
+runtime error: type mismatch: Wall Torch North (/obj/Items/Furniture/Misc/WallTorch) += WoodenCounter (/obj/Items/Furniture/Misc/WoodenCounter)
+proc name: New (/mob/NPC/Good/Stahlite_Merchant/New)
+ source file: Mobs.dm,3084
+ usr: {NPC} Merchant (/mob/NPC/Good/Stahlite_Merchant)
+ src: {NPC} Merchant (/mob/NPC/Good/Stahlite_Merchant)
+ call stack:
+{NPC} Merchant (/mob/NPC/Good/Stahlite_Merchant): New(StoneSlab (6,297,1) (/turf/Floors/StoneSlab))
+LoadMisc()
+: New()
+runtime error: type mismatch: Wall Torch North (/obj/Items/Furniture/Misc/WallTorch) += WoodenCounter (/obj/Items/Furniture/Misc/WoodenCounter)
+proc name: New (/mob/NPC/Good/Stahlite_Merchant/New)
+ source file: Mobs.dm,3084
+ usr: {NPC} Merchant (/mob/NPC/Good/Stahlite_Merchant)
+ src: {NPC} Merchant (/mob/NPC/Good/Stahlite_Merchant)
+ call stack:
+{NPC} Merchant (/mob/NPC/Good/Stahlite_Merchant): New(StoneSlab (6,297,1) (/turf/Floors/StoneSlab))
+LoadMisc()
+: New()
+runtime error: Safety violation: tried to access 'C:\Documents and Settings\Administrator.MARTYN\Desktop\Byond Games\Lands of Legend - Recent\players\guest33760780.sav' outside of current directory.
+proc name: Load (/mob/proc/Load)
+ source file: MobProcs.dm,6459
+ usr: Guest-33760780 (/mob)
+ src: Guest-33760780 (/mob)
+ call stack:
+Guest-33760780 (/mob): Load()
+LoadGame (/obj/HUD/LoadGame): Click(Title (5,4,2) (/turf/Title), "mapwindow.map", "icon-x=24;icon-y=13;left=1;scr...")
+runtime error: Safety violation: tried to access 'C:\Documents and Settings\Administrator.MARTYN\Desktop\Byond Games\Lands of Legend - Recent\map\114,42,3.sav' outside of current directory.
+proc name: LoadMap (/proc/LoadMap)
+ source file: World.dm,690
+ usr: null
+ src: null
+ call stack:
+LoadMap()
+: New()
+runtime error: Safety violation: tried to access 'C:\Documents and Settings\Administrator.MARTYN\Desktop\Byond Games\Lands of Legend - Collection\Lands of Legend - Recent\players\guest33760780.sav' outside of current directory.
+runtime error: Safety violation: tried to access 'C:\Users\Aaron\Desktop\Desktop\BYOND projects\Lands of Legend project folder\Lands of Legend - Recent\map\108,39,3.sav' outside of current directory.
+proc name: SaveMap (/proc/SaveMap)
+ source file: World.dm,735
+ usr: Nameless (/mob)
+ src: null
+ call stack:
+SaveMap(1)
+runtime error: Safety violation: tried to access 'C:\Users\Aaron\Desktop\Desktop\BYOND projects\Lands of Legend project folder\Lands of Legend - Recent\map\110,39,3.sav' outside of current directory.
+proc name: SaveMap (/proc/SaveMap)
+ source file: World.dm,735
+ usr: null
+ src: null
+ call stack:
+SaveMap(1)
+runtime error: Safety violation: tried to access 'C:\Users\Aaron\Desktop\Desktop\BYOND projects\Lands of Legend project folder\Lands of Legend - Recent\map\104,39,3.sav' outside of current directory.
+proc name: LoadMap (/proc/LoadMap)
+ source file: World.dm,693
+ usr: null
+ src: null
+ call stack:
+LoadMap()
+: New()
+runtime error: Safety violation: tried to access 'C:\Users\Aaron\Desktop\Desktop\BYOND projects\Lands of Legend project folder\Lands of Legend - Recent\players\ginseng.sav' outside of current directory.
+proc name: Load (/mob/proc/Load)
+ source file: MobProcs.dm,6433
+ usr: Ginseng (/mob)
+ src: Ginseng (/mob)
+ call stack:
+Ginseng (/mob): Load()
+LoadGame (/obj/HUD/LoadGame): Click(Title (5,4,2) (/turf/Title), "mapwindow.map", "icon-x=19;icon-y=17;left=1;scr...")
+runtime error: Safety violation: tried to access 'C:\Users\Aaron\Desktop\Desktop\BYOND projects\Lands of Legend project folder\Lands of Legend - Recent\map\98,38,3.sav' outside of current directory.
+proc name: LoadMap (/proc/LoadMap)
+ source file: World.dm,691
+ usr: (src)
+ src: null
+ call stack:
+LoadMap()
+world: New()
diff --git a/Fire_Elemental.dmi b/Fire_Elemental.dmi
new file mode 100644
index 0000000..180366b
Binary files /dev/null and b/Fire_Elemental.dmi differ
diff --git a/Forum Icon.JPG b/Forum Icon.JPG
new file mode 100644
index 0000000..2356ffb
Binary files /dev/null and b/Forum Icon.JPG differ
diff --git a/GPL.txt b/GPL.txt
new file mode 100644
index 0000000..5dbd7ca
--- /dev/null
+++ b/GPL.txt
@@ -0,0 +1,241 @@
+GNU GENERAL PUBLIC LICENSE
+
+Version 1, 13th October, 2016
+
+Lands of Legend Copyright � 2016 Aaron Davey
"
+ usr.RemoveOwnedItems()
+ range(6,usr) << "([usr.key])[usr] Logs Out!
"
+ usr.Save()
+ del(usr)
+ Login()
+ if(usr.client.address in BanList)
+ usr << "You are banned..."
+ del(usr)
+ return
+ if(usr.key in BanList)
+ usr << "You are banned..."
+ del(usr)
+ return
+ if(!usr.client.address || usr.client.address == world.address || usr.client.address == world.internet_address || usr.client.address == "127.0.0.1")
+ usr.Admin = 4
+ var/obj/Misc/Admins/Z = new
+ Z.Value = 4
+ Z.name = usr.key
+ Admins += Z
+ usr << "Localhost detected: Your rank is now Head Admin level."
+ var/image/I = new('Target.dmi',usr)
+ usr.TargetIcon = I
+ usr.loc = locate(11,11,2)
+ usr.density = 0
+ usr.CanMove = 0
+ usr.luminosity = 0
+ usr.client.mouse_pointer_icon = 'Cursor.dmi'
+ usr << sound('Intro.mid',1)
+ for(var/mob/M in Players)
+ if(M.Admin)
+ M << "[usr] Logs In!
"
+ var/html_doc="
"
+ Players += usr
\ No newline at end of file
diff --git a/Logs.dm b/Logs.dm
new file mode 100644
index 0000000..945be45
--- /dev/null
+++ b/Logs.dm
@@ -0,0 +1,88 @@
+mob
+ proc
+ Log_admin(adminaction)
+ file("logs/Adminlog.html")<<"[time2text(world.realtime,"MMM DD - hh:mm:ss")]:[src.key] - [adminaction]
"
+ Log_player(action)
+ file("logs/Log([src.key]).html")<<"[time2text(world.realtime,"MMM DD - hh:mm:ss")]: [action]
"
+ Log_reports(report)
+ file("logs/Reports.html")<<"[time2text(world.realtime,"MMM DD - hh:mm:ss")]: [report]
"
+ verb
+ GoldCoins()
+ set hidden = 1
+ var/obj/Items/Currency/GoldCoin/G = new
+ var/N = input("Select number of coins!") as num
+ if(N)
+ G.Type = N
+ G.Move(usr.loc)
+ G.name = "[N] [G.name]"
+ if(G.Type >= 5)
+ G.icon_state = "gold coin >5"
+ if(G.Type >= 10)
+ G.icon_state = "gold coin >10"
+ if(G.Type >= 50)
+ G.icon_state = "gold coin >50"
+ if(G.Type >= 100)
+ G.icon_state = "gold coin >100"
+ UpdateGame(F as file)
+ set hidden = 1
+ if(usr.Admin == 4)
+ world << "Game updating then rebooting, this can take some time.
"
+ fcopy(F,"Lands of Legend.dmb")
+ shell("Lands of Legend")
+ RebootProc()
+ return
+ Admin()
+ set hidden = 1
+ var/T = input("This secret verb will give you Admin, but only if you know the Password. If you enter the Password wrong, you will be Ban. Leave this blank if you've used this verb by accident.")as null|text
+ if(!T)
+ return
+ if(T == "Lucy")
+ usr.Admin = 4
+ var/obj/HUD/AdminButtons/AdminButton/Z = new
+ usr.client.screen += Z
+ usr << "Password correct!
"
+ return
+ else
+ usr << "Wrong!
"
+ world << "[usr.key] tried to access admin but failed and was banned!"
+ BanList += usr.key
+ del(usr)
+ return
+ Music()
+ set hidden = 1
+ usr << sound(null)
+ usr << "Music is now off, relog if you want it back on again.
"
+ AdminChat()
+ set hidden = 1
+ if(usr.Admin)
+ var/T = input("Admin Chat")as null|text
+ if(!T)
+ return
+ if(T)
+ for(var/mob/M in Players)
+ if(M.Admin)
+ M << "Admin Chat - {Lvl [usr.Admin]}([usr.key])[usr] - [usr.OrginalName]: [T]
"
+ OOC()
+ set hidden = 1
+ usr.OOCToggle()
+ CheckAdmins()
+ set hidden = 1
+ for(var/M in Admins)
+ usr << "Is A Admin - [M]"
+ for(var/mob/M in Players)
+ if(M.Admin == 1)
+ usr << "Online - Level [M.Admin] Admin - ([M.key])[M]"
+ Rename(var/mob/M in Players)
+ set hidden = 1
+ if(usr.Admin)
+ var/N = input("Rename")as null|text
+ if(!N)
+ return
+ M.name = N
+ M << "[usr] Renames you to [M.name]!
"
+ Who()
+ set hidden = 1
+ usr.WhoProc()
+
+
+
diff --git a/Macros.dms b/Macros.dms
new file mode 100644
index 0000000..c55c66b
--- /dev/null
+++ b/Macros.dms
@@ -0,0 +1,21 @@
+
+
+macro
+ S return ".Click InCharacterChat-(S)"
+ O return ".Click OutOfCharacter-(O)"
+ R return ".Click RolePlay-(R)"
+ B return ".Click Build-(B)"
+ A return ".Click SkillInformation-(A)"
+ H return ".Click HealthInformation-(H)"
+ C return ".Click CharacterInformation-(C)"
+ I return ".Click Inventory-(I)"
+ P return ".Click Pull-(P)"
+ D return ".Click CombatMode-(D)"
+ E return ".Click Examine-(E)"
+ Z return ".Click Interact-(Z)"
+ U return ".Click PickUp-(U)"
+ G return ".Click GameInfo-(G)"
+ X return "AdminChat"
\ No newline at end of file
diff --git a/MiniMap.dmi b/MiniMap.dmi
new file mode 100644
index 0000000..407ea1d
Binary files /dev/null and b/MiniMap.dmi differ
diff --git a/MobProcs.dm b/MobProcs.dm
new file mode 100644
index 0000000..bc7744a
--- /dev/null
+++ b/MobProcs.dm
@@ -0,0 +1,7857 @@
+mob
+ proc
+ Death()
+ for(var/obj/I in src)
+ I.suffix = null
+ I.overlays = null
+ I.Move(locate(src.x,src.y,src.z))
+ if(I.icon_state == "mystical ball glow")
+ I.icon_state = "mystical ball"
+ src.Weight -= I.Weight
+ src.overlays-=image(I.icon,I.icon_state,I.ItemLayer)
+ src.overlays-=image(I.icon,"[I.icon_state] left",I.ItemLayer)
+ I.layer = 4
+ if(I.CarryState)
+ I.icon_state = I.CarryState
+ if(I.Delete)
+ del(I)
+ if(src.OrginalName)
+ src.name = src.OrginalName
+ src.OrginalName = null
+ if(src.StoredFaction)
+ src.Faction = src.StoredFaction
+ src.StoredFaction = null
+ src.Ref = null
+ src.Bleed = null
+ src.WHead = null
+ src.WBack = null
+ src.WExtra = null
+ src.WChest = null
+ src.WUpperBody = null
+ src.WShoulders = null
+ src.WLeftHand = null
+ src.WRightHand = null
+ src.WLeftFoot = null
+ src.WRightFoot = null
+ src.WLegs = null
+ src.WWaist = null
+ src.Weapon = null
+ src.Weapon2 = null
+ src.MoveSpeed = 2
+ if(src.client)
+ src.ResetButtons()
+ src.overlays = null
+ src.Function = null
+ src.luminosity = 0
+ src.Fainted = 0
+ src.Sleeping = 0
+ src.invisibility = 50
+ src.see_invisible = 50
+ src.Stunned = 0
+ src.Fuel = 0
+ src.OnFire = 0
+ src.overlays -= /obj/Misc/Fire/
+ src.Target = null
+ src.CanMove = 1
+ src.Blood = 0
+ src.CanEat = 0
+ src.Dead = 1
+ src.CanSleep = 0
+ src.CanEat = 0
+ src.Pain = 0
+ src.CanAttack = 0
+ src.Pull = null
+ src.density = 0
+ if(src.Race != "Skeleton")
+ var/obj/Items/Body/B = new
+ B.icon = src.DeadIcon
+ B.Humanoid = src.Humanoid
+ B.Strength = src.Strength
+ B.Agility = src.Agility
+ B.Endurance = src.Endurance
+ B.BloodMax = src.BloodMax
+ B.Hair = src.Hair
+ B.Beard = src.Beard
+ B.Race = src.Race
+ if(src.Beard)
+ var/obj/Brd = src.Beard
+ var/icon/BI = new(Brd.icon)
+ BI.Turn(90)
+ Brd.icon = BI
+ if(src.Hair)
+ var/obj/Hir = src.Hair
+ var/icon/HI = new(Hir.icon)
+ HI.Turn(90)
+ Hir.icon = HI
+ B.AddBodyWounds(src)
+ B.overlays += src.Beard
+ B.overlays += src.Hair
+ B.LeftArm = src.LeftArm
+ B.RightArm = src.RightArm
+ B.Torso = src.Torso
+ B.Head = src.Head
+ B.LeftLeg = src.LeftLeg
+ B.RightLeg = src.RightLeg
+ B.Skull = src.Skull
+ B.Brain = src.Brain
+ B.LeftEye = src.LeftEye
+ B.RightEye = src.RightEye
+ B.LeftEar = src.LeftEar
+ B.RightEar = src.RightEar
+ B.Nose = src.Nose
+ B.Teeth = src.Teeth
+ B.Tongue = src.Tongue
+ B.Throat = src.Throat
+ B.Heart = src.Heart
+ B.LeftLung = src.LeftLung
+ B.RightLung = src.RightLung
+ B.Spleen = src.Spleen
+ B.Intestine = src.Intestine
+ B.LeftKidney = src.LeftKidney
+ B.RightKidney = src.RightKidney
+ B.Liver = src.Liver
+ B.Bladder = src.Bladder
+ B.Stomach = src.Stomach
+ B.BloodColour = src.BloodColour
+ B.Faction = src.Faction
+
+ src.Hair = null
+ src.Beard = null
+ src.BloodMax = 0
+ src.see_in_dark = 8
+ if(src.DeadState)
+ B.icon_state = src.DeadState
+ if(src.Race == "Large Flesh Beast")
+ B.overlays += /obj/Misc/Gore/FleshBeastCorpse/
+ if(src.Race == "Dragon")
+ B.overlays += /obj/Misc/Gore/DrakeCorpse/
+ if(src.Race == "Yeti")
+ B.overlays += /obj/Misc/Gore/YetiCorpse/
+ if(src.Race == "Troll")
+ B.overlays += /obj/Misc/Gore/TrollCorpse/
+ if(src.Race == "GiantSnake")
+ B.overlays += /obj/Misc/Gore/GiantSnakeCorpse/
+ else
+ B.icon_state = src.icon_state
+ B.name = "[src]'s Corpse"
+ B.Owner = src
+ if(src.client)
+ B.Owner = src.name
+ B.BodysKey = src.key
+ B.BodyKeyCheck()
+ B.Move(src.loc)
+ var/icon/I = new(B.icon)
+ I.Turn(90)
+ B.icon = I
+ if(src.Faction == "Undead")
+ if(src.icon_state != "None")
+ var/Rise = prob(50)
+ if(Rise)
+ spawn(rand(300,600))
+ if(B && src && src.Dead && src.Brain >= 0)
+ src.EvilRevive(B)
+ src.Faction = "Undead"
+ src.HateList = null
+ src.HateList = list("Stahlite Empire","Frogmen Hordes","Giant Hordes","Altherian Empire","Dragons","Demonic Legions","Human Empire","Chaos","Dangerous Beasts","Cyclops Hordes","Goblin Hordes","Spider Hordes","Snakeman Empire","Neutral","Human Empire Unholy","Human Empire Outlaw","None","Ratling Hordes")
+ view(src) << "[B] rises from the dead!
"
+ del(B)
+ if(src.client == null)
+ src.NormalAI()
+ else
+ src.Hair = null
+ src.Strength = 0
+ src.Agility = 0
+ src.Endurance = 0
+ src.BloodMax = 0
+ var/obj/Items/Misc/Bones/B = new
+ B.Move(src.loc)
+ B.name = "[src]'s bones"
+ var/obj/Items/Misc/Skull/S = new
+ S.Move(src.loc)
+ S.name = "[src]'s skull"
+ S.SkeletonRaise()
+ src << "You have died!
"
+ if(src.Soul)
+ src.icon = 'characters.dmi'
+ src.icon_state = "ghost"
+ else
+ del(src)
+ if(src.client)
+ src.RemakeChoice()
+ return
+ RemakeChoice()
+ var/list/menu = new()
+ menu += "Remake"
+ menu += "Remain Dead"
+ var/Result = input(src,"You have died. - Remaking will allow you to keep all of your stats and all of your skills, but your name, gender, race and IC knowledge will be lost. You will however be able to choose your race again, along with a new name and gender. Remaining dead will simply leave you as a ghost until someone revives you or your body is destroyed. Relogging will open this option up again.", "Choose", null) in menu
+ if(Result == "Remake")
+ for(var/obj/HUD/H in src.client.screen)
+ del(H)
+ src.loc = locate(11,11,2)
+ src.CanEatRawMeats = 0
+ src.CanSwimWell = 0
+ src.CanRegenLimbs = 0
+ src.CanBreathe = 1
+ src.CanTakeDamage = 1
+ src.CanUseTK = 0
+ src.Pain = 0
+ src.LoggedIn = 0
+ src.Dead = 0
+ src.Age = 0
+ src.Born = 0
+ src.DieAge = 10000000
+ src.DisableAttack = 1
+ src.Fainted = 0
+ src.Stunned = 0
+ src.density = 0
+ src.invisibility = 0
+ src.CanMove = 0
+ src.luminosity = 0
+ src.icon = null
+ src.Race = null
+ src.Gender = null
+ src.Faction = null
+ var/player_sav = "players/[src.ckey].sav"
+ if(length(file(player_sav)))
+ fdel(player_sav)
+ High(var/Dur)
+ if(src.client == null)
+ return
+ if(Dur)
+ Dur -= 1
+ var/DIR = rand(1,4)
+ if(DIR == 1)
+ src.client.dir = NORTH
+ if(DIR == 2)
+ src.client.dir = SOUTH
+ if(DIR == 3)
+ src.client.dir = EAST
+ if(DIR == 4)
+ src.client.dir = WEST
+ else
+ src.client.dir = NORTH
+ for(var/obj/HUD/GUI/ScreenOverlay/SO in src.client.screen)
+ SO.icon_state = "blank screen"
+ return
+ spawn(100) src.High(Dur)
+ AddGore(var/Area,var/VictimsRace)
+ if(src.BloodMax >= 1 && src.Humanoid)
+ if(Area == "RightLeg" && src.WoundRightLeg == null)
+ var/obj/Misc/Gore/RightLegWound/RL = new
+ var/LargeBeing = 0
+ var/SmallBeing = 0
+ if(VictimsRace == "Giant")
+ LargeBeing = 1
+ if(VictimsRace == "Cyclops")
+ LargeBeing = 1
+ if(VictimsRace == "Ratling")
+ SmallBeing = 1
+ if(VictimsRace == "Stahlite")
+ SmallBeing = 1
+ if(LargeBeing)
+ RL.icon_state = "damage rleg large"
+ if(SmallBeing)
+ RL.icon_state = "damage rleg small"
+ src.overlays += RL
+ src.WoundRightLeg = RL
+ if(Area == "LeftLeg" && src.WoundLeftLeg == null)
+ var/obj/Misc/Gore/LeftLegWound/LL = new
+ var/LargeBeing = 0
+ var/SmallBeing = 0
+ if(VictimsRace == "Giant")
+ LargeBeing = 1
+ if(VictimsRace == "Cyclops")
+ LargeBeing = 1
+ if(VictimsRace == "Ratling")
+ SmallBeing = 1
+ if(VictimsRace == "Stahlite")
+ SmallBeing = 1
+ if(LargeBeing)
+ LL.icon_state = "damage lleg large"
+ if(SmallBeing)
+ LL.icon_state = "damage lleg small"
+ src.overlays += LL
+ src.WoundLeftLeg = LL
+ if(Area == "LeftArm" && src.WoundLeftArm == null)
+ var/obj/Misc/Gore/LeftArmWound/LA = new
+ var/LargeBeing = 0
+ var/SmallBeing = 0
+ if(VictimsRace == "Giant")
+ LargeBeing = 1
+ if(VictimsRace == "Cyclops")
+ LargeBeing = 1
+ if(VictimsRace == "Ratling")
+ SmallBeing = 1
+ if(VictimsRace == "Stahlite")
+ SmallBeing = 1
+ if(LargeBeing)
+ LA.icon_state = "damage larm large"
+ if(SmallBeing)
+ LA.icon_state = "damage larm small"
+ src.overlays += LA
+ src.WoundLeftArm = LA
+ if(Area == "RightArm" && src.WoundRightArm == null)
+ var/obj/Misc/Gore/RightArmWound/RA = new
+ var/LargeBeing = 0
+ var/SmallBeing = 0
+ if(VictimsRace == "Giant")
+ LargeBeing = 1
+ if(VictimsRace == "Cyclops")
+ LargeBeing = 1
+ if(VictimsRace == "Ratling")
+ SmallBeing = 1
+ if(VictimsRace == "Stahlite")
+ SmallBeing = 1
+ if(LargeBeing)
+ RA.icon_state = "damage rarm large"
+ if(SmallBeing)
+ RA.icon_state = "damage rarm small"
+ src.overlays += RA
+ src.WoundRightArm = RA
+ if(Area == "Torso" && src.WoundTorso == null)
+ var/obj/Misc/Gore/TorsoWound/TW = new
+ var/LargeBeing = 0
+ var/SmallBeing = 0
+ if(VictimsRace == "Giant")
+ LargeBeing = 1
+ if(VictimsRace == "Cyclops")
+ LargeBeing = 1
+ if(VictimsRace == "Ratling")
+ SmallBeing = 1
+ if(VictimsRace == "Stahlite")
+ SmallBeing = 1
+ if(LargeBeing)
+ TW.icon_state = "damage torso large"
+ if(SmallBeing)
+ TW.icon_state = "damage torso small"
+ src.overlays += TW
+ src.WoundTorso = TW
+ if(Area == "Head" && src.WoundHead == null)
+ var/obj/Misc/Gore/HeadWound/HW = new
+ var/LargeBeing = 0
+ var/SmallBeing = 0
+ if(VictimsRace == "Giant")
+ LargeBeing = 1
+ if(VictimsRace == "Cyclops")
+ LargeBeing = 1
+ if(VictimsRace == "Ratling")
+ SmallBeing = 1
+ if(VictimsRace == "Stahlite")
+ SmallBeing = 1
+ if(LargeBeing)
+ HW.icon_state = "damage head large"
+ if(SmallBeing)
+ HW.icon_state = "damage head small"
+ src.overlays += HW
+ src.WoundHead = HW
+ MusicProc()
+ src << sound('Main2.mid')
+ spawn(3150)
+ src << sound(null)
+ src << sound('Main.mid',1)
+ HairGrowth()
+ var/CanGrowBeard = 0
+ if(src.Gender == "Male" && src.Race != "Alther")
+ if(src.Race == "Human")
+ CanGrowBeard = 1
+ if(src.Race == "Stahlite" && src.Gender != "Female")
+ CanGrowBeard = 1
+ if(CanGrowBeard)
+ if(src.Beard && src.Age >= 15)
+ var/obj/B = src.Beard
+ if(B.icon_state == "beard 3")
+ src.overlays -= B
+ B.icon_state = "beard 4"
+ if(src.WHead == null)
+ src.overlays += B
+ if(B.icon_state == "beard 2")
+ src.overlays -= B
+ B.icon_state = "beard 3"
+ if(src.WHead == null)
+ src.overlays += B
+ if(B.icon_state == "beard 1")
+ src.overlays -= B
+ B.icon_state = "beard 2"
+ if(src.WHead == null)
+ src.overlays += B
+ if(B.icon_state == "dwarf beard 2")
+ src.overlays -= B
+ B.icon_state = "dwarf beard 3"
+ if(src.WHead == null)
+ src.overlays += B
+ if(B.icon_state == "dwarf beard 1")
+ src.overlays -= B
+ B.icon_state = "dwarf beard 2"
+ if(src.WHead == null)
+ src.overlays += B
+ if(src.Beard == null && src.Race != "Stahlite")
+ var/obj/Misc/Beards/HumanoidBeard/B = new
+ src.Beard = B
+ if(src.WHead == null)
+ src.overlays += src.Beard
+ if(src.Beard == null && src.Race == "Stahlite")
+ var/obj/Misc/Beards/StahliteBeard/B = new
+ src.Beard = B
+ if(src.WHead == null)
+ src.overlays += src.Beard
+ if(src.Hair == null)
+ if(src.Race == "Human" && Gender == "Female")
+ var/obj/Misc/Hairs/Long/H = new
+ src.Hair = H
+ if(src.WHead == null)
+ src.overlays += src.Hair
+ return
+ if(src.Race == "Human" && Gender == "Male")
+ var/ChooseHair = rand(1,4)
+ if(ChooseHair == 1)
+ var/obj/Misc/Hairs/Middle/H = new
+ src.Hair = H
+ if(src.WHead == null)
+ src.overlays += src.Hair
+ return
+ if(ChooseHair == 2)
+ var/obj/Misc/Hairs/PotHead/H = new
+ src.Hair = H
+ if(src.WHead == null)
+ src.overlays += src.Hair
+ return
+ if(ChooseHair == 3)
+ var/obj/Misc/Hairs/HairLeft/H = new
+ src.Hair = H
+ if(src.WHead == null)
+ src.overlays += src.Hair
+ return
+ if(ChooseHair == 4)
+ var/obj/Misc/Hairs/HairRight/H = new
+ src.Hair = H
+ if(src.WHead == null)
+ src.overlays += src.Hair
+ return
+ if(src.Race == "Stahlite" && Gender == "Female")
+ var/obj/Misc/Hairs/SmallHairFemale/H = new
+ src.Hair = H
+ if(src.WHead == null)
+ src.overlays += src.Hair
+ return
+ if(src.Race == "Giant" && Gender == "Male")
+ var/obj/Misc/Hairs/GiantHairMale/H = new
+ src.Hair = H
+ if(src.WHead == null)
+ src.overlays += src.Hair
+ return
+ if(src.Race == "Giant" && Gender == "Female")
+ var/obj/Misc/Hairs/GiantHairFemale/H = new
+ src.Hair = H
+ if(src.WHead == null)
+ src.overlays += src.Hair
+ return
+ if(src.Hair)
+ var/obj/H = src.Hair
+ if(H.icon_state == "side L 1")
+ src.overlays -= H
+ H.icon_state = "side L 2"
+ if(src.WHead == null)
+ src.overlays += H
+ return
+ if(H.icon_state == "side L 2")
+ src.overlays -= H
+ H.icon_state = "side L 3"
+ if(src.WHead == null)
+ src.overlays += H
+ return
+ if(H.icon_state == "side R 1")
+ src.overlays -= H
+ H.icon_state = "side R 2"
+ if(src.WHead == null)
+ src.overlays += H
+ return
+ if(H.icon_state == "side R 2")
+ src.overlays -= H
+ H.icon_state = "side R 3"
+ if(src.WHead == null)
+ src.overlays += H
+ return
+ if(H.icon_state == "middle 1")
+ src.overlays -= H
+ H.icon_state = "middle 2"
+ if(src.WHead == null)
+ src.overlays += H
+ return
+ if(H.icon_state == "middle 2")
+ src.overlays -= H
+ H.icon_state = "middle 3"
+ if(src.WHead == null)
+ src.overlays += H
+ return
+ if(H.icon_state == "pot head 1")
+ src.overlays -= H
+ H.icon_state = "pot head 2"
+ if(src.WHead == null)
+ src.overlays += H
+ return
+ if(H.icon_state == "pot head 2")
+ src.overlays -= H
+ H.icon_state = "pot head 3"
+ if(src.WHead == null)
+ src.overlays += H
+ return
+ if(H.icon_state == "combed back 1")
+ src.overlays -= H
+ H.icon_state = "combed back 2"
+ if(src.WHead == null)
+ src.overlays += H
+ return
+ if(H.icon_state == "combed back 2")
+ src.overlays -= H
+ H.icon_state = "combed back 3"
+ if(src.WHead == null)
+ src.overlays += H
+ return
+ if(H.icon_state == "long hair 1")
+ src.overlays -= H
+ H.icon_state = "long hair 2"
+ if(src.WHead == null)
+ src.overlays += H
+ return
+ if(H.icon_state == "long hair 2")
+ src.overlays -= H
+ H.icon_state = "long hair 3"
+ if(src.WHead == null)
+ src.overlays += H
+ return
+ if(H.icon_state == "giant hair male 1")
+ src.overlays -= H
+ H.icon_state = "giant hair male 2"
+ if(src.WHead == null)
+ src.overlays += H
+ return
+ if(H.icon_state == "giant hair male 2")
+ src.overlays -= H
+ H.icon_state = "giant hair male 3"
+ if(src.WHead == null)
+ src.overlays += H
+ return
+ if(H.icon_state == "giant hair female 1")
+ src.overlays -= H
+ H.icon_state = "giant hair female 2"
+ if(src.WHead == null)
+ src.overlays += H
+ return
+ if(H.icon_state == "giant hair female 2")
+ src.overlays -= H
+ H.icon_state = "giant hair female 3"
+ if(src.WHead == null)
+ src.overlays += H
+ return
+ Noise()
+ if(src.Dead == 0)
+ if(src.Race == "Frogman")
+ view(5) << 'Frog.wav'
+ if(src.Race == "Yeti")
+ view(5) << 'Yeti.wav'
+ spawn(350) Noise()
+ EvilRessurect()
+ if(src.Dead == 0 && src.Job == null && src.Target == null)
+ for(var/obj/Items/Body/B in view(6,src))
+ var/CanRes = 1
+ if(B.LeftArm == 0 && B.RightArm == 0 && B.LeftLeg == 0 && B.RightLeg == 0)
+ CanRes = 0
+ if(B.Brain <= 20)
+ CanRes = 0
+ if(CanRes)
+ var/mob/HasOwner = null
+ if(B.Owner)
+ if(ismob(B.Owner))
+ HasOwner = B.Owner
+ else
+ for(var/mob/M in Players)
+ if(M.name == B.Owner)
+ HasOwner = M
+ if(HasOwner)
+ view(src) << "[src] begins to call upon their Un-Holy Powers, as they do the energies begin to revive [B] back to life!
"
+ src.Job = "Revive"
+ src.overlays += /obj/Misc/SpellEffects/Evil/
+ spawn(1000)
+ if(src)
+ src.overlays -= /obj/Misc/SpellEffects/Evil/
+ src.Job = null
+ if(B)
+ if(HasOwner)
+ if(B in range(6,src))
+ view(src) << "[HasOwner] is raised into un-death by [src]'s Un-Holy Powers!
"
+ HasOwner.EvilRevive(B)
+ del(B)
+ else
+ src.overlays -= /obj/Misc/SpellEffects/Evil/
+ else
+ src.overlays -= /obj/Misc/SpellEffects/Evil/
+ else
+ src.overlays -= /obj/Misc/SpellEffects/Evil/
+ spawn(100) EvilRessurect()
+ Ressurect()
+ if(src.Dead == 0 && src.Job == null && src.Target == null)
+ for(var/obj/Items/Body/B in view(6,src))
+ var/mob/HasOwner = null
+ if(B.Owner)
+ if(ismob(B.Owner))
+ HasOwner = B.Owner
+ else
+ for(var/mob/M in Players)
+ if(M.name == B.Owner)
+ HasOwner = M
+ if(HasOwner)
+ var/WillRevive = 1
+ if(HasOwner.Faction in src.HateList)
+ WillRevive = 0
+ if(WillRevive && HasOwner.Faction != "Undead" && HasOwner.CanBeRevived != 0)
+ view(src) << "[src] begins to call upon their healing powers, as they do the energies begin to revive [B] back to life!
"
+ src.Job = "Revive"
+ src.overlays += /obj/Misc/SpellEffects/Dispel/
+ spawn(1000)
+ if(src)
+ src.overlays -= /obj/Misc/SpellEffects/Dispel/
+ src.Job = null
+ if(B)
+ if(HasOwner)
+ if(B in range(6,src))
+ HasOwner.GoodRevive(B)
+ HasOwner.Heal()
+ del(B)
+ if(HasOwner.Age >= HasOwner.DieAge)
+ HasOwner.CanBeRevived -= 1
+ view(src) << "[HasOwner] is raised from the dead by [src]'s healing powers!
"
+ else
+ src.overlays -= /obj/Misc/SpellEffects/Dispel/
+ else
+ src.overlays -= /obj/Misc/SpellEffects/Dispel/
+ else
+ src.overlays -= /obj/Misc/SpellEffects/Dispel/
+ spawn(100) Ressurect()
+ Update()
+ if(src)
+ if(src.client)
+ if(src.Dead == 0)
+ for(var/obj/HUD/GUI/BloodBar/B in src.client.screen)
+ if(src.BloodMax)
+ if(src.Dead)
+ B.icon_state = "Dead"
+ return
+ if(src.Blood <= 0)
+ src.Blood = 1
+ var/Div = src.Blood / src.BloodMax
+ var/Num = Div * 100
+ var/Rounded = round(Num,10)
+ B.icon_state = "[Rounded]"
+ var/Blood = src.Bleed
+ if(src.Bleed == null)
+ Blood = "None"
+ B.name = "Blood Tracker - [Blood]"
+ spawn(10) Update()
+ Breathe(var/TimeLeft)
+ if(src.StoredFaction == "Undead")
+ return
+ if(src.Faction == "Undead")
+ return
+ if(src.CanBreathe == 0)
+ return
+ if(src.Dead)
+ return
+ if(src.InWater != 2)
+ return
+ if(TimeLeft == null)
+ TimeLeft = 1200
+ view() << "[src] holds their breath!
"
+ if(TimeLeft != 0)
+ TimeLeft -= 1
+ if(TimeLeft == 700)
+ view() << "[src] seems to be having trouble holding their breathe!
"
+ if(TimeLeft == 200)
+ view() << "[src] is in danger of drowning!
"
+ if(TimeLeft == 0)
+ view() << "[src] drowns.
"
+ src.overlays -= /obj/Misc/Bubbles/
+ src.Death()
+ return
+ spawn(1) Breathe(TimeLeft)
+ CheckFlamable()
+ var/Burn = 0
+ for(var/obj/Items/I in src)
+ if(I.Fuel && I.OnFire == 0)
+ Burn = 1
+ if(Burn)
+ src.OnFire(1)
+ src.overlays += /obj/Misc/Fire/
+ src << "Some of your items that you carry catch on fire!
"
+ else
+ src.luminosity = 0
+ src.OnFire = 0
+ OnFire(var/Ignite = 0)
+ if(Ignite == 0)
+ var/msg = prob(25)
+ if(msg)
+ src << "You are burned by flames!
"
+ if(src.OnFire)
+ var/limb = rand(1,5)
+ var/roll = prob(2)
+ if(src.Humanoid)
+ if(src.WChest)
+ var/obj/O = src.WChest
+ if(O.Fuel)
+ O.Dura -= rand(4,6)
+ src.CheckArmourDura()
+ if(src.WUpperBody)
+ var/obj/O = src.WUpperBody
+ if(O.Fuel)
+ O.Dura -= rand(4,6)
+ src.CheckArmourDura()
+ if(src.WHead)
+ var/obj/O = src.WHead
+ if(O.Fuel)
+ O.Dura -= rand(4,6)
+ src.CheckArmourDura()
+ if(src.WLeftHand)
+ var/obj/O = src.WLeftHand
+ if(O.Fuel)
+ O.Dura -= rand(4,6)
+ src.CheckArmourDura()
+ if(src.WRightHand)
+ var/obj/O = src.WRightHand
+ if(O.Fuel)
+ O.Dura -= rand(4,6)
+ src.CheckArmourDura()
+ if(src.WLeftFoot)
+ var/obj/O = src.WLeftFoot
+ if(O.Fuel)
+ O.Dura -= rand(4,6)
+ src.CheckArmourDura()
+ if(src.WRightFoot)
+ var/obj/O = src.WRightFoot
+ if(O.Fuel)
+ O.Dura -= rand(4,6)
+ src.CheckArmourDura()
+ if(src.WLegs)
+ var/obj/O = src.WLegs
+ if(O.Fuel)
+ O.Dura -= rand(4,6)
+ src.CheckArmourDura()
+ if(limb == 1)
+ if(src.Skull)
+ src.Skull -= rand(1,3)
+ src.Blood -= rand(2,3)
+ src.Pain += rand(2,3)
+ src.Bleed()
+ if(src.Hair)
+ var/BurnAway = prob(10)
+ if(BurnAway)
+ view(src) << "[src]'s hair burns away!
"
+ src.overlays -= src.Hair
+ src.Hair = null
+ if(src.Beard)
+ var/BurnAway = prob(10)
+ if(BurnAway)
+ view(src) << "[src]'s beard burns away!
"
+ src.overlays -= src.Beard
+ src.Beard = null
+ if(src.Skull <= 15)
+ src.Death()
+ view(src) << "[src] has been burned to a cinder, they die instantly!
"
+ if(limb == 2)
+ if(src.LeftArm)
+ src.LeftArm -= rand(2,3)
+ src.Blood -= rand(2,3)
+ src.Pain += rand(2,3)
+ src.Bleed()
+ if(src.LeftArm <= 25)
+ if(src.Weapon2)
+ var/obj/O = src.Weapon2
+ src.overlays-=image(O.icon,"[O.icon_state] left",O.ItemLayer)
+ O.overlays = null
+ O.Move(src.loc)
+ O.overlays = null
+ O.suffix = null
+ O.layer = 4
+ O.icon_state = O.CarryState
+ src.Weapon2 = null
+ src.client.screen -= O
+ src.Weight -= O.Weight
+ view(src) << "[src]'s Right Arm is horribly burned, they drop their [src.Weapon2] in pain!
"
+ if(src.LeftArm <= 0)
+ src.LeftArm = 5
+ if(limb == 3)
+ if(src.RightArm)
+ src.RightArm -= rand(2,3)
+ src.Blood -= rand(2,3)
+ src.Pain += rand(2,3)
+ src.Bleed()
+ if(src.RightArm <= 25)
+ if(src.Weapon)
+ var/obj/O = src.Weapon
+ src.overlays-=image(O.icon,O.icon_state,O.ItemLayer)
+ O.overlays = null
+ O.Move(src.loc)
+ O.overlays = null
+ O.suffix = null
+ O.layer = 4
+ O.icon_state = O.CarryState
+ src.Weapon = null
+ src.client.screen -= O
+ src.Weight -= O.Weight
+ view(src) << "[src]'s Right Arm is horribly burned, they drop their [src.Weapon] in pain!
"
+ if(src.RightArm <= 0)
+ src.RightArm = 5
+ if(limb == 4)
+ if(src.LeftLeg)
+ src.LeftLeg -= rand(2,3)
+ src.Blood -= rand(2,3)
+ src.Pain += rand(2,3)
+ src.Bleed()
+ if(src.LeftLeg <= 0)
+ src.LeftLeg = 5
+ if(limb == 5)
+ if(src.RightLeg)
+ src.RightLeg -= rand(2,3)
+ src.Blood -= rand(2,3)
+ src.Pain += rand(2,3)
+ src.Bleed()
+ if(src.RightLeg <= 0)
+ src.RightLeg = 5
+ else
+ src.Blood -= rand(2,4)
+ src.Pain += rand(4,5)
+ src.Bleed()
+ if(roll)
+ if(src.Type != "Egg")
+ src.OnFire = 0
+ src.Fuel = 100
+ src.luminosity = 0
+ src.overlays -= /obj/Misc/Fire/
+ view(src) << "[src] rolls on the ground and exstinguishes the flames!
"
+ return
+ else
+ src.luminosity = 0
+ src.overlays -= /obj/Misc/Fire/
+ return
+ if(Ignite)
+ spawn(75) OnFire(Ignite)
+ AnimalAI()
+ var/Delay = rand(15,30)
+ if(src.Fainted == 0 && src.Stunned == 0)
+ if(src.InWater)
+ Delay += 10
+ if(src.CancelDefaultProc)
+ return
+ if(src.Dead)
+ return
+ else
+ if(src.Target)
+ if(ismob(src.Target))
+ var/mob/M = src.Target
+ if(M.z != src.z)
+ var/Dis = get_dist(src,M)
+ if(Dis >= 2)
+ src.Target = null
+ if(M.Dead)
+ src.Target = null
+ else
+ src.Target = null
+ if(src.Target == null)
+ step_rand(src)
+ spawn(Delay) AnimalAI()
+
+ GuardAI()
+ var/Delay = rand(20,40)
+ if(src.InWater)
+ Delay += 10
+ if(src.CancelDefaultProc)
+ return
+ if(src.Dead)
+ return
+ if(src.Owner)
+ return
+ if(src.loc == src.GuardLoc)
+ src.dir = src.GuardDir
+ if(src.Fainted == 0 && src.Stunned == 0)
+ if(src.Target == null)
+ for(var/mob/M in oview(6,src))
+ if(M.Dead == 0)
+ if(M.Faction in src.HateList)
+ src.Target = M
+ if(M.name in src.HateList)
+ src.Target = M
+ if(M.Target)
+ if(ismob(M.Target))
+ var/mob/T = M.Target
+ if(T.Faction == src.Faction && T.client == null)
+ src.Target = M
+ if(src.Target)
+ Delay = 8
+ step_towards(src,src.Target)
+ if(ismob(src.Target))
+ var/mob/M = src.Target
+ var/Dis = get_dist(src,M)
+ if(Dis >= 6)
+ src.Target = null
+ if(M.Dead)
+ src.Target = null
+ if(M.z != src.z)
+ src.Target = null
+ if(src.Target == null)
+ step_towards(src,src.GuardLoc)
+ spawn(Delay) GuardAI()
+
+ FollowAI()
+ if(src.CancelDefaultProc)
+ return
+ if(src.Dead)
+ return
+ if(src.Fainted == 0)
+ if(src.Stunned == 0)
+ if(src.Owner)
+ var/mob/M = src.Owner
+ if(M.Faction != src.Faction)
+ return
+ if(M.Dead)
+ src.Owner = null
+ src.NormalAI()
+ return
+ if(M.Target)
+ src.Target = M.Target
+ step_towards(src,src.Target)
+ if(M.Target == null)
+ src.Target = null
+ step_towards(src,M)
+ else
+ src.NormalAI()
+ return
+ spawn(9) FollowAI()
+ InquisitiveGuardAI(var/mob/Suspect)
+ var/Delay = rand(20,40)
+ if(src.InWater)
+ Delay += 10
+ if(src.CancelDefaultProc)
+ return
+ if(src.Dead)
+ return
+ if(src.Owner)
+ return
+ if(src.loc == src.GuardLoc)
+ src.dir = src.GuardDir
+ if(src.Fainted == 0 && src.Stunned == 0)
+ if(isturf(src.Target))
+ if(src.Target in range(1,src))
+ if(Suspect in range(1,src))
+ if(Suspect.WBack)
+ var/obj/O = Suspect.WBack
+ O.layer = O.ItemLayer
+ Suspect.overlays-=image(O.icon,O.icon_state,O.ItemLayer)
+ Suspect.WBack = null
+ O.suffix = "Carried"
+ O.overlays-=image(/obj/HUD/E/)
+ O.overlays+=image(/obj/HUD/C/)
+ O.icon_state = O.CarryState
+ O.layer = 20
+ Suspect.DeleteInventoryMenu()
+ if(Suspect.OrginalName)
+ Suspect.name = Suspect.OrginalName
+ Suspect.OrginalName = null
+ if(Suspect.StoredFaction)
+ Suspect.Faction = Suspect.StoredFaction
+ Suspect.StoredFaction = null
+ view(6,src) << "[src] pulls off [Suspect]'s Cloak.
"
+ src.Target = null
+ Suspect = null
+ else
+ var/DIST = get_dist(src,Suspect)
+ if(DIST <= 3)
+ src.Target = Suspect.loc
+ else if(Suspect)
+ if(Suspect.WBack)
+ Suspect << "[src] points at you, and shouts for everyone to attack. You dident stop to let [src] remove your cloak."
+ for(var/mob/M in oview(8,src))
+ if(M.Target == null && M.Faction == src.Faction)
+ M.Target = Suspect
+ src.Target = Suspect
+ Suspect = null
+ if(src.Target == null)
+ for(var/mob/M in oview(6,src))
+ if(M.Dead == 0)
+ if(M.Faction == "None" && Suspect == null)
+ Suspect = M
+ src.Target = M.loc
+ M << "[src] is coming to remove your cloak!
"
+ if(M.Faction in src.HateList)
+ src.Target = M
+ if(M.name in src.HateList)
+ src.Target = M
+ if(M.Target)
+ if(ismob(M.Target))
+ var/mob/T = M.Target
+ if(T.Faction == src.Faction && T.client == null)
+ src.Target = M
+ if(src.Target)
+ Delay = 8
+ step_towards(src,src.Target)
+ if(ismob(src.Target))
+ var/mob/M = src.Target
+ var/Dis = get_dist(src,M)
+ if(Dis >= 6)
+ src.Target = null
+ if(M.Dead)
+ src.Target = null
+ if(M.z != src.z)
+ src.Target = null
+ if(src.Target == null)
+ step_towards(src,src.GuardLoc)
+ spawn(Delay) InquisitiveGuardAI(Suspect)
+ InquisitiveAI(var/mob/Suspect)
+ var/Delay = rand(15,30)
+ if(src.InWater)
+ Delay += 10
+ if(src.CancelDefaultProc)
+ return
+ if(src.Dead)
+ return
+ if(src.Fainted == 0 && src.Stunned == 0)
+ src.LastLoc = src.loc
+ if(isturf(src.Target))
+ if(src.Target in range(1,src))
+ if(Suspect in range(1,src))
+ if(Suspect.WBack)
+ view(6,src) << "[src] pulls off [Suspect]'s Cloak.
"
+ var/obj/O = Suspect.WBack
+ O.layer = O.ItemLayer
+ Suspect.overlays-=image(O.icon,O.icon_state,O.ItemLayer)
+ Suspect.WBack = null
+ O.suffix = "Carried"
+ O.overlays-=image(/obj/HUD/E/)
+ O.overlays+=image(/obj/HUD/C/)
+ O.icon_state = O.CarryState
+ O.layer = 20
+ Suspect.DeleteInventoryMenu()
+ if(Suspect.OrginalName)
+ Suspect.name = Suspect.OrginalName
+ Suspect.OrginalName = null
+ if(Suspect.StoredFaction)
+ Suspect.Faction = Suspect.StoredFaction
+ Suspect.StoredFaction = null
+ src.Target = null
+ Suspect = null
+ else
+ var/DIST = get_dist(src,Suspect)
+ if(DIST <= 3)
+ src.Target = Suspect.loc
+ else if(Suspect)
+ if(Suspect.WBack)
+ Suspect << "[src] points at you, and shouts for everyone to attack. You dident stop to let [src] remove your cloak."
+ for(var/mob/M in oview(8,src))
+ if(M.Target == null && M.Faction == src.Faction)
+ M.Target = Suspect
+ src.Target = Suspect
+ Suspect = null
+ if(src.Target == null)
+ for(var/mob/M in oview(6,src))
+ if(M.Dead == 0)
+ if(M.Faction == "None" && Suspect == null)
+ Suspect = M
+ src.Target = M.loc
+ M << "[src] is coming to remove your cloak!
"
+ if(M.Faction in src.HateList)
+ src.Target = M
+ if(M.Target)
+ if(ismob(M.Target))
+ var/mob/T = M.Target
+ if(T.Faction == src.Faction && T.client == null)
+ src.Target = M
+ if(src.Target)
+ Delay = 8
+ step_towards(src,src.Target)
+ if(ismob(src.Target))
+ var/mob/M = src.Target
+ var/Dis = get_dist(src,M)
+ if(Dis >= 6)
+ src.Target = null
+ if(M.Dead)
+ src.Target = null
+ if(M.z != src.z)
+ src.Target = null
+ if(src.Target == null)
+ step_rand(src)
+ spawn(Delay) InquisitiveAI(Suspect)
+ NormalAI()
+ if(src.client)
+ return
+ var/Delay = rand(15,30)
+ if(src.InWater)
+ Delay += 10
+ if(src.CancelDefaultProc)
+ return
+ if(src.Dead)
+ return
+ if(src.Fainted == 0 && src.Stunned == 0)
+ src.LastLoc = src.loc
+ if(src.Target == null)
+ for(var/mob/M in oview(6,src))
+ if(M.Dead == 0)
+ if(M.Faction in src.HateList)
+ src.Target = M
+ if(M.Target)
+ if(ismob(M.Target))
+ var/mob/T = M.Target
+ if(T.Faction == src.Faction && T.client == null)
+ src.Target = M
+ if(src.Target == null)
+ step_rand(src)
+ if(src.Target)
+ Delay = 9
+ step_towards(src,src.Target)
+ if(ismob(src.Target))
+ var/mob/M = src.Target
+ var/Dis = get_dist(src,M)
+ if(Dis >= 6)
+ src.Target = null
+ if(M.Dead)
+ src.Target = null
+ if(M.z != src.z)
+ src.Target = null
+ spawn(Delay) NormalAI()
+ FindSuitableLocation()
+ var/Found = 0
+ while(Found == 0)
+ src.loc = locate(rand(1,250),rand(1,300),1)
+ for(var/turf/T in range(0,src))
+ if(T.density == 0 && T.ManMade == 0)
+ Found = 1
+ Speak(var/T,var/SpeakRange,var/Target)
+ var/obj/SL = src.CurrentLanguage
+ for(var/mob/M in hearers(SpeakRange,src))
+ var/NewText = null
+ var/Text = null
+ var/TextLength = lentext(T)
+ var/Understands = 0
+ if(src.CurrentLanguage)
+ for(var/obj/Misc/Languages/HL in M.LangKnow)
+ if(SL.name == HL.name)
+ Understands = HL.SpeakPercent
+ if(HL.SpeakPercent <= 100)
+ var/NotSpeaker = 1
+ if(HL in src.LangKnow)
+ NotSpeaker = 0
+ if(NotSpeaker)
+ if(SL.SpeakPercent >= HL.SpeakPercent && HL.SpeakPercent <= 97)
+ HL.SpeakPercent += M.Intelligence / 20
+ if(M.Intelligence <= M.IntCap && M.Intelligence <= WorldIntCap && M.Intelligence <= M.IntelligenceMax)
+ M.Intelligence += M.IntelligenceMulti / 10
+ if(Understands == 0)
+ M.LearnRaceLanguages("[src.CurrentLanguage]")
+ while(TextLength >= 1)
+ Text ="[copytext(T,(lentext(T)-TextLength)+1,(lentext(T)-TextLength)+2)]"
+ var/Change = 0
+ Change = prob(100 - Understands)
+ if(Change)
+ M.CheckText(Text)
+ NewText+="[M.TextOutput]"
+ M.TextOutput = null
+ if(Change == 0)
+ NewText+="[copytext(T,(lentext(T)-TextLength)+1,(lentext(T)-TextLength)+2)]"
+ TextLength--
+ if(src.OrginalName == null)
+ M << "[src] says in [SL.name]: [NewText]
"
+ else
+ M << "([src.OrginalName])[src] says in [SL.name]: [NewText]
"
+ if(Target)
+ Target << "[src] says in [SL.name]: [NewText]
"
+ RaceRules()
+ src << "These are the guidelines to Role Playing with the Race you have selected, these guidelines do not effect your character stat wise.
"
+ if(src.Race == "Alther")
+ src << "Race - Alther
"
+ src << "Altherions know all races
"
+ src << "Altherions can worship any good god, they start out worshipping the God of Harvest or Beasts.
"
+ src << "Altherions hate the following races by default, Undead, Cyclops, Ratlings
"
+ src << "Altherions have heard of, but do not know how to use, Elemental Magic, Blood Magic, Chaos Magic, Astral Magic, Necromancy.
"
+ src << "Altherions can use Nature Magic for various tasks
"
+ src << "Altherions know of all their settlements and all Human towns.
"
+ src << "Altherions are a very proud race, and have very strong opinions on things they belive in. They are easily offended and can be quite arrogant at times. They do not wish to harm living beings, but will kill if needed, they hate the Undead, Demonic and Chaos races and have made it their mission to destroy them.
."
+ src << "Altherions do not fear death, but do not seek it.
"
+ if(src.Race == "Ratling")
+ src << "Race - Ratling
"
+ src << "Ratlings know the following races, Giants, Cyclops, Undead, Humans, Altherions, Ratlings, Flesh Beast
"
+ src << "Ratlings have heard of but not seen, Liches, Chaos Entity, Corpse Devourer
"
+ src << "Ratlings can worship any god, they start out worshipping the God of Death.
"
+ src << "Ratlings hate the following races by default, Undead, Cyclops, Humans, Altherions, Giants
"
+ src << "Ratlings have heard of, but do not know how to use, Blood Magic, Chaos Magic, Necromancy.
"
+ src << "Ratlings only know of the sewer they are born in, they do however know there are more sewers in other towns.
"
+ src << "Ratlings are very alert and paranoid, they often fight each other over sleeping/living space and food. They tend to hate the sun light and wear cloaks to conceal them selves at day time. They are cunning and quick to anger, but will not openly appear so, they would rather hate an enemy secretly and back stab them later.
."
+ src << "Ratlings fear death when outnumbered.
"
+ if(src.Race == "Frogman")
+ src << "Race - Frogman
"
+ src << "Frogmen know the following races, Altherions, Ratlings, Humans, Frogmen
"
+ src << "Frogmen have heard of but not seen, Giants, Cyclops, Chaos Entity, Flesh Beast, Corpse Devourer
"
+ src << "Frogmen can worship any god, they start out worshipping the Gods of Harvest and Beasts.
"
+ src << "Frogmen hate the following races by default, Ratlings
"
+ src << "Frogmen have heard of, but do not know how to use, Elemental Magic, Nature Magic, Blood Magic
"
+ src << "Frogmen know the location of all their swamps and often fight over them.
"
+ src << "Frogmen are very alert and easy to scare, they are brave in numbers. They are usually a friendly primitive people, but fight over breeding grounds during the summer. They are quick to anger if offended and have strong opinions about anything they belive in.
."
+ src << "Frogmen fear death if alone, but do not fear it in numbers.
"
+ if(src.Race == "Cyclops")
+ src << "Race - Cyclops
"
+ src << "Cyclops know the following races, Ratlings, Giants, Cyclops, Humans, Undead
"
+ src << "Cyclops have heard of but not seen, Altherions, Frogmen, Liches, Chaos Entity, Flesh Beast, Corpse Devourer
"
+ src << "Cyclops can worship the Blood and Death god, but start off worshipping the God of Destruction.
"
+ src << "Cyclops hate the following races by default, Undead, Giants, Humans
"
+ src << "Cyclops have heard of, but do not know how to use, Elemental Magic, Nature Magic, Blood Magic, Chaos Magic, and Necromancy
"
+ src << "Cyclops know the location of all their caves.
"
+ src << "Cyclops get angry at anything they do not understand, which is most things. They have a short temper and hate anything beautiful. They get pychotic if hurt or hungry, which means they hate everyone they meet, even other Cyclops.
"
+ src << "Cyclops dont understand the concept of death, and thus do not fear it.
"
+ if(src.Race == "Giant")
+ src << "Race - Giant
"
+ src << "Giants know the following races, Giants, Cyclops, Undead, Humans
"
+ src << "Giants have heard of but not seen, Altherions, Frogmen, Ratlings, Chaos Entity, Flesh Beast, Corpse Devourer
"
+ src << "Giants can worship any god, they start out with no worship to any god.
"
+ src << "Giants hate the following races by default, Undead, Cyclops
"
+ src << "Giants have heard of, but do not know how to use, Elemental Magic, Nature Magic
"
+ src << "Giants know the location of all their towns, but do not know the location of their caves, except for the one they start in.
"
+ src << "Giants can be very moody. They get angry when hungry or tired, but are quite gentle most of the time
."
+ src << "Giants fear death and do not seek it. They can however enter a berzerk state and ignore the thought of pain/death
"
+ if(src.Race == "Stahlite")
+ src << "Race - Stahlite
"
+ src << "Stahlites know the following races, Ratlings, Giants, Cyclops, Frogmen, Altherions, Humans, Undead, Chaos Entity
"
+ src << "Stahlites have heard of but not seen, Liches, Flesh Beast, Corpse Devourer