sword arms, forcegloves

changeling sword arms + riot shield growth abilities.  as far as i can
tell, bug free.

forcegloves: see thread on forum for details.  i personally think it's a
great idea to make them standard issue for sec or at least put them in
the armoury.  they amp melee damage (varedit amplification if you want
ingame shenanigans with them) and also interact with harm-grab-disarm.
This commit is contained in:
Duck-
2015-03-20 18:49:41 -04:00
parent 4b0ec3d9bd
commit bac5f3e6c0
10 changed files with 239 additions and 33 deletions
@@ -37,7 +37,7 @@
visible_message("\red <B>[src] has been touched with the stun gloves by [M]!</B>")
return
if(istype(M.gloves , /obj/item/clothing/gloves/boxing/hologlove))
else if(istype(M.gloves , /obj/item/clothing/gloves/boxing/hologlove))
var/damage = rand(0, 9)
if(!damage)
@@ -57,7 +57,6 @@
if(damage >= 9)
visible_message("\red <B>[M] has weakened [src]!</B>")
apply_effect(4, WEAKEN, armor_block)
return
else
if(istype(M,/mob/living/carbon))
@@ -104,9 +103,15 @@
M.put_in_active_hand(G)
grabbed_by += G
G.synch()
LAssailant = M
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
if(M.gloves && istype(M.gloves,/obj/item/clothing/gloves/force))
G.state = GRAB_AGGRESSIVE
G.icon_state = "grabbed1"
visible_message("<span class='warning'>[M] gets a strong grip on [src]!</span>")
return 1
visible_message("<span class='warning'>[M] has grabbed [src] passively!</span>")
return 1
@@ -158,8 +163,9 @@
var/armor_block = run_armor_check(affecting, "melee")
if(HULK in M.mutations) damage += 5
if(M.gloves && istype(M.gloves,/obj/item/clothing/gloves/force))
var/obj/item/clothing/gloves/force/X = M.gloves
damage *= X.amplification
playsound(loc, attack.attack_sound, 25, 1, -1)
visible_message("\red <B>[M] [pick(attack.attack_verb)]ed [src]!</B>")
@@ -204,14 +210,37 @@
var/randn = rand(1, 100)
if (randn <= 25)
apply_effect(3, WEAKEN, run_armor_check(affecting, "melee"))
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
visible_message("\red <B>[M] has pushed [src]!</B>")
return
if(M.gloves && istype(M.gloves,/obj/item/clothing/gloves/force))
apply_effect(6, WEAKEN, run_armor_check(affecting, "melee"))
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
visible_message("\red <B>[M] hurls [src] to the floor!</B>")
step_away(src,M,15)
sleep(3)
step_away(src,M,15)
return
else
apply_effect(3, WEAKEN, run_armor_check(affecting, "melee"))
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
visible_message("\red <B>[M] has pushed [src]!</B>")
return
var/talked = 0 // BubbleWrap
if(randn <= 60)
if(M.gloves && istype(M.gloves,/obj/item/clothing/gloves/force))
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
visible_message("\red <B>[M] shoves, sending [src] flying!</B>")
step_away(src,M,15)
sleep(1)
step_away(src,M,15)
sleep(1)
step_away(src,M,15)
sleep(1)
step_away(src,M,15)
sleep(1)
apply_effect(1, WEAKEN, run_armor_check(affecting, "melee"))
return
//BubbleWrap: Disarming breaks a pull
if(pulling)
visible_message("\red <b>[M] has broken [src]'s grip on [pulling]!</B>")
@@ -193,6 +193,17 @@ emp_act
visible_message("\red <B>[user] misses [src] with \the [I]!")
return 0
//hulk and forceglove stuff
var/power = I.force
if(HULK in user.mutations)
power *= 2
if(istype(user, /mob/living/carbon/human))
var/mob/living/carbon/human/X = user
if(X.gloves && istype(X.gloves,/obj/item/clothing/gloves/force))
var/obj/item/clothing/gloves/force/G = X.gloves
power *= G.amplification
var/datum/organ/external/affecting = get_organ(target_zone)
if (!affecting)
return 0
@@ -201,7 +212,7 @@ emp_act
return 0
var/hit_area = affecting.display_name
if((user != src) && check_shields(I.force, "the [I.name]"))
if((user != src) && check_shields(power, "the [I.name]"))
return 0
if(istype(I,/obj/item/weapon/card/emag))
@@ -230,13 +241,13 @@ emp_act
weapon_edge = 0
if(armor >= 2) return 0
if(!I.force) return 0
if(!power) return 0
// var/Iforce = I.force //to avoid runtimes on the forcesay checks at the bottom. Some items might delete themselves if you drop them. (stunning yourself, ninja swords)
apply_damage(I.force, I.damtype, affecting, armor, sharp=weapon_sharp, edge=weapon_edge, used_weapon=I)
apply_damage(power, I.damtype, affecting, armor, sharp=weapon_sharp, edge=weapon_edge, used_weapon=I)
var/bloody = 0
if(((I.damtype == BRUTE) || (I.damtype == HALLOSS)) && prob(25 + (I.force * 2)))
if(((I.damtype == BRUTE) || (I.damtype == HALLOSS)) && prob(25 + (power * 2)))
I.add_blood(src) //Make the weapon bloody, not the person.
// if(user.hand) user.update_inv_l_hand() //updates the attacker's overlay for the (now bloodied) weapon
// else user.update_inv_r_hand() //removed because weapons don't have on-mob blood overlays
@@ -253,7 +264,7 @@ emp_act
switch(hit_area)
if("head")//Harder to score a stun but if you do it lasts a bit longer
if(prob(I.force))
if(prob(power))
apply_effect(20, PARALYZE, armor)
visible_message("\red <B>[src] has been knocked unconscious!</B>")
if(src != user && I.damtype == BRUTE)
@@ -271,7 +282,7 @@ emp_act
update_inv_glasses(0)
if("chest")//Easier to score a stun but lasts less time
if(prob((I.force + 10)))
if(prob((power + 10)))
apply_effect(6, WEAKEN, armor)
visible_message("\red <B>[src] has been knocked down!</B>")
@@ -283,7 +294,7 @@ emp_act
//Melee weapon embedded object code.
if (I.damtype == BRUTE && !I.is_robot_module())
var/damage = I.force
var/damage = power
if (armor)
damage /= armor+1