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, }; }, }