219 lines
9.1 KiB
Lua
Raw Normal View History

2025-01-04 23:00:19 +08:00
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, };
},
}