mirror of
https://github.com/Aurorastation/Aurora-Old.git
synced 2026-08-23 20:56:20 +01:00
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:
@@ -139,4 +139,80 @@
|
||||
emp_act(severity)
|
||||
if(prob(50/severity))
|
||||
wired = 0
|
||||
..()
|
||||
..()
|
||||
|
||||
/*
|
||||
Forcegloves. They amplify force from melee hits as well as muck up disarm and stuff a little.
|
||||
Has bits of code in item_attack.dm, stungloves.dm, human_attackhand, human_defense
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/obj/item/clothing/gloves/force // this pair should be put in r&d if you choose to do so. and also the hos office locker. do it okay
|
||||
|
||||
desc = "These gloves bend gravity and bluespace, dampening inertia and augmenting the wearer's melee capabilities."
|
||||
name = "force gloves"
|
||||
icon_state = "black"
|
||||
item_state = "swat_gl"
|
||||
siemens_coefficient = 0.6
|
||||
permeability_coefficient = 0.05
|
||||
|
||||
cold_protection = HANDS
|
||||
min_cold_protection_temperature = GLOVES_MIN_COLD_PROTECTION_TEMPERATURE
|
||||
heat_protection = HANDS
|
||||
max_heat_protection_temperature = GLOVES_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
|
||||
var/active = 1 //i am actually too lazy to code an on/off switch so if you want it off, take them off for now. yes.
|
||||
var/amplification = 2
|
||||
|
||||
/obj/item/clothing/gloves/force/basic //dooo iiiitttttt
|
||||
desc = "These gloves bend gravity and bluespace, providing a cheap boost to the effectiveness of your average security staff."
|
||||
name = "basic force gloves" //do it skull do it give it to all sec the forums agree go
|
||||
amplification = 1 //just do it
|
||||
|
||||
/obj/item/clothing/gloves/force/syndicate //for syndies. pda, *maybe* nuke team or ert. up to you. maybe just use the amp 2 variant.
|
||||
desc = "These gloves bend gravity and bluespace, dampening inertia and augmenting the wearer's melee capabilities."
|
||||
name = "enhanced force gloves"
|
||||
icon_state = "black"
|
||||
item_state = "swat_gl"
|
||||
amplification = 2.5 //because *2.5 is kind of scary okay. sometimes you want the scary effect. sometimes not.
|
||||
|
||||
|
||||
/* this is too cluttered. i'd rather keep it simple.
|
||||
|
||||
verb/toggleGloves() //also this doesn't actually do anything yet. if you want to code in on/off, it needs interactions with the human attackhand file.
|
||||
set category = "Object"
|
||||
set name = "Toggle Forceglove Activity"
|
||||
set src in usr
|
||||
|
||||
if (active == 0)
|
||||
active = 1
|
||||
amplification = 1.5
|
||||
usr << "You squeeze twice, activating the gloves and amplifying the force of your blows. Your hands tingle pleasantly."
|
||||
|
||||
else if (active == 1)
|
||||
active = 0
|
||||
amplification = 1
|
||||
usr << "You deactivate the forcegloves. Your hands feel heavy."
|
||||
|
||||
verb/toggleForceAmp()
|
||||
set category = "Object"
|
||||
set name = "Toggle Force-Amplification Level"
|
||||
set src in usr
|
||||
|
||||
if (active == 0)
|
||||
usr << "You wiggle your fingers, but the gloves aren't active. You activate them, setting the gloves to their lowest setting: Lethal. You will now hit 1.5x as hard."
|
||||
amplification = 1.5
|
||||
else if (amplification < 1.5 || amplification == 2.5 )
|
||||
amplification = 1.5
|
||||
usr << "You wiggle your fingers, setting the gloves to their lowest setting: Lethal. You will now hit 1.5x as hard."
|
||||
else if (amplification == 1.5)
|
||||
amplification = 2
|
||||
usr << "You wiggle your fingers, setting the gloves to the medium setting: Very Lethal. You will now hit twice as hard."
|
||||
else if (amplification == 2)
|
||||
amplification = 2.5
|
||||
usr << "You wiggle your fingers, setting the gloves to the highest setting: Extremely Lethal. You will now hit 2.5x as hard."
|
||||
|
||||
*/
|
||||
@@ -3,29 +3,33 @@
|
||||
user << "<span class='notice'>That won't work.</span>" //i'm not putting my lips on that!
|
||||
..()
|
||||
return
|
||||
|
||||
else if(istype(src, /obj/item/clothing/gloves/force))
|
||||
user << "<span class='notice'>That seems like a terrible idea.</span>"
|
||||
..()
|
||||
return
|
||||
|
||||
//add wires
|
||||
if(istype(W, /obj/item/weapon/cable_coil))
|
||||
var/obj/item/weapon/cable_coil/C = W
|
||||
if (clipped)
|
||||
user << "<span class='notice'>The [src] are too badly mangled for wiring.</span>"
|
||||
return
|
||||
|
||||
|
||||
if(wired)
|
||||
user << "<span class='notice'>The [src] are already wired.</span>"
|
||||
return
|
||||
|
||||
|
||||
if(C.amount < 2)
|
||||
user << "<span class='notice'>There is not enough wire to cover the [src].</span>"
|
||||
return
|
||||
|
||||
|
||||
C.use(2)
|
||||
wired = 1
|
||||
siemens_coefficient = 3.0
|
||||
user << "<span class='notice'>You wrap some wires around the [src].</span>"
|
||||
update_icon()
|
||||
return
|
||||
|
||||
|
||||
//add cell
|
||||
else if(istype(W, /obj/item/weapon/cell))
|
||||
if(!wired)
|
||||
@@ -56,12 +60,12 @@
|
||||
user << "<span class='notice'>You cut the wires away from the [src].</span>"
|
||||
update_icon()
|
||||
return
|
||||
|
||||
|
||||
//clipping fingertips
|
||||
if(!clipped)
|
||||
playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1)
|
||||
user.visible_message("\red [user] cuts the fingertips off of the [src].","\red You cut the fingertips off of the [src].")
|
||||
|
||||
|
||||
clipped = 1
|
||||
name = "mangled [name]"
|
||||
desc = "[desc]<br>They have had the fingertips cut off of them."
|
||||
@@ -73,9 +77,9 @@
|
||||
user << "<span class='notice'>The [src] have already been clipped!</span>"
|
||||
update_icon()
|
||||
return
|
||||
|
||||
|
||||
return
|
||||
|
||||
|
||||
..()
|
||||
|
||||
/obj/item/clothing/gloves/update_icon()
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user