mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-23 07:26:05 +00:00
Everything that had abstract var now has ABSTRACT flag Everything that checked abstract var now checks ABSTRACT flag Fixed some runtimes Fixed click code and face direction changing while cuffed Added del to all attack_* of the proboscis in case shit goes real AStar is still weird so added a simple sanity check
261 lines
7.5 KiB
Plaintext
261 lines
7.5 KiB
Plaintext
/* Two-handed Weapons
|
|
* Contains:
|
|
* Twohanded
|
|
* Fireaxe
|
|
* Double-Bladed Energy Swords
|
|
* Spears
|
|
*/
|
|
|
|
/*##################################################################
|
|
##################### TWO HANDED WEAPONS BE HERE~ -Agouri :3 ########
|
|
####################################################################*/
|
|
|
|
//Rewrote TwoHanded weapons stuff and put it all here. Just copypasta fireaxe to make new ones ~Carn
|
|
//This rewrite means we don't have two variables for EVERY item which are used only by a few weapons.
|
|
//It also tidies stuff up elsewhere.
|
|
|
|
|
|
|
|
|
|
/*
|
|
* Twohanded
|
|
*/
|
|
/obj/item/weapon/twohanded
|
|
var/wielded = 0
|
|
var/force_unwielded = 0
|
|
var/force_wielded = 0
|
|
var/wieldsound = null
|
|
var/unwieldsound = null
|
|
|
|
/obj/item/weapon/twohanded/proc/unwield()
|
|
wielded = 0
|
|
force = force_unwielded
|
|
name = "[initial(name)]"
|
|
update_icon()
|
|
|
|
/obj/item/weapon/twohanded/proc/wield()
|
|
wielded = 1
|
|
force = force_wielded
|
|
name = "[initial(name)] (Wielded)"
|
|
update_icon()
|
|
|
|
/obj/item/weapon/twohanded/mob_can_equip(M as mob, slot)
|
|
//Cannot equip wielded items.
|
|
if(wielded)
|
|
M << "<span class='warning'>Unwield the [initial(name)] first!</span>"
|
|
return 0
|
|
|
|
return ..()
|
|
|
|
/obj/item/weapon/twohanded/dropped(mob/user as mob)
|
|
//handles unwielding a twohanded weapon when dropped as well as clearing up the offhand
|
|
if(user)
|
|
var/obj/item/weapon/twohanded/O = user.get_inactive_hand()
|
|
if(istype(O))
|
|
O.unwield()
|
|
return unwield()
|
|
|
|
/obj/item/weapon/twohanded/update_icon()
|
|
return
|
|
|
|
/obj/item/weapon/twohanded/pickup(mob/user)
|
|
unwield()
|
|
|
|
/obj/item/weapon/twohanded/attack_self(mob/user as mob)
|
|
if( istype(user,/mob/living/carbon/monkey) )
|
|
user << "<span class='warning'>It's too heavy for you to wield fully.</span>"
|
|
return
|
|
|
|
..()
|
|
if(wielded) //Trying to unwield it
|
|
unwield()
|
|
user << "<span class='notice'>You are now carrying the [name] with one hand.</span>"
|
|
if (src.unwieldsound)
|
|
playsound(src.loc, unwieldsound, 50, 1)
|
|
|
|
var/obj/item/weapon/twohanded/offhand/O = user.get_inactive_hand()
|
|
if(O && istype(O))
|
|
O.unwield()
|
|
return
|
|
|
|
else //Trying to wield it
|
|
if(user.get_inactive_hand())
|
|
user << "<span class='warning'>You need your other hand to be empty</span>"
|
|
return
|
|
wield()
|
|
user << "<span class='notice'>You grab the [initial(name)] with both hands.</span>"
|
|
if (src.wieldsound)
|
|
playsound(src.loc, wieldsound, 50, 1)
|
|
|
|
var/obj/item/weapon/twohanded/offhand/O = new(user) ////Let's reserve his other hand~
|
|
O.name = "[initial(name)] - offhand"
|
|
O.desc = "Your second grip on the [initial(name)]"
|
|
user.put_in_inactive_hand(O)
|
|
return
|
|
|
|
|
|
///////////OFFHAND///////////////
|
|
/obj/item/weapon/twohanded/offhand
|
|
name = "offhand"
|
|
icon_state = "offhand"
|
|
w_class = 5.0
|
|
flags = ABSTRACT
|
|
|
|
/obj/item/weapon/twohanded/offhand/unwield()
|
|
del(src)
|
|
|
|
/obj/item/weapon/twohanded/offhand/wield()
|
|
del(src)
|
|
|
|
/obj/item/weapon/twohanded/offhand/IsShield()//if the actual twohanded weapon is a shield, we count as a shield too!
|
|
var/mob/user = loc
|
|
if(!istype(user)) return 0
|
|
var/obj/item/I = user.get_active_hand()
|
|
if(I == src) I = user.get_inactive_hand()
|
|
if(!I) return 0
|
|
return I.IsShield()
|
|
|
|
|
|
/*
|
|
* Fireaxe
|
|
*/
|
|
/obj/item/weapon/twohanded/fireaxe // DEM AXES MAN, marker -Agouri
|
|
icon_state = "fireaxe0"
|
|
name = "fire axe"
|
|
desc = "Truly, the weapon of a madman. Who would think to fight fire with an axe?"
|
|
force = 5
|
|
w_class = 4.0
|
|
slot_flags = SLOT_BACK
|
|
force_unwielded = 5
|
|
force_wielded = 24 // Was 18, Buffed - RobRichards/RR
|
|
attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut")
|
|
|
|
/obj/item/weapon/twohanded/fireaxe/update_icon() //Currently only here to fuck with the on-mob icons.
|
|
icon_state = "fireaxe[wielded]"
|
|
return
|
|
|
|
/obj/item/weapon/twohanded/fireaxe/afterattack(atom/A as mob|obj|turf|area, mob/user as mob, proximity)
|
|
if(!proximity) return
|
|
if(A && wielded && (istype(A,/obj/structure/window) || istype(A,/obj/structure/grille))) //destroys windows and grilles in one hit
|
|
if(istype(A,/obj/structure/window)) //should just make a window.Break() proc but couldn't bother with it
|
|
var/obj/structure/window/W = A
|
|
|
|
new /obj/item/weapon/shard( W.loc )
|
|
if(W.reinf) new /obj/item/stack/rods( W.loc)
|
|
|
|
if (W.dir == SOUTHWEST)
|
|
new /obj/item/weapon/shard( W.loc )
|
|
if(W.reinf) new /obj/item/stack/rods( W.loc)
|
|
del(A)
|
|
|
|
|
|
/*
|
|
* Double-Bladed Energy Swords - Cheridan
|
|
*/
|
|
/obj/item/weapon/twohanded/dualsaber
|
|
icon_state = "dualsaber0"
|
|
name = "double-bladed energy sword"
|
|
desc = "Handle with care."
|
|
force = 3
|
|
throwforce = 5.0
|
|
throw_speed = 1
|
|
throw_range = 5
|
|
w_class = 2.0
|
|
force_unwielded = 3
|
|
force_wielded = 34
|
|
wieldsound = 'sound/weapons/saberon.ogg'
|
|
unwieldsound = 'sound/weapons/saberoff.ogg'
|
|
flags = FPRINT | TABLEPASS | NOSHIELD
|
|
origin_tech = "magnets=3;syndicate=4"
|
|
item_color = "green"
|
|
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
|
var/hacked = 0
|
|
reflect_chance = 0
|
|
|
|
/obj/item/weapon/twohanded/dualsaber/New()
|
|
item_color = pick("red", "blue", "green", "purple")
|
|
|
|
/obj/item/weapon/twohanded/dualsaber/update_icon()
|
|
if(wielded)
|
|
icon_state = "dualsaber[item_color][wielded]"
|
|
else
|
|
icon_state = "dualsaber0"
|
|
clean_blood()//blood overlays get weird otherwise, because the sprite changes.
|
|
return
|
|
|
|
/obj/item/weapon/twohanded/dualsaber/attack(target as mob, mob/living/user as mob)
|
|
..()
|
|
if((CLUMSY in user.mutations) && (wielded) &&prob(40))
|
|
user << "\red You twirl around a bit before losing your balance and impaling yourself on the [src]."
|
|
user.take_organ_damage(20,25)
|
|
return
|
|
if((wielded) && prob(50))
|
|
spawn(0)
|
|
for(var/i in list(1,2,4,8,4,2,1,2,4,8,4,2))
|
|
user.dir = i
|
|
sleep(1)
|
|
|
|
/obj/item/weapon/twohanded/dualsaber/IsShield()
|
|
if(wielded)
|
|
return 1
|
|
else
|
|
return 0
|
|
|
|
/obj/item/weapon/twohanded/dualsaber/wield() //Specific wield () hulk checks due to reflect_chance var for balance issues
|
|
wielded = 1
|
|
var/mob/living/M = loc
|
|
if(istype(loc, /mob/living))
|
|
if (HULK in M.mutations)
|
|
loc << "<span class='warning'>You lack the grace to wield this to its full extent.</span>"
|
|
force = force_wielded
|
|
name = "[initial(name)] (Wielded)"
|
|
update_icon()
|
|
|
|
/obj/item/weapon/twohanded/dualsaber/IsReflect()
|
|
if(wielded)
|
|
var/mob/living/M = loc
|
|
if(istype(loc, /mob/living))
|
|
if (HULK in M.mutations)
|
|
return
|
|
return 1
|
|
|
|
/obj/item/weapon/twohanded/dualsaber/green
|
|
New()
|
|
item_color = "green"
|
|
|
|
/obj/item/weapon/twohanded/dualsaber/red
|
|
New()
|
|
item_color = "red"
|
|
|
|
/obj/item/weapon/twohanded/dualsaber/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
..()
|
|
if(istype(W, /obj/item/device/multitool))
|
|
if(hacked == 0)
|
|
hacked = 1
|
|
user << "<span class='warning'>2XRNBW_ENGAGE</span>"
|
|
item_color = "rainbow"
|
|
update_icon()
|
|
else
|
|
user << "<span class='warning'>It's starting to look like a triple rainbow - no, nevermind.</span>"
|
|
|
|
|
|
//spears
|
|
/obj/item/weapon/twohanded/spear
|
|
icon_state = "spearglass0"
|
|
name = "spear"
|
|
desc = "A haphazardly-constructed yet still deadly weapon of ancient design."
|
|
force = 10
|
|
w_class = 4.0
|
|
slot_flags = SLOT_BACK
|
|
force_unwielded = 10
|
|
force_wielded = 18 // Was 13, Buffed - RR
|
|
throwforce = 15
|
|
flags = FPRINT | TABLEPASS | NOSHIELD
|
|
hitsound = 'sound/weapons/bladeslice.ogg'
|
|
attack_verb = list("attacked", "poked", "jabbed", "torn", "gored")
|
|
|
|
/obj/item/weapon/twohanded/spear/update_icon()
|
|
icon_state = "spearglass[wielded]"
|
|
return
|
|
|