Files
Paradise/code/game/objects/items/weapons/twohanded.dm
Ren Erthilo a4e04d2915 TG: Runtime fixes for:
runtime error: Cannot modify null.layer. proc name: done
(/obj/effect/equip_e/human/done) usr: Ramona Fawkes (/mob/living/carbon/human)
src: the human (/obj/effect/equip_e/human)
call stack: the human (/obj/effect/equip_e/human): done() the human
(/obj/effect/equip_e/human): process()

runtime error: Cannot execute null.use(). proc name: attackby
(/obj/structure/barricade/wooden/attackby) usr: Jeffery Long
(/mob/living/carbon/human) src: the wooden barricade
(/obj/structure/barricade/wooden) call stack: the wooden barricade
(/obj/structure/barricade/wooden): attackby(null, Jeffery Long
(/mob/living/carbon/human)) the wooden barricade
(/obj/structure/barricade/wooden): DblClick(the floor (159,129,1)
(/turf/simulated/floor), "mapwindow.map", "icon-x=15;icon-y=12;left=1;scr...")

Rewrote wielded weapons to be their own weapon subclass. There was no point
having a var/wielded var/twohanded var/force_unwielded var/force_wielded for
every damn item when there is only 1 wield-able weapon anyway. All the wield-
able stuff is now in twohanded.dm

Changed the adminhelpsound to some creative commons sound I pinched. Until
somebody can get a better one. I'm sick of MAAAAAAAAOOOOOOW.

All PMs trigger the adminhelp sound. That means when you OM a player they get
the sound, if a admin is PMed they only hear it if their adminhelp sounds are
enabled. This should allow people to get eachother's attention when t he chat is
busy.

Fixed some bad code with poddoors (which is used for the shutters in QM)
Revision: r3435
Author: 	 elly1...@rocketmail.com
2012-05-02 23:09:19 +01:00

116 lines
3.5 KiB
Plaintext

/*##################################################################
##################### 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.
/obj/item/weapon/twohanded
var/wielded = 0
var/force_unwielded = 0
var/force_wielded = 0
/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/dropped(mob/user as mob)
//handles unwielding a twohanded weapon when dropped as well as clearing up the offhand
//bit of a hack but it keeps other code pretty neat and with fewer conditionals
var/obj/item/weapon/twohanded/O
if(user)
if(user.l_hand)
O = user.l_hand
else
O = user.r_hand
if(O && 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>"
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>"
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)]"
if(user.hand)
user.r_hand = O ///Place dat offhand in the opposite hand
else
user.l_hand = O
O.layer = 20
return
///////////OFFHAND///////////////
/obj/item/weapon/twohanded/offhand
w_class = 5.0
icon_state = "offhand"
name = "offhand"
unwield()
del(src)
wield()
del(src)
////////////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
flags = ONBACK
force_unwielded = 5
force_wielded = 18
/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)
..()
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)