248k_2/prototypes/grenades.lua
2022-05-27 13:24:35 +02:00

246 lines
No EOL
5.7 KiB
Lua

local function sprite(name)
return '__248k__/ressources/grenade/'..name
end
local el_explosion = table.deepcopy(data.raw['explosion']['grenade-explosion'])
el_explosion.name = 'el_grenade-explosion'
local el_grenade = table.deepcopy(data.raw['projectile']['grenade'])
el_grenade.name = 'el_grenade'
el_grenade.action = {
{
type = 'direct',
action_delivery = {
type = 'instant',
target_effects = {
{
type = 'create-entity',
entity_name = 'el_grenade-explosion',
trigger_created_entity = true
}
}
}
},
---note here
{
type = 'cluster',
cluster_count = 16,
distance = 7.5,
distance_deviation = 1,
action_delivery = {
{
type = 'beam',
add_to_shooter = false,
duration = 15,
beam = 'electric-beam-no-sound',
max_length = 16,
source_offset = {0, -0.5}
}
}
},
{
type = 'area',
radius = 7.5,
force = 'not-same',
action_delivery = {
{
type = 'instant',
target_effects = {
{
type = 'damage',
damage = {
amount = 40,
type = 'explosion'
}
},
{
type = 'create-sticker',
sticker = 'stun-sticker'
},
{
type = "push-back",
distance = 4
}
}
}
}
}
}
local el_capsule = table.deepcopy(data.raw['capsule']['grenade'])
el_capsule.name = 'el_grenade'
el_capsule.icon_size = 64
el_capsule.icon = sprite("el_grenade.png")
el_capsule.capsule_action.attack_parameters.ammo_type.action[3] = {
type = "direct",
action_delivery =
{
type = "projectile",
projectile = "el_grenade",
starting_speed = 0.3
}
}
data:extend{el_explosion, el_grenade, el_capsule}
local fi_explosion = table.deepcopy(data.raw['explosion']['grenade-explosion'])
fi_explosion.name = 'fi_grenade-explosion'
local fi_grenade = table.deepcopy(data.raw['projectile']['grenade'])
fi_grenade.name = 'fi_grenade'
fi_grenade.action = {
{
type = 'direct',
action_delivery = {
type = 'instant',
target_effects = {
{
type = 'create-entity',
entity_name = 'fi_grenade-explosion',
trigger_created_entity = true
}
}
}
},
---note here
{
type = 'cluster',
cluster_count = 24,
distance = 9,
distance_deviation = 1,
action_delivery = {
{
type = 'beam',
add_to_shooter = false,
duration = 15,
beam = 'electric-beam-no-sound',
max_length = 16,
source_offset = {0, -0.5}
}
}
},
{
type = 'area',
radius = 9,
force = 'not-same',
action_delivery = {
{
type = 'instant',
target_effects = {
{
type = 'damage',
damage = {
amount = 200,
type = 'explosion'
}
},
{
type = 'create-sticker',
sticker = 'stun-sticker'
},
{
type = "push-back",
distance = 4
}
}
}
}
}
}
local fi_capsule = table.deepcopy(data.raw['capsule']['grenade'])
fi_capsule.name = 'fi_grenade'
fi_capsule.icon_size = 64
fi_capsule.icon = sprite("fi_grenade.png")
fi_capsule.capsule_action.attack_parameters.ammo_type.action[3] = {
type = "direct",
action_delivery =
{
type = "projectile",
projectile = "fi_grenade",
starting_speed = 0.3
}
}
data:extend{fi_explosion, fi_grenade, fi_capsule}
local fu_explosion = table.deepcopy(data.raw['explosion']['grenade-explosion'])
fu_explosion.name = 'fu_grenade-explosion'
local fu_grenade = table.deepcopy(data.raw['projectile']['grenade'])
fu_grenade.name = 'fu_grenade'
fu_grenade.action = {
{
type = 'direct',
action_delivery = {
type = 'instant',
target_effects = {
{
type = 'create-entity',
entity_name = 'fu_grenade-explosion',
trigger_created_entity = true
}
}
}
},
---note here
{
type = 'cluster',
cluster_count = 32,
distance = 12,
distance_deviation = 1,
action_delivery = {
{
type = 'beam',
add_to_shooter = false,
duration = 15,
beam = 'electric-beam-no-sound',
max_length = 16,
source_offset = {0, -0.5}
}
}
},
{
type = 'area',
radius = 12,
force = 'not-same',
action_delivery = {
{
type = 'instant',
target_effects = {
{
type = 'damage',
damage = {
amount = 1000,
type = 'explosion'
}
},
{
type = 'create-sticker',
sticker = 'stun-sticker'
},
{
type = "push-back",
distance = 6
}
}
}
}
}
}
local fu_capsule = table.deepcopy(data.raw['capsule']['grenade'])
fu_capsule.name = 'fu_grenade'
fu_capsule.icon_size = 64
fu_capsule.icon = sprite("fu_grenade.png")
fu_capsule.capsule_action.attack_parameters.ammo_type.action[3] = {
type = "direct",
action_delivery =
{
type = "projectile",
projectile = "fu_grenade",
starting_speed = 0.3
}
}
data:extend{fu_explosion, fu_grenade, fu_capsule}