2025-01-04 23:00:19 +08:00

219 lines
9.1 KiB
Lua
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

require("Script.Global.Table.ItemTable");
ESoldierType = {
SuicideSquad = 1, -- 敢死队
Sniper = 2, -- 狙击手
Rifleman = 3, -- 突击兵
MedicalCorps = 4, -- 医疗兵
Demolitions = 5, -- 爆破兵
Commander = 6, -- 指挥官
Volunteer = 7, -- 志愿兵
SpecialSoldier = 8, -- 特战兵
AntichemicalCorp = 9, -- 防化兵
HeavyCorp = 10, -- 重装兵
Archer = 11, -- 弓箭手
Musketeer = 12, -- 火枪手
Scout = 13, -- 侦察兵
};
ESoldierAddType = {
MaxHealth = 1;
Damage = 2;
Speed = 3;
Poison = 4;
Defence = 5;
Jump = 6;
};
ESoldierAddName = {
[ESoldierAddType.MaxHealth] = { "生命", 1 },
[ESoldierAddType.Damage] = { "伤害", 1 },
[ESoldierAddType.Speed] = { "速度", 1 },
[ESoldierAddType.Poison] = { "信号", 1 },
[ESoldierAddType.Defence] = { "防御", 1 },
[ESoldierAddType.Jump] = { "跳跃", 1 },
}
--- 默认添加的物品
SoldierCommonInfo = {
Bombs = { Grenade = 1, FireBomb = 1, StunGrenade = 0, SmokeBomb = 1, },
Medications = { Drink = 1, Injection = 0, Pills = 1, Bandage = 5, FirstAid = 1 },
Bag = EBagType.Bag1,
}
SoldierConfig = {
[ESoldierType.SuicideSquad] = {
Benefit = { MaxHealth = 1.5, Damage = 1.5, Speed = 1.5, },
Info = { Name = "冲锋兵", ShortDesc = "血厚-高伤-高移速", Desc = "勇猛向前,无惧困难\n技能:无敌\n可在短时间内无敌", },
LimitCount = -1,
Weapons = {
Main = { EWeaponTypeNew.EWeaponTypeNew_Melee },
Bomb = { StunGrenade = 1, SmokeBomb = -1, } -- 相较于普通兵种来说
},
Medications = { Bandage = -3, FirstAid = -1 },
Armors = { EArmorType.Armor1, EHelmetType.Helmet1, };
Buff = {
Name = "Invincible",
}
},
[ESoldierType.Sniper] = {
Benefit = { Damage = 2, },
Info = { Name = "狙击手", ShortDesc = "伤害非常高", Desc = "不瞒你说,素有鹰眼之称\n技能:鹰眼\n己方可以看到敌方玩家的位置", },
LimitCount = -1,
Weapons = {
Main = { EWeaponTypeNew.EWeaponTypeNew_SingleShotSniper, EWeaponTypeNew.EWeaponTypeNew_BurstShotSniper, },
},
Armors = { EArmorType.Armor3, EHelmetType.Helmet3, };
Buff = { Name = "ShowEnemyPos", },
},
[ESoldierType.Rifleman] = {
--Benefit = { MaxHealth = 1.5, Damage = 1.5, Speed = 1.5, },
Info = { Name = "突击兵", ShortDesc = "呼吸恢复", Desc = "满血俺向前,残血俺就跑\n技能:呼吸回血\n脱离战斗几秒后回血", },
LimitCount = -1,
Weapons = {
Main = { EWeaponTypeNew.EWeaponTypeNew_Rifle, EWeaponTypeNew.EWeaponTypeNew_Submachine, },
--Bomb = { StunGrenade = 1, SmokeBomb = -1, } -- 相较于普通兵中来说
},
Armors = { EArmorType.Armor2, EHelmetType.Helmet2, };
Funcs = {
OnPawnInit = function(Pawn)
-- 添加进去
UGCEventSystem.SendEvent(EventTypes.AddAutoHealing, Pawn.PlayerKey, UGCPawnAttrSystem.GetTeamID(Pawn), true);
end
}
},
[ESoldierType.MedicalCorps] = {
Benefit = { MaxHealth = 1.5, Poison = 0.75, }, -- 小于平均值更容易受信号圈的伤害
Info = { Name = "医疗兵", ShortDesc = "奶妈", Desc = "没事,有我呢!\n技能:全体治疗\n瞬间治疗,其他医疗兵回复减半", },
LimitCount = -1,
Weapons = {
Main = { EWeaponTypeNew.EWeaponTypeNew_Rifle, EWeaponTypeNew.EWeaponTypeNew_Submachine, },
--Bomb = { StunGrenade = 1, SmokeBomb = -1, } -- 相较于普通兵中来说
},
Medications = { Bandage = -3 },
Armors = { EArmorType.Armor2, EHelmetType.Helmet2, };
Buff = { Name = "AddHealth", }
},
[ESoldierType.Demolitions] = {
Info = { Name = "爆破兵", ShortDesc = "高爆手雷", Desc = "艺术就是爆炸\n特征:拥有更多的炸弹,投掷物伤害增强", },
LimitCount = -1,
Weapons = {
Main = { EWeaponTypeNew.EWeaponTypeNew_Submachine, },
Bomb = { Grenade = 3, FireBomb = 2, StunGrenade = 1, } -- 相较于普通兵中来说
},
Armors = { EArmorType.Armor2, EHelmetType.Helmet2, };
},
[ESoldierType.Scout] = {
Benefit = { MaxHealth = 1.2, Damage = 1.2, Speed = 1.5, Jump = 1.5, },
Info = { Name = "侦察兵", ShortDesc = "移速非常快", Desc = "小喽啰一枚", },
LimitCount = -1,
Weapons = {
Main = { EWeaponTypeNew.EWeaponTypeNew_Pistol, },
Bomb = { StunGrenade = 1, SmokeBomb = -1, } -- 相较于普通兵中来说
},
Medications = { Drink = 1, Injection = 1, Pills = 1, FirstAid = 1, },
Armors = { EArmorType.Armor1, EHelmetType.Helmet1, };
},
[ESoldierType.Commander] = {
--Benefit = { MaxHealth = 1.5, Damage = 1.5, Speed = 1.5, },
Info = { Name = "指挥官", ShortDesc = "全队强化", Desc = "好好干,明年就给你加薪!\n技能:提升士气\n全队攻击力提升1.3倍", },
LimitCount = 1,
Weapons = {
Main = { EWeaponTypeNew.EWeaponTypeNew_Pistol, EWeaponTypeNew.EWeaponTypeNew_Rifle, },
Count = 2,
Bomb = { StunGrenade = 1, SmokeBomb = -1, }, -- 相较于普通兵中来说
},
Armors = { EArmorType.Armor2, EHelmetType.Helmet2, };
Buff = { Name = "AddDamage" }
},
[ESoldierType.Volunteer] = {
--Benefit = { MaxHealth = 1.5, Damage = 1.5, Speed = 1.5, },
Info = { Name = "支援兵", ShortDesc = "无限子弹", Desc = "数量没输过,伤害没赢过\n技能:无限子弹", },
LimitCount = -1,
Weapons = {
Main = { EWeaponTypeNew.EWeaponTypeNew_MachineGun, },
Bomb = { StunGrenade = 1, SmokeBomb = -1, } -- 相较于普通兵中来说
},
Armors = { EArmorType.Armor2, EHelmetType.Helmet2, };
Funcs = {
OnPlayerGetWeapon = function(Pawn, Weapon)
UGCLogSystem.Log("[SoldierConfig:Volunteer] %s 获取武器 %s", UGCPawnAttrSystem.GetPlayerName(Pawn), UGCWeaponManagerSystem.GetWeaponName(Weapon));
if ItemTool.IsShootWeapon(Weapon) then
-- 设置为无限子弹
ItemTool.SetWeaponInfinite(Pawn, Weapon, EFillBulletType.Infinite, true);
end
end
},
},
[ESoldierType.SpecialSoldier] = {
--Benefit = { MaxHealth = 1.5, Damage = 1.5, Speed = 1.5, },
Info = { Name = "特战兵", ShortDesc = "特殊武器", Desc = "没有任何困难是RPG解决不了的\n特征:拥有特殊武器", },
LimitCount = 2,
Weapons = {
Main = { EWeaponTypeNew.EWeaponTypeNew_Special, EWeaponTypeNew.EWeaponTypeNew_Pistol, },
Count = 2,
Bomb = { StunGrenade = 1, SmokeBomb = -1, } -- 相较于普通兵中来说
},
Armors = { EArmorType.Armor2, EHelmetType.Helmet2, };
},
[ESoldierType.AntichemicalCorp] = {
Benefit = { Poison = 1, },
Info = { Name = "防化兵", ShortDesc = "免疫增加", Desc = "安全区外很安全!\n技能:一段时间内无视安全区的效果", },
LimitCount = -1,
Weapons = {
Main = { EWeaponTypeNew.EWeaponTypeNew_SingleShotSniper, EWeaponTypeNew.EWeaponTypeNew_BurstShotSniper, },
Bomb = { SmokeBomb = 1, } -- 相较于普通兵中来说
},
Armors = { EArmorType.Armor3, EHelmetType.Helmet2, };
Buff = { Name = "IgnorePoison" },
},
[ESoldierType.HeavyCorp] = {
Benefit = { MaxHealth = 2, Damage = 1.2, Speed = 0.75, },
Info = { Name = "重装兵", ShortDesc = "血厚-高伤-移速慢", Desc = "主打的就是一个安全感\n技能全队防御力提升0.5倍", },
LimitCount = 2,
Weapons = {
Main = { EWeaponTypeNew.EWeaponTypeNew_MachineGun, },
Bomb = { StunGrenade = 1, SmokeBomb = -1, } -- 相较于普通兵中来说
},
Armors = { EArmorType.Armor3, EHelmetType.Helmet3, };
Buff = { Name = "AllDefence" },
},
[ESoldierType.Archer] = {
--Benefit = { MaxHealth = 1.5, Damage = 1.5, Speed = 1.5, },
Info = { Name = "弓箭手", ShortDesc = "爆炸弩箭", Desc = "我有一箭!!\n特征:弓箭在落地会爆炸", },
LimitCount = -1,
Weapons = {
Main = { EWeaponTypeNew.EWeaponTypeNew_Crossbow, },
Bomb = { StunGrenade = 1, SmokeBomb = -1, } -- 相较于普通兵中来说
},
Armors = { EArmorType.Armor2, EHelmetType.Helmet2, };
Funcs = {
---@param HitInfo FHitResult
OnWeaponBulletHit = function(Pawn, ShootWeapon, Bullet, HitInfo)
-- 在该位置放炸弹
UGCLogSystem.Log("[SoldierConfig:Archer] 武器 %s 射击", UGCWeaponManagerSystem.GetWeaponName(ShootWeapon));
if IsServer then
BuffManager:Add(Pawn.PlayerKey, EBuffType["BombExplosion"], VectorHelper.ToLuaTable(HitInfo.Location));
end
end,
OnPlayerGetWeapon = function(Pawn, Weapon)
-- 设置换弹时间
if ItemTool.IsShootWeapon(Weapon) then
UGCGunSystem.SetReloadTime(Weapon, 0.5);
end
end,
}
},
[ESoldierType.Musketeer] = {
Benefit = { MaxHealth = 1.2, },
Info = { Name = "火枪手", ShortDesc = "近战之神", Desc = "真男人不需要解释", },
LimitCount = -1,
Weapons = {
Main = { EWeaponTypeNew.EWeaponTypeNew_ShotGun, },
Bomb = { StunGrenade = 1, SmokeBomb = -1, }, -- 相较于普通兵中来说
Others = { { "突击盾牌", 1, } }, -- 给个盾牌
},
Medications = { Drink = 1, },
Armors = { EArmorType.Armor3, EHelmetType.Helmet3, };
},
}