diff --git a/code/datums/martial.dm b/code/datums/martial.dm index 2929c4b0a2e..c6070385aac 100644 --- a/code/datums/martial.dm +++ b/code/datums/martial.dm @@ -295,7 +295,7 @@ D.emote("scream") D.drop_item() D.apply_damage(5, BRUTE, pick("l_arm", "r_arm")) - D.Stun(2) + D.Stun(3) return 1 return basic_hit(A,D) @@ -312,10 +312,10 @@ /datum/martial_art/the_sleeping_carp/proc/kneeStomach(mob/living/carbon/human/A, mob/living/carbon/human/D) if(!D.stat && !D.weakened) D.visible_message("[A] knees [D] in the stomach!", \ - "[A] winds you with a knee in the stomach!") + "[A] winds you with a knee in the stomach!") D.audible_message("[D] gags!") D.losebreath += 3 - D.Stun(1) + D.Stun(2) playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) return 1 return basic_hit(A,D) @@ -327,6 +327,7 @@ D.apply_damage(20, BRUTE, "head") D.drop_item() playsound(get_turf(D), 'sound/weapons/punch1.ogg', 75, 1, -1) + D.Stun(4) return 1 return basic_hit(A,D) @@ -354,10 +355,14 @@ add_to_streak("H") if(check_streak(A,D)) return 1 - D.visible_message("[A] [pick("punches", "kicks", "chops", "hits", "slams")] [D]!", \ - "[A] hits you!") - D.apply_damage(10, BRUTE) + var/atk_verb = pick("punches", "kicks", "chops", "hits", "slams") + D.visible_message("[A] [atk_verb] [D]!", \ + "[A] [atk_verb] you!") + D.apply_damage(rand(10,15), BRUTE) playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) + if(prob(D.getBruteLoss()) && !D.lying) + D.visible_message("[D] stumbles and falls!", "The blow sends you to the ground!") + D.Weaken(4) return 1 diff --git a/code/game/gamemodes/gang/gang.dm b/code/game/gamemodes/gang/gang.dm index c641b5f6392..d08c6af4329 100644 --- a/code/game/gamemodes/gang/gang.dm +++ b/code/game/gamemodes/gang/gang.dm @@ -8,6 +8,17 @@ var/list/gang_colors_pool = list("red","orange","yellow","green","blue","purple" var/list/datum/gang/gangs = list() var/datum/gang_points/gang_points +/proc/is_gangster(var/mob/living/M) + return istype(M) && M.mind && M.mind.gang_datum + +/proc/is_in_gang(var/mob/living/M, var/gang_type = "") + if(!is_gangster(M) || !(gang_type in gang_name_pool)) + return 0 + var/datum/gang/G = M.mind.gang_datum + world << G.name + if(G.name == gang_type) + return 1 + return 0 /datum/game_mode/gang name = "gang war" diff --git a/code/game/objects/items/weapons/pneumaticCannon.dm b/code/game/objects/items/weapons/pneumaticCannon.dm index 45f93dc03da..eb7652cb0a0 100644 --- a/code/game/objects/items/weapons/pneumaticCannon.dm +++ b/code/game/objects/items/weapons/pneumaticCannon.dm @@ -73,6 +73,9 @@ /obj/item/weapon/pneumatic_cannon/afterattack(atom/target as mob|obj|turf, mob/living/carbon/human/user as mob|obj, flag, params) if(user.a_intent == "harm" || !ishuman(user)) return ..() + if(is_in_gang(user, "Sleeping Carp")) + user << "Use of ranged weaponry would bring dishonor to the clan." + return if(!loadedItems || !loadedWeightClass) user << "\The [src] has nothing loaded." return diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 02729e68ac9..11d3de6dac0 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -168,6 +168,11 @@ if(NOGUNS in user.dna.species.specflags) user << "Your fingers don't fit in the trigger guard!" return 0 + + if(is_in_gang(user, "Sleeping Carp")) //great dishonor to famiry + user << "Use of ranged weaponry would bring dishonor to the clan." + return 0 + return 1 diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 46f44c40a4a..783f8563101 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -60,6 +60,10 @@ if(!isliving(target)) return 0 var/mob/living/L = target + if(is_in_gang(L, "Sleeping Carp")) //Sleeping Carp gang can block projectiles! + if(!L.lying) //But only if they aren't lying down + L.visible_message("[L] deflects [src]!", "You deflect [src]!") + return 1 if(blocked != 100) // not completely blocked var/organ_hit_text = "" if(L.has_limbs)