mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-01-29 19:00:38 +00:00
* refactor: Attack chain, initial setup. * migrate curtain to make dreamchecker happy * update thurible * don't call attacked_by separately for legacy attack chain * remove duplicate proc * condense similar code, put allowances for legacy code in new procs * update docs, include diagram source * add comment on how to update diagram * fix admonition * mindflayer updates * remove commented out code * clarify all steps * after_attack should be overridable * whoops * retrofit recent changes * duh, can't restrict this yet because of tool_acts * i hate ore bags with the fire of a thousand suns * return correct value for object attack logic * Various cleanups. We don't want to attempt to pull stuff out of `/obj/item/attackby`, because those pieces are part of the related objects' migrations, not `/obj/item` itself. Attempting to do this causes knockon effects where things expected to call e.g. `/obj/item/storage/attackby` in the call chain were not ferried over to the new item interaction code, because the related objects hadn't actually been migrated over yet. I've used refactoring /obj/vehicle as the example for migrating `attackby` methods instead. * simplify some argument names * fuck it * make it do the thing * Rename CI module call * Prove that CI works * improve test output * aaand fix it again * fix curtain tool interactions * fix compile error * fix compile error * Better docs, introduce migration plan tool.
45 lines
1.2 KiB
Plaintext
45 lines
1.2 KiB
Plaintext
/obj/item/gun/rocketlauncher
|
|
var/projectile
|
|
name = "rocket launcher"
|
|
desc = "A rocket propelled grenade launcher. Holds one shell at a time."
|
|
icon_state = "rocket"
|
|
item_state = "rocket"
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
throw_speed = 2
|
|
throw_range = 3
|
|
force = 15
|
|
flags = CONDUCT
|
|
origin_tech = "combat=6;syndicate=7"
|
|
fire_sound = 'sound/weapons/blastcannon.ogg'
|
|
fire_delay = 40
|
|
recoil = 2
|
|
var/missile_speed = 2
|
|
var/missile_range = 30
|
|
|
|
|
|
/obj/item/gun/rocketlauncher/Initialize(mapload)
|
|
. = ..()
|
|
AddComponent(/datum/component/scope, range_modifier = 2, flags = SCOPE_TURF_ONLY | SCOPE_NEED_ACTIVE_HAND)
|
|
|
|
/obj/item/gun/rocketlauncher/examine(mob/user)
|
|
. = ..()
|
|
. += "<span class='notice'>It is currently [chambered ? "" : "un"]loaded.</span>"
|
|
|
|
|
|
/obj/item/gun/rocketlauncher/attackby__legacy__attackchain(obj/item/I, mob/user, params)
|
|
if(!istype(I, /obj/item/ammo_casing/rocket))
|
|
return ..()
|
|
if(!chambered)
|
|
user.unEquip(I)
|
|
I.forceMove(src)
|
|
chambered = I
|
|
to_chat(user, "<span class='notice'>You put the rocket in [src].</span>")
|
|
else
|
|
to_chat(user, "<span class='notice'>[src] cannot hold another rocket.</span>")
|
|
|
|
/obj/item/gun/rocketlauncher/process_chamber()
|
|
QDEL_NULL(chambered)
|
|
|
|
/obj/item/gun/rocketlauncher/can_shoot()
|
|
return chambered
|