1
0
mirror of https://github.com/veden/Rampant.git synced 2025-01-05 22:53:24 +02:00
Rampant/prototypes/samples/healingBiter.lua
2021-11-23 19:45:28 -08:00

193 lines
4.8 KiB
Lua

local smallbiterscale = 0.5
local small_biter_tint1 = {r=0.56, g=0.46, b=0.42, a=0.65}
local small_biter_tint2 = {r=1, g=0.63, b=0, a=0.4}
data:extend({
{ -- this defines a damage type so resistances don't effect this damage
type = "damage-type",
name = "healing"
},
{ -- this defines your healing cloud
type = "smoke-with-trigger",
name = "healing-cloud-overlord",
flags = {"not-on-map"},
show_when_smoke_off = true,
animation =
{
filename = "__base__/graphics/entity/cloud/cloud-45-frames.png",
flags = { "compressed" },
priority = "low",
width = 256,
height = 256,
frame_count = 45,
animation_speed = 0.5,
line_length = 7,
scale = 3,
},
slow_down_factor = 0,
affected_by_wind = false,
cyclic = true,
duration = 60 * 5,
fade_away_duration = 5 * 60,
spread_duration = 10,
color = { r = 0.0, g = 0.0, b = 0.9, a = 0.2 },
action =
{
type = "direct",
action_delivery =
{
type = "instant",
target_effects =
{
type = "nested-result",
action =
{
type = "area",
perimeter = 11,
entity_flags = {"breaths-air"},
action_delivery =
{
type = "instant",
target_effects =
{
type = "damage",
damage = { amount = -2, type = "healing"}
}
}
}
}
}
},
action_cooldown = 30
},
{ -- this is your custom projectile that will create the healing cloud
type = "projectile",
name = "healing-orb-overlord",
flags = {"not-on-map"},
acceleration = 0.005,
action =
{
type = "direct",
action_delivery =
{
type = "instant",
target_effects =
{
{
type = "play-sound",
sound =
{
{
filename = "__base__/sound/creatures/projectile-acid-burn-1.ogg",
volume = 0.8
},
{
filename = "__base__/sound/creatures/projectile-acid-burn-2.ogg",
volume = 0.8
},
{
filename = "__base__/sound/creatures/projectile-acid-burn-long-1.ogg",
volume = 0.8
},
{
filename = "__base__/sound/creatures/projectile-acid-burn-long-2.ogg",
volume = 0.8
}
}
},
{
type = "create-entity",
entity_name = "healing-cloud-overlord"
}
}
}
},
animation =
{
filename = "__base__/graphics/entity/acid-projectile-purple/acid-projectile-purple.png",
line_length = 5,
width = 16,
height = 18,
frame_count = 33,
priority = "high"
},
shadow =
{
filename = "__base__/graphics/entity/acid-projectile-purple/acid-projectile-purple-shadow.png",
line_length = 5,
width = 28,
height = 16,
frame_count = 33,
priority = "high",
shift = {-0.09, 0.395}
},
rotatable = false
},
{
type = "unit",
name = "small-healing-biter-overlord",
icon = "__base__/graphics/icons/small-biter.png",
flags = {"placeable-player", "placeable-enemy", "placeable-off-grid", "breaths-air"},
max_health = 15,
order = "b-b-a",
subgroup="enemies",
healing_per_tick = 0.01,
collision_box = {{-0.2, -0.2}, {0.2, 0.2}},
selection_box = {{-0.4, -0.7}, {0.7, 0.4}},
attack_parameters = {
type = "projectile",
ammo_category = "rocket",
damage_modifier = 10,
cooldown = 150,
projectile_center = {0, 0},
projectile_creation_distance = 0.6,
range = 15, -- make this whatever distance you want the unit to stop at
animation = biterattackanimation(smallbiterscale, small_biter_tint1, small_biter_tint2),
sound = {
filename = "__base__/sound/fight/pulse.ogg",
volume = 0.7
},
ammo_type = {
type = "projectile",
category = "biological",
speed = 1,
action =
{
{
type = "direct",
action_delivery =
{
type = "projectile",
projectile = "healing-orb-overlord",
starting_speed = 0.5,
max_range = 1 -- the distance you want the cloud to appear from the unit
}
},
{
type = "direct",
action_delivery =
{
type = "projectile",
projectile = "acid-projectile-purple",
starting_speed = 0.5,
max_range = 15 -- should be whatever range you want the unit to shoot for
}
}
}
}
},
vision_distance = 30,
movement_speed = 0.2,
distance_per_frame = 0.1,
pollution_to_join_attack = 200,
distraction_cooldown = 300,
min_pursue_time = 10 * 60,
max_pursue_distance = 50,
corpse = "small-biter-corpse",
dying_explosion = "blood-explosion-small",
dying_sound = make_biter_dying_sounds(0.4),
working_sound = make_biter_calls(0.3),
run_animation = biterrunanimation(smallbiterscale, small_biter_tint1, small_biter_tint2)
}
})