Skip to content

Commit b4363f5

Browse files
authored
Proto-Kinetic Pump-Shotgun (#37192)
* wip shotgun * protoclown pumpquackgun * quack * quack2
1 parent 7411e5b commit b4363f5

File tree

9 files changed

+71
-23
lines changed

9 files changed

+71
-23
lines changed

code/game/machinery/vending.dm

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3587,6 +3587,7 @@ var/global/num_vending_terminals = 1
35873587
/obj/item/weapon/pickaxe/silver = 1,
35883588
/obj/item/weapon/pickaxe/gold = 1,
35893589
/obj/item/weapon/pickaxe/diamond = 1,
3590+
/obj/item/device/modkit/kineticshotgun = 1,
35903591
/obj/item/borg/upgrade/hook = 1,
35913592
)
35923593
prices = list(
@@ -3612,6 +3613,7 @@ var/global/num_vending_terminals = 1
36123613
/obj/item/weapon/gun/hookshot = 300,
36133614
/obj/item/weapon/lazarus_injector/advanced = 150,
36143615
/obj/item/weapon/pickaxe/diamond = 300,
3616+
/obj/item/device/modkit/kineticshotgun = 250,
36153617
/obj/item/borg/upgrade/hook = 300,
36163618
)
36173619

code/game/objects/items/devices/modkit.dm

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,3 +197,19 @@
197197
parts[1] = 1
198198
original[1] = /obj/item/weapon/fireaxe
199199
finished[1] = /obj/item/weapon/fireaxe/antimatter
200+
201+
/obj/item/device/modkit/kineticshotgun
202+
name = "proto-kinetic pump-shotgun conversion kit"
203+
desc = "A set of tools that enables conversion of a proto-kinetic accelerator into a proto-kinetic pump-shotgun, capable of pump-action self-charging."
204+
icon_state = "modkit_kinetic"
205+
item_state = "modkit"
206+
207+
/obj/item/device/modkit/kineticshotgun/New()
208+
..()
209+
parts = new/list(1)
210+
original = new/list(1)
211+
finished = new/list(1)
212+
213+
parts[1] = 1
214+
original[1] = /obj/item/weapon/gun/energy/kinetic_accelerator
215+
finished[1] = /obj/item/weapon/gun/energy/kinetic_accelerator/shotgun

code/modules/projectiles/guns/energy/special.dm

Lines changed: 39 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -507,29 +507,54 @@
507507
desc = "According to Nanotrasen accounting, this is mining equipment. It's been modified for extreme power output to crush rocks, but often serves as a miner's first defense against hostile alien life; it's not very powerful unless used in a low pressure environment."
508508
icon_state = "kineticgun"
509509
item_state = "kineticgun"
510+
inhand_states = list("left_hand" = 'icons/mob/in-hand/left/guns.dmi', "right_hand" = 'icons/mob/in-hand/right/guns.dmi')
510511
fire_sound = 'sound/weapons/kinetic_accelerator.ogg'
511512
projectile_type = "/obj/item/projectile/kinetic"
512513
cell_type = "/obj/item/weapon/cell/crap"
513514
charge_cost = 50
514515
icon_charge_multiple = 20
516+
517+
/obj/item/weapon/gun/energy/kinetic_accelerator/shotgun
518+
name = "proto-kinetic pump-shotgun"
519+
desc = "An upgraded proto-kinetic accelerator, with the ability to pump to reload."
520+
icon_state = "kineticshotgun"
521+
item_state = "kineticshotgun"
522+
rechargeable = FALSE
523+
charge_cost = 250
524+
icon_charge_multiple = 50
525+
clowned = CLOWNABLE
515526
var/overheat = 0
516-
var/recent_reload = 1
517-
/*
518-
/obj/item/weapon/gun/energy/kinetic_accelerator/shoot_live_shot()
527+
var/pump_delay = 20 //cooldown after last real shot in decaseconds before reloading
528+
529+
/obj/item/weapon/gun/energy/kinetic_accelerator/shotgun/attack_self(var/mob/living/user)
530+
. = ..()
531+
if(overheat)
532+
to_chat(user, span_warning("The pump-recharger is still cooling down!"))
533+
return
519534
overheat = 1
520-
spawn(20)
535+
var/image/lightning_effect = image('icons/effects/effects.dmi', src, "shield2")
536+
overlays += lightning_effect
537+
spawn(5)
538+
overlays -= lightning_effect
539+
if(clowned == CLOWNED)
540+
playsound(src.loc, 'sound/items/bikehorn.ogg', 50, 1)
541+
else
542+
playsound(src.loc, 'sound/weapons/shotgunpump.ogg', 50, 1)
543+
power_supply.give(power_supply.maxcharge)
544+
update_icon()
545+
spawn(pump_delay)
521546
overheat = 0
522-
recent_reload = 0
547+
548+
/obj/item/weapon/gun/energy/kinetic_accelerator/shotgun/update_icon()
523549
..()
524-
*/
525-
/obj/item/weapon/gun/energy/kinetic_accelerator/attack_self(var/mob/living/user)
526-
if(overheat || recent_reload)
527-
return
528-
power_supply.give(500)
529-
playsound(src.loc, 'sound/weapons/shotgunpump.ogg', 60, 1)
530-
recent_reload = 1
531-
update_icon()
532-
return
550+
if(clowned == CLOWNED)
551+
fire_sound = 'sound/items/quack.ogg'
552+
empty_sound = 'sound/items/quack.ogg'
553+
hitsound = 'sound/items/bikehorn.ogg'
554+
else
555+
fire_sound = 'sound/weapons/kinetic_accelerator.ogg'
556+
empty_sound = 'sound/weapons/empty.ogg'
557+
hitsound = 'sound/weapons/smash.ogg'
533558

534559
/obj/item/weapon/gun/energy/kinetic_accelerator/cyborg
535560
name = "proto-kinetic accelerator"

code/modules/projectiles/projectile/special.dm

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,10 @@
135135
damage = 15
136136
damage_type = BRUTE
137137
flag = "energy"
138-
var/range = 2
139138
fire_sound = 'sound/weapons/Taser.ogg'
139+
color = "#a7ff96"
140+
var/low_pressure_bonus = 15 //bonus in pressures below 50kpa
141+
var/monster_bonus = 0 //bonus against simple_animals (roid mobs) and xenos
140142

141143
/obj/item/projectile/kinetic/New()
142144
var/turf/proj_turf = get_turf(src)
@@ -146,7 +148,8 @@
146148
var/pressure = environment.return_pressure()
147149
if(pressure < 50)
148150
name = "full strength kinetic force"
149-
damage += 15
151+
damage += low_pressure_bonus
152+
color = "#ccffff"// "#ff4444"
150153
..()
151154

152155
/* wat - N3X
@@ -170,6 +173,8 @@
170173
..(target,blocked)
171174

172175
/obj/item/projectile/kinetic/to_bump(atom/A as mob|obj|turf|area)
176+
if(istype(A, /mob/living/simple_animal) || istype(A, /mob/living/carbon/alien))
177+
damage += monster_bonus
173178
if(!loc)
174179
return
175180
if(A == firer)
@@ -185,6 +190,7 @@
185190
var/turf/unsimulated/mineral/M = target_turf
186191
if(M.mining_difficulty < MINE_DIFFICULTY_TOUGH)
187192
M.GetDrilled()
193+
new /obj/item/effect/kinetic_blast(target_turf)
188194
// Now we bump as a bullet, if the atom is a non-turf.
189195
if(!isturf(A))
190196
..(A)
@@ -196,6 +202,12 @@
196202
qdel(src)
197203
return 0
198204

205+
/obj/item/projectile/kinetic/shotgun
206+
low_pressure_bonus = 25
207+
208+
/obj/item/projectile/kinetic/cutter
209+
monster_bonus = 15
210+
199211
/obj/item/effect/kinetic_blast
200212
name = "kinetic explosion"
201213
icon = 'icons/obj/projectiles.dmi'
@@ -207,13 +219,6 @@
207219
spawn(4)
208220
qdel(src)
209221

210-
/obj/item/projectile/kinetic/cutter
211-
212-
/obj/item/projectile/kinetic/cutter/to_bump(atom/A)
213-
if(istype(A, /mob/living/simple_animal) || istype(A, /mob/living/carbon/alien))
214-
damage += 15
215-
..()
216-
217222
/obj/item/projectile/stickybomb
218223
icon = 'icons/obj/projectiles_experimental.dmi'
219224
icon_state = "stickybomb"

icons/mob/in-hand/left/guns.dmi

677 Bytes
Binary file not shown.

icons/mob/in-hand/right/guns.dmi

600 Bytes
Binary file not shown.

icons/obj/device.dmi

741 Bytes
Binary file not shown.

icons/obj/gun.dmi

2.09 KB
Binary file not shown.

icons/obj/projectiles.dmi

-25.3 KB
Binary file not shown.

0 commit comments

Comments
 (0)