|
|
|
@ -117,7 +117,7 @@ First, let's define a custom crossbow with its own custom reaction. The crossbow
|
|
|
|
|
[MATERIAL_SIZE:4]
|
|
|
|
|
[ATTACK:BLUNT:10000:4000:bash:bashes:NO_SUB:1250]
|
|
|
|
|
[ATTACK_PREPARE_AND_RECOVER:3:3]
|
|
|
|
|
[FIRE_TIME:100] custom token (you'll see)
|
|
|
|
|
[FIRE_RATE_MULTIPLIER:2] custom token (you'll see)
|
|
|
|
|
|
|
|
|
|
The reaction to make it (you would add the reaction and not the weapon to an entity raw): ::
|
|
|
|
|
|
|
|
|
@ -169,7 +169,27 @@ Then, we get the product number listed. Next, for every reagent, if the reagent
|
|
|
|
|
|
|
|
|
|
It's all a bit loose and hacky but it works, at least if you don't have multiple stacks filling up one reagent.
|
|
|
|
|
|
|
|
|
|
TODO: fire rate
|
|
|
|
|
Let's also make some code to modify the fire rate of the siege crossbow. ::
|
|
|
|
|
|
|
|
|
|
eventful.onProjItemCheckMovement[modId] = function(projectile)
|
|
|
|
|
if projectile.distance_flown > 0 then -- don't repeat this
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local firer = projectile.firer
|
|
|
|
|
if not firer then
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local weapon = df.item.find(projectile.bow_id)
|
|
|
|
|
if not weapon then
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local multiplier = tonumber(customRawTokens.getToken(weapon.subtype, "FIRE_RATE_MULTIPLIER")) or 1
|
|
|
|
|
firer.counters.think_counter = math.floor(firer.counters.think_counter * multiplier)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
TODO: "running shoes"
|
|
|
|
|
|
|
|
|
|
Your first whole mod
|
|
|
|
|