mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-24 05:30:05 +01:00
crossbow, speargun, and grenade updates
This commit is contained in:
@@ -137,9 +137,10 @@ var/list/uplink_items = list()
|
||||
surplus = 0
|
||||
|
||||
/datum/uplink_item/dangerous/crossbow
|
||||
name = "Miniature Auto Crossbow"
|
||||
desc = "A short bow mounted across a tiller in miniature. Small enough to fit into a pocket or slip into a bag unnoticed. It fires bolts tipped with a paralyzing toxin collected from a rare organism."
|
||||
item = /obj/item/weapon/gun/projectile/automatic/crossbow
|
||||
name = "Miniature Energy Crossbow"
|
||||
desc = "A short bow mounted across a tiller in miniature. Small enough to fit into a pocket or slip into a bag unnoticed. It fires bolts tipped with a paralyzing toxin collected from a rare organism. \
|
||||
The bow generates bolts using an internal power source but must be manually charged between shots."
|
||||
item = /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow
|
||||
cost = 10
|
||||
excludefrom = list(/datum/game_mode/nuclear)
|
||||
surplus = 50
|
||||
@@ -230,13 +231,6 @@ var/list/uplink_items = list()
|
||||
item = /obj/item/ammo_box/magazine/m10mm
|
||||
cost = 1
|
||||
|
||||
/datum/uplink_item/ammo/crossbow
|
||||
name = "Poison-tipped Crossbow Bolts (x4)"
|
||||
desc = "A four pack of paralyzing crossbow bolts, for hunting big game."
|
||||
item = /obj/item/ammo_box/crossbow
|
||||
cost = 2
|
||||
excludefrom = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/ammo/revolver
|
||||
name = "Speed Loader - .357"
|
||||
desc = "A speed loader that contains seven additional .357 Magnum rounds for the syndicate revolver. For when you really need a lot of things dead."
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//In this file: Summon Magic/Summon Guns/Summon Events
|
||||
|
||||
/proc/rightandwrong(var/summon_type, var/mob/user, var/survivor_probability) //0 = Summon Guns, 1 = Summon Magic
|
||||
var/list/gunslist = list("taser","egun","laser","revolver","detective","c20r","nuclear","deagle","gyrojet","pulse","suppressed","cannon","doublebarrel","shotgun","combatshotgun","bulldog","mateba","sabr","uzi","crossbow","saw","car")
|
||||
var/list/gunslist = list("taser","egun","laser","revolver","detective","c20r","nuclear","deagle","gyrojet","pulse","suppressed","cannon","doublebarrel","shotgun","combatshotgun","bulldog","mateba","sabr","uzi","crossbow","saw","car","speargun")
|
||||
var/list/magiclist = list("fireball","smoke","blind","mindswap","forcewall","knock","horsemask","charge", "summonitem", "wandnothing", "wanddeath", "wandresurrection", "wandpolymorph", "wandteleport", "wanddoor", "wandfireball", "staffchange", "staffhealing", "armor", "scrying", "staffdoor", "special")
|
||||
var/list/magicspeciallist = list("staffchange","staffanimation", "wandbelt", "contract", "staffchaos")
|
||||
|
||||
@@ -68,11 +68,13 @@
|
||||
if("sabr")
|
||||
new /obj/item/weapon/gun/projectile/automatic(get_turf(H))
|
||||
if("crossbow")
|
||||
new /obj/item/weapon/gun/projectile/automatic/crossbow(get_turf(H))
|
||||
new /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow(get_turf(H))
|
||||
if("saw")
|
||||
new /obj/item/weapon/gun/projectile/automatic/l6_saw(get_turf(H))
|
||||
if("car")
|
||||
new /obj/item/weapon/gun/projectile/automatic/m90(get_turf(H))
|
||||
if("speargun")
|
||||
new /obj/item/weapon/gun/projectile/automatic/speargun(get_turf(H))
|
||||
else
|
||||
switch (randomizemagic)
|
||||
if("fireball")
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
message_admins("[key_name(usr)]<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A> has primed a [name] for detonation at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a>.")
|
||||
log_game("[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]).")
|
||||
user << "<span class='warning'>You prime the [name]! [det_time / 10] second\s!</span>"
|
||||
playsound(user.loc, 'sound/weapons/armbomb.ogg', 60, 1)
|
||||
active = 1
|
||||
icon_state = initial(icon_state) + "_active"
|
||||
if(iscarbon(user))
|
||||
|
||||
@@ -58,6 +58,7 @@
|
||||
if(!active)
|
||||
if(clown_check(user))
|
||||
user << "<span class='warning'>You prime the [name]! [det_time/10] seconds!</span>"
|
||||
playsound(user.loc, 'sound/weapons/armbomb.ogg', 60, 1)
|
||||
active = 1
|
||||
icon_state = initial(icon_state) + "_active"
|
||||
add_fingerprint(user)
|
||||
|
||||
@@ -276,7 +276,7 @@
|
||||
|
||||
add_fingerprint(usr)
|
||||
|
||||
if(!prevent_warning && !istype(W, /obj/item/weapon/gun/projectile/automatic/crossbow))
|
||||
if(!prevent_warning && !istype(W, /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow))
|
||||
for(var/mob/M in viewers(usr, null))
|
||||
if(M == usr)
|
||||
usr << "<span class='notice'>You put [W] [preposition]to [src].</span>"
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
return
|
||||
|
||||
if("stealth")
|
||||
new /obj/item/weapon/gun/projectile/automatic/crossbow(src)
|
||||
new /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow(src)
|
||||
new /obj/item/weapon/pen/sleepy(src)
|
||||
new /obj/item/device/chameleon(src)
|
||||
return
|
||||
|
||||
@@ -796,7 +796,7 @@ var/global/list/g_fancy_list_of_types = null
|
||||
qdel(briefcase_item)
|
||||
for(var/i=3, i>0, i--)
|
||||
sec_briefcase.contents += new /obj/item/weapon/spacecash/c1000
|
||||
sec_briefcase.contents += new /obj/item/weapon/gun/projectile/automatic/crossbow
|
||||
sec_briefcase.contents += new /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow
|
||||
sec_briefcase.contents += new /obj/item/weapon/gun/projectile/revolver/mateba
|
||||
sec_briefcase.contents += new /obj/item/ammo_box/a357
|
||||
sec_briefcase.contents += new /obj/item/weapon/c4
|
||||
|
||||
@@ -342,7 +342,7 @@ mob/living/carbon/proc/handle_hallucinations()
|
||||
return
|
||||
|
||||
var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/projectile, /obj/item/ammo_box/a357,\
|
||||
/obj/item/weapon/gun/projectile/automatic/crossbow, /obj/item/weapon/melee/energy/sword/saber,\
|
||||
/obj/item/weapon/gun/energy/kinetic_accelerator/crossbow, /obj/item/weapon/melee/energy/sword/saber,\
|
||||
/obj/item/weapon/storage/box/syndicate, /obj/item/weapon/storage/box/emps,\
|
||||
/obj/item/weapon/cartridge/syndicate, /obj/item/clothing/under/chameleon,\
|
||||
/obj/item/clothing/shoes/syndigaloshes, /obj/item/weapon/card/id/syndicate,\
|
||||
|
||||
@@ -165,10 +165,11 @@
|
||||
icon_state = "40mmHE"
|
||||
projectile_type = /obj/item/projectile/bullet/a40mm
|
||||
|
||||
/obj/item/ammo_casing/caseless/bolt //xbow
|
||||
name = "poison crossbow bolt"
|
||||
desc = "A reusable crossbow bolt tipped with specialized carpotoxin."
|
||||
projectile_type = /obj/item/projectile/energy/bolt
|
||||
caliber = "crossbow"
|
||||
icon = 'icons/obj/projectiles.dmi'
|
||||
icon_state = "cbbolt"
|
||||
/obj/item/ammo_casing/caseless/magspear
|
||||
name = "magnetic spear"
|
||||
desc = "A reusable spear that is typically loaded into kinetic spearguns."
|
||||
projectile_type = /obj/item/projectile/bullet/magspear
|
||||
caliber = "speargun"
|
||||
icon_state = "magspear"
|
||||
throwforce = 15 //still deadly when thrown
|
||||
throw_speed = 3
|
||||
@@ -38,10 +38,4 @@
|
||||
icon_state = "40mm"
|
||||
ammo_type = /obj/item/ammo_casing/a40mm
|
||||
max_ammo = 4
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_box/crossbow
|
||||
name = "ammo box (crossbow bolts)"
|
||||
icon_state = "xbow"
|
||||
ammo_type = /obj/item/ammo_casing/caseless/bolt
|
||||
max_ammo = 4
|
||||
multiple_sprites = 1
|
||||
@@ -124,4 +124,14 @@
|
||||
|
||||
/obj/item/ammo_casing/energy/wormhole/orange
|
||||
projectile_type = /obj/item/projectile/beam/wormhole/orange
|
||||
select_name = "orange"
|
||||
select_name = "orange"
|
||||
|
||||
/obj/item/ammo_casing/energy/bolt
|
||||
projectile_type = /obj/item/projectile/energy/bolt
|
||||
select_name = "bolt"
|
||||
e_cost = 500
|
||||
fire_sound = 'sound/weapons/Genhit.ogg'
|
||||
|
||||
/obj/item/ammo_casing/energy/bolt/large
|
||||
projectile_type = /obj/item/projectile/energy/bolt/large
|
||||
select_name = "heavy bolt"
|
||||
@@ -90,14 +90,11 @@
|
||||
ammo_type = /obj/item/ammo_casing/a40mm
|
||||
max_ammo = 6
|
||||
|
||||
/obj/item/ammo_box/magazine/internal/cylinder/crossbow
|
||||
name = "autocrossbow internal magazine"
|
||||
ammo_type = /obj/item/ammo_casing/caseless/bolt
|
||||
caliber = "crossbow"
|
||||
max_ammo = 10
|
||||
|
||||
/obj/item/ammo_box/magazine/internal/cylinder/crossbow/large
|
||||
max_ammo = 15
|
||||
/obj/item/ammo_box/magazine/internal/cylinder/speargun
|
||||
name = "speargun internal magazine"
|
||||
ammo_type = /obj/item/ammo_casing/caseless/magspear
|
||||
caliber = "speargun"
|
||||
max_ammo = 1
|
||||
|
||||
///////////EXTERNAL MAGAZINES////////////////
|
||||
|
||||
|
||||
@@ -119,15 +119,39 @@
|
||||
recent_reload = 0
|
||||
..()
|
||||
|
||||
/obj/item/weapon/gun/energy/kinetic_accelerator/attack_self(var/mob/living/user/L)
|
||||
/obj/item/weapon/gun/energy/kinetic_accelerator/attack_self(mob/living/user)
|
||||
if(overheat || recent_reload)
|
||||
return
|
||||
power_supply.give(500)
|
||||
playsound(src.loc, 'sound/weapons/kenetic_reload.ogg', 60, 1)
|
||||
if(!suppressed)
|
||||
playsound(src.loc, 'sound/weapons/kenetic_reload.ogg', 60, 1)
|
||||
else
|
||||
playsound(user, 'sound/weapons/kenetic_reload.ogg', 60, 1)
|
||||
recent_reload = 1
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/gun/energy/kinetic_accelerator/crossbow
|
||||
name = "mini energy crossbow"
|
||||
desc = "A weapon favored by syndicate stealth specialists."
|
||||
icon_state = "crossbow"
|
||||
item_state = "crossbow"
|
||||
w_class = 2
|
||||
m_amt = 2000
|
||||
origin_tech = "combat=2;magnets=2;syndicate=5"
|
||||
suppressed = 1
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/bolt)
|
||||
|
||||
/obj/item/weapon/gun/energy/kinetic_accelerator/crossbow/large
|
||||
name = "energy crossbow"
|
||||
desc = "A reverse engineered weapon using syndicate technology."
|
||||
icon_state = "crossbowlarge"
|
||||
w_class = 3
|
||||
m_amt = 4000
|
||||
origin_tech = "combat=2;magnets=2;syndicate=3" //can be further researched for more syndie tech
|
||||
suppressed = 0
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/bolt/large)
|
||||
|
||||
/obj/item/weapon/gun/energy/disabler
|
||||
name = "disabler"
|
||||
desc = "A self-defense weapon that exhausts organic targets, weakening them until they collapse."
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
/obj/item/weapon/gun/projectile/automatic/proc/burst_select()
|
||||
var/mob/living/carbon/human/user = usr
|
||||
select = !select
|
||||
if(select)
|
||||
if(!select)
|
||||
burst_size = 1
|
||||
fire_delay = 0
|
||||
user << "<span class='notice'>You switch to semi-automatic.</span>"
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
mag_type = /obj/item/ammo_box/magazine/m75
|
||||
burst_size = 1
|
||||
fire_delay = 0
|
||||
can_suppress = 0
|
||||
action_button_name = null
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/gyropistol/process_chamber(var/eject_casing = 0, var/empty_chamber = 1)
|
||||
@@ -44,44 +45,33 @@
|
||||
icon_state = "[initial(icon_state)][magazine ? "loaded" : ""]"
|
||||
return
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/crossbow
|
||||
name = "mini auto-crossbow"
|
||||
desc = "A weapon favored by syndicate stealth specialists. Fires specialized poison bolts."
|
||||
icon_state = "crossbow"
|
||||
item_state = "crossbow"
|
||||
w_class = 2
|
||||
m_amt = 2000
|
||||
origin_tech = "combat=2;magnets=2;syndicate=5"
|
||||
suppressed = 1
|
||||
mag_type = /obj/item/ammo_box/magazine/internal/cylinder/crossbow
|
||||
fire_sound = 'sound/weapons/genhit.ogg'
|
||||
/obj/item/weapon/gun/projectile/automatic/speargun
|
||||
name = "kinetic speargun"
|
||||
desc = "A weapon favored by carp hunters. Fires specialized spears using kinetic energy."
|
||||
icon_state = "speargun"
|
||||
item_state = "misteratmos" //professional asset reuse
|
||||
w_class = 4
|
||||
force = 10
|
||||
can_suppress = 0
|
||||
mag_type = /obj/item/ammo_box/magazine/internal/cylinder/speargun
|
||||
fire_sound = 'sound/weapons/grenadelaunch.ogg'
|
||||
burst_size = 1
|
||||
fire_delay = 0
|
||||
select = 0
|
||||
action_button_name = null
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/crossbow/update_icon()
|
||||
/obj/item/weapon/gun/projectile/automatic/speargun/update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/crossbow/attack_self()
|
||||
/obj/item/weapon/gun/projectile/automatic/speargun/attack_self()
|
||||
return
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/crossbow/process_chamber(var/eject_casing = 0, var/empty_chamber = 1)
|
||||
/obj/item/weapon/gun/projectile/automatic/speargun/process_chamber(var/eject_casing = 0, var/empty_chamber = 1)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/crossbow/attackby(var/obj/item/A, mob/user)
|
||||
/obj/item/weapon/gun/projectile/automatic/speargun/attackby(var/obj/item/A, mob/user)
|
||||
var/num_loaded = magazine.attackby(A, user, 1)
|
||||
if(num_loaded)
|
||||
user << "<span class='notice'>You load [num_loaded] bolt\s into \the [src].</span>"
|
||||
user << "<span class='notice'>You load [num_loaded] spear\s into \the [src].</span>"
|
||||
update_icon()
|
||||
chamber_round()
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/crossbow/large //holds twice the ammo of mini crossbows but can't be pocketed
|
||||
name = "auto crossbow"
|
||||
desc = "A weapon favored by carp hunters. Fires specialized poison bolts."
|
||||
icon_state = "crossbowlarge"
|
||||
w_class = 3
|
||||
force = 10
|
||||
m_amt = 4000
|
||||
suppressed = 0
|
||||
mag_type = /obj/item/ammo_box/magazine/internal/cylinder/crossbow/large
|
||||
chamber_round()
|
||||
@@ -21,6 +21,7 @@
|
||||
icon_state = "m1911"
|
||||
w_class = 3
|
||||
mag_type = /obj/item/ammo_box/magazine/m45
|
||||
can_suppress = 0
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/pistol/deagle
|
||||
name = "desert eagle"
|
||||
@@ -28,6 +29,7 @@
|
||||
icon_state = "deagle"
|
||||
force = 14
|
||||
mag_type = /obj/item/ammo_box/magazine/m50
|
||||
can_suppress = 0
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/pistol/deagle/update_icon()
|
||||
..()
|
||||
|
||||
@@ -196,7 +196,7 @@
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/shotgun/bulldog
|
||||
name = "syndicate shotgun"
|
||||
desc = "A compact, mag-fed burst-fire shotgun for combat in narrow corridors, nicknamed 'Bulldog' by boarding parties. Compatible only with specialized 8-round drum magazines."
|
||||
desc = "A semi-auto, mag-fed shotgun for combat in narrow corridors, nicknamed 'Bulldog' by boarding parties. Compatible only with specialized 8-round drum magazines."
|
||||
icon_state = "bulldog"
|
||||
item_state = "bulldog"
|
||||
w_class = 3.0
|
||||
@@ -206,22 +206,26 @@
|
||||
can_suppress = 0
|
||||
burst_size = 1
|
||||
fire_delay = 0
|
||||
action_button_name = null
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/shotgun/bulldog/New()
|
||||
..()
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/shotgun/bulldog/proc/update_magazine()
|
||||
if(magazine)
|
||||
src.overlays = 0
|
||||
overlays += "[magazine.icon_state]"
|
||||
return
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/shotgun/bulldog/update_icon()
|
||||
src.overlays = 0
|
||||
update_magazine()
|
||||
icon_state = "bulldog[chambered ? "" : "-e"]"
|
||||
return
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/shotgun/bulldog/afterattack()
|
||||
..()
|
||||
empty_alarm()
|
||||
return
|
||||
return
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
weaken = 5
|
||||
range = 7
|
||||
|
||||
/obj/item/projectile/energy/bolt //xbow bolts
|
||||
/obj/item/projectile/energy/bolt //ebow bolts
|
||||
name = "bolt"
|
||||
icon_state = "cbbolt"
|
||||
damage = 15
|
||||
@@ -61,13 +61,5 @@
|
||||
stutter = 5
|
||||
range = 7
|
||||
|
||||
/obj/item/projectile/energy/bolt/on_hit(var/atom/target, var/blocked = 0) //drop a bolt on hitting basically anything
|
||||
if(!proj_hit)
|
||||
proj_hit = 1
|
||||
new /obj/item/ammo_casing/caseless/bolt(src.loc)
|
||||
..()
|
||||
|
||||
/obj/item/projectile/energy/bolt/on_range() //drop a bolt after 7 tiles
|
||||
if(!proj_hit)
|
||||
new /obj/item/ammo_casing/caseless/bolt(src.loc)
|
||||
..()
|
||||
/obj/item/projectile/energy/bolt/large
|
||||
damage = 20
|
||||
@@ -178,3 +178,20 @@ obj/item/projectile/kinetic/New()
|
||||
name ="explosive slug"
|
||||
damage = 25
|
||||
weaken = 5
|
||||
|
||||
/obj/item/projectile/bullet/magspear
|
||||
name = "magnetic spear"
|
||||
desc = "WHITE WHALE, HOLY GRAIL"
|
||||
damage = 30 //takes 3 spears to kill a mega carp, one to kill a normal carp
|
||||
icon_state = "magspear"
|
||||
|
||||
/obj/item/projectile/bullet/magspear/on_hit(var/atom/target, var/blocked = 0)
|
||||
if(!proj_hit)
|
||||
proj_hit = 1
|
||||
new /obj/item/ammo_casing/caseless/magspear(src.loc)
|
||||
..()
|
||||
|
||||
/obj/item/projectile/bullet/magspear/on_range()
|
||||
if(!proj_hit)
|
||||
new /obj/item/ammo_casing/caseless/magspear(src.loc)
|
||||
..()
|
||||
@@ -75,8 +75,9 @@
|
||||
req_tech = list("combat" = 5, "materials" = 5, "engineering" = 3, "biotech" = 4, "syndicate" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("$metal" = 5000, "$glass" = 1500, "$uranium" = 1500, "$silver" = 1500)
|
||||
build_path = /obj/item/weapon/gun/projectile/automatic/crossbow/large
|
||||
build_path = /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow/large
|
||||
locked = 1
|
||||
reliability = 76
|
||||
category = list("Weapons")
|
||||
|
||||
/datum/design/temp_gun
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 54 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
Reference in New Issue
Block a user