Changes

Add shelling and torpedo damage
Line 16: Line 16:  
--  http://wikiwiki.jp/kancolle/?%BB%D9%B1%E7%B4%CF%C2%E2
 
--  http://wikiwiki.jp/kancolle/?%BB%D9%B1%E7%B4%CF%C2%E2
 
--  
 
--  
 +
 +
local engagement_modifiers = {
 +
green_t = 1.2,
 +
parallel = 1.0,
 +
head_on = 0.8,
 +
red_t = 0.6
 +
}
 +
 +
local spotting_modifiers = {
 +
cut_in = {
 +
main_second = 1.1,
 +
main_radar = 1.2,
 +
main_ap = 1.3,
 +
main_main = 1.5,
 +
},
 +
double = 1.2
 +
}
 +
 +
local comined_fp = {
 +
ctf_first = 0,
 +
ctf_second = 10,
 +
stf_first = 10,
 +
stf_second = -5
 +
}
 +
 +
local comined_torp = -5
 +
 +
local formation_modifiers = {
 +
line_ahead = 1.0,
 +
double_line = 0.8,
 +
diamond = 0.7,
 +
echelon = 0.6,
 +
line_abreast = 0.6,
 +
combined = {
 +
line_ahead = 1.1,
 +
diamond = 0.7,
 +
double_line = 1.0,
 +
line_abreast = 0.8,
 +
}
 +
}
 +
 +
local health_modifiers = {
 +
normal = 1.0,
 +
chuuha = 0.7,
 +
taiha = 0.4
 +
}
 +
 +
function ammo_modifier(ammo)
 +
return ammo >= 5 and 1 or ammo / 5
 +
end
 +
 +
local ap_modifiers = {
 +
main_ap = 1.08,
 +
main_ap_radar = 1.1,
 +
main_second_ap = 1.15,
 +
main_second_ap_radar = 1.15
 +
}
 +
 +
local critical_modifier = 1.5
 +
 +
local anti_ground_modifier = 2.5
 +
local anti_ground_wg_bonus = 75
 +
 +
local db_cap = 150
 +
local nb_cap = 300
 +
 +
local equip_coeffs = {
 +
small_gun = 1,
 +
medium_gun = 1,
 +
main_gun = 1.5,
 +
ap = 1,
 +
torpedo = 1.2,
 +
}
 +
 +
function default_modifiers(critical)
 +
return {
 +
combined_fp = 0,
 +
combined_torp = 0,
 +
anti_ground_bonus = 0,
 +
engagement = engagement_modifiers.parallel,
 +
formation = formation_modifiers.line_ahead,
 +
health = health_modifiers.normal,
 +
anti_ground = 1,
 +
anti_sub = 1,
 +
night = 1,
 +
cap = db_cap,
 +
spotting = 1,
 +
contact = 1,
 +
expert = 1,
 +
critical = critical and critical_modifier or 1,
 +
ap = 1,
 +
ammo = 1,
 +
}
 +
end
 +
 +
function shelling_attack_power(fp, equip_bonus, modifiers)
 +
return 5 + fp + equip_bonus + modifiers.combined_fp + modifiers.anti_ground_bonus
 +
end
 +
 +
function torpedo_attack_power(torp, equip_bonus, modifiers)
 +
return 5 + torp + equip_bonus + modifiers.combined_torp
 +
end
 +
 +
function damage_pre_cap(attack_power, modifiers)
 +
return
 +
modifiers.engagement * modifiers.formation * modifiers.health *
 +
modifiers.anti_ground * modifiers.anti_sub *
 +
modifiers.night *
 +
attack_power
 +
end
 +
 +
function damage_cap(attack_power, modifiers)
 +
if attack_power > modifiers.cap then
 +
attack_power = modifiers.cap + math.sqrt(attack_power - modifiers.cap)
 +
end
 +
return math.floor(attack_power)
 +
end
 +
 +
function damage_post_cap(attack_power, modifiers, armor)
 +
attack_power =
 +
modifiers.spotting * modifiers.contact *
 +
math.floor(modifiers.expert * modifiers.critical *
 +
math.floor(modifiers.ap * attack_power))
 +
if armor then
 +
local min_armor = armor * 0.7
 +
local max_armor = armor * 0.7 + math.max(armor - 1, 0) * 0.6
 +
local min = math.floor((attack_power - max_armor) * modifiers.ammo)
 +
local max = math.floor((attack_power - min_armor) * modifiers.ammo)
 +
return { min, max }
 +
else
 +
return math.floor(attack_power * modifiers.ammo)
 +
end
 +
end
 +
 +
function damage(attack_power, modifiers, armor)
 +
return damage_post_cap(damage_cap(damage_pre_cap(attack_power, modifiers), modifiers), modifiers, armor)
 +
end
    
-- * CI rate formula.
 
-- * CI rate formula.
cssedit, gkautomate
6,926

edits