More Makeshift Items/Weapons

This commit is contained in:
Fox-McCloud
2016-07-25 02:35:01 -04:00
parent 73d13946fc
commit 47b15bec0f
22 changed files with 361 additions and 21 deletions
+3 -3
View File
@@ -84,14 +84,14 @@
if(istype(A, /datum/reagent))
if(!reagents)
reagents = new()
reagents.reagent_list.Add(A)
reagents.conditional_update()
reagents.reagent_list.Add(A)
reagents.conditional_update()
else if(istype(A, /atom/movable))
var/atom/movable/M = A
if(istype(M.loc, /mob/living))
var/mob/living/L = M.loc
L.unEquip(M)
M.loc = src
M.loc = src
/atom/proc/assume_air(datum/gas_mixture/giver)
qdel(giver)
+1 -2
View File
@@ -361,10 +361,9 @@ Class Procs:
return ..()
/obj/machinery/CheckParts()
/obj/machinery/CheckParts(list/parts_list)
..()
RefreshParts()
return
/obj/machinery/proc/RefreshParts() //Placeholder proc for machines that are built using frames.
return
+2
View File
@@ -1,3 +1,5 @@
var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.dmi', "icon_state" = "fire")
/obj/item
name = "item"
icon = 'icons/obj/items.dmi'
+25 -1
View File
@@ -105,4 +105,28 @@
desc = "Damn son, where'd you find this?"
icon_state = "air_horn"
honk_sound = 'sound/items/AirHorn2.ogg'
cooldowntime = 50
cooldowntime = 50
/obj/item/weapon/bikehorn/golden
name = "golden bike horn"
desc = "Golden? Clearly, its made with bananium! Honk!"
icon_state = "gold_horn"
item_state = "gold_horn"
/obj/item/weapon/bikehorn/golden/attack()
flip_mobs()
return ..()
/obj/item/weapon/bikehorn/golden/attack_self(mob/user)
flip_mobs()
..()
/obj/item/weapon/bikehorn/golden/proc/flip_mobs(mob/living/carbon/M, mob/user)
if (!spam_flag)
var/turf/T = get_turf(src)
for(M in ohearers(7, T))
if(istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
if(istype(H.l_ear, /obj/item/clothing/ears/earmuffs) || istype(H.r_ear, /obj/item/clothing/ears/earmuffs) || H.ear_deaf)
continue
M.emote("flip")
+1 -1
View File
@@ -69,7 +69,7 @@
ratio = Ceiling(ratio*4) * 25
overlays += "[icon_state]-charge[ratio]"
/obj/item/weapon/defibrillator/CheckParts()
/obj/item/weapon/defibrillator/CheckParts(list/parts_list)
..()
bcell = locate(/obj/item/weapon/stock_parts/cell) in contents
update_icon()
@@ -164,10 +164,13 @@
update_icon()
return
/obj/item/weapon/flamethrower/CheckParts()
/obj/item/weapon/flamethrower/CheckParts(list/parts_list)
..()
weldtool = locate(/obj/item/weapon/weldingtool) in contents
igniter = locate(/obj/item/device/assembly/igniter) in contents
weldtool.status = 0
igniter.secured = 0
status = 1
update_icon()
//Called from turf.dm turf/dblclick
@@ -93,7 +93,7 @@
else
range = pick(2,2,2,3,3,3,4)
/obj/item/weapon/grenade/iedcasing/CheckParts()
/obj/item/weapon/grenade/iedcasing/CheckParts(list/parts_list)
..()
var/obj/item/weapon/reagent_containers/food/drinks/cans/can = locate() in contents
if(can)
@@ -705,3 +705,72 @@
new /obj/item/weapon/lipstick/green(src)
new /obj/item/weapon/lipstick/blue(src)
new /obj/item/weapon/lipstick/white(src)
#define NODESIGN "None"
#define NANOTRASEN "NanotrasenStandard"
#define SYNDI "SyndiSnacks"
#define HEART "Heart"
#define SMILE "SmileyFace"
/obj/item/weapon/storage/box/papersack
name = "paper sack"
desc = "A sack neatly crafted out of paper."
icon_state = "paperbag_None"
item_state = "paperbag_None"
foldable = null
var/design = NODESIGN
/obj/item/weapon/storage/box/papersack/update_icon()
if(contents.len == 0)
icon_state = "[item_state]"
else icon_state = "[item_state]_closed"
/obj/item/weapon/storage/box/papersack/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/weapon/pen))
//if a pen is used on the sack, dialogue to change its design appears
if(contents.len)
to_chat(user, "<span class='warning'>You can't modify this [src] with items still inside!</span>")
return
var/list/designs = list(NODESIGN, NANOTRASEN, SYNDI, HEART, SMILE, "Cancel")
var/switchDesign = input("Select a Design:", "Paper Sack Design", designs[1]) in designs
if(get_dist(usr, src) > 1)
to_chat(usr, "<span class='warning'>You have moved too far away!</span>")
return
var/choice = designs.Find(switchDesign)
if(design == designs[choice] || designs[choice] == "Cancel")
return 0
to_chat(usr, "<span class='notice'>You make some modifications to the [src] using your pen.</span>")
design = designs[choice]
icon_state = "paperbag_[design]"
item_state = "paperbag_[design]"
switch(designs[choice])
if(NODESIGN)
desc = "A sack neatly crafted out of paper."
if(NANOTRASEN)
desc = "A standard Nanotrasen paper lunch sack for loyal employees on the go."
if(SYNDI)
desc = "The design on this paper sack is a remnant of the notorious 'SyndieSnacks' program."
if(HEART)
desc = "A paper sack with a heart etched onto the side."
if(SMILE)
desc = "A paper sack with a crude smile etched onto the side."
return 0
else if(is_sharp(W))
if(!contents.len)
if(item_state == "paperbag_None")
to_chat(user, "<span class='notice'>You cut eyeholes into the [src].</span>")
new /obj/item/clothing/head/papersack(user.loc)
qdel(src)
return 0
else if(item_state == "paperbag_SmileyFace")
to_chat(user, "<span class='notice'>You cut eyeholes into the [src] and modify the design.</span>")
new /obj/item/clothing/head/papersack/smiley(user.loc)
qdel(src)
return 0
return ..()
#undef NODESIGN
#undef NANOTRASEN
#undef SYNDI
#undef HEART
#undef SMILE
+1 -1
View File
@@ -23,7 +23,7 @@
update_icon()
return
/obj/item/weapon/melee/baton/CheckParts()
/obj/item/weapon/melee/baton/CheckParts(list/parts_list)
..()
bcell = locate(/obj/item/weapon/stock_parts/cell) in contents
update_icon()
+125 -8
View File
@@ -283,20 +283,90 @@
w_class = 4
slot_flags = SLOT_BACK
force_unwielded = 10
force_wielded = 18 // Was 13, Buffed - RR
force_wielded = 18
throwforce = 20
throw_speed = 3
throw_speed = 4
armour_penetration = 10
no_spin_thrown = 1 // Thrown spears that spin look dumb. -Fox
materials = list(MAT_METAL=1150, MAT_GLASS=2075)
hitsound = 'sound/weapons/bladeslice.ogg'
attack_verb = list("attacked", "poked", "jabbed", "torn", "gored")
sharp = 1
edge = 1
no_spin_thrown = 1
var/obj/item/weapon/grenade/explosive = null
var/war_cry = "AAAAARGH!!!"
/obj/item/weapon/twohanded/spear/update_icon()
icon_state = "spearglass[wielded]"
return
if(explosive)
icon_state = "spearbomb[wielded]"
else
icon_state = "spearglass[wielded]"
/obj/item/weapon/twohanded/spear/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
return ..()
/obj/item/weapon/twohanded/spear/afterattack(atom/movable/AM, mob/user, proximity)
if(!proximity)
return
if(isturf(AM)) //So you can actually melee with it
return
if(explosive && wielded)
user.say("[war_cry]")
explosive.loc = AM
explosive.prime()
qdel(src)
/obj/item/weapon/twohanded/spear/throw_impact(atom/target)
. = ..()
if(explosive)
explosive.prime()
qdel(src)
/obj/item/weapon/twohanded/spear/AltClick()
..()
if(!explosive)
return
if(ismob(loc))
var/mob/M = loc
var/input = stripped_input(M, "What do you want your war cry to be? You will shout it when you hit someone in melee.", ,"", 50)
if(input)
war_cry = input
/obj/item/weapon/twohanded/spear/CheckParts(list/parts_list)
..()
if(explosive)
explosive.loc = get_turf(src.loc)
explosive = null
var/obj/item/weapon/grenade/G = locate() in contents
if(G)
explosive = G
name = "explosive lance"
desc = "A makeshift spear with [G] attached to it. Alt+click on the spear to set your war cry!"
return
update_icon()
//GREY TIDE
/obj/item/weapon/twohanded/spear/grey_tide
icon_state = "spearglass0"
name = "\improper Grey Tide"
desc = "Recovered from the aftermath of a revolt aboard Defense Outpost Theta Aegis, in which a seemingly endless tide of Assistants caused heavy casualities among Nanotrasen military forces."
force_unwielded = 15
force_wielded = 25
throwforce = 20
throw_speed = 4
attack_verb = list("gored")
/obj/item/weapon/twohanded/spear/grey_tide/afterattack(atom/movable/AM, mob/living/user, proximity)
..()
if(!proximity)
return
user.faction |= "greytide(\ref[user])"
if(isliving(AM))
var/mob/living/L = AM
if(istype (L, /mob/living/simple_animal/hostile/illusion))
return
if(!L.stat && prob(50))
var/mob/living/simple_animal/hostile/illusion/M = new(user.loc)
M.faction = user.faction.Copy()
M.Copy_Parent(user, 100, user.health/2.5, 12, 30)
M.GiveTarget(L)
//Putting heads on spears
/obj/item/organ/external/head/attackby(var/obj/item/weapon/W, var/mob/living/user, params)
@@ -348,6 +418,53 @@
name = "Kidan spear"
desc = "A spear brought over from the Kidan homeworld."
// DIY CHAINSAW
/obj/item/weapon/twohanded/required/chainsaw
name = "chainsaw"
desc = "A versatile power tool. Useful for limbing trees and delimbing humans."
icon_state = "gchainsaw_off"
flags = CONDUCT
force = 13
w_class = 5
throwforce = 13
throw_speed = 2
throw_range = 4
materials = list(MAT_METAL=13000)
origin_tech = "materials=3;engineering=4;combat=2"
attack_verb = list("sawed", "cut", "hacked", "carved", "cleaved", "butchered", "felled", "timbered")
hitsound = "swing_hit"
sharp = 1
edge = 1
actions_types = list(/datum/action/item_action/startchainsaw)
var/on = 0
/obj/item/weapon/twohanded/required/chainsaw/attack_self(mob/user)
on = !on
to_chat(user, "As you pull the starting cord dangling from [src], [on ? "it begins to whirr." : "the chain stops moving."]")
if(on)
playsound(loc, 'sound/weapons/chainsawstart.ogg', 50, 1)
force = on ? 21 : 13
throwforce = on ? 21 : 13
icon_state = "gchainsaw_[on ? "on" : "off"]"
if(hitsound == "swing_hit")
hitsound = 'sound/weapons/chainsaw.ogg'
else
hitsound = "swing_hit"
if(src == user.get_active_hand()) //update inhands
user.update_inv_l_hand()
user.update_inv_r_hand()
for(var/X in actions)
var/datum/action/A = X
A.UpdateButtonIcon()
/obj/item/weapon/twohanded/required/chainsaw/doomslayer
name = "OOOH BABY"
desc = "<span class='warning'>VRRRRRRR!!!</span>"
armour_penetration = 100
///CHAINSAW///
/obj/item/weapon/twohanded/chainsaw
icon_state = "chainsaw0"
+14
View File
@@ -372,3 +372,17 @@
desc = "A horribly bloated and mismatched human head."
icon_state = "lingspacehelmet"
item_state = "lingspacehelmet"
/obj/item/clothing/head/papersack
name = "paper sack hat"
desc = "A paper sack with crude holes cut out for eyes. Useful for hiding one's identity or ugliness."
icon_state = "papersack"
flags = BLOCKHAIR
flags_inv = HIDEFACE|HIDEEARS
/obj/item/clothing/head/papersack/smiley
name = "paper sack hat"
desc = "A paper sack with crude holes cut out for eyes and a sketchy smile drawn on the front. Not creepy at all."
icon_state = "papersack_smile"
flags = BLOCKHAIR
flags_inv = HIDEFACE|HIDEEARS
+47 -2
View File
@@ -26,6 +26,24 @@
time = 15
category = CAT_WEAPON
/datum/crafting_recipe/lance
name = "explosive lance (grenade)"
result = /obj/item/weapon/twohanded/spear
reqs = list(/obj/item/weapon/twohanded/spear = 1,
/obj/item/weapon/grenade = 1)
parts = list(/obj/item/weapon/grenade = 1)
time = 15
category = CAT_WEAPON
/datum/crafting_recipe/molotov
name = "Molotov"
result = /obj/item/weapon/reagent_containers/food/drinks/bottle/molotov
reqs = list(/obj/item/weapon/reagent_containers/glass/rag = 1,
/obj/item/weapon/reagent_containers/food/drinks/bottle = 1)
parts = list(/obj/item/weapon/reagent_containers/food/drinks/bottle = 1)
time = 40
category = CAT_WEAPON
/datum/crafting_recipe/stunprod
name = "Stunprod"
result = /obj/item/weapon/melee/baton/cattleprod
@@ -109,7 +127,9 @@
result = /obj/item/weapon/flamethrower
reqs = list(/obj/item/weapon/weldingtool = 1,
/obj/item/device/assembly/igniter = 1,
/obj/item/stack/rods = 2)
/obj/item/stack/rods = 1)
parts = list(/obj/item/device/assembly/igniter = 1,
/obj/item/weapon/weldingtool = 1)
tools = list(/obj/item/weapon/screwdriver)
time = 10
category = CAT_WEAPON
@@ -206,6 +226,16 @@
time = 100
category = CAT_WEAPON
/datum/crafting_recipe/chainsaw
name = "Chainsaw"
result = /obj/item/weapon/twohanded/required/chainsaw
reqs = list(/obj/item/weapon/circular_saw = 1,
/obj/item/stack/cable_coil = 1,
/obj/item/stack/sheet/plasteel = 1)
tools = list(/obj/item/weapon/weldingtool)
time = 50
category = CAT_WEAPON
/datum/crafting_recipe/spear
name = "Spear"
result = /obj/item/weapon/twohanded/spear
@@ -223,6 +253,13 @@
/datum/reagent/holywater = 10)
parts = list(/obj/item/device/camera = 1)
/datum/crafting_recipe/papersack
name = "Paper Sack"
result = /obj/item/weapon/storage/box/papersack
time = 10
reqs = list(/obj/item/weapon/paper = 5)
category = CAT_MISC
/datum/crafting_recipe/notreallysoap
name = "Homemade Soap"
result = /obj/item/weapon/soap/ducttape
@@ -264,4 +301,12 @@
result = /obj/item/latexballon
time = 15
reqs = list(/obj/item/clothing/gloves/color/latex = 1,
/obj/item/stack/cable_coil = 5)
/obj/item/stack/cable_coil = 5)
/datum/crafting_recipe/gold_horn
name = "Golden bike horn"
result = /obj/item/weapon/bikehorn/golden
time = 20
reqs = list(/obj/item/stack/sheet/mineral/bananium = 5,
/obj/item/weapon/bikehorn)
category = CAT_MISC
@@ -277,3 +277,70 @@
item_state = "carton"
isGlass = 0
list_reagents = list("limejuice" = 100)
////////////////////////// MOLOTOV ///////////////////////
/obj/item/weapon/reagent_containers/food/drinks/bottle/molotov
name = "molotov cocktail"
desc = "A throwing weapon used to ignite things, typically filled with an accelerant. Recommended highly by rioters and revolutionaries. Light and toss."
icon_state = "vodkabottle"
list_reagents = list()
var/list/accelerants = list(/datum/reagent/ethanol,/datum/reagent/fuel,/datum/reagent/clf3,/datum/reagent/phlogiston,
/datum/reagent/napalm,/datum/reagent/hellwater,/datum/reagent/plasma,/datum/reagent/plasma_dust)
var/active = 0
/obj/item/weapon/reagent_containers/food/drinks/bottle/molotov/CheckParts(list/parts_list)
..()
var/obj/item/weapon/reagent_containers/food/drinks/bottle/B = locate() in contents
if(B)
icon_state = B.icon_state
B.reagents.copy_to(src, 100)
if(!B.isGlass)
desc += " You're not sure if making this out of a carton was the brightest idea."
isGlass = 0
/obj/item/weapon/reagent_containers/food/drinks/bottle/molotov/throw_impact(atom/target,mob/thrower)
var/firestarter = 0
for(var/datum/reagent/R in reagents.reagent_list)
for(var/A in accelerants)
if(istype(R, A))
firestarter = 1
break
SplashReagents(target)
if(firestarter && active)
target.fire_act()
new /obj/effect/hotspot(get_turf(target))
..()
/obj/item/weapon/reagent_containers/food/drinks/bottle/molotov/attackby(obj/item/I, mob/user, params)
if(is_hot(I) && !active)
active = 1
var/turf/bombturf = get_turf(src)
var/area/bombarea = get_area(bombturf)
message_admins("[key_name(user)]<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A> has primed a [name] for detonation at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[bombarea] (JMP)</a>.")
log_game("[key_name(user)] has primed a [name] for detonation at [bombarea] ([bombturf.x],[bombturf.y],[bombturf.z]).")
to_chat(user, "<span class='info'>You light [src] on fire.</span>")
overlays += fire_overlay
if(!isGlass)
spawn(50)
if(active)
var/counter
var/target = loc
for(counter = 0, counter < 2, counter++)
if(istype(target, /obj/item/weapon/storage))
var/obj/item/weapon/storage/S = target
target = S.loc
if(istype(target, /atom))
var/atom/A = target
SplashReagents(A)
A.fire_act()
qdel(src)
/obj/item/weapon/reagent_containers/food/drinks/bottle/molotov/attack_self(mob/user)
if(active)
if(!isGlass)
to_chat(user, "<span class='danger'>The flame's spread too far on it!</span>")
return
to_chat(user, "<span class='info'>You snuff out the flame on \the [src].</span>")
overlays -= fire_overlay
active = 0
+1 -1
View File
@@ -153,7 +153,7 @@
var/see_ghosts = 0 //for the spoop of it
/obj/item/device/camera/spooky/CheckParts()
/obj/item/device/camera/spooky/CheckParts(list/parts_list)
..()
var/obj/item/device/camera/C = locate(/obj/item/device/camera) in contents
if(C)
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 246 KiB

After

Width:  |  Height:  |  Size: 247 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 166 KiB

After

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 164 KiB

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 113 KiB

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 113 KiB

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 57 KiB