combat/WeaponComboRessource.cs
using System.Collections.Generic;
using Sandbox;
[GameResource( "Weapon Combo Profile", "combo", "Définit les enchaînements, attaques, offsets de socket et l'identité sonore d'une arme.", Icon = "sports_martial_arts" )]
public sealed class WeaponComboResource : GameResource
{
[Property, Group( "1. Identité" )]
public string WeaponName { get; set; } = "Nouvelle Arme";
[Property, Group( "1. Identité" )]
public WeaponType Type { get; set; } = WeaponType.Glaive;
// =========================================================================
// AJUSTEMENT DE LA PRISE EN MAIN (SOCKET OFFSET)
// =========================================================================
[Property, Group( "1. Identité" )]
[Description( "Décalage de position relatif au socket d'attache (en cm)." )]
public Vector3 GripPositionOffset { get; set; } = Vector3.Zero;
[Property, Group( "1. Identité" )]
[Description( "Décalage d'angle en degrés dans la main ou sur l'avant-bras." )]
public Angles GripAnglesOffset { get; set; } = Angles.Zero;
// =========================================================================
// IDENTITÉ AUDIO & IMPACTS MATÉRIAUX
// =========================================================================
[Property, Group( "Audio - Réactions Matériaux" )] public SoundEvent HitFleshSound { get; set; }
[Property, Group( "Audio - Réactions Matériaux" )] public SoundEvent HitWorldSound { get; set; }
[Property, Group( "Audio - Réactions Matériaux" )] public SoundEvent ParrySound { get; set; }
[Property, Group( "Audio - Réactions Matériaux" )] public SoundEvent BlockSound { get; set; }
[Property, Group( "Audio - Réactions Matériaux" )] public SoundEvent ImpaleSound { get; set; }
// =========================================================================
// PROFILS D'ATTAQUE
// =========================================================================
[Property, Group( "2. Enchaînement Principal (Clic Gauche Charge & Release)" )]
public List<AttackProfile> PrimaryCombo { get; set; } = new();
[Property, Group( "3. Attaque Sautée" )]
public AttackProfile JumpAttack { get; set; }
[Property, Group( "4. Profil de Jet / Propulsion" )]
[Description( "Définit les dégâts, le type et le comportement quand l'arme est projetée." )]
public AttackProfile ThrownProfile { get; set; } = new()
{
Name = "Weapon Throw",
Damage = 35f,
BalanceDamage = 50f,
Type = DamageType.Pierce,
IsHeavy = true,
FighterKnockbackForce = 120f,
PropPhysicsImpulse = 15000f,
CausesKnockdownOnStagger = true
};
}